@uppy: upgrade vitest to v4 (#6309)

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>
This commit is contained in:
Prakash 2026-05-26 21:54:07 +05:30 committed by GitHub
parent e4a87116eb
commit 804363e86e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
45 changed files with 227 additions and 396 deletions

View file

@ -24,12 +24,13 @@
"@types/react": "^19.0.10",
"@types/react-dom": "^19.0.4",
"@vitejs/plugin-react": "^4.6.0",
"@vitest/browser": "^3.2.4",
"@vitest/browser": "^4.1.6",
"@vitest/browser-playwright": "^4.1.6",
"msw": "^2.10.4",
"playwright": "1.57.0",
"typescript": "^5.7.3",
"vite": "^7.1.11",
"vitest": "^3.2.4",
"vitest-browser-react": "^1.0.0"
"vitest": "^4.1.6",
"vitest-browser-react": "^2.2.0"
}
}

View file

@ -1,6 +1,6 @@
import { userEvent } from '@vitest/browser/context'
import { setupWorker } from 'msw/browser'
import { afterAll, beforeAll, describe, expect, test } from 'vitest'
import { userEvent } from 'vitest/browser'
import { render } from 'vitest-browser-react'
import { tusHandlers } from '../../shared/tusHandlers.js'
import App from '../src/App'
@ -19,7 +19,7 @@ const createMockFile = (name: string, type: string, size: number = 1024) => {
describe('App', () => {
test('renders all main sections and upload button is initially disabled', async () => {
const screen = render(<App />)
const screen = await render(<App />)
await expect.element(screen.getByText('With list')).toBeInTheDocument()
await expect.element(screen.getByText('With grid')).toBeInTheDocument()
@ -33,7 +33,7 @@ describe('App', () => {
})
test('can add and remove files and upload', async () => {
const screen = render(<App />)
const screen = await render(<App />)
const fileInput = document.getElementById(
'uppy-dropzone-file-input-uppy',
@ -59,7 +59,7 @@ describe('App', () => {
describe('ScreenCapture Component', () => {
test('renders with title, control buttons, and close functionality works', async () => {
const screen = render(<App />)
const screen = await render(<App />)
await screen.getByRole('button', { name: 'Screen Capture' }).click()
@ -90,7 +90,7 @@ describe('ScreenCapture Component', () => {
describe('Webcam Component', () => {
test('renders with title, control buttons, and close functionality works', async () => {
const screen = render(<App />)
const screen = await render(<App />)
await screen.getByRole('button', { name: 'Webcam' }).click()
@ -121,7 +121,7 @@ describe('Webcam Component', () => {
describe('RemoteSource Component', () => {
test('renders login button and login interaction works', async () => {
const screen = render(<App />)
const screen = await render(<App />)
await screen.getByRole('button', { name: 'Dropbox' }).click()

View file

@ -1,5 +1,6 @@
import tailwindcss from '@tailwindcss/vite'
import react from '@vitejs/plugin-react'
import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vitest/config'
export default defineConfig({
@ -7,7 +8,7 @@ export default defineConfig({
test: {
browser: {
enabled: true,
provider: 'playwright',
provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},

View file

@ -26,7 +26,8 @@
"@sveltejs/kit": "^2.49.5",
"@sveltejs/vite-plugin-svelte": "^5.0.0",
"@tailwindcss/vite": "^4.0.0",
"@vitest/browser": "^3.2.4",
"@vitest/browser": "^4.1.6",
"@vitest/browser-playwright": "^4.1.6",
"msw": "^2.10.4",
"playwright": "1.57.0",
"svelte": "^5.0.0",
@ -34,7 +35,7 @@
"tailwindcss": "^4.0.0",
"typescript": "^5.0.0",
"vite": "^6.2.5",
"vitest": "^3.2.4",
"vitest-browser-svelte": "^1.0.0"
"vitest": "^4.1.6",
"vitest-browser-svelte": "^2.1.1"
}
}

View file

@ -1,6 +1,6 @@
import { userEvent } from '@vitest/browser/context'
import { setupWorker } from 'msw/browser'
import { afterAll, beforeAll, describe, expect, test } from 'vitest'
import { userEvent } from 'vitest/browser'
import { render } from 'vitest-browser-svelte'
import { tusHandlers } from '../../shared/tusHandlers.js'
import PropsReactivity from '../src/components/test/props-reactivity.svelte'
@ -20,7 +20,7 @@ const createMockFile = (name: string, type: string, size: number = 1024) => {
describe('App', () => {
test('renders all main sections and upload button is initially disabled', async () => {
const screen = render(App)
const screen = await render(App)
await expect.element(screen.getByText('With list')).toBeInTheDocument()
await expect.element(screen.getByText('With grid')).toBeInTheDocument()
@ -34,7 +34,7 @@ describe('App', () => {
})
test('can add and remove files and upload', async () => {
const screen = render(App)
const screen = await render(App)
const fileInput = document.getElementById(
'uppy-dropzone-file-input-uppy',
@ -60,7 +60,7 @@ describe('App', () => {
describe('ScreenCapture Component', () => {
test('renders with title, control buttons, and close functionality works', async () => {
const screen = render(App)
const screen = await render(App)
await screen
.getByRole('button', { name: 'Screen Capture', exact: true })
@ -93,7 +93,7 @@ describe('ScreenCapture Component', () => {
describe('Webcam Component', () => {
test('renders with title, control buttons, and close functionality works', async () => {
const screen = render(App)
const screen = await render(App)
await screen.getByRole('button', { name: 'Webcam', exact: true }).click()
@ -124,7 +124,7 @@ describe('Webcam Component', () => {
describe('RemoteSource Component', () => {
test('renders login button and login interaction works', async () => {
const screen = render(App)
const screen = await render(App)
await screen.getByRole('button', { name: 'Dropbox', exact: true }).click()
@ -136,7 +136,7 @@ describe('RemoteSource Component', () => {
})
test('Dashboard reacts to prop changes', async () => {
const screen = render(PropsReactivity)
const screen = await render(PropsReactivity)
const toggleButton = screen.getByText('Toggle dashboard')
const dashboard = screen.container.querySelector('.uppy-Dashboard')
@ -147,7 +147,7 @@ test('Dashboard reacts to prop changes', async () => {
})
test('StatusBar reacts to prop changes', async () => {
const screen = render(PropsReactivity)
const screen = await render(PropsReactivity)
const toggleButton = screen.getByText('Toggle statusbar')
expect(

View file

@ -1,5 +1,6 @@
import { sveltekit } from '@sveltejs/kit/vite'
import tailwindcss from '@tailwindcss/vite'
import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vite'
export default defineConfig({
@ -7,7 +8,7 @@ export default defineConfig({
test: {
browser: {
enabled: true,
provider: 'playwright',
provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},

View file

@ -22,12 +22,13 @@
"devDependencies": {
"@tailwindcss/vite": "^4.1.11",
"@vitejs/plugin-vue": "^6.0.1",
"@vitest/browser": "^3.2.4",
"@vitest/browser": "^4.1.6",
"@vitest/browser-playwright": "^4.1.6",
"msw": "^2.10.4",
"playwright": "1.57.0",
"tailwindcss": "^4.0.0",
"vite": "^7.1.11",
"vitest": "^3.2.4",
"vitest-browser-vue": "^1.0.0"
"vitest": "^4.1.6",
"vitest-browser-vue": "^2.1.0"
}
}

View file

@ -1,6 +1,6 @@
import { userEvent } from '@vitest/browser/context'
import { setupWorker } from 'msw/browser'
import { afterAll, beforeAll, describe, expect, test } from 'vitest'
import { userEvent } from 'vitest/browser'
import { render } from 'vitest-browser-vue'
import { tusHandlers } from '../../shared/tusHandlers.js'
import App from '../src/App.vue'
@ -19,7 +19,7 @@ const createMockFile = (name: string, type: string, size: number = 1024) => {
describe('App', () => {
test('renders all main sections and upload button is initially disabled', async () => {
const screen = render(App)
const screen = await render(App)
await expect.element(screen.getByText('With list')).toBeInTheDocument()
await expect.element(screen.getByText('With grid')).toBeInTheDocument()
@ -33,7 +33,7 @@ describe('App', () => {
})
test('can add and remove files and upload', async () => {
const screen = render(App)
const screen = await render(App)
const fileInput = document.getElementById(
'uppy-dropzone-file-input-uppy',
@ -59,7 +59,7 @@ describe('App', () => {
describe('ScreenCapture Component', () => {
test('renders with title, control buttons, and close functionality works', async () => {
const screen = render(App)
const screen = await render(App)
await screen
.getByRole('button', { name: 'Screen Capture', exact: true })
@ -92,7 +92,7 @@ describe('ScreenCapture Component', () => {
describe('Webcam Component', () => {
test('renders with title, control buttons, and close functionality works', async () => {
const screen = render(App)
const screen = await render(App)
await screen.getByRole('button', { name: 'Webcam', exact: true }).click()
@ -123,7 +123,7 @@ describe('Webcam Component', () => {
describe('RemoteSource Component', () => {
test('renders login button and login interaction works', async () => {
const screen = render(App)
const screen = await render(App)
await screen.getByRole('button', { name: 'Dropbox', exact: true }).click()

View file

@ -1,5 +1,6 @@
import tailwindcss from '@tailwindcss/vite'
import vue from '@vitejs/plugin-vue'
import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vite'
export default defineConfig({
@ -7,7 +8,7 @@ export default defineConfig({
test: {
browser: {
enabled: true,
provider: 'playwright',
provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},

View file

@ -50,7 +50,7 @@
"postcss-cli": "^11.0.1",
"sass": "^1.89.2",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"

View file

@ -44,11 +44,12 @@
"devDependencies": {
"@aws-sdk/client-s3": "^3.362.0",
"@aws-sdk/s3-request-presigner": "^3.362.0",
"@types/node": "^20.19.0",
"@uppy/core": "workspace:^",
"jsdom": "^26.1.0",
"nock": "^13.1.0",
"typescript": "^5.8.3",
"vitest": "^3.2.4",
"vitest": "^4.1.6",
"whatwg-fetch": "3.6.2"
},
"peerDependencies": {

View file

@ -2,7 +2,8 @@
"extends": "../../../tsconfig.shared",
"compilerOptions": {
"emitDeclarationOnly": false,
"noEmit": true
"noEmit": true,
"types": ["preact", "node"]
},
"include": ["./package.json", "./src/**/*.*"],
"references": [

View file

@ -43,7 +43,7 @@
"devDependencies": {
"jsdom": "^26.1.0",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"

View file

@ -44,9 +44,10 @@
"access": "public"
},
"devDependencies": {
"@types/node": "^20.19.0",
"jsdom": "^26.1.0",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
},
"scripts": {
"build": "tsc --build tsconfig.build.json",

View file

@ -2,7 +2,8 @@
"extends": "../../../tsconfig.shared",
"compilerOptions": {
"emitDeclarationOnly": false,
"noEmit": true
"noEmit": true,
"types": ["preact", "node"]
},
"include": ["./package.json", "./src/**/*.*"],
"references": [

View file

@ -52,6 +52,7 @@
},
"devDependencies": {
"@types/deep-freeze": "^0",
"@types/node": "^20.19.0",
"cssnano": "^7.0.7",
"deep-freeze": "^0.0.1",
"jsdom": "^26.1.0",
@ -59,6 +60,6 @@
"postcss-cli": "^11.0.1",
"sass": "^1.89.2",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
}
}

View file

@ -1,8 +1,8 @@
import { vi } from 'vitest'
import { type Mock, vi } from 'vitest'
import UIPlugin from '../UIPlugin.js'
import type Uppy from '../Uppy.js'
type mock = ReturnType<typeof vi.fn>
type mock = Mock<(...args: any[]) => any>
export default class TestSelector1 extends UIPlugin<any, any, any> {
name: string

View file

@ -1,8 +1,8 @@
import { vi } from 'vitest'
import { type Mock, vi } from 'vitest'
import UIPlugin from '../UIPlugin.js'
import type Uppy from '../Uppy.js'
type mock = ReturnType<typeof vi.fn>
type mock = Mock<(...args: any[]) => any>
export default class TestSelector2 extends UIPlugin<any, any, any> {
name: string

View file

@ -2,7 +2,8 @@
"extends": "../../../tsconfig.shared",
"compilerOptions": {
"emitDeclarationOnly": false,
"noEmit": true
"noEmit": true,
"types": ["preact", "node"]
},
"include": ["./package.json", "./src/**/*.*"],
"references": [

View file

@ -60,7 +60,8 @@
"@uppy/google-drive": "workspace:^",
"@uppy/url": "workspace:^",
"@uppy/webcam": "workspace:^",
"@vitest/browser": "^3.2.4",
"@vitest/browser": "^4.1.6",
"@vitest/browser-playwright": "^4.1.6",
"cssnano": "^7.0.7",
"jsdom": "^26.1.0",
"playwright": "1.57.0",
@ -69,7 +70,7 @@
"resize-observer-polyfill": "^1.5.0",
"sass": "^1.89.2",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"

View file

@ -3,8 +3,8 @@ import Dashboard from '@uppy/dashboard'
import Dropbox from '@uppy/dropbox'
import GoogleDrive from '@uppy/google-drive'
import { ProviderViews } from '@uppy/provider-views'
import { page, userEvent } from '@vitest/browser/context'
import { afterAll, afterEach, beforeAll, describe, expect, test } from 'vitest'
import { page, userEvent } from 'vitest/browser'
import { worker } from './setup.js'
import '@uppy/core/css/style.css'

View file

@ -1,6 +1,6 @@
import Uppy from '@uppy/core'
import { page, userEvent } from '@vitest/browser/context'
import { expect, test } from 'vitest'
import { page, userEvent } from 'vitest/browser'
import Dashboard from './Dashboard.js'
import '@uppy/core/css/style.css'
import '@uppy/dashboard/css/style.css'

View file

@ -1,3 +1,4 @@
import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vitest/config'
export default defineConfig({
@ -19,7 +20,7 @@ export default defineConfig({
include: ['src/**/*.browser.test.{ts,tsx}'],
browser: {
enabled: true,
provider: 'playwright',
provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},

View file

@ -52,8 +52,10 @@
"@uppy/core": "workspace:^",
"@uppy/dashboard": "workspace:^",
"@uppy/xhr-upload": "workspace:^",
"@vitest/browser": "^3.2.4",
"@vitest/browser": "^4.1.6",
"@vitest/browser-playwright": "^4.1.6",
"playwright": "1.57.0",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
}
}

View file

@ -1,8 +1,8 @@
import Uppy, { type UppyEventMap, type UppyOptions } from '@uppy/core'
import Dashboard from '@uppy/dashboard'
import XHRUpload from '@uppy/xhr-upload'
import { page, userEvent } from '@vitest/browser/context'
import { beforeEach, describe, expect } from 'vitest'
import { page, userEvent } from 'vitest/browser'
import '@uppy/core/css/style.css'
import '@uppy/dashboard/css/style.css'
import { HttpResponse, http } from 'msw'

View file

@ -1,3 +1,4 @@
import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vitest/config'
export default defineConfig({
@ -19,7 +20,7 @@ export default defineConfig({
include: ['src/**/*.browser.test.{ts,tsx}'],
browser: {
enabled: true,
provider: 'playwright',
provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},

View file

@ -57,7 +57,7 @@
"postcss-cli": "^11.0.1",
"sass": "^1.89.2",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"

View file

@ -50,7 +50,7 @@
"react": "^19.2.6",
"react-dom": "^19.2.6",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
},
"exports": {
".": "./lib/index.js",

View file

@ -61,6 +61,6 @@
"jsdom": "^26.1.0",
"resize-observer-polyfill": "^1.5.1",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
}
}

View file

@ -21,9 +21,10 @@
"url": "https://github.com/transloadit/uppy/issues"
},
"devDependencies": {
"@types/node": "^20.19.0",
"jsdom": "^26.1.0",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
},
"repository": {
"type": "git",

View file

@ -2,7 +2,8 @@
"extends": "../../../tsconfig.shared",
"compilerOptions": {
"emitDeclarationOnly": false,
"noEmit": true
"noEmit": true,
"types": ["preact", "node"]
},
"include": ["./package.json", "./src/**/*.*"],
"references": []

View file

@ -44,7 +44,7 @@
"jsdom": "^26.1.0",
"namespace-emitter": "2.0.1",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"

View file

@ -55,7 +55,7 @@
"jsdom": "^26.1.0",
"msw": "^2.10.4",
"typescript": "^5.8.3",
"vitest": "^3.2.4",
"vitest": "^4.1.6",
"whatwg-fetch": "^3.6.2"
}
}

View file

@ -5,12 +5,16 @@ import { describe, expect, it, vi } from 'vitest'
import Transloadit from './index.ts'
import 'whatwg-fetch'
// Mock EventSource for testing
global.EventSource = vi.fn(() => ({
addEventListener: vi.fn(),
removeEventListener: vi.fn(),
close: vi.fn(),
}))
// Mock EventSource for testing. Vitest 4 made `vi.fn()` callable as a constructor,
// but arrow-function implementations throw "is not a constructor" when invoked
// with `new`. Use a regular function so `new EventSource(...)` works.
global.EventSource = vi.fn(function MockEventSource() {
return {
addEventListener: vi.fn(),
removeEventListener: vi.fn(),
close: vi.fn(),
}
})
describe('Transloadit', () => {
it('Does not leave lingering progress if getAssemblyOptions fails', () => {

View file

@ -45,7 +45,7 @@
"@uppy/core": "workspace:^",
"jsdom": "^26.1.0",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"

View file

@ -55,13 +55,14 @@
},
"devDependencies": {
"@uppy/core": "workspace:^",
"@vitest/browser": "^3.2.4",
"@vitest/browser": "^4.1.6",
"@vitest/browser-playwright": "^4.1.6",
"cssnano": "^7.0.7",
"playwright": "1.57.0",
"postcss": "^8.5.6",
"postcss-cli": "^11.0.1",
"sass": "^1.89.2",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
}
}

View file

@ -1,6 +1,6 @@
import Uppy from '@uppy/core'
import { page } from '@vitest/browser/context'
import { expect, test } from 'vitest'
import { page } from 'vitest/browser'
import Url from './Url.js'
// Normally you would use one of vitest's framework renderers, such as vitest-browser-react,

View file

@ -1,3 +1,4 @@
import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vitest/config'
export default defineConfig({
@ -10,7 +11,7 @@ export default defineConfig({
globalSetup: './vitest.setup.ts',
browser: {
enabled: true,
provider: 'playwright',
provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},

View file

@ -40,6 +40,6 @@
"@types/lodash": "^4.14.199",
"jsdom": "^26.1.0",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
}
}

View file

@ -1,3 +1,8 @@
// @vitest-environment node
// `AbortController`/`AbortSignal` resolve to Node's globals; their abort event
// is a Node `Event`. Under the jsdom environment vitest 4 swaps in jsdom's
// `Event`, so cross-realm `instanceof Event` fails. This shim is DOM-agnostic,
// so the node environment keeps both in the same realm.
import { describe, expect, it, vi } from 'vitest'
import { AbortController, AbortSignal } from './AbortController.js'

View file

@ -58,7 +58,7 @@
"postcss-cli": "^11.0.1",
"sass": "^1.89.2",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"

View file

@ -46,13 +46,14 @@
"devDependencies": {
"@uppy/core": "workspace:^",
"@uppy/dashboard": "workspace:^",
"@vitest/browser": "^3.2.4",
"@vitest/browser": "^4.1.6",
"@vitest/browser-playwright": "^4.1.6",
"jsdom": "^26.1.0",
"msw": "^2.10.4",
"nock": "^13.1.0",
"playwright": "1.57.0",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
"vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"

View file

@ -1,8 +1,8 @@
import Uppy, { type UppyEventMap } from '@uppy/core'
import Dashboard from '@uppy/dashboard'
import { page, userEvent } from '@vitest/browser/context'
import { HttpResponse, http } from 'msw'
import { afterEach, beforeEach, describe, expect } from 'vitest'
import { page, userEvent } from 'vitest/browser'
import '@uppy/core/css/style.css'
import '@uppy/dashboard/css/style.css'
import XHRUpload from './index.js'

View file

@ -1,3 +1,4 @@
import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vitest/config'
export default defineConfig({
@ -19,7 +20,7 @@ export default defineConfig({
include: ['src/**/*.browser.test.{ts,tsx}'],
browser: {
enabled: true,
provider: 'playwright',
provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},

437
yarn.lock
View file

@ -3061,6 +3061,13 @@ __metadata:
languageName: node
linkType: hard
"@blazediff/core@npm:1.9.1":
version: 1.9.1
resolution: "@blazediff/core@npm:1.9.1"
checksum: 10/6bb615f104da313934bcabc09627f3c803461bf85182453d5c13a6a354be4d32b35504b84f1043c21e95d0f6c0acb45083caeb72e72c1d6a76ca5e1f61f25510
languageName: node
linkType: hard
"@bundled-es-modules/cookie@npm:^2.0.1":
version: 2.0.1
resolution: "@bundled-es-modules/cookie@npm:2.0.1"
@ -7651,12 +7658,12 @@ __metadata:
languageName: node
linkType: hard
"@testing-library/user-event@npm:^14.6.1":
version: 14.6.1
resolution: "@testing-library/user-event@npm:14.6.1"
"@testing-library/svelte-core@npm:^1.0.0":
version: 1.0.0
resolution: "@testing-library/svelte-core@npm:1.0.0"
peerDependencies:
"@testing-library/dom": ">=7.21.4"
checksum: 10/34b74fff56a0447731a94b40d4cf246deb8dbc1c1e3aec93acd1c3377a760bb062e979f1572bb34ec164ad28ee2a391744b42d0d6d6cc16c4ce527e5e09610e1
svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0
checksum: 10/f2556ae13411860ab7d3f73e563374502e23d08157c2dc67419f9057b50f81f1d944de674affca31c633d56c9ff39f0539db4201b9b0942adcb2bf456107f8e9
languageName: node
linkType: hard
@ -8510,7 +8517,7 @@ __metadata:
preact: "npm:^10.29.2"
sass: "npm:^1.89.2"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@ -8522,13 +8529,14 @@ __metadata:
dependencies:
"@aws-sdk/client-s3": "npm:^3.362.0"
"@aws-sdk/s3-request-presigner": "npm:^3.362.0"
"@types/node": "npm:^20.19.0"
"@uppy/companion-client": "workspace:^"
"@uppy/core": "workspace:^"
"@uppy/utils": "workspace:^"
jsdom: "npm:^26.1.0"
nock: "npm:^13.1.0"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
whatwg-fetch: "npm:3.6.2"
peerDependencies:
"@uppy/core": "workspace:^"
@ -8559,7 +8567,7 @@ __metadata:
namespace-emitter: "npm:^2.0.1"
p-retry: "npm:^6.1.0"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@ -8678,13 +8686,14 @@ __metadata:
resolution: "@uppy/compressor@workspace:packages/@uppy/compressor"
dependencies:
"@transloadit/prettier-bytes": "npm:^0.3.4"
"@types/node": "npm:^20.19.0"
"@uppy/utils": "workspace:^"
compressorjs: "npm:^1.3.0"
jsdom: "npm:^26.1.0"
preact: "npm:^10.29.2"
promise-queue: "npm:^2.2.5"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@ -8696,6 +8705,7 @@ __metadata:
dependencies:
"@transloadit/prettier-bytes": "npm:^0.3.4"
"@types/deep-freeze": "npm:^0"
"@types/node": "npm:^20.19.0"
"@uppy/store-default": "workspace:^"
"@uppy/utils": "workspace:^"
cssnano: "npm:^7.0.7"
@ -8710,7 +8720,7 @@ __metadata:
preact: "npm:^10.29.2"
sass: "npm:^1.89.2"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
languageName: unknown
linkType: soft
@ -8727,7 +8737,8 @@ __metadata:
"@uppy/url": "workspace:^"
"@uppy/utils": "workspace:^"
"@uppy/webcam": "workspace:^"
"@vitest/browser": "npm:^3.2.4"
"@vitest/browser": "npm:^4.1.6"
"@vitest/browser-playwright": "npm:^4.1.6"
classnames: "npm:^2.5.1"
cssnano: "npm:^7.0.7"
jsdom: "npm:^26.1.0"
@ -8741,7 +8752,7 @@ __metadata:
sass: "npm:^1.89.2"
shallow-equal: "npm:^3.1.0"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@ -8828,10 +8839,12 @@ __metadata:
"@uppy/dashboard": "workspace:^"
"@uppy/utils": "workspace:^"
"@uppy/xhr-upload": "workspace:^"
"@vitest/browser": "npm:^3.2.4"
"@vitest/browser": "npm:^4.1.6"
"@vitest/browser-playwright": "npm:^4.1.6"
lodash: "npm:^4.18.1"
playwright: "npm:1.57.0"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@ -8963,7 +8976,7 @@ __metadata:
preact: "npm:^10.29.2"
sass: "npm:^1.89.2"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@ -8986,7 +8999,7 @@ __metadata:
react-dom: "npm:^19.2.6"
typescript: "npm:^5.8.3"
use-sync-external-store: "npm:^1.6.0"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
"@uppy/dashboard": "workspace:^"
@ -9024,7 +9037,7 @@ __metadata:
jsdom: "npm:^26.1.0"
resize-observer-polyfill: "npm:^1.5.1"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@ -9068,9 +9081,10 @@ __metadata:
version: 0.0.0-use.local
resolution: "@uppy/store-default@workspace:packages/@uppy/store-default"
dependencies:
"@types/node": "npm:^20.19.0"
jsdom: "npm:^26.1.0"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
languageName: unknown
linkType: soft
@ -9118,7 +9132,7 @@ __metadata:
jsdom: "npm:^26.1.0"
namespace-emitter: "npm:2.0.1"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@ -9136,7 +9150,7 @@ __metadata:
jsdom: "npm:^26.1.0"
msw: "npm:^2.10.4"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
whatwg-fetch: "npm:^3.6.2"
peerDependencies:
"@uppy/core": "workspace:^"
@ -9153,7 +9167,7 @@ __metadata:
jsdom: "npm:^26.1.0"
tus-js-client: "npm:^4.3.1"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@ -9181,7 +9195,8 @@ __metadata:
"@uppy/companion-client": "workspace:^"
"@uppy/core": "workspace:^"
"@uppy/utils": "workspace:^"
"@vitest/browser": "npm:^3.2.4"
"@vitest/browser": "npm:^4.1.6"
"@vitest/browser-playwright": "npm:^4.1.6"
cssnano: "npm:^7.0.7"
nanoid: "npm:^5.1.11"
playwright: "npm:1.57.0"
@ -9190,7 +9205,7 @@ __metadata:
preact: "npm:^10.29.2"
sass: "npm:^1.89.2"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@ -9205,7 +9220,7 @@ __metadata:
lodash: "npm:^4.18.1"
preact: "npm:^10.29.2"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
languageName: unknown
linkType: soft
@ -9251,7 +9266,7 @@ __metadata:
preact: "npm:^10.29.2"
sass: "npm:^1.89.2"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@ -9280,13 +9295,14 @@ __metadata:
"@uppy/core": "workspace:^"
"@uppy/dashboard": "workspace:^"
"@uppy/utils": "workspace:^"
"@vitest/browser": "npm:^3.2.4"
"@vitest/browser": "npm:^4.1.6"
"@vitest/browser-playwright": "npm:^4.1.6"
jsdom: "npm:^26.1.0"
msw: "npm:^2.10.4"
nock: "npm:^13.1.0"
playwright: "npm:1.57.0"
typescript: "npm:^5.8.3"
vitest: "npm:^3.2.4"
vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@ -9344,43 +9360,38 @@ __metadata:
languageName: node
linkType: hard
"@vitest/browser@npm:^3.2.4":
version: 3.2.4
resolution: "@vitest/browser@npm:3.2.4"
"@vitest/browser-playwright@npm:^4.1.6":
version: 4.1.6
resolution: "@vitest/browser-playwright@npm:4.1.6"
dependencies:
"@testing-library/dom": "npm:^10.4.0"
"@testing-library/user-event": "npm:^14.6.1"
"@vitest/mocker": "npm:3.2.4"
"@vitest/utils": "npm:3.2.4"
magic-string: "npm:^0.30.17"
sirv: "npm:^3.0.1"
tinyrainbow: "npm:^2.0.0"
ws: "npm:^8.18.2"
"@vitest/browser": "npm:4.1.6"
"@vitest/mocker": "npm:4.1.6"
tinyrainbow: "npm:^3.1.0"
peerDependencies:
playwright: "*"
vitest: 3.2.4
webdriverio: ^7.0.0 || ^8.0.0 || ^9.0.0
vitest: 4.1.6
peerDependenciesMeta:
playwright:
optional: true
safaridriver:
optional: true
webdriverio:
optional: true
checksum: 10/f8ec0bff4006a81c3b843b5cf04f4ba1ffd8226eb5d4a98b134eddb83de8decced8788d2569aa632920ed6a346d3cfd856fcd53ee9083080a78c5baae3aae2de
optional: false
checksum: 10/a899da787418f3748b0076ab3e63261b968dd53bbcd9a0323f2a29ce45a439c7bf8b5746fbe331ac675a166b0a789e6643b22df81965767f8c1a8b9f904ece00
languageName: node
linkType: hard
"@vitest/expect@npm:3.2.4":
version: 3.2.4
resolution: "@vitest/expect@npm:3.2.4"
"@vitest/browser@npm:4.1.6, @vitest/browser@npm:^4.1.6":
version: 4.1.6
resolution: "@vitest/browser@npm:4.1.6"
dependencies:
"@types/chai": "npm:^5.2.2"
"@vitest/spy": "npm:3.2.4"
"@vitest/utils": "npm:3.2.4"
chai: "npm:^5.2.0"
tinyrainbow: "npm:^2.0.0"
checksum: 10/dc69ce886c13714dfbbff78f2d2cb7eb536017e82301a73c42d573a9e9d2bf91005ac7abd9b977adf0a3bd431209f45a8ac2418029b68b0a377e092607c843ce
"@blazediff/core": "npm:1.9.1"
"@vitest/mocker": "npm:4.1.6"
"@vitest/utils": "npm:4.1.6"
magic-string: "npm:^0.30.21"
pngjs: "npm:^7.0.0"
sirv: "npm:^3.0.2"
tinyrainbow: "npm:^3.1.0"
ws: "npm:^8.19.0"
peerDependencies:
vitest: 4.1.6
checksum: 10/d62d0d5d67880f09799faa1c496377dcf0270343b15bf17cac9d27416c93e24db91498bebd8c33e102fc982caeb11693cf2f82bdf07f59b43589be4f2f03c693
languageName: node
linkType: hard
@ -9398,25 +9409,6 @@ __metadata:
languageName: node
linkType: hard
"@vitest/mocker@npm:3.2.4":
version: 3.2.4
resolution: "@vitest/mocker@npm:3.2.4"
dependencies:
"@vitest/spy": "npm:3.2.4"
estree-walker: "npm:^3.0.3"
magic-string: "npm:^0.30.17"
peerDependencies:
msw: ^2.4.9
vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0
peerDependenciesMeta:
msw:
optional: true
vite:
optional: true
checksum: 10/5e92431b6ed9fc1679060e4caef3e4623f4750542a5d7cd944774f8217c4d231e273202e8aea00bab33260a5a9222ecb7005d80da0348c3c829bd37d123071a8
languageName: node
linkType: hard
"@vitest/mocker@npm:4.1.6":
version: 4.1.6
resolution: "@vitest/mocker@npm:4.1.6"
@ -9436,15 +9428,6 @@ __metadata:
languageName: node
linkType: hard
"@vitest/pretty-format@npm:3.2.4, @vitest/pretty-format@npm:^3.2.4":
version: 3.2.4
resolution: "@vitest/pretty-format@npm:3.2.4"
dependencies:
tinyrainbow: "npm:^2.0.0"
checksum: 10/8dd30cbf956e01fbab042fe651fb5175d9f0cd00b7b569a46cd98df89c4fec47dab12916201ad6e09a4f25f2a2ec8927a4bfdc61118593097f759c90b18a51d4
languageName: node
linkType: hard
"@vitest/pretty-format@npm:4.1.6":
version: 4.1.6
resolution: "@vitest/pretty-format@npm:4.1.6"
@ -9454,17 +9437,6 @@ __metadata:
languageName: node
linkType: hard
"@vitest/runner@npm:3.2.4":
version: 3.2.4
resolution: "@vitest/runner@npm:3.2.4"
dependencies:
"@vitest/utils": "npm:3.2.4"
pathe: "npm:^2.0.3"
strip-literal: "npm:^3.0.0"
checksum: 10/197bd55def519ef202f990b7c1618c212380831827c116240871033e4973decb780503c705ba9245a12bd8121f3ac4086ffcb3e302148b62d9bd77fd18dd1deb
languageName: node
linkType: hard
"@vitest/runner@npm:4.1.6":
version: 4.1.6
resolution: "@vitest/runner@npm:4.1.6"
@ -9475,17 +9447,6 @@ __metadata:
languageName: node
linkType: hard
"@vitest/snapshot@npm:3.2.4":
version: 3.2.4
resolution: "@vitest/snapshot@npm:3.2.4"
dependencies:
"@vitest/pretty-format": "npm:3.2.4"
magic-string: "npm:^0.30.17"
pathe: "npm:^2.0.3"
checksum: 10/acfb682491b9ca9345bf9fed02c2779dec43e0455a380c1966b0aad8dd81c79960902cf34621ab48fe80a0eaf8c61cc42dec186a1321dc3c9897ef2ebd5f1bc4
languageName: node
linkType: hard
"@vitest/snapshot@npm:4.1.6":
version: 4.1.6
resolution: "@vitest/snapshot@npm:4.1.6"
@ -9498,15 +9459,6 @@ __metadata:
languageName: node
linkType: hard
"@vitest/spy@npm:3.2.4":
version: 3.2.4
resolution: "@vitest/spy@npm:3.2.4"
dependencies:
tinyspy: "npm:^4.0.3"
checksum: 10/7d38c299f42a8c7e5e41652b203af98ca54e63df69c3b072d0e401d5a57fbbba3e39d8538ac1b3022c26718a6388d0bcc222bc2f07faab75942543b9247c007d
languageName: node
linkType: hard
"@vitest/spy@npm:4.1.6":
version: 4.1.6
resolution: "@vitest/spy@npm:4.1.6"
@ -9514,17 +9466,6 @@ __metadata:
languageName: node
linkType: hard
"@vitest/utils@npm:3.2.4":
version: 3.2.4
resolution: "@vitest/utils@npm:3.2.4"
dependencies:
"@vitest/pretty-format": "npm:3.2.4"
loupe: "npm:^3.1.4"
tinyrainbow: "npm:^2.0.0"
checksum: 10/7f12ef63bd8ee13957744d1f336b0405f164ade4358bf9dfa531f75bbb58ffac02bf61aba65724311ddbc50b12ba54853a169e59c6b837c16086173b9a480710
languageName: node
linkType: hard
"@vitest/utils@npm:4.1.6":
version: 4.1.6
resolution: "@vitest/utils@npm:4.1.6"
@ -10220,13 +10161,6 @@ __metadata:
languageName: node
linkType: hard
"assertion-error@npm:^2.0.1":
version: 2.0.1
resolution: "assertion-error@npm:2.0.1"
checksum: 10/a0789dd882211b87116e81e2648ccb7f60340b34f19877dd020b39ebb4714e475eb943e14ba3e22201c221ef6645b7bfe10297e76b6ac95b48a9898c1211ce66
languageName: node
linkType: hard
"asynckit@npm:^0.4.0":
version: 0.4.0
resolution: "asynckit@npm:0.4.0"
@ -10808,19 +10742,6 @@ __metadata:
languageName: node
linkType: hard
"chai@npm:^5.2.0":
version: 5.2.1
resolution: "chai@npm:5.2.1"
dependencies:
assertion-error: "npm:^2.0.1"
check-error: "npm:^2.1.1"
deep-eql: "npm:^5.0.1"
loupe: "npm:^3.1.0"
pathval: "npm:^2.0.0"
checksum: 10/2d9b14c9bbb9b791641ecee0d74a53f34d2c86f05c10b5567041ed376177f87af9dc7f5398207fd2711affbfeb9f0f1f60e11bcaf021f78ef37b7c65a6d94e7d
languageName: node
linkType: hard
"chai@npm:^6.2.2":
version: 6.2.2
resolution: "chai@npm:6.2.2"
@ -10880,13 +10801,6 @@ __metadata:
languageName: node
linkType: hard
"check-error@npm:^2.1.1":
version: 2.1.1
resolution: "check-error@npm:2.1.1"
checksum: 10/d785ed17b1d4a4796b6e75c765a9a290098cf52ff9728ce0756e8ffd4293d2e419dd30c67200aee34202463b474306913f2fcfaf1890641026d9fc6966fea27a
languageName: node
linkType: hard
"chokidar@npm:^3.3.0, chokidar@npm:^3.5.1, chokidar@npm:^3.6.0":
version: 3.6.0
resolution: "chokidar@npm:3.6.0"
@ -11908,13 +11822,6 @@ __metadata:
languageName: node
linkType: hard
"deep-eql@npm:^5.0.1":
version: 5.0.2
resolution: "deep-eql@npm:5.0.2"
checksum: 10/a529b81e2ef8821621d20a36959a0328873a3e49d393ad11f8efe8559f31239494c2eb889b80342808674c475802ba95b9d6c4c27641b9a029405104c1b59fcf
languageName: node
linkType: hard
"deep-freeze@npm:^0.0.1":
version: 0.0.1
resolution: "deep-freeze@npm:0.0.1"
@ -13158,7 +13065,8 @@ __metadata:
"@uppy/tus": "workspace:*"
"@uppy/webcam": "workspace:*"
"@vitejs/plugin-react": "npm:^4.6.0"
"@vitest/browser": "npm:^3.2.4"
"@vitest/browser": "npm:^4.1.6"
"@vitest/browser-playwright": "npm:^4.1.6"
msw: "npm:^2.10.4"
playwright: "npm:1.57.0"
react: "npm:^19.0.0"
@ -13166,8 +13074,8 @@ __metadata:
tailwindcss: "npm:^4.0.9"
typescript: "npm:^5.7.3"
vite: "npm:^7.1.11"
vitest: "npm:^3.2.4"
vitest-browser-react: "npm:^1.0.0"
vitest: "npm:^4.1.6"
vitest-browser-react: "npm:^2.2.0"
languageName: unknown
linkType: soft
@ -13215,7 +13123,8 @@ __metadata:
"@uppy/svelte": "workspace:*"
"@uppy/tus": "workspace:*"
"@uppy/webcam": "workspace:*"
"@vitest/browser": "npm:^3.2.4"
"@vitest/browser": "npm:^4.1.6"
"@vitest/browser-playwright": "npm:^4.1.6"
msw: "npm:^2.10.4"
playwright: "npm:1.57.0"
svelte: "npm:^5.0.0"
@ -13223,8 +13132,8 @@ __metadata:
tailwindcss: "npm:^4.0.0"
typescript: "npm:^5.0.0"
vite: "npm:^6.2.5"
vitest: "npm:^3.2.4"
vitest-browser-svelte: "npm:^1.0.0"
vitest: "npm:^4.1.6"
vitest-browser-svelte: "npm:^2.1.1"
languageName: unknown
linkType: soft
@ -13260,13 +13169,14 @@ __metadata:
"@uppy/vue": "workspace:*"
"@uppy/webcam": "workspace:*"
"@vitejs/plugin-vue": "npm:^6.0.1"
"@vitest/browser": "npm:^3.2.4"
"@vitest/browser": "npm:^4.1.6"
"@vitest/browser-playwright": "npm:^4.1.6"
msw: "npm:^2.10.4"
playwright: "npm:1.57.0"
tailwindcss: "npm:^4.0.0"
vite: "npm:^7.1.11"
vitest: "npm:^3.2.4"
vitest-browser-vue: "npm:^1.0.0"
vitest: "npm:^4.1.6"
vitest-browser-vue: "npm:^2.1.0"
vue: "npm:^3.5.14"
languageName: unknown
linkType: soft
@ -13360,13 +13270,6 @@ __metadata:
languageName: node
linkType: hard
"expect-type@npm:^1.2.1":
version: 1.2.2
resolution: "expect-type@npm:1.2.2"
checksum: 10/1703e6e47b575f79d801d87f24c639f4d0af71b327a822e6922d0ccb7eb3f6559abb240b8bd43bab6a477903de4cc322908e194d05132c18f52a217115e8e870
languageName: node
linkType: hard
"expect-type@npm:^1.3.0":
version: 1.3.0
resolution: "expect-type@npm:1.3.0"
@ -15611,13 +15514,6 @@ __metadata:
languageName: node
linkType: hard
"js-tokens@npm:^9.0.1":
version: 9.0.1
resolution: "js-tokens@npm:9.0.1"
checksum: 10/3288ba73bb2023adf59501979fb4890feb6669cc167b13771b226814fde96a1583de3989249880e3f4d674040d1815685db9a9880db9153307480d39dc760365
languageName: node
linkType: hard
"js-yaml@npm:^3.13.1, js-yaml@npm:^3.6.1":
version: 3.14.2
resolution: "js-yaml@npm:3.14.2"
@ -16758,13 +16654,6 @@ __metadata:
languageName: node
linkType: hard
"loupe@npm:^3.1.0, loupe@npm:^3.1.4":
version: 3.1.4
resolution: "loupe@npm:3.1.4"
checksum: 10/06ab1893731f167f2ce71f464a8a68372dc4cb807ecae20f9b844660c93813a298ca76bcd747ba6568b057af725ea63f0034ba3140c8f1d1fbb482d797e593ef
languageName: node
linkType: hard
"lower-case@npm:^2.0.2":
version: 2.0.2
resolution: "lower-case@npm:2.0.2"
@ -18824,13 +18713,6 @@ __metadata:
languageName: node
linkType: hard
"pathval@npm:^2.0.0":
version: 2.0.1
resolution: "pathval@npm:2.0.1"
checksum: 10/f5e8b82f6b988a5bba197970af050268fd800780d0f9ee026e6f0b544ac4b17ab52bebeabccb790d63a794530a1641ae399ad07ecfc67ad337504c85dc9e5693
languageName: node
linkType: hard
"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1":
version: 1.1.1
resolution: "picocolors@npm:1.1.1"
@ -18973,6 +18855,13 @@ __metadata:
languageName: node
linkType: hard
"pngjs@npm:^7.0.0":
version: 7.0.0
resolution: "pngjs@npm:7.0.0"
checksum: 10/e843ebbb0df092ee0f3a3e7dbd91ff87a239a4e4c4198fff202916bfb33b67622f4b83b3c29f3ccae94fcb97180c289df06068624554f61686fe6b9a4811f7db
languageName: node
linkType: hard
"possible-typed-array-names@npm:^1.0.0":
version: 1.0.0
resolution: "possible-typed-array-names@npm:1.0.0"
@ -21198,7 +21087,7 @@ __metadata:
languageName: node
linkType: hard
"sirv@npm:^3.0.0, sirv@npm:^3.0.1":
"sirv@npm:^3.0.0":
version: 3.0.1
resolution: "sirv@npm:3.0.1"
dependencies:
@ -21209,6 +21098,17 @@ __metadata:
languageName: node
linkType: hard
"sirv@npm:^3.0.2":
version: 3.0.2
resolution: "sirv@npm:3.0.2"
dependencies:
"@polka/url": "npm:^1.0.0-next.24"
mrmime: "npm:^2.0.0"
totalist: "npm:^3.0.0"
checksum: 10/259617f4ab57664be6d963f5b27b38a6351d3e91ce70d6726985d087b40efd595fcf7f72ae010babf5e0acb63bcb3e3d6db8de34604da1011be6e28ee32aa15d
languageName: node
linkType: hard
"slash@npm:^3.0.0":
version: 3.0.0
resolution: "slash@npm:3.0.0"
@ -21536,13 +21436,6 @@ __metadata:
languageName: node
linkType: hard
"std-env@npm:^3.9.0":
version: 3.9.0
resolution: "std-env@npm:3.9.0"
checksum: 10/3044b2c54a74be4f460db56725571241ab3ac89a91f39c7709519bc90fa37148784bc4cd7d3a301aa735f43bd174496f263563f76703ce3e81370466ab7c235b
languageName: node
linkType: hard
"std-env@npm:^4.0.0-rc.1":
version: 4.1.0
resolution: "std-env@npm:4.1.0"
@ -21737,15 +21630,6 @@ __metadata:
languageName: node
linkType: hard
"strip-literal@npm:^3.0.0":
version: 3.0.0
resolution: "strip-literal@npm:3.0.0"
dependencies:
js-tokens: "npm:^9.0.1"
checksum: 10/da1616f654f3ff481e078597b4565373a5eeed78b83de4a11a1a1b98292a9036f2474e528eff19b6eed93370428ff957a473827057c117495086436725d7efad
languageName: node
linkType: hard
"strnum@npm:^2.1.0":
version: 2.1.1
resolution: "strnum@npm:2.1.1"
@ -22127,13 +22011,6 @@ __metadata:
languageName: node
linkType: hard
"tinyexec@npm:^0.3.2":
version: 0.3.2
resolution: "tinyexec@npm:0.3.2"
checksum: 10/b9d5fed3166fb1acd1e7f9a89afcd97ccbe18b9c1af0278e429455f6976d69271ba2d21797e7c36d57d6b05025e525d2882d88c2ab435b60d1ddf2fea361de57
languageName: node
linkType: hard
"tinyexec@npm:^1.0.2":
version: 1.1.2
resolution: "tinyexec@npm:1.1.2"
@ -22161,20 +22038,6 @@ __metadata:
languageName: node
linkType: hard
"tinypool@npm:^1.1.1":
version: 1.1.1
resolution: "tinypool@npm:1.1.1"
checksum: 10/0d54139e9dbc6ef33349768fa78890a4d708d16a7ab68e4e4ef3bb740609ddf0f9fd13292c2f413fbba756166c97051a657181c8f7ae92ade690604f183cc01d
languageName: node
linkType: hard
"tinyrainbow@npm:^2.0.0":
version: 2.0.0
resolution: "tinyrainbow@npm:2.0.0"
checksum: 10/94d4e16246972614a5601eeb169ba94f1d49752426312d3cf8cc4f2cc663a2e354ffc653aa4de4eebccbf9eeebdd0caef52d1150271fdfde65d7ae7f3dcb9eb5
languageName: node
linkType: hard
"tinyrainbow@npm:^3.1.0":
version: 3.1.0
resolution: "tinyrainbow@npm:3.1.0"
@ -22182,13 +22045,6 @@ __metadata:
languageName: node
linkType: hard
"tinyspy@npm:^4.0.3":
version: 4.0.3
resolution: "tinyspy@npm:4.0.3"
checksum: 10/b6a3ed40dd76a2b3c020250cf1401506b456509d1fb9dba0c7b0e644d258dac722843b85c57ccc36c8687db1e7978cb6adcc43e3b71c475910c085b96d41cb53
languageName: node
linkType: hard
"tldts-core@npm:^6.1.86":
version: 6.1.86
resolution: "tldts-core@npm:6.1.86"
@ -22950,7 +22806,7 @@ __metadata:
languageName: node
linkType: hard
"vite-node@npm:3.2.4, vite-node@npm:^3.2.2":
"vite-node@npm:^3.2.2":
version: 3.2.4
resolution: "vite-node@npm:3.2.4"
dependencies:
@ -23208,50 +23064,49 @@ __metadata:
languageName: node
linkType: hard
"vitest-browser-react@npm:^1.0.0":
version: 1.0.0
resolution: "vitest-browser-react@npm:1.0.0"
"vitest-browser-react@npm:^2.2.0":
version: 2.2.0
resolution: "vitest-browser-react@npm:2.2.0"
peerDependencies:
"@types/react": ^18.0.0 || ^19.0.0
"@types/react-dom": ^18.0.0 || ^19.0.0
"@vitest/browser": ^2.1.0 || ^3.0.0 || ^4.0.0-0
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
vitest: ^2.1.0 || ^3.0.0 || ^4.0.0-0
vitest: ^4.0.0
peerDependenciesMeta:
"@types/react":
optional: true
"@types/react-dom":
optional: true
checksum: 10/1e397bd5157e765fb82a714601b0fb6e8936c3cc631b9fb3d2eb24a407fd9a3144750765447ba33159fad2962965925e71592729c61f852e912f1a2c8f936fd5
checksum: 10/44d1e9cabec5bb51f2a422abbb080db1a47c7efbcab4461fa24049cc2e8caf5cbe0204e99fe224b2141931ba23a753e35caf412db4875129c1768e9a1e6a81a0
languageName: node
linkType: hard
"vitest-browser-svelte@npm:^1.0.0":
version: 1.0.0
resolution: "vitest-browser-svelte@npm:1.0.0"
"vitest-browser-svelte@npm:^2.1.1":
version: 2.1.1
resolution: "vitest-browser-svelte@npm:2.1.1"
dependencies:
"@testing-library/svelte-core": "npm:^1.0.0"
peerDependencies:
"@vitest/browser": ^2.1.0 || ^3.0.0 || ^4.0.0-0
svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0
vitest: ^2.1.0 || ^3.0.0 || ^4.0.0-0
checksum: 10/2416f780e195611a917b2dbe7769058d6fe43f85a4edd279e87a7678914faa8f053bca7b43fecdd2e45fba7f03c5fcd6bca8210aa088996059d9380be141a44c
vitest: ^4.0.0
checksum: 10/a8569cdfed512bcc406a171b40cf477429aea446f18211f9e5f908a846d52894774278d27c313b004baf9bfa145f5d874714e7825284c646b2bce938c912d488
languageName: node
linkType: hard
"vitest-browser-vue@npm:^1.0.0":
version: 1.0.0
resolution: "vitest-browser-vue@npm:1.0.0"
"vitest-browser-vue@npm:^2.1.0":
version: 2.1.0
resolution: "vitest-browser-vue@npm:2.1.0"
dependencies:
"@vue/test-utils": "npm:^2.4.6"
peerDependencies:
"@vitest/browser": ^2.1.0 || ^3.0.0 || ^4.0.0-0
vitest: ^2.1.0 || ^3.0.0 || ^4.0.0-0
vitest: ^4.0.0-0
vue: ^3.0.0
checksum: 10/e28150c03fef9c3763b52add83f565c4b0e5b15c2c0f0cf73b1b98a4028e917eb33d0628257e700e6cce9a267cd26bc2215b9884f60de14227222dff26a580a7
checksum: 10/45d5586270fa6e92a645fcfcf2f7953bc08beff63a9046834da3a47008ecac5b7029ad5cc6a573bec0236f15310a80bbf1dabaa1896c46a1f048d3f112f29704
languageName: node
linkType: hard
"vitest@npm:4.1.6":
"vitest@npm:4.1.6, vitest@npm:^4.1.6":
version: 4.1.6
resolution: "vitest@npm:4.1.6"
dependencies:
@ -23319,62 +23174,6 @@ __metadata:
languageName: node
linkType: hard
"vitest@npm:^3.2.4":
version: 3.2.4
resolution: "vitest@npm:3.2.4"
dependencies:
"@types/chai": "npm:^5.2.2"
"@vitest/expect": "npm:3.2.4"
"@vitest/mocker": "npm:3.2.4"
"@vitest/pretty-format": "npm:^3.2.4"
"@vitest/runner": "npm:3.2.4"
"@vitest/snapshot": "npm:3.2.4"
"@vitest/spy": "npm:3.2.4"
"@vitest/utils": "npm:3.2.4"
chai: "npm:^5.2.0"
debug: "npm:^4.4.1"
expect-type: "npm:^1.2.1"
magic-string: "npm:^0.30.17"
pathe: "npm:^2.0.3"
picomatch: "npm:^4.0.2"
std-env: "npm:^3.9.0"
tinybench: "npm:^2.9.0"
tinyexec: "npm:^0.3.2"
tinyglobby: "npm:^0.2.14"
tinypool: "npm:^1.1.1"
tinyrainbow: "npm:^2.0.0"
vite: "npm:^5.0.0 || ^6.0.0 || ^7.0.0-0"
vite-node: "npm:3.2.4"
why-is-node-running: "npm:^2.3.0"
peerDependencies:
"@edge-runtime/vm": "*"
"@types/debug": ^4.1.12
"@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0
"@vitest/browser": 3.2.4
"@vitest/ui": 3.2.4
happy-dom: "*"
jsdom: "*"
peerDependenciesMeta:
"@edge-runtime/vm":
optional: true
"@types/debug":
optional: true
"@types/node":
optional: true
"@vitest/browser":
optional: true
"@vitest/ui":
optional: true
happy-dom:
optional: true
jsdom:
optional: true
bin:
vitest: vitest.mjs
checksum: 10/f10bbce093ecab310ecbe484536ef4496fb9151510b2be0c5907c65f6d31482d9c851f3182531d1d27d558054aa78e8efd9d4702ba6c82058657e8b6a52507ee
languageName: node
linkType: hard
"void-elements@npm:^2.0.0":
version: 2.0.1
resolution: "void-elements@npm:2.0.1"
@ -23851,7 +23650,7 @@ __metadata:
languageName: node
linkType: hard
"ws@npm:8.20.1":
"ws@npm:8.20.1, ws@npm:^8.19.0":
version: 8.20.1
resolution: "ws@npm:8.20.1"
peerDependencies:
@ -23881,7 +23680,7 @@ __metadata:
languageName: node
linkType: hard
"ws@npm:^8.18.0, ws@npm:^8.18.2":
"ws@npm:^8.18.0":
version: 8.18.3
resolution: "ws@npm:8.18.3"
peerDependencies: