Browse Source

@uppy/core,@uppy/store-default: export `Store` type (#5373)

Merlijn Vos 8 tháng trước cách đây
mục cha
commit
d8b8fc32ee

+ 2 - 2
packages/@uppy/core/src/Uppy.ts

@@ -8,7 +8,7 @@ import Translator from '@uppy/utils/lib/Translator'
 import ee from 'namespace-emitter'
 import { nanoid } from 'nanoid/non-secure'
 import throttle from 'lodash/throttle.js'
-import DefaultStore from '@uppy/store-default'
+import DefaultStore, { type Store } from '@uppy/store-default'
 import getFileType from '@uppy/utils/lib/getFileType'
 import getFileNameAndExtension from '@uppy/utils/lib/getFileNameAndExtension'
 import { getSafeFileId } from '@uppy/utils/lib/generateFileID'
@@ -256,7 +256,7 @@ export interface UppyOptions<M extends Meta, B extends Body> {
     [key: string]: UppyFile<M, B>
   }) => { [key: string]: UppyFile<M, B> } | boolean
   locale?: Locale
-  store?: DefaultStore<State<M, B>>
+  store?: Store<State<M, B>>
   infoTimeout?: number
 }
 

+ 2 - 0
packages/@uppy/core/src/index.ts

@@ -13,6 +13,8 @@ export { default as UIPlugin } from './UIPlugin.ts'
 export { default as BasePlugin } from './BasePlugin.ts'
 export { debugLogger } from './loggers.ts'
 
+export type { Store } from '@uppy/store-default'
+
 export type { UIPluginOptions } from './UIPlugin.ts'
 
 export type { UppyFile, Meta, Body } from '@uppy/utils/lib/UppyFile'

+ 9 - 1
packages/@uppy/store-default/src/index.ts

@@ -10,10 +10,18 @@ export type Listener<T> = (
   patch?: Partial<T>,
 ) => void
 
+export interface Store<T extends GenericState> {
+  getState: () => T
+
+  setState(patch?: Partial<T>): void
+
+  subscribe(listener: Listener<T>): () => void
+}
+
 /**
  * Default store that keeps state in a simple object.
  */
-class DefaultStore<T extends GenericState = GenericState> {
+class DefaultStore<T extends GenericState = GenericState> implements Store<T> {
   static VERSION = packageJson.version
 
   public state: T = {} as T