diff --git a/docs/guide/browser.md b/docs/guide/browser.md index 161814a855c0..1df946c05bfe 100644 --- a/docs/guide/browser.md +++ b/docs/guide/browser.md @@ -108,6 +108,28 @@ npx vitest --browser.name=chrome --browser.headless In this case, Vitest will run in headless mode using the Chrome browser. +## Custom Provider Options + +You may pass provider-specific options, such as [WebdriverIO custom capabilities](https://webdriver.io/docs/capabilities#custom-capabilities) like: + +```ts +export default defineConfig({ + test: { + browser: { + enabled: true, + headless: true, + }, + providerOptions: { + webdriverio: { + 'goog:chromeOptions': { + args: ['disable-gpu'], + }, + }, + }, + }, +}) +``` + ## Limitations ### Thread Blocking Dialogs diff --git a/package.json b/package.json index 3b9ee959ae95..a87a6789c1a1 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "@vitest/coverage-istanbul": "workspace:*", "@vitest/coverage-v8": "workspace:*", "@vitest/ui": "workspace:*", + "@wdio/types": "^8.10.4", "bumpp": "^9.1.1", "esbuild": "^0.18.11", "eslint": "^8.44.0", diff --git a/packages/vitest/src/node/browser/playwright.ts b/packages/vitest/src/node/browser/playwright.ts index 3c8feb3f121d..418b9533b220 100644 --- a/packages/vitest/src/node/browser/playwright.ts +++ b/packages/vitest/src/node/browser/playwright.ts @@ -1,4 +1,4 @@ -import type { Page } from 'playwright' +import type { LaunchOptions, Page } from 'playwright' import type { BrowserProvider, BrowserProviderOptions } from '../../types/browser' import { ensurePackageInstalled } from '../pkg' import type { WorkspaceProject } from '../workspace' @@ -9,6 +9,7 @@ export type PlaywrightBrowser = typeof playwrightBrowsers[number] export interface PlaywrightProviderOptions extends BrowserProviderOptions { browser: PlaywrightBrowser + providerOptions: { playwright: LaunchOptions } } export class PlaywrightBrowserProvider implements BrowserProvider { @@ -16,15 +17,17 @@ export class PlaywrightBrowserProvider implements BrowserProvider { private cachedBrowser: Page | null = null private browser!: PlaywrightBrowser + private providerOptions?: LaunchOptions private ctx!: WorkspaceProject getSupportedBrowsers() { return playwrightBrowsers } - async initialize(ctx: WorkspaceProject, { browser }: PlaywrightProviderOptions) { + async initialize(ctx: WorkspaceProject, { browser, providerOptions }: PlaywrightProviderOptions) { this.ctx = ctx this.browser = browser + this.providerOptions = providerOptions?.playwright const root = this.ctx.config.root @@ -40,7 +43,7 @@ export class PlaywrightBrowserProvider implements BrowserProvider { const playwright = await import('playwright') - const playwrightInstance = await playwright[this.browser].launch({ headless: options.headless }) + const playwrightInstance = await playwright[this.browser].launch({ headless: options.headless, ...this.providerOptions }) this.cachedBrowser = await playwrightInstance.newPage() this.cachedBrowser.on('close', () => { diff --git a/packages/vitest/src/node/browser/webdriver.ts b/packages/vitest/src/node/browser/webdriver.ts index 29aa8a2f959c..00be0ef81704 100644 --- a/packages/vitest/src/node/browser/webdriver.ts +++ b/packages/vitest/src/node/browser/webdriver.ts @@ -1,4 +1,5 @@ import type { Awaitable } from '@vitest/utils' +import type { Capabilities } from '@wdio/types' import type { BrowserProvider, BrowserProviderOptions } from '../../types/browser' import { ensurePackageInstalled } from '../pkg' import type { WorkspaceProject } from '../workspace' @@ -8,6 +9,7 @@ export type WebdriverBrowser = typeof webdriverBrowsers[number] export interface WebdriverProviderOptions extends BrowserProviderOptions { browser: WebdriverBrowser + providerOptions?: { webdriverio: Capabilities.Capabilities } } export class WebdriverBrowserProvider implements BrowserProvider { @@ -16,15 +18,17 @@ export class WebdriverBrowserProvider implements BrowserProvider { private cachedBrowser: WebdriverIO.Browser | null = null private stopSafari: () => void = () => {} private browser!: WebdriverBrowser + private providerOptions?: Capabilities.Capabilities private ctx!: WorkspaceProject getSupportedBrowsers() { return webdriverBrowsers } - async initialize(ctx: WorkspaceProject, { browser }: WebdriverProviderOptions) { + async initialize(ctx: WorkspaceProject, { browser, providerOptions }: WebdriverProviderOptions) { this.ctx = ctx this.browser = browser + this.providerOptions = providerOptions?.webdriverio const root = this.ctx.config.root @@ -59,6 +63,7 @@ export class WebdriverBrowserProvider implements BrowserProvider { capabilities: { 'browserName': this.browser, 'wdio:devtoolsOptions': { headless: options.headless }, + ...this.providerOptions, }, }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7438ef3ea539..a45da5fac378 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,6 +54,9 @@ importers: '@vitest/ui': specifier: workspace:* version: link:packages/ui + '@wdio/types': + specifier: ^8.10.4 + version: 8.10.4 bumpp: specifier: ^9.1.1 version: 9.1.1 @@ -395,7 +398,7 @@ importers: version: link:../../packages/ui happy-dom: specifier: latest - version: 9.20.3 + version: 10.1.1 jsdom: specifier: latest version: 22.1.0 @@ -688,7 +691,7 @@ importers: version: 4.2.3(vite@4.3.9)(vue@3.3.4) '@vue/test-utils': specifier: latest - version: 2.3.2(vue@3.3.4) + version: 2.4.0(vue@3.3.4) jsdom: specifier: latest version: 22.1.0 @@ -734,10 +737,10 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: latest - version: 2.4.2(svelte@3.59.1)(vite@4.3.9) + version: 2.4.2(svelte@3.55.1)(vite@4.3.9) '@testing-library/svelte': specifier: latest - version: 3.2.2(svelte@3.59.1) + version: 4.0.3(svelte@3.55.1) '@vitest/ui': specifier: latest version: link:../../packages/ui @@ -746,7 +749,7 @@ importers: version: 22.1.0 svelte: specifier: latest - version: 3.59.1 + version: 3.55.1 vite: specifier: ^4.3.9 version: 4.3.9(@types/node@18.16.19) @@ -804,7 +807,7 @@ importers: version: 22.1.0 unplugin-auto-import: specifier: latest - version: 0.16.4(@vueuse/core@10.2.1)(rollup@3.26.0) + version: 0.16.6(rollup@3.26.0) unplugin-vue-components: specifier: latest version: 0.25.1(rollup@3.26.0)(vue@3.3.4) @@ -847,7 +850,7 @@ importers: version: 3.0.1(vite@4.3.9)(vue@3.3.4) '@vue/test-utils': specifier: latest - version: 2.3.2(vue@3.3.4) + version: 2.4.0(vue@3.3.4) jsdom: specifier: latest version: 22.1.0 @@ -1599,10 +1602,10 @@ importers: version: link:../../packages/coverage-v8 '@vue/test-utils': specifier: latest - version: 2.3.2(vue@3.3.4) + version: 2.4.0(vue@3.3.4) happy-dom: specifier: latest - version: 9.20.3 + version: 10.1.1 istanbul-lib-coverage: specifier: ^3.2.0 version: 3.2.0 @@ -1659,7 +1662,7 @@ importers: devDependencies: happy-dom: specifier: latest - version: 9.20.3 + version: 10.1.1 vite: specifier: ^4.3.9 version: 4.3.9(@types/node@18.16.19) @@ -2231,6 +2234,10 @@ packages: resolution: {integrity: sha512-qe8Nmh9rYI/HIspLSTwtbMFPj6dISG6+dJnOguTlPNXtCvS2uezdxscVBb7/3DrmNbQK49TDqpkSQ1chbRGdpQ==} dev: true + /@antfu/utils@0.7.5: + resolution: {integrity: sha512-dlR6LdS+0SzOAPx/TPRhnoi7hE251OVeT2Snw0RguNbBSbjUHdWr0l3vcUUDg26rEysT89kCbtw1lVorBXLLCg==} + dev: true + /@apideck/better-ajv-errors@0.3.6(ajv@8.11.0): resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} engines: {node: '>=10'} @@ -8290,6 +8297,22 @@ packages: - supports-color dev: true + /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@3.55.1)(vite@4.3.9): + resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^2.2.0 + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@3.55.1)(vite@4.3.9) + debug: 4.3.4(supports-color@8.1.1) + svelte: 3.55.1 + vite: 4.3.9(@types/node@18.16.19) + transitivePeerDependencies: + - supports-color + dev: true + /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@3.59.1)(vite@4.3.9): resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==} engines: {node: ^14.18.0 || >= 16} @@ -8306,6 +8329,26 @@ packages: - supports-color dev: true + /@sveltejs/vite-plugin-svelte@2.4.2(svelte@3.55.1)(vite@4.3.9): + resolution: {integrity: sha512-ePfcC48ftMKhkT0OFGdOyycYKnnkT6i/buzey+vHRTR/JpQvuPzzhf1PtKqCDQfJRgoPSN2vscXs6gLigx/zGw==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@3.55.1)(vite@4.3.9) + debug: 4.3.4(supports-color@8.1.1) + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.1 + svelte: 3.55.1 + svelte-hmr: 0.15.2(svelte@3.55.1) + vite: 4.3.9(@types/node@18.16.19) + vitefu: 0.2.4(vite@4.3.9) + transitivePeerDependencies: + - supports-color + dev: true + /@sveltejs/vite-plugin-svelte@2.4.2(svelte@3.59.1)(vite@4.3.9): resolution: {integrity: sha512-ePfcC48ftMKhkT0OFGdOyycYKnnkT6i/buzey+vHRTR/JpQvuPzzhf1PtKqCDQfJRgoPSN2vscXs6gLigx/zGw==} engines: {node: ^14.18.0 || >= 16} @@ -8457,14 +8500,14 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@testing-library/svelte@3.2.2(svelte@3.59.1): - resolution: {integrity: sha512-IKwZgqbekC3LpoRhSwhd0JswRGxKdAGkf39UiDXTywK61YyLXbCYoR831e/UUC6EeNW4hiHPY+2WuovxOgI5sw==} + /@testing-library/svelte@4.0.3(svelte@3.55.1): + resolution: {integrity: sha512-GldAnyGEOn5gMwME+hLVQrnfuKZFB+it5YOMnRBHX+nqeHMsSa18HeqkdvGqtqLpvn81xV7R7EYFb500ngUfXA==} engines: {node: '>= 10'} peerDependencies: - svelte: 3.x + svelte: ^3 || ^4 dependencies: - '@testing-library/dom': 8.19.0 - svelte: 3.59.1 + '@testing-library/dom': 9.3.1 + svelte: 3.55.1 dev: true /@testing-library/user-event@13.5.0(@testing-library/dom@8.17.1): @@ -9794,16 +9837,21 @@ packages: vue: 3.3.4 dev: true - /@vue/test-utils@2.3.2(vue@3.3.4): - resolution: {integrity: sha512-hJnVaYhbrIm0yBS0+e1Y0Sj85cMyAi+PAbK4JHqMRUZ6S622Goa+G7QzkRSyvCteG8wop7tipuEbHoZo26wsSA==} + /@vue/test-utils@2.4.0(vue@3.3.4): + resolution: {integrity: sha512-BKB9aj1yky63/I3IwSr1FjUeHYsKXI7D6S9F378AHt7a5vC0dLkOBtSsFXoRGC/7BfHmiB9HRhT+i9xrUHoAKw==} peerDependencies: + '@vue/compiler-dom': ^3.0.1 + '@vue/server-renderer': ^3.0.1 vue: ^3.0.1 + peerDependenciesMeta: + '@vue/compiler-dom': + optional: true + '@vue/server-renderer': + optional: true dependencies: js-beautify: 1.14.6 vue: 3.3.4 - optionalDependencies: - '@vue/compiler-dom': 3.3.4 - '@vue/server-renderer': 3.3.4(vue@3.3.4) + vue-component-type-helpers: 1.6.5 dev: true /@vueuse/core@10.2.1(vue@3.3.4): @@ -10567,6 +10615,7 @@ packages: /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + dev: true /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} @@ -10593,6 +10642,7 @@ packages: engines: {node: '>=8'} dependencies: color-convert: 2.0.1 + dev: true /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} @@ -12108,6 +12158,7 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + dev: true /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -12176,12 +12227,14 @@ packages: engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 + dev: true /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true /color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} @@ -12557,6 +12610,7 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + dev: true /crypto-browserify@3.12.0: resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} @@ -13533,6 +13587,7 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} @@ -15293,6 +15348,7 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: true /find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} @@ -15367,6 +15423,7 @@ packages: dependencies: cross-spawn: 7.0.3 signal-exit: 3.0.7 + dev: true /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} @@ -15622,6 +15679,7 @@ packages: /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + dev: true /get-func-name@2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} @@ -15969,6 +16027,17 @@ packages: uglify-js: 3.17.0 dev: true + /happy-dom@10.1.1: + resolution: {integrity: sha512-/9AMl/rwMCAz/lAs55W0B2p9I/RfnMWmR2iBI1/twz0+XZYrVgHyJzrBTpHDZlbf00NRk/pFoaktKPtdAP5Tlg==} + dependencies: + css.escape: 1.5.1 + entities: 4.5.0 + iconv-lite: 0.6.3 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + dev: true + /happy-dom@9.20.3: resolution: {integrity: sha512-eBsgauT435fXFvQDNcmm5QbGtYzxEzOaX35Ia+h6yP/wwa4xSWZh1CfP+mGby8Hk6Xu59mTkpyf72rUXHNxY7A==} dependencies: @@ -16808,6 +16877,7 @@ packages: /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + dev: true /is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} @@ -17103,6 +17173,7 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true /isobject@2.1.0: resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} @@ -18450,6 +18521,7 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: true /locate-path@7.1.1: resolution: {integrity: sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg==} @@ -19003,6 +19075,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist@1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: true @@ -19940,6 +20019,7 @@ packages: engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 + dev: true /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} @@ -19966,6 +20046,7 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: true /p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} @@ -20156,6 +20237,7 @@ packages: /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + dev: true /path-exists@5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} @@ -20174,6 +20256,7 @@ packages: /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + dev: true /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} @@ -21662,6 +21745,7 @@ packages: /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + dev: true /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} @@ -22288,6 +22372,7 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + dev: true /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} @@ -22297,6 +22382,7 @@ packages: /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + dev: true /shell-quote@1.7.4: resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==} @@ -22329,6 +22415,7 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true /signal-exit@4.0.1: resolution: {integrity: sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==} @@ -22788,6 +22875,7 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + dev: true /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -22887,6 +22975,7 @@ packages: engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 + dev: true /strip-ansi@7.0.1: resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} @@ -23113,6 +23202,15 @@ packages: - sugarss dev: true + /svelte-hmr@0.15.2(svelte@3.55.1): + resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0-next.0 + dependencies: + svelte: 3.55.1 + dev: true + /svelte-hmr@0.15.2(svelte@3.59.1): resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} engines: {node: ^12.20 || ^14.13.1 || >= 16} @@ -23169,6 +23267,11 @@ packages: typescript: 5.1.3 dev: true + /svelte@3.55.1: + resolution: {integrity: sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==} + engines: {node: '>= 8'} + dev: true + /svelte@3.59.1: resolution: {integrity: sha512-pKj8fEBmqf6mq3/NfrB9SLtcJcUvjYSWyePlfCqN9gujLB25RitWK8PvFzlwim6hD/We35KbPlRteuA6rnPGcQ==} engines: {node: '>= 8'} @@ -23967,6 +24070,24 @@ packages: vfile: 4.2.1 dev: true + /unimport@3.0.14(rollup@3.26.0): + resolution: {integrity: sha512-67Rh/sGpEuVqdHWkXaZ6NOq+I7sKt86o+DUtKeGB6dh4Hk1A8AQrzyVGg2+LaVEYotStH7HwvV9YSaRjyT7Uqg==} + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.26.0) + escape-string-regexp: 5.0.0 + fast-glob: 3.3.0 + local-pkg: 0.4.3 + magic-string: 0.30.1 + mlly: 1.4.0 + pathe: 1.1.1 + pkg-types: 1.0.3 + scule: 1.0.0 + strip-literal: 1.0.1 + unplugin: 1.3.2 + transitivePeerDependencies: + - rollup + dev: true + /unimport@3.0.7(rollup@3.26.0): resolution: {integrity: sha512-2dVQUxJEGcrSZ0U4qtwJVODrlfyGcwmIOoHVqbAFFUx7kPoEN5JWr1cZFhLwoAwTmZOvqAm3YIkzv1engIQocg==} dependencies: @@ -24181,6 +24302,30 @@ packages: - rollup dev: true + /unplugin-auto-import@0.16.6(rollup@3.26.0): + resolution: {integrity: sha512-M+YIITkx3C/Hg38hp8HmswP5mShUUyJOzpifv7RTlAbeFlO2Tyw0pwrogSSxnipHDPTtI8VHFBpkYkNKzYSuyA==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + dependencies: + '@antfu/utils': 0.7.5 + '@rollup/pluginutils': 5.0.2(rollup@3.26.0) + fast-glob: 3.3.0 + local-pkg: 0.4.3 + magic-string: 0.30.1 + minimatch: 9.0.3 + unimport: 3.0.14(rollup@3.26.0) + unplugin: 1.3.2 + transitivePeerDependencies: + - rollup + dev: true + /unplugin-vue-components@0.25.1(rollup@2.79.1)(vue@3.3.4): resolution: {integrity: sha512-kzS2ZHVMaGU2XEO2keYQcMjNZkanDSGDdY96uQT9EPe+wqSZwwgbFfKVJ5ti0+8rGAcKHColwKUvctBhq2LJ3A==} engines: {node: '>=14'} @@ -24194,16 +24339,16 @@ packages: '@nuxt/kit': optional: true dependencies: - '@antfu/utils': 0.7.4 + '@antfu/utils': 0.7.5 '@rollup/pluginutils': 5.0.2(rollup@2.79.1) chokidar: 3.5.3 debug: 4.3.4(supports-color@8.1.1) fast-glob: 3.3.0 local-pkg: 0.4.3 - magic-string: 0.30.0 - minimatch: 9.0.1 + magic-string: 0.30.1 + minimatch: 9.0.3 resolve: 1.22.2 - unplugin: 1.3.1 + unplugin: 1.3.2 vue: 3.3.4 transitivePeerDependencies: - rollup @@ -24223,16 +24368,16 @@ packages: '@nuxt/kit': optional: true dependencies: - '@antfu/utils': 0.7.4 + '@antfu/utils': 0.7.5 '@rollup/pluginutils': 5.0.2(rollup@3.26.0) chokidar: 3.5.3 debug: 4.3.4(supports-color@8.1.1) fast-glob: 3.3.0 local-pkg: 0.4.3 magic-string: 0.30.1 - minimatch: 9.0.1 + minimatch: 9.0.3 resolve: 1.22.2 - unplugin: 1.3.1 + unplugin: 1.3.2 vue: 3.3.4 transitivePeerDependencies: - rollup @@ -24248,6 +24393,15 @@ packages: webpack-virtual-modules: 0.5.0 dev: true + /unplugin@1.3.2: + resolution: {integrity: sha512-Lh7/2SryjXe/IyWqx9K7IKwuKhuOFZEhotiBquOODsv2IVyDkI9lv/XhgfjdXf/xdbv32txmnBNnC/JVTDJlsA==} + dependencies: + acorn: 8.9.0 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.5.0 + dev: true + /unset-value@1.0.0: resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} engines: {node: '>=0.10.0'} @@ -24727,6 +24881,10 @@ packages: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true + /vue-component-type-helpers@1.6.5: + resolution: {integrity: sha512-iGdlqtajmiqed8ptURKPJ/Olz0/mwripVZszg6tygfZSIL9kYFPJTNY6+Q6OjWGznl2L06vxG5HvNvAnWrnzbg==} + dev: true + /vue-demi@0.13.11(vue@3.2.39): resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} engines: {node: '>=12'} @@ -24978,7 +25136,7 @@ packages: is-plain-obj: 4.1.0 lodash.clonedeep: 4.5.0 lodash.zip: 4.2.0 - minimatch: 9.0.1 + minimatch: 9.0.3 puppeteer-core: 20.3.0(typescript@5.1.6) query-selector-shadow-dom: 1.0.1 resq: 1.11.0 @@ -25263,6 +25421,7 @@ packages: hasBin: true dependencies: isexe: 2.0.0 + dev: true /which@3.0.0: resolution: {integrity: sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==} @@ -25477,6 +25636,7 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: true /wrap-ansi@8.0.1: resolution: {integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==} @@ -25582,6 +25742,7 @@ packages: /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + dev: true /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} @@ -25615,6 +25776,7 @@ packages: /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} + dev: true /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} @@ -25632,6 +25794,7 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 + dev: true /yargs@17.5.1: resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==} @@ -25674,6 +25837,7 @@ packages: /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + dev: true /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}