mirror of
https://github.com/transloadit/uppy.git
synced 2026-07-21 01:15:35 +00:00
This PR Bumps the `vitest` across the monorepo: AI Disclaimer : **AI Used** | Package | From | To | |---|---|---| | `vitest` | `^3.2.4` | `^4.1.6` | | `@vitest/browser` | `^3.2.4` | `^4.1.6` | | `@vitest/browser-playwright` | _(new)_ | `^4.1.6` | | `vitest-browser-react/-vue/-svelte` | `^1.0.0` | `^2.x` (required by vitest 4) | Covers **21 `package.json` files** for `vitest`/`@vitest/browser` + the **7 browser-mode packages** that need the new `@vitest/browser-playwright` provider. ### Code changes required by vitest 4 Per the [official migration guide](https://vitest.dev/guide/migration.html#vitest-4): - **Browser provider rework** — `provider: 'playwright'` (string) → `playwright()` factory. Migrated 7 `vitest.config.ts` files (`@uppy/{url,dashboard,golden-retriever,xhr-upload}` + `examples/{react,vue,sveltekit}`). - **Deprecated `@vitest/browser/context` imports** → `vitest/browser`. Migrated 8 test files. - **`vi.fn(arrow)` no longer constructible with `new`.** Vitest 4 made `vi.fn()` callable as a constructor but arrow-fn implementations throw. Switched `@uppy/transloadit`'s `EventSource` mock to a regular function: ```js global.EventSource = vi.fn(function MockEventSource() { return { /* ... */ } }) ``` - **`Mock<T>` generic shape changed.** `ReturnType<typeof vi.fn>` now resolves to `Mock<Procedure | Constructable>` (not directly callable). Updated `@uppy/core`'s two `acquirerPlugin*.ts` mock helpers to use an explicit `Mock<(...args: any[]) => any>`. - **`vitest-browser-*` v2 made `render()` async.** Added `await render(...)` in the 3 example test files. - **`@types/node` needed in TS program for 4 packages** whose test files import `node:assert`/`node:fs`/`node:path` (`@uppy/{core,compressor,aws-s3,store-default}`). Vitest 3 transitively pulled in `@types/node`; vitest 4 does not. Added the devDep + `types: ["preact", "node"]` to those four tsconfigs. - **`@uppy/utils` `AbortController.test.ts`** — vitest 4's jsdom env puts jsdom's `Event` on `globalThis`, while Node's `AbortController` fires Node-realm `Event`s, breaking cross-realm `instanceof`. Added `// @vitest-environment node` to that one file (DOM-agnostic test, no behavior change). ### Notes - This PR is built on top of `uppy-upgrade-deps-v2` (the no-code-changes dep bumps PR) and inherits those. If merging out of order, rebase onto `main` after `uppy-upgrade-deps-v2` lands. --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| src | ||
| .npmignore | ||
| CHANGELOG.md | ||
| LICENSE | ||
| package.json | ||
| README.md | ||
| tsconfig.build.json | ||
| tsconfig.json | ||
@uppy/core
Uppy is a sleek, modular JavaScript file uploader that integrates seamlessly with any application. It’s fast, provides a comprehensible API and lets you worry about more important problems than building a file uploader.
- Fetch files from local disk, remote urls, Google Drive, Dropbox, or snap and record selfies with a camera;
- Preview and edit metadata with a nice interface;
- Upload to the final destination, optionally process/encode
Uppy is being developed by the folks at Transloadit, a versatile file encoding service.
Example
import Uppy from '@uppy/core'
const uppy = new Uppy()
uppy.use(SomePlugin)
Installation
$ npm install @uppy/core
Alternatively, you can also use this plugin in a pre-built bundle from
Transloadit’s CDN: Smart CDN. In that case Uppy will attach itself to the
global window.Uppy object. See the
main Uppy documentation for instructions.
Documentation
Documentation for this plugin can be found on the Uppy website.