mirror of
https://github.com/transloadit/uppy.git
synced 2026-07-18 17:16:00 +00:00
fixes #6024. ### Problem - `getPlugin()` defaults to `UnknownPlugin`, so methods like `openModal` are not visible , since core is not aware of that plugin type ### Proposed change - Introduce a types-only registry in core: - `export interface PluginTypeRegistry<M extends Meta, B extends Body> {}` - Overload `getPlugin` to return a precise type when the id is a known key of the registry. - add `Dashboard` to PluginTypeRegistry through module augmentation: - `'Dashboard': Dashboard<M, B>`. - When a project imports from `@uppy/dashboard`, its module augmentation extends PluginTypeRegistry, adding the correct type into it - I've added Tests , kept them in a separate file so it's easier to review , once this approach gets approved I'll add them to `Uppy.test.ts` Once this PR gets a positive review I'll add this for other plugins , currently only added for `@uppy/dashboard` **Build with Local tarball can be checked here** https://stackblitz.com/~/github.com/qxprakash/uppy-type-test?file=type_test.ts
36 lines
1 KiB
TypeScript
36 lines
1 KiB
TypeScript
export type { Store } from '@uppy/store-default'
|
|
export type {
|
|
Body,
|
|
Meta,
|
|
MinimalRequiredUppyFile,
|
|
UppyFile,
|
|
} from '@uppy/utils'
|
|
export type { DefinePluginOpts, PluginOpts } from './BasePlugin.js'
|
|
export { default as BasePlugin } from './BasePlugin.js'
|
|
export { default as EventManager } from './EventManager.js'
|
|
export { debugLogger } from './loggers.js'
|
|
export type { Restrictions, ValidateableFile } from './Restricter.js'
|
|
export { RestrictionError } from './Restricter.js'
|
|
export type { PluginTarget, UIPluginOptions } from './UIPlugin.js'
|
|
export { default as UIPlugin } from './UIPlugin.js'
|
|
export type {
|
|
AsyncStore,
|
|
BaseProviderPlugin,
|
|
PartialTree,
|
|
PartialTreeFile,
|
|
PartialTreeFolder,
|
|
PartialTreeFolderNode,
|
|
PartialTreeFolderRoot,
|
|
PartialTreeId,
|
|
PluginTypeRegistry,
|
|
State,
|
|
UnknownPlugin,
|
|
UnknownProviderPlugin,
|
|
UnknownProviderPluginState,
|
|
UnknownSearchProviderPlugin,
|
|
UnknownSearchProviderPluginState,
|
|
UploadResult,
|
|
UppyEventMap,
|
|
UppyOptions,
|
|
} from './Uppy.js'
|
|
export { default, default as Uppy } from './Uppy.js'
|