diff --git a/.github/issue-workflow-dark.png b/.github/issue-workflow-dark.png new file mode 100644 index 00000000000000..fe32a6dc507b0c Binary files /dev/null and b/.github/issue-workflow-dark.png differ diff --git a/.github/pr-workflow-dark.png b/.github/pr-workflow-dark.png new file mode 100644 index 00000000000000..35a53f29637201 Binary files /dev/null and b/.github/pr-workflow-dark.png differ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 71a4aa09841ebe..65fb07f88fad9d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -180,11 +180,17 @@ You can set the `DEBUG` environment variable to turn on debugging logs. E.g. `DE ### Issue Triaging Workflow -![issue-workflow](./.github/issue-workflow.png) + + + + ### Pull Request Review Workflow -![issue-workflow](./.github/pr-workflow.png) + + + + ## Notes on Dependencies diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 3b97589d72e264..71ee79a150e015 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -57,7 +57,8 @@ export default defineConfig({ text: 'English', items: [ { text: '简体中文', link: 'https://cn.vitejs.dev' }, - { text: '日本語', link: 'https://ja.vitejs.dev' } + { text: '日本語', link: 'https://ja.vitejs.dev' }, + { text: 'Español', link: 'https://es.vitejs.dev' } ] }, diff --git a/docs/config/build-options.md b/docs/config/build-options.md index afe60c86052b36..e4882e111c51ee 100644 --- a/docs/config/build-options.md +++ b/docs/config/build-options.md @@ -145,7 +145,7 @@ Produce SSR-oriented build. The value can be a string to directly specify the SS Set to `false` to disable minification, or specify the minifier to use. The default is [esbuild](https://github.com/evanw/esbuild) which is 20 ~ 40x faster than terser and only 1 ~ 2% worse compression. [Benchmarks](https://github.com/privatenumber/minification-benchmarks) -Note the `build.minify` option is not available when using the `'es'` format in lib mode. +Note the `build.minify` option does not minify whitespaces when using the `'es'` format in lib mode, as it removes pure annotations and break tree-shaking. Terser must be installed when it is set to `'terser'`. diff --git a/docs/config/index.md b/docs/config/index.md index 73a20082295304..34675192fe6484 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -61,10 +61,10 @@ Vite also directly supports TS config files. You can use `vite.config.ts` with t ## Conditional Config -If the config needs to conditional determine options based on the command (`dev`/`serve` or `build`) or the [mode](/guide/env-and-mode) being used, it can export a function instead: +If the config needs to conditionally determine options based on the command (`dev`/`serve` or `build`), the [mode](/guide/env-and-mode) being used, or if it is an SSR build (`ssrBuild`), it can export a function instead: ```js -export default defineConfig(({ command, mode }) => { +export default defineConfig(({ command, mode, ssrBuild }) => { if (command === 'serve') { return { // dev specific config @@ -80,6 +80,8 @@ export default defineConfig(({ command, mode }) => { It is important to note that in Vite's API the `command` value is `serve` during dev (in the cli `vite`, `vite dev`, and `vite serve` are aliases), and `build` when building for production (`vite build`). +`ssrBuild` is experimental. It is only available during build instead of a more general `ssr` flag because, during dev, the config is shared by the single server handling SSR and non-SSR requests. The value could be `undefined` for tools that don't have separate commands for the browser and SSR build, so use explicit comparison against `true` and `false`. + ## Async Config If the config needs to call async function, it can export a async function instead: diff --git a/docs/config/preview-options.md b/docs/config/preview-options.md index 7f99c916bab1f0..10ec82f38e3848 100644 --- a/docs/config/preview-options.md +++ b/docs/config/preview-options.md @@ -42,7 +42,7 @@ export default defineConfig({ - **Type:** `boolean` - **Default:** [`server.strictPort`](./server-options#server-strictport) -Set to `true` to exit if port is already in use, instead of automatically try the next available port. +Set to `true` to exit if port is already in use, instead of automatically trying the next available port. ## preview.https diff --git a/docs/config/server-options.md b/docs/config/server-options.md index b77c69be7d2ee0..6a5ae5ebab3aa4 100644 --- a/docs/config/server-options.md +++ b/docs/config/server-options.md @@ -45,7 +45,7 @@ Specify server port. Note if the port is already being used, Vite will automatic - **Type:** `boolean` -Set to `true` to exit if port is already in use, instead of automatically try the next available port. +Set to `true` to exit if port is already in use, instead of automatically trying the next available port. ## server.https diff --git a/docs/config/shared-options.md b/docs/config/shared-options.md index 2ae42cb88500c4..835354133f2caa 100644 --- a/docs/config/shared-options.md +++ b/docs/config/shared-options.md @@ -198,7 +198,7 @@ Configure CSS modules behavior. The options are passed on to [postcss-modules](h ## css.postcss -- **Type:** `string | (postcss.ProcessOptions & { plugins?: postcss.Plugin[] })` +- **Type:** `string | (postcss.ProcessOptions & { plugins?: postcss.AcceptedPlugin[] })` Inline PostCSS config or a custom directory to search PostCSS config from (default is project root). @@ -280,6 +280,8 @@ export default defineConfig({ }) ``` +When [`build.minify`](./build-options.md#build-minify) is `true`, all minify optimizations are applied by default. To disable [certain aspects](https://esbuild.github.io/api/#minify) of it, set any of `esbuild.minifyIdentifiers`, `esbuild.minifySyntax`, or `esbuild.minifyWhitespace` options to `false`. Note the `esbuild.minify` option can't be used to override `build.minify`. + Set to `false` to disable esbuild transforms. ## assetsInclude diff --git a/docs/guide/api-plugin.md b/docs/guide/api-plugin.md index 51dc3ef6e0f78f..968505906b1c39 100644 --- a/docs/guide/api-plugin.md +++ b/docs/guide/api-plugin.md @@ -332,7 +332,7 @@ Vite plugins can also provide hooks that serve Vite-specific purposes. These hoo - **Type:** `IndexHtmlTransformHook | { enforce?: 'pre' | 'post', transform: IndexHtmlTransformHook }` - **Kind:** `async`, `sequential` - Dedicated hook for transforming `index.html`. The hook receives the current HTML string and a transform context. The context exposes the [`ViteDevServer`](./api-javascript#vitedevserver) instance during dev, and exposes the Rollup output bundle during build. + Dedicated hook for transforming HTML entry point files such as `index.html`. The hook receives the current HTML string and a transform context. The context exposes the [`ViteDevServer`](./api-javascript#vitedevserver) instance during dev, and exposes the Rollup output bundle during build. The hook can be async and can return one of the following: @@ -544,7 +544,7 @@ export default defineConfig({ ``` ::: tip NOTE -We recommend **alway prefixing** your event names to avoid collisions with other plugins. +We recommend **always prefixing** your event names to avoid collisions with other plugins. ::: On the client side, use [`hot.on`](/guide/api-hmr.html#hot-on-event-cb) to listen to the events: diff --git a/docs/guide/build.md b/docs/guide/build.md index 5069d566d889ef..48d2f5a14ccf9c 100644 --- a/docs/guide/build.md +++ b/docs/guide/build.md @@ -197,45 +197,34 @@ A user may choose to deploy in three different paths: - The generated hashed assets (JS, CSS, and other file types like images) - The copied [public files](assets.md#the-public-directory) -A single static [base](#public-base-path) isn't enough in these scenarios. Vite provides experimental support for advanced base options during build, using `experimental.buildAdvancedBaseOptions`. +A single static [base](#public-base-path) isn't enough in these scenarios. Vite provides experimental support for advanced base options during build, using `experimental.renderBuiltUrl`. ```js - experimental: { - buildAdvancedBaseOptions: { - // Same as base: './' - // type: boolean, default: false - relative: true - // Static base - // type: string, default: undefined - url: 'https:/cdn.domain.com/' - // Dynamic base to be used for paths inside JS - // type: (url: string) => string, default: undefined - runtime: (url: string) => `window.__toCdnUrl(${url})` - }, +experimental: { + renderBuiltUrl: (filename: string, { hostType: 'js' | 'css' | 'html' }) => { + if (hostType === 'js') { + return { runtime: `window.__toCdnUrl(${JSON.stringify(filename)})` } + } else { + return { relative: true } + } } +} ``` -When `runtime` is defined, it will be used for hashed assets and public files paths inside JS assets. Inside CSS and HTML generated files, paths will use `url` if defined or fallback to `config.base`. - -If `relative` is true and `url` is defined, relative paths will be prefered for assets inside the same group (for example a hashed image referenced from a JS file). And `url` will be used for the paths in HTML entries and for paths between different groups (a public file referenced from a CSS file). - -If the hashed assets and public files aren't deployed together, options for each group can be defined independently: +If the hashed assets and public files aren't deployed together, options for each group can be defined independently using asset `type` included in the third `context` param given to the function. ```js experimental: { - buildAdvancedBaseOptions: { - assets: { - relative: true - url: 'https:/cdn.domain.com/assets', - runtime: (url: string) => `window.__assetsPath(${url})` - }, - public: { - relative: false - url: 'https:/www.domain.com/', - runtime: (url: string) => `window.__publicPath + ${url}` + renderBuiltUrl(filename: string, { hostType: 'js' | 'css' | 'html', type: 'public' | 'asset' }) { + if (type === 'public') { + return 'https://www.domain.com/' + filename + } + else if (path.extname(importer) === '.js') { + return { runtime: `window.__assetsPath(${JSON.stringify(filename)})` } + } + else { + return 'https://cdn.domain.com/assets/' + filename } } } ``` - -Any option that isn't defined in the `public` or `assets` entry will be inherited from the main `buildAdvancedBaseOptions` config. diff --git a/docs/guide/comparisons.md b/docs/guide/comparisons.md index 1e849f88a71a68..e582a8d389d0fb 100644 --- a/docs/guide/comparisons.md +++ b/docs/guide/comparisons.md @@ -1,38 +1,4 @@ -# Comparisons with Other No-Bundler Solutions - -## Snowpack - -[Snowpack](https://www.snowpack.dev/) is also a no-bundle native ESM dev server that is very similar in scope to Vite. Aside from different implementation details, the two projects share a lot in terms of technical advantages over traditional tooling. Vite's dependency pre-bundling is also inspired by Snowpack v1 (now [`esinstall`](https://github.com/snowpackjs/snowpack/tree/main/esinstall)). Some of the main differences between the two projects are: - -**Production Build** - -Snowpack's default build output is unbundled: it transforms each file into separate built modules, which can then be fed into different "optimizers" that perform the actual bundling. The benefit of this is that you can choose between different end-bundlers to fit specific needs (e.g. webpack, Rollup, or even esbuild), the downside is that it's a bit of a fragmented experience - for example, the esbuild optimizer is still unstable, the Rollup optimizer is not officially maintained, and different optimizers have different output and configurations. - -Vite opts to have a deeper integration with one single bundler (Rollup) in order to provide a more streamlined experience. It also allows Vite to support a [Universal Plugin API](./api-plugin) that works for both dev and build. - -Due to a more integrated build process, Vite supports a wide range of features that are currently not available in Snowpack build optimizers: - -- [Multi-Page Support](./build#multi-page-app) -- [Library Mode](./build#library-mode) -- [Automatic CSS code-splitting](./features#css-code-splitting) -- [Optimized async chunk loading](./features#async-chunk-loading-optimization) -- Official [legacy mode plugin](https://github.com/vitejs/vite/tree/main/packages/plugin-legacy) that generates dual modern/legacy bundles and auto delivers the right bundle based on browser support. - -**Faster Dependency Pre-Bundling** - -Vite uses [esbuild](https://esbuild.github.io/) instead of Rollup for dependency pre-bundling. This results in significant performance improvements in terms of cold server start and re-bundling on dependency invalidations. - -**Monorepo Support** - -Vite is designed to handle monorepo setups and we have users successfully using it with Yarn, Yarn 2, and PNPM based monorepos. - -**CSS Pre-Processor Support** - -Vite provides more refined support for Sass and Less, including improved `@import` resolution (aliases and npm dependencies) and [automatic `url()` rebasing for inlined files](./features#import-inlining-and-rebasing). - -**First Class Vue Support** - -Vite was initially created to serve as the future foundation of [Vue.js](https://vuejs.org/) tooling. Although as of 2.0 Vite is now fully framework-agnostic, the official Vue plugin still provides first-class support for Vue's Single File Component format, covering all advanced features such as template asset reference resolving, ` diff --git a/playground/alias/package.json b/playground/alias/package.json index ee345bf1f9ce13..4b49ca8d346ebf 100644 --- a/playground/alias/package.json +++ b/playground/alias/package.json @@ -10,7 +10,8 @@ }, "dependencies": { "aliased-module": "file:./dir/module", - "vue": "^3.2.37" + "vue": "^3.2.37", + "@vue/shared": "^3.2.37" }, "devDependencies": { "resolve-linked": "workspace:*" diff --git a/playground/alias/vite.config.js b/playground/alias/vite.config.js index 530fe86a3de2cb..634871877a0f56 100644 --- a/playground/alias/vite.config.js +++ b/playground/alias/vite.config.js @@ -16,6 +16,11 @@ module.exports = { { find: '/@', replacement: path.resolve(__dirname, 'dir') }, // aliasing an optimized dep { find: 'vue', replacement: 'vue/dist/vue.esm-bundler.js' }, + // aliasing an optimized dep to absolute URL + { + find: '@vue/shared', + replacement: require.resolve('@vue/shared/dist/shared.cjs.prod.js') + }, // aliasing one unoptimized dep to an optimized dep { find: 'foo', replacement: 'vue' }, { diff --git a/playground/assets/package.json b/playground/assets/package.json index 71dafed5f6dfb1..d3b685dbed678b 100644 --- a/playground/assets/package.json +++ b/playground/assets/package.json @@ -10,8 +10,8 @@ "dev:relative-base": "vite --config ./vite.config-relative-base.js dev", "build:relative-base": "vite --config ./vite.config-relative-base.js build", "preview:relative-base": "vite --config ./vite.config-relative-base.js preview", - "dev:dynamic-base": "vite --config ./vite.config-dynamic-base.js dev", - "build:dynamic-base": "vite --config ./vite.config-dynamic-base.js build", - "preview:dynamic-base": "vite --config ./vite.config-dynamic-base.js preview" + "dev:runtime-base": "vite --config ./vite.config-runtime-base.js dev", + "build:runtime-base": "vite --config ./vite.config-runtime-base.js build", + "preview:runtime-base": "vite --config ./vite.config-runtime-base.js preview" } } diff --git a/playground/assets/vite.config-runtime-base.js b/playground/assets/vite.config-runtime-base.js index 03b374a5a48a20..0d643a6cf6058a 100644 --- a/playground/assets/vite.config-runtime-base.js +++ b/playground/assets/vite.config-runtime-base.js @@ -1,6 +1,4 @@ -/** - * @type {import('vite').UserConfig} - */ +const path = require('path') const dynamicBaseAssetsCode = ` globalThis.__toAssetUrl = url => '/' + url @@ -8,6 +6,10 @@ globalThis.__publicBase = '/' ` const baseConfig = require('./vite.config.js') + +/** + * @type {import('vite').UserConfig} + */ module.exports = { ...baseConfig, base: './', // overwrite the original base: '/foo/' @@ -43,15 +45,19 @@ module.exports = { } ], experimental: { - buildAdvancedBaseOptions: { - relative: true, - assets: { - url: '/', - runtime: (url) => `globalThis.__toAssetUrl(${url})` - }, - public: { - url: '/', - runtime: (url) => `globalThis.__publicBase+${url}` + renderBuiltUrl(filename, { hostType, type }) { + if (type === 'asset') { + if (hostType === 'js') { + return { + runtime: `globalThis.__toAssetUrl(${JSON.stringify(filename)})` + } + } + } else if (type === 'public') { + if (hostType === 'js') { + return { + runtime: `globalThis.__publicBase+${JSON.stringify(filename)}` + } + } } } } diff --git a/playground/backend-integration/__tests__/backend-integration.spec.ts b/playground/backend-integration/__tests__/backend-integration.spec.ts index db3790ee67e4ac..f0589783cbecf8 100644 --- a/playground/backend-integration/__tests__/backend-integration.spec.ts +++ b/playground/backend-integration/__tests__/backend-integration.spec.ts @@ -33,11 +33,17 @@ describe.runIf(isBuild)('build', () => { const manifest = readManifest('dev') const htmlEntry = manifest['index.html'] const cssAssetEntry = manifest['global.css'] + const scssAssetEntry = manifest['nested/blue.scss'] const imgAssetEntry = manifest['../images/logo.png'] expect(htmlEntry.css.length).toEqual(1) expect(htmlEntry.assets.length).toEqual(1) expect(cssAssetEntry?.file).not.toBeUndefined() + expect(cssAssetEntry?.isEntry).toEqual(true) + expect(scssAssetEntry?.file).not.toBeUndefined() + expect(scssAssetEntry?.src).toEqual('nested/blue.scss') + expect(scssAssetEntry?.isEntry).toEqual(true) expect(imgAssetEntry?.file).not.toBeUndefined() + expect(imgAssetEntry?.isEntry).toBeUndefined() }) }) diff --git a/playground/backend-integration/frontend/entrypoints/nested/blue.scss b/playground/backend-integration/frontend/entrypoints/nested/blue.scss new file mode 100644 index 00000000000000..67be4f93044cce --- /dev/null +++ b/playground/backend-integration/frontend/entrypoints/nested/blue.scss @@ -0,0 +1,5 @@ +$primary: #cc0000; + +.text-primary { + color: $primary; +} diff --git a/playground/backend-integration/package.json b/playground/backend-integration/package.json index 5c713942228ae6..ead0c3a70d8e10 100644 --- a/playground/backend-integration/package.json +++ b/playground/backend-integration/package.json @@ -8,10 +8,9 @@ "debug": "node --inspect-brk ../../packages/vite/bin/vite", "preview": "vite preview" }, - "dependencies": { - "tailwindcss": "^3.1.3" - }, "devDependencies": { + "sass": "^1.53.0", + "tailwindcss": "^3.1.4", "fast-glob": "^3.2.11" } } diff --git a/playground/css-sourcemap/__tests__/build.spec.ts b/playground/css-sourcemap/__tests__/build.spec.ts deleted file mode 100644 index b30284731a76d9..00000000000000 --- a/playground/css-sourcemap/__tests__/build.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { isBuild, serverLogs } from '~utils' - -test.runIf(isBuild)('should not output sourcemap warning (#4939)', () => { - serverLogs.forEach((log) => { - expect(log).not.toMatch('Sourcemap is likely to be incorrect') - }) -}) diff --git a/playground/css-sourcemap/__tests__/css-sourcemap.spec.ts b/playground/css-sourcemap/__tests__/css-sourcemap.spec.ts new file mode 100644 index 00000000000000..f63ef8946eba40 --- /dev/null +++ b/playground/css-sourcemap/__tests__/css-sourcemap.spec.ts @@ -0,0 +1,443 @@ +import { URL } from 'node:url' +import { + extractSourcemap, + formatSourcemapForSnapshot, + isBuild, + isServe, + page, + serverLogs +} from '~utils' + +test.runIf(isBuild)('should not output sourcemap warning (#4939)', () => { + serverLogs.forEach((log) => { + expect(log).not.toMatch('Sourcemap is likely to be incorrect') + }) +}) + +describe.runIf(isServe)('serve', () => { + const getStyleTagContentIncluding = async (content: string) => { + const styles = await page.$$('style') + for (const style of styles) { + const text = await style.textContent() + if (text.includes(content)) { + return text + } + } + throw new Error('Not found') + } + + test('linked css', async () => { + const res = await page.request.get( + new URL('./linked.css', page.url()).href, + { + headers: { + accept: 'text/css' + } + } + ) + const css = await res.text() + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;", + "sources": [ + "/root/linked.css", + ], + "sourcesContent": [ + ".linked { + color: red; + } + ", + ], + "version": 3, + } + `) + }) + + test('linked css with import', async () => { + const res = await page.request.get( + new URL('./linked-with-import.css', page.url()).href, + { + headers: { + accept: 'text/css' + } + } + ) + const css = await res.text() + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AAAA;EACE,UAAU;AACZ;;ACAA;EACE,UAAU;AACZ", + "sources": [ + "/root/be-imported.css", + "/root/linked-with-import.css", + ], + "sourcesContent": [ + ".be-imported { + color: red; + } + ", + "@import '@/be-imported.css'; + + .linked-with-import { + color: red; + } + ", + ], + "version": 3, + } + `) + }) + + test('imported css', async () => { + const css = await getStyleTagContentIncluding('.imported ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;", + "sources": [ + "/root/imported.css", + ], + "sourcesContent": [ + ".imported { + color: red; + } + ", + ], + "version": 3, + } + `) + }) + + test('imported css with import', async () => { + const css = await getStyleTagContentIncluding('.imported-with-import ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AAAA;EACE,UAAU;AACZ;;ACAA;EACE,UAAU;AACZ", + "sources": [ + "/root/be-imported.css", + "/root/imported-with-import.css", + ], + "sourcesContent": [ + ".be-imported { + color: red; + } + ", + "@import '@/be-imported.css'; + + .imported-with-import { + color: red; + } + ", + ], + "version": 3, + } + `) + }) + + test('imported sass', async () => { + const css = await getStyleTagContentIncluding('.imported-sass ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AACE;EACE", + "sources": [ + "/root/imported.sass", + ], + "sourcesContent": [ + ".imported + &-sass + color: red + ", + ], + "version": 3, + } + `) + }) + + test('imported sass module', async () => { + const css = await getStyleTagContentIncluding('._imported-sass-module_') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AACE;EACE", + "sources": [ + "/root/imported.module.sass", + ], + "sourcesContent": [ + ".imported + &-sass-module + color: red + ", + ], + "version": 3, + } + `) + }) + + test('imported less', async () => { + const css = await getStyleTagContentIncluding('.imported-less ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AACE;EACE", + "sources": [ + "/root/imported.less", + ], + "sourcesContent": [ + ".imported { + &-less { + color: @color; + } + } + ", + ], + "version": 3, + } + `) + }) + + test('imported stylus', async () => { + const css = await getStyleTagContentIncluding('.imported-stylus ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AACE;EACE,cAAM", + "sources": [ + "/root/imported.styl", + ], + "sourcesContent": [ + ".imported + &-stylus + color blue-red-mixed + ", + ], + "version": 3, + } + `) + }) + + test('should not output missing source file warning', () => { + serverLogs.forEach((log) => { + expect(log).not.toMatch(/Sourcemap for .+ points to missing source files/) + }) + }) +}) + +describe.runIf(isServe)('serve', () => { + const getStyleTagContentIncluding = async (content: string) => { + const styles = await page.$$('style') + for (const style of styles) { + const text = await style.textContent() + if (text.includes(content)) { + return text + } + } + throw new Error('Not found') + } + + test('linked css', async () => { + const res = await page.request.get( + new URL('./linked.css', page.url()).href, + { + headers: { + accept: 'text/css' + } + } + ) + const css = await res.text() + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;", + "sources": [ + "/root/linked.css", + ], + "sourcesContent": [ + ".linked { + color: red; + } + ", + ], + "version": 3, + } + `) + }) + + test('linked css with import', async () => { + const res = await page.request.get( + new URL('./linked-with-import.css', page.url()).href, + { + headers: { + accept: 'text/css' + } + } + ) + const css = await res.text() + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AAAA;EACE,UAAU;AACZ;;ACAA;EACE,UAAU;AACZ", + "sources": [ + "/root/be-imported.css", + "/root/linked-with-import.css", + ], + "sourcesContent": [ + ".be-imported { + color: red; + } + ", + "@import '@/be-imported.css'; + + .linked-with-import { + color: red; + } + ", + ], + "version": 3, + } + `) + }) + + test('imported css', async () => { + const css = await getStyleTagContentIncluding('.imported ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;", + "sources": [ + "/root/imported.css", + ], + "sourcesContent": [ + ".imported { + color: red; + } + ", + ], + "version": 3, + } + `) + }) + + test('imported css with import', async () => { + const css = await getStyleTagContentIncluding('.imported-with-import ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AAAA;EACE,UAAU;AACZ;;ACAA;EACE,UAAU;AACZ", + "sources": [ + "/root/be-imported.css", + "/root/imported-with-import.css", + ], + "sourcesContent": [ + ".be-imported { + color: red; + } + ", + "@import '@/be-imported.css'; + + .imported-with-import { + color: red; + } + ", + ], + "version": 3, + } + `) + }) + + test('imported sass', async () => { + const css = await getStyleTagContentIncluding('.imported-sass ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AACE;EACE", + "sources": [ + "/root/imported.sass", + ], + "sourcesContent": [ + ".imported + &-sass + color: red + ", + ], + "version": 3, + } + `) + }) + + test('imported sass module', async () => { + const css = await getStyleTagContentIncluding('._imported-sass-module_') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AACE;EACE", + "sources": [ + "/root/imported.module.sass", + ], + "sourcesContent": [ + ".imported + &-sass-module + color: red + ", + ], + "version": 3, + } + `) + }) + + test('imported less', async () => { + const css = await getStyleTagContentIncluding('.imported-less ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AACE;EACE", + "sources": [ + "/root/imported.less", + ], + "sourcesContent": [ + ".imported { + &-less { + color: @color; + } + } + ", + ], + "version": 3, + } + `) + }) + + test('imported stylus', async () => { + const css = await getStyleTagContentIncluding('.imported-stylus ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` + { + "mappings": "AACE;EACE,cAAM", + "sources": [ + "/root/imported.styl", + ], + "sourcesContent": [ + ".imported + &-stylus + color blue-red-mixed + ", + ], + "version": 3, + } + `) + }) + + test('should not output missing source file warning', () => { + serverLogs.forEach((log) => { + expect(log).not.toMatch(/Sourcemap for .+ points to missing source files/) + }) + }) +}) + +test.runIf(isBuild)('should not output sourcemap warning (#4939)', () => { + serverLogs.forEach((log) => { + expect(log).not.toMatch('Sourcemap is likely to be incorrect') + }) +}) diff --git a/playground/css-sourcemap/__tests__/serve.spec.ts b/playground/css-sourcemap/__tests__/serve.spec.ts deleted file mode 100644 index 6e7392952c3caa..00000000000000 --- a/playground/css-sourcemap/__tests__/serve.spec.ts +++ /dev/null @@ -1,219 +0,0 @@ -import { URL } from 'node:url' -import { - extractSourcemap, - formatSourcemapForSnapshot, - isServe, - page, - serverLogs -} from '~utils' - -describe.runIf(isServe)('serve', () => { - const getStyleTagContentIncluding = async (content: string) => { - const styles = await page.$$('style') - for (const style of styles) { - const text = await style.textContent() - if (text.includes(content)) { - return text - } - } - throw new Error('Not found') - } - - test('linked css', async () => { - const res = await page.request.get( - new URL('./linked.css', page.url()).href, - { - headers: { - accept: 'text/css' - } - } - ) - const css = await res.text() - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;", - "sources": [ - "/root/linked.css", - ], - "sourcesContent": [ - ".linked { - color: red; - } - ", - ], - "version": 3, - } - `) - }) - - test('linked css with import', async () => { - const res = await page.request.get( - new URL('./linked-with-import.css', page.url()).href, - { - headers: { - accept: 'text/css' - } - } - ) - const css = await res.text() - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AAAA;EACE,UAAU;AACZ;;ACAA;EACE,UAAU;AACZ", - "sources": [ - "/root/be-imported.css", - "/root/linked-with-import.css", - ], - "sourcesContent": [ - ".be-imported { - color: red; - } - ", - "@import '@/be-imported.css'; - - .linked-with-import { - color: red; - } - ", - ], - "version": 3, - } - `) - }) - - test('imported css', async () => { - const css = await getStyleTagContentIncluding('.imported ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;", - "sources": [ - "/root/imported.css", - ], - "sourcesContent": [ - ".imported { - color: red; - } - ", - ], - "version": 3, - } - `) - }) - - test('imported css with import', async () => { - const css = await getStyleTagContentIncluding('.imported-with-import ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AAAA;EACE,UAAU;AACZ;;ACAA;EACE,UAAU;AACZ", - "sources": [ - "/root/be-imported.css", - "/root/imported-with-import.css", - ], - "sourcesContent": [ - ".be-imported { - color: red; - } - ", - "@import '@/be-imported.css'; - - .imported-with-import { - color: red; - } - ", - ], - "version": 3, - } - `) - }) - - test('imported sass', async () => { - const css = await getStyleTagContentIncluding('.imported-sass ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AACE;EACE", - "sources": [ - "/root/imported.sass", - ], - "sourcesContent": [ - ".imported - &-sass - color: red - ", - ], - "version": 3, - } - `) - }) - - test('imported sass module', async () => { - const css = await getStyleTagContentIncluding('._imported-sass-module_') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AACE;EACE", - "sources": [ - "/root/imported.module.sass", - ], - "sourcesContent": [ - ".imported - &-sass-module - color: red - ", - ], - "version": 3, - } - `) - }) - - test('imported less', async () => { - const css = await getStyleTagContentIncluding('.imported-less ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AACE;EACE", - "sources": [ - "/root/imported.less", - ], - "sourcesContent": [ - ".imported { - &-less { - color: @color; - } - } - ", - ], - "version": 3, - } - `) - }) - - test('imported stylus', async () => { - const css = await getStyleTagContentIncluding('.imported-stylus ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AACE;EACE,cAAM", - "sources": [ - "/root/imported.styl", - ], - "sourcesContent": [ - ".imported - &-stylus - color blue-red-mixed - ", - ], - "version": 3, - } - `) - }) - - test('should not output missing source file warning', () => { - serverLogs.forEach((log) => { - expect(log).not.toMatch(/Sourcemap for .+ points to missing source files/) - }) - }) -}) diff --git a/playground/css-sourcemap/package.json b/playground/css-sourcemap/package.json index f7a7d480c8ec22..9f71331853f332 100644 --- a/playground/css-sourcemap/package.json +++ b/playground/css-sourcemap/package.json @@ -11,7 +11,7 @@ "devDependencies": { "less": "^4.1.3", "magic-string": "^0.26.2", - "sass": "^1.52.3", + "sass": "^1.53.0", "stylus": "^0.58.1" } } diff --git a/playground/css/__tests__/css.spec.ts b/playground/css/__tests__/css.spec.ts index c51e821ec3d93c..5b7114c07f46cd 100644 --- a/playground/css/__tests__/css.spec.ts +++ b/playground/css/__tests__/css.spec.ts @@ -349,6 +349,12 @@ test('PostCSS dir-dependency', async () => { } }) +// skip because #8278 is reverted +test.skip('import dependency includes css import', async () => { + expect(await getColor('.css-js-dep')).toBe('green') + expect(await getColor('.css-js-dep-module')).toBe('green') +}) + test('URL separation', async () => { const urlSeparated = await page.$('.url-separated') const baseUrl = 'url(images/dog.webp)' @@ -424,5 +430,16 @@ test("relative path rewritten in Less's data-uri", async () => { test('PostCSS source.input.from includes query', async () => { const code = await page.textContent('.postcss-source-input') // should resolve assets - expect(code).toContain('/postcss-source-input.css?query=foo') + expect(code).toContain( + isBuild + ? '/postcss-source-input.css?used&query=foo' + : '/postcss-source-input.css?query=foo' + ) +}) + +// skip because #8278 is reverted +test.skip('aliased css has content', async () => { + expect(await getColor('.aliased')).toBe('blue') + expect(await page.textContent('.aliased-content')).toMatch('.aliased') + expect(await getColor('.aliased-module')).toBe('blue') }) diff --git a/playground/css/__tests__/postcss-plugins-different-dir.spec.ts b/playground/css/__tests__/postcss-plugins-different-dir/postcss-plugins-different-dir.spec.ts similarity index 93% rename from playground/css/__tests__/postcss-plugins-different-dir.spec.ts rename to playground/css/__tests__/postcss-plugins-different-dir/postcss-plugins-different-dir.spec.ts index a1e0b4810c8ee5..346309f7fcc32d 100644 --- a/playground/css/__tests__/postcss-plugins-different-dir.spec.ts +++ b/playground/css/__tests__/postcss-plugins-different-dir/postcss-plugins-different-dir.spec.ts @@ -6,7 +6,7 @@ import { getBgColor, getColor, page, ports } from '~utils' test('postcss plugins in different dir', async () => { const port = ports['css/postcss-plugins-different-dir'] const server = await createServer({ - root: path.join(__dirname, '..', '..', 'tailwind'), + root: path.join(__dirname, '..', '..', '..', 'tailwind'), logLevel: 'silent', server: { port, diff --git a/playground/css/__tests__/postcss-plugins-different-dir/serve.ts b/playground/css/__tests__/postcss-plugins-different-dir/serve.ts new file mode 100644 index 00000000000000..16e7d655f5ec15 --- /dev/null +++ b/playground/css/__tests__/postcss-plugins-different-dir/serve.ts @@ -0,0 +1,10 @@ +// this is automatically detected by playground/vitestSetup.ts and will replace +// the default e2e test serve behavior + +// The server is started in the test, so we need to have a custom serve +// function or a default server will be created +export async function serve(): Promise<{ close(): Promise }> { + return { + close: () => Promise.resolve() + } +} diff --git a/playground/css/aliased/bar.module.css b/playground/css/aliased/bar.module.css new file mode 100644 index 00000000000000..e4e46f3306a02e --- /dev/null +++ b/playground/css/aliased/bar.module.css @@ -0,0 +1,3 @@ +.aliasedModule { + color: blue; +} diff --git a/playground/css/aliased/foo.css b/playground/css/aliased/foo.css new file mode 100644 index 00000000000000..7e32cb71a8f375 --- /dev/null +++ b/playground/css/aliased/foo.css @@ -0,0 +1,3 @@ +.aliased { + color: blue; +} diff --git a/playground/css/css-js-dep/bar.module.css b/playground/css/css-js-dep/bar.module.css new file mode 100644 index 00000000000000..9d62f66761fa3d --- /dev/null +++ b/playground/css/css-js-dep/bar.module.css @@ -0,0 +1,3 @@ +.cssJsDepModule { + color: green; +} diff --git a/playground/css/css-js-dep/foo.css b/playground/css/css-js-dep/foo.css new file mode 100644 index 00000000000000..515ee7693bff3f --- /dev/null +++ b/playground/css/css-js-dep/foo.css @@ -0,0 +1,3 @@ +.css-js-dep { + color: green; +} diff --git a/playground/css/css-js-dep/index.js b/playground/css/css-js-dep/index.js new file mode 100644 index 00000000000000..853094b806fa97 --- /dev/null +++ b/playground/css/css-js-dep/index.js @@ -0,0 +1,4 @@ +import './foo.css' +import barModuleClasses from './bar.module.css' + +export { barModuleClasses } diff --git a/playground/css/css-js-dep/package.json b/playground/css/css-js-dep/package.json new file mode 100644 index 00000000000000..d762f6566fdbdc --- /dev/null +++ b/playground/css/css-js-dep/package.json @@ -0,0 +1,7 @@ +{ + "name": "css-js-dep", + "private": true, + "type": "module", + "version": "1.0.0", + "main": "index.js" +} diff --git a/playground/css/index.html b/playground/css/index.html index 4310967b6ca65b..7e591ee25f0a5b 100644 --- a/playground/css/index.html +++ b/playground/css/index.html @@ -117,6 +117,13 @@

CSS

PostCSS dir-dependency (file 3): this should be grey too

+

+ import dependency includes 'import "./foo.css"': this should be green +

+

+ import dependency includes 'import "./bar.module.css"': this should be green +

+

URL separation preservation: should have valid background-image

@@ -141,6 +148,11 @@

CSS

PostCSS source.input.from. Should include query


+
+  

Aliased

+

import '#alias': this should be blue

+

+  

import '#alias-module': this should be blue

diff --git a/playground/css/main.js b/playground/css/main.js index 90f74c96793c55..c9384b6a79013c 100644 --- a/playground/css/main.js +++ b/playground/css/main.js @@ -47,6 +47,11 @@ text('.charset-css', charset) import './dep.css' import './glob-dep.css' +import { barModuleClasses } from 'css-js-dep' +document + .querySelector('.css-js-dep-module') + .classList.add(barModuleClasses.cssJsDepModule) + function text(el, text) { document.querySelector(el).textContent = text } @@ -92,3 +97,10 @@ text('.imported-css-globEager', JSON.stringify(globEager, null, 2)) import postcssSourceInput from './postcss-source-input.css?query=foo' text('.postcss-source-input', postcssSourceInput) + +import aliasContent from '#alias' +text('.aliased-content', aliasContent) +import aliasModule from '#alias-module' +document + .querySelector('.aliased-module') + .classList.add(aliasModule.aliasedModule) diff --git a/playground/css/package.json b/playground/css/package.json index 9663843f43097e..11dc33c48f7aa2 100644 --- a/playground/css/package.json +++ b/playground/css/package.json @@ -13,10 +13,11 @@ }, "devDependencies": { "css-dep": "link:./css-dep", + "css-js-dep": "file:./css-js-dep", "fast-glob": "^3.2.11", "less": "^4.1.3", "postcss-nested": "^5.0.6", - "sass": "^1.52.3", + "sass": "^1.53.0", "stylus": "^0.58.1" } } diff --git a/playground/css/postcss-caching/serve.ts b/playground/css/postcss-caching/serve.ts new file mode 100644 index 00000000000000..16e7d655f5ec15 --- /dev/null +++ b/playground/css/postcss-caching/serve.ts @@ -0,0 +1,10 @@ +// this is automatically detected by playground/vitestSetup.ts and will replace +// the default e2e test serve behavior + +// The server is started in the test, so we need to have a custom serve +// function or a default server will be created +export async function serve(): Promise<{ close(): Promise }> { + return { + close: () => Promise.resolve() + } +} diff --git a/playground/css/vite.config.js b/playground/css/vite.config.js index 639a1302debb88..c501213b47cded 100644 --- a/playground/css/vite.config.js +++ b/playground/css/vite.config.js @@ -10,7 +10,9 @@ module.exports = { resolve: { alias: { '@': __dirname, - spacefolder: __dirname + '/folder with space' + spacefolder: __dirname + '/folder with space', + '#alias': __dirname + '/aliased/foo.css', + '#alias-module': __dirname + '/aliased/bar.module.css' } }, css: { diff --git a/playground/dynamic-import/__tests__/dynamic-import.spec.ts b/playground/dynamic-import/__tests__/dynamic-import.spec.ts index 1eecd801f200c9..86c42a4d79a7e5 100644 --- a/playground/dynamic-import/__tests__/dynamic-import.spec.ts +++ b/playground/dynamic-import/__tests__/dynamic-import.spec.ts @@ -24,18 +24,18 @@ test('should load data URL of `data:`', async () => { await untilUpdated(() => page.textContent('.view'), 'data', true) }) -test('should have same reference on static and dynamic js import', async () => { +test('should have same reference on static and dynamic js import, .mxd', async () => { await page.click('.mxd') await untilUpdated(() => page.textContent('.view'), 'true', true) }) // in this case, it is not possible to detect the correct module -test('should have same reference on static and dynamic js import', async () => { +test('should have same reference on static and dynamic js import, .mxd2', async () => { await page.click('.mxd2') await untilUpdated(() => page.textContent('.view'), 'false', true) }) -test('should have same reference on static and dynamic js import', async () => { +test('should have same reference on static and dynamic js import, .mxdjson', async () => { await page.click('.mxdjson') await untilUpdated(() => page.textContent('.view'), 'true', true) }) diff --git a/playground/dynamic-import/mxd.js b/playground/dynamic-import/files/mxd.js similarity index 100% rename from playground/dynamic-import/mxd.js rename to playground/dynamic-import/files/mxd.js diff --git a/playground/dynamic-import/mxd.json b/playground/dynamic-import/files/mxd.json similarity index 100% rename from playground/dynamic-import/mxd.json rename to playground/dynamic-import/files/mxd.json diff --git a/playground/dynamic-import/nested/index.js b/playground/dynamic-import/nested/index.js index 31dcd07560836f..0b229055b32b7c 100644 --- a/playground/dynamic-import/nested/index.js +++ b/playground/dynamic-import/nested/index.js @@ -1,5 +1,5 @@ -import mxdStatic from '../mxd' -import mxdStaticJSON from '../mxd.json' +import mxdStatic from '../files/mxd' +import mxdStaticJSON from '../files/mxd.json' async function setView(view) { const { msg } = await import(`../views/${view}.js`) @@ -18,7 +18,7 @@ document.querySelector('.baz').addEventListener('click', async () => { // full dynamic const arr = ['qux.js'] -const view = `/${arr[0]}` +const view = `/views/${arr[0]}` document.querySelector('.qux').addEventListener('click', async () => { const { msg } = await import(/*@vite-ignore*/ view) text('.view', msg) @@ -27,12 +27,12 @@ document.querySelector('.qux').addEventListener('click', async () => { // mixed static and dynamic document.querySelector('.mxd').addEventListener('click', async () => { const view = 'mxd' - const { default: mxdDynamic } = await import(`../${view}.js`) + const { default: mxdDynamic } = await import(`../files/${view}.js`) text('.view', mxdStatic === mxdDynamic) }) document.querySelector('.mxd2').addEventListener('click', async () => { - const test = { jss: '../mxd.js' } + const test = { jss: '../files/mxd.js' } const ttest = test const view = 'mxd' const { default: mxdDynamic } = await import(/*@vite-ignore*/ test.jss) @@ -41,7 +41,7 @@ document.querySelector('.mxd2').addEventListener('click', async () => { document.querySelector('.mxdjson').addEventListener('click', async () => { const view = 'mxd' - const { default: mxdDynamicJSON } = await import(`../${view}.json`) + const { default: mxdDynamicJSON } = await import(`../files/${view}.json`) text('.view', mxdStaticJSON === mxdDynamicJSON) }) diff --git a/playground/dynamic-import/qux.js b/playground/dynamic-import/views/qux.js similarity index 100% rename from playground/dynamic-import/qux.js rename to playground/dynamic-import/views/qux.js diff --git a/playground/dynamic-import/vite.config.js b/playground/dynamic-import/vite.config.js index b12d8347287a2f..96baaa74798686 100644 --- a/playground/dynamic-import/vite.config.js +++ b/playground/dynamic-import/vite.config.js @@ -7,17 +7,19 @@ module.exports = vite.defineConfig({ { name: 'copy', writeBundle() { + fs.mkdirSync(path.resolve(__dirname, 'dist/views')) + fs.mkdirSync(path.resolve(__dirname, 'dist/files')) fs.copyFileSync( - path.resolve(__dirname, 'qux.js'), - path.resolve(__dirname, 'dist/qux.js') + path.resolve(__dirname, 'views/qux.js'), + path.resolve(__dirname, 'dist/views/qux.js') ) fs.copyFileSync( - path.resolve(__dirname, 'mxd.js'), - path.resolve(__dirname, 'dist/mxd.js') + path.resolve(__dirname, 'files/mxd.js'), + path.resolve(__dirname, 'dist/files/mxd.js') ) fs.copyFileSync( - path.resolve(__dirname, 'mxd.json'), - path.resolve(__dirname, 'dist/mxd.json') + path.resolve(__dirname, 'files/mxd.json'), + path.resolve(__dirname, 'dist/files/mxd.json') ) } } diff --git a/playground/env/.env b/playground/env/.env index ad0e78511b8662..ade94e520ffbcf 100644 --- a/playground/env/.env +++ b/playground/env/.env @@ -1,3 +1,4 @@ VITE_CUSTOM_ENV_VARIABLE=1 CUSTOM_PREFIX_ENV_VARIABLE=1 -VITE_EFFECTIVE_MODE_FILE_NAME=.env \ No newline at end of file +VITE_EFFECTIVE_MODE_FILE_NAME=.env +VITE_BOOL=true \ No newline at end of file diff --git a/playground/env/__tests__/env.spec.ts b/playground/env/__tests__/env.spec.ts index 4583c9039116c8..e093d4bc414353 100644 --- a/playground/env/__tests__/env.spec.ts +++ b/playground/env/__tests__/env.spec.ts @@ -36,6 +36,10 @@ test('inline variables', async () => { ) }) +test('bool', async () => { + expect(await page.textContent('.bool')).toBe('boolean') +}) + test('NODE_ENV', async () => { expect(await page.textContent('.node-env')).toBe(process.env.NODE_ENV) }) diff --git a/playground/env/index.html b/playground/env/index.html index a7553eeb181f73..46752dbc2c5ab1 100644 --- a/playground/env/index.html +++ b/playground/env/index.html @@ -12,6 +12,7 @@

Environment Variables

import.meta.env.VITE_EFFECTIVE_MODE_FILE_NAME:

import.meta.env.VITE_INLINE:

+

typeof import.meta.env.VITE_BOOL:

process.env.NODE_ENV:

import.meta.env:

import.meta.url:

@@ -25,6 +26,7 @@

Environment Variables

text('.custom-prefix', import.meta.env.CUSTOM_PREFIX_ENV_VARIABLE) text('.mode-file', import.meta.env.VITE_EFFECTIVE_MODE_FILE_NAME) text('.inline', import.meta.env.VITE_INLINE) + text('.bool', typeof import.meta.env.VITE_BOOL) text('.node-env', process.env.NODE_ENV) text('.env-object', JSON.stringify(import.meta.env, null, 2)) diff --git a/playground/env/vite.config.js b/playground/env/vite.config.js index c96c8f84a321ef..7d3f15e41a6136 100644 --- a/playground/env/vite.config.js +++ b/playground/env/vite.config.js @@ -5,5 +5,8 @@ module.exports = defineConfig({ envPrefix: ['VITE_', 'CUSTOM_PREFIX_'], build: { outDir: 'dist/env' + }, + define: { + 'import.meta.env.VITE_BOOL': true } }) diff --git a/playground/external/dep-that-imports-vue/package.json b/playground/external/dep-that-imports-vue/package.json index 2c088c73cbb035..0fcd4b186a979b 100644 --- a/playground/external/dep-that-imports-vue/package.json +++ b/playground/external/dep-that-imports-vue/package.json @@ -1,6 +1,7 @@ { "name": "@vitejs/dep-that-imports-vue", - "version": "0.0.1", + "private": true, + "version": "0.0.0", "dependencies": { "vue": "^3.2.37" } diff --git a/playground/external/dep-that-requires-vue/package.json b/playground/external/dep-that-requires-vue/package.json index a12c43b40fb282..a71847a02bb969 100644 --- a/playground/external/dep-that-requires-vue/package.json +++ b/playground/external/dep-that-requires-vue/package.json @@ -1,6 +1,7 @@ { "name": "@vitejs/dep-that-requires-vue", - "version": "0.0.1", + "private": true, + "version": "0.0.0", "dependencies": { "vue": "^3.2.37" } diff --git a/playground/external/vite.config.js b/playground/external/vite.config.js index f6126b069cf49d..fde8e763f810e0 100644 --- a/playground/external/vite.config.js +++ b/playground/external/vite.config.js @@ -5,6 +5,9 @@ export default defineConfig({ minify: false, rollupOptions: { external: ['vue'] + }, + commonjsOptions: { + esmExternals: ['vue'] } } }) diff --git a/playground/fs-serve/__tests__/fs-serve.spec.ts b/playground/fs-serve/__tests__/fs-serve.spec.ts index 747b46ecbb8287..2111cac80cc4e7 100644 --- a/playground/fs-serve/__tests__/fs-serve.spec.ts +++ b/playground/fs-serve/__tests__/fs-serve.spec.ts @@ -35,6 +35,13 @@ describe.runIf(isServe)('main', () => { expect(await page.textContent('.unsafe-fetch-status')).toBe('403') }) + test('unsafe fetch with special characters (#8498)', async () => { + expect(await page.textContent('.unsafe-fetch-8498')).toMatch( + '403 Restricted' + ) + expect(await page.textContent('.unsafe-fetch-8498-status')).toBe('403') + }) + test('safe fs fetch', async () => { expect(await page.textContent('.safe-fs-fetch')).toBe(stringified) expect(await page.textContent('.safe-fs-fetch-status')).toBe('200') @@ -52,6 +59,11 @@ describe.runIf(isServe)('main', () => { expect(await page.textContent('.unsafe-fs-fetch-status')).toBe('403') }) + test('unsafe fs fetch with special characters (#8498)', async () => { + expect(await page.textContent('.unsafe-fs-fetch-8498')).toBe('') + expect(await page.textContent('.unsafe-fs-fetch-8498-status')).toBe('403') + }) + test('nested entry', async () => { expect(await page.textContent('.nested-entry')).toBe('foobar') }) diff --git a/playground/fs-serve/root/src/index.html b/playground/fs-serve/root/src/index.html index 951e14ad2cce91..6939e0f4b09ed9 100644 --- a/playground/fs-serve/root/src/index.html +++ b/playground/fs-serve/root/src/index.html @@ -17,6 +17,8 @@

Safe Fetch Subdirectory

Unsafe Fetch


 

+

+

 
 

Safe /@fs/ Fetch


@@ -27,6 +29,8 @@ 

Safe /@fs/ Fetch

Unsafe /@fs/ Fetch


 

+

+

 
 

Nested Entry


@@ -83,6 +87,19 @@ 

Denied

console.error(e) }) + // outside of allowed dir with special characters #8498 + fetch('/src/%2e%2e%2funsafe%2etxt') + .then((r) => { + text('.unsafe-fetch-8498-status', r.status) + return r.text() + }) + .then((data) => { + text('.unsafe-fetch-8498', data) + }) + .catch((e) => { + console.error(e) + }) + // imported before, should be treated as safe fetch('/@fs/' + ROOT + '/safe.json') .then((r) => { @@ -106,6 +123,16 @@

Denied

console.error(e) }) + // outside root with special characters #8498 + fetch('/@fs/' + ROOT + '/root/src/%2e%2e%2f%2e%2e%2funsafe%2ejson') + .then((r) => { + text('.unsafe-fs-fetch-8498-status', r.status) + return r.json() + }) + .then((data) => { + text('.unsafe-fs-fetch-8498', JSON.stringify(data)) + }) + // not imported before, inside root with special characters, treated as safe fetch( '/@fs/' + diff --git a/playground/glob-import/__tests__/glob-import.spec.ts b/playground/glob-import/__tests__/glob-import.spec.ts index 70f7ec252280a9..7b9b0aa622381e 100644 --- a/playground/glob-import/__tests__/glob-import.spec.ts +++ b/playground/glob-import/__tests__/glob-import.spec.ts @@ -1,11 +1,4 @@ -import { - addFile, - editFile, - isBuild, - page, - removeFile, - untilUpdated -} from '~utils' +import { addFile, editFile, isBuild, page, removeFile, withRetry } from '~utils' const filteredResult = { './alias.js': { @@ -16,21 +9,12 @@ const filteredResult = { } } -// json exports key order is altered during build, but it doesn't matter in -// terms of behavior since module exports are not ordered anyway -const json = isBuild - ? { - msg: 'baz', - default: { - msg: 'baz' - } - } - : { - default: { - msg: 'baz' - }, - msg: 'baz' - } +const json = { + msg: 'baz', + default: { + msg: 'baz' + } +} const globWithAlias = { '/dir/alias.js': { @@ -44,6 +28,13 @@ const allResult = { default: 'hi' }, '/dir/baz.json': json, + '/dir/foo.css': isBuild + ? { + default: '.foo{color:#00f}\n' + } + : { + default: '.foo {\n color: blue;\n}\n' + }, '/dir/foo.js': { msg: 'foo' }, @@ -81,12 +72,18 @@ const relativeRawResult = { } test('should work', async () => { - expect(await page.textContent('.result')).toBe( - JSON.stringify(allResult, null, 2) - ) - expect(await page.textContent('.result-node_modules')).toBe( - JSON.stringify(nodeModulesResult, null, 2) - ) + await withRetry(async () => { + const actual = await page.textContent('.result') + expect(JSON.parse(actual)).toStrictEqual(allResult) + }, true) + await withRetry(async () => { + const actualEager = await page.textContent('.result-eager') + expect(JSON.parse(actualEager)).toStrictEqual(allResult) + }, true) + await withRetry(async () => { + const actualNodeModules = await page.textContent('.result-node_modules') + expect(JSON.parse(actualNodeModules)).toStrictEqual(nodeModulesResult) + }, true) }) test('import glob raw', async () => { @@ -109,55 +106,49 @@ test('unassigned import processes', async () => { if (!isBuild) { test('hmr for adding/removing files', async () => { + const resultElement = page.locator('.result') + addFile('dir/a.js', '') - await untilUpdated( - () => page.textContent('.result'), - JSON.stringify( - { - '/dir/a.js': {}, - ...allResult, - '/dir/index.js': { - ...allResult['/dir/index.js'], - modules: { - './a.js': {}, - ...allResult['/dir/index.js'].modules - } + await withRetry(async () => { + const actualAdd = await resultElement.textContent() + expect(JSON.parse(actualAdd)).toStrictEqual({ + '/dir/a.js': {}, + ...allResult, + '/dir/index.js': { + ...allResult['/dir/index.js'], + modules: { + './a.js': {}, + ...allResult['/dir/index.js'].modules } - }, - null, - 2 - ) - ) + } + }) + }) // edit the added file editFile('dir/a.js', () => 'export const msg ="a"') - await untilUpdated( - () => page.textContent('.result'), - JSON.stringify( - { - '/dir/a.js': { - msg: 'a' - }, - ...allResult, - '/dir/index.js': { - ...allResult['/dir/index.js'], - modules: { - './a.js': { - msg: 'a' - }, - ...allResult['/dir/index.js'].modules - } - } + await withRetry(async () => { + const actualEdit = await resultElement.textContent() + expect(JSON.parse(actualEdit)).toStrictEqual({ + '/dir/a.js': { + msg: 'a' }, - null, - 2 - ) - ) + ...allResult, + '/dir/index.js': { + ...allResult['/dir/index.js'], + modules: { + './a.js': { + msg: 'a' + }, + ...allResult['/dir/index.js'].modules + } + } + }) + }) removeFile('dir/a.js') - await untilUpdated( - () => page.textContent('.result'), - JSON.stringify(allResult, null, 2) - ) + await withRetry(async () => { + const actualRemove = await resultElement.textContent() + expect(JSON.parse(actualRemove)).toStrictEqual(allResult) + }) }) } diff --git a/playground/glob-import/dir/foo.css b/playground/glob-import/dir/foo.css new file mode 100644 index 00000000000000..94ff8d4b4895c6 --- /dev/null +++ b/playground/glob-import/dir/foo.css @@ -0,0 +1,3 @@ +.foo { + color: blue; +} diff --git a/playground/glob-import/index.html b/playground/glob-import/index.html index 6cff2aa0965c59..ca00c065e7402d 100644 --- a/playground/glob-import/index.html +++ b/playground/glob-import/index.html @@ -1,4 +1,5 @@

+

 

 

 

@@ -35,6 +36,12 @@
      * */
   )
   useImports(modules, '.result')
+  const eagerModules = import.meta.glob('/dir/**', { eager: true })
+  document.querySelector('.result-eager').textContent = JSON.stringify(
+    eagerModules,
+    null,
+    2
+  )
 
   const nodeModules = import.meta.glob('/dir/node_modules/**')
   useImports(nodeModules, '.result-node_modules')
diff --git a/playground/js-sourcemap/__tests__/build.spec.ts b/playground/js-sourcemap/__tests__/build.spec.ts
deleted file mode 100644
index b30284731a76d9..00000000000000
--- a/playground/js-sourcemap/__tests__/build.spec.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { isBuild, serverLogs } from '~utils'
-
-test.runIf(isBuild)('should not output sourcemap warning (#4939)', () => {
-  serverLogs.forEach((log) => {
-    expect(log).not.toMatch('Sourcemap is likely to be incorrect')
-  })
-})
diff --git a/playground/js-sourcemap/__tests__/serve.spec.ts b/playground/js-sourcemap/__tests__/js-sourcemap.spec.ts
similarity index 86%
rename from playground/js-sourcemap/__tests__/serve.spec.ts
rename to playground/js-sourcemap/__tests__/js-sourcemap.spec.ts
index 5cd5c0e448b72f..a7ecbdf145af4a 100644
--- a/playground/js-sourcemap/__tests__/serve.spec.ts
+++ b/playground/js-sourcemap/__tests__/js-sourcemap.spec.ts
@@ -44,3 +44,9 @@ if (!isBuild) {
     expect(true).toBe(true)
   })
 }
+
+test.runIf(isBuild)('should not output sourcemap warning (#4939)', () => {
+  serverLogs.forEach((log) => {
+    expect(log).not.toMatch('Sourcemap is likely to be incorrect')
+  })
+})
diff --git a/playground/lib/vite.config.js b/playground/lib/vite.config.js
index f4cacb9d73d3cc..d9fb932f535ebb 100644
--- a/playground/lib/vite.config.js
+++ b/playground/lib/vite.config.js
@@ -5,6 +5,12 @@ const path = require('path')
  * @type {import('vite').UserConfig}
  */
 module.exports = {
+  esbuild: {
+    supported: {
+      // Force esbuild inject helpers to test regex
+      'object-rest-spread': false
+    }
+  },
   build: {
     rollupOptions: {
       output: {
diff --git a/playground/minify/__tests__/minify.spec.ts b/playground/minify/__tests__/minify.spec.ts
new file mode 100644
index 00000000000000..b8d4e458e968b8
--- /dev/null
+++ b/playground/minify/__tests__/minify.spec.ts
@@ -0,0 +1,18 @@
+import fs from 'node:fs'
+import path from 'node:path'
+import { expect, test } from 'vitest'
+import { isBuild, readFile, testDir } from '~utils'
+
+test.runIf(isBuild)('no minifySyntax', () => {
+  const assetsDir = path.resolve(testDir, 'dist/assets')
+  const files = fs.readdirSync(assetsDir)
+
+  const jsFile = files.find((f) => f.endsWith('.js'))
+  const jsContent = readFile(path.resolve(assetsDir, jsFile))
+
+  const cssFile = files.find((f) => f.endsWith('.css'))
+  const cssContent = readFile(path.resolve(assetsDir, cssFile))
+
+  expect(jsContent).toContain('{console.log("hello world")}')
+  expect(cssContent).toContain('color:#ff0000')
+})
diff --git a/playground/minify/index.html b/playground/minify/index.html
new file mode 100644
index 00000000000000..1b599018cd92b6
--- /dev/null
+++ b/playground/minify/index.html
@@ -0,0 +1,3 @@
+

Minify

+ + diff --git a/playground/minify/main.js b/playground/minify/main.js new file mode 100644 index 00000000000000..e77c8a997b3314 --- /dev/null +++ b/playground/minify/main.js @@ -0,0 +1,5 @@ +import './test.css' + +if (window) { + console.log('hello world') +} diff --git a/playground/minify/package.json b/playground/minify/package.json new file mode 100644 index 00000000000000..e46abf8c4b218c --- /dev/null +++ b/playground/minify/package.json @@ -0,0 +1,11 @@ +{ + "name": "test-minify", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "vite build", + "debug": "node --inspect-brk ../../packages/vite/bin/vite", + "preview": "vite preview" + } +} diff --git a/playground/minify/test.css b/playground/minify/test.css new file mode 100644 index 00000000000000..dab6f886b3cf82 --- /dev/null +++ b/playground/minify/test.css @@ -0,0 +1,4 @@ +h1 { + /* do not minify as red text */ + color: #ff0000; +} diff --git a/playground/minify/vite.config.js b/playground/minify/vite.config.js new file mode 100644 index 00000000000000..43eca91a5c0f30 --- /dev/null +++ b/playground/minify/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' + +export default defineConfig({ + esbuild: { + minifySyntax: false + } +}) diff --git a/playground/multiple-entrypoints/package.json b/playground/multiple-entrypoints/package.json index 555d5b9021ab2c..56a0c90d402414 100644 --- a/playground/multiple-entrypoints/package.json +++ b/playground/multiple-entrypoints/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "fast-glob": "^3.2.11", - "sass": "^1.52.3" + "sass": "^1.53.0" } } diff --git a/playground/optimize-deps/__tests__/optimize-deps.spec.ts b/playground/optimize-deps/__tests__/optimize-deps.spec.ts index df1713b3fc76f8..b0af6debca526e 100644 --- a/playground/optimize-deps/__tests__/optimize-deps.spec.ts +++ b/playground/optimize-deps/__tests__/optimize-deps.spec.ts @@ -103,11 +103,16 @@ test('vue + vuex', async () => { expect(await page.textContent('.vue')).toMatch(`[success]`) }) -test('esbuild-plugin', async () => { - expect(await page.textContent('.esbuild-plugin')).toMatch( - `Hello from an esbuild plugin` - ) -}) +// When we use the Rollup CommonJS plugin instead of esbuild prebundling, +// the esbuild plugins won't apply to dependencies +test.skipIf(isBuild && process.env.VITE_TEST_LEGACY_CJS_PLUGIN)( + 'esbuild-plugin', + async () => { + expect(await page.textContent('.esbuild-plugin')).toMatch( + `Hello from an esbuild plugin` + ) + } +) test('import from hidden dir', async () => { expect(await page.textContent('.hidden-dir')).toBe('hello!') diff --git a/playground/optimize-deps/non-optimizable-include/index.css b/playground/optimize-deps/non-optimizable-include/index.css new file mode 100644 index 00000000000000..161363ab3641a8 --- /dev/null +++ b/playground/optimize-deps/non-optimizable-include/index.css @@ -0,0 +1,4 @@ +@font-face { + font-family: 'Not Real Sans'; + src: url('./i-throw-if-you-optimize-this-file.woff') format('woff'); +} diff --git a/playground/optimize-deps/non-optimizable-include/package.json b/playground/optimize-deps/non-optimizable-include/package.json new file mode 100644 index 00000000000000..b49a3f7a4c004d --- /dev/null +++ b/playground/optimize-deps/non-optimizable-include/package.json @@ -0,0 +1,9 @@ +{ + "name": "non-optimizable-include", + "private": true, + "type": "module", + "version": "0.0.0", + "exports": { + ".": "./index.css" + } +} diff --git a/playground/optimize-deps/vite.config.js b/playground/optimize-deps/vite.config.js index e268510d5c8d76..0b857173fe1e83 100644 --- a/playground/optimize-deps/vite.config.js +++ b/playground/optimize-deps/vite.config.js @@ -16,7 +16,12 @@ module.exports = { }, optimizeDeps: { - include: ['dep-linked-include', 'nested-exclude > nested-include'], + include: [ + 'dep-linked-include', + 'nested-exclude > nested-include', + // will throw if optimized (should log warning instead) + 'non-optimizable-include' + ], exclude: ['nested-exclude'], esbuildOptions: { plugins: [ @@ -72,7 +77,7 @@ module.exports = { apply: 'build', enforce: 'pre', load(id) { - if (id === '__vite-browser-external:fs') { + if (id === '__vite-browser-external') { return `export default {}; export function readFileSync() {}` } } diff --git a/playground/preload/dep-a/index.js b/playground/preload/dep-a/index.js new file mode 100644 index 00000000000000..42c97c2d826ec6 --- /dev/null +++ b/playground/preload/dep-a/index.js @@ -0,0 +1 @@ +export const msgFromA = 'From dep-a' diff --git a/playground/preload/dep-a/package.json b/playground/preload/dep-a/package.json new file mode 100644 index 00000000000000..d45aab10cf9379 --- /dev/null +++ b/playground/preload/dep-a/package.json @@ -0,0 +1,7 @@ +{ + "name": "dep-a", + "private": true, + "version": "0.0.0", + "type": "module", + "main": "index.js" +} diff --git a/playground/preload/dep-including-a/index.js b/playground/preload/dep-including-a/index.js new file mode 100644 index 00000000000000..4fd1e37a11dd09 --- /dev/null +++ b/playground/preload/dep-including-a/index.js @@ -0,0 +1,3 @@ +export { msgFromA } from 'dep-a' + +export const msg = 'From dep-including-a' diff --git a/playground/preload/dep-including-a/package.json b/playground/preload/dep-including-a/package.json new file mode 100644 index 00000000000000..0b6febf47c6266 --- /dev/null +++ b/playground/preload/dep-including-a/package.json @@ -0,0 +1,10 @@ +{ + "name": "dep-including-a", + "private": true, + "version": "0.0.0", + "type": "module", + "main": "index.js", + "dependencies": { + "dep-a": "file:../dep-a" + } +} diff --git a/playground/preload/index.html b/playground/preload/index.html index affed21f9791cf..5b6acc4190a6d9 100644 --- a/playground/preload/index.html +++ b/playground/preload/index.html @@ -3,6 +3,8 @@ import { createApp } from 'vue' import router from './router.js' import App from './src/App.vue' + import { msgFromA } from 'dep-a' + console.log(msgFromA) createApp(App).use(router).mount('#app') diff --git a/playground/preload/package.json b/playground/preload/package.json index 2b76252c1e04ff..c72b346dece591 100644 --- a/playground/preload/package.json +++ b/playground/preload/package.json @@ -14,6 +14,8 @@ }, "devDependencies": { "@vitejs/plugin-vue": "workspace:*", - "terser": "^5.14.1" + "terser": "^5.14.1", + "dep-a": "file:./dep-a", + "dep-including-a": "file:./dep-including-a" } } diff --git a/playground/preload/src/components/About.vue b/playground/preload/src/components/About.vue index 2e73e80099446b..b19a3e3f196b5e 100644 --- a/playground/preload/src/components/About.vue +++ b/playground/preload/src/components/About.vue @@ -1,9 +1,13 @@ + + - - diff --git a/playground/react-classic/App.jsx b/playground/react-classic/App.jsx new file mode 100644 index 00000000000000..1de7461b163776 --- /dev/null +++ b/playground/react-classic/App.jsx @@ -0,0 +1,30 @@ +import { useState } from 'react' + +function App() { + const [count, setCount] = useState(0) + return ( +
+
+

Hello Vite + React

+

+ +

+

+ Edit App.jsx and save to test HMR updates. +

+ + Learn React + +
+
+ ) +} + +export default App diff --git a/playground/react-classic/__tests__/react.spec.ts b/playground/react-classic/__tests__/react.spec.ts new file mode 100644 index 00000000000000..8381992d59df3d --- /dev/null +++ b/playground/react-classic/__tests__/react.spec.ts @@ -0,0 +1,38 @@ +import { editFile, isServe, page, untilUpdated } from '~utils' + +test('should render', async () => { + expect(await page.textContent('h1')).toMatch('Hello Vite + React') +}) + +test('should update', async () => { + expect(await page.textContent('button')).toMatch('count is: 0') + await page.click('button') + expect(await page.textContent('button')).toMatch('count is: 1') +}) + +test('should hmr', async () => { + editFile('App.jsx', (code) => code.replace('Vite + React', 'Updated')) + await untilUpdated(() => page.textContent('h1'), 'Hello Updated') + // preserve state + expect(await page.textContent('button')).toMatch('count is: 1') +}) + +test.runIf(isServe)( + 'should have annotated jsx with file location metadata', + async () => { + const meta = await page.evaluate(() => { + const button = document.querySelector('button') + const key = Object.keys(button).find( + (key) => key.indexOf('__reactFiber') === 0 + ) + return button[key]._debugSource + }) + // If the evaluate call doesn't crash, and the returned metadata has + // the expected fields, we're good. + expect(Object.keys(meta).sort()).toEqual([ + 'columnNumber', + 'fileName', + 'lineNumber' + ]) + } +) diff --git a/playground/react-classic/index.html b/playground/react-classic/index.html new file mode 100644 index 00000000000000..f0015ceb9829a3 --- /dev/null +++ b/playground/react-classic/index.html @@ -0,0 +1,10 @@ +
+ diff --git a/playground/react-classic/package.json b/playground/react-classic/package.json new file mode 100644 index 00000000000000..668c88fee47660 --- /dev/null +++ b/playground/react-classic/package.json @@ -0,0 +1,23 @@ +{ + "name": "test-react-classic", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "vite build", + "debug": "node --inspect-brk ../../packages/vite/bin/vite", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@vitejs/plugin-react": "workspace:*" + }, + "babel": { + "presets": [ + "@babel/preset-env" + ] + } +} diff --git a/playground/react-classic/vite.config.ts b/playground/react-classic/vite.config.ts new file mode 100644 index 00000000000000..a2044e99ae2f3c --- /dev/null +++ b/playground/react-classic/vite.config.ts @@ -0,0 +1,16 @@ +import react from '@vitejs/plugin-react' +import type { UserConfig } from 'vite' + +const config: UserConfig = { + plugins: [ + react({ + jsxRuntime: 'classic' + }) + ], + build: { + // to make tests faster + minify: false + } +} + +export default config diff --git a/playground/react-emotion/package.json b/playground/react-emotion/package.json index 667c57cf2a91bb..7ef711da793e2c 100644 --- a/playground/react-emotion/package.json +++ b/playground/react-emotion/package.json @@ -15,7 +15,7 @@ "react-switch": "^7.0.0" }, "devDependencies": { - "@babel/plugin-proposal-pipeline-operator": "^7.18.2", + "@babel/plugin-proposal-pipeline-operator": "^7.18.6", "@emotion/babel-plugin": "^11.9.2", "@vitejs/plugin-react": "workspace:*" }, diff --git a/playground/resolve-config/__tests__/resolve-config.spec.ts b/playground/resolve-config/__tests__/resolve-config.spec.ts index 324d797ea31ad8..6682deb9805a34 100644 --- a/playground/resolve-config/__tests__/resolve-config.spec.ts +++ b/playground/resolve-config/__tests__/resolve-config.spec.ts @@ -49,4 +49,20 @@ describe.runIf(isBuild)('build', () => { build('ts-module') expect(getDistFile('ts-module', 'js')).toContain('console.log(true)') }) + it('loads vite.config.mts', () => { + build('mts') + expect(getDistFile('mts', 'mjs')).toContain('console.log(true)') + }) + it('loads vite.config.mts with package#type module', () => { + build('mts-module') + expect(getDistFile('mts-module', 'js')).toContain('console.log(true)') + }) + it('loads vite.config.cts', () => { + build('cts') + expect(getDistFile('cts', 'mjs')).toContain('console.log(true)') + }) + it('loads vite.config.cts with package#type module', () => { + build('cts-module') + expect(getDistFile('cts-module', 'js')).toContain('console.log(true)') + }) }) diff --git a/playground/resolve-config/__tests__/serve.ts b/playground/resolve-config/__tests__/serve.ts index d61ee70b7df50a..b2cc1ccc1e1e77 100644 --- a/playground/resolve-config/__tests__/serve.ts +++ b/playground/resolve-config/__tests__/serve.ts @@ -5,7 +5,7 @@ import path from 'node:path' import fs from 'fs-extra' import { isBuild, rootDir } from '~utils' -const configNames = ['js', 'cjs', 'mjs', 'ts'] +const configNames = ['js', 'cjs', 'mjs', 'ts', 'mts', 'cts'] export async function serve() { if (!isBuild) return @@ -18,9 +18,9 @@ export async function serve() { const pathToConf = fromTestDir(configName, `vite.config.${configName}`) await fs.copy(fromTestDir('root'), fromTestDir(configName)) - await fs.rename(fromTestDir(configName, 'vite.config.js'), pathToConf) + await fs.rename(fromTestDir(configName, 'vite.config.ts'), pathToConf) - if (configName === 'cjs') { + if (['cjs', 'cts'].includes(configName)) { const conf = await fs.readFile(pathToConf, 'utf8') await fs.writeFile( pathToConf, @@ -28,6 +28,12 @@ export async function serve() { ) } + // Remove TS annotation for plain JavaScript file. + if (configName.endsWith('js')) { + const conf = await fs.readFile(pathToConf, 'utf8') + await fs.writeFile(pathToConf, conf.replace(': boolean', '')) + } + // copy directory and add package.json with "type": "module" await fs.copy(fromTestDir(configName), fromTestDir(`${configName}-module`)) await fs.writeJSON(fromTestDir(`${configName}-module`, 'package.json'), { diff --git a/playground/resolve-config/root/vite.config.js b/playground/resolve-config/root/vite.config.ts similarity index 69% rename from playground/resolve-config/root/vite.config.js rename to playground/resolve-config/root/vite.config.ts index ed72046f940d59..a6ad03b2122361 100644 --- a/playground/resolve-config/root/vite.config.js +++ b/playground/resolve-config/root/vite.config.ts @@ -1,5 +1,6 @@ +const __CONFIG_LOADED__: boolean = true export default { - define: { __CONFIG_LOADED__: true }, + define: { __CONFIG_LOADED__ }, logLevel: 'silent', build: { minify: false, diff --git a/playground/resolve/package.json b/playground/resolve/package.json index 5d508555b55cee..c62b53c3ec5113 100644 --- a/playground/resolve/package.json +++ b/playground/resolve/package.json @@ -9,7 +9,7 @@ "preview": "vite preview" }, "dependencies": { - "@babel/runtime": "^7.18.3", + "@babel/runtime": "^7.18.6", "es5-ext": "0.10.61", "normalize.css": "^8.0.1", "require-pkg-with-module-field": "link:./require-pkg-with-module-field", diff --git a/playground/ssr-deps/__tests__/ssr-deps.spec.ts b/playground/ssr-deps/__tests__/ssr-deps.spec.ts index dbb169647fc603..1e81b5fc689486 100644 --- a/playground/ssr-deps/__tests__/ssr-deps.spec.ts +++ b/playground/ssr-deps/__tests__/ssr-deps.spec.ts @@ -77,3 +77,17 @@ test('msg from no external cjs', async () => { await page.goto(url) expect(await page.textContent('.no-external-cjs-msg')).toMatch('Hello World!') }) + +test('msg from optimized with nested external', async () => { + await page.goto(url) + expect(await page.textContent('.optimized-with-nested-external')).toMatch( + 'Hello World!' + ) +}) + +test('msg from optimized cjs with nested external', async () => { + await page.goto(url) + expect(await page.textContent('.optimized-cjs-with-nested-external')).toMatch( + 'Hello World!' + ) +}) diff --git a/playground/ssr-deps/import-builtin-cjs/index.js b/playground/ssr-deps/import-builtin-cjs/index.js new file mode 100644 index 00000000000000..149be9e9ed53b8 --- /dev/null +++ b/playground/ssr-deps/import-builtin-cjs/index.js @@ -0,0 +1,5 @@ +exports.stream = require('stream') + +exports.hello = function () { + return 'Hello World!' +} diff --git a/playground/ssr-deps/import-builtin-cjs/package.json b/playground/ssr-deps/import-builtin-cjs/package.json new file mode 100644 index 00000000000000..73509dfed0624d --- /dev/null +++ b/playground/ssr-deps/import-builtin-cjs/package.json @@ -0,0 +1,6 @@ +{ + "name": "import-builtin", + "private": true, + "type": "commonjs", + "version": "0.0.0" +} diff --git a/playground/ssr-deps/nested-external/index.js b/playground/ssr-deps/nested-external/index.js new file mode 100644 index 00000000000000..1e211c295b64ef --- /dev/null +++ b/playground/ssr-deps/nested-external/index.js @@ -0,0 +1,9 @@ +// Module with state, to check that it is properly externalized and +// not bundled in the optimized deps +let msg +export function setMessage(externalMsg) { + msg = externalMsg +} +export default function getMessage() { + return msg +} diff --git a/playground/ssr-deps/nested-external/package.json b/playground/ssr-deps/nested-external/package.json new file mode 100644 index 00000000000000..40d1fd957af246 --- /dev/null +++ b/playground/ssr-deps/nested-external/package.json @@ -0,0 +1,7 @@ +{ + "name": "nested-external", + "private": true, + "version": "0.0.0", + "main": "index.js", + "type": "module" +} diff --git a/playground/ssr-deps/no-external-cjs/package.json b/playground/ssr-deps/no-external-cjs/package.json index 799658987d7b2c..56d7adf9bbd430 100644 --- a/playground/ssr-deps/no-external-cjs/package.json +++ b/playground/ssr-deps/no-external-cjs/package.json @@ -1,5 +1,5 @@ { - "name": "primitive-export", + "name": "no-external-cjs", "private": true, "type": "commonjs", "version": "0.0.0" diff --git a/playground/ssr-deps/no-external-css/index.css b/playground/ssr-deps/no-external-css/index.css new file mode 100644 index 00000000000000..161363ab3641a8 --- /dev/null +++ b/playground/ssr-deps/no-external-css/index.css @@ -0,0 +1,4 @@ +@font-face { + font-family: 'Not Real Sans'; + src: url('./i-throw-if-you-optimize-this-file.woff') format('woff'); +} diff --git a/playground/ssr-deps/no-external-css/package.json b/playground/ssr-deps/no-external-css/package.json new file mode 100644 index 00000000000000..c86fdf92229bc5 --- /dev/null +++ b/playground/ssr-deps/no-external-css/package.json @@ -0,0 +1,9 @@ +{ + "name": "no-external-css", + "private": true, + "type": "module", + "version": "0.0.0", + "exports": { + ".": "./index.css" + } +} diff --git a/playground/ssr-deps/non-optimized-with-nested-external/index.js b/playground/ssr-deps/non-optimized-with-nested-external/index.js new file mode 100644 index 00000000000000..cab1f9715fa51e --- /dev/null +++ b/playground/ssr-deps/non-optimized-with-nested-external/index.js @@ -0,0 +1,3 @@ +import { setMessage } from 'nested-external' + +setMessage('Hello World!') diff --git a/playground/ssr-deps/non-optimized-with-nested-external/package.json b/playground/ssr-deps/non-optimized-with-nested-external/package.json new file mode 100644 index 00000000000000..dc212bfb46caec --- /dev/null +++ b/playground/ssr-deps/non-optimized-with-nested-external/package.json @@ -0,0 +1,10 @@ +{ + "name": "non-optimized-with-nested-external", + "private": true, + "version": "0.0.0", + "type": "module", + "main": "index.js", + "dependencies": { + "nested-external": "file:../nested-external" + } +} diff --git a/playground/ssr-deps/optimized-cjs-with-nested-external/index.js b/playground/ssr-deps/optimized-cjs-with-nested-external/index.js new file mode 100644 index 00000000000000..adbbb819ed31ea --- /dev/null +++ b/playground/ssr-deps/optimized-cjs-with-nested-external/index.js @@ -0,0 +1,5 @@ +const getMessage = require('nested-external') + +module.exports = { + hello: getMessage +} diff --git a/playground/ssr-deps/optimized-cjs-with-nested-external/package.json b/playground/ssr-deps/optimized-cjs-with-nested-external/package.json new file mode 100644 index 00000000000000..d2b17b82d7cdea --- /dev/null +++ b/playground/ssr-deps/optimized-cjs-with-nested-external/package.json @@ -0,0 +1,8 @@ +{ + "name": "optimized-cjs-with-nested-external", + "private": true, + "version": "0.0.0", + "dependencies": { + "nested-external": "file:../nested-external" + } +} diff --git a/playground/ssr-deps/optimized-with-nested-external/index.js b/playground/ssr-deps/optimized-with-nested-external/index.js new file mode 100644 index 00000000000000..3b0d9135b3e5b1 --- /dev/null +++ b/playground/ssr-deps/optimized-with-nested-external/index.js @@ -0,0 +1,5 @@ +import getMessage from 'nested-external' + +export function hello() { + return getMessage() +} diff --git a/playground/ssr-deps/optimized-with-nested-external/package.json b/playground/ssr-deps/optimized-with-nested-external/package.json new file mode 100644 index 00000000000000..a1596220e04091 --- /dev/null +++ b/playground/ssr-deps/optimized-with-nested-external/package.json @@ -0,0 +1,10 @@ +{ + "name": "optimized-with-nested-external", + "private": true, + "version": "0.0.0", + "type": "module", + "main": "index.js", + "dependencies": { + "nested-external": "file:../nested-external" + } +} diff --git a/playground/ssr-deps/package.json b/playground/ssr-deps/package.json index 4dd1ee49aea717..20efa9753bebc9 100644 --- a/playground/ssr-deps/package.json +++ b/playground/ssr-deps/package.json @@ -19,7 +19,12 @@ "read-file-content": "file:./read-file-content", "require-absolute": "file:./require-absolute", "ts-transpiled-exports": "file:./ts-transpiled-exports", - "no-external-cjs": "file:./no-external-cjs" + "no-external-cjs": "file:./no-external-cjs", + "import-builtin-cjs": "file:./import-builtin-cjs", + "no-external-css": "file:./no-external-css", + "non-optimized-with-nested-external": "file:./non-optimized-with-nested-external", + "optimized-with-nested-external": "file:./optimized-with-nested-external", + "optimized-cjs-with-nested-external": "file:./optimized-with-nested-external" }, "devDependencies": { "cross-env": "^7.0.3", diff --git a/playground/ssr-deps/server.js b/playground/ssr-deps/server.js index 52a214f7668e39..7075cbcacc4d7a 100644 --- a/playground/ssr-deps/server.js +++ b/playground/ssr-deps/server.js @@ -35,7 +35,17 @@ export async function createServer(root = process.cwd(), hmrPort) { }, appType: 'custom', ssr: { - noExternal: ['no-external-cjs'] + noExternal: ['no-external-cjs', 'import-builtin-cjs', 'no-external-css'], + external: ['nested-external'] + }, + optimizeDeps: { + include: [ + 'no-external-cjs', + 'import-builtin-cjs', + 'optimized-with-nested-external', + 'optimized-cjs-with-nested-external' + ], + exclude: ['nested-external'] } }) // use vite's connect instance as middleware diff --git a/playground/ssr-deps/src/app.js b/playground/ssr-deps/src/app.js index 6c94fd808bf8b7..26df58bde7439d 100644 --- a/playground/ssr-deps/src/app.js +++ b/playground/ssr-deps/src/app.js @@ -10,6 +10,15 @@ import definePropertyExports from 'define-property-exports' import onlyObjectAssignedExports from 'only-object-assigned-exports' import requireAbsolute from 'require-absolute' import noExternalCjs from 'no-external-cjs' +import importBuiltinCjs from 'import-builtin-cjs' + +// This import will set a 'Hello World!" message in the nested-external non-entry dependency +import 'non-optimized-with-nested-external' + +// These two are optimized and get the message from nested-external, if the dependency is +// not properly externalized and ends up bundled, the message will be undefined +import optimizedWithNestedExternal from 'optimized-with-nested-external' +import optimizedCjsWithNestedExternal from 'optimized-cjs-with-nested-external' export async function render(url, rootDir) { let html = '' @@ -49,5 +58,15 @@ export async function render(url, rootDir) { const noExternalCjsMessage = noExternalCjs.hello() html += `\n

message from no-external-cjs: ${noExternalCjsMessage}

` + const importBuiltinCjsMessage = importBuiltinCjs.hello() + html += `\n

message from import-builtin-cjs: ${importBuiltinCjsMessage}

` + + const optimizedWithNestedExternalMessage = optimizedWithNestedExternal.hello() + html += `\n

message from optimized-with-nested-external: ${optimizedWithNestedExternalMessage}

` + + const optimizedCjsWithNestedExternalMessage = + optimizedCjsWithNestedExternal.hello() + html += `\n

message from optimized-cjs-with-nested-external: ${optimizedCjsWithNestedExternalMessage}

` + return html + '\n' } diff --git a/packages/vite/src/node/ssr/__tests__/fixtures/ssrModuleLoader-bad.js b/playground/ssr-vue/__tests__/fixtures/ssrModuleLoader-bad.js similarity index 100% rename from packages/vite/src/node/ssr/__tests__/fixtures/ssrModuleLoader-bad.js rename to playground/ssr-vue/__tests__/fixtures/ssrModuleLoader-bad.js diff --git a/playground/ssr-vue/__tests__/serve.ts b/playground/ssr-vue/__tests__/serve.ts index 99b02e10c94a19..e03810017bc04e 100644 --- a/playground/ssr-vue/__tests__/serve.ts +++ b/playground/ssr-vue/__tests__/serve.ts @@ -3,10 +3,13 @@ import path from 'node:path' import kill from 'kill-port' +import type { ViteDevServer } from 'vite' import { hmrPorts, isBuild, ports, rootDir } from '~utils' export const port = ports['ssr-vue'] +export let viteServer: ViteDevServer + export async function serve(): Promise<{ close(): Promise }> { if (isBuild) { // build first @@ -44,6 +47,7 @@ export async function serve(): Promise<{ close(): Promise }> { isBuild, hmrPorts['ssr-vue'] ) + viteServer = vite return new Promise((resolve, reject) => { try { diff --git a/playground/ssr-vue/__tests__/ssr-vue.spec.ts b/playground/ssr-vue/__tests__/ssr-vue.spec.ts index 7b61c2634f7c5b..7d4d1ec0f7ab87 100644 --- a/playground/ssr-vue/__tests__/ssr-vue.spec.ts +++ b/playground/ssr-vue/__tests__/ssr-vue.spec.ts @@ -1,4 +1,5 @@ import { resolve } from 'node:path' +import { fileURLToPath } from 'node:url' import fetch from 'node-fetch' import { port } from './serve' import { @@ -7,7 +8,8 @@ import { getColor, isBuild, page, - untilUpdated + untilUpdated, + viteServer } from '~utils' const url = `http://localhost:${port}/test/` @@ -202,3 +204,33 @@ test.runIf(isBuild)('dynamic css file should be preloaded', async () => { expect(homeHtml).toMatch(file) } }) + +test.runIf(!isBuild)( + 'always throw error when evaluating an wrong SSR module', + async () => { + const __filename = fileURLToPath(import.meta.url) + const badjs = resolve(__filename, '../fixtures/ssrModuleLoader-bad.js') + const THROW_MESSAGE = 'it is an expected error' + + const spy = vi.spyOn(console, 'error').mockImplementation(() => {}) + const expectedErrors = [] + for (const _ of [0, 1]) { + try { + console.log(viteServer) + await viteServer.ssrLoadModule(badjs, { fixStacktrace: true }) + } catch (e) { + expectedErrors.push(e) + } + } + expect(expectedErrors).toHaveLength(2) + expect(expectedErrors[0]).toBe(expectedErrors[1]) + expectedErrors.forEach((error) => { + expect(error?.message).toContain(THROW_MESSAGE) + }) + expect(spy).toBeCalledTimes(1) + const [firstParameter] = spy.mock.calls[0] + expect(firstParameter).toContain('Error when evaluating SSR module') + expect(firstParameter).toContain(THROW_MESSAGE) + spy.mockClear() + } +) diff --git a/playground/ssr-vue/vite.config.js b/playground/ssr-vue/vite.config.js index d57a11972d449e..6d8073ad6755d4 100644 --- a/playground/ssr-vue/vite.config.js +++ b/playground/ssr-vue/vite.config.js @@ -1,13 +1,17 @@ +import path from 'path' import { defineConfig } from 'vite' import vuePlugin from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' + const virtualFile = '@virtual-file' const virtualId = '\0' + virtualFile const nestedVirtualFile = '@nested-virtual-file' const nestedVirtualId = '\0' + nestedVirtualFile -export default defineConfig({ - base: '/test/', +const base = '/test/' + +export default defineConfig(({ command, ssrBuild }) => ({ + base, plugins: [ vuePlugin(), vueJsx(), @@ -18,9 +22,15 @@ export default defineConfig({ return id } }, - load(id) { + load(id, options) { + const ssrFromOptions = options?.ssr ?? false if (id === '@foo') { - return `export default { msg: 'hi' }` + // Force a mismatch error if ssrBuild is different from ssrFromOptions + return `export default { msg: '${ + command === 'build' && !!ssrBuild !== ssrFromOptions + ? `defineConfig ssrBuild !== ssr from load options` + : 'hi' + }' }` } } }, @@ -40,8 +50,61 @@ export default defineConfig({ return `export const msg = "[success] from conventional virtual file"` } } - } + }, + // Example of a plugin that injects a helper from a virtual module that can + // be used in renderBuiltUrl + (function () { + const queryRE = /\?.*$/s + const hashRE = /#.*$/s + const cleanUrl = (url) => url.replace(hashRE, '').replace(queryRE, '') + let config + + const virtualId = '\0virtual:ssr-vue-built-url' + return { + name: 'built-url', + enforce: 'post', + configResolved(_config) { + config = _config + }, + resolveId(id) { + if (id === virtualId) { + return id + } + }, + load(id) { + if (id === virtualId) { + return { + code: `export const __ssr_vue_processAssetPath = (url) => '${base}' + url`, + moduleSideEffects: 'no-treeshake' + } + } + }, + transform(code, id) { + if ( + config.build.ssr && + cleanUrl(id).endsWith('.js') && + !code.includes('__ssr_vue_processAssetPath') + ) { + return { + code: + `import { __ssr_vue_processAssetPath } from '${virtualId}';` + + code, + sourcemap: null // no sourcemap support to speed up CI + } + } + } + } + })() ], + experimental: { + renderBuiltUrl(filename, { hostType, type, ssr }) { + if (ssr && type === 'asset' && hostType === 'js') { + return { + runtime: `__ssr_vue_processAssetPath(${JSON.stringify(filename)})` + } + } + } + }, build: { minify: false }, @@ -54,4 +117,4 @@ export default defineConfig({ optimizeDeps: { exclude: ['example-external-component'] } -}) +})) diff --git a/playground/ssr-vue/vite.config.noexternal.js b/playground/ssr-vue/vite.config.noexternal.js index ce9a389defc68b..48a740c16cb1bf 100644 --- a/playground/ssr-vue/vite.config.noexternal.js +++ b/playground/ssr-vue/vite.config.noexternal.js @@ -1,8 +1,8 @@ -const config = require('./vite.config.js') +import config from './vite.config.js' /** * @type {import('vite').UserConfig} */ -module.exports = Object.assign(config, { +export default Object.assign(config, { ssr: { noExternal: /./ }, diff --git a/playground/tailwind-sourcemap/__tests__/serve.spec.ts b/playground/tailwind-sourcemap/__tests__/serve.spec.ts deleted file mode 100644 index 62e46cc7781482..00000000000000 --- a/playground/tailwind-sourcemap/__tests__/serve.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { isBuild, serverLogs } from '~utils' - -test.runIf(isBuild)('should not output missing source file warning', () => { - serverLogs.forEach((log) => { - expect(log).not.toMatch(/Sourcemap for .+ points to missing source files/) - }) -}) diff --git a/playground/tailwind-sourcemap/__tests__/build.spec.ts b/playground/tailwind-sourcemap/__tests__/tailwind-sourcemap.spec.ts similarity index 53% rename from playground/tailwind-sourcemap/__tests__/build.spec.ts rename to playground/tailwind-sourcemap/__tests__/tailwind-sourcemap.spec.ts index b30284731a76d9..86238ab800f24e 100644 --- a/playground/tailwind-sourcemap/__tests__/build.spec.ts +++ b/playground/tailwind-sourcemap/__tests__/tailwind-sourcemap.spec.ts @@ -1,5 +1,11 @@ import { isBuild, serverLogs } from '~utils' +test.runIf(!isBuild)('should not output missing source file warning', () => { + serverLogs.forEach((log) => { + expect(log).not.toMatch(/Sourcemap for .+ points to missing source files/) + }) +}) + test.runIf(isBuild)('should not output sourcemap warning (#4939)', () => { serverLogs.forEach((log) => { expect(log).not.toMatch('Sourcemap is likely to be incorrect') diff --git a/playground/tailwind-sourcemap/package.json b/playground/tailwind-sourcemap/package.json index 065159ef4ba44c..3b0ee8ec7c2dcb 100644 --- a/playground/tailwind-sourcemap/package.json +++ b/playground/tailwind-sourcemap/package.json @@ -9,6 +9,6 @@ "preview": "vite preview" }, "dependencies": { - "tailwindcss": "^3.1.3" + "tailwindcss": "^3.1.4" } } diff --git a/playground/tailwind-sourcemap/postcss.config.js b/playground/tailwind-sourcemap/postcss.config.js index eab3760cbc7b42..ad6adc688915c1 100644 --- a/playground/tailwind-sourcemap/postcss.config.js +++ b/playground/tailwind-sourcemap/postcss.config.js @@ -1,3 +1,5 @@ +console.log(__dirname + '/tailwind.config.js') + module.exports = { plugins: { tailwindcss: { config: __dirname + '/tailwind.config.js' } diff --git a/playground/tailwind/package.json b/playground/tailwind/package.json index 541b902fe37fa9..803e342cd81a89 100644 --- a/playground/tailwind/package.json +++ b/playground/tailwind/package.json @@ -10,12 +10,12 @@ }, "dependencies": { "autoprefixer": "^10.4.7", - "tailwindcss": "^3.1.3", + "tailwindcss": "^3.1.4", "vue": "^3.2.37", "vue-router": "^4.0.16" }, "devDependencies": { "@vitejs/plugin-vue": "workspace:*", - "ts-node": "^10.8.1" + "ts-node": "^10.8.2" } } diff --git a/playground/tailwind/vite.config.ts b/playground/tailwind/vite.config.ts index e7c50bf3c3ae78..ea895225460d48 100644 --- a/playground/tailwind/vite.config.ts +++ b/playground/tailwind/vite.config.ts @@ -15,6 +15,6 @@ export default defineConfig({ server: { // This option caused issues with HMR, // although it should not affect the build - origin: 'http://localhost:8080/' + origin: 'http://localhost:8080' } }) diff --git a/playground/test-utils.ts b/playground/test-utils.ts index d1c9da43d7e4c8..a0fedd0db426d6 100644 --- a/playground/test-utils.ts +++ b/playground/test-utils.ts @@ -162,6 +162,25 @@ export async function untilUpdated( } } +/** + * Retry `func` until it does not throw error. + */ +export async function withRetry( + func: () => Promise, + runInBuild = false +): Promise { + if (isBuild && !runInBuild) return + const maxTries = process.env.CI ? 200 : 50 + for (let tries = 0; tries < maxTries; tries++) { + try { + await func() + return + } catch {} + await timeout(50) + } + await func() +} + export async function untilBrowserLogAfter( operation: () => any, target: string | RegExp | Array, diff --git a/playground/vitestSetup.ts b/playground/vitestSetup.ts index de0877302e5118..7b960811eb3f7e 100644 --- a/playground/vitestSetup.ts +++ b/playground/vitestSetup.ts @@ -35,6 +35,10 @@ export const viteBinPath = path.posix.join( let server: ViteDevServer | http.Server +/** + * Vite Dev Server when testing serve + */ +export let viteServer: ViteDevServer /** * Root of the Vite fixture */ @@ -146,6 +150,7 @@ beforeAll(async (s) => { } if (serve) { server = await serve() + viteServer = mod.viteServer return } } else { @@ -212,7 +217,7 @@ export async function startDefaultServe(): Promise { process.env.VITE_INLINE = 'inline-serve' const testConfig = mergeConfig(options, config || {}) viteConfig = testConfig - server = await (await createServer(testConfig)).listen() + viteServer = server = await (await createServer(testConfig)).listen() // use resolved port/base from server const devBase = server.config.base viteTestUrl = `http://localhost:${server.config.server.port}${ diff --git a/playground/vue-sourcemap/__tests__/__snapshots__/serve.spec.ts.snap b/playground/vue-sourcemap/__tests__/__snapshots__/serve.spec.ts.snap deleted file mode 100644 index 7a262ecd9a6f82..00000000000000 --- a/playground/vue-sourcemap/__tests__/__snapshots__/serve.spec.ts.snap +++ /dev/null @@ -1,25 +0,0 @@ -// Vitest Snapshot v1 - -exports[`serve:vue-sourcemap > js 1`] = ` -{ - "mappings": "mIAKA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;AAGP;AACd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;wBARlB,oBAAiB,WAAd,MAAU", - "sources": [ - "/root/Js.vue", - ], - "sourcesContent": [ - " - - - - -", - ], - "version": 3, -} -`; diff --git a/playground/vue-sourcemap/__tests__/__snapshots__/vue-sourcemap.spec.ts.snap b/playground/vue-sourcemap/__tests__/__snapshots__/vue-sourcemap.spec.ts.snap new file mode 100644 index 00000000000000..d2600ee6edccce --- /dev/null +++ b/playground/vue-sourcemap/__tests__/__snapshots__/vue-sourcemap.spec.ts.snap @@ -0,0 +1,335 @@ +// Vitest Snapshot v1 + +exports[`serve:vue-sourcemap > css > serve-css 1`] = ` +{ + "mappings": ";AAQA;EACE,UAAU;AACZ", + "sources": [ + "/root/Css.vue", + ], + "sourcesContent": [ + " + + + + + + + + +", + ], + "version": 3, +} +`; + +exports[`serve:vue-sourcemap > css module > serve-css-module 1`] = ` +{ + "mappings": ";AAcA;EACE,UAAU;AACZ", + "sources": [ + "/root/Css.vue", + ], + "sourcesContent": [ + " + + + + + + + + +", + ], + "version": 3, +} +`; + +exports[`serve:vue-sourcemap > css scoped > serve-css-scoped 1`] = ` +{ + "mappings": ";AAoBA;EACE,UAAU;AACZ", + "sources": [ + "/root/Css.vue", + ], + "sourcesContent": [ + " + + + + + + + + +", + ], + "version": 3, +} +`; + +exports[`serve:vue-sourcemap > js > serve-js 1`] = ` +{ + "mappings": "AAKA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;AAGP;AACd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;wBARlB,oBAAiB,WAAd,MAAU", + "sources": [ + "/root/Js.vue", + ], + "sourcesContent": [ + " + + + + +", + ], + "version": 3, +} +`; + +exports[`serve:vue-sourcemap > less with additionalData > serve-less-with-additionalData 1`] = ` +{ + "mappings": "AAKA;EACE", + "sources": [ + "/root/Less.vue", + ], + "sourcesContent": [ + " + + +", + ], + "version": 3, +} +`; + +exports[`serve:vue-sourcemap > no script > serve-no-script 1`] = ` +{ + "mappings": ";;;wBACE,oBAAwB,WAArB,aAAiB", + "sourceRoot": "", + "sources": [ + "/root/NoScript.vue", + ], + "sourcesContent": [ + " +", + ], + "version": 3, +} +`; + +exports[`serve:vue-sourcemap > no template > serve-no-template 1`] = ` +{ + "mappings": "AACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;AAGP;AACd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;;", + "sources": [ + "/root/NoTemplate.vue", + ], + "sourcesContent": [ + " + + +", + ], + "version": 3, +} +`; + +exports[`serve:vue-sourcemap > sass > serve-sass 1`] = ` +{ + "mappings": "AAKA;EACE", + "sources": [ + "/root/Sass.vue", + ], + "sourcesContent": [ + " + + +", + ], + "version": 3, +} +`; + +exports[`serve:vue-sourcemap > sass with import > serve-sass-with-import 1`] = ` +{ + "mappings": "AAAA;EACE;;ACOF;EACE", + "sources": [ + "/root/sassWithImportImported.sass", + "/root/SassWithImport.vue", + ], + "sourcesContent": [ + ".sass-with-import-imported + color: red +", + " + + +", + ], + "version": 3, +} +`; + +exports[`serve:vue-sourcemap > src imported > serve-src-imported 1`] = ` +{ + "mappings": "AAAA;EACE,UAAU;AACZ", + "sources": [ + "/root/src-import/src-import.css", + ], + "sourcesContent": [ + ".src-import { + color: red; +} +", + ], + "version": 3, +} +`; + +exports[`serve:vue-sourcemap > src imported sass > serve-src-imported-sass 1`] = ` +{ + "mappings": "AAAA;EACE;;ACCF;EACE", + "sources": [ + "/root/src-import/src-import-imported.sass", + "/root/src-import/src-import.sass", + ], + "sourcesContent": [ + ".src-import-sass-imported + color: red +", + "@import './src-import-imported' + +.src-import-sass + color: red +", + ], + "version": 3, +} +`; + +exports[`serve:vue-sourcemap > ts > serve-ts 1`] = ` +{ + "mappings": ";AAKA,QAAQ,IAAI,WAAW;;;;;AAIvB,YAAQ,IAAI,UAAU;;;;;;;;uBARpB,oBAAiB,WAAd,MAAU", + "sources": [ + "/root/Ts.vue", + ], + "sourcesContent": [ + " + + + + +", + ], + "version": 3, +} +`; diff --git a/playground/vue-sourcemap/__tests__/build.spec.ts b/playground/vue-sourcemap/__tests__/build.spec.ts deleted file mode 100644 index b30284731a76d9..00000000000000 --- a/playground/vue-sourcemap/__tests__/build.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { isBuild, serverLogs } from '~utils' - -test.runIf(isBuild)('should not output sourcemap warning (#4939)', () => { - serverLogs.forEach((log) => { - expect(log).not.toMatch('Sourcemap is likely to be incorrect') - }) -}) diff --git a/playground/vue-sourcemap/__tests__/serve.spec.ts b/playground/vue-sourcemap/__tests__/serve.spec.ts deleted file mode 100644 index e42a12e87be6a2..00000000000000 --- a/playground/vue-sourcemap/__tests__/serve.spec.ts +++ /dev/null @@ -1,387 +0,0 @@ -import { URL } from 'node:url' -import { - extractSourcemap, - formatSourcemapForSnapshot, - isServe, - page -} from '~utils' - -describe.runIf(isServe)('serve:vue-sourcemap', () => { - const getStyleTagContentIncluding = async (content: string) => { - const styles = await page.$$('style') - for (const style of styles) { - const text = await style.textContent() - if (text.includes(content)) { - return text - } - } - throw new Error('Style not found: ' + content) - } - - test('js', async () => { - const res = await page.request.get(new URL('./Js.vue', page.url()).href) - const js = await res.text() - const map = extractSourcemap(js) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot() - }) - - test('ts', async () => { - const res = await page.request.get(new URL('./Ts.vue', page.url()).href) - const js = await res.text() - const map = extractSourcemap(js) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": ";AAKA,QAAQ,IAAI,WAAW;;;;;AAIvB,YAAQ,IAAI,UAAU;;;;;;;;uBARpB,oBAAiB,WAAd,MAAU", - "sources": [ - "/root/Ts.vue", - ], - "sourcesContent": [ - " - - - - - ", - ], - "version": 3, - } - `) - }) - - test('css', async () => { - const css = await getStyleTagContentIncluding('.css ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": ";AAQA;EACE,UAAU;AACZ", - "sources": [ - "/root/Css.vue", - ], - "sourcesContent": [ - " - - - - - - - - - ", - ], - "version": 3, - } - `) - }) - - test('css module', async () => { - const css = await getStyleTagContentIncluding('._css-module_') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": ";AAcA;EACE,UAAU;AACZ", - "sources": [ - "/root/Css.vue", - ], - "sourcesContent": [ - " - - - - - - - - - ", - ], - "version": 3, - } - `) - }) - - test('css scoped', async () => { - const css = await getStyleTagContentIncluding('.css-scoped[data-v-') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": ";AAoBA;EACE,UAAU;AACZ", - "sources": [ - "/root/Css.vue", - ], - "sourcesContent": [ - " - - - - - - - - - ", - ], - "version": 3, - } - `) - }) - - test('sass', async () => { - const css = await getStyleTagContentIncluding('.sass ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AAKA;EACE", - "sources": [ - "/root/Sass.vue", - ], - "sourcesContent": [ - " - - - ", - ], - "version": 3, - } - `) - }) - - test('sass with import', async () => { - const css = await getStyleTagContentIncluding('.sass-with-import ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AAAA;EACE;;ACOF;EACE", - "sources": [ - "/root/sassWithImportImported.sass", - "/root/SassWithImport.vue", - ], - "sourcesContent": [ - ".sass-with-import-imported - color: red - ", - " - - - ", - ], - "version": 3, - } - `) - }) - - test('less with additionalData', async () => { - const css = await getStyleTagContentIncluding('.less ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AAKA;EACE", - "sources": [ - "/root/Less.vue", - ], - "sourcesContent": [ - " - - - ", - ], - "version": 3, - } - `) - }) - - test('src imported', async () => { - const css = await getStyleTagContentIncluding('.src-import[data-v-') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AAAA;EACE,UAAU;AACZ", - "sources": [ - "/root/src-import/src-import.css", - ], - "sourcesContent": [ - ".src-import { - color: red; - } - ", - ], - "version": 3, - } - `) - }) - - test('src imported sass', async () => { - const css = await getStyleTagContentIncluding('.src-import-sass[data-v-') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "AAAA;EACE;;ACCF;EACE", - "sources": [ - "/root/src-import/src-import-imported.sass", - "/root/src-import/src-import.sass", - ], - "sourcesContent": [ - ".src-import-sass-imported - color: red - ", - "@import './src-import-imported' - - .src-import-sass - color: red - ", - ], - "version": 3, - } - `) - }) - - test('no script', async () => { - const res = await page.request.get( - new URL('./NoScript.vue', page.url()).href - ) - const js = await res.text() - const map = extractSourcemap(js) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": ";;;wBACE", - "sources": [ - "/root/NoScript.vue", - ], - "sourcesContent": [ - " - ", - ], - "version": 3, - } - `) - }) - - test('no template', async () => { - const res = await page.request.get( - new URL('./NoTemplate.vue', page.url()).href - ) - const js = await res.text() - const map = extractSourcemap(js) - expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - { - "mappings": "2IACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;AAGP;AACd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC", - "sources": [ - "/root/NoTemplate.vue", - ], - "sourcesContent": [ - " - - - ", - ], - "version": 3, - } - `) - }) -}) diff --git a/playground/vue-sourcemap/__tests__/vue-sourcemap.spec.ts b/playground/vue-sourcemap/__tests__/vue-sourcemap.spec.ts new file mode 100644 index 00000000000000..2241af413eee94 --- /dev/null +++ b/playground/vue-sourcemap/__tests__/vue-sourcemap.spec.ts @@ -0,0 +1,116 @@ +import { URL } from 'node:url' +import { + extractSourcemap, + formatSourcemapForSnapshot, + isBuild, + isServe, + page, + serverLogs +} from '~utils' + +describe.runIf(isServe)('serve:vue-sourcemap', () => { + const getStyleTagContentIncluding = async (content: string) => { + const styles = await page.$$('style') + for (const style of styles) { + const text = await style.textContent() + if (text.includes(content)) { + return text + } + } + throw new Error('Style not found: ' + content) + } + + test('js', async () => { + const res = await page.request.get(new URL('./Js.vue', page.url()).href) + const js = await res.text() + const map = extractSourcemap(js) + expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-js') + }) + + test('ts', async () => { + const res = await page.request.get(new URL('./Ts.vue', page.url()).href) + const js = await res.text() + const map = extractSourcemap(js) + expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-ts') + }) + + test('css', async () => { + const css = await getStyleTagContentIncluding('.css ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-css') + }) + + test('css module', async () => { + const css = await getStyleTagContentIncluding('._css-module_') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-css-module') + }) + + test('css scoped', async () => { + const css = await getStyleTagContentIncluding('.css-scoped[data-v-') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-css-scoped') + }) + + test('sass', async () => { + const css = await getStyleTagContentIncluding('.sass ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-sass') + }) + + test('sass with import', async () => { + const css = await getStyleTagContentIncluding('.sass-with-import ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchSnapshot( + 'serve-sass-with-import' + ) + }) + + test('less with additionalData', async () => { + const css = await getStyleTagContentIncluding('.less ') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchSnapshot( + 'serve-less-with-additionalData' + ) + }) + + test('src imported', async () => { + const css = await getStyleTagContentIncluding('.src-import[data-v-') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchSnapshot( + 'serve-src-imported' + ) + }) + + test('src imported sass', async () => { + const css = await getStyleTagContentIncluding('.src-import-sass[data-v-') + const map = extractSourcemap(css) + expect(formatSourcemapForSnapshot(map)).toMatchSnapshot( + 'serve-src-imported-sass' + ) + }) + + test('no script', async () => { + const res = await page.request.get( + new URL('./NoScript.vue', page.url()).href + ) + const js = await res.text() + const map = extractSourcemap(js) + expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-no-script') + }) + + test('no template', async () => { + const res = await page.request.get( + new URL('./NoTemplate.vue', page.url()).href + ) + const js = await res.text() + const map = extractSourcemap(js) + expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-no-template') + }) +}) + +test.runIf(isBuild)('should not output sourcemap warning (#4939)', () => { + serverLogs.forEach((log) => { + expect(log).not.toMatch('Sourcemap is likely to be incorrect') + }) +}) diff --git a/playground/vue-sourcemap/package.json b/playground/vue-sourcemap/package.json index 9530a527f2398d..778f73be3a100b 100644 --- a/playground/vue-sourcemap/package.json +++ b/playground/vue-sourcemap/package.json @@ -12,7 +12,7 @@ "@vitejs/plugin-vue": "workspace:*", "less": "^4.1.3", "postcss-nested": "^5.0.6", - "sass": "^1.52.3" + "sass": "^1.53.0" }, "dependencies": { "vue": "^3.2.37" diff --git a/playground/vue/package.json b/playground/vue/package.json index 97d4e0fa1879ff..fa1808defade56 100644 --- a/playground/vue/package.json +++ b/playground/vue/package.json @@ -17,7 +17,7 @@ "js-yaml": "^4.1.0", "less": "^4.1.3", "pug": "^3.0.2", - "sass": "^1.52.3", + "sass": "^1.53.0", "stylus": "^0.58.1" } } diff --git a/playground/worker/__tests__/sourcemap/__snapshots__/sourcemap-worker.spec.ts.snap b/playground/worker/__tests__/sourcemap/__snapshots__/sourcemap-worker.spec.ts.snap deleted file mode 100644 index 3895aae40ad402..00000000000000 --- a/playground/worker/__tests__/sourcemap/__snapshots__/sourcemap-worker.spec.ts.snap +++ /dev/null @@ -1,14 +0,0 @@ -// Vitest Snapshot v1 - -exports[`serve:worker-sourcemap > nested worker 1`] = ` -{ - "mappings": "AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAsB,CAAC;AAClD;AACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC;AACD;AACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B;AACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;", - "sources": [ - "/root/possible-ts-output-worker.mjs?worker_file", - ], - "sourcesContent": [ - null, - ], - "version": 3, -} -`; diff --git a/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts b/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts index 801369d8cb7271..a0ad8e7a355b8b 100644 --- a/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts +++ b/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts @@ -1,13 +1,6 @@ import fs from 'node:fs' import path from 'node:path' -import { - extractSourcemap, - formatSourcemapForSnapshot, - isBuild, - isServe, - page, - testDir -} from '~utils' +import { isBuild, testDir } from '~utils' describe.runIf(isBuild)('build', () => { // assert correct files @@ -120,16 +113,6 @@ describe.runIf(isBuild)('build', () => { }) }) -describe.runIf(isServe)('serve:worker-sourcemap', () => { - test('nested worker', async () => { - const res = await page.request.get( - new URL('./possible-ts-output-worker.mjs?worker_file', page.url()).href - ) - const map = extractSourcemap(await res.text()) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot() - }) -}) - function getSourceMapUrl(code: string): string { const regex = /\/\/[#@]\s(?:source(?:Mapping)?URL)=\s*(\S+)/g const results = regex.exec(code) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45adeb64de4581..d63fd7c1ce006c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,15 +10,15 @@ importers: .: specifiers: - '@babel/types': ^7.18.4 - '@microsoft/api-extractor': ^7.25.2 + '@babel/types': ^7.18.7 + '@microsoft/api-extractor': ^7.28.2 '@rollup/plugin-typescript': ^8.3.3 '@types/babel__core': ^7.1.19 '@types/babel__standalone': ^7.1.4 '@types/convert-source-map': ^1.5.2 '@types/cross-spawn': ^6.0.2 '@types/debug': ^4.1.7 - '@types/estree': ^0.0.51 + '@types/estree': ^0.0.52 '@types/etag': ^1.8.1 '@types/fs-extra': ^9.0.13 '@types/hash-sum': ^1.0.0 @@ -33,26 +33,25 @@ importers: '@types/semver': ^7.3.10 '@types/stylus': ^0.48.38 '@types/ws': ^8.5.3 - '@typescript-eslint/eslint-plugin': ^5.28.0 - '@typescript-eslint/parser': ^5.28.0 + '@typescript-eslint/eslint-plugin': ^5.30.4 + '@typescript-eslint/parser': ^5.30.4 conventional-changelog-cli: ^2.2.2 cross-env: ^7.0.3 - esbuild: ^0.14.43 - eslint: ^8.18.0 + esbuild: ^0.14.47 + eslint: ^8.19.0 eslint-define-config: ^1.5.1 eslint-plugin-import: ^2.26.0 eslint-plugin-node: ^11.1.0 - esno: ^0.16.3 execa: ^6.1.0 fs-extra: ^10.1.0 kill-port: ^1.6.1 - lint-staged: ^13.0.2 + lint-staged: ^13.0.3 minimist: ^1.2.6 node-fetch: ^3.2.6 npm-run-all: ^4.1.5 picocolors: ^1.0.0 - playwright-chromium: ^1.22.2 - pnpm: ^7.3.0 + playwright-chromium: ^1.23.1 + pnpm: ^7.5.0 prettier: 2.7.1 prompts: ^2.4.2 rimraf: ^3.0.2 @@ -61,22 +60,23 @@ importers: simple-git-hooks: ^2.8.0 sirv: ^2.0.2 tslib: ^2.4.0 + tsx: ^3.7.1 typescript: ^4.6.4 unbuild: ^0.7.4 vite: workspace:* vitepress: ^1.0.0-alpha.4 - vitest: ^0.15.1 + vitest: ^0.17.0 vue: ^3.2.37 devDependencies: - '@babel/types': 7.18.4 - '@microsoft/api-extractor': 7.25.2 + '@babel/types': 7.18.7 + '@microsoft/api-extractor': 7.28.2 '@rollup/plugin-typescript': 8.3.3_uct5nfewsakxkk4livyn3qaf3e '@types/babel__core': 7.1.19 '@types/babel__standalone': 7.1.4 '@types/convert-source-map': 1.5.2 '@types/cross-spawn': 6.0.2 '@types/debug': 4.1.7 - '@types/estree': 0.0.51 + '@types/estree': 0.0.52 '@types/etag': 1.8.1 '@types/fs-extra': 9.0.13 '@types/hash-sum': 1.0.0 @@ -91,26 +91,25 @@ importers: '@types/semver': 7.3.10 '@types/stylus': 0.48.38 '@types/ws': 8.5.3 - '@typescript-eslint/eslint-plugin': 5.28.0_ej5swszfh2mpu22thvazbkozje - '@typescript-eslint/parser': 5.28.0_yrtj344k46h67sdw7qqyyz3die + '@typescript-eslint/eslint-plugin': 5.30.4_nnp5j3mtg3i6tzbs733geadfcy + '@typescript-eslint/parser': 5.30.4_g4cxuhevh5o54harssx6h7xjim conventional-changelog-cli: 2.2.2 cross-env: 7.0.3 - esbuild: 0.14.43 - eslint: 8.18.0 + esbuild: 0.14.47 + eslint: 8.19.0 eslint-define-config: 1.5.1 - eslint-plugin-import: 2.26.0_6lykrgsjl6r2vncmjcievjkgyy - eslint-plugin-node: 11.1.0_eslint@8.18.0 - esno: 0.16.3 + eslint-plugin-import: 2.26.0_eewxtjj33uq4o73zpcjsegq3l4 + eslint-plugin-node: 11.1.0_eslint@8.19.0 execa: 6.1.0 fs-extra: 10.1.0 kill-port: 1.6.1 - lint-staged: 13.0.2 + lint-staged: 13.0.3 minimist: 1.2.6 node-fetch: 3.2.6 npm-run-all: 4.1.5 picocolors: 1.0.0 - playwright-chromium: 1.22.2 - pnpm: 7.3.0 + playwright-chromium: 1.23.1 + pnpm: 7.5.0 prettier: 2.7.1 prompts: 2.4.2 rimraf: 3.0.2 @@ -119,11 +118,12 @@ importers: simple-git-hooks: 2.8.0 sirv: 2.0.2 tslib: 2.4.0 + tsx: 3.7.1 typescript: 4.6.4 unbuild: 0.7.4 vite: link:packages/vite vitepress: 1.0.0-alpha.4 - vitest: 0.15.1 + vitest: 0.17.0 vue: 3.2.37 packages/create-vite: @@ -138,46 +138,46 @@ importers: packages/plugin-legacy: specifiers: - '@babel/core': ^7.18.5 - '@babel/standalone': ^7.18.5 + '@babel/core': ^7.18.6 + '@babel/standalone': ^7.18.7 core-js: ^3.23.1 magic-string: ^0.26.2 regenerator-runtime: ^0.13.9 systemjs: ^6.12.1 vite: workspace:* dependencies: - '@babel/standalone': 7.18.5 + '@babel/standalone': 7.18.7 core-js: 3.23.1 magic-string: 0.26.2 regenerator-runtime: 0.13.9 systemjs: 6.12.1 devDependencies: - '@babel/core': 7.18.5 + '@babel/core': 7.18.6 vite: link:../vite packages/plugin-react: specifiers: - '@babel/core': ^7.18.5 - '@babel/plugin-transform-react-jsx': ^7.17.12 - '@babel/plugin-transform-react-jsx-development': ^7.16.7 - '@babel/plugin-transform-react-jsx-self': ^7.17.12 - '@babel/plugin-transform-react-jsx-source': ^7.16.7 + '@babel/core': ^7.18.6 + '@babel/plugin-transform-react-jsx': ^7.18.6 + '@babel/plugin-transform-react-jsx-development': ^7.18.6 + '@babel/plugin-transform-react-jsx-self': ^7.18.6 + '@babel/plugin-transform-react-jsx-source': ^7.18.6 react-refresh: ^0.14.0 vite: workspace:* dependencies: - '@babel/core': 7.18.5 - '@babel/plugin-transform-react-jsx': 7.17.12_@babel+core@7.18.5 - '@babel/plugin-transform-react-jsx-development': 7.16.7_@babel+core@7.18.5 - '@babel/plugin-transform-react-jsx-self': 7.17.12_@babel+core@7.18.5 - '@babel/plugin-transform-react-jsx-source': 7.16.7_@babel+core@7.18.5 + '@babel/core': 7.18.6 + '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.18.6 react-refresh: 0.14.0 devDependencies: vite: link:../vite packages/plugin-vue: specifiers: - '@jridgewell/gen-mapping': ^0.3.1 - '@jridgewell/trace-mapping': ^0.3.13 + '@jridgewell/gen-mapping': ^0.3.2 + '@jridgewell/trace-mapping': ^0.3.14 debug: ^4.3.4 rollup: ^2.75.6 slash: ^4.0.0 @@ -185,8 +185,8 @@ importers: vite: workspace:* vue: ^3.2.37 devDependencies: - '@jridgewell/gen-mapping': 0.3.1 - '@jridgewell/trace-mapping': 0.3.13 + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.14 debug: 4.3.4 rollup: 2.75.6 slash: 4.0.0 @@ -196,27 +196,27 @@ importers: packages/plugin-vue-jsx: specifiers: - '@babel/core': ^7.18.5 + '@babel/core': ^7.18.6 '@babel/plugin-syntax-import-meta': ^7.10.4 - '@babel/plugin-transform-typescript': ^7.18.4 + '@babel/plugin-transform-typescript': ^7.18.6 '@vue/babel-plugin-jsx': ^1.1.1 vite: workspace:* dependencies: - '@babel/core': 7.18.5 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.18.5 - '@babel/plugin-transform-typescript': 7.18.4_@babel+core@7.18.5 - '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.18.5 + '@babel/core': 7.18.6 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.18.6 + '@babel/plugin-transform-typescript': 7.18.6_@babel+core@7.18.6 + '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.18.6 devDependencies: vite: link:../vite packages/vite: specifiers: '@ampproject/remapping': ^2.2.0 - '@babel/parser': ^7.18.5 - '@babel/types': ^7.18.4 - '@jridgewell/trace-mapping': ^0.3.13 + '@babel/parser': ^7.18.6 + '@babel/types': ^7.18.7 + '@jridgewell/trace-mapping': ^0.3.14 '@rollup/plugin-alias': ^3.1.9 - '@rollup/plugin-commonjs': ^21.1.0 + '@rollup/plugin-commonjs': ^22.0.1 '@rollup/plugin-dynamic-import-vars': ^1.4.3 '@rollup/plugin-json': ^4.1.0 '@rollup/plugin-node-resolve': 13.3.0 @@ -227,7 +227,7 @@ importers: cac: ^6.7.12 chokidar: ^3.5.3 connect: ^3.7.0 - connect-history-api-fallback: ^1.6.0 + connect-history-api-fallback: ^2.0.0 convert-source-map: ^1.8.0 cors: ^2.8.5 cross-spawn: ^7.0.3 @@ -235,8 +235,7 @@ importers: dotenv: ^14.3.2 dotenv-expand: ^5.1.0 es-module-lexer: ^0.10.5 - esbuild: ^0.14.43 - esno: ^0.16.3 + esbuild: ^0.14.47 estree-walker: ^3.0.1 etag: ^1.8.1 fast-glob: ^3.2.11 @@ -246,7 +245,7 @@ importers: launch-editor-middleware: ^2.4.0 magic-string: ^0.26.2 micromatch: ^4.0.5 - mlly: ^0.5.3 + mlly: ^0.5.4 mrmime: ^1.0.1 node-forge: ^1.3.1 okie: ^1.0.1 @@ -272,7 +271,7 @@ importers: ufo: ^0.8.4 ws: ^8.8.0 dependencies: - esbuild: 0.14.43 + esbuild: 0.14.47 postcss: 8.4.14 resolve: 1.22.1 rollup: 2.75.6 @@ -280,11 +279,11 @@ importers: fsevents: 2.3.2 devDependencies: '@ampproject/remapping': 2.2.0 - '@babel/parser': 7.18.5 - '@babel/types': 7.18.4 - '@jridgewell/trace-mapping': 0.3.13 + '@babel/parser': 7.18.6 + '@babel/types': 7.18.7 + '@jridgewell/trace-mapping': 0.3.14 '@rollup/plugin-alias': 3.1.9_rollup@2.75.6 - '@rollup/plugin-commonjs': 21.1.0_rollup@2.75.6 + '@rollup/plugin-commonjs': 22.0.1_rollup@2.75.6 '@rollup/plugin-dynamic-import-vars': 1.4.3_rollup@2.75.6 '@rollup/plugin-json': 4.1.0_rollup@2.75.6 '@rollup/plugin-node-resolve': 13.3.0_rollup@2.75.6 @@ -295,7 +294,7 @@ importers: cac: 6.7.12 chokidar: 3.5.3 connect: 3.7.0 - connect-history-api-fallback: 1.6.0 + connect-history-api-fallback: 2.0.0 convert-source-map: 1.8.0 cors: 2.8.5 cross-spawn: 7.0.3 @@ -303,7 +302,6 @@ importers: dotenv: 14.3.2 dotenv-expand: 5.1.0 es-module-lexer: 0.10.5 - esno: 0.16.3 estree-walker: 3.0.1 etag: 1.8.1 fast-glob: 3.2.11 @@ -312,7 +310,7 @@ importers: launch-editor-middleware: 2.4.0 magic-string: 0.26.2 micromatch: 4.0.5 - mlly: 0.5.3 + mlly: 0.5.4 mrmime: 1.0.1 node-forge: 1.3.1 okie: 1.0.1 @@ -345,10 +343,12 @@ importers: playground/alias: specifiers: + '@vue/shared': ^3.2.37 aliased-module: file:./dir/module resolve-linked: workspace:* vue: ^3.2.37 dependencies: + '@vue/shared': 3.2.37 aliased-module: file:playground/alias/dir/module vue: 3.2.37 devDependencies: @@ -363,11 +363,12 @@ importers: playground/backend-integration: specifiers: fast-glob: ^3.2.11 - tailwindcss: ^3.1.3 - dependencies: - tailwindcss: 3.1.3 + sass: ^1.53.0 + tailwindcss: ^3.1.4 devDependencies: fast-glob: 3.2.11 + sass: 1.53.0 + tailwindcss: 3.1.4 playground/cli: specifiers: {} @@ -378,17 +379,19 @@ importers: playground/css: specifiers: css-dep: link:./css-dep + css-js-dep: file:./css-js-dep fast-glob: ^3.2.11 less: ^4.1.3 postcss-nested: ^5.0.6 - sass: ^1.52.3 + sass: ^1.53.0 stylus: ^0.58.1 devDependencies: css-dep: link:css-dep + css-js-dep: file:playground/css/css-js-dep fast-glob: 3.2.11 less: 4.1.3 postcss-nested: 5.0.6 - sass: 1.52.3 + sass: 1.53.0 stylus: 0.58.1 playground/css-codesplit: @@ -401,17 +404,20 @@ importers: specifiers: less: ^4.1.3 magic-string: ^0.26.2 - sass: ^1.52.3 + sass: ^1.53.0 stylus: ^0.58.1 devDependencies: less: 4.1.3 magic-string: 0.26.2 - sass: 1.52.3 + sass: 1.53.0 stylus: 0.58.1 playground/css/css-dep: specifiers: {} + playground/css/css-js-dep: + specifiers: {} + playground/css/pkg-dep: specifiers: {} @@ -536,13 +542,16 @@ importers: playground/lib: specifiers: {} + playground/minify: + specifiers: {} + playground/multiple-entrypoints: specifiers: fast-glob: ^3.2.11 - sass: ^1.52.3 + sass: ^1.53.0 devDependencies: fast-glob: 3.2.11 - sass: 1.52.3 + sass: 1.53.0 playground/nested-deps: specifiers: @@ -706,6 +715,9 @@ importers: playground/optimize-deps/nested-include: specifiers: {} + playground/optimize-deps/non-optimizable-include: + specifiers: {} + playground/optimize-missing-deps: specifiers: express: ^4.18.1 @@ -727,6 +739,8 @@ importers: playground/preload: specifiers: '@vitejs/plugin-vue': workspace:* + dep-a: file:./dep-a + dep-including-a: file:./dep-including-a terser: ^5.14.1 vue: ^3.2.37 vue-router: ^4.0.16 @@ -735,8 +749,19 @@ importers: vue-router: 4.0.16_vue@3.2.37 devDependencies: '@vitejs/plugin-vue': link:../../packages/plugin-vue + dep-a: file:playground/preload/dep-a + dep-including-a: file:playground/preload/dep-including-a terser: 5.14.1 + playground/preload/dep-a: + specifiers: {} + + playground/preload/dep-including-a: + specifiers: + dep-a: file:../dep-a + dependencies: + dep-a: file:playground/preload/dep-a + playground/preserve-symlinks: specifiers: '@symlinks/moduleA': link:./moduleA @@ -759,9 +784,20 @@ importers: devDependencies: '@vitejs/plugin-react': link:../../packages/plugin-react + playground/react-classic: + specifiers: + '@vitejs/plugin-react': workspace:* + react: ^18.2.0 + react-dom: ^18.2.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + devDependencies: + '@vitejs/plugin-react': link:../../packages/plugin-react + playground/react-emotion: specifiers: - '@babel/plugin-proposal-pipeline-operator': ^7.18.2 + '@babel/plugin-proposal-pipeline-operator': ^7.18.6 '@emotion/babel-plugin': ^11.9.2 '@emotion/react': ^11.9.3 '@vitejs/plugin-react': workspace:* @@ -774,7 +810,7 @@ importers: react-dom: 18.2.0_react@18.2.0 react-switch: 7.0.0_biqbaboplfbrettd7655fr4n2y devDependencies: - '@babel/plugin-proposal-pipeline-operator': 7.18.2 + '@babel/plugin-proposal-pipeline-operator': 7.18.6 '@emotion/babel-plugin': 11.9.2 '@vitejs/plugin-react': link:../../packages/plugin-react @@ -783,7 +819,7 @@ importers: playground/resolve: specifiers: - '@babel/runtime': ^7.18.3 + '@babel/runtime': ^7.18.6 es5-ext: 0.10.61 normalize.css: ^8.0.1 require-pkg-with-module-field: link:./require-pkg-with-module-field @@ -794,7 +830,7 @@ importers: resolve-exports-path: link:./exports-path resolve-linked: workspace:* dependencies: - '@babel/runtime': 7.18.3 + '@babel/runtime': 7.18.6 es5-ext: 0.10.61 normalize.css: 8.0.1 require-pkg-with-module-field: link:require-pkg-with-module-field @@ -843,9 +879,14 @@ importers: define-property-exports: file:./define-property-exports express: ^4.18.1 forwarded-export: file:./forwarded-export + import-builtin-cjs: file:./import-builtin-cjs no-external-cjs: file:./no-external-cjs + no-external-css: file:./no-external-css + non-optimized-with-nested-external: file:./non-optimized-with-nested-external object-assigned-exports: file:./object-assigned-exports only-object-assigned-exports: file:./only-object-assigned-exports + optimized-cjs-with-nested-external: file:./optimized-with-nested-external + optimized-with-nested-external: file:./optimized-with-nested-external primitive-export: file:./primitive-export read-file-content: file:./read-file-content require-absolute: file:./require-absolute @@ -855,9 +896,14 @@ importers: define-properties-exports: file:playground/ssr-deps/define-properties-exports define-property-exports: file:playground/ssr-deps/define-property-exports forwarded-export: file:playground/ssr-deps/forwarded-export + import-builtin-cjs: file:playground/ssr-deps/import-builtin-cjs no-external-cjs: file:playground/ssr-deps/no-external-cjs + no-external-css: file:playground/ssr-deps/no-external-css + non-optimized-with-nested-external: file:playground/ssr-deps/non-optimized-with-nested-external object-assigned-exports: file:playground/ssr-deps/object-assigned-exports only-object-assigned-exports: file:playground/ssr-deps/only-object-assigned-exports + optimized-cjs-with-nested-external: file:playground/ssr-deps/optimized-with-nested-external + optimized-with-nested-external: file:playground/ssr-deps/optimized-with-nested-external primitive-export: file:playground/ssr-deps/primitive-export read-file-content: file:playground/ssr-deps/read-file-content require-absolute: file:playground/ssr-deps/require-absolute @@ -878,15 +924,42 @@ importers: dependencies: object-assigned-exports: file:playground/ssr-deps/object-assigned-exports + playground/ssr-deps/import-builtin-cjs: + specifiers: {} + + playground/ssr-deps/nested-external: + specifiers: {} + playground/ssr-deps/no-external-cjs: specifiers: {} + playground/ssr-deps/no-external-css: + specifiers: {} + + playground/ssr-deps/non-optimized-with-nested-external: + specifiers: + nested-external: file:../nested-external + dependencies: + nested-external: file:playground/ssr-deps/nested-external + playground/ssr-deps/object-assigned-exports: specifiers: {} playground/ssr-deps/only-object-assigned-exports: specifiers: {} + playground/ssr-deps/optimized-cjs-with-nested-external: + specifiers: + nested-external: file:../nested-external + dependencies: + nested-external: file:playground/ssr-deps/nested-external + + playground/ssr-deps/optimized-with-nested-external: + specifiers: + nested-external: file:../nested-external + dependencies: + nested-external: file:playground/ssr-deps/nested-external + playground/ssr-deps/primitive-export: specifiers: {} @@ -986,24 +1059,24 @@ importers: specifiers: '@vitejs/plugin-vue': workspace:* autoprefixer: ^10.4.7 - tailwindcss: ^3.1.3 - ts-node: ^10.8.1 + tailwindcss: ^3.1.4 + ts-node: ^10.8.2 vue: ^3.2.37 vue-router: ^4.0.16 dependencies: autoprefixer: 10.4.7 - tailwindcss: 3.1.3_ts-node@10.8.1 + tailwindcss: 3.1.4_ts-node@10.8.2 vue: 3.2.37 vue-router: 4.0.16_vue@3.2.37 devDependencies: '@vitejs/plugin-vue': link:../../packages/plugin-vue - ts-node: 10.8.1 + ts-node: 10.8.2 playground/tailwind-sourcemap: specifiers: - tailwindcss: ^3.1.3 + tailwindcss: ^3.1.4 dependencies: - tailwindcss: 3.1.3 + tailwindcss: 3.1.4 playground/tsconfig-json: specifiers: {} @@ -1018,7 +1091,7 @@ importers: less: ^4.1.3 lodash-es: ^4.17.21 pug: ^3.0.2 - sass: ^1.52.3 + sass: ^1.53.0 stylus: ^0.58.1 vue: ^3.2.37 dependencies: @@ -1029,7 +1102,7 @@ importers: js-yaml: 4.1.0 less: 4.1.3 pug: 3.0.2 - sass: 1.52.3 + sass: 1.53.0 stylus: 0.58.1 playground/vue-jsx: @@ -1066,7 +1139,7 @@ importers: '@vitejs/plugin-vue': workspace:* less: ^4.1.3 postcss-nested: ^5.0.6 - sass: ^1.52.3 + sass: ^1.53.0 vue: ^3.2.37 dependencies: vue: 3.2.37 @@ -1074,7 +1147,7 @@ importers: '@vitejs/plugin-vue': link:../../packages/plugin-vue less: 4.1.3 postcss-nested: 5.0.6 - sass: 1.52.3 + sass: 1.53.0 playground/wasm: specifiers: {} @@ -1198,7 +1271,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.14 /@babel/code-frame/7.16.7: resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} @@ -1206,9 +1279,20 @@ packages: dependencies: '@babel/highlight': 7.17.9 + /@babel/code-frame/7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + /@babel/compat-data/7.17.10: resolution: {integrity: sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==} engines: {node: '>=6.9.0'} + dev: true + + /@babel/compat-data/7.18.6: + resolution: {integrity: sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==} + engines: {node: '>=6.9.0'} /@babel/core/7.18.5: resolution: {integrity: sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==} @@ -1223,7 +1307,30 @@ packages: '@babel/parser': 7.18.5 '@babel/template': 7.16.7 '@babel/traverse': 7.18.5 - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 + convert-source-map: 1.8.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core/7.18.6: + resolution: {integrity: sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.7 + '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 + '@babel/helper-module-transforms': 7.18.6 + '@babel/helpers': 7.18.6 + '@babel/parser': 7.18.6 + '@babel/template': 7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 convert-source-map: 1.8.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -1236,7 +1343,7 @@ packages: resolution: {integrity: sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 '@jridgewell/gen-mapping': 0.1.1 jsesc: 2.5.2 dev: false @@ -1245,15 +1352,24 @@ packages: resolution: {integrity: sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 '@jridgewell/gen-mapping': 0.3.1 jsesc: 2.5.2 + dev: true + + /@babel/generator/7.18.7: + resolution: {integrity: sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 + '@jridgewell/gen-mapping': 0.3.2 + jsesc: 2.5.2 - /@babel/helper-annotate-as-pure/7.16.7: - resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} + /@babel/helper-annotate-as-pure/7.18.6: + resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.0 + '@babel/types': 7.18.7 dev: false /@babel/helper-compilation-targets/7.18.2_@babel+core@7.18.5: @@ -1267,21 +1383,34 @@ packages: '@babel/helper-validator-option': 7.16.7 browserslist: 4.20.3 semver: 6.3.0 + dev: true - /@babel/helper-create-class-features-plugin/7.18.0_@babel+core@7.18.5: - resolution: {integrity: sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==} + /@babel/helper-compilation-targets/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.5 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-function-name': 7.17.9 - '@babel/helper-member-expression-to-functions': 7.17.7 - '@babel/helper-optimise-call-expression': 7.16.7 - '@babel/helper-replace-supers': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 + '@babel/compat-data': 7.18.6 + '@babel/core': 7.18.6 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.20.3 + semver: 6.3.0 + + /@babel/helper-create-class-features-plugin/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-function-name': 7.18.6 + '@babel/helper-member-expression-to-functions': 7.18.6 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color dev: false @@ -1290,37 +1419,63 @@ packages: resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 + dev: true /@babel/helper-environment-visitor/7.18.2: resolution: {integrity: sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==} engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-environment-visitor/7.18.6: + resolution: {integrity: sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==} + engines: {node: '>=6.9.0'} /@babel/helper-function-name/7.17.9: resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.16.7 - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 + dev: true + + /@babel/helper-function-name/7.18.6: + resolution: {integrity: sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.18.6 + '@babel/types': 7.18.7 /@babel/helper-hoist-variables/7.16.7: resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 - /@babel/helper-member-expression-to-functions/7.17.7: - resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==} + /@babel/helper-hoist-variables/7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 + + /@babel/helper-member-expression-to-functions/7.18.6: + resolution: {integrity: sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 dev: false /@babel/helper-module-imports/7.16.7: resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.10 + '@babel/types': 7.18.7 + + /@babel/helper-module-imports/7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 /@babel/helper-module-transforms/7.18.0: resolution: {integrity: sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==} @@ -1333,15 +1488,31 @@ packages: '@babel/helper-validator-identifier': 7.16.7 '@babel/template': 7.16.7 '@babel/traverse': 7.18.5 - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 transitivePeerDependencies: - supports-color + dev: true - /@babel/helper-optimise-call-expression/7.16.7: - resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} + /@babel/helper-module-transforms/7.18.6: + resolution: {integrity: sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-simple-access': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.18.6 + '@babel/template': 7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 + transitivePeerDependencies: + - supports-color + + /@babel/helper-optimise-call-expression/7.18.6: + resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 dev: false /@babel/helper-plugin-utils/7.16.7: @@ -1349,19 +1520,19 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/helper-plugin-utils/7.17.12: - resolution: {integrity: sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==} + /@babel/helper-plugin-utils/7.18.6: + resolution: {integrity: sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==} engines: {node: '>=6.9.0'} - /@babel/helper-replace-supers/7.16.7: - resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==} + /@babel/helper-replace-supers/7.18.6: + resolution: {integrity: sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.2 - '@babel/helper-member-expression-to-functions': 7.17.7 - '@babel/helper-optimise-call-expression': 7.16.7 - '@babel/traverse': 7.18.2 - '@babel/types': 7.18.4 + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-member-expression-to-functions': 7.18.6 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 transitivePeerDependencies: - supports-color dev: false @@ -1370,21 +1541,44 @@ packages: resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 + dev: true + + /@babel/helper-simple-access/7.18.6: + resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 /@babel/helper-split-export-declaration/7.16.7: resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 + dev: true + + /@babel/helper-split-export-declaration/7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 /@babel/helper-validator-identifier/7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier/7.18.6: + resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-option/7.16.7: resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option/7.18.6: + resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + engines: {node: '>=6.9.0'} /@babel/helpers/7.18.2: resolution: {integrity: sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==} @@ -1392,7 +1586,18 @@ packages: dependencies: '@babel/template': 7.16.7 '@babel/traverse': 7.18.5 - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helpers/7.18.6: + resolution: {integrity: sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 transitivePeerDependencies: - supports-color @@ -1404,6 +1609,14 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.18.6 + chalk: 2.4.2 + js-tokens: 4.0.0 + /@babel/parser/7.18.5: resolution: {integrity: sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==} engines: {node: '>=6.0.0'} @@ -1411,22 +1624,29 @@ packages: dependencies: '@babel/types': 7.18.4 - /@babel/plugin-proposal-pipeline-operator/7.18.2: - resolution: {integrity: sha512-EeXGb75lqRe+BRJeRRgyPJtbYykdgoCZtIXMWohhGvxnAwmrQv/x4d6WYtk6pGk+wAkqIqVb8ySUp5rJNBTDAA==} + /@babel/parser/7.18.6: + resolution: {integrity: sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.18.7 + + /@babel/plugin-proposal-pipeline-operator/7.18.6: + resolution: {integrity: sha512-TtmOg+ew8KKLTNfOzEM/KCkwp3JKjA8E5E95rnrqnBZWs9KuXS+2yXq/x10uy+Sq9Ys6TscfRVCN2UFOhZ4bZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-pipeline-operator': 7.17.12 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-pipeline-operator': 7.18.6 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.18.5: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.18.6: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.5 + '@babel/core': 7.18.6 '@babel/helper-plugin-utils': 7.16.7 dev: false @@ -1436,101 +1656,101 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.17.12 + '@babel/helper-plugin-utils': 7.18.6 - /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.18.5: + /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.18.6: resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.5 - '@babel/helper-plugin-utils': 7.17.12 + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 dev: false - /@babel/plugin-syntax-jsx/7.17.12_@babel+core@7.18.5: - resolution: {integrity: sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==} + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.5 - '@babel/helper-plugin-utils': 7.17.12 + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 dev: false - /@babel/plugin-syntax-pipeline-operator/7.17.12: - resolution: {integrity: sha512-rYgUOy6afpBBghcDE60HjwqiwY6YSCoaJb3XcFEIH6Sx4q2W1a40zJbTbIWN4oXe9yzpUle1Q9eiyy3HHvmnDw==} + /@babel/plugin-syntax-pipeline-operator/7.18.6: + resolution: {integrity: sha512-pFtIdQomJtkTHWcNsGXhjJ5YUkL+AxJnP4G+Ol85UO6uT2fpHTPYLLE5bBeRA9cxf25qa/VKsJ3Fi67Gyqe3rA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.17.12 + '@babel/helper-plugin-utils': 7.18.6 dev: true - /@babel/plugin-syntax-typescript/7.17.12_@babel+core@7.18.5: - resolution: {integrity: sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==} + /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.5 - '@babel/helper-plugin-utils': 7.17.12 + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 dev: false - /@babel/plugin-transform-react-jsx-development/7.16.7_@babel+core@7.18.5: - resolution: {integrity: sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==} + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.5 - '@babel/plugin-transform-react-jsx': 7.17.12_@babel+core@7.18.5 + '@babel/core': 7.18.6 + '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.6 dev: false - /@babel/plugin-transform-react-jsx-self/7.17.12_@babel+core@7.18.5: - resolution: {integrity: sha512-7S9G2B44EnYOx74mue02t1uD8ckWZ/ee6Uz/qfdzc35uWHX5NgRy9i+iJSb2LFRgMd+QV9zNcStQaazzzZ3n3Q==} + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.5 - '@babel/helper-plugin-utils': 7.17.12 + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 dev: false - /@babel/plugin-transform-react-jsx-source/7.16.7_@babel+core@7.18.5: - resolution: {integrity: sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==} + /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.5 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 dev: false - /@babel/plugin-transform-react-jsx/7.17.12_@babel+core@7.18.5: - resolution: {integrity: sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ==} + /@babel/plugin-transform-react-jsx/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.5 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-jsx': 7.17.12_@babel+core@7.18.5 - '@babel/types': 7.18.0 + '@babel/core': 7.18.6 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.6 + '@babel/types': 7.18.7 dev: false - /@babel/plugin-transform-typescript/7.18.4_@babel+core@7.18.5: - resolution: {integrity: sha512-l4vHuSLUajptpHNEOUDEGsnpl9pfRLsN1XUoDQDD/YBuXTM+v37SHGS+c6n4jdcZy96QtuUuSvZYMLSSsjH8Mw==} + /@babel/plugin-transform-typescript/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-ijHNhzIrLj5lQCnI6aaNVRtGVuUZhOXFLRVFs7lLrkXTHip4FKty5oAuQdk4tywG0/WjXmjTfQCWmuzrvFer1w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.5 - '@babel/helper-create-class-features-plugin': 7.18.0_@babel+core@7.18.5 - '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-typescript': 7.17.12_@babel+core@7.18.5 + '@babel/core': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.6 transitivePeerDependencies: - supports-color dev: false @@ -1548,9 +1768,22 @@ packages: regenerator-runtime: 0.13.9 dev: false + /@babel/runtime/7.18.6: + resolution: {integrity: sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.9 + dev: false + /@babel/standalone/7.18.5: resolution: {integrity: sha512-3RlzTl3JSvbY1bvaRmuHf3fM2BSy7IbX0zqpVFjsiGO7678KE/LytwvJN+f5MGrarnUFUz2DNcCdetumWdIAKA==} engines: {node: '>=6.9.0'} + dev: true + + /@babel/standalone/7.18.7: + resolution: {integrity: sha512-AIOn3ON0KhYqAbvmkT11vi/YAlhrPn6RSPQb8Hl3PUZoE1yFwut5fQ9/oJ4Dvf2SGmO41pF7xmwP2W1RT0uJCA==} + engines: {node: '>=6.9.0'} + dev: false /@babel/template/7.16.7: resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} @@ -1558,7 +1791,15 @@ packages: dependencies: '@babel/code-frame': 7.16.7 '@babel/parser': 7.18.5 - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 + + /@babel/template/7.18.6: + resolution: {integrity: sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.18.6 + '@babel/types': 7.18.7 /@babel/traverse/7.17.10: resolution: {integrity: sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==} @@ -1566,20 +1807,20 @@ packages: dependencies: '@babel/code-frame': 7.16.7 '@babel/generator': 7.17.10 - '@babel/helper-environment-visitor': 7.18.2 - '@babel/helper-function-name': 7.17.9 + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-function-name': 7.18.6 '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 + '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.18.5 - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: false - /@babel/traverse/7.18.2: - resolution: {integrity: sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==} + /@babel/traverse/7.18.5: + resolution: {integrity: sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.16.7 @@ -1589,25 +1830,25 @@ packages: '@babel/helper-hoist-variables': 7.16.7 '@babel/helper-split-export-declaration': 7.16.7 '@babel/parser': 7.18.5 - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false + dev: true - /@babel/traverse/7.18.5: - resolution: {integrity: sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==} + /@babel/traverse/7.18.6: + resolution: {integrity: sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.18.2 - '@babel/helper-environment-visitor': 7.18.2 - '@babel/helper-function-name': 7.17.9 - '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/parser': 7.18.5 - '@babel/types': 7.18.4 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.7 + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-function-name': 7.18.6 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.18.6 + '@babel/types': 7.18.7 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: @@ -1620,19 +1861,18 @@ packages: '@babel/helper-validator-identifier': 7.16.7 to-fast-properties: 2.0.0 - /@babel/types/7.18.0: - resolution: {integrity: sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==} + /@babel/types/7.18.4: + resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.16.7 to-fast-properties: 2.0.0 - dev: false - /@babel/types/7.18.4: - resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==} + /@babel/types/7.18.7: + resolution: {integrity: sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-validator-identifier': 7.18.6 to-fast-properties: 2.0.0 /@cloudflare/workers-types/2.2.2: @@ -1644,7 +1884,6 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 - dev: true /@docsearch/css/3.1.0: resolution: {integrity: sha512-bh5IskwkkodbvC0FzSg1AxMykfDl95hebEKwxNoq4e5QaGzOXSBgW8+jnMFZ7JU4sTBiB04vZWoUSzNrPboLZA==} @@ -1762,25 +2001,25 @@ packages: resolution: {integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==} dev: false - /@esbuild-kit/cjs-loader/2.0.0: - resolution: {integrity: sha512-1ijCpmiCQcOcr0dmwwwCpzv0inWpNtEgiXDWc74AL52AhvY108M26suhWe9PMDcF1esnPJf0YSeVBLLZS6SQvg==} + /@esbuild-kit/cjs-loader/2.3.0: + resolution: {integrity: sha512-KInrVt8wlKLhWy7+y4a+E+0uBJoWgdx6Xupy+rrF4MFHA/dEt22ACvvChOZSyiqtQieYPtbPkVYSjbC7mOrFVw==} dependencies: - '@esbuild-kit/core-utils': 1.1.1 - get-tsconfig: 3.0.1 + '@esbuild-kit/core-utils': 2.0.2 + get-tsconfig: 4.1.0 dev: true - /@esbuild-kit/core-utils/1.1.1: - resolution: {integrity: sha512-Y5QM1ip6nUvycH8dc/bfNPLNyVt2ccBLB09lAndUvfCza/UwkAfYSiNMbcAnkLcEciEENMm6Lsyt1L98K57v3w==} + /@esbuild-kit/core-utils/2.0.2: + resolution: {integrity: sha512-clNYQUsqtc36pzW5EufMsahcbLG45EaW3YDyf0DlaS0eCMkDXpxIlHwPC0rndUwG6Ytk9sMSD5k1qHbwYEC/OQ==} dependencies: - esbuild: 0.14.38 + esbuild: 0.14.47 + source-map-support: 0.5.21 dev: true - /@esbuild-kit/esm-loader/2.1.0: - resolution: {integrity: sha512-zE7BepoWvVhyoHDEnc2whD9x27UzdRIcUguOD6mUx8PzYjEw2pdNsY+2sP9PeGxW6YJvtLOqcDj3tqhxj61IPw==} + /@esbuild-kit/esm-loader/2.4.0: + resolution: {integrity: sha512-zS720jXh06nfg5yAzm6oob4sWN9VTP2E1SonhFgEb6zCBswa4S8fOQ/4Bksz1flDgn56NPqoTTDn2XmWRyMG9Q==} dependencies: - '@esbuild-kit/core-utils': 1.1.1 - es-module-lexer: 0.10.5 - get-tsconfig: 3.0.1 + '@esbuild-kit/core-utils': 2.0.2 + get-tsconfig: 4.1.0 dev: true /@eslint/eslintrc/1.3.0: @@ -1838,6 +2077,15 @@ packages: '@jridgewell/set-array': 1.1.1 '@jridgewell/sourcemap-codec': 1.4.13 '@jridgewell/trace-mapping': 0.3.13 + dev: true + + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.1 + '@jridgewell/sourcemap-codec': 1.4.13 + '@jridgewell/trace-mapping': 0.3.14 /@jridgewell/resolve-uri/3.0.7: resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} @@ -1862,13 +2110,19 @@ packages: dependencies: '@jridgewell/resolve-uri': 3.0.7 '@jridgewell/sourcemap-codec': 1.4.13 + dev: true + + /@jridgewell/trace-mapping/0.3.14: + resolution: {integrity: sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==} + dependencies: + '@jridgewell/resolve-uri': 3.0.7 + '@jridgewell/sourcemap-codec': 1.4.13 /@jridgewell/trace-mapping/0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.0.7 '@jridgewell/sourcemap-codec': 1.4.13 - dev: true /@mapbox/node-pre-gyp/1.0.9: resolution: {integrity: sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==} @@ -1888,24 +2142,24 @@ packages: - supports-color dev: false - /@microsoft/api-extractor-model/7.18.2: - resolution: {integrity: sha512-m7MCvJrudnWyE4iuRhdmgJTdTkYLw+yN/XUp3y9sxicu5/mNdg8y4pflaM82ZbLakhfGreMlB/XgjvyGbLHwkA==} + /@microsoft/api-extractor-model/7.21.0: + resolution: {integrity: sha512-NN4mXzoQWTuzznIcnLWeV6tGyn6Os9frDK6M/mmTXZ73vUYOvSWoKQ5SYzyzP7HF3YtvTmr1Rs+DsBb0HRx7WQ==} dependencies: '@microsoft/tsdoc': 0.14.1 '@microsoft/tsdoc-config': 0.16.1 - '@rushstack/node-core-library': 3.45.7 + '@rushstack/node-core-library': 3.49.0 dev: true - /@microsoft/api-extractor/7.25.2: - resolution: {integrity: sha512-ITuiZqMszZE38dGqavkFFIAW/GQGfkk8ahgBqVj3j1qD4wioPTRlSidhQDCezExAhrMt/bTkuZ3woLeR0uiSsg==} + /@microsoft/api-extractor/7.28.2: + resolution: {integrity: sha512-sl97erZ5Zh3ov5dvV/rMSt45//dYf7C5Y6PCpIXpFidDYMyRwN+pizZ543g2d8D5/WbthGvsZoYcYSzG7CkjHQ==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.18.2 + '@microsoft/api-extractor-model': 7.21.0 '@microsoft/tsdoc': 0.14.1 '@microsoft/tsdoc-config': 0.16.1 - '@rushstack/node-core-library': 3.45.7 - '@rushstack/rig-package': 0.3.12 - '@rushstack/ts-command-line': 4.11.1 + '@rushstack/node-core-library': 3.49.0 + '@rushstack/rig-package': 0.3.13 + '@rushstack/ts-command-line': 4.12.1 colors: 1.2.5 lodash: 4.17.21 resolve: 1.17.0 @@ -2012,6 +2266,22 @@ packages: rollup: 2.75.6 dev: true + /@rollup/plugin-commonjs/22.0.1_rollup@2.75.6: + resolution: {integrity: sha512-dGfEZvdjDHObBiP5IvwTKMVeq/tBZGMBHZFMdIV1ClMM/YoWS34xrHFGfag9SN2ZtMgNZRFruqvxZQEa70O6nQ==} + engines: {node: '>= 12.0.0'} + peerDependencies: + rollup: ^2.68.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.75.6 + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 7.2.0 + is-reference: 1.2.1 + magic-string: 0.25.9 + resolve: 1.22.1 + rollup: 2.75.6 + dev: true + /@rollup/plugin-dynamic-import-vars/1.4.3_rollup@2.75.6: resolution: {integrity: sha512-VYP9BBVI0pcYpLp/DkFT8YP+EmqmWFMmWXoTObDH6OouERxJyPsIj0tC3HxhjNBOKgcRc7eV75IQItzELt7QSg==} engines: {node: '>= 10.0.0'} @@ -2129,8 +2399,8 @@ packages: picomatch: 2.3.1 dev: true - /@rushstack/node-core-library/3.45.7: - resolution: {integrity: sha512-DHfOvgPrm9X4uILlUfGgiqcobe5QGNDmqqYLM8dJ5M5fqQ9H5GwyUwBnFeRsxBo0b75RE83l41Oze+gdHKvKaA==} + /@rushstack/node-core-library/3.49.0: + resolution: {integrity: sha512-yBJRzGgUNFwulVrwwBARhbGaHsxVMjsZ9JwU1uSBbqPYCdac+t2HYdzi4f4q/Zpgb0eNbwYj2yxgHYpJORNEaw==} dependencies: '@types/node': 12.20.24 colors: 1.2.5 @@ -2143,15 +2413,15 @@ packages: z-schema: 5.0.3 dev: true - /@rushstack/rig-package/0.3.12: - resolution: {integrity: sha512-ZzxuBWG0wbOtI+9IHYvOsr3QN52GtxTWpcaHMsQ/PC9us2ve/k0xK0XOMu+CtStyHSnBG2nDdnF9vFv9HMYOZg==} + /@rushstack/rig-package/0.3.13: + resolution: {integrity: sha512-4/2+yyA/uDl7LQvtYtFs1AkhSWuaIGEKhP9/KK2nNARqOVc5eCXmu1vyOqr5mPvNq7sHoIR+sG84vFbaKYGaDA==} dependencies: resolve: 1.17.0 strip-json-comments: 3.1.1 dev: true - /@rushstack/ts-command-line/4.11.1: - resolution: {integrity: sha512-Xo8LaQOXlNSfp+qIuIPb1tfX7b4H21ksqiMo/HbeZI5AX1klHMqKjWcEs0AqgE9huvQj6cvnCla8Eq/GDcwMIg==} + /@rushstack/ts-command-line/4.12.1: + resolution: {integrity: sha512-S1Nev6h/kNnamhHeGdp30WgxZTA+B76SJ/P721ctP7DrnC+rrjAc6h/R80I4V0cA2QuEEcMdVOQCtK2BTjsOiQ==} dependencies: '@types/argparse': 1.0.38 argparse: 1.0.10 @@ -2161,19 +2431,15 @@ packages: /@tsconfig/node10/1.0.8: resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} - dev: true /@tsconfig/node12/1.0.9: resolution: {integrity: sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==} - dev: true /@tsconfig/node14/1.0.1: resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==} - dev: true /@tsconfig/node16/1.0.2: resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} - dev: true /@types/argparse/1.0.38: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -2187,7 +2453,7 @@ packages: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: '@babel/parser': 7.18.5 - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.17.1 @@ -2196,7 +2462,7 @@ packages: /@types/babel__generator/7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 dev: true /@types/babel__standalone/7.1.4: @@ -2211,13 +2477,13 @@ packages: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.18.5 - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 dev: true /@types/babel__traverse/7.17.1: resolution: {integrity: sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 dev: true /@types/braces/3.0.1: @@ -2258,6 +2524,10 @@ packages: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} dev: true + /@types/estree/0.0.52: + resolution: {integrity: sha512-BZWrtCU0bMVAIliIV+HJO1f1PR41M7NKjfxrFJwwhKI1KwhwOxYw1SXg9ao+CIMt774nFuGiG6eU+udtbEI9oQ==} + dev: true + /@types/etag/1.8.1: resolution: {integrity: sha512-bsKkeSqN7HYyYntFRAmzcwx/dKW4Wa+KVMTInANlI72PWLQmOpZu96j0OqHZGArW4VQwCmJPteQlXaUDeOB0WQ==} dependencies: @@ -2363,8 +2633,8 @@ packages: '@types/node': 17.0.42 dev: true - /@typescript-eslint/eslint-plugin/5.28.0_ej5swszfh2mpu22thvazbkozje: - resolution: {integrity: sha512-DXVU6Cg29H2M6EybqSg2A+x8DgO9TCUBRp4QEXQHJceLS7ogVDP0g3Lkg/SZCqcvkAP/RruuQqK0gdlkgmhSUA==} + /@typescript-eslint/eslint-plugin/5.30.4_nnp5j3mtg3i6tzbs733geadfcy: + resolution: {integrity: sha512-xjujQISAIa4HAaos8fcMZXmqkuZqMx6icdxkI88jMM/eNe4J8AuTLYnLK+zdm0mBYLyctdFf//UE4/xFCcQzYQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -2374,12 +2644,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.28.0_yrtj344k46h67sdw7qqyyz3die - '@typescript-eslint/scope-manager': 5.28.0 - '@typescript-eslint/type-utils': 5.28.0_yrtj344k46h67sdw7qqyyz3die - '@typescript-eslint/utils': 5.28.0_yrtj344k46h67sdw7qqyyz3die + '@typescript-eslint/parser': 5.30.4_g4cxuhevh5o54harssx6h7xjim + '@typescript-eslint/scope-manager': 5.30.4 + '@typescript-eslint/type-utils': 5.30.4_g4cxuhevh5o54harssx6h7xjim + '@typescript-eslint/utils': 5.30.4_g4cxuhevh5o54harssx6h7xjim debug: 4.3.4 - eslint: 8.18.0 + eslint: 8.19.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 @@ -2390,8 +2660,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.28.0_yrtj344k46h67sdw7qqyyz3die: - resolution: {integrity: sha512-ekqoNRNK1lAcKhZESN/PdpVsWbP9jtiNqzFWkp/yAUdZvJalw2heCYuqRmM5eUJSIYEkgq5sGOjq+ZqsLMjtRA==} + /@typescript-eslint/parser/5.30.4_g4cxuhevh5o54harssx6h7xjim: + resolution: {integrity: sha512-/ge1HtU63wVoED4VnlU2o+FPFmi017bPYpeSrCmd8Ycsti4VSxXrmcpXXm7JpI4GT0Aa7qviabv1PEp6L5bboQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2400,26 +2670,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.28.0 - '@typescript-eslint/types': 5.28.0 - '@typescript-eslint/typescript-estree': 5.28.0_typescript@4.6.4 + '@typescript-eslint/scope-manager': 5.30.4 + '@typescript-eslint/types': 5.30.4 + '@typescript-eslint/typescript-estree': 5.30.4_typescript@4.6.4 debug: 4.3.4 - eslint: 8.18.0 + eslint: 8.19.0 typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.28.0: - resolution: {integrity: sha512-LeBLTqF/he1Z+boRhSqnso6YrzcKMTQ8bO/YKEe+6+O/JGof9M0g3IJlIsqfrK/6K03MlFIlycbf1uQR1IjE+w==} + /@typescript-eslint/scope-manager/5.30.4: + resolution: {integrity: sha512-DNzlQwGSiGefz71JwaHrpcaAX3zYkEcy8uVuan3YMKOa6qeW/y+7SaD8KIsIAruASwq6P+U4BjWBWtM2O+mwBQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.28.0 - '@typescript-eslint/visitor-keys': 5.28.0 + '@typescript-eslint/types': 5.30.4 + '@typescript-eslint/visitor-keys': 5.30.4 dev: true - /@typescript-eslint/type-utils/5.28.0_yrtj344k46h67sdw7qqyyz3die: - resolution: {integrity: sha512-SyKjKh4CXPglueyC6ceAFytjYWMoPHMswPQae236zqe1YbhvCVQyIawesYywGiu98L9DwrxsBN69vGIVxJ4mQQ==} + /@typescript-eslint/type-utils/5.30.4_g4cxuhevh5o54harssx6h7xjim: + resolution: {integrity: sha512-55cf1dZviwwv+unDB+mF8vZkfta5muTK6bppPvenWWCD7slZZ0DEsXUjZerqy7Rq8s3J4SXdg4rMIY8ngCtTmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -2428,22 +2698,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/utils': 5.28.0_yrtj344k46h67sdw7qqyyz3die + '@typescript-eslint/utils': 5.30.4_g4cxuhevh5o54harssx6h7xjim debug: 4.3.4 - eslint: 8.18.0 + eslint: 8.19.0 tsutils: 3.21.0_typescript@4.6.4 typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.28.0: - resolution: {integrity: sha512-2OOm8ZTOQxqkPbf+DAo8oc16sDlVR5owgJfKheBkxBKg1vAfw2JsSofH9+16VPlN9PWtv8Wzhklkqw3k/zCVxA==} + /@typescript-eslint/types/5.30.4: + resolution: {integrity: sha512-NTEvqc+Vvu8Q6JeAKryHk2eqLKqsr2St3xhIjhOjQv5wQUBhaTuix4WOSacqj0ONWfKVU12Eug3LEAB95GBkMA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.28.0_typescript@4.6.4: - resolution: {integrity: sha512-9GX+GfpV+F4hdTtYc6OV9ZkyYilGXPmQpm6AThInpBmKJEyRSIjORJd1G9+bknb7OTFYL+Vd4FBJAO6T78OVqA==} + /@typescript-eslint/typescript-estree/5.30.4_typescript@4.6.4: + resolution: {integrity: sha512-V4VnEs6/J9/nNizaA12IeU4SAeEYaiKr7XndLNfV5+3zZSB4hIu6EhHJixTKhvIqA+EEHgBl6re8pivBMLLO1w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -2451,8 +2721,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.28.0 - '@typescript-eslint/visitor-keys': 5.28.0 + '@typescript-eslint/types': 5.30.4 + '@typescript-eslint/visitor-keys': 5.30.4 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -2463,29 +2733,29 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.28.0_yrtj344k46h67sdw7qqyyz3die: - resolution: {integrity: sha512-E60N5L0fjv7iPJV3UGc4EC+A3Lcj4jle9zzR0gW7vXhflO7/J29kwiTGITA2RlrmPokKiZbBy2DgaclCaEUs6g==} + /@typescript-eslint/utils/5.30.4_g4cxuhevh5o54harssx6h7xjim: + resolution: {integrity: sha512-a+GQrJzOUhn4WT1mUumXDyam+22Oo4c5K/jnZ+6r/4WTQF3q8e4CsC9PLHb4SnOClzOqo/5GLZWvkE1aa5UGKQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 5.28.0 - '@typescript-eslint/types': 5.28.0 - '@typescript-eslint/typescript-estree': 5.28.0_typescript@4.6.4 - eslint: 8.18.0 + '@typescript-eslint/scope-manager': 5.30.4 + '@typescript-eslint/types': 5.30.4 + '@typescript-eslint/typescript-estree': 5.30.4_typescript@4.6.4 + eslint: 8.19.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.18.0 + eslint-utils: 3.0.0_eslint@8.19.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys/5.28.0: - resolution: {integrity: sha512-BtfP1vCor8cWacovzzPFOoeW4kBQxzmhxGoOpt0v1SFvG+nJ0cWaVdJk7cky1ArTcFHHKNIxyo2LLr3oNkSuXA==} + /@typescript-eslint/visitor-keys/5.30.4: + resolution: {integrity: sha512-ulKGse3mruSc8x6l8ORSc6+1ORyJzKmZeIaRTu/WpaF/jx3vHvEn5XZUKF9XaVg2710mFmTAUlLcLYLPp/Zf/Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.28.0 + '@typescript-eslint/types': 5.30.4 eslint-visitor-keys: 3.3.0 dev: true @@ -2493,11 +2763,11 @@ packages: resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} dev: false - /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.18.5: + /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.18.6: resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==} dependencies: '@babel/helper-module-imports': 7.16.7 - '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.18.5 + '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.18.6 '@babel/template': 7.16.7 '@babel/traverse': 7.17.10 '@babel/types': 7.17.10 @@ -2661,17 +2931,14 @@ packages: acorn: 7.4.1 acorn-walk: 7.2.0 xtend: 4.0.2 - dev: false /acorn-walk/7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} - dev: false /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: true /acorn/7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} @@ -2682,7 +2949,6 @@ packages: resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} engines: {node: '>=0.4.0'} hasBin: true - dev: true /add-stream/1.0.0: resolution: {integrity: sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=} @@ -2788,11 +3054,9 @@ packages: /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true /arg/5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: false /argparse/1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -2849,7 +3113,7 @@ packages: dev: true /asap/2.0.6: - resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=} + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: true /asn1js/2.4.0: @@ -3040,7 +3304,6 @@ packages: /camelcase-css/2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - dev: false /camelcase-keys/6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} @@ -3208,7 +3471,7 @@ packages: dev: true /color-name/1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -3254,7 +3517,7 @@ packages: dev: true /commondir/1.0.1: - resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true /compare-func/2.0.0: @@ -3299,8 +3562,8 @@ packages: /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /connect-history-api-fallback/1.6.0: - resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + /connect-history-api-fallback/2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} dev: true @@ -3321,7 +3584,7 @@ packages: dev: true /console-control-strings/1.1.0: - resolution: {integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=} + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: false /constantinople/4.0.1: @@ -3555,7 +3818,6 @@ packages: /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true /cross-env/7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} @@ -3718,7 +3980,6 @@ packages: /defined/1.0.0: resolution: {integrity: sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==} - dev: false /defu/5.0.1: resolution: {integrity: sha512-EPS1carKg+dkEVy3qNTqIdp2qV7mUP08nIsupfwQpz++slCVRw7qbQyWvSTig+kFPwz2XXp5/kIIkH+CwrJKkQ==} @@ -3738,7 +3999,7 @@ packages: dev: false /delegates/1.0.0: - resolution: {integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=} + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: false /denque/1.5.1: @@ -3769,7 +4030,6 @@ packages: acorn-node: 1.8.2 defined: 1.0.0 minimist: 1.2.6 - dev: false /dicer/0.3.0: resolution: {integrity: sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==} @@ -3780,12 +4040,10 @@ packages: /didyoumean/1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: false /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dev: true /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -3796,7 +4054,6 @@ packages: /dlv/1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dev: false /doctrine/2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} @@ -3956,17 +4213,8 @@ packages: ext: 1.6.0 dev: false - /esbuild-android-64/0.14.38: - resolution: {integrity: sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-android-64/0.14.43: - resolution: {integrity: sha512-kqFXAS72K6cNrB6RiM7YJ5lNvmWRDSlpi7ZuRZ1hu1S3w0zlwcoCxWAyM23LQUyZSs1PbjHgdbbfYAN8IGh6xg==} + /esbuild-android-64/0.14.47: + resolution: {integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -3981,17 +4229,8 @@ packages: dev: true optional: true - /esbuild-android-arm64/0.14.38: - resolution: {integrity: sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-android-arm64/0.14.43: - resolution: {integrity: sha512-bKS2BBFh+7XZY9rpjiHGRNA7LvWYbZWP87pLehggTG7tTaCDvj8qQGOU/OZSjCSKDYbgY7Q+oDw8RlYQ2Jt2BA==} + /esbuild-android-arm64/0.14.47: + resolution: {integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -4006,17 +4245,8 @@ packages: dev: true optional: true - /esbuild-darwin-64/0.14.38: - resolution: {integrity: sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-64/0.14.43: - resolution: {integrity: sha512-/3PSilx011ttoieRGkSZ0XV8zjBf2C9enV4ScMMbCT4dpx0mFhMOpFnCHkOK0pWGB8LklykFyHrWk2z6DENVUg==} + /esbuild-darwin-64/0.14.47: + resolution: {integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -4031,17 +4261,8 @@ packages: dev: true optional: true - /esbuild-darwin-arm64/0.14.38: - resolution: {integrity: sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-arm64/0.14.43: - resolution: {integrity: sha512-1HyFUKs8DMCBOvw1Qxpr5Vv/ThNcVIFb5xgXWK3pyT40WPvgYIiRTwJCvNs4l8i5qWF8/CK5bQxJVDjQvtv0Yw==} + /esbuild-darwin-arm64/0.14.47: + resolution: {integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -4056,17 +4277,8 @@ packages: dev: true optional: true - /esbuild-freebsd-64/0.14.38: - resolution: {integrity: sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-64/0.14.43: - resolution: {integrity: sha512-FNWc05TPHYgaXjbPZO5/rJKSBslfG6BeMSs8GhwnqAKP56eEhvmzwnIz1QcC9cRVyO+IKqWNfmHFkCa1WJTULA==} + /esbuild-freebsd-64/0.14.47: + resolution: {integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -4081,17 +4293,8 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64/0.14.38: - resolution: {integrity: sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-arm64/0.14.43: - resolution: {integrity: sha512-amrYopclz3VohqisOPR6hA3GOWA3LZC1WDLnp21RhNmoERmJ/vLnOpnrG2P/Zao+/erKTCUqmrCIPVtj58DRoA==} + /esbuild-freebsd-arm64/0.14.47: + resolution: {integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -4106,17 +4309,8 @@ packages: dev: true optional: true - /esbuild-linux-32/0.14.38: - resolution: {integrity: sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-32/0.14.43: - resolution: {integrity: sha512-KoxoEra+9O3AKVvgDFvDkiuddCds6q71owSQEYwjtqRV7RwbPzKxJa6+uyzUulHcyGVq0g15K0oKG5CFBcvYDw==} + /esbuild-linux-32/0.14.47: + resolution: {integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -4131,17 +4325,8 @@ packages: dev: true optional: true - /esbuild-linux-64/0.14.38: - resolution: {integrity: sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-64/0.14.43: - resolution: {integrity: sha512-EwINwGMyiJMgBby5/SbMqKcUhS5AYAZ2CpEBzSowsJPNBJEdhkCTtEjk757TN/wxgbu3QklqDM6KghY660QCUw==} + /esbuild-linux-64/0.14.47: + resolution: {integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -4156,17 +4341,8 @@ packages: dev: true optional: true - /esbuild-linux-arm/0.14.38: - resolution: {integrity: sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm/0.14.43: - resolution: {integrity: sha512-e6YzQUoDxxtyamuF12eVzzRC7bbEFSZohJ6igQB9tBqnNmIQY3fI6Cns3z2wxtbZ3f2o6idkD2fQnlvs2902Dg==} + /esbuild-linux-arm/0.14.47: + resolution: {integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -4181,17 +4357,8 @@ packages: dev: true optional: true - /esbuild-linux-arm64/0.14.38: - resolution: {integrity: sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm64/0.14.43: - resolution: {integrity: sha512-UlSpjMWllAc70zYbHxWuDS3FJytyuR/gHJYBr8BICcTNb/TSOYVBg6U7b3jZ3mILTrgzwJUHwhEwK18FZDouUQ==} + /esbuild-linux-arm64/0.14.47: + resolution: {integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -4206,17 +4373,8 @@ packages: dev: true optional: true - /esbuild-linux-mips64le/0.14.38: - resolution: {integrity: sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-mips64le/0.14.43: - resolution: {integrity: sha512-f+v8cInPEL1/SDP//CfSYzcDNgE4CY3xgDV81DWm3KAPWzhvxARrKxB1Pstf5mB56yAslJDxu7ryBUPX207EZA==} + /esbuild-linux-mips64le/0.14.47: + resolution: {integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -4231,51 +4389,24 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le/0.14.38: - resolution: {integrity: sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-ppc64le/0.14.43: - resolution: {integrity: sha512-5wZYMDGAL/K2pqkdIsW+I4IR41kyfHr/QshJcNpUfK3RjB3VQcPWOaZmc+74rm4ZjVirYrtz+jWw0SgxtxRanA==} + /esbuild-linux-ppc64le/0.14.47: + resolution: {integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /esbuild-linux-riscv64/0.14.38: - resolution: {integrity: sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==} + /esbuild-linux-riscv64/0.14.47: + resolution: {integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true - /esbuild-linux-riscv64/0.14.43: - resolution: {integrity: sha512-lYcAOUxp85hC7lSjycJUVSmj4/9oEfSyXjb/ua9bNl8afonaduuqtw7hvKMoKuYnVwOCDw4RSfKpcnIRDWq+Bw==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - optional: true - - /esbuild-linux-s390x/0.14.38: - resolution: {integrity: sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-s390x/0.14.43: - resolution: {integrity: sha512-27e43ZhHvhFE4nM7HqtUbMRu37I/4eNSUbb8FGZWszV+uLzMIsHDwLoBiJmw7G9N+hrehNPeQ4F5Ujad0DrUKQ==} + /esbuild-linux-s390x/0.14.47: + resolution: {integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -4290,17 +4421,8 @@ packages: dev: true optional: true - /esbuild-netbsd-64/0.14.38: - resolution: {integrity: sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-netbsd-64/0.14.43: - resolution: {integrity: sha512-2mH4QF6hHBn5zzAfxEI/2eBC0mspVsZ6UVo821LpAJKMvLJPBk3XJO5xwg7paDqSqpl7p6IRrAenW999AEfJhQ==} + /esbuild-netbsd-64/0.14.47: + resolution: {integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -4315,17 +4437,8 @@ packages: dev: true optional: true - /esbuild-openbsd-64/0.14.38: - resolution: {integrity: sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-openbsd-64/0.14.43: - resolution: {integrity: sha512-ZhQpiZjvqCqO8jKdGp9+8k9E/EHSA+zIWOg+grwZasI9RoblqJ1QiZqqi7jfd6ZrrG1UFBNGe4m0NFxCFbMVbg==} + /esbuild-openbsd-64/0.14.47: + resolution: {integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -4340,17 +4453,8 @@ packages: dev: true optional: true - /esbuild-sunos-64/0.14.38: - resolution: {integrity: sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /esbuild-sunos-64/0.14.43: - resolution: {integrity: sha512-DgxSi9DaHReL9gYuul2rrQCAapgnCJkh3LSHPKsY26zytYppG0HgkgVF80zjIlvEsUbGBP/GHQzBtrezj/Zq1Q==} + /esbuild-sunos-64/0.14.47: + resolution: {integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -4365,17 +4469,8 @@ packages: dev: true optional: true - /esbuild-windows-32/0.14.38: - resolution: {integrity: sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-32/0.14.43: - resolution: {integrity: sha512-Ih3+2O5oExiqm0mY6YYE5dR0o8+AspccQ3vIAtRodwFvhuyGLjb0Hbmzun/F3Lw19nuhPMu3sW2fqIJ5xBxByw==} + /esbuild-windows-32/0.14.47: + resolution: {integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -4390,17 +4485,8 @@ packages: dev: true optional: true - /esbuild-windows-64/0.14.38: - resolution: {integrity: sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-64/0.14.43: - resolution: {integrity: sha512-8NsuNfI8xwFuJbrCuI+aBqNTYkrWErejFO5aYM+yHqyHuL8mmepLS9EPzAzk8rvfaJrhN0+RvKWAcymViHOKEw==} + /esbuild-windows-64/0.14.47: + resolution: {integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -4415,17 +4501,8 @@ packages: dev: true optional: true - /esbuild-windows-arm64/0.14.38: - resolution: {integrity: sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-arm64/0.14.43: - resolution: {integrity: sha512-7ZlD7bo++kVRblJEoG+cepljkfP8bfuTPz5fIXzptwnPaFwGS6ahvfoYzY7WCf5v/1nX2X02HDraVItTgbHnKw==} + /esbuild-windows-arm64/0.14.47: + resolution: {integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -4456,60 +4533,32 @@ packages: esbuild-windows-arm64: 0.13.15 dev: true - /esbuild/0.14.38: - resolution: {integrity: sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==} + /esbuild/0.14.47: + resolution: {integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - esbuild-android-64: 0.14.38 - esbuild-android-arm64: 0.14.38 - esbuild-darwin-64: 0.14.38 - esbuild-darwin-arm64: 0.14.38 - esbuild-freebsd-64: 0.14.38 - esbuild-freebsd-arm64: 0.14.38 - esbuild-linux-32: 0.14.38 - esbuild-linux-64: 0.14.38 - esbuild-linux-arm: 0.14.38 - esbuild-linux-arm64: 0.14.38 - esbuild-linux-mips64le: 0.14.38 - esbuild-linux-ppc64le: 0.14.38 - esbuild-linux-riscv64: 0.14.38 - esbuild-linux-s390x: 0.14.38 - esbuild-netbsd-64: 0.14.38 - esbuild-openbsd-64: 0.14.38 - esbuild-sunos-64: 0.14.38 - esbuild-windows-32: 0.14.38 - esbuild-windows-64: 0.14.38 - esbuild-windows-arm64: 0.14.38 - dev: true - - /esbuild/0.14.43: - resolution: {integrity: sha512-Uf94+kQmy/5jsFwKWiQB4hfo/RkM9Dh7b79p8yqd1tshULdr25G2szLz631NoH3s2ujnKEKVD16RmOxvCNKRFA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - esbuild-android-64: 0.14.43 - esbuild-android-arm64: 0.14.43 - esbuild-darwin-64: 0.14.43 - esbuild-darwin-arm64: 0.14.43 - esbuild-freebsd-64: 0.14.43 - esbuild-freebsd-arm64: 0.14.43 - esbuild-linux-32: 0.14.43 - esbuild-linux-64: 0.14.43 - esbuild-linux-arm: 0.14.43 - esbuild-linux-arm64: 0.14.43 - esbuild-linux-mips64le: 0.14.43 - esbuild-linux-ppc64le: 0.14.43 - esbuild-linux-riscv64: 0.14.43 - esbuild-linux-s390x: 0.14.43 - esbuild-netbsd-64: 0.14.43 - esbuild-openbsd-64: 0.14.43 - esbuild-sunos-64: 0.14.43 - esbuild-windows-32: 0.14.43 - esbuild-windows-64: 0.14.43 - esbuild-windows-arm64: 0.14.43 + esbuild-android-64: 0.14.47 + esbuild-android-arm64: 0.14.47 + esbuild-darwin-64: 0.14.47 + esbuild-darwin-arm64: 0.14.47 + esbuild-freebsd-64: 0.14.47 + esbuild-freebsd-arm64: 0.14.47 + esbuild-linux-32: 0.14.47 + esbuild-linux-64: 0.14.47 + esbuild-linux-arm: 0.14.47 + esbuild-linux-arm64: 0.14.47 + esbuild-linux-mips64le: 0.14.47 + esbuild-linux-ppc64le: 0.14.47 + esbuild-linux-riscv64: 0.14.47 + esbuild-linux-s390x: 0.14.47 + esbuild-netbsd-64: 0.14.47 + esbuild-openbsd-64: 0.14.47 + esbuild-sunos-64: 0.14.47 + esbuild-windows-32: 0.14.47 + esbuild-windows-64: 0.14.47 + esbuild-windows-arm64: 0.14.47 /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -4520,7 +4569,7 @@ packages: dev: true /escape-string-regexp/1.0.5: - resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} /escape-string-regexp/4.0.0: @@ -4541,7 +4590,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.3_cfsupm63rr3qvqifljk6nmy67u: + /eslint-module-utils/2.7.3_baa5opwrycsxtp3dnugww5zmnq: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} peerDependencies: @@ -4559,7 +4608,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.28.0_yrtj344k46h67sdw7qqyyz3die + '@typescript-eslint/parser': 5.30.4_g4cxuhevh5o54harssx6h7xjim debug: 3.2.7 eslint-import-resolver-node: 0.3.6 find-up: 2.1.0 @@ -4567,18 +4616,18 @@ packages: - supports-color dev: true - /eslint-plugin-es/3.0.1_eslint@8.18.0: + /eslint-plugin-es/3.0.1_eslint@8.19.0: resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 8.18.0 + eslint: 8.19.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true - /eslint-plugin-import/2.26.0_6lykrgsjl6r2vncmjcievjkgyy: + /eslint-plugin-import/2.26.0_eewxtjj33uq4o73zpcjsegq3l4: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -4588,14 +4637,14 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.28.0_yrtj344k46h67sdw7qqyyz3die + '@typescript-eslint/parser': 5.30.4_g4cxuhevh5o54harssx6h7xjim array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 doctrine: 2.1.0 - eslint: 8.18.0 + eslint: 8.19.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3_cfsupm63rr3qvqifljk6nmy67u + eslint-module-utils: 2.7.3_baa5opwrycsxtp3dnugww5zmnq has: 1.0.3 is-core-module: 2.9.0 is-glob: 4.0.3 @@ -4609,14 +4658,14 @@ packages: - supports-color dev: true - /eslint-plugin-node/11.1.0_eslint@8.18.0: + /eslint-plugin-node/11.1.0_eslint@8.19.0: resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=5.16.0' dependencies: - eslint: 8.18.0 - eslint-plugin-es: 3.0.1_eslint@8.18.0 + eslint: 8.19.0 + eslint-plugin-es: 3.0.1_eslint@8.19.0 eslint-utils: 2.1.0 ignore: 5.2.0 minimatch: 3.1.2 @@ -4647,13 +4696,13 @@ packages: eslint-visitor-keys: 1.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.18.0: + /eslint-utils/3.0.0_eslint@8.19.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.18.0 + eslint: 8.19.0 eslint-visitor-keys: 2.1.0 dev: true @@ -4672,8 +4721,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.18.0: - resolution: {integrity: sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==} + /eslint/8.19.0: + resolution: {integrity: sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: @@ -4686,7 +4735,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.18.0 + eslint-utils: 3.0.0_eslint@8.19.0 eslint-visitor-keys: 3.3.0 espree: 9.3.2 esquery: 1.4.0 @@ -4716,13 +4765,6 @@ packages: - supports-color dev: true - /esno/0.16.3: - resolution: {integrity: sha512-6slSBEV1lMKcX13DBifvnDFpNno5WXhw4j/ff7RI0y51BZiDqEe5dNhhjhIQ3iCOQuzsm2MbVzmwqbN78BBhPg==} - hasBin: true - dependencies: - tsx: 3.4.0 - dev: true - /espree/9.3.2: resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5126,8 +5168,8 @@ packages: resolution: {integrity: sha1-dKILqKSr7OWuGZrQPyvMaP38m6U=} dev: true - /get-tsconfig/3.0.1: - resolution: {integrity: sha512-+m30eQjbcf3xMNdnacXH5IDAKUMbI7Mhbf3e1BHif1FzBlUhBzBlmOVc7kL4+kB035l8OCyBdI3dNXZ3of9HqA==} + /get-tsconfig/4.1.0: + resolution: {integrity: sha512-bhshxJhpfmeQ8x4fAvDqJV2VfGp5TfHdLpmBpNZZhMoVyfIrOippBW4mayC3DT9Sxuhcyl56Efw61qL28hG4EQ==} dev: true /git-raw-commits/2.0.11: @@ -5230,7 +5272,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.16.0 + uglify-js: 3.16.1 dev: true /hard-rejection/2.1.0: @@ -5243,7 +5285,7 @@ packages: dev: true /has-flag/3.0.0: - resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} /has-flag/4.0.0: @@ -5270,7 +5312,7 @@ packages: dev: true /has-unicode/2.0.1: - resolution: {integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=} + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} dev: false /has/1.0.3: @@ -5832,8 +5874,8 @@ packages: /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /lint-staged/13.0.2: - resolution: {integrity: sha512-qQLfLTh9z34eMzfEHENC+QBskZfxjomrf+snF3xJ4BzilORbD989NLqQ00ughsF/A+PT41e87+WsMFabf9++pQ==} + /lint-staged/13.0.3: + resolution: {integrity: sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==} engines: {node: ^14.13.1 || >=16.0.0} hasBin: true dependencies: @@ -6018,7 +6060,6 @@ packages: /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true /map-obj/1.0.1: resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} @@ -6229,11 +6270,11 @@ packages: pkg-types: 0.3.2 dev: true - /mlly/0.5.3: - resolution: {integrity: sha512-im69tuLD9EJh9fc9TZRpJEFvsBcGMez7glUCWDcHWWCKzhvPmNvyaYjp/+h0qJJN/Xovrs//GzGjOOKmFw4Gog==} + /mlly/0.5.4: + resolution: {integrity: sha512-gFlsLWCjVwu/LM/ZfYUkmnbBoz7eyBIMUwVQYDqhd8IvtNFDeZ95uwAyxHE2Xx7tQwePQaCo4fECZ9MWFEUTgQ==} dependencies: - pathe: 0.2.0 - pkg-types: 0.3.2 + pathe: 0.3.2 + pkg-types: 0.3.3 dev: true /modify-values/1.0.1: @@ -6442,7 +6483,6 @@ packages: /object-hash/3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - dev: false /object-inspect/1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} @@ -6680,6 +6720,10 @@ packages: resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} dev: true + /pathe/0.3.2: + resolution: {integrity: sha512-qhnmX0TOqlCvdWWTkoM83wh5J8fZ2yhbDEc9MlsnAEtEc+JCwxUKEwmd6pkY9hRe6JR1Uecbc14VcAKX2yFSTA==} + dev: true + /pathval/1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true @@ -6737,23 +6781,31 @@ packages: pathe: 0.2.0 dev: true - /playwright-chromium/1.22.2: - resolution: {integrity: sha512-msRcdCIJkdM2R6S+NMJZ02uyZHzJ7TIzkjzs3usDJ1Pwacp9HMhv9T/S4AxtpFXFmvMZq7UJYb0x+tCdHx9+0w==} + /pkg-types/0.3.3: + resolution: {integrity: sha512-6AJcCMnjUQPQv/Wk960w0TOmjhdjbeaQJoSKWRQv9N3rgkessCu6J0Ydsog/nw1MbpnxHuPzYbfOn2KmlZO1FA==} + dependencies: + jsonc-parser: 3.0.0 + mlly: 0.5.4 + pathe: 0.3.2 + dev: true + + /playwright-chromium/1.23.1: + resolution: {integrity: sha512-Cx9VkJBFPxSim7qz571aDXU+oXmqYJW2W+Po6eiq2vi/abkH87BtxM/E0tsFJavFMB8ZpBWX1Z+77LctZv3V5w==} engines: {node: '>=14'} hasBin: true requiresBuild: true dependencies: - playwright-core: 1.22.2 + playwright-core: 1.23.1 dev: true - /playwright-core/1.22.2: - resolution: {integrity: sha512-w/hc/Ld0RM4pmsNeE6aL/fPNWw8BWit2tg+TfqJ3+p59c6s3B6C8mXvXrIPmfQEobkcFDc+4KirNzOQ+uBSP1Q==} + /playwright-core/1.23.1: + resolution: {integrity: sha512-9CXsE0gawph4KXl6oUaa0ehHRySZjHvly4TybcBXDvzK3N3o6L/eZ8Q6iVWUiMn0LLS5bRFxo1qEtOETlYJxjw==} engines: {node: '>=14'} hasBin: true dev: true - /pnpm/7.3.0: - resolution: {integrity: sha512-HOXT6V+AznAyjL2Ay3TuuJQucsEguUiKjqyQq4WPPwOpaaILhkKvu8Nn1/OQWGi9V6T7OciyrctAKeYyCha6Ow==} + /pnpm/7.5.0: + resolution: {integrity: sha512-sb9wJNyx/d8l3Gze2jI1y8BGNbb/ga+JT3SrGNiH+C5KbtZ4wmgePBWGjaiGugcpT9+vQ5MO//+QlVWhMCpedQ==} engines: {node: '>=14.6'} hasBin: true dev: true @@ -6777,9 +6829,8 @@ packages: dependencies: camelcase-css: 2.0.1 postcss: 8.4.14 - dev: false - /postcss-load-config/3.1.4_apxnowcr5uhxb4jlsbpuejnlvi: + /postcss-load-config/3.1.4_i7duc3lt6p42geuj2nwruihc6u: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -6793,7 +6844,7 @@ packages: dependencies: lilconfig: 2.0.5 postcss: 8.4.14 - ts-node: 10.8.1 + ts-node: 10.8.2 yaml: 1.10.2 dev: false @@ -6812,7 +6863,6 @@ packages: lilconfig: 2.0.5 postcss: 8.4.14 yaml: 1.10.2 - dev: false /postcss-load-config/4.0.1_postcss@8.4.14: resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} @@ -6905,7 +6955,6 @@ packages: dependencies: postcss: 8.4.14 postcss-selector-parser: 6.0.10 - dev: false /postcss-selector-parser/6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} @@ -7123,7 +7172,6 @@ packages: /quick-lru/5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - dev: false /range-parser/1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} @@ -7390,10 +7438,10 @@ packages: rollup: 2.75.6 typescript: 4.6.4 optionalDependencies: - '@babel/code-frame': 7.16.7 + '@babel/code-frame': 7.18.6 dev: true - /rollup-plugin-esbuild/4.9.1_2uefy6dldbldonrghlgjus4ieu: + /rollup-plugin-esbuild/4.9.1_ktu2kzacvi5wdos6kd33ysa7ja: resolution: {integrity: sha512-qn/x7Wz9p3Xnva99qcb+nopH0d2VJwVnsxJTGEg+Sh2Z3tqQl33MhOwzekVo1YTKgv+yAmosjcBRJygMfGrtLw==} engines: {node: '>=12'} peerDependencies: @@ -7403,7 +7451,7 @@ packages: '@rollup/pluginutils': 4.2.1 debug: 4.3.4 es-module-lexer: 0.9.3 - esbuild: 0.14.43 + esbuild: 0.14.47 joycon: 3.1.1 jsonc-parser: 3.0.0 rollup: 2.75.6 @@ -7463,8 +7511,8 @@ packages: truncate-utf8-bytes: 1.0.2 dev: true - /sass/1.52.3: - resolution: {integrity: sha512-LNNPJ9lafx+j1ArtA7GyEJm9eawXN8KlA1+5dF6IZyoONg1Tyo/g+muOsENWJH/2Q1FHbbV4UwliU0cXMa/VIA==} + /sass/1.53.0: + resolution: {integrity: sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==} engines: {node: '>=12.0.0'} hasBin: true dependencies: @@ -7552,7 +7600,7 @@ packages: dev: true /set-blocking/2.0.0: - resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: false /setprototypeof/1.2.0: @@ -7930,8 +7978,8 @@ packages: resolution: {integrity: sha512-hqTN6kW+pN6/qro6G9OZ7ceDQOcYno020zBQKpZQLsJhYTDMCMNfXi/Y8duF5iW+4WWZr42ry0MMkcRGpbwG2A==} dev: false - /tailwindcss/3.1.3: - resolution: {integrity: sha512-PRJNYdSIthrb8hjmAyymEyEN8Yo61TMXpzyFUpxULeeyRn3Y3gpvuw6FlRTKrJvK7thSGKRnhT36VovVx4WeMA==} + /tailwindcss/3.1.4: + resolution: {integrity: sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==} engines: {node: '>=12.13.0'} hasBin: true dependencies: @@ -7956,13 +8004,12 @@ packages: postcss-selector-parser: 6.0.10 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 - resolve: 1.22.0 + resolve: 1.22.1 transitivePeerDependencies: - ts-node - dev: false - /tailwindcss/3.1.3_ts-node@10.8.1: - resolution: {integrity: sha512-PRJNYdSIthrb8hjmAyymEyEN8Yo61TMXpzyFUpxULeeyRn3Y3gpvuw6FlRTKrJvK7thSGKRnhT36VovVx4WeMA==} + /tailwindcss/3.1.4_ts-node@10.8.2: + resolution: {integrity: sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==} engines: {node: '>=12.13.0'} hasBin: true dependencies: @@ -7982,12 +8029,12 @@ packages: postcss: 8.4.14 postcss-import: 14.1.0_postcss@8.4.14 postcss-js: 4.0.0_postcss@8.4.14 - postcss-load-config: 3.1.4_apxnowcr5uhxb4jlsbpuejnlvi + postcss-load-config: 3.1.4_i7duc3lt6p42geuj2nwruihc6u postcss-nested: 5.0.6_postcss@8.4.14 postcss-selector-parser: 6.0.10 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 - resolve: 1.22.0 + resolve: 1.22.1 transitivePeerDependencies: - ts-node dev: false @@ -8062,13 +8109,13 @@ packages: resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} dev: false - /tinypool/0.1.3: - resolution: {integrity: sha512-2IfcQh7CP46XGWGGbdyO4pjcKqsmVqFAPcXfPxcPXmOWt9cYkTP9HcDmGgsfijYoAEc4z9qcpM/BaBz46Y9/CQ==} + /tinypool/0.2.1: + resolution: {integrity: sha512-HFU5ZYVq3wBfhSaf8qdqGsneaqXm0FgJQpoUlJbVdHpRLzm77IneKAD3RjzJWZvIv0YpPB9S7LUW53f6BE6ZSg==} engines: {node: '>=14.0.0'} dev: true - /tinyspy/0.3.2: - resolution: {integrity: sha512-2+40EP4D3sFYy42UkgkFFB+kiX2Tg3URG/lVvAZFfLxgGpnWl5qQJuBw1gaLttq8UOS+2p3C0WrhJnQigLTT2Q==} + /tinyspy/0.3.3: + resolution: {integrity: sha512-gRiUR8fuhUf0W9lzojPf1N1euJYA30ISebSfgca8z76FOvXtVXqd5ojEIaKLWbDQhAaC3ibxZIjqbyi4ybjcTw==} engines: {node: '>=14.0.0'} dev: true @@ -8113,13 +8160,13 @@ packages: dev: true /truncate-utf8-bytes/1.0.2: - resolution: {integrity: sha1-QFkjkJWS1W94pYGENLC3hInKXys=} + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} dependencies: utf8-byte-length: 1.0.4 dev: true - /ts-node/10.8.1: - resolution: {integrity: sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==} + /ts-node/10.8.2: + resolution: {integrity: sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -8145,7 +8192,6 @@ packages: make-error: 1.3.6 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true /tsconfck/2.0.1: resolution: {integrity: sha512-/ipap2eecmVBmBlsQLBRbUmUNFwNJV/z2E+X0FPtHNjPwroMZQ7m39RMaCywlCulBheYXgMdUlWDd9rzxwMA0Q==} @@ -8185,13 +8231,13 @@ packages: typescript: 4.6.4 dev: true - /tsx/3.4.0: - resolution: {integrity: sha512-WWakMoC5OqUXvOVZuyAySyETjAZ9rJxZXRbbOhYXDCeHF95hQUBa07UwUFu1yprlnrJ/W7XWfA99YTNKO//KxQ==} + /tsx/3.7.1: + resolution: {integrity: sha512-dwl1GBdkwVQ9zRxTmETGi+ck8pewNm2QXh+HK6jHxdHmeCjfCL+Db3b4VX/dOMDSS2hle1j5LzQoo8OpVXu6XQ==} hasBin: true dependencies: - '@esbuild-kit/cjs-loader': 2.0.0 - '@esbuild-kit/core-utils': 1.1.1 - '@esbuild-kit/esm-loader': 2.1.0 + '@esbuild-kit/cjs-loader': 2.3.0 + '@esbuild-kit/core-utils': 2.0.2 + '@esbuild-kit/esm-loader': 2.4.0 optionalDependencies: fsevents: 2.3.2 dev: true @@ -8277,8 +8323,8 @@ packages: resolution: {integrity: sha512-/+BmBDe8GvlB2nIflWasLLAInjYG0bC9HRnfEpNi4sw77J2AJNnEVnTDReVrehoh825+Q/evF3THXTAweyam2g==} dev: true - /uglify-js/3.16.0: - resolution: {integrity: sha512-FEikl6bR30n0T3amyBh3LoiBdqHRy/f4H80+My34HOesOKyHfOsxAPAxOoqC0JUnC1amnO0IwkYC3sko51caSw==} + /uglify-js/3.16.1: + resolution: {integrity: sha512-X5BGTIDH8U6IQ1TIRP62YC36k+ULAa1d59BxlWvPUJ1NkW5L3FwcGfEzuVvGmhJFBu0YJ5Ge25tmRISqCmLiRQ==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -8307,7 +8353,7 @@ packages: chalk: 5.0.1 consola: 2.15.3 defu: 6.0.0 - esbuild: 0.14.43 + esbuild: 0.14.47 hookable: 5.1.1 jiti: 1.13.0 magic-string: 0.26.1 @@ -8321,7 +8367,7 @@ packages: rimraf: 3.0.2 rollup: 2.75.6 rollup-plugin-dts: 4.2.1_7tpfgeokwovvsnuai4vwqwidpi - rollup-plugin-esbuild: 4.9.1_2uefy6dldbldonrghlgjus4ieu + rollup-plugin-esbuild: 4.9.1_ktu2kzacvi5wdos6kd33ysa7ja scule: 0.2.1 typescript: 4.6.4 untyped: 0.4.4 @@ -8349,7 +8395,7 @@ packages: dependencies: '@babel/core': 7.18.5 '@babel/standalone': 7.18.5 - '@babel/types': 7.18.4 + '@babel/types': 7.18.7 scule: 0.2.1 transitivePeerDependencies: - supports-color @@ -8369,7 +8415,7 @@ packages: dev: false /utf8-byte-length/1.0.4: - resolution: {integrity: sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=} + resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} dev: true /util-deprecate/1.0.2: @@ -8388,7 +8434,6 @@ packages: /v8-compile-cache-lib/3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true /v8-compile-cache/2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} @@ -8432,16 +8477,19 @@ packages: - react-dom dev: true - /vitest/0.15.1: - resolution: {integrity: sha512-NaNFi93JKSuvV4YGnfQ0l0GKYxH0EsLcTrrXaCzd6qfVEZM/RJpjwSevg6waNFqu2DyN6e0aHHdrCZW5/vh5NA==} + /vitest/0.17.0: + resolution: {integrity: sha512-5YO9ubHo0Zg35mea3+zZAr4sCku32C3usvIH5COeJB48TZV/R0J9aGNtGOOqEWZYfOKP0pGZUvTokne3x/QEFg==} engines: {node: '>=v14.16.0'} hasBin: true peerDependencies: + '@edge-runtime/vm': '*' '@vitest/ui': '*' c8: '*' happy-dom: '*' jsdom: '*' peerDependenciesMeta: + '@edge-runtime/vm': + optional: true '@vitest/ui': optional: true c8: @@ -8457,8 +8505,8 @@ packages: chai: 4.3.6 debug: 4.3.4 local-pkg: 0.4.1 - tinypool: 0.1.3 - tinyspy: 0.3.2 + tinypool: 0.2.1 + tinyspy: 0.3.3 vite: link:packages/vite transitivePeerDependencies: - supports-color @@ -8698,7 +8746,6 @@ packages: /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} - dev: true /youch/2.2.2: resolution: {integrity: sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==} @@ -8727,6 +8774,12 @@ packages: version: 0.0.0 dev: false + file:playground/css/css-js-dep: + resolution: {directory: playground/css/css-js-dep, type: directory} + name: css-js-dep + version: 1.0.0 + dev: true + file:playground/define/commonjs-dep: resolution: {directory: playground/define/commonjs-dep, type: directory} name: commonjs-dep @@ -8742,7 +8795,7 @@ packages: file:playground/external/dep-that-imports-vue: resolution: {directory: playground/external/dep-that-imports-vue, type: directory} name: '@vitejs/dep-that-imports-vue' - version: 0.0.1 + version: 0.0.0 dependencies: vue: 3.2.37 dev: false @@ -8750,7 +8803,7 @@ packages: file:playground/external/dep-that-requires-vue: resolution: {directory: playground/external/dep-that-requires-vue, type: directory} name: '@vitejs/dep-that-requires-vue' - version: 0.0.1 + version: 0.0.0 dependencies: vue: 3.2.37 dev: false @@ -8855,6 +8908,19 @@ packages: version: 0.0.0 dev: false + file:playground/preload/dep-a: + resolution: {directory: playground/preload/dep-a, type: directory} + name: dep-a + version: 0.0.0 + + file:playground/preload/dep-including-a: + resolution: {directory: playground/preload/dep-including-a, type: directory} + name: dep-including-a + version: 0.0.0 + dependencies: + dep-a: file:playground/preload/dep-a + dev: true + file:playground/react/jsx-entry: resolution: {directory: playground/react/jsx-entry, type: directory} name: jsx-entry @@ -8881,10 +8947,36 @@ packages: object-assigned-exports: file:playground/ssr-deps/object-assigned-exports dev: false + file:playground/ssr-deps/import-builtin-cjs: + resolution: {directory: playground/ssr-deps/import-builtin-cjs, type: directory} + name: import-builtin + version: 0.0.0 + dev: false + + file:playground/ssr-deps/nested-external: + resolution: {directory: playground/ssr-deps/nested-external, type: directory} + name: nested-external + version: 0.0.0 + dev: false + file:playground/ssr-deps/no-external-cjs: resolution: {directory: playground/ssr-deps/no-external-cjs, type: directory} - name: primitive-export + name: no-external-cjs + version: 0.0.0 + dev: false + + file:playground/ssr-deps/no-external-css: + resolution: {directory: playground/ssr-deps/no-external-css, type: directory} + name: no-external-css + version: 0.0.0 + dev: false + + file:playground/ssr-deps/non-optimized-with-nested-external: + resolution: {directory: playground/ssr-deps/non-optimized-with-nested-external, type: directory} + name: non-optimized-with-nested-external version: 0.0.0 + dependencies: + nested-external: file:playground/ssr-deps/nested-external dev: false file:playground/ssr-deps/object-assigned-exports: @@ -8899,6 +8991,14 @@ packages: version: 0.0.0 dev: false + file:playground/ssr-deps/optimized-with-nested-external: + resolution: {directory: playground/ssr-deps/optimized-with-nested-external, type: directory} + name: optimized-with-nested-external + version: 0.0.0 + dependencies: + nested-external: file:playground/ssr-deps/nested-external + dev: false + file:playground/ssr-deps/primitive-export: resolution: {directory: playground/ssr-deps/primitive-export, type: directory} name: primitive-export