diff --git a/.eslintrc.js b/.eslintrc.js index 6110795d3..4d4fc571e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -444,7 +444,7 @@ module.exports = { }, }, { - files: ['**/*.ts', '**/*.md/*.ts', '**/*.md/*.typescript'], + files: ['**/*.ts', '**/*.md/*.ts', '**/*.md/*.typescript', '**/*.tsx', '**/*.md/*.tsx'], excludedFiles: ['examples/angular-example/**/*.ts', 'packages/@uppy/angular/**/*.ts'], parser: '@typescript-eslint/parser', settings: { diff --git a/package.json b/package.json index d7d03e318..e8541eb99 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,7 @@ "start:companion": "bash bin/companion.sh", "start:companion:with-loadbalancer": "e2e/start-companion-with-load-balancer.mjs", "build:bundle": "yarn node ./bin/build-bundle.mjs", - "build:clean": "git clean -e node_modules -xfd packages e2e .parcel-cache coverage", + "build:clean": "git clean -e node_modules -Xfd packages e2e .parcel-cache coverage", "build:companion": "yarn workspace @uppy/companion build", "build:css": "yarn node ./bin/build-css.js", "build:svelte": "yarn workspace @uppy/svelte build", @@ -140,7 +140,7 @@ "format": "prettier -w .", "release": "PACKAGES=$(yarn workspaces list --json) yarn workspace @uppy-dev/release interactive", "size": "echo 'JS Bundle mingz:' && cat ./packages/uppy/dist/uppy.min.js | gzip | wc -c && echo 'CSS Bundle mingz:' && cat ./packages/uppy/dist/uppy.min.css | gzip | wc -c", - "e2e": "build:clean && yarn build && yarn e2e:skip-build", + "e2e": "yarn build:clean && yarn build && yarn e2e:skip-build", "e2e:skip-build": "npm-run-all --parallel watch:js:lib e2e:client start:companion:with-loadbalancer e2e:cypress", "e2e:ci": "start-server-and-test 'npm-run-all --parallel e2e:client start:companion:with-loadbalancer' '1234|3020' e2e:headless", "e2e:client": "yarn workspace e2e client:start", diff --git a/packages/@uppy/core/src/BasePlugin.ts b/packages/@uppy/core/src/BasePlugin.ts index 513efba49..0e2391f2b 100644 --- a/packages/@uppy/core/src/BasePlugin.ts +++ b/packages/@uppy/core/src/BasePlugin.ts @@ -15,7 +15,11 @@ import type { I18n, Locale } from '@uppy/utils/lib/Translator' import type { Body, Meta } from '@uppy/utils/lib/UppyFile' import type { Uppy } from '.' -export type PluginOpts = { locale?: Locale; [key: string]: unknown } +export type PluginOpts = { + locale?: Locale + id?: string + [key: string]: unknown +} export default class BasePlugin< Opts extends PluginOpts, diff --git a/packages/@uppy/core/src/UIPlugin.ts b/packages/@uppy/core/src/UIPlugin.ts index fd404d48c..163148cec 100644 --- a/packages/@uppy/core/src/UIPlugin.ts +++ b/packages/@uppy/core/src/UIPlugin.ts @@ -32,6 +32,11 @@ function debounce any>( } } +export interface UIPluginOptions extends PluginOpts { + replaceTargetContent?: boolean + direction?: 'ltr' | 'rtl' +} + /** * UIPlugin is the extended version of BasePlugin to incorporate rendering with Preact. * Use this for plugins that need a user interface. @@ -39,7 +44,7 @@ function debounce any>( * For plugins without an user interface, see BasePlugin. */ class UIPlugin< - Opts extends PluginOpts & { direction?: 'ltr' | 'rtl' }, + Opts extends UIPluginOptions, M extends Meta, B extends Body, > extends BasePlugin { @@ -51,6 +56,8 @@ class UIPlugin< parent: unknown + title: string + getTargetPlugin(target: unknown): UIPlugin | undefined { let targetPlugin if (typeof target === 'object' && target instanceof UIPlugin) { diff --git a/packages/@uppy/core/src/Uppy.ts b/packages/@uppy/core/src/Uppy.ts index 086448fc2..74f798c2a 100644 --- a/packages/@uppy/core/src/Uppy.ts +++ b/packages/@uppy/core/src/Uppy.ts @@ -96,7 +96,7 @@ export interface State } currentUploads: Record> allowNewUpload: boolean - recoveredState: null + recoveredState: null | State error: string | null files: { [key: string]: UppyFile @@ -251,6 +251,7 @@ export interface _UppyEventMap { progress: ProgressCallback 'reset-progress': GenericEventCallback restored: GenericEventCallback + 'restore-confirmed': GenericEventCallback 'restriction-failed': RestrictionFailedCallback 'resume-all': GenericEventCallback 'retry-all': RetryAllCallback diff --git a/packages/@uppy/core/src/index.ts b/packages/@uppy/core/src/index.ts index 6fc0e7586..d218db2de 100644 --- a/packages/@uppy/core/src/index.ts +++ b/packages/@uppy/core/src/index.ts @@ -3,3 +3,5 @@ export { default as Uppy } from './Uppy.ts' export { default as UIPlugin } from './UIPlugin.ts' export { default as BasePlugin } from './BasePlugin.ts' export { debugLogger } from './loggers.ts' + +export type { UIPluginOptions } from './UIPlugin.ts' diff --git a/packages/@uppy/utils/src/FileProgress.ts b/packages/@uppy/utils/src/FileProgress.ts index 33235981e..b21a2b1f0 100644 --- a/packages/@uppy/utils/src/FileProgress.ts +++ b/packages/@uppy/utils/src/FileProgress.ts @@ -1,10 +1,24 @@ +export interface DeterminateFileProcessing { + mode: 'determinate' + message: string + value: number +} +export interface IndeterminateFileProcessing { + mode: 'indeterminate' + message?: undefined + value?: 0 +} +export type FileProcessingInfo = + | IndeterminateFileProcessing + | DeterminateFileProcessing + interface FileProgressBase { progress?: number uploadComplete: boolean percentage: number bytesTotal: number - preprocess?: { mode: string; message?: string; value?: number } - postprocess?: { mode: string; message?: string; value?: number } + preprocess?: FileProcessingInfo + postprocess?: FileProcessingInfo } // FileProgress is either started or not started. We want to make sure TS doesn't diff --git a/private/dev/vite.config.js b/private/dev/vite.config.js index f5d28d3e0..3dbfb648d 100644 --- a/private/dev/vite.config.js +++ b/private/dev/vite.config.js @@ -36,7 +36,7 @@ const config = { replacement: `${PACKAGES_ROOT}@uppy/$1/src/index`, }, { - find: /^@uppy\/([^/]+)\/lib\/(.+)$/, + find: /^@uppy\/([^/]+)\/lib\/(.+?)(\.js)?$/, replacement: `${PACKAGES_ROOT}@uppy/$1/src/$2`, }, // {