瀏覽代碼

@uppy/code: allow plugins to type `PluginState` (#4872)

Antoine du Hamel 1 年之前
父節點
當前提交
218c6d160b
共有 3 個文件被更改,包括 7 次插入5 次删除
  1. 4 3
      packages/@uppy/core/src/BasePlugin.ts
  2. 2 1
      packages/@uppy/core/src/UIPlugin.ts
  3. 1 1
      packages/@uppy/core/src/Uppy.ts

+ 4 - 3
packages/@uppy/core/src/BasePlugin.ts

@@ -25,6 +25,7 @@ export default class BasePlugin<
   Opts extends PluginOpts,
   M extends Meta,
   B extends Body,
+  PluginState extends Record<string, unknown> = Record<string, unknown>,
 > {
   uppy: Uppy<M, B>
 
@@ -47,12 +48,12 @@ export default class BasePlugin<
     this.opts = opts ?? {}
   }
 
-  getPluginState(): Record<string, unknown> {
+  getPluginState(): PluginState {
     const { plugins } = this.uppy.getState()
-    return plugins?.[this.id] || {}
+    return (plugins?.[this.id] || {}) as PluginState
   }
 
-  setPluginState(update: unknown): void {
+  setPluginState(update?: Partial<PluginState>): void {
     if (!update) return
     const { plugins } = this.uppy.getState()
 

+ 2 - 1
packages/@uppy/core/src/UIPlugin.ts

@@ -48,7 +48,8 @@ class UIPlugin<
   Opts extends UIPluginOptions,
   M extends Meta,
   B extends Body,
-> extends BasePlugin<Opts, M, B> {
+  PluginState extends Record<string, unknown> = Record<string, unknown>,
+> extends BasePlugin<Opts, M, B, PluginState> {
   #updateUI: (state: Partial<State<M, B>>) => void
 
   isTargetDOMEl: boolean

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

@@ -61,7 +61,7 @@ type UnknownProviderPlugin<M extends Meta, B extends Body> = UnknownPlugin<
 }
 
 // The user facing type for UppyFile used in uppy.addFile() and uppy.setOptions()
-type MinimalRequiredUppyFile<M extends Meta, B extends Body> = Required<
+export type MinimalRequiredUppyFile<M extends Meta, B extends Body> = Required<
   Pick<UppyFile<M, B>, 'name' | 'data' | 'type' | 'source'>
 > &
   Partial<