diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 85b1b7078c7d0a..763dfcfc467d9d 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -24,14 +24,14 @@ "typescript", // breaking changes - "source-map", - "react-refresh", + "cac", // `cac:v6.7.10+` has breaking changes + "react-router", // `react-router:v6.0.0+` has breaking changes + "react-router-dom", // `react-router-dom:v6.0.0+` has breaking changes + "source-map", // `source-map:v0.7.0+` needs more investigation - // breaks since "3.0.1", needs futher investigate - "postcss-load-config", - - // ESM Only - "strip-ansi", - "periscopic" + // ESM Only => https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c#how-can-i-move-my-commonjs-project-to-esm + "node-fetch", + "periscopic", + "strip-ansi" ] } diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4a73ecb9974c7d..af17a906be4fdb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - node_version: [12, 14, 16] + node_version: [12, 14, 16, 17] include: - os: macos-latest node_version: 16 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2bba1b6f533a56..610cc04d033f96 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,11 +6,13 @@ Hi! We are really excited that you are interested in contributing to Vite. Befor The Vite repo is a monorepo using pnpm workspaces. The package manager used to install and link dependencies must be [pnpm](https://pnpm.io/). -To development and test the core `vite` package: +To develop and test the core `vite` package: -1. Go to `packages/vite` and run `pnpm run dev`. This starts `rollup` in watch mode. +1. Run `pnpm i` in Vite's root folder -2. Run `pnpm link` in `packages/vite`. This links `vite` globally so that you can: +2. Go to `packages/vite` and run `pnpm run dev`. This starts `rollup` in watch mode. + +3. Run `pnpm link --global` in `packages/vite`. This links `vite` globally so that you can: - Run `pnpm link vite` in another Vite project to use the locally built Vite; - Use the `vite` binary anywhere. diff --git a/docs/.vitepress/theme/sponsors.css b/docs/.vitepress/theme/sponsors.css index d069d7bc7a78d5..00b1e8e5f6a5e3 100644 --- a/docs/.vitepress/theme/sponsors.css +++ b/docs/.vitepress/theme/sponsors.css @@ -8,10 +8,15 @@ } .sponsors img { - max-width: 200px; + max-width: 180px; height: 40px; display: block; - margin: 1.25rem 0; + margin-top: 1em; +} + +.sponsors a.platinum img { + max-width: 240px; + height: 60px; } .sponsors.frontpage { diff --git a/docs/.vitepress/theme/sponsors.json b/docs/.vitepress/theme/sponsors.json index fd4a2e944630b3..93e1ee38528b52 100644 --- a/docs/.vitepress/theme/sponsors.json +++ b/docs/.vitepress/theme/sponsors.json @@ -1,4 +1,11 @@ [ + { + "id": "stackblitz", + "name": "StackBlitz", + "href": "https://stackblitz.com/", + "src": "/stackblitz.svg", + "tier": "platinum" + }, { "id": "tailwind", "name": "Tailwind Labs", diff --git a/docs/config/index.md b/docs/config/index.md index 25744ef6daa2ea..d2495dadbbf2ff 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -52,15 +52,16 @@ 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 (`serve` or `build`) or the [mode](/guide/env-and-mode) being used, it can export a function instead: +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: ```js export default defineConfig(({ command, mode }) => { if (command === 'serve') { return { - // serve specific config + // dev specific config } } else { + // command === 'build' return { // build specific config } @@ -68,6 +69,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`). + ### Async Config If the config needs to call async function, it can export a async function instead: @@ -741,6 +744,14 @@ export default defineConfig({ When set to `true`, the build will also generate a SSR manifest for determining style links and asset preload directives in production. +### build.ssr + +- **Type:** `boolean | string` +- **Default:** `undefined` +- **Related:** [Server-Side Rendering](/guide/ssr) + + Produce SSR-oriented build. The value can be a string to directly specify the SSR entry, or `true`, which requires specifying the SSR entry via `rollupOptions.input`. + ### build.minify - **Type:** `boolean | 'terser' | 'esbuild'` @@ -789,6 +800,77 @@ export default defineConfig({ Set to `{}` to enable rollup watcher. This is mostly used in cases that involve build-only plugins or integrations processes. +## Preview Options + +### preview.host + +- **Type:** `string | boolean` +- **Default:** [`server.host`](#server_host) + + Specify which IP addresses the server should listen on. + Set this to `0.0.0.0` or `true` to listen on all addresses, including LAN and public addresses. + + This can be set via the CLI using `--host 0.0.0.0` or `--host`. + +### preview.port + +- **Type:** `number` +- **Default:** `5000` + + Specify server port. Note if the port is already being used, Vite will automatically try the next available port so this may not be the actual port the server ends up listening on. + +**Example:** + +```js +export default defineConfig({ + server: { + port: 3030 + }, + preview: { + port: 8080 + } +}) +``` + +### preview.strictPort + +- **Type:** `boolean` +- **Default:** [`server.strictPort`](#server_strictport) + + Set to `true` to exit if port is already in use, instead of automatically try the next available port. + +### preview.https + +- **Type:** `boolean | https.ServerOptions` +- **Default:** [`server.https`](#server_https) + + Enable TLS + HTTP/2. Note this downgrades to TLS only when the [`server.proxy` option](#server-proxy) is also used. + + The value can also be an [options object](https://nodejs.org/api/https.html#https_https_createserver_options_requestlistener) passed to `https.createServer()`. + +### preview.open + +- **Type:** `boolean | string` +- **Default:** [`server.open`](#server_open) + + Automatically open the app in the browser on server start. When the value is a string, it will be used as the URL's pathname. If you want to open the server in a specific browser you like, you can set the env `process.env.BROWSER` (e.g. `firefox`). See [the `open` package](https://github.com/sindresorhus/open#app) for more details. + +### preview.proxy + +- **Type:** `Record` +- **Default:** [`server.proxy`](#server_proxy) + + Configure custom proxy rules for the dev server. Expects an object of `{ key: options }` pairs. If the key starts with `^`, it will be interpreted as a `RegExp`. The `configure` option can be used to access the proxy instance. + + Uses [`http-proxy`](https://github.com/http-party/node-http-proxy). Full options [here](https://github.com/http-party/node-http-proxy#options). + +### preview.cors + +- **Type:** `boolean | CorsOptions` +- **Default:** [`server.cors`](#server_proxy) + + Configure CORS for the dev server. This is enabled by default and allows any origin. Pass an [options object](https://github.com/expressjs/cors) to fine tune the behavior or `false` to disable. + ## Dep Optimization Options - **Related:** [Dependency Pre-Bundling](/guide/dep-pre-bundling) diff --git a/docs/guide/api-javascript.md b/docs/guide/api-javascript.md index 24ea8da2d9a220..0977e256bd9934 100644 --- a/docs/guide/api-javascript.md +++ b/docs/guide/api-javascript.md @@ -25,6 +25,8 @@ const { createServer } = require('vite') } }) await server.listen() + + server.printUrls() })() ``` @@ -138,6 +140,34 @@ const { build } = require('vite') })() ``` +## `preview` + +**Experimental** + +**Type Signature:** + +```ts +async function preview(inlineConfig?: InlineConfig): Promise +``` + +**Example Usage:** + +```js +const { preview } = require('vite') + +;(async () => { + const previewServer = await preview({ + // any valid user config options, plus `mode` and `configFile` + preview: { + port: 8080, + open: true + } + }) + + previewServer.printUrls() +})() +``` + ## `resolveConfig` **Type Signature:** @@ -150,6 +180,8 @@ async function resolveConfig( ): Promise ``` +The `command` value is `serve` in dev (in the cli `vite`, `vite dev`, and `vite serve` are aliases). + ## `transformWithEsbuild` **Type Signature:** diff --git a/docs/guide/api-plugin.md b/docs/guide/api-plugin.md index 5a76575d8fe914..c95f7fd0a3a3ea 100644 --- a/docs/guide/api-plugin.md +++ b/docs/guide/api-plugin.md @@ -17,7 +17,7 @@ When learning, debugging, or authoring plugins we suggest including [vite-plugin ## Conventions -If the plugin doesn't use Vite specific hooks and can be implemented as a [Compatible Rollup Plugin](#rollup-plugin-compatibility), then it is recommended to use the [Rollup Plugin naming conventions](https://rollupjs.org/guide/en/#conventions) +If the plugin doesn't use Vite specific hooks and can be implemented as a [Compatible Rollup Plugin](#rollup-plugin-compatibility), then it is recommended to use the [Rollup Plugin naming conventions](https://rollupjs.org/guide/en/#conventions) (except for virtual modules naming, see note below). - Rollup Plugins should have a clear name with `rollup-plugin-` prefix. - Include `rollup-plugin` and `vite-plugin` keywords in package.json. @@ -36,6 +36,10 @@ If your plugin is only going to work for a particular framework, its name should - `vite-plugin-react-` prefix for React Plugins - `vite-plugin-svelte-` prefix for Svelte Plugins +Rollup recommends prefixing the module ID for 'virtual modules' (e.g. for helper functions) with `\0`. This prevents other plugins from trying to process it. But this convention for paths isn't browser-friendly. + +Vite convention for virtual modules is to prefix the path with `virtual:`. If possible the plugin name should be used as a namespace to avoid collisions with other plugins in the ecosystem. For example, a `vite-plugin-posts` could ask users to import a `virtual:posts` or `virtual:posts/helpers` virtual modules to get build time information. + ## Plugins config Users will add plugins to the project `devDependencies` and configure them using the `plugins` array option. @@ -218,7 +222,7 @@ Vite plugins can also provide hooks that serve Vite-specific purposes. These hoo // use stored config in other hooks transform(code, id) { if (config.command === 'serve') { - // serve: plugin invoked by dev server + // dev: plugin invoked by dev server } else { // build: plugin invoked by Rollup } @@ -227,6 +231,8 @@ Vite plugins can also provide hooks that serve Vite-specific purposes. These hoo } ``` + Note that the `command` value is `serve` in dev (in the cli `vite`, `vite dev`, and `vite serve` are aliases). + ### `configureServer` - **Type:** `(server: ViteDevServer) => (() => void) | void | Promise<(() => void) | void>` diff --git a/docs/guide/env-and-mode.md b/docs/guide/env-and-mode.md index dcd108a8c71f05..e764325e1948cf 100644 --- a/docs/guide/env-and-mode.md +++ b/docs/guide/env-and-mode.md @@ -62,7 +62,7 @@ To achieve, you can create an `env.d.ts` in `src` directory, then augment `Impor ```typescript /// -interface ImportMetaEnv extends Readonly> { +interface ImportMetaEnv { readonly VITE_APP_TITLE: string // more env variables... } diff --git a/docs/guide/index.md b/docs/guide/index.md index 14e3fead1b02ae..040dc7849c5d4c 100644 --- a/docs/guide/index.md +++ b/docs/guide/index.md @@ -115,10 +115,10 @@ Running `vite` starts the dev server using the current working directory as root In a project where Vite is installed, you can use the `vite` binary in your npm scripts, or run it directly with `npx vite`. Here is the default npm scripts in a scaffolded Vite project: -```json +```jsonc { "scripts": { - "dev": "vite", // start dev server + "dev": "vite", // start dev server, aliases: `vite dev`, `vite serve` "build": "vite build", // build for production "preview": "vite preview" // locally preview production build } diff --git a/docs/guide/migration.md b/docs/guide/migration.md index e3707f3581dcf7..12cab91d9f48e3 100644 --- a/docs/guide/migration.md +++ b/docs/guide/migration.md @@ -76,7 +76,7 @@ const vueI18nPlugin = { return } if (/\.ya?ml$/.test(id)) { - code = JSON.stringify(require('js-yaml').safeLoad(code.trim())) + code = JSON.stringify(require('js-yaml').load(code.trim())) } return `export default Comp => { Comp.i18n = ${code} diff --git a/docs/guide/static-deploy.md b/docs/guide/static-deploy.md index 51431d388e3fe0..e20b0bcc3e7837 100644 --- a/docs/guide/static-deploy.md +++ b/docs/guide/static-deploy.md @@ -33,11 +33,11 @@ By default, the build output will be placed at `dist`. You may deploy this `dist ### Testing The App Locally -Once you've built the app, you may test it locally by running `npm run serve` command. +Once you've built the app, you may test it locally by running `npm run preview` command. ```bash $ npm run build -$ npm run serve +$ npm run preview ``` The `vite preview` command will boot up local static web server that serves the files from `dist` at http://localhost:5000. It's an easy way to check if the production build looks OK in your local environment. @@ -47,17 +47,13 @@ You may configure the port of the server py passing `--port` flag as an argument ```json { "scripts": { - "serve": "vite preview --port 8080" + "preview": "vite preview --port 8080" } } ``` Now the `preview` method will launch the server at http://localhost:8080. -::: tip NOTE -If you change the script name from `serve` to `preview`, you may run into issues with some package managers due to the way they handle [Pre & Post scripts](https://docs.npmjs.com/cli/v7/using-npm/scripts#pre--post-scripts). -::: - ## GitHub Pages 1. Set the correct `base` in `vite.config.js`. @@ -88,7 +84,7 @@ If you change the script name from `serve` to `preview`, you may run into issues git commit -m 'deploy' # if you are deploying to https://.github.io - # git push -f git@github.com:/.github.io.git master + # git push -f git@github.com:/.github.io.git main # if you are deploying to https://.github.io/ # git push -f git@github.com:/.git master:gh-pages @@ -187,7 +183,13 @@ You can also run the above script in your CI setup to enable automatic deploymen { "hosting": { "public": "dist", - "ignore": [] + "ignore": [], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] } } ``` diff --git a/docs/index.md b/docs/index.md index 317d510f8a3874..bed942c95a8f5b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -25,7 +25,11 @@ footer: MIT Licensed | Copyright © 2019-present Evan You & Vite Contributors

Sponsors

- + + + +
+
diff --git a/docs/public/_headers b/docs/public/_headers index f7fa3afc626277..00f819dff2e83b 100644 --- a/docs/public/_headers +++ b/docs/public/_headers @@ -1,3 +1,11 @@ /assets/* cache-control: max-age=31536000 - cache-control: immutable \ No newline at end of file + cache-control: immutable + +/*.svg + cache-control: max-age=604800 + cache-control: immutable + +/*.png + cache-control: max-age=604800 + cache-control: immutable diff --git a/docs/public/stackblitz.svg b/docs/public/stackblitz.svg new file mode 100644 index 00000000000000..2c356bdfb0038a --- /dev/null +++ b/docs/public/stackblitz.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/package.json b/package.json index f91ff6563338ed..11b87ef87dbba5 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "node": ">=12.0.0" }, "scripts": { - "preinstall": "node scripts/preinstall", + "preinstall": "npx only-allow pnpm", "format": "prettier --write .", "lint": "eslint packages/*/{src,types}/**", "test": "run-s test-serve test-build", @@ -28,40 +28,40 @@ "ci-docs": "run-s build-vite build-plugin-vue build-docs" }, "devDependencies": { - "@microsoft/api-extractor": "^7.18.11", + "@microsoft/api-extractor": "^7.18.19", "@types/fs-extra": "^9.0.13", "@types/jest": "^27.0.2", - "@types/node": "^15.12.2", - "@types/semver": "^7.3.8", - "@typescript-eslint/eslint-plugin": "^5.2.0", - "@typescript-eslint/parser": "^5.2.0", + "@types/node": "^16.11.7", + "@types/semver": "^7.3.9", + "@typescript-eslint/eslint-plugin": "^5.3.1", + "@typescript-eslint/parser": "^5.3.1", "chalk": "^4.1.2", "conventional-changelog-cli": "^2.1.1", "cross-env": "^7.0.3", - "eslint": "^8.1.0", - "eslint-define-config": "^1.1.2", + "esbuild": "^0.13.12", + "eslint": "^8.2.0", + "eslint-define-config": "^1.1.3", "eslint-plugin-node": "^11.1.0", "execa": "^5.1.1", "fs-extra": "^10.0.0", "jest": "^27.3.1", - "lint-staged": "^11.2.0", + "lint-staged": "^11.2.6", "minimist": "^1.2.5", - "node-fetch": "^2.6.5", + "node-fetch": "^2.6.6", "npm-run-all": "^4.1.5", - "playwright-chromium": "^1.15.1", + "playwright-chromium": "^1.16.3", "prettier": "2.4.1", - "prompts": "^2.4.1", + "prompts": "^2.4.2", "rimraf": "^3.0.2", + "rollup": "^2.59.0", "semver": "^7.3.5", - "sirv": "^1.0.17", + "sirv": "^1.0.18", "ts-jest": "^27.0.7", - "ts-node": "^10.1.0", - "typescript": "~4.4.3", - "vitepress": "^0.19.2", - "yorkie": "^2.0.0", - "rollup": "^2.57.0", - "esbuild": "^0.13.2", - "vite": "workspace:*" + "ts-node": "^10.4.0", + "typescript": "~4.4.4", + "vite": "workspace:*", + "vitepress": "^0.20.1", + "yorkie": "^2.0.0" }, "gitHooks": { "pre-commit": "lint-staged --concurrent false", diff --git a/packages/playground/alias/__tests__/alias.spec.ts b/packages/playground/alias/__tests__/alias.spec.ts index 04536fe48085b5..5d6ab59a948a22 100644 --- a/packages/playground/alias/__tests__/alias.spec.ts +++ b/packages/playground/alias/__tests__/alias.spec.ts @@ -37,3 +37,9 @@ test('optimized dep', async () => { '[success] alias optimized' ) }) + +test('aliased module', async () => { + expect(await page.textContent('.aliased-module')).toMatch( + '[success] aliased module' + ) +}) diff --git a/packages/playground/alias/dir/module/index.js b/packages/playground/alias/dir/module/index.js new file mode 100644 index 00000000000000..13c44e7516fef9 --- /dev/null +++ b/packages/playground/alias/dir/module/index.js @@ -0,0 +1 @@ +export const msg = `[success] aliased module` diff --git a/packages/playground/alias/dir/module/package.json b/packages/playground/alias/dir/module/package.json new file mode 100644 index 00000000000000..dad4e205051042 --- /dev/null +++ b/packages/playground/alias/dir/module/package.json @@ -0,0 +1,5 @@ +{ + "name": "@vite/aliased-module", + "private": true, + "version": "0.0.0" +} diff --git a/packages/playground/alias/index.html b/packages/playground/alias/index.html index 6ec199f622beae..00a165234e3354 100644 --- a/packages/playground/alias/index.html +++ b/packages/playground/alias/index.html @@ -5,6 +5,7 @@

Alias

+

@@ -13,6 +14,7 @@

Alias

import { msg as fsDirMsg } from 'fs-dir/test' import { msg as regexMsg } from 'regex/test' import { msg as depMsg } from 'dep' + import { msg as moduleMsg } from 'aliased-module/index.js' function text(el, text) { document.querySelector(el).textContent = text @@ -22,6 +24,7 @@

Alias

text('.fs-dir', fsDirMsg) text('.regex', regexMsg + ' via regex') text('.dep', depMsg) + text('.aliased-module', moduleMsg) import { createApp } from 'vue' import { ref } from 'foo' diff --git a/packages/playground/alias/package.json b/packages/playground/alias/package.json index a0b580faa27dda..21392c87a5cb96 100644 --- a/packages/playground/alias/package.json +++ b/packages/playground/alias/package.json @@ -6,10 +6,12 @@ "dev": "vite", "build": "vite build", "debug": "node --inspect-brk ../../vite/bin/vite", - "preview": "vite preview" + "preview": "vite preview", + "postinstall": "node ../../../scripts/patchFileDeps" }, "dependencies": { - "vue": "^3.2.16" + "aliased-module": "file:./dir/module", + "vue": "^3.2.21" }, "devDependencies": { "resolve-linked": "workspace:*" diff --git a/packages/playground/backend-integration/package.json b/packages/playground/backend-integration/package.json index cc70456e556ba2..afbdb63d356a8b 100644 --- a/packages/playground/backend-integration/package.json +++ b/packages/playground/backend-integration/package.json @@ -9,6 +9,6 @@ "preview": "vite preview" }, "dependencies": { - "tailwindcss": "^2.2.4" + "tailwindcss": "^2.2.19" } } diff --git a/packages/playground/css/package.json b/packages/playground/css/package.json index b8b7c77c4016f0..13a58874578c09 100644 --- a/packages/playground/css/package.json +++ b/packages/playground/css/package.json @@ -10,9 +10,9 @@ }, "devDependencies": { "css-dep": "link:./css-dep", - "less": "^4.1.0", - "postcss-nested": "^5.0.3", - "sass": "^1.32.5", - "stylus": "^0.54.8" + "less": "^4.1.2", + "postcss-nested": "^5.0.6", + "sass": "^1.43.4", + "stylus": "^0.55.0" } } diff --git a/packages/playground/extensions/package.json b/packages/playground/extensions/package.json index 1bdef7c845635a..b3645637097ca8 100644 --- a/packages/playground/extensions/package.json +++ b/packages/playground/extensions/package.json @@ -9,6 +9,6 @@ "preview": "vite preview" }, "dependencies": { - "vue": "^3.2.16" + "vue": "^3.2.21" } } diff --git a/packages/playground/file-delete-restore/package.json b/packages/playground/file-delete-restore/package.json index f24429efe64e84..8f9caa3578f8bd 100644 --- a/packages/playground/file-delete-restore/package.json +++ b/packages/playground/file-delete-restore/package.json @@ -9,8 +9,8 @@ "preview": "vite preview" }, "dependencies": { - "react": "^17.0.1", - "react-dom": "^17.0.1" + "react": "^17.0.2", + "react-dom": "^17.0.2" }, "devDependencies": { "@vitejs/plugin-react": "workspace:*" diff --git a/packages/playground/glob-import/dir/index.js b/packages/playground/glob-import/dir/index.js index 7adc59a0b14f5e..d13d470e2b2b80 100644 --- a/packages/playground/glob-import/dir/index.js +++ b/packages/playground/glob-import/dir/index.js @@ -1,3 +1,3 @@ -const modules = import.meta.globEager('./*.js') +const modules = import.meta.globEager('./*.(js|ts)') export { modules } diff --git a/packages/playground/json/package.json b/packages/playground/json/package.json index 5dc22762f6b1a0..ab5e7f6cd85a9c 100644 --- a/packages/playground/json/package.json +++ b/packages/playground/json/package.json @@ -9,6 +9,6 @@ "preview": "vite preview" }, "devDependencies": { - "vue": "^3.2.16" + "vue": "^3.2.21" } } diff --git a/packages/playground/optimize-deps/dep-linked-include/package.json b/packages/playground/optimize-deps/dep-linked-include/package.json index 43533d4f02a6b6..d1a21edfd44d55 100644 --- a/packages/playground/optimize-deps/dep-linked-include/package.json +++ b/packages/playground/optimize-deps/dep-linked-include/package.json @@ -3,6 +3,6 @@ "version": "0.0.0", "main": "index.mjs", "dependencies": { - "react": "17.0.0" + "react": "17.0.2" } } diff --git a/packages/playground/optimize-deps/dep-linked/package.json b/packages/playground/optimize-deps/dep-linked/package.json index b8ab3d859fe055..d1d90cd7ff688b 100644 --- a/packages/playground/optimize-deps/dep-linked/package.json +++ b/packages/playground/optimize-deps/dep-linked/package.json @@ -3,6 +3,6 @@ "version": "0.0.0", "main": "index.js", "dependencies": { - "lodash-es": "^4.17.20" + "lodash-es": "^4.17.21" } } diff --git a/packages/playground/optimize-deps/package.json b/packages/playground/optimize-deps/package.json index 45e73b29a37fb8..cfd3123a96534e 100644 --- a/packages/playground/optimize-deps/package.json +++ b/packages/playground/optimize-deps/package.json @@ -10,20 +10,20 @@ "postinstall": "node ../../../scripts/patchFileDeps" }, "dependencies": { - "axios": "^0.21.1", - "clipboard": "^2.0.6", + "axios": "^0.24.0", + "clipboard": "^2.0.8", "dep-cjs-compiled-from-cjs": "file:./dep-cjs-compiled-from-cjs", "dep-cjs-compiled-from-esm": "file:./dep-cjs-compiled-from-esm", "dep-esbuild-plugin-transform": "file:./dep-esbuild-plugin-transform", "dep-linked": "link:./dep-linked", "dep-linked-include": "link:./dep-linked-include", - "lodash-es": "^4.17.20", + "lodash-es": "^4.17.21", "nested-exclude": "file:./nested-exclude", - "phoenix": "^1.5.7", - "react": "^17.0.1", - "react-dom": "^17.0.1", - "resolve-linked": "0.0.0", - "vue": "^3.2.16", + "phoenix": "^1.6.2", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "resolve-linked": "workspace:0.0.0", + "vue": "^3.2.21", "vuex": "^4.0.0" }, "devDependencies": { diff --git a/packages/playground/preload/package.json b/packages/playground/preload/package.json index 746bdfa2a14fc5..01f7df4a6fb6a2 100644 --- a/packages/playground/preload/package.json +++ b/packages/playground/preload/package.json @@ -9,7 +9,7 @@ "preview": "vite preview" }, "dependencies": { - "vue": "^3.2.16", + "vue": "^3.2.21", "vue-router": "^4.0.0" }, "devDependencies": { diff --git a/packages/playground/react-emotion/package.json b/packages/playground/react-emotion/package.json index 606c16fed9a2f3..fc78ac30b34a8d 100644 --- a/packages/playground/react-emotion/package.json +++ b/packages/playground/react-emotion/package.json @@ -9,13 +9,13 @@ "preview": "vite preview" }, "dependencies": { - "@emotion/react": "^11.4.0", - "react": "^17.0.1", - "react-dom": "^17.0.1", + "@emotion/react": "^11.5.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", "react-switch": "^6.0.0" }, "devDependencies": { - "@babel/plugin-proposal-pipeline-operator": "^7.14.5", + "@babel/plugin-proposal-pipeline-operator": "^7.16.0", "@emotion/babel-plugin": "^11.3.0", "@vitejs/plugin-react": "workspace:*" }, diff --git a/packages/playground/react/package.json b/packages/playground/react/package.json index 60de1cebffea53..fc9b8e69d3999e 100644 --- a/packages/playground/react/package.json +++ b/packages/playground/react/package.json @@ -9,8 +9,8 @@ "preview": "vite preview" }, "dependencies": { - "react": "^17.0.1", - "react-dom": "^17.0.1" + "react": "^17.0.2", + "react-dom": "^17.0.2" }, "devDependencies": { "@vitejs/plugin-react": "workspace:*" diff --git a/packages/playground/resolve/__tests__/resolve.spec.ts b/packages/playground/resolve/__tests__/resolve.spec.ts index b94be689371b22..b1524e1e42aa08 100644 --- a/packages/playground/resolve/__tests__/resolve.spec.ts +++ b/packages/playground/resolve/__tests__/resolve.spec.ts @@ -54,6 +54,10 @@ test('dont add extension to directory name (./dir-with-ext.js/index.js)', async expect(await page.textContent('.dir-with-ext')).toMatch('[success]') }) +test('a ts module can import another ts module using its corresponding js file name', async () => { + expect(await page.textContent('.ts-extension')).toMatch('[success]') +}) + test('filename with dot', async () => { expect(await page.textContent('.dot')).toMatch('[success]') }) diff --git a/packages/playground/resolve/index.html b/packages/playground/resolve/index.html index a121c5c8a68ca1..9dc6525fcd7a43 100644 --- a/packages/playground/resolve/index.html +++ b/packages/playground/resolve/index.html @@ -33,6 +33,11 @@

Resolve to non-duplicated file extension

Don't add extensions to directory names

fail

+

+ A ts module can import another ts module using its corresponding js file name +

+

fail

+

Resolve file name containing dot

fail

@@ -119,6 +124,9 @@

resolve package that contains # in path

import { file as dirWithExtMsg } from './dir-with-ext' text('.dir-with-ext', dirWithExtMsg) + import { msg as tsExtensionMsg } from './ts-extension' + text('.ts-extension', tsExtensionMsg) + // filename with dot import { bar } from './util/bar.util' text('.dot', bar()) diff --git a/packages/playground/resolve/package.json b/packages/playground/resolve/package.json index 084a55de945714..5e0f53b4c8468a 100644 --- a/packages/playground/resolve/package.json +++ b/packages/playground/resolve/package.json @@ -9,14 +9,14 @@ "preview": "vite preview" }, "dependencies": { - "resolve-exports-path": "link:./exports-path", - "resolve-exports-env": "link:./exports-env", + "@babel/runtime": "^7.16.0", + "es5-ext": "0.10.53", + "normalize.css": "^8.0.1", "resolve-browser-field": "link:./browser-field", - "resolve-custom-main-field": "link:./custom-main-field", "resolve-custom-condition": "link:./custom-condition", - "@babel/runtime": "^7.12.5", - "normalize.css": "^8.0.1", - "es5-ext": "0.10.53", + "resolve-custom-main-field": "link:./custom-main-field", + "resolve-exports-env": "link:./exports-env", + "resolve-exports-path": "link:./exports-path", "resolve-linked": "workspace:*" } } diff --git a/packages/playground/resolve/ts-extension/hello.ts b/packages/playground/resolve/ts-extension/hello.ts new file mode 100644 index 00000000000000..0189355c3fe06f --- /dev/null +++ b/packages/playground/resolve/ts-extension/hello.ts @@ -0,0 +1 @@ +export const msg = '[success] use .js extension to import a ts module' diff --git a/packages/playground/resolve/ts-extension/index.ts b/packages/playground/resolve/ts-extension/index.ts new file mode 100644 index 00000000000000..e095619ee4d716 --- /dev/null +++ b/packages/playground/resolve/ts-extension/index.ts @@ -0,0 +1,3 @@ +import { msg } from './hello.js' + +export { msg } diff --git a/packages/playground/resolve/vite.config.js b/packages/playground/resolve/vite.config.js index a05d51bb5b8e45..e7d531097add7c 100644 --- a/packages/playground/resolve/vite.config.js +++ b/packages/playground/resolve/vite.config.js @@ -2,7 +2,7 @@ const virtualFile = '@virtual-file' module.exports = { resolve: { - extensions: ['.mjs', '.js', '.es'], + extensions: ['.mjs', '.js', '.es', '.ts'], mainFields: ['custom', 'module'], conditions: ['custom'] }, diff --git a/packages/playground/ssr-pug/__tests__/serve.js b/packages/playground/ssr-pug/__tests__/serve.js new file mode 100644 index 00000000000000..5ba5724f2b7a94 --- /dev/null +++ b/packages/playground/ssr-pug/__tests__/serve.js @@ -0,0 +1,36 @@ +// @ts-check +// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// the default e2e test serve behavior + +const path = require('path') + +const port = (exports.port = 9530) + +/** + * @param {string} root + * @param {boolean} isProd + */ +exports.serve = async function serve(root, isProd) { + const { createServer } = require(path.resolve(root, 'server.js')) + const { app, vite } = await createServer(root, isProd) + + return new Promise((resolve, reject) => { + try { + const server = app.listen(port, () => { + resolve({ + // for test teardown + async close() { + await new Promise((resolve) => { + server.close(resolve) + }) + if (vite) { + await vite.close() + } + } + }) + }) + } catch (e) { + reject(e) + } + }) +} diff --git a/packages/playground/ssr-pug/__tests__/ssr-pug.spec.ts b/packages/playground/ssr-pug/__tests__/ssr-pug.spec.ts new file mode 100644 index 00000000000000..e34b8a91fc3421 --- /dev/null +++ b/packages/playground/ssr-pug/__tests__/ssr-pug.spec.ts @@ -0,0 +1,39 @@ +import { port } from './serve' +import fetch from 'node-fetch' + +const url = `http://localhost:${port}` + +describe('injected inline scripts', () => { + test('no injected inline scripts are present', async () => { + await page.goto(url) + const inlineScripts = await page.$$eval('script', (nodes) => + nodes.filter((n) => !n.getAttribute('src') && n.innerHTML) + ) + expect(inlineScripts).toHaveLength(0) + }) + + test('injected script proxied correctly', async () => { + await page.goto(url) + const proxiedScripts = await page.$$eval('script', (nodes) => + nodes + .filter((n) => { + const src = n.getAttribute('src') + if (!src) return false + return src.includes('?html-proxy&index') + }) + .map((n) => n.getAttribute('src')) + ) + + // assert at least 1 proxied script exists + expect(proxiedScripts).not.toHaveLength(0) + + const scriptContents = await Promise.all( + proxiedScripts.map((src) => fetch(url + src).then((res) => res.text())) + ) + + // all proxied scripts return code + for (const code of scriptContents) { + expect(code).toBeTruthy() + } + }) +}) diff --git a/packages/playground/ssr-pug/index.pug b/packages/playground/ssr-pug/index.pug new file mode 100644 index 00000000000000..08cb7ddae275cc --- /dev/null +++ b/packages/playground/ssr-pug/index.pug @@ -0,0 +1,8 @@ +doctype html +html + head + meta(charset='UTF-8') + meta(name='viewport' content='width=device-width, initial-scale=1.0') + title SSR Pug + body + h1 SSR Pug diff --git a/packages/playground/ssr-pug/package.json b/packages/playground/ssr-pug/package.json new file mode 100644 index 00000000000000..e2282b20565c1b --- /dev/null +++ b/packages/playground/ssr-pug/package.json @@ -0,0 +1,15 @@ +{ + "name": "test-ssr-pug", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "node server", + "serve": "cross-env NODE_ENV=production node server", + "debug": "node --inspect-brk server" + }, + "devDependencies": { + "cross-env": "^7.0.3", + "express": "^4.17.1", + "pug": "^3.0.2" + } +} diff --git a/packages/playground/ssr-pug/server.js b/packages/playground/ssr-pug/server.js new file mode 100644 index 00000000000000..3cea5c48dde00b --- /dev/null +++ b/packages/playground/ssr-pug/server.js @@ -0,0 +1,76 @@ +// @ts-check +const path = require('path') +const pug = require('pug') +const express = require('express') + +const isTest = process.env.NODE_ENV === 'test' || !!process.env.VITE_TEST_BUILD + +const DYNAMIC_SCRIPTS = ` + + +` + +async function createServer( + root = process.cwd(), + isProd = process.env.NODE_ENV === 'production' +) { + const resolve = (p) => path.resolve(__dirname, p) + + const app = express() + + /** + * @type {import('vite').ViteDevServer} + */ + let vite + vite = await require('vite').createServer({ + root, + logLevel: isTest ? 'error' : 'info', + server: { + middlewareMode: 'ssr', + watch: { + // During tests we edit the files too fast and sometimes chokidar + // misses change events, so enforce polling for consistency + usePolling: true, + interval: 100 + } + } + }) + // use vite's connect instance as middleware + app.use(vite.middlewares) + + app.use('*', async (req, res) => { + try { + let [url] = req.originalUrl.split('?') + url = url.replace(/\.html$/, '.pug') + if (url.endsWith('/')) url += 'index.pug' + + const htmlLoc = resolve(`.${url}`) + let html = pug.renderFile(htmlLoc) + html = html.replace('', `${DYNAMIC_SCRIPTS}`) + html = await vite.transformIndexHtml(url, html) + + res.status(200).set({ 'Content-Type': 'text/html' }).end(html) + } catch (e) { + vite && vite.ssrFixStacktrace(e) + console.log(e.stack) + res.status(500).end(e.stack) + } + }) + + return { app, vite } +} + +if (!isTest) { + createServer().then(({ app }) => + app.listen(3000, () => { + console.log('http://localhost:3000') + }) + ) +} + +// for test use +exports.createServer = createServer diff --git a/packages/playground/ssr-pug/src/app.js b/packages/playground/ssr-pug/src/app.js new file mode 100644 index 00000000000000..5b0175bb863d70 --- /dev/null +++ b/packages/playground/ssr-pug/src/app.js @@ -0,0 +1,3 @@ +const p = document.createElement('p') +p.innerHTML = '✅ Dynamically injected script from file' +document.body.appendChild(p) diff --git a/packages/playground/ssr-react/package.json b/packages/playground/ssr-react/package.json index 00db0400061ed9..a05bcc08806f3b 100644 --- a/packages/playground/ssr-react/package.json +++ b/packages/playground/ssr-react/package.json @@ -12,10 +12,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "react": "^17.0.1", - "react-dom": "^17.0.1", - "react-router": "^5.2.0", - "react-router-dom": "^5.2.0" + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-router": "^5.2.1", + "react-router-dom": "^5.3.0" }, "devDependencies": { "@vitejs/plugin-react": "workspace:*", diff --git a/packages/playground/ssr-vue/__tests__/ssr-vue.spec.ts b/packages/playground/ssr-vue/__tests__/ssr-vue.spec.ts index cff88dcce37d33..d52f7c746fdd80 100644 --- a/packages/playground/ssr-vue/__tests__/ssr-vue.spec.ts +++ b/packages/playground/ssr-vue/__tests__/ssr-vue.spec.ts @@ -13,6 +13,15 @@ test('require syntax can be used natural in server side', async () => { expect(requireHtml).toMatch('foo') }) +test('vuex can be import succeed by named import', async () => { + await page.goto(url + '/store') + expect(await page.textContent('h1')).toMatch('bar') + + // raw http request + const storeHtml = await (await fetch(url + '/store')).text() + expect(storeHtml).toMatch('bar') +}) + test('/about', async () => { await page.goto(url + '/about') expect(await page.textContent('h1')).toMatch('About') diff --git a/packages/playground/ssr-vue/package.json b/packages/playground/ssr-vue/package.json index c23e86fa5085a9..e9e52ff862417a 100644 --- a/packages/playground/ssr-vue/package.json +++ b/packages/playground/ssr-vue/package.json @@ -15,15 +15,16 @@ }, "dependencies": { "example-external-component": "file:example-external-component", - "vue": "^3.2.16", - "vue-router": "^4.0.0" + "vue": "^3.2.21", + "vue-router": "^4.0.0", + "vuex": "^4.0.2" }, "devDependencies": { "@vitejs/plugin-vue": "workspace:*", "@vitejs/plugin-vue-jsx": "workspace:*", - "dep-import-type": "link:./dep-import-type", "compression": "^1.7.4", "cross-env": "^7.0.3", + "dep-import-type": "link:./dep-import-type", "express": "^4.17.1", "serve-static": "^1.14.1" } diff --git a/packages/playground/ssr-vue/src/pages/Store.vue b/packages/playground/ssr-vue/src/pages/Store.vue new file mode 100644 index 00000000000000..df4d6b302d8474 --- /dev/null +++ b/packages/playground/ssr-vue/src/pages/Store.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/packages/playground/ssr-webworker/package.json b/packages/playground/ssr-webworker/package.json index ca06be0aa38fd8..a7ebdf27ea22aa 100644 --- a/packages/playground/ssr-webworker/package.json +++ b/packages/playground/ssr-webworker/package.json @@ -10,7 +10,7 @@ "react": "^17.0.2" }, "devDependencies": { - "miniflare": "^1.3.3", + "miniflare": "^1.4.1", "resolve-linked": "workspace:*" } } diff --git a/packages/playground/tailwind/package.json b/packages/playground/tailwind/package.json index 2d8e808757dae6..93b4dd7479d04f 100644 --- a/packages/playground/tailwind/package.json +++ b/packages/playground/tailwind/package.json @@ -9,9 +9,9 @@ "preview": "vite preview" }, "dependencies": { - "autoprefixer": "^10.3.0", - "tailwindcss": "^2.2.4", - "vue": "^3.2.16", + "autoprefixer": "^10.4.0", + "tailwindcss": "^2.2.19", + "vue": "^3.2.21", "vue-router": "^4.0.0" }, "devDependencies": { diff --git a/packages/playground/tailwind/vite.config.ts b/packages/playground/tailwind/vite.config.ts index 8d076bee7e2277..46c8a997bdc912 100644 --- a/packages/playground/tailwind/vite.config.ts +++ b/packages/playground/tailwind/vite.config.ts @@ -11,5 +11,10 @@ export default defineConfig({ build: { // to make tests faster minify: false + }, + server: { + // This option caused issues with HMR, + // although it should not affect the build + origin: "http://localhost:8080/", } }) diff --git a/packages/playground/testEnv.d.ts b/packages/playground/testEnv.d.ts deleted file mode 100644 index ae08a54dd1498c..00000000000000 --- a/packages/playground/testEnv.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Page } from 'playwright-chromium' -import { RollupWatcher } from 'rollup' - -declare global { - // injected by the custom jest env in scripts/jestEnv.js - const page: Page - - // injected in scripts/jestPerTestSetup.ts - const browserLogs: string[] - const viteTestUrl: string - const watcher: RollupWatcher - let beforeAllError: any | null // error caught in beforeAll, useful if you want to test error scenarios on build -} diff --git a/packages/playground/vue-jsx/package.json b/packages/playground/vue-jsx/package.json index f0807abdee0f32..d3a80ca3c8e7cf 100644 --- a/packages/playground/vue-jsx/package.json +++ b/packages/playground/vue-jsx/package.json @@ -9,10 +9,10 @@ "preview": "vite preview" }, "dependencies": { - "vue": "^3.2.16" + "vue": "^3.2.21" }, "devDependencies": { - "@vitejs/plugin-vue-jsx": "workspace:*", - "@vitejs/plugin-vue": "workspace:*" + "@vitejs/plugin-vue": "workspace:*", + "@vitejs/plugin-vue-jsx": "workspace:*" } } diff --git a/packages/playground/vue/CustomBlockPlugin.ts b/packages/playground/vue/CustomBlockPlugin.ts index 12834d4c383fe4..b434bbc24cf324 100644 --- a/packages/playground/vue/CustomBlockPlugin.ts +++ b/packages/playground/vue/CustomBlockPlugin.ts @@ -7,7 +7,7 @@ export const vueI18nPlugin: Plugin = { return } if (/\.ya?ml$/.test(id)) { - code = JSON.stringify(require('js-yaml').safeLoad(code.trim())) + code = JSON.stringify(require('js-yaml').load(code.trim())) } return { code: `export default Comp => { diff --git a/packages/playground/vue/Main.vue b/packages/playground/vue/Main.vue index bf491f9a71e9af..a65c9d7480920e 100644 --- a/packages/playground/vue/Main.vue +++ b/packages/playground/vue/Main.vue @@ -19,6 +19,7 @@ + diff --git a/packages/playground/vue/setup-import-template/template.html b/packages/playground/vue/setup-import-template/template.html new file mode 100644 index 00000000000000..414069f2e9e929 --- /dev/null +++ b/packages/playground/vue/setup-import-template/template.html @@ -0,0 +1,2 @@ +

Setup Import Template

+ diff --git a/packages/plugin-legacy/index.js b/packages/plugin-legacy/index.js index bfa6ee491bcbf6..2267cd9cf82b42 100644 --- a/packages/plugin-legacy/index.js +++ b/packages/plugin-legacy/index.js @@ -596,7 +596,7 @@ async function buildPolyfillChunk( bundle[polyfillChunk.name] = polyfillChunk } -const polyfillId = 'vite/legacy-polyfills' +const polyfillId = '\0vite/legacy-polyfills' /** * @param {Set} imports diff --git a/packages/plugin-legacy/package.json b/packages/plugin-legacy/package.json index b3992e77282a74..411d5b6ae73007 100644 --- a/packages/plugin-legacy/package.json +++ b/packages/plugin-legacy/package.json @@ -26,8 +26,8 @@ }, "homepage": "https://github.com/vitejs/vite/tree/main/packages/plugin-legacy#readme", "dependencies": { - "@babel/standalone": "^7.15.8", - "core-js": "^3.19.0", + "@babel/standalone": "^7.16.2", + "core-js": "^3.19.1", "magic-string": "^0.25.7", "regenerator-runtime": "^0.13.9", "systemjs": "^6.11.0" diff --git a/packages/plugin-react/package.json b/packages/plugin-react/package.json index 3180c3c6853328..52e7430dc74175 100644 --- a/packages/plugin-react/package.json +++ b/packages/plugin-react/package.json @@ -33,13 +33,13 @@ }, "homepage": "https://github.com/vitejs/vite/tree/main/packages/plugin-react#readme", "dependencies": { - "@babel/core": "^7.15.8", - "@babel/plugin-transform-react-jsx": "^7.14.9", - "@babel/plugin-transform-react-jsx-development": "^7.14.5", - "@babel/plugin-transform-react-jsx-self": "^7.14.9", - "@babel/plugin-transform-react-jsx-source": "^7.14.5", + "@babel/core": "^7.16.0", + "@babel/plugin-transform-react-jsx": "^7.16.0", + "@babel/plugin-transform-react-jsx-development": "^7.16.0", + "@babel/plugin-transform-react-jsx-self": "^7.16.0", + "@babel/plugin-transform-react-jsx-source": "^7.16.0", "@rollup/pluginutils": "^4.1.1", - "react-refresh": "^0.10.0", + "react-refresh": "^0.11.0", "resolve": "^1.20.0" } } diff --git a/packages/plugin-react/src/index.ts b/packages/plugin-react/src/index.ts index 2cc9eaab5a5f75..316149c8452287 100644 --- a/packages/plugin-react/src/index.ts +++ b/packages/plugin-react/src/index.ts @@ -108,36 +108,17 @@ export default function viteReact(opts: Options = {}): PluginOption[] { [] if (/\.(mjs|[tj]sx?)$/.test(extension)) { - const plugins = [...userPlugins] + const isJSX = extension.endsWith('x') + const isNodeModules = id.includes('/node_modules/') + const isProjectFile = + !isNodeModules && (id[0] === '\0' || id.startsWith(projectRoot + '/')) - const parserPlugins: typeof userParserPlugins = [ - ...userParserPlugins, - 'importMeta', - // This plugin is applied before esbuild transforms the code, - // so we need to enable some stage 3 syntax that is supported in - // TypeScript and some environments already. - 'topLevelAwait', - 'classProperties', - 'classPrivateProperties', - 'classPrivateMethods' - ] - - if (!extension.endsWith('.ts')) { - parserPlugins.push('jsx') - } - - const isTypeScript = /\.tsx?$/.test(extension) - if (isTypeScript) { - parserPlugins.push('typescript') - } - - const isNodeModules = id.includes('node_modules') + let plugins = isProjectFile ? [...userPlugins] : [] let useFastRefresh = false if (!skipFastRefresh && !ssr && !isNodeModules) { // Modules with .js or .ts extension must import React. - const isReactModule = - extension.endsWith('x') || code.includes('react') + const isReactModule = isJSX || code.includes('react') if (isReactModule && filter(id)) { useFastRefresh = true plugins.push([ @@ -148,16 +129,16 @@ export default function viteReact(opts: Options = {}): PluginOption[] { } let ast: t.File | null | undefined - if (isNodeModules || extension.endsWith('x')) { + if (!isProjectFile || isJSX) { if (useAutomaticRuntime) { // By reverse-compiling "React.createElement" calls into JSX, // React elements provided by dependencies will also use the // automatic runtime! - const [restoredAst, isCommonJS] = isNodeModules + const [restoredAst, isCommonJS] = !isProjectFile ? await restoreJSX(babel, code, id) : [null, false] - if (!isNodeModules || (ast = restoredAst)) { + if (isProjectFile || (ast = restoredAst)) { plugins.push([ await loadPlugin( '@babel/plugin-transform-react-jsx' + @@ -174,7 +155,7 @@ export default function viteReact(opts: Options = {}): PluginOption[] { plugins.push(babelImportToRequire) } } - } else if (!isNodeModules) { + } else if (isProjectFile) { // These plugins are only needed for the classic runtime. if (!isProduction) { plugins.push( @@ -191,7 +172,40 @@ export default function viteReact(opts: Options = {}): PluginOption[] { } } - const isReasonReact = extension.endsWith('.bs.js') + // Plugins defined through this Vite plugin are only applied + // to modules within the project root, but "babel.config.js" + // files can define plugins that need to be applied to every + // module, including node_modules and linked packages. + const shouldSkip = + !plugins.length && + !opts.babel?.configFile && + !(isProjectFile && opts.babel?.babelrc) + + if (shouldSkip) { + return // Avoid parsing if no plugins exist. + } + + const parserPlugins: typeof userParserPlugins = [ + ...userParserPlugins, + 'importMeta', + // This plugin is applied before esbuild transforms the code, + // so we need to enable some stage 3 syntax that is supported in + // TypeScript and some environments already. + 'topLevelAwait', + 'classProperties', + 'classPrivateProperties', + 'classPrivateMethods' + ] + + if (!id.endsWith('.ts')) { + parserPlugins.push('jsx') + } + + if (/\.tsx?$/.test(id)) { + parserPlugins.push('typescript') + } + + const isReasonReact = id.endsWith('.bs.js') const babelOpts: TransformOptions = { babelrc: false, diff --git a/packages/plugin-react/src/jsx-runtime/restore-jsx.ts b/packages/plugin-react/src/jsx-runtime/restore-jsx.ts index d246ec1cc15067..250fe43ce4d0c8 100644 --- a/packages/plugin-react/src/jsx-runtime/restore-jsx.ts +++ b/packages/plugin-react/src/jsx-runtime/restore-jsx.ts @@ -4,13 +4,25 @@ type RestoredJSX = [result: t.File | null | undefined, isCommonJS: boolean] let babelRestoreJSX: Promise | undefined +const jsxNotFound: RestoredJSX = [null, false] + /** Restore JSX from `React.createElement` calls */ export async function restoreJSX( babel: typeof import('@babel/core'), code: string, filename: string ): Promise { + // Avoid parsing the optimized react-dom since it will never + // contain compiled JSX and it's a pretty big file (800kb). + if (filename.includes('/.vite/react-dom.js')) { + return jsxNotFound + } + const [reactAlias, isCommonJS] = parseReactAlias(code) + if (!reactAlias) { + return jsxNotFound + } + const reactJsxRE = new RegExp( '\\b' + reactAlias + '\\.(createElement|Fragment)\\b', 'g' @@ -24,7 +36,7 @@ export async function restoreJSX( }) if (!hasCompiledJsx) { - return [null, false] + return jsxNotFound } // Support modules that use `import {Fragment} from 'react'` diff --git a/packages/plugin-vue-jsx/package.json b/packages/plugin-vue-jsx/package.json index 672669aa273fd3..827f0f56661bb1 100644 --- a/packages/plugin-vue-jsx/package.json +++ b/packages/plugin-vue-jsx/package.json @@ -26,9 +26,9 @@ }, "homepage": "https://github.com/vitejs/vite/tree/main/packages/plugin-vue-jsx#readme", "dependencies": { - "@babel/core": "^7.15.8", + "@babel/core": "^7.16.0", "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-transform-typescript": "^7.15.8", + "@babel/plugin-transform-typescript": "^7.16.1", "@rollup/pluginutils": "^4.1.1", "@vue/babel-plugin-jsx": "^1.1.1", "hash-sum": "^2.0.0" diff --git a/packages/plugin-vue/README.md b/packages/plugin-vue/README.md index b29039da2cbef0..96f9cbb1414a84 100644 --- a/packages/plugin-vue/README.md +++ b/packages/plugin-vue/README.md @@ -83,7 +83,7 @@ const vueI18nPlugin = { return } if (/\.ya?ml$/.test(id)) { - code = JSON.stringify(require('js-yaml').safeLoad(code.trim())) + code = JSON.stringify(require('js-yaml').load(code.trim())) } return `export default Comp => { Comp.i18n = ${code} diff --git a/packages/plugin-vue/package.json b/packages/plugin-vue/package.json index a853dd8370d479..1be309a306de16 100644 --- a/packages/plugin-vue/package.json +++ b/packages/plugin-vue/package.json @@ -34,12 +34,12 @@ "devDependencies": { "@rollup/pluginutils": "^4.1.1", "@types/hash-sum": "^1.0.0", + "@vue/compiler-sfc": "^3.2.21", "debug": "^4.3.2", "hash-sum": "^2.0.0", - "rollup": "^2.58.3", - "slash": "^3.0.0", + "rollup": "^2.59.0", + "slash": "^4.0.0", "source-map": "^0.6.1", - "vue": "^3.2.20", - "@vue/compiler-sfc": "^3.2.20" + "vue": "^3.2.21" } } diff --git a/packages/plugin-vue/src/helper.ts b/packages/plugin-vue/src/helper.ts index 3b1dbd3407a5fe..64e27560849dee 100644 --- a/packages/plugin-vue/src/helper.ts +++ b/packages/plugin-vue/src/helper.ts @@ -2,9 +2,10 @@ export const EXPORT_HELPER_ID = 'plugin-vue:export-helper' export const helperCode = ` export default (sfc, props) => { + const target = sfc.__vccOpts || sfc; for (const [key, val] of props) { - sfc[key] = val + target[key] = val; } - return sfc + return target; } ` diff --git a/packages/plugin-vue/src/main.ts b/packages/plugin-vue/src/main.ts index 9ddb73ea61c078..82ccb9ed5a2c9f 100644 --- a/packages/plugin-vue/src/main.ts +++ b/packages/plugin-vue/src/main.ts @@ -10,7 +10,7 @@ import { } from './utils/descriptorCache' import { PluginContext, SourceMap, TransformPluginContext } from 'rollup' import { normalizePath } from '@rollup/pluginutils' -import { resolveScript } from './script' +import { resolveScript, isUseInlineTemplate } from './script' import { transformTemplateInMain } from './template' import { isOnlyTemplateChanged, isEqualBlock } from './handleHotUpdate' import { RawSourceMap, SourceMapConsumer, SourceMapGenerator } from 'source-map' @@ -53,14 +53,8 @@ export async function transformMain( ) // template - // Check if we can use compile template as inlined render function - // inside - const filePath = id.replace(config.root, '') + const filePath = id.replace(normalizePath(config.root), '') addToHTMLProxyCache( config, filePath, diff --git a/packages/vite/src/node/plugins/index.ts b/packages/vite/src/node/plugins/index.ts index e95c45fd8f266d..0452e4f19a73fb 100644 --- a/packages/vite/src/node/plugins/index.ts +++ b/packages/vite/src/node/plugins/index.ts @@ -14,6 +14,7 @@ import { modulePreloadPolyfillPlugin } from './modulePreloadPolyfill' import { webWorkerPlugin } from './worker' import { preAliasPlugin } from './preAlias' import { definePlugin } from './define' +import { ssrRequireHookPlugin } from './ssrRequireHook' export async function resolvePlugins( config: ResolvedConfig, @@ -42,6 +43,7 @@ export async function resolvePlugins( ssrConfig: config.ssr, asSrc: true }), + config.build.ssr ? ssrRequireHookPlugin(config) : null, htmlInlineScriptProxyPlugin(config), cssPlugin(config), config.esbuild !== false ? esbuildPlugin(config.esbuild) : null, diff --git a/packages/vite/src/node/plugins/resolve.ts b/packages/vite/src/node/plugins/resolve.ts index 5b6fd6c59e9f72..bfdea8ba9416bf 100644 --- a/packages/vite/src/node/plugins/resolve.ts +++ b/packages/vite/src/node/plugins/resolve.ts @@ -25,7 +25,10 @@ import { cleanUrl, slash, nestedResolveFrom, - isFileReadable + isFileReadable, + isTsRequest, + isPossibleTsOutput, + getTsSrcPath } from '../utils' import { ViteDevServer, SSROptions } from '..' import { createFilter } from '@rollup/pluginutils' @@ -64,7 +67,13 @@ export interface InternalResolveOptions extends ResolveOptions { tryPrefix?: string skipPackageJson?: boolean preferRelative?: boolean + preserveSymlinks?: boolean isRequire?: boolean + // #3040 + // when the importer is a ts module, + // if the specifier requests a non-existent `.js/jsx/mjs/cjs` file, + // should also try import from `.ts/tsx/mts/cts` source file as fallback. + isFromTsImporter?: boolean } export function resolvePlugin(baseOptions: InternalResolveOptions): Plugin { @@ -75,10 +84,6 @@ export function resolvePlugin(baseOptions: InternalResolveOptions): Plugin { ssrConfig, preferRelative = false } = baseOptions - const requireOptions: InternalResolveOptions = { - ...baseOptions, - isRequire: true - } let server: ViteDevServer | undefined const { target: ssrTarget, noExternal: ssrNoExternal } = ssrConfig ?? {} @@ -104,13 +109,15 @@ export function resolvePlugin(baseOptions: InternalResolveOptions): Plugin { const targetWeb = !ssr || ssrTarget === 'webworker' // this is passed by @rollup/plugin-commonjs - const isRequire = - resolveOpts && - resolveOpts.custom && - resolveOpts.custom['node-resolve'] && - resolveOpts.custom['node-resolve'].isRequire + const isRequire: boolean = + resolveOpts?.custom?.['node-resolve']?.isRequire ?? false - const options = isRequire ? requireOptions : baseOptions + const options: InternalResolveOptions = { + ...baseOptions, + + isRequire, + isFromTsImporter: isTsRequest(importer ?? '') + } const preserveSymlinks = !!server?.config.resolve.preserveSymlinks @@ -299,7 +306,7 @@ export function resolvePlugin(baseOptions: InternalResolveOptions): Plugin { function tryFsResolve( fsPath: string, options: InternalResolveOptions, - preserveSymlinks: boolean, + preserveSymlinks?: boolean, tryIndex = true, targetWeb = true ): string | undefined { @@ -420,7 +427,7 @@ function tryResolveFile( options: InternalResolveOptions, tryIndex: boolean, targetWeb: boolean, - preserveSymlinks: boolean, + preserveSymlinks?: boolean, tryPrefix?: string, skipPackageJson?: boolean ): string | undefined { @@ -450,6 +457,22 @@ function tryResolveFile( if (index) return index + postfix } } + + const tryTsExtension = options.isFromTsImporter && isPossibleTsOutput(file) + if (tryTsExtension) { + const tsSrcPath = getTsSrcPath(file) + return tryResolveFile( + tsSrcPath, + postfix, + options, + tryIndex, + targetWeb, + preserveSymlinks, + tryPrefix, + skipPackageJson + ) + } + if (tryPrefix) { const prefixed = `${path.dirname(file)}/${tryPrefix}${path.basename(file)}` return tryResolveFile( @@ -467,7 +490,7 @@ export const idToPkgMap = new Map() export function tryNodeResolve( id: string, - importer: string | undefined, + importer: string | null | undefined, options: InternalResolveOptions, targetWeb: boolean, server?: ViteDevServer, @@ -500,14 +523,12 @@ export function tryNodeResolve( basedir = root } - const preserveSymlinks = !!server?.config.resolve.preserveSymlinks - // nested node module, step-by-step resolve to the basedir of the nestedPath if (nestedRoot) { - basedir = nestedResolveFrom(nestedRoot, basedir, preserveSymlinks) + basedir = nestedResolveFrom(nestedRoot, basedir, options.preserveSymlinks) } - const pkg = resolvePackageData(pkgId, basedir, preserveSymlinks) + const pkg = resolvePackageData(pkgId, basedir, options.preserveSymlinks) if (!pkg) { return @@ -519,9 +540,9 @@ export function tryNodeResolve( pkg, options, targetWeb, - preserveSymlinks + options.preserveSymlinks ) - : resolvePackageEntry(id, pkg, options, targetWeb, preserveSymlinks) + : resolvePackageEntry(id, pkg, options, targetWeb, options.preserveSymlinks) if (!resolved) { return } @@ -854,7 +875,7 @@ function resolveDeepImport( }: PackageData, options: InternalResolveOptions, targetWeb: boolean, - preserveSymlinks: boolean + preserveSymlinks?: boolean ): string | undefined { const cache = getResolvedCache(id, targetWeb) if (cache) { diff --git a/packages/vite/src/node/plugins/ssrRequireHook.ts b/packages/vite/src/node/plugins/ssrRequireHook.ts new file mode 100644 index 00000000000000..c1d24ca40d5f07 --- /dev/null +++ b/packages/vite/src/node/plugins/ssrRequireHook.ts @@ -0,0 +1,69 @@ +import MagicString from 'magic-string' +import { ResolvedConfig } from '..' +import { Plugin } from '../plugin' + +/** + * This plugin hooks into Node's module resolution algorithm at runtime, + * so that SSR builds can benefit from `resolve.dedupe` like they do + * in development. + */ +export function ssrRequireHookPlugin(config: ResolvedConfig): Plugin | null { + if (config.command !== 'build' || !config.resolve.dedupe?.length) { + return null + } + return { + name: 'vite:ssr-require-hook', + transform(code, id) { + const moduleInfo = this.getModuleInfo(id) + if (moduleInfo?.isEntry) { + const s = new MagicString(code) + s.prepend( + `;(${dedupeRequire.toString()})(${JSON.stringify( + config.resolve.dedupe + )});\n` + ) + return { + code: s.toString(), + map: s.generateMap({ + source: id + }) + } + } + } + } +} + +type NodeResolveFilename = ( + request: string, + parent: NodeModule, + isMain: boolean, + options?: Record +) => string + +/** Respect the `resolve.dedupe` option in production SSR. */ +function dedupeRequire(dedupe: string[]) { + const Module = require('module') as { _resolveFilename: NodeResolveFilename } + const resolveFilename = Module._resolveFilename + Module._resolveFilename = function (request, parent, isMain, options) { + if (request[0] !== '.' && request[0] !== '/') { + const parts = request.split('/') + const pkgName = parts[0][0] === '@' ? parts[0] + '/' + parts[1] : parts[0] + if (dedupe.includes(pkgName)) { + // Use this module as the parent. + parent = module + } + } + return resolveFilename!(request, parent, isMain, options) + } +} + +export function hookNodeResolve( + getResolver: (resolveFilename: NodeResolveFilename) => NodeResolveFilename +): () => void { + const Module = require('module') as { _resolveFilename: NodeResolveFilename } + const prevResolver = Module._resolveFilename + Module._resolveFilename = getResolver(prevResolver) + return () => { + Module._resolveFilename = prevResolver + } +} diff --git a/packages/vite/src/node/preview.ts b/packages/vite/src/node/preview.ts index 0f48f1b2541477..20a37b9abbee0b 100644 --- a/packages/vite/src/node/preview.ts +++ b/packages/vite/src/node/preview.ts @@ -5,16 +5,40 @@ import compression from 'compression' import { Server } from 'http' import { resolveConfig, InlineConfig, ResolvedConfig } from '.' import { Connect } from 'types/connect' +import { ResolvedServerOptions } from './server' import { resolveHttpsConfig, resolveHttpServer, - httpServerStart -} from './server/http' + httpServerStart, + CommonServerOptions +} from './http' import { openBrowser } from './server/openBrowser' import corsMiddleware from 'cors' import { proxyMiddleware } from './server/middlewares/proxy' import { resolveHostname } from './utils' -import { printHttpServerUrls } from './logger' +import { printCommonServerUrls } from './logger' + +export interface PreviewOptions extends CommonServerOptions {} + +export interface ResolvedPreviewOptions extends PreviewOptions {} + +export function resolvePreviewOptions( + preview: PreviewOptions | undefined, + server: ResolvedServerOptions +): ResolvedPreviewOptions { + // The preview server inherits every CommonServerOption from the `server` config + // except for the port to enable having both the dev and preview servers running + // at the same time without extra configuration + return { + port: preview?.port, + strictPort: preview?.strictPort ?? server.strictPort, + host: preview?.host ?? server.host, + https: preview?.https ?? server.https, + open: preview?.open ?? server.open, + proxy: preview?.proxy ?? server.proxy, + cors: preview?.cors ?? server.cors + } +} export interface PreviewServer { /** @@ -44,19 +68,19 @@ export async function preview( const app = connect() as Connect.Server const httpServer = await resolveHttpServer( - config.server, + config.preview, app, - await resolveHttpsConfig(config) + await resolveHttpsConfig(config.preview?.https, config.cacheDir) ) // cors - const { cors } = config.server + const { cors } = config.preview if (cors !== false) { app.use(corsMiddleware(typeof cors === 'boolean' ? {} : cors)) } // proxy - if (config.server.proxy) { + if (config.preview.proxy) { app.use(proxyMiddleware(httpServer, config)) } @@ -72,7 +96,7 @@ export async function preview( }) ) - const options = config.server + const options = config.preview const hostname = resolveHostname(options.host) const port = options.port ?? 5000 const protocol = options.https ? 'https' : 'http' @@ -101,7 +125,7 @@ export async function preview( config, httpServer, printUrls() { - printHttpServerUrls(httpServer, config) + printCommonServerUrls(httpServer, config.preview, config) } } } diff --git a/packages/vite/src/node/server/__tests__/pluginContainer.spec.ts b/packages/vite/src/node/server/__tests__/pluginContainer.spec.ts new file mode 100644 index 00000000000000..a4d53fee0a0e08 --- /dev/null +++ b/packages/vite/src/node/server/__tests__/pluginContainer.spec.ts @@ -0,0 +1,117 @@ +import { resolveConfig, UserConfig } from '../../config' +import { Plugin } from '../../plugin' +import { ModuleGraph } from '../moduleGraph' +import { createPluginContainer, PluginContainer } from '../pluginContainer' + +let resolveId: (id: string) => any +let moduleGraph: ModuleGraph + +describe('plugin container', () => { + describe('getModuleInfo', () => { + beforeEach(() => { + moduleGraph = new ModuleGraph((id) => resolveId(id)) + }) + + it('can pass metadata between hooks', async () => { + const entryUrl = '/x.js' + + const metaArray: any[] = [] + const plugin: Plugin = { + name: 'p1', + resolveId(id) { + if (id === entryUrl) { + // The module hasn't been resolved yet, so its info is null. + const moduleInfo = this.getModuleInfo(entryUrl) + expect(moduleInfo).toEqual(null) + + return { id, meta: { x: 1 } } + } + }, + load(id) { + if (id === entryUrl) { + const { meta } = this.getModuleInfo(entryUrl) + metaArray.push(meta) + + return { code: 'export {}', meta: { x: 2 } } + } + }, + transform(code, id) { + if (id === entryUrl) { + const { meta } = this.getModuleInfo(entryUrl) + metaArray.push(meta) + + return { meta: { x: 3 } } + } + }, + buildEnd() { + const { meta } = this.getModuleInfo(entryUrl) + metaArray.push(meta) + } + } + + const container = await getPluginContainer({ + plugins: [plugin] + }) + + const entryModule = await moduleGraph.ensureEntryFromUrl(entryUrl) + expect(entryModule.meta).toEqual({ x: 1 }) + + const loadResult: any = await container.load(entryUrl) + expect(loadResult?.meta).toEqual({ x: 2 }) + + await container.transform(loadResult.code, entryUrl) + await container.close() + + expect(metaArray).toEqual([{ x: 1 }, { x: 2 }, { x: 3 }]) + }) + + it('can pass metadata between plugins', async () => { + const entryUrl = '/x.js' + + const plugin1: Plugin = { + name: 'p1', + resolveId(id) { + if (id === entryUrl) { + return { id, meta: { x: 1 } } + } + } + } + + const plugin2: Plugin = { + name: 'p2', + load(id) { + if (id === entryUrl) { + const { meta } = this.getModuleInfo(entryUrl) + expect(meta).toEqual({ x: 1 }) + return null + } + } + } + + const container = await getPluginContainer({ + plugins: [plugin1, plugin2] + }) + + await moduleGraph.ensureEntryFromUrl(entryUrl) + await container.load(entryUrl) + + expect.assertions(1) + }) + }) +}) + +async function getPluginContainer( + inlineConfig?: UserConfig +): Promise { + const config = await resolveConfig( + { configFile: false, ...inlineConfig }, + 'serve' + ) + + // @ts-ignore: This plugin requires a ViteDevServer instance. + config.plugins = config.plugins.filter((p) => !/pre-alias/.test(p.name)) + + resolveId = (id) => container.resolveId(id) + const container = await createPluginContainer(config, moduleGraph) + return container +} diff --git a/packages/vite/src/node/server/hmr.ts b/packages/vite/src/node/server/hmr.ts index 2defd2f3f22e0b..f65903c1606347 100644 --- a/packages/vite/src/node/server/hmr.ts +++ b/packages/vite/src/node/server/hmr.ts @@ -7,7 +7,7 @@ import { ModuleNode } from './moduleGraph' import { Update } from 'types/hmrPayload' import { CLIENT_DIR } from '../constants' import { RollupError } from 'rollup' -import match from 'minimatch' +import { isMatch } from 'micromatch' import { Server } from 'http' import { isCSSRequest } from '../plugins/css' import { performance } from 'perf_hooks' @@ -50,7 +50,9 @@ export async function handleHMRUpdate( const isConfigDependency = config.configFileDependencies.some( (name) => file === path.resolve(name) ) - const isEnv = config.inlineConfig.envFile !== false && file.endsWith('.env') + const isEnv = + config.inlineConfig.envFile !== false && + (file === '.env' || file.startsWith('.env.')) if (isConfig || isConfigDependency || isEnv) { // auto restart server debugHmr(`[config change] ${chalk.dim(shortFile)}`) @@ -92,7 +94,6 @@ export async function handleHMRUpdate( const filteredModules = await plugin.handleHotUpdate(hmrContext) if (filteredModules) { hmrContext.modules = filteredModules - break } } } @@ -190,7 +191,10 @@ export async function handleFileAddUnlink( for (const i in server._globImporters) { const { module, importGlobs } = server._globImporters[i] for (const { base, pattern } of importGlobs) { - if (match(file, pattern) || match(path.relative(base, file), pattern)) { + if ( + isMatch(file, pattern) || + isMatch(path.relative(base, file), pattern) + ) { modules.push(module) // We use `onFileChange` to invalidate `module.file` so that subsequent `ssrLoadModule()` // calls get fresh glob import results with(out) the newly added(/removed) `file`. diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index 90f6af4ad00939..3c8cc9fd67d85e 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -2,19 +2,23 @@ import fs from 'fs' import path from 'path' import * as net from 'net' import * as http from 'http' -import * as https from 'https' import connect from 'connect' import corsMiddleware from 'cors' import chalk from 'chalk' import { AddressInfo } from 'net' import chokidar from 'chokidar' -import { resolveHttpsConfig, resolveHttpServer, httpServerStart } from './http' +import { + resolveHttpsConfig, + resolveHttpServer, + httpServerStart, + CommonServerOptions +} from '../http' import { resolveConfig, InlineConfig, ResolvedConfig } from '../config' import { createPluginContainer, PluginContainer } from './pluginContainer' import { FSWatcher, WatchOptions } from 'types/chokidar' import { createWebSocketServer, WebSocketServer } from './ws' import { baseMiddleware } from './middlewares/base' -import { proxyMiddleware, ProxyOptions } from './middlewares/proxy' +import { proxyMiddleware } from './middlewares/proxy' import { spaFallbackMiddleware } from './middlewares/spaFallback' import { transformMiddleware } from './middlewares/transform' import { @@ -55,57 +59,11 @@ import { createMissingImporterRegisterFn } from '../optimizer/registerMissing' import { resolveHostname } from '../utils' import { searchForWorkspaceRoot } from './searchRoot' import { CLIENT_DIR } from '../constants' -import { printHttpServerUrls } from '../logger' +import { printCommonServerUrls } from '../logger' export { searchForWorkspaceRoot } from './searchRoot' -export interface ServerOptions { - host?: string | boolean - port?: number - /** - * If enabled, vite will exit if specified port is already in use - */ - strictPort?: boolean - /** - * Enable TLS + HTTP/2. - * Note: this downgrades to TLS only when the proxy option is also used. - */ - https?: boolean | https.ServerOptions - /** - * Open browser window on startup - */ - open?: boolean | string - /** - * Configure custom proxy rules for the dev server. Expects an object - * of `{ key: options }` pairs. - * Uses [`http-proxy`](https://github.com/http-party/node-http-proxy). - * Full options [here](https://github.com/http-party/node-http-proxy#options). - * - * Example `vite.config.js`: - * ``` js - * module.exports = { - * proxy: { - * // string shorthand - * '/foo': 'http://localhost:4567/foo', - * // with options - * '/api': { - * target: 'http://jsonplaceholder.typicode.com', - * changeOrigin: true, - * rewrite: path => path.replace(/^\/api/, '') - * } - * } - * } - * ``` - */ - proxy?: Record - /** - * Configure CORS for the dev server. - * Uses https://github.com/expressjs/cors. - * Set to `true` to allow all methods from any origin, or configure separately - * using an object. - */ - cors?: CorsOptions | boolean - +export interface ServerOptions extends CommonServerOptions { /** * Force dep pre-optimization regardless of whether deps have changed. */ @@ -174,24 +132,6 @@ export interface FileSystemServeOptions { deny?: string[] } -/** - * https://github.com/expressjs/cors#configuration-options - */ -export interface CorsOptions { - origin?: - | CorsOrigin - | ((origin: string, cb: (err: Error, origins: CorsOrigin) => void) => void) - methods?: string | string[] - allowedHeaders?: string | string[] - exposedHeaders?: string | string[] - credentials?: boolean - maxAge?: number - preflightContinue?: boolean - optionsSuccessStatus?: number -} - -export type CorsOrigin = boolean | string | RegExp | (string | RegExp)[] - export type ServerHook = ( server: ViteDevServer ) => (() => void) | void | Promise<(() => void) | void> @@ -324,7 +264,7 @@ export interface ViteDevServer { /** * @internal */ - _pendingRequests: Record | null> + _pendingRequests: Map> } export async function createServer( @@ -333,7 +273,7 @@ export async function createServer( const config = await resolveConfig(inlineConfig, 'serve', 'development') const root = config.root const serverConfig = config.server - const httpsOptions = await resolveHttpsConfig(config) + const httpsOptions = await resolveHttpsConfig(config.server.https) let { middlewareMode } = serverConfig if (middlewareMode === true) { middlewareMode = 'ssr' @@ -358,9 +298,11 @@ export async function createServer( ...watchOptions }) as FSWatcher - const plugins = config.plugins - const container = await createPluginContainer(config, watcher) - const moduleGraph = new ModuleGraph(container) + const moduleGraph: ModuleGraph = new ModuleGraph((url) => + container.resolveId(url) + ) + + const container = await createPluginContainer(config, moduleGraph, watcher) const closeHttpServer = createServerCloseFn(httpServer) // eslint-disable-next-line prefer-const @@ -386,14 +328,12 @@ export async function createServer( }, transformIndexHtml: null!, // to be immediately set ssrLoadModule(url) { - if (!server._ssrExternals) { - server._ssrExternals = resolveSSRExternal( - config, - server._optimizeDepsMetadata - ? Object.keys(server._optimizeDepsMetadata.optimized) - : [] - ) - } + server._ssrExternals ||= resolveSSRExternal( + config, + server._optimizeDepsMetadata + ? Object.keys(server._optimizeDepsMetadata.optimized) + : [] + ) return ssrLoadModule(url, server) }, ssrFixStacktrace(e) { @@ -421,7 +361,7 @@ export async function createServer( }, printUrls() { if (httpServer) { - printHttpServerUrls(httpServer, config) + printCommonServerUrls(httpServer, config.server, config) } else { throw new Error('cannot print server URLs in middleware mode.') } @@ -432,7 +372,7 @@ export async function createServer( _isRunningOptimizer: false, _registerMissingImport: null, _pendingReload: null, - _pendingRequests: Object.create(null) + _pendingRequests: new Map() } server.transformIndexHtml = createDevHtmlTransformFn(server) @@ -484,7 +424,7 @@ export async function createServer( // apply server configuration hooks from plugins const postHooks: ((() => void) | void)[] = [] - for (const plugin of plugins) { + for (const plugin of config.plugins) { if (plugin.configureServer) { postHooks.push(await plugin.configureServer(server)) } diff --git a/packages/vite/src/node/server/middlewares/indexHtml.ts b/packages/vite/src/node/server/middlewares/indexHtml.ts index 43d0075c7afd66..c6702e3966779e 100644 --- a/packages/vite/src/node/server/middlewares/indexHtml.ts +++ b/packages/vite/src/node/server/middlewares/indexHtml.ts @@ -15,7 +15,7 @@ import { import { ResolvedConfig, ViteDevServer } from '../..' import { send } from '../send' import { CLIENT_PUBLIC_PATH, FS_PREFIX } from '../../constants' -import { cleanUrl, fsPathFromId } from '../../utils' +import { cleanUrl, fsPathFromId, normalizePath } from '../../utils' export function createDevHtmlTransformFn( server: ViteDevServer @@ -105,7 +105,7 @@ const devHtmlHook: IndexHtmlTransformHook = async ( if (src) { processNodeUrl(src, s, config, htmlPath, originalUrl) } else if (isModule) { - const url = filePath.replace(config.root, '') + const url = filePath.replace(normalizePath(config.root), '') const contents = node.children .map((child: any) => child.content || '') diff --git a/packages/vite/src/node/server/middlewares/static.ts b/packages/vite/src/node/server/middlewares/static.ts index e2a02f27baefab..9411e8a09a95dc 100644 --- a/packages/vite/src/node/server/middlewares/static.ts +++ b/packages/vite/src/node/server/middlewares/static.ts @@ -14,7 +14,7 @@ import { slash, isFileReadable } from '../../utils' -import match from 'minimatch' +import { isMatch } from 'micromatch' const sirvOptions: Options = { dev: true, @@ -149,7 +149,7 @@ export function isFileServingAllowed( const cleanedUrl = cleanUrl(url) const file = ensureLeadingSlash(normalizePath(cleanedUrl)) - if (server.config.server.fs.deny.some((i) => match(file, i, _matchOptions))) + if (server.config.server.fs.deny.some((i) => isMatch(file, i, _matchOptions))) return false if (server.moduleGraph.safeModulesPath.has(file)) return true diff --git a/packages/vite/src/node/server/moduleGraph.ts b/packages/vite/src/node/server/moduleGraph.ts index d29c31aae6bcc0..7185304e45b951 100644 --- a/packages/vite/src/node/server/moduleGraph.ts +++ b/packages/vite/src/node/server/moduleGraph.ts @@ -1,4 +1,6 @@ import { extname } from 'path' +import { ModuleInfo, PartialResolvedId } from 'rollup' +import { parse as parseUrl } from 'url' import { isDirectCSSRequest } from '../plugins/css' import { cleanUrl, @@ -8,8 +10,6 @@ import { } from '../utils' import { FS_PREFIX } from '../constants' import { TransformResult } from './transformRequest' -import { PluginContainer } from './pluginContainer' -import { parse as parseUrl } from 'url' export class ModuleNode { /** @@ -22,6 +22,8 @@ export class ModuleNode { id: string | null = null file: string | null = null type: 'js' | 'css' + info?: ModuleInfo + meta?: Record importers = new Set() importedModules = new Set() acceptedHmrDeps = new Set() @@ -45,17 +47,23 @@ function invalidateSSRModule(mod: ModuleNode, seen: Set) { mod.ssrModule = null mod.importers.forEach((importer) => invalidateSSRModule(importer, seen)) } + +export type ResolvedUrl = [ + url: string, + resolvedId: string, + meta: object | null | undefined +] + export class ModuleGraph { urlToModuleMap = new Map() idToModuleMap = new Map() // a single file may corresponds to multiple modules with different queries fileToModulesMap = new Map>() safeModulesPath = new Set() - container: PluginContainer - constructor(container: PluginContainer) { - this.container = container - } + constructor( + private resolveId: (url: string) => Promise + ) {} async getModuleByUrl(rawUrl: string): Promise { const [url] = await this.resolveUrl(rawUrl) @@ -81,6 +89,7 @@ export class ModuleGraph { } invalidateModule(mod: ModuleNode, seen: Set = new Set()): void { + mod.info = undefined mod.transformResult = null mod.ssrTransformResult = null invalidateSSRModule(mod, seen) @@ -140,10 +149,11 @@ export class ModuleGraph { } async ensureEntryFromUrl(rawUrl: string): Promise { - const [url, resolvedId] = await this.resolveUrl(rawUrl) + const [url, resolvedId, meta] = await this.resolveUrl(rawUrl) let mod = this.urlToModuleMap.get(url) if (!mod) { mod = new ModuleNode(url) + if (meta) mod.meta = meta this.urlToModuleMap.set(url, mod) mod.id = resolvedId this.idToModuleMap.set(resolvedId, mod) @@ -187,14 +197,15 @@ export class ModuleGraph { // 1. remove the HMR timestamp query (?t=xxxx) // 2. resolve its extension so that urls with or without extension all map to // the same module - async resolveUrl(url: string): Promise<[string, string]> { + async resolveUrl(url: string): Promise { url = removeImportQuery(removeTimestampQuery(url)) - const resolvedId = (await this.container.resolveId(url))?.id || url + const resolved = await this.resolveId(url) + const resolvedId = resolved?.id || url const ext = extname(cleanUrl(resolvedId)) const { pathname, search, hash } = parseUrl(url) if (ext && !pathname!.endsWith(ext)) { url = pathname + ext + (search || '') + (hash || '') } - return [url, resolvedId] + return [url, resolvedId, resolved?.meta] } } diff --git a/packages/vite/src/node/server/pluginContainer.ts b/packages/vite/src/node/server/pluginContainer.ts index 33722132c32f24..2bd91e4f1a38ef 100644 --- a/packages/vite/src/node/server/pluginContainer.ts +++ b/packages/vite/src/node/server/pluginContainer.ts @@ -70,6 +70,7 @@ import { FS_PREFIX } from '../constants' import chalk from 'chalk' import { ResolvedConfig } from '../config' import { buildErrorMessage } from './middlewares/error' +import { ModuleGraph } from './moduleGraph' import { performance } from 'perf_hooks' export interface PluginContainerOptions { @@ -81,6 +82,7 @@ export interface PluginContainerOptions { export interface PluginContainer { options: InputOptions + getModuleInfo(id: string): ModuleInfo | null buildStart(options: InputOptions): Promise resolveId( id: string, @@ -128,6 +130,7 @@ export let parser = acorn.Parser.extend( export async function createPluginContainer( { plugins, logger, root, build: { rollupOptions } }: ResolvedConfig, + moduleGraph?: ModuleGraph, watcher?: FSWatcher ): Promise { const isDebug = process.env.DEBUG @@ -143,7 +146,6 @@ export async function createPluginContainer( // --------------------------------------------------------------------------- - const MODULES = new Map() const watchFiles = new Set() // get rollup version @@ -167,6 +169,45 @@ export async function createPluginContainer( ) } + // throw when an unsupported ModuleInfo property is accessed, + // so that incompatible plugins fail in a non-cryptic way. + const ModuleInfoProxy: ProxyHandler = { + get(info: any, key: string) { + if (key in info) { + return info[key] + } + throw Error( + `[vite] The "${key}" property of ModuleInfo is not supported.` + ) + } + } + + // same default value of "moduleInfo.meta" as in Rollup + const EMPTY_OBJECT = Object.freeze({}) + + function getModuleInfo(id: string) { + const module = moduleGraph?.getModuleById(id) + if (!module) { + return null + } + if (!module.info) { + module.info = new Proxy( + { id, meta: module.meta || EMPTY_OBJECT } as ModuleInfo, + ModuleInfoProxy + ) + } + return module.info + } + + function updateModuleInfo(id: string, { meta }: { meta?: object | null }) { + if (meta) { + const moduleInfo = getModuleInfo(id) + if (moduleInfo) { + moduleInfo.meta = { ...moduleInfo.meta, ...meta } + } + } + } + // we should create a new context for each async hook pipeline so that the // active plugin in that pipeline can be tracked in a concurrency-safe manner. // using a class to make creating new contexts more efficient @@ -208,19 +249,13 @@ export async function createPluginContainer( } getModuleInfo(id: string) { - let mod = MODULES.get(id) - if (mod) return mod.info - mod = { - /** @type {import('rollup').ModuleInfo} */ - // @ts-ignore-next - info: {} - } - MODULES.set(id, mod) - return mod.info + return getModuleInfo(id) } getModuleIds() { - return MODULES.keys() + return moduleGraph + ? moduleGraph.idToModuleMap.keys() + : Array.prototype[Symbol.iterator]() } addWatchFile(id: string) { @@ -416,6 +451,8 @@ export async function createPluginContainer( } })(), + getModuleInfo, + async buildStart() { await Promise.all( plugins.map((plugin) => { @@ -500,6 +537,9 @@ export async function createPluginContainer( ctx._activePlugin = plugin const result = await plugin.load.call(ctx as any, id, { ssr }) if (result != null) { + if (isObject(result)) { + updateModuleInfo(id, result) + } return result } } @@ -531,8 +571,13 @@ export async function createPluginContainer( prettifyUrl(id, root) ) if (isObject(result)) { - code = result.code || '' - if (result.map) ctx.sourcemapChain.push(result.map) + if (result.code !== undefined) { + code = result.code + if (result.map) { + ctx.sourcemapChain.push(result.map) + } + } + updateModuleInfo(id, result) } else { code = result } diff --git a/packages/vite/src/node/server/sourcemap.ts b/packages/vite/src/node/server/sourcemap.ts index 515b5a605a3157..9f9eafbc130a84 100644 --- a/packages/vite/src/node/server/sourcemap.ts +++ b/packages/vite/src/node/server/sourcemap.ts @@ -8,6 +8,11 @@ const debug = createDebugger('vite:sourcemap', { onlyWhenFocused: true }) +// Virtual modules should be prefixed with a null byte to avoid a +// false positive "missing source" warning. We also check for certain +// prefixes used for special handling in esbuildDepPlugin. +const virtualSourceRE = /^(\0|dep:|browser-external:)/ + interface SourceMapLike { sources: string[] sourcesContent?: (string | null)[] @@ -30,7 +35,7 @@ export async function injectSourcesContent( const missingSources: string[] = [] map.sourcesContent = await Promise.all( map.sources.map((sourcePath) => { - if (sourcePath) { + if (sourcePath && !virtualSourceRE.test(sourcePath)) { sourcePath = decodeURI(sourcePath) if (sourceRoot) { sourcePath = path.resolve(sourceRoot, sourcePath) diff --git a/packages/vite/src/node/server/transformRequest.ts b/packages/vite/src/node/server/transformRequest.ts index cf4762cc4b0ff3..4381529dba1c8e 100644 --- a/packages/vite/src/node/server/transformRequest.ts +++ b/packages/vite/src/node/server/transformRequest.ts @@ -43,20 +43,15 @@ export function transformRequest( server: ViteDevServer, options: TransformOptions = {} ): Promise { - const pending = server._pendingRequests[url] - if (pending) { - debugTransform( - `[reuse pending] for ${prettifyUrl(url, server.config.root)}` - ) - return pending + const cacheKey = (options.ssr ? 'ssr:' : options.html ? 'html:' : '') + url + let request = server._pendingRequests.get(cacheKey) + if (!request) { + request = doTransform(url, server, options) + server._pendingRequests.set(cacheKey, request) + const done = () => server._pendingRequests.delete(cacheKey) + request.then(done, done) } - const result = doTransform(url, server, options) - server._pendingRequests[url] = result - const onDone = () => { - server._pendingRequests[url] = null - } - result.then(onDone, onDone) - return result + return request } async function doTransform( diff --git a/packages/vite/src/node/server/ws.ts b/packages/vite/src/node/server/ws.ts index 82d9cb01e09642..74b4ad8142e81a 100644 --- a/packages/vite/src/node/server/ws.ts +++ b/packages/vite/src/node/server/ws.ts @@ -4,8 +4,7 @@ import { createServer as createHttpsServer, ServerOptions as HttpsServerOptions } from 'https' -import WebSocket from 'ws' -import { WebSocket as WebSocketTypes } from 'types/ws' +import { WebSocketServer as WebSocket, ServerOptions } from 'ws' import { ErrorPayload, HMRPayload } from 'types/hmrPayload' import { ResolvedConfig } from '..' import { isObject } from '../utils' @@ -13,8 +12,8 @@ import { Socket } from 'net' export const HMR_HEADER = 'vite-hmr' export interface WebSocketServer { - on: WebSocketTypes.Server['on'] - off: WebSocketTypes.Server['off'] + on: WebSocket['on'] + off: WebSocket['off'] send(payload: HMRPayload): void close(): Promise } @@ -24,14 +23,14 @@ export function createWebSocketServer( config: ResolvedConfig, httpsOptions?: HttpsServerOptions ): WebSocketServer { - let wss: WebSocket.Server + let wss: WebSocket let httpsServer: Server | undefined = undefined const hmr = isObject(config.server.hmr) && config.server.hmr const wsServer = (hmr && hmr.server) || server if (wsServer) { - wss = new WebSocket.Server({ noServer: true }) + wss = new WebSocket({ noServer: true }) wsServer.on('upgrade', (req, socket, head) => { if (req.headers['sec-websocket-protocol'] === HMR_HEADER) { wss.handleUpgrade(req, socket as Socket, head, (ws) => { @@ -40,7 +39,7 @@ export function createWebSocketServer( } }) } else { - const websocketServerOptions: WebSocket.ServerOptions = {} + const websocketServerOptions: ServerOptions = {} const port = (hmr && hmr.port) || 24678 if (httpsOptions) { // if we're serving the middlewares over https, the ws library doesn't support automatically creating an https server, so we need to do it ourselves @@ -68,7 +67,7 @@ export function createWebSocketServer( } // vite dev server in middleware mode - wss = new WebSocket.Server(websocketServerOptions) + wss = new WebSocket(websocketServerOptions) } wss.on('connection', (socket) => { @@ -105,7 +104,8 @@ export function createWebSocketServer( const stringified = JSON.stringify(payload) wss.clients.forEach((client) => { - if (client.readyState === WebSocket.OPEN) { + // readyState 1 means the connection is open + if (client.readyState === 1) { client.send(stringified) } }) diff --git a/packages/vite/src/node/ssr/ssrExternal.ts b/packages/vite/src/node/ssr/ssrExternal.ts index 8410692ed7b38a..9b68b83d6dce5e 100644 --- a/packages/vite/src/node/ssr/ssrExternal.ts +++ b/packages/vite/src/node/ssr/ssrExternal.ts @@ -3,11 +3,9 @@ import path from 'path' import { tryNodeResolve, InternalResolveOptions } from '../plugins/resolve' import { createDebugger, - isDefined, lookupFile, normalizePath, - resolveFrom, - unique + resolveFrom } from '../utils' import { ResolvedConfig } from '..' import { createFilter } from '@rollup/pluginutils' @@ -20,49 +18,88 @@ const debug = createDebugger('vite:ssr-external') */ export function resolveSSRExternal( config: ResolvedConfig, - knownImports: string[], - ssrExternals: Set = new Set(), - seen: Set = new Set() + knownImports: string[] ): string[] { - if (config.ssr?.noExternal === true) { + const ssrConfig = config.ssr + if (ssrConfig?.noExternal === true) { return [] } - const { root } = config + const ssrExternals: Set = new Set() + const seen: Set = new Set() + ssrConfig?.external?.forEach((id) => { + ssrExternals.add(id) + seen.add(id) + }) + + collectExternals( + config.root, + config.resolve.preserveSymlinks, + ssrExternals, + seen + ) + + for (const dep of knownImports) { + // Assume external if not yet seen + // At this point, the project root and any linked packages have had their dependencies checked, + // so we can safely mark any knownImports not yet seen as external. They are guaranteed to be + // dependencies of packages in node_modules. + if (!seen.has(dep)) { + ssrExternals.add(dep) + } + } + + // ensure `vite/dynamic-import-polyfill` is bundled (issue #1865) + ssrExternals.delete('vite') + + let externals = [...ssrExternals] + if (ssrConfig?.noExternal) { + externals = externals.filter( + createFilter(undefined, ssrConfig.noExternal, { resolve: false }) + ) + } + return externals +} + +// do we need to do this ahead of time or could we do it lazily? +function collectExternals( + root: string, + preserveSymlinks: boolean | undefined, + ssrExternals: Set, + seen: Set +) { const pkgContent = lookupFile(root, ['package.json']) if (!pkgContent) { - return [] + return } + const pkg = JSON.parse(pkgContent) - const importedDeps = knownImports.map(getNpmPackageName).filter(isDefined) - const deps = unique([ - ...importedDeps, - ...Object.keys(pkg.devDependencies || {}), - ...Object.keys(pkg.dependencies || {}) - ]) + const deps = { + ...pkg.devDependencies, + ...pkg.dependencies + } const resolveOptions: InternalResolveOptions = { root, + preserveSymlinks, isProduction: false, isBuild: true } const depsToTrace = new Set() - for (const id of deps) { - if (seen.has(id)) { - continue - } + for (const id in deps) { + if (seen.has(id)) continue seen.add(id) - let entry: string | undefined + let esmEntry: string | undefined let requireEntry: string try { - entry = tryNodeResolve( + esmEntry = tryNodeResolve( id, undefined, resolveOptions, - true, + true, // we set `targetWeb` to `true` to get the ESM entry undefined, true )?.id @@ -70,68 +107,53 @@ export function resolveSSRExternal( // which returns with '/', require.resolve returns with '\\' requireEntry = normalizePath(require.resolve(id, { paths: [root] })) } catch (e) { + try { + // no main entry, but deep imports may be allowed + const pkgPath = resolveFrom(`${id}/package.json`, root) + if (pkgPath.includes('node_modules')) { + ssrExternals.add(id) + } else { + depsToTrace.add(path.dirname(pkgPath)) + } + continue + } catch {} + // resolve failed, assume include debug(`Failed to resolve entries for package "${id}"\n`, e) continue } - if (!entry) { - // no esm entry but has require entry (is this even possible?) + // no esm entry but has require entry + if (!esmEntry) { ssrExternals.add(id) - continue } - if (!entry.includes('node_modules')) { - // entry is not a node dep, possibly linked - don't externalize - // instead, trace its dependencies. - depsToTrace.add(id) - continue + // trace the dependencies of linked packages + else if (!esmEntry.includes('node_modules')) { + const pkgPath = resolveFrom(`${id}/package.json`, root) + depsToTrace.add(path.dirname(pkgPath)) } - if (entry !== requireEntry) { - // has separate esm/require entry, assume require entry is cjs + // has separate esm/require entry, assume require entry is cjs + else if (esmEntry !== requireEntry) { ssrExternals.add(id) - } else { - // node resolve and esm resolve resolves to the same file. - if (!/\.m?js$/.test(entry)) { - // entry is not js, cannot externalize - continue - } - if (pkg.type === 'module' || entry.endsWith('.mjs')) { + } + // if we're externalizing ESM and CJS should basically just always do it? + // or are there others like SystemJS / AMD that we'd need to handle? + // for now, we'll just leave this as is + else if (/\.m?js$/.test(esmEntry)) { + if (pkg.type === 'module' || esmEntry.endsWith('.mjs')) { ssrExternals.add(id) continue } // check if the entry is cjs - const content = fs.readFileSync(entry, 'utf-8') + const content = fs.readFileSync(esmEntry, 'utf-8') if (/\bmodule\.exports\b|\bexports[.\[]|\brequire\s*\(/.test(content)) { ssrExternals.add(id) } } } - for (const id of depsToTrace) { - const depRoot = path.dirname( - resolveFrom(`${id}/package.json`, root, !!config.resolve.preserveSymlinks) - ) - resolveSSRExternal( - { - ...config, - root: depRoot - }, - knownImports, - ssrExternals, - seen - ) - } - - if (config.ssr?.external) { - config.ssr.external.forEach((id) => ssrExternals.add(id)) - } - let externals = [...ssrExternals] - if (config.ssr?.noExternal) { - const filter = createFilter(undefined, config.ssr.noExternal, { - resolve: false - }) - externals = externals.filter((id) => filter(id)) + for (const depRoot of depsToTrace) { + collectExternals(depRoot, preserveSymlinks, ssrExternals, seen) } - return externals.filter((id) => id !== 'vite') } export function shouldExternalizeForSSR( @@ -150,13 +172,3 @@ export function shouldExternalizeForSSR( }) return should } - -function getNpmPackageName(importPath: string): string | null { - const parts = importPath.split('/') - if (parts[0].startsWith('@')) { - if (!parts[1]) return null - return `${parts[0]}/${parts[1]}` - } else { - return parts[0] - } -} diff --git a/packages/vite/src/node/ssr/ssrModuleLoader.ts b/packages/vite/src/node/ssr/ssrModuleLoader.ts index 192292e43e3713..c60f862d07e074 100644 --- a/packages/vite/src/node/ssr/ssrModuleLoader.ts +++ b/packages/vite/src/node/ssr/ssrModuleLoader.ts @@ -1,12 +1,9 @@ -import fs from 'fs' import path from 'path' import { pathToFileURL } from 'url' -import { ViteDevServer } from '..' +import { ViteDevServer } from '../server' import { dynamicImport, - cleanUrl, isBuiltin, - resolveFrom, unwrapId, usingDynamicImport } from '../utils' @@ -19,9 +16,11 @@ import { ssrDynamicImportKey } from './ssrTransform' import { transformRequest } from '../server/transformRequest' +import { InternalResolveOptions, tryNodeResolve } from '../plugins/resolve' +import { hookNodeResolve } from '../plugins/ssrRequireHook' interface SSRContext { - global: NodeJS.Global + global: typeof globalThis } type SSRModule = Record @@ -96,13 +95,32 @@ async function instantiateModule( urlStack = urlStack.concat(url) const isCircular = (url: string) => urlStack.includes(url) + const { + isProduction, + resolve: { dedupe }, + root + } = server.config + + const resolveOptions: InternalResolveOptions = { + conditions: ['node'], + dedupe, + // Prefer CommonJS modules. + extensions: ['.js', '.mjs', '.ts', '.jsx', '.tsx', '.json'], + isBuild: true, + isProduction, + // Disable "module" condition. + isRequire: true, + mainFields: ['main'], + root + } + // Since dynamic imports can happen in parallel, we need to // account for multiple pending deps and duplicate imports. const pendingDeps: string[] = [] const ssrImport = async (dep: string) => { if (dep[0] !== '.' && dep[0] !== '/') { - return nodeImport(dep, mod.file, server.config) + return nodeImport(dep, mod.file!, resolveOptions) } dep = unwrapId(dep) if (!isCircular(dep) && !pendingImports.get(dep)?.some(isCircular)) { @@ -192,21 +210,48 @@ async function instantiateModule( // In node@12+ we can use dynamic import to load CJS and ESM async function nodeImport( id: string, - importer: string | null, - config: ViteDevServer['config'] + importer: string, + resolveOptions: InternalResolveOptions ) { + // Node's module resolution is hi-jacked so Vite can ensure the + // configured `resolve.dedupe` and `mode` options are respected. + const viteResolve = (id: string, importer: string) => { + const resolved = tryNodeResolve(id, importer, resolveOptions, false) + if (!resolved) { + const err: any = new Error( + `Cannot find module '${id}' imported from '${importer}'` + ) + err.code = 'ERR_MODULE_NOT_FOUND' + throw err + } + return resolved.id + } + + // When an ESM module imports an ESM dependency, this hook is *not* used. + const unhookNodeResolve = hookNodeResolve( + (nodeResolve) => (id, parent, isMain, options) => + id[0] === '.' || isBuiltin(id) + ? nodeResolve(id, parent, isMain, options) + : viteResolve(id, parent.id) + ) + let url: string // `resolve` doesn't handle `node:` builtins, so handle them directly if (id.startsWith('node:') || isBuiltin(id)) { url = id } else { - url = resolve(id, importer, config.root, !!config.resolve.preserveSymlinks) + url = viteResolve(id, importer) if (usingDynamicImport) { url = pathToFileURL(url).toString() } } - const mod = await dynamicImport(url) - return proxyESM(id, mod) + + try { + const mod = await dynamicImport(url) + return proxyESM(id, mod) + } finally { + unhookNodeResolve() + } } // rollup-style default import interop for cjs @@ -219,29 +264,7 @@ function proxyESM(id: string, mod: any) { return new Proxy(mod, { get(mod, prop) { if (prop === 'default') return defaultExport - return mod[prop] + return mod[prop] ?? defaultExport?.[prop] } }) } - -const resolveCache = new Map() - -function resolve( - id: string, - importer: string | null, - root: string, - preserveSymlinks: boolean -) { - const key = id + importer + root - const cached = resolveCache.get(key) - if (cached) { - return cached - } - const resolveDir = - importer && fs.existsSync(cleanUrl(importer)) - ? path.dirname(importer) - : root - const resolved = resolveFrom(id, resolveDir, preserveSymlinks, true) - resolveCache.set(key, resolved) - return resolved -} diff --git a/packages/vite/src/node/ssr/ssrStacktrace.ts b/packages/vite/src/node/ssr/ssrStacktrace.ts index 23fd7d018f0185..d4689553ea21d7 100644 --- a/packages/vite/src/node/ssr/ssrStacktrace.ts +++ b/packages/vite/src/node/ssr/ssrStacktrace.ts @@ -31,6 +31,8 @@ export function ssrRewriteStacktrace( return input } + // In `source-map:v0.7.0+` this constructor returns a Promise... + // How can we make this block async? const consumer = new SourceMapConsumer( rawSourceMap as unknown as RawSourceMap ) diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index 4d6d4436b4248b..5c4b76646c8570 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -152,6 +152,8 @@ export const isExternalUrl = (url: string): boolean => externalRE.test(url) export const dataUrlRE = /^\s*data:/i export const isDataUrl = (url: string): boolean => dataUrlRE.test(url) +export const virtualModuleRE = /virtual-module:.*/ + const knownJsSrcRE = /\.((j|t)sx?|mjs|vue|marko|svelte|astro)($|\?)/ export const isJSRequest = (url: string): boolean => { url = cleanUrl(url) @@ -164,6 +166,14 @@ export const isJSRequest = (url: string): boolean => { return false } +const knownTsRE = /\.(ts|mts|cts|tsx)$/ +const knownTsOutputRE = /\.(js|mjs|cjs|jsx)$/ +export const isTsRequest = (url: string) => knownTsRE.test(cleanUrl(url)) +export const isPossibleTsOutput = (url: string) => + knownTsOutputRE.test(cleanUrl(url)) +export const getTsSrcPath = (filename: string) => + filename.replace(/\.([cm])?(js)(x?)$/, '.$1ts$3') + const importQueryRE = /(\?|&)import=?(?:&|$)/ const internalPrefixes = [ FS_PREFIX, diff --git a/packages/vite/types/commonjs.d.ts b/packages/vite/types/commonjs.d.ts index fd9ab8aa191001..5891a7573112a5 100644 --- a/packages/vite/types/commonjs.d.ts +++ b/packages/vite/types/commonjs.d.ts @@ -7,7 +7,7 @@ */ export interface RollupCommonJSOptions { /** - * A minimatch pattern, or array of patterns, which specifies the files in + * A picomatch pattern, or array of patterns, which specifies the files in * the build the plugin should operate on. By default, all files with * extension `".cjs"` or those in `extensions` are included, but you can narrow * this list by only including specific files. These files will be analyzed @@ -17,7 +17,7 @@ export interface RollupCommonJSOptions { */ include?: string | RegExp | readonly (string | RegExp)[] /** - * A minimatch pattern, or array of patterns, which specifies the files in + * A picomatch pattern, or array of patterns, which specifies the files in * the build the plugin should _ignore_. By default, all files with * extensions other than those in `extensions` or `".cjs"` are ignored, but you * can exclude additional files. See also the `include` option. @@ -71,6 +71,26 @@ export interface RollupCommonJSOptions { * @default [] */ ignore?: ReadonlyArray | ((id: string) => boolean) + /** + * In most cases, where `require` calls are inside a `try-catch` clause, + * they should be left unconverted as it requires an optional dependency + * that may or may not be installed beside the rolled up package. + * Due to the conversion of `require` to a static `import` - the call is hoisted + * to the top of the file, outside of the `try-catch` clause. + * + * - `true`: All `require` calls inside a `try` will be left unconverted. + * - `false`: All `require` calls inside a `try` will be converted as if the `try-catch` clause is not there. + * - `remove`: Remove all `require` calls from inside any `try` block. + * - `string[]`: Pass an array containing the IDs to left unconverted. + * - `((id: string) => boolean|'remove')`: Pass a function that control individual IDs. + * + * @default false + */ + ignoreTryCatch?: + | boolean + | 'remove' + | ReadonlyArray + | ((id: string) => boolean | 'remove') /** * Controls how to render imports from external dependencies. By default, * this plugin assumes that all external dependencies are CommonJS. This diff --git a/packages/vite/types/shims.d.ts b/packages/vite/types/shims.d.ts index a351f6bfc81092..12bf327229f34c 100644 --- a/packages/vite/types/shims.d.ts +++ b/packages/vite/types/shims.d.ts @@ -95,13 +95,12 @@ declare module 'rollup-plugin-web-worker-loader' { export default p } -declare module 'minimatch' { - function match( +declare module 'micromatch' { + export function isMatch( path: string, pattern: string, options?: { matchBase?: boolean } ): boolean - export default match } declare module 'compression' { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e86f24fd601903..b10e883df866c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,74 +8,74 @@ importers: .: specifiers: - '@microsoft/api-extractor': ^7.18.11 + '@microsoft/api-extractor': ^7.18.19 '@types/fs-extra': ^9.0.13 '@types/jest': ^27.0.2 - '@types/node': ^15.12.2 - '@types/semver': ^7.3.8 - '@typescript-eslint/eslint-plugin': ^5.2.0 - '@typescript-eslint/parser': ^5.2.0 + '@types/node': ^16.11.7 + '@types/semver': ^7.3.9 + '@typescript-eslint/eslint-plugin': ^5.3.1 + '@typescript-eslint/parser': ^5.3.1 chalk: ^4.1.2 conventional-changelog-cli: ^2.1.1 cross-env: ^7.0.3 - esbuild: ^0.13.2 - eslint: ^8.1.0 - eslint-define-config: ^1.1.2 + esbuild: ^0.13.12 + eslint: ^8.2.0 + eslint-define-config: ^1.1.3 eslint-plugin-node: ^11.1.0 execa: ^5.1.1 fs-extra: ^10.0.0 jest: ^27.3.1 - lint-staged: ^11.2.0 + lint-staged: ^11.2.6 minimist: ^1.2.5 - node-fetch: ^2.6.5 + node-fetch: ^2.6.6 npm-run-all: ^4.1.5 - playwright-chromium: ^1.15.1 + playwright-chromium: ^1.16.3 prettier: 2.4.1 - prompts: ^2.4.1 + prompts: ^2.4.2 rimraf: ^3.0.2 - rollup: ^2.57.0 + rollup: ^2.59.0 semver: ^7.3.5 - sirv: ^1.0.17 + sirv: ^1.0.18 ts-jest: ^27.0.7 - ts-node: ^10.1.0 - typescript: ~4.4.3 + ts-node: ^10.4.0 + typescript: ~4.4.4 vite: workspace:* - vitepress: ^0.19.2 + vitepress: ^0.20.1 yorkie: ^2.0.0 devDependencies: - '@microsoft/api-extractor': 7.18.17 + '@microsoft/api-extractor': 7.18.19 '@types/fs-extra': 9.0.13 '@types/jest': 27.0.2 - '@types/node': 15.14.9 + '@types/node': 16.11.7 '@types/semver': 7.3.9 - '@typescript-eslint/eslint-plugin': 5.2.0_9a56ca1c5fc1d82b3da3317a5c6f9ab1 - '@typescript-eslint/parser': 5.2.0_eslint@8.1.0+typescript@4.4.4 + '@typescript-eslint/eslint-plugin': 5.3.1_4653b7803b7453f5f37717b7e1448517 + '@typescript-eslint/parser': 5.3.1_eslint@8.2.0+typescript@4.4.4 chalk: 4.1.2 conventional-changelog-cli: 2.1.1 cross-env: 7.0.3 - esbuild: 0.13.10 - eslint: 8.1.0 - eslint-define-config: 1.1.2 - eslint-plugin-node: 11.1.0_eslint@8.1.0 + esbuild: 0.13.12 + eslint: 8.2.0 + eslint-define-config: 1.1.3 + eslint-plugin-node: 11.1.0_eslint@8.2.0 execa: 5.1.1 fs-extra: 10.0.0 jest: 27.3.1_ts-node@10.4.0 lint-staged: 11.2.6 minimist: 1.2.5 - node-fetch: 2.6.5 + node-fetch: 2.6.6 npm-run-all: 4.1.5 - playwright-chromium: 1.16.2 + playwright-chromium: 1.16.3 prettier: 2.4.1 prompts: 2.4.2 rimraf: 3.0.2 - rollup: 2.58.3 + rollup: 2.59.0 semver: 7.3.5 sirv: 1.0.18 ts-jest: 27.0.7_2c4ca6574207836d1023f54689cc81ac - ts-node: 10.4.0_d3e11751f498564481cc5d710b5b838a + ts-node: 10.4.0_ee928ac548ac44c173bf0d4654ae2c29 typescript: 4.4.4 vite: link:packages/vite - vitepress: 0.19.2 + vitepress: 0.20.1 yorkie: 2.0.0 packages/create-app: @@ -104,19 +104,24 @@ importers: packages/playground/alias: specifiers: + aliased-module: file:./dir/module resolve-linked: workspace:* - vue: ^3.2.16 + vue: ^3.2.21 dependencies: - vue: 3.2.20 + aliased-module: link:dir/module + vue: 3.2.21 devDependencies: resolve-linked: link:../resolve-linked + packages/playground/alias/dir/module: + specifiers: {} + packages/playground/assets: specifiers: {} packages/playground/backend-integration: specifiers: - tailwindcss: ^2.2.4 + tailwindcss: ^2.2.19 dependencies: tailwindcss: 2.2.19_ts-node@10.4.0 @@ -129,16 +134,16 @@ importers: packages/playground/css: specifiers: css-dep: link:./css-dep - less: ^4.1.0 - postcss-nested: ^5.0.3 - sass: ^1.32.5 - stylus: ^0.54.8 + less: ^4.1.2 + postcss-nested: ^5.0.6 + sass: ^1.43.4 + stylus: ^0.55.0 devDependencies: css-dep: link:css-dep less: 4.1.2 postcss-nested: 5.0.6 sass: 1.43.4 - stylus: 0.54.8 + stylus: 0.55.0 packages/playground/css-codesplit: specifiers: {} @@ -175,15 +180,15 @@ importers: packages/playground/extensions: specifiers: - vue: ^3.2.16 + vue: ^3.2.21 dependencies: - vue: 3.2.20 + vue: 3.2.21 packages/playground/file-delete-restore: specifiers: '@vitejs/plugin-react': workspace:* - react: ^17.0.1 - react-dom: ^17.0.1 + react: ^17.0.2 + react-dom: ^17.0.2 dependencies: react: 17.0.2 react-dom: 17.0.2_react@17.0.2 @@ -204,9 +209,9 @@ importers: packages/playground/json: specifiers: - vue: ^3.2.16 + vue: ^3.2.21 devDependencies: - vue: 3.2.20 + vue: 3.2.21 packages/playground/legacy: specifiers: @@ -272,23 +277,23 @@ importers: packages/playground/optimize-deps: specifiers: '@vitejs/plugin-vue': workspace:* - axios: ^0.21.1 - clipboard: ^2.0.6 + axios: ^0.24.0 + clipboard: ^2.0.8 dep-cjs-compiled-from-cjs: file:./dep-cjs-compiled-from-cjs dep-cjs-compiled-from-esm: file:./dep-cjs-compiled-from-esm dep-esbuild-plugin-transform: file:./dep-esbuild-plugin-transform dep-linked: link:./dep-linked dep-linked-include: link:./dep-linked-include - lodash-es: ^4.17.20 + lodash-es: ^4.17.21 nested-exclude: file:./nested-exclude - phoenix: ^1.5.7 - react: ^17.0.1 - react-dom: ^17.0.1 - resolve-linked: 0.0.0 - vue: ^3.2.16 + phoenix: ^1.6.2 + react: ^17.0.2 + react-dom: ^17.0.2 + resolve-linked: workspace:0.0.0 + vue: ^3.2.21 vuex: ^4.0.0 dependencies: - axios: 0.21.4 + axios: 0.24.0 clipboard: 2.0.8 dep-cjs-compiled-from-cjs: link:dep-cjs-compiled-from-cjs dep-cjs-compiled-from-esm: link:dep-cjs-compiled-from-esm @@ -301,8 +306,8 @@ importers: react: 17.0.2 react-dom: 17.0.2_react@17.0.2 resolve-linked: link:../resolve-linked - vue: 3.2.20 - vuex: 4.0.2_vue@3.2.20 + vue: 3.2.21 + vuex: 4.0.2_vue@3.2.21 devDependencies: '@vitejs/plugin-vue': link:../../plugin-vue @@ -317,15 +322,15 @@ importers: packages/playground/optimize-deps/dep-linked: specifiers: - lodash-es: ^4.17.20 + lodash-es: ^4.17.21 dependencies: lodash-es: 4.17.21 packages/playground/optimize-deps/dep-linked-include: specifiers: - react: 17.0.0 + react: 17.0.2 dependencies: - react: 17.0.0 + react: 17.0.2 packages/playground/optimize-deps/nested-exclude: specifiers: @@ -359,11 +364,11 @@ importers: packages/playground/preload: specifiers: '@vitejs/plugin-vue': workspace:* - vue: ^3.2.16 + vue: ^3.2.21 vue-router: ^4.0.0 dependencies: - vue: 3.2.20 - vue-router: 4.0.12_vue@3.2.20 + vue: 3.2.21 + vue-router: 4.0.12_vue@3.2.21 devDependencies: '@vitejs/plugin-vue': link:../../plugin-vue @@ -379,8 +384,8 @@ importers: packages/playground/react: specifiers: '@vitejs/plugin-react': workspace:* - react: ^17.0.1 - react-dom: ^17.0.1 + react: ^17.0.2 + react-dom: ^17.0.2 dependencies: react: 17.0.2 react-dom: 17.0.2_react@17.0.2 @@ -389,12 +394,12 @@ importers: packages/playground/react-emotion: specifiers: - '@babel/plugin-proposal-pipeline-operator': ^7.14.5 + '@babel/plugin-proposal-pipeline-operator': ^7.16.0 '@emotion/babel-plugin': ^11.3.0 - '@emotion/react': ^11.4.0 + '@emotion/react': ^11.5.0 '@vitejs/plugin-react': workspace:* - react: ^17.0.1 - react-dom: ^17.0.1 + react: ^17.0.2 + react-dom: ^17.0.2 react-switch: ^6.0.0 dependencies: '@emotion/react': 11.5.0_react@17.0.2 @@ -402,13 +407,13 @@ importers: react-dom: 17.0.2_react@17.0.2 react-switch: 6.0.0_react-dom@17.0.2+react@17.0.2 devDependencies: - '@babel/plugin-proposal-pipeline-operator': 7.15.0 + '@babel/plugin-proposal-pipeline-operator': 7.16.0 '@emotion/babel-plugin': 11.3.0 '@vitejs/plugin-react': link:../../plugin-react packages/playground/resolve: specifiers: - '@babel/runtime': ^7.12.5 + '@babel/runtime': ^7.16.0 es5-ext: 0.10.53 normalize.css: ^8.0.1 resolve-browser-field: link:./browser-field @@ -418,7 +423,7 @@ importers: resolve-exports-path: link:./exports-path resolve-linked: workspace:* dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.0 es5-ext: 0.10.53 normalize.css: 8.0.1 resolve-browser-field: link:browser-field @@ -457,16 +462,26 @@ importers: cross-env: 7.0.3 express: 4.17.1 + packages/playground/ssr-pug: + specifiers: + cross-env: ^7.0.3 + express: ^4.17.1 + pug: ^3.0.2 + devDependencies: + cross-env: 7.0.3 + express: 4.17.1 + pug: 3.0.2 + packages/playground/ssr-react: specifiers: '@vitejs/plugin-react': workspace:* compression: ^1.7.4 cross-env: ^7.0.3 express: ^4.17.1 - react: ^17.0.1 - react-dom: ^17.0.1 - react-router: ^5.2.0 - react-router-dom: ^5.2.0 + react: ^17.0.2 + react-dom: ^17.0.2 + react-router: ^5.2.1 + react-router-dom: ^5.3.0 serve-static: ^1.14.1 dependencies: react: 17.0.2 @@ -490,12 +505,14 @@ importers: example-external-component: file:example-external-component express: ^4.17.1 serve-static: ^1.14.1 - vue: ^3.2.16 + vue: ^3.2.21 vue-router: ^4.0.0 + vuex: ^4.0.2 dependencies: example-external-component: link:example-external-component - vue: 3.2.20 - vue-router: 4.0.12_vue@3.2.20 + vue: 3.2.21 + vue-router: 4.0.12_vue@3.2.21 + vuex: 4.0.2_vue@3.2.21 devDependencies: '@vitejs/plugin-vue': link:../../plugin-vue '@vitejs/plugin-vue-jsx': link:../../plugin-vue-jsx @@ -513,7 +530,7 @@ importers: packages/playground/ssr-webworker: specifiers: - miniflare: ^1.3.3 + miniflare: ^1.4.1 react: ^17.0.2 resolve-linked: workspace:* dependencies: @@ -525,15 +542,15 @@ importers: packages/playground/tailwind: specifiers: '@vitejs/plugin-vue': workspace:* - autoprefixer: ^10.3.0 - tailwindcss: ^2.2.4 - vue: ^3.2.16 + autoprefixer: ^10.4.0 + tailwindcss: ^2.2.19 + vue: ^3.2.21 vue-router: ^4.0.0 dependencies: autoprefixer: 10.4.0 tailwindcss: 2.2.19_6d1fa3babc9cc84b994ff99ef39d1aff - vue: 3.2.20 - vue-router: 4.0.12_vue@3.2.20 + vue: 3.2.21 + vue-router: 4.0.12_vue@3.2.21 devDependencies: '@vitejs/plugin-vue': link:../../plugin-vue @@ -546,31 +563,31 @@ importers: packages/playground/vue: specifiers: '@vitejs/plugin-vue': workspace:* - js-yaml: ^3.14.1 - less: ^3.13.0 - lodash-es: ^4.17.20 - pug: ^3.0.0 - sass: ^1.30.0 - stylus: ^0.54.8 - vue: ^3.2.16 + js-yaml: ^4.1.0 + less: ^4.1.2 + lodash-es: ^4.17.21 + pug: ^3.0.2 + sass: ^1.43.4 + stylus: ^0.55.0 + vue: ^3.2.21 dependencies: lodash-es: 4.17.21 - vue: 3.2.20 + vue: 3.2.21 devDependencies: '@vitejs/plugin-vue': link:../../plugin-vue - js-yaml: 3.14.1 - less: 3.13.1 + js-yaml: 4.1.0 + less: 4.1.2 pug: 3.0.2 sass: 1.43.4 - stylus: 0.54.8 + stylus: 0.55.0 packages/playground/vue-jsx: specifiers: '@vitejs/plugin-vue': workspace:* '@vitejs/plugin-vue-jsx': workspace:* - vue: ^3.2.16 + vue: ^3.2.21 dependencies: - vue: 3.2.20 + vue: 3.2.21 devDependencies: '@vitejs/plugin-vue': link:../../plugin-vue '@vitejs/plugin-vue-jsx': link:../../plugin-vue-jsx @@ -583,81 +600,87 @@ importers: packages/plugin-legacy: specifiers: - '@babel/standalone': ^7.15.8 - core-js: ^3.19.0 + '@babel/standalone': ^7.16.2 + core-js: ^3.19.1 magic-string: ^0.25.7 regenerator-runtime: ^0.13.9 systemjs: ^6.11.0 dependencies: - '@babel/standalone': 7.15.8 - core-js: 3.19.0 + '@babel/standalone': 7.16.2 + core-js: 3.19.1 magic-string: 0.25.7 regenerator-runtime: 0.13.9 systemjs: 6.11.0 packages/plugin-react: specifiers: - '@babel/core': ^7.15.8 - '@babel/plugin-transform-react-jsx': ^7.14.9 - '@babel/plugin-transform-react-jsx-development': ^7.14.5 - '@babel/plugin-transform-react-jsx-self': ^7.14.9 - '@babel/plugin-transform-react-jsx-source': ^7.14.5 + '@babel/core': ^7.16.0 + '@babel/plugin-transform-react-jsx': ^7.16.0 + '@babel/plugin-transform-react-jsx-development': ^7.16.0 + '@babel/plugin-transform-react-jsx-self': ^7.16.0 + '@babel/plugin-transform-react-jsx-source': ^7.16.0 '@rollup/pluginutils': ^4.1.1 - react-refresh: ^0.10.0 + react-refresh: ^0.11.0 resolve: ^1.20.0 dependencies: - '@babel/core': 7.15.8 - '@babel/plugin-transform-react-jsx': 7.14.9_@babel+core@7.15.8 - '@babel/plugin-transform-react-jsx-development': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-react-jsx-self': 7.14.9_@babel+core@7.15.8 - '@babel/plugin-transform-react-jsx-source': 7.14.5_@babel+core@7.15.8 + '@babel/core': 7.16.0 + '@babel/plugin-transform-react-jsx': 7.16.0_@babel+core@7.16.0 + '@babel/plugin-transform-react-jsx-development': 7.16.0_@babel+core@7.16.0 + '@babel/plugin-transform-react-jsx-self': 7.16.0_@babel+core@7.16.0 + '@babel/plugin-transform-react-jsx-source': 7.16.0_@babel+core@7.16.0 '@rollup/pluginutils': 4.1.1 - react-refresh: 0.10.0 + react-refresh: 0.11.0 resolve: 1.20.0 packages/plugin-vue: specifiers: '@rollup/pluginutils': ^4.1.1 '@types/hash-sum': ^1.0.0 - '@vue/compiler-sfc': ^3.2.20 + '@vue/compiler-sfc': ^3.2.21 debug: ^4.3.2 hash-sum: ^2.0.0 - rollup: ^2.58.3 - slash: ^3.0.0 + rollup: ^2.59.0 + slash: ^4.0.0 source-map: ^0.6.1 - vue: ^3.2.20 + vue: ^3.2.21 devDependencies: '@rollup/pluginutils': 4.1.1 '@types/hash-sum': 1.0.0 - '@vue/compiler-sfc': 3.2.20 + '@vue/compiler-sfc': 3.2.21 debug: 4.3.2 hash-sum: 2.0.0 - rollup: 2.58.3 - slash: 3.0.0 + rollup: 2.59.0 + slash: 4.0.0 source-map: 0.6.1 - vue: 3.2.20 + vue: 3.2.21 packages/plugin-vue-jsx: specifiers: - '@babel/core': ^7.15.8 + '@babel/core': ^7.16.0 '@babel/plugin-syntax-import-meta': ^7.10.4 - '@babel/plugin-transform-typescript': ^7.15.8 + '@babel/plugin-transform-typescript': ^7.16.1 '@rollup/pluginutils': ^4.1.1 '@vue/babel-plugin-jsx': ^1.1.1 hash-sum: ^2.0.0 dependencies: - '@babel/core': 7.15.8 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.15.8 - '@babel/plugin-transform-typescript': 7.15.8_@babel+core@7.15.8 + '@babel/core': 7.16.0 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.16.0 + '@babel/plugin-transform-typescript': 7.16.1_@babel+core@7.16.0 '@rollup/pluginutils': 4.1.1 - '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.15.8 + '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.16.0 hash-sum: 2.0.0 + packages/temp: + specifiers: + css-color-names: ^1.0.1 + devDependencies: + css-color-names: 1.0.1 + packages/vite: specifiers: '@ampproject/remapping': ^1.0.1 - '@babel/parser': ^7.15.8 - '@babel/types': ^7.15.6 + '@babel/parser': ^7.16.2 + '@babel/types': ^7.16.0 '@rollup/plugin-alias': ^3.1.8 '@rollup/plugin-commonjs': ^21.0.1 '@rollup/plugin-dynamic-import-vars': ^1.4.1 @@ -667,22 +690,22 @@ importers: '@rollup/pluginutils': ^4.1.1 '@types/convert-source-map': ^1.5.2 '@types/debug': ^4.1.7 - '@types/es-module-lexer': ^0.4.1 '@types/estree': ^0.0.50 '@types/etag': ^1.8.1 '@types/less': ^3.0.3 + '@types/micromatch': ^4.0.0 '@types/mime': ^2.0.3 - '@types/node': ^15.14.9 + '@types/node': ^16.11.7 '@types/resolve': ^1.20.1 - '@types/sass': ~1.16.1 + '@types/sass': ~1.43.0 '@types/stylus': ^0.48.36 - '@types/ws': ^7.4.7 - '@vue/compiler-dom': ^3.2.20 + '@types/ws': ^8.2.0 + '@vue/compiler-dom': ^3.2.21 acorn: ^8.5.0 acorn-class-fields: ^1.0.0 acorn-static-class-features: ^1.0.0 builtin-modules: ^3.2.0 - cac: 6.7.3 + cac: 6.7.9 chalk: ^4.1.2 chokidar: ^3.5.2 compression: ^1.7.4 @@ -694,7 +717,7 @@ importers: dotenv: ^10.0.0 dotenv-expand: ^5.1.0 es-module-lexer: ^0.9.3 - esbuild: ^0.13.10 + esbuild: ^0.13.12 estree-walker: ^2.0.2 etag: ^1.8.1 execa: ^5.1.1 @@ -703,8 +726,8 @@ importers: http-proxy: ^1.18.1 launch-editor-middleware: ^2.2.1 magic-string: ^0.25.7 - mime: ^2.5.2 - minimatch: ^3.0.4 + micromatch: ^4.0.4 + mime: ^3.0.0 okie: ^1.0.1 open: ^8.4.0 periscopic: ^2.0.3 @@ -714,7 +737,7 @@ importers: postcss-modules: ^4.2.2 resolve: ^1.20.0 resolve.exports: ^1.1.0 - rollup: ^2.58.3 + rollup: ^2.59.0 rollup-plugin-license: ^2.6.0 selfsigned: ^1.10.11 sirv: ^1.0.18 @@ -722,46 +745,46 @@ importers: source-map-support: ^0.5.20 strip-ansi: ^6.0.1 terser: ^5.9.0 - tsconfck: 1.0.0 + tsconfck: 1.1.1 tslib: ^2.3.1 types: link:./types - ws: ^7.5.5 + ws: ^8.2.3 dependencies: - esbuild: 0.13.10 + esbuild: 0.13.12 postcss: 8.3.11 resolve: 1.20.0 - rollup: 2.58.3 + rollup: 2.59.0 optionalDependencies: fsevents: 2.3.2 devDependencies: '@ampproject/remapping': 1.0.1 - '@babel/parser': 7.15.8 - '@babel/types': 7.15.6 - '@rollup/plugin-alias': 3.1.8_rollup@2.58.3 - '@rollup/plugin-commonjs': 21.0.1_rollup@2.58.3 - '@rollup/plugin-dynamic-import-vars': 1.4.1_rollup@2.58.3 - '@rollup/plugin-json': 4.1.0_rollup@2.58.3 - '@rollup/plugin-node-resolve': 13.0.6_rollup@2.58.3 - '@rollup/plugin-typescript': 8.3.0_eadbb6348e5d71a0a94215fbea4eae9e + '@babel/parser': 7.16.2 + '@babel/types': 7.16.0 + '@rollup/plugin-alias': 3.1.8_rollup@2.59.0 + '@rollup/plugin-commonjs': 21.0.1_rollup@2.59.0 + '@rollup/plugin-dynamic-import-vars': 1.4.1_rollup@2.59.0 + '@rollup/plugin-json': 4.1.0_rollup@2.59.0 + '@rollup/plugin-node-resolve': 13.0.6_rollup@2.59.0 + '@rollup/plugin-typescript': 8.3.0_80f1acc233e4df93aa4e78959e046afc '@rollup/pluginutils': 4.1.1 '@types/convert-source-map': 1.5.2 '@types/debug': 4.1.7 - '@types/es-module-lexer': 0.4.1 '@types/estree': 0.0.50 '@types/etag': 1.8.1 '@types/less': 3.0.3 + '@types/micromatch': 4.0.2 '@types/mime': 2.0.3 - '@types/node': 15.14.9 + '@types/node': 16.11.7 '@types/resolve': 1.20.1 - '@types/sass': 1.16.1 + '@types/sass': 1.43.0 '@types/stylus': 0.48.36 - '@types/ws': 7.4.7 - '@vue/compiler-dom': 3.2.20 + '@types/ws': 8.2.0 + '@vue/compiler-dom': 3.2.21 acorn: 8.5.0 acorn-class-fields: 1.0.0_acorn@8.5.0 acorn-static-class-features: 1.0.0_acorn@8.5.0 builtin-modules: 3.2.0 - cac: 6.7.3 + cac: 6.7.9 chalk: 4.1.2 chokidar: 3.5.2 compression: 1.7.4 @@ -780,8 +803,8 @@ importers: http-proxy: 1.18.1_debug@4.3.2 launch-editor-middleware: 2.2.1 magic-string: 0.25.7 - mime: 2.5.2 - minimatch: 3.0.4 + micromatch: 4.0.4 + mime: 3.0.0 okie: 1.0.1 open: 8.4.0 periscopic: 2.0.3 @@ -789,17 +812,17 @@ importers: postcss-load-config: 3.1.0_ts-node@10.4.0 postcss-modules: 4.2.2_postcss@8.3.11 resolve.exports: 1.1.0 - rollup-plugin-license: 2.6.0_rollup@2.58.3 + rollup-plugin-license: 2.6.0_rollup@2.59.0 selfsigned: 1.10.11 sirv: 1.0.18 source-map: 0.6.1 source-map-support: 0.5.20 strip-ansi: 6.0.1 terser: 5.9.0 - tsconfck: 1.0.0_typescript@4.4.4 + tsconfck: 1.1.1_typescript@4.4.4 tslib: 2.3.1 types: link:types - ws: 7.5.5 + ws: 8.2.3 packages: @@ -901,29 +924,29 @@ packages: sourcemap-codec: 1.4.8 dev: true - /@babel/code-frame/7.15.8: - resolution: {integrity: sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==} + /@babel/code-frame/7.16.0: + resolution: {integrity: sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.14.5 + '@babel/highlight': 7.16.0 - /@babel/compat-data/7.15.0: - resolution: {integrity: sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==} + /@babel/compat-data/7.16.0: + resolution: {integrity: sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==} engines: {node: '>=6.9.0'} - /@babel/core/7.15.8: - resolution: {integrity: sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==} + /@babel/core/7.16.0: + resolution: {integrity: sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.15.8 - '@babel/generator': 7.15.8 - '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.8 - '@babel/helper-module-transforms': 7.15.8 - '@babel/helpers': 7.15.4 - '@babel/parser': 7.15.8 - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/code-frame': 7.16.0 + '@babel/generator': 7.16.0 + '@babel/helper-compilation-targets': 7.16.0_@babel+core@7.16.0 + '@babel/helper-module-transforms': 7.16.0 + '@babel/helpers': 7.16.0 + '@babel/parser': 7.16.2 + '@babel/template': 7.16.0 + '@babel/traverse': 7.16.0 + '@babel/types': 7.16.0 convert-source-map: 1.8.0 debug: 4.3.2 gensync: 1.0.0-beta.2 @@ -933,129 +956,129 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator/7.15.8: - resolution: {integrity: sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==} + /@babel/generator/7.16.0: + resolution: {integrity: sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 jsesc: 2.5.2 source-map: 0.5.7 - /@babel/helper-annotate-as-pure/7.15.4: - resolution: {integrity: sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==} + /@babel/helper-annotate-as-pure/7.16.0: + resolution: {integrity: sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 dev: false - /@babel/helper-compilation-targets/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==} + /@babel/helper-compilation-targets/7.16.0_@babel+core@7.16.0: + resolution: {integrity: sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.15.0 - '@babel/core': 7.15.8 + '@babel/compat-data': 7.16.0 + '@babel/core': 7.16.0 '@babel/helper-validator-option': 7.14.5 - browserslist: 4.17.5 + browserslist: 4.17.6 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==} + /@babel/helper-create-class-features-plugin/7.16.0_@babel+core@7.16.0: + resolution: {integrity: sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.15.8 - '@babel/helper-annotate-as-pure': 7.15.4 - '@babel/helper-function-name': 7.15.4 - '@babel/helper-member-expression-to-functions': 7.15.4 - '@babel/helper-optimise-call-expression': 7.15.4 - '@babel/helper-replace-supers': 7.15.4 - '@babel/helper-split-export-declaration': 7.15.4 + '@babel/core': 7.16.0 + '@babel/helper-annotate-as-pure': 7.16.0 + '@babel/helper-function-name': 7.16.0 + '@babel/helper-member-expression-to-functions': 7.16.0 + '@babel/helper-optimise-call-expression': 7.16.0 + '@babel/helper-replace-supers': 7.16.0 + '@babel/helper-split-export-declaration': 7.16.0 transitivePeerDependencies: - supports-color dev: false - /@babel/helper-function-name/7.15.4: - resolution: {integrity: sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==} + /@babel/helper-function-name/7.16.0: + resolution: {integrity: sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-get-function-arity': 7.15.4 - '@babel/template': 7.15.4 - '@babel/types': 7.15.6 + '@babel/helper-get-function-arity': 7.16.0 + '@babel/template': 7.16.0 + '@babel/types': 7.16.0 - /@babel/helper-get-function-arity/7.15.4: - resolution: {integrity: sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==} + /@babel/helper-get-function-arity/7.16.0: + resolution: {integrity: sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 - /@babel/helper-hoist-variables/7.15.4: - resolution: {integrity: sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==} + /@babel/helper-hoist-variables/7.16.0: + resolution: {integrity: sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 - /@babel/helper-member-expression-to-functions/7.15.4: - resolution: {integrity: sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==} + /@babel/helper-member-expression-to-functions/7.16.0: + resolution: {integrity: sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 - /@babel/helper-module-imports/7.15.4: - resolution: {integrity: sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==} + /@babel/helper-module-imports/7.16.0: + resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 - /@babel/helper-module-transforms/7.15.8: - resolution: {integrity: sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==} + /@babel/helper-module-transforms/7.16.0: + resolution: {integrity: sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-module-imports': 7.15.4 - '@babel/helper-replace-supers': 7.15.4 - '@babel/helper-simple-access': 7.15.4 - '@babel/helper-split-export-declaration': 7.15.4 + '@babel/helper-module-imports': 7.16.0 + '@babel/helper-replace-supers': 7.16.0 + '@babel/helper-simple-access': 7.16.0 + '@babel/helper-split-export-declaration': 7.16.0 '@babel/helper-validator-identifier': 7.15.7 - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/template': 7.16.0 + '@babel/traverse': 7.16.0 + '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color - /@babel/helper-optimise-call-expression/7.15.4: - resolution: {integrity: sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==} + /@babel/helper-optimise-call-expression/7.16.0: + resolution: {integrity: sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 /@babel/helper-plugin-utils/7.14.5: resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==} engines: {node: '>=6.9.0'} - /@babel/helper-replace-supers/7.15.4: - resolution: {integrity: sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==} + /@babel/helper-replace-supers/7.16.0: + resolution: {integrity: sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-member-expression-to-functions': 7.15.4 - '@babel/helper-optimise-call-expression': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/helper-member-expression-to-functions': 7.16.0 + '@babel/helper-optimise-call-expression': 7.16.0 + '@babel/traverse': 7.16.0 + '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color - /@babel/helper-simple-access/7.15.4: - resolution: {integrity: sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==} + /@babel/helper-simple-access/7.16.0: + resolution: {integrity: sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 - /@babel/helper-split-export-declaration/7.15.4: - resolution: {integrity: sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==} + /@babel/helper-split-export-declaration/7.16.0: + resolution: {integrity: sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 /@babel/helper-validator-identifier/7.15.7: resolution: {integrity: sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==} @@ -1065,85 +1088,85 @@ packages: resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} engines: {node: '>=6.9.0'} - /@babel/helpers/7.15.4: - resolution: {integrity: sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==} + /@babel/helpers/7.16.0: + resolution: {integrity: sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/template': 7.16.0 + '@babel/traverse': 7.16.0 + '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color - /@babel/highlight/7.14.5: - resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} + /@babel/highlight/7.16.0: + resolution: {integrity: sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.15.7 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.15.8: - resolution: {integrity: sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==} + /@babel/parser/7.16.2: + resolution: {integrity: sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==} engines: {node: '>=6.0.0'} hasBin: true - /@babel/plugin-proposal-pipeline-operator/7.15.0: - resolution: {integrity: sha512-/XNBV8GmMxl7icZ0G5o4f3aGXHDKuhS8xHhbdusjE/ZDrsqtLq5kUiw/i7J6ZnlS/ngM0IQTN2CPlrPTb6GKVw==} + /@babel/plugin-proposal-pipeline-operator/7.16.0: + resolution: {integrity: sha512-y9WbLfaPDDkShmU89N1spx54ELht7rXE2jWDzCgc23OmTwliEK9NSoR8KZdtjr1mR3QfG7D6mcDHmI4M0bhMQA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-pipeline-operator': 7.15.0 + '@babel/plugin-syntax-pipeline-operator': 7.16.0 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.15.8: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.16.0: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.15.8: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.15.8: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.16.0: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.15.8: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.16.0: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.15.8: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-jsx/7.14.5: - resolution: {integrity: sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==} + /@babel/plugin-syntax-jsx/7.16.0: + resolution: {integrity: sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1151,72 +1174,72 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-jsx/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==} + /@babel/plugin-syntax-jsx/7.16.0_@babel+core@7.16.0: + resolution: {integrity: sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: false - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.15.8: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.16.0: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.15.8: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.15.8: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.16.0: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.15.8: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.15.8: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.15.8: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-pipeline-operator/7.15.0: - resolution: {integrity: sha512-APuEsBJFWgLasnPi3XS4o7AW24Z8hsX1odmCl9it1fpIA38E2+rSWk6zy1MpFQYKGyphlh84dJB4MtDwI0XN5w==} + /@babel/plugin-syntax-pipeline-operator/7.16.0: + resolution: {integrity: sha512-wUWeLyChgsQ2cVp3vDtDqnwmDHdTiRyxuEeGRGwmPxp7YcNyQw+axni5R+WO/TF565j36Pp8zRU1qnY5etf4BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1224,120 +1247,120 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.15.8: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.16.0: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-typescript/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==} + /@babel/plugin-syntax-typescript/7.16.0_@babel+core@7.16.0: + resolution: {integrity: sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-react-jsx-development/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==} + /@babel/plugin-transform-react-jsx-development/7.16.0_@babel+core@7.16.0: + resolution: {integrity: sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 - '@babel/plugin-transform-react-jsx': 7.14.9_@babel+core@7.15.8 + '@babel/core': 7.16.0 + '@babel/plugin-transform-react-jsx': 7.16.0_@babel+core@7.16.0 dev: false - /@babel/plugin-transform-react-jsx-self/7.14.9_@babel+core@7.15.8: - resolution: {integrity: sha512-Fqqu0f8zv9W+RyOnx29BX/RlEsBRANbOf5xs5oxb2aHP4FKbLXxIaVPUiCti56LAR1IixMH4EyaixhUsKqoBHw==} + /@babel/plugin-transform-react-jsx-self/7.16.0_@babel+core@7.16.0: + resolution: {integrity: sha512-97yCFY+2GvniqOThOSjPor8xUoDiQ0STVWAQMl3pjhJoFVe5DuXDLZCRSZxu9clx+oRCbTiXGgKEG/Yoyo6Y+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: false - /@babel/plugin-transform-react-jsx-source/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-1TpSDnD9XR/rQ2tzunBVPThF5poaYT9GqP+of8fAtguYuI/dm2RkrMBDemsxtY0XBzvW7nXjYM0hRyKX9QYj7Q==} + /@babel/plugin-transform-react-jsx-source/7.16.0_@babel+core@7.16.0: + resolution: {integrity: sha512-8yvbGGrHOeb/oyPc9tzNoe9/lmIjz3HLa9Nc5dMGDyNpGjfFrk8D2KdEq9NRkftZzeoQEW6yPQ29TMZtrLiUUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: false - /@babel/plugin-transform-react-jsx/7.14.9_@babel+core@7.15.8: - resolution: {integrity: sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==} + /@babel/plugin-transform-react-jsx/7.16.0_@babel+core@7.16.0: + resolution: {integrity: sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 - '@babel/helper-annotate-as-pure': 7.15.4 - '@babel/helper-module-imports': 7.15.4 + '@babel/core': 7.16.0 + '@babel/helper-annotate-as-pure': 7.16.0 + '@babel/helper-module-imports': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-jsx': 7.14.5_@babel+core@7.15.8 - '@babel/types': 7.15.6 + '@babel/plugin-syntax-jsx': 7.16.0_@babel+core@7.16.0 + '@babel/types': 7.16.0 dev: false - /@babel/plugin-transform-typescript/7.15.8_@babel+core@7.15.8: - resolution: {integrity: sha512-ZXIkJpbaf6/EsmjeTbiJN/yMxWPFWvlr7sEG1P95Xb4S4IBcrf2n7s/fItIhsAmOf8oSh3VJPDppO6ExfAfKRQ==} + /@babel/plugin-transform-typescript/7.16.1_@babel+core@7.16.0: + resolution: {integrity: sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 - '@babel/helper-create-class-features-plugin': 7.15.4_@babel+core@7.15.8 + '@babel/core': 7.16.0 + '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.16.0 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.15.8 + '@babel/plugin-syntax-typescript': 7.16.0_@babel+core@7.16.0 transitivePeerDependencies: - supports-color dev: false - /@babel/runtime/7.15.4: - resolution: {integrity: sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==} + /@babel/runtime/7.16.0: + resolution: {integrity: sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.9 - /@babel/standalone/7.15.8: - resolution: {integrity: sha512-EF2uQLeuwflnPRGetWH2Z400ITOSK7YbkXIKxY91EWSiOJ8xsbupT3sx3sFRwVyQgjsHSILFDzLcSo/rGspLhQ==} + /@babel/standalone/7.16.2: + resolution: {integrity: sha512-Cc0b/YJapYV1o+lhevV2FCr0lkbGbejA/iRWH5S5aZCF/AeAVVRcIS491omYMNbf+Z9SCDgczUu8Kx8WGCnr2g==} engines: {node: '>=6.9.0'} dev: false - /@babel/template/7.15.4: - resolution: {integrity: sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==} + /@babel/template/7.16.0: + resolution: {integrity: sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.15.8 - '@babel/parser': 7.15.8 - '@babel/types': 7.15.6 + '@babel/code-frame': 7.16.0 + '@babel/parser': 7.16.2 + '@babel/types': 7.16.0 - /@babel/traverse/7.15.4: - resolution: {integrity: sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==} + /@babel/traverse/7.16.0: + resolution: {integrity: sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.15.8 - '@babel/generator': 7.15.8 - '@babel/helper-function-name': 7.15.4 - '@babel/helper-hoist-variables': 7.15.4 - '@babel/helper-split-export-declaration': 7.15.4 - '@babel/parser': 7.15.8 - '@babel/types': 7.15.6 + '@babel/code-frame': 7.16.0 + '@babel/generator': 7.16.0 + '@babel/helper-function-name': 7.16.0 + '@babel/helper-hoist-variables': 7.16.0 + '@babel/helper-split-export-declaration': 7.16.0 + '@babel/parser': 7.16.2 + '@babel/types': 7.16.0 debug: 4.3.2 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types/7.15.6: - resolution: {integrity: sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==} + /@babel/types/7.16.0: + resolution: {integrity: sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.15.7 @@ -1394,9 +1417,9 @@ packages: peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/helper-module-imports': 7.15.4 - '@babel/plugin-syntax-jsx': 7.14.5 - '@babel/runtime': 7.15.4 + '@babel/helper-module-imports': 7.16.0 + '@babel/plugin-syntax-jsx': 7.16.0 + '@babel/runtime': 7.16.0 '@emotion/hash': 0.8.0 '@emotion/memoize': 0.7.5 '@emotion/serialize': 1.0.2 @@ -1436,7 +1459,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.0 '@emotion/cache': 11.5.0 '@emotion/serialize': 1.0.2 '@emotion/sheet': 1.0.3 @@ -1469,8 +1492,8 @@ packages: resolution: {integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==} dev: false - /@eslint/eslintrc/1.0.3: - resolution: {integrity: sha512-DHI1wDPoKCBPoLZA3qDR91+3te/wDSc1YhKg3jR8NxKKRJq2hwHwcWv31cSwSYvIBrmbENoYMWcenW8uproQqg==} + /@eslint/eslintrc/1.0.4: + resolution: {integrity: sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -1479,7 +1502,7 @@ packages: globals: 13.12.0 ignore: 4.0.6 import-fresh: 3.3.0 - js-yaml: 3.14.1 + js-yaml: 4.1.0 minimatch: 3.0.4 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -1498,15 +1521,15 @@ packages: resolution: {integrity: sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.0 + '@humanwhocodes/object-schema': 1.2.1 debug: 4.3.2 minimatch: 3.0.4 transitivePeerDependencies: - supports-color dev: true - /@humanwhocodes/object-schema/1.2.0: - resolution: {integrity: sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==} + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true /@hutson/parse-repository-url/3.0.2: @@ -1539,7 +1562,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.2.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 chalk: 4.1.2 jest-message-util: 27.3.1 jest-util: 27.3.1 @@ -1560,7 +1583,7 @@ packages: '@jest/test-result': 27.3.1 '@jest/transform': 27.3.1 '@jest/types': 27.2.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -1597,7 +1620,7 @@ packages: dependencies: '@jest/fake-timers': 27.3.1 '@jest/types': 27.2.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 jest-mock: 27.3.0 dev: true @@ -1606,8 +1629,8 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.2.5 - '@sinonjs/fake-timers': 8.0.1 - '@types/node': 15.14.9 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 16.11.7 jest-message-util: 27.3.1 jest-mock: 27.3.0 jest-util: 27.3.1 @@ -1636,7 +1659,7 @@ packages: '@jest/test-result': 27.3.1 '@jest/transform': 27.3.1 '@jest/types': 27.2.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -1695,7 +1718,7 @@ packages: resolution: {integrity: sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@jest/types': 27.2.5 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 @@ -1720,7 +1743,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.3 '@types/istanbul-reports': 3.0.1 - '@types/node': 15.14.9 + '@types/node': 16.11.7 '@types/yargs': 16.0.4 chalk: 4.1.2 dev: true @@ -1730,24 +1753,24 @@ packages: engines: {node: '>=6.0.0'} dev: true - /@microsoft/api-extractor-model/7.13.14: - resolution: {integrity: sha512-mKc917+QhOuOZebSnE77i8Tavj/G5ydIFoJqDIY9LpmAfJjsVHgL2pc7vkvW58QTxH2wadIDK1tLzcteOMEt4w==} + /@microsoft/api-extractor-model/7.13.16: + resolution: {integrity: sha512-ttdxVXsTWL5dd26W1YNLe3LgDsE0EE273aZlcLe58W0opymBybCYU1Mn+OHQM8BuErrdvdN8LdpWAAbkiOEN/Q==} dependencies: '@microsoft/tsdoc': 0.13.2 '@microsoft/tsdoc-config': 0.15.2 - '@rushstack/node-core-library': 3.43.0 + '@rushstack/node-core-library': 3.43.2 dev: true - /@microsoft/api-extractor/7.18.17: - resolution: {integrity: sha512-gZuJ//FAyfrOqWssY0cyU2bEo8FOIaIYVs+pU5IDyfImkye6YkT2Qnm5PAFhyYSkfUjV5SjvyuP4+VsDfS3jww==} + /@microsoft/api-extractor/7.18.19: + resolution: {integrity: sha512-aY+/XR7PtQXtnqNPFRs3/+iVRlQJpo6uLTjO2g7PqmnMywl3GBU3bCgAlV/khZtAQbIs6Le57XxmSE6rOqbcfg==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.13.14 + '@microsoft/api-extractor-model': 7.13.16 '@microsoft/tsdoc': 0.13.2 '@microsoft/tsdoc-config': 0.15.2 - '@rushstack/node-core-library': 3.43.0 - '@rushstack/rig-package': 0.3.4 - '@rushstack/ts-command-line': 4.10.3 + '@rushstack/node-core-library': 3.43.2 + '@rushstack/rig-package': 0.3.5 + '@rushstack/ts-command-line': 4.10.4 colors: 1.2.5 lodash: 4.17.21 resolve: 1.17.0 @@ -1776,7 +1799,7 @@ packages: '@cloudflare/workers-types': 2.2.2 busboy: 0.3.1 formdata-node: 2.5.0 - web-streams-polyfill: 3.1.1 + web-streams-polyfill: 3.2.0 dev: true /@nodelib/fs.scandir/2.1.5: @@ -1828,70 +1851,70 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true - /@rollup/plugin-alias/3.1.8_rollup@2.58.3: + /@rollup/plugin-alias/3.1.8_rollup@2.59.0: resolution: {integrity: sha512-tf7HeSs/06wO2LPqKNY3Ckbvy0JRe7Jyn98bXnt/gfrxbe+AJucoNJlsEVi9sdgbQtXemjbakCpO/76JVgnHpA==} engines: {node: '>=8.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: - rollup: 2.58.3 + rollup: 2.59.0 slash: 3.0.0 dev: true - /@rollup/plugin-commonjs/21.0.1_rollup@2.58.3: + /@rollup/plugin-commonjs/21.0.1_rollup@2.59.0: resolution: {integrity: sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==} engines: {node: '>= 8.0.0'} peerDependencies: rollup: ^2.38.3 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.58.3 + '@rollup/pluginutils': 3.1.0_rollup@2.59.0 commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.0 is-reference: 1.2.1 magic-string: 0.25.7 resolve: 1.20.0 - rollup: 2.58.3 + rollup: 2.59.0 dev: true - /@rollup/plugin-dynamic-import-vars/1.4.1_rollup@2.58.3: + /@rollup/plugin-dynamic-import-vars/1.4.1_rollup@2.59.0: resolution: {integrity: sha512-izHpMs9w8U8CLwyHTXE55H4ytGVaf2ZtlKIWxKigghw6ZC6Mx6AXCsixSY6JOchuX9BN4ZkeN8egLRTS+BxO+w==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.58.3 + '@rollup/pluginutils': 3.1.0_rollup@2.59.0 estree-walker: 2.0.2 globby: 11.0.4 magic-string: 0.25.7 - rollup: 2.58.3 + rollup: 2.59.0 dev: true - /@rollup/plugin-json/4.1.0_rollup@2.58.3: + /@rollup/plugin-json/4.1.0_rollup@2.59.0: resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.58.3 - rollup: 2.58.3 + '@rollup/pluginutils': 3.1.0_rollup@2.59.0 + rollup: 2.59.0 dev: true - /@rollup/plugin-node-resolve/13.0.6_rollup@2.58.3: + /@rollup/plugin-node-resolve/13.0.6_rollup@2.59.0: resolution: {integrity: sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^2.42.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.58.3 + '@rollup/pluginutils': 3.1.0_rollup@2.59.0 '@types/resolve': 1.17.1 builtin-modules: 3.2.0 deepmerge: 4.2.2 is-module: 1.0.0 resolve: 1.20.0 - rollup: 2.58.3 + rollup: 2.59.0 dev: true - /@rollup/plugin-typescript/8.3.0_eadbb6348e5d71a0a94215fbea4eae9e: + /@rollup/plugin-typescript/8.3.0_80f1acc233e4df93aa4e78959e046afc: resolution: {integrity: sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA==} engines: {node: '>=8.0.0'} peerDependencies: @@ -1899,14 +1922,14 @@ packages: tslib: '*' typescript: '>=3.7.0' dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.58.3 + '@rollup/pluginutils': 3.1.0_rollup@2.59.0 resolve: 1.20.0 - rollup: 2.58.3 + rollup: 2.59.0 tslib: 2.3.1 typescript: 4.4.4 dev: true - /@rollup/pluginutils/3.1.0_rollup@2.58.3: + /@rollup/pluginutils/3.1.0_rollup@2.59.0: resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -1915,7 +1938,7 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.0 - rollup: 2.58.3 + rollup: 2.59.0 dev: true /@rollup/pluginutils/4.1.1: @@ -1925,8 +1948,8 @@ packages: estree-walker: 2.0.2 picomatch: 2.3.0 - /@rushstack/node-core-library/3.43.0: - resolution: {integrity: sha512-MFLW+6X83k6o8m8KnWkDhL/8NCJYHbFnnDokPSX1UHC3JwiEvVhHmEnxZv2YEzwnXeFYoKViub2G2t2liHbHLA==} + /@rushstack/node-core-library/3.43.2: + resolution: {integrity: sha512-b7AEhSf6CvZgvuDcWMFDeKx2mQSn9AVnMQVyxNxFeHCtLz3gJicqCOlw2GOXM8HKh6PInLdil/NVCDcstwSrIw==} dependencies: '@types/node': 12.20.24 colors: 1.2.5 @@ -1939,15 +1962,15 @@ packages: z-schema: 3.18.4 dev: true - /@rushstack/rig-package/0.3.4: - resolution: {integrity: sha512-NsCzPxPQ8cu7lnqa/4xBQXuCJwaBrb5vEbOC8Q/bMQK7GDOxeVUN3/f+NCYjgQSl39toAm8jQJ7TJe+RYYX3yQ==} + /@rushstack/rig-package/0.3.5: + resolution: {integrity: sha512-CvqWw+E81U5lRBN/lUj7Ngr/XQa/PPb2jAS5QcLP7WL+IMUl+3+Cc2qYrsDoB4zke81kz+usWGmBQpBzGMLmAA==} dependencies: resolve: 1.17.0 strip-json-comments: 3.1.1 dev: true - /@rushstack/ts-command-line/4.10.3: - resolution: {integrity: sha512-DdDfwr8CO6CP/kBZlQrrwKyA6UxOteujaIBrmoHa+J+dyLZC19YA/LK0fAHjr2qHLAJHHXVpZwPH8BpqN84oVg==} + /@rushstack/ts-command-line/4.10.4: + resolution: {integrity: sha512-4T5ao4UgDb6LmiRj4GumvG3VT/p6RSMgl7TN7S58ifaAGN2GeTNBajFCDdJs9QQP0d/4tA5p0SFzT7Ps5Byirg==} dependencies: '@types/argparse': 1.0.38 argparse: 1.0.10 @@ -1961,8 +1984,8 @@ packages: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/8.0.1: - resolution: {integrity: sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==} + /@sinonjs/fake-timers/8.1.0: + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} dependencies: '@sinonjs/commons': 1.8.3 dev: true @@ -1999,8 +2022,8 @@ packages: /@types/babel__core/7.1.16: resolution: {integrity: sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==} dependencies: - '@babel/parser': 7.15.8 - '@babel/types': 7.15.6 + '@babel/parser': 7.16.2 + '@babel/types': 7.16.0 '@types/babel__generator': 7.6.3 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.14.2 @@ -2009,20 +2032,24 @@ packages: /@types/babel__generator/7.6.3: resolution: {integrity: sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.15.8 - '@babel/types': 7.15.6 + '@babel/parser': 7.16.2 + '@babel/types': 7.16.0 dev: true /@types/babel__traverse/7.14.2: resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 + dev: true + + /@types/braces/3.0.1: + resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==} dev: true /@types/convert-source-map/1.5.2: @@ -2035,13 +2062,6 @@ packages: '@types/ms': 0.7.31 dev: true - /@types/es-module-lexer/0.4.1: - resolution: {integrity: sha512-PDKZezERXh0axp2G+rGqqwaz6eU9U9OnasbO6BjINSC4BjbeTnrBxrLS2KGqOHMVTB5z73BUuvMjY6FNyF8zDw==} - deprecated: This is a stub types definition. es-module-lexer provides its own type definitions, so you do not need this installed. - dependencies: - es-module-lexer: 0.9.3 - dev: true - /@types/estree/0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true @@ -2053,19 +2073,19 @@ packages: /@types/etag/1.8.1: resolution: {integrity: sha512-bsKkeSqN7HYyYntFRAmzcwx/dKW4Wa+KVMTInANlI72PWLQmOpZu96j0OqHZGArW4VQwCmJPteQlXaUDeOB0WQ==} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.7 dev: true /@types/fs-extra/9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.7 dev: true /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.7 dev: true /@types/hash-sum/1.0.0: @@ -2103,6 +2123,12 @@ packages: resolution: {integrity: sha512-1YXyYH83h6We1djyoUEqTlVyQtCfJAFXELSKW2ZRtjHD4hQ82CC4lvrv5D0l0FLcKBaiPbXyi3MpMsI9ZRgKsw==} dev: true + /@types/micromatch/4.0.2: + resolution: {integrity: sha512-oqXqVb0ci19GtH0vOA/U2TmHTcRY9kuZl4mqUxe0QmJAlIW13kzhuK5pi1i9+ngav8FjpSb9FVS/GE00GLX1VA==} + dependencies: + '@types/braces': 3.0.1 + dev: true + /@types/mime/2.0.3: resolution: {integrity: sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==} dev: true @@ -2123,6 +2149,10 @@ packages: resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} dev: true + /@types/node/16.11.7: + resolution: {integrity: sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==} + dev: true + /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -2137,17 +2167,17 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.7 dev: true /@types/resolve/1.20.1: resolution: {integrity: sha512-Ku5+GPFa12S3W26Uwtw+xyrtIpaZsGYHH6zxNbZlstmlvMYSZRzOwzwsXbxlVUbHyUucctSyuFtu6bNxwYomIw==} dev: true - /@types/sass/1.16.1: - resolution: {integrity: sha512-iZUcRrGuz/Tbg3loODpW7vrQJkUtpY2fFSf4ELqqkApcS2TkZ1msk7ie8iZPB86lDOP8QOTTmuvWjc5S0R9OjQ==} + /@types/sass/1.43.0: + resolution: {integrity: sha512-DPSXNJ1rYLo88GyF9tuB4bsYGfpKI1a4+wOQmc+LI1SUoocm9QLRSpz0GxxuyjmJsYFIQo/dDlRSSpIXngff+w==} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.7 dev: true /@types/semver/7.3.9: @@ -2165,13 +2195,13 @@ packages: /@types/stylus/0.48.36: resolution: {integrity: sha512-7klEq45BUE8ZJWkYWy1E442DcCs0wi0FkFY1Tjr6EJ7edL77t9w/QmOwlkFumBMqHlatDBtrA2xgfRrGqkUkzg==} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.7 dev: true - /@types/ws/7.4.7: - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + /@types/ws/8.2.0: + resolution: {integrity: sha512-cyeefcUCgJlEk+hk2h3N+MqKKsPViQgF5boi9TTHSK+PoR9KWBb/C5ccPcDyAqgsbAYHTwulch725DV84+pSpg==} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.7 dev: true /@types/yargs-parser/20.2.1: @@ -2188,12 +2218,12 @@ packages: resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==} requiresBuild: true dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.7 dev: true optional: true - /@typescript-eslint/eslint-plugin/5.2.0_9a56ca1c5fc1d82b3da3317a5c6f9ab1: - resolution: {integrity: sha512-qQwg7sqYkBF4CIQSyRQyqsYvP+g/J0To9ZPVNJpfxfekl5RmdvQnFFTVVwpRtaUDFNvjfe/34TgY/dpc3MgNTw==} + /@typescript-eslint/eslint-plugin/5.3.1_4653b7803b7453f5f37717b7e1448517: + resolution: {integrity: sha512-cFImaoIr5Ojj358xI/SDhjog57OK2NqlpxwdcgyxDA3bJlZcJq5CPzUXtpD7CxI2Hm6ATU7w5fQnnkVnmwpHqw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -2203,13 +2233,13 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 5.2.0_eslint@8.1.0+typescript@4.4.4 - '@typescript-eslint/parser': 5.2.0_eslint@8.1.0+typescript@4.4.4 - '@typescript-eslint/scope-manager': 5.2.0 + '@typescript-eslint/experimental-utils': 5.3.1_eslint@8.2.0+typescript@4.4.4 + '@typescript-eslint/parser': 5.3.1_eslint@8.2.0+typescript@4.4.4 + '@typescript-eslint/scope-manager': 5.3.1 debug: 4.3.2 - eslint: 8.1.0 + eslint: 8.2.0 functional-red-black-tree: 1.0.1 - ignore: 5.1.8 + ignore: 5.1.9 regexpp: 3.2.0 semver: 7.3.5 tsutils: 3.21.0_typescript@4.4.4 @@ -2218,26 +2248,26 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.2.0_eslint@8.1.0+typescript@4.4.4: - resolution: {integrity: sha512-fWyT3Agf7n7HuZZRpvUYdFYbPk3iDCq6fgu3ulia4c7yxmPnwVBovdSOX7RL+k8u6hLbrXcdAehlWUVpGh6IEw==} + /@typescript-eslint/experimental-utils/5.3.1_eslint@8.2.0+typescript@4.4.4: + resolution: {integrity: sha512-RgFn5asjZ5daUhbK5Sp0peq0SSMytqcrkNfU4pnDma2D8P3ElZ6JbYjY8IMSFfZAJ0f3x3tnO3vXHweYg0g59w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' dependencies: '@types/json-schema': 7.0.9 - '@typescript-eslint/scope-manager': 5.2.0 - '@typescript-eslint/types': 5.2.0 - '@typescript-eslint/typescript-estree': 5.2.0_typescript@4.4.4 - eslint: 8.1.0 + '@typescript-eslint/scope-manager': 5.3.1 + '@typescript-eslint/types': 5.3.1 + '@typescript-eslint/typescript-estree': 5.3.1_typescript@4.4.4 + eslint: 8.2.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.1.0 + eslint-utils: 3.0.0_eslint@8.2.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/5.2.0_eslint@8.1.0+typescript@4.4.4: - resolution: {integrity: sha512-Uyy4TjJBlh3NuA8/4yIQptyJb95Qz5PX//6p8n7zG0QnN4o3NF9Je3JHbVU7fxf5ncSXTmnvMtd/LDQWDk0YqA==} + /@typescript-eslint/parser/5.3.1_eslint@8.2.0+typescript@4.4.4: + resolution: {integrity: sha512-TD+ONlx5c+Qhk21x9gsJAMRohWAUMavSOmJgv3JGy9dgPhuBd5Wok0lmMClZDyJNLLZK1JRKiATzCKZNUmoyfw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2246,31 +2276,31 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.2.0 - '@typescript-eslint/types': 5.2.0 - '@typescript-eslint/typescript-estree': 5.2.0_typescript@4.4.4 + '@typescript-eslint/scope-manager': 5.3.1 + '@typescript-eslint/types': 5.3.1 + '@typescript-eslint/typescript-estree': 5.3.1_typescript@4.4.4 debug: 4.3.2 - eslint: 8.1.0 + eslint: 8.2.0 typescript: 4.4.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.2.0: - resolution: {integrity: sha512-RW+wowZqPzQw8MUFltfKYZfKXqA2qgyi6oi/31J1zfXJRpOn6tCaZtd9b5u9ubnDG2n/EMvQLeZrsLNPpaUiFQ==} + /@typescript-eslint/scope-manager/5.3.1: + resolution: {integrity: sha512-XksFVBgAq0Y9H40BDbuPOTUIp7dn4u8oOuhcgGq7EoDP50eqcafkMVGrypyVGvDYHzjhdUCUwuwVUK4JhkMAMg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.2.0 - '@typescript-eslint/visitor-keys': 5.2.0 + '@typescript-eslint/types': 5.3.1 + '@typescript-eslint/visitor-keys': 5.3.1 dev: true - /@typescript-eslint/types/5.2.0: - resolution: {integrity: sha512-cTk6x08qqosps6sPyP2j7NxyFPlCNsJwSDasqPNjEQ8JMD5xxj2NHxcLin5AJQ8pAVwpQ8BMI3bTxR0zxmK9qQ==} + /@typescript-eslint/types/5.3.1: + resolution: {integrity: sha512-bG7HeBLolxKHtdHG54Uac750eXuQQPpdJfCYuw4ZI3bZ7+GgKClMWM8jExBtp7NSP4m8PmLRM8+lhzkYnSmSxQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.2.0_typescript@4.4.4: - resolution: {integrity: sha512-RsdXq2XmVgKbm9nLsE3mjNUM7BTr/K4DYR9WfFVMUuozHWtH5gMpiNZmtrMG8GR385EOSQ3kC9HiEMJWimxd/g==} + /@typescript-eslint/typescript-estree/5.3.1_typescript@4.4.4: + resolution: {integrity: sha512-PwFbh/PKDVo/Wct6N3w+E4rLZxUDgsoII/GrWM2A62ETOzJd4M6s0Mu7w4CWsZraTbaC5UQI+dLeyOIFF1PquQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -2278,8 +2308,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.2.0 - '@typescript-eslint/visitor-keys': 5.2.0 + '@typescript-eslint/types': 5.3.1 + '@typescript-eslint/visitor-keys': 5.3.1 debug: 4.3.2 globby: 11.0.4 is-glob: 4.0.3 @@ -2290,11 +2320,11 @@ packages: - supports-color dev: true - /@typescript-eslint/visitor-keys/5.2.0: - resolution: {integrity: sha512-Nk7HizaXWWCUBfLA/rPNKMzXzWS8Wg9qHMuGtT+v2/YpPij4nVXrVJc24N/r5WrrmqK31jCrZxeHqIgqRzs0Xg==} + /@typescript-eslint/visitor-keys/5.3.1: + resolution: {integrity: sha512-3cHUzUuVTuNHx0Gjjt5pEHa87+lzyqOiHXy/Gz+SJOCW1mpw9xQHIIEwnKn+Thph1mgWyZ90nboOcSuZr/jTTQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.2.0 + '@typescript-eslint/types': 5.3.1 eslint-visitor-keys: 3.0.0 dev: true @@ -2302,14 +2332,14 @@ packages: resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} dev: false - /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.15.8: + /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.16.0: resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==} dependencies: - '@babel/helper-module-imports': 7.15.4 - '@babel/plugin-syntax-jsx': 7.14.5_@babel+core@7.15.8 - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/helper-module-imports': 7.16.0 + '@babel/plugin-syntax-jsx': 7.16.0_@babel+core@7.16.0 + '@babel/template': 7.16.0 + '@babel/traverse': 7.16.0 + '@babel/types': 7.16.0 '@vue/babel-helper-vue-transform-on': 1.0.2 camelcase: 6.2.0 html-tags: 3.1.0 @@ -2319,82 +2349,82 @@ packages: - supports-color dev: false - /@vue/compiler-core/3.2.20: - resolution: {integrity: sha512-vcEXlKXoPwBXFP5aUTHN9GTZaDfwCofa9Yu9bbW2C5O/QSa9Esdt7OG4+0RRd3EHEMxUvEdj4RZrd/KpQeiJbA==} + /@vue/compiler-core/3.2.21: + resolution: {integrity: sha512-NhhiQZNG71KNq1h5pMW/fAXdTF7lJRaSI7LDm2edhHXVz1ROMICo8SreUmQnSf4Fet0UPBVqJ988eF4+936iDQ==} dependencies: - '@babel/parser': 7.15.8 - '@vue/shared': 3.2.20 + '@babel/parser': 7.16.2 + '@vue/shared': 3.2.21 estree-walker: 2.0.2 source-map: 0.6.1 - /@vue/compiler-dom/3.2.20: - resolution: {integrity: sha512-QnI77ec/JtV7R0YBbcVayYTDCRcI9OCbxiUQK6izVyqQO0658n0zQuoNwe+bYgtqnvGAIqTR3FShTd5y4oOjdg==} + /@vue/compiler-dom/3.2.21: + resolution: {integrity: sha512-gsJD3DpYZSYquiA7UIPsMDSlAooYWDvHPq9VRsqzJEk2PZtFvLvHPb4aaMD8Ufd62xzYn32cnnkzsEOJhyGilA==} dependencies: - '@vue/compiler-core': 3.2.20 - '@vue/shared': 3.2.20 + '@vue/compiler-core': 3.2.21 + '@vue/shared': 3.2.21 - /@vue/compiler-sfc/3.2.20: - resolution: {integrity: sha512-03aZo+6tQKiFLfunHKSPZvdK4Jsn/ftRCyaro8AQIWkuxJbvSosbKK6HTTn+D2c3nPScG155akJoxKENw7rftQ==} + /@vue/compiler-sfc/3.2.21: + resolution: {integrity: sha512-+yDlUSebKpz/ovxM2vLRRx7w/gVfY767pOfYTgbIhAs+ogvIV2BsIt4fpxlThnlCNChJ+yE0ERUNoROv2kEGEQ==} dependencies: - '@babel/parser': 7.15.8 - '@vue/compiler-core': 3.2.20 - '@vue/compiler-dom': 3.2.20 - '@vue/compiler-ssr': 3.2.20 - '@vue/ref-transform': 3.2.20 - '@vue/shared': 3.2.20 + '@babel/parser': 7.16.2 + '@vue/compiler-core': 3.2.21 + '@vue/compiler-dom': 3.2.21 + '@vue/compiler-ssr': 3.2.21 + '@vue/ref-transform': 3.2.21 + '@vue/shared': 3.2.21 estree-walker: 2.0.2 magic-string: 0.25.7 postcss: 8.3.11 source-map: 0.6.1 - /@vue/compiler-ssr/3.2.20: - resolution: {integrity: sha512-rzzVVYivm+EjbfiGQvNeyiYZWzr6Hkej97RZLZvcumacQlnKv9176Xo9rRyeWwFbBlxmtNdrVMslRXtipMXk2w==} + /@vue/compiler-ssr/3.2.21: + resolution: {integrity: sha512-eU+A0iWYy+1zAo2CRIJ0zSVlv1iuGAIbNRCnllSJ31pV1lX3jypJYzGbJlSRAbB7VP6E+tYveVT1Oq8JKewa3g==} dependencies: - '@vue/compiler-dom': 3.2.20 - '@vue/shared': 3.2.20 + '@vue/compiler-dom': 3.2.21 + '@vue/shared': 3.2.21 - /@vue/devtools-api/6.0.0-beta.19: - resolution: {integrity: sha512-ObzQhgkoVeoyKv+e8+tB/jQBL2smtk/NmC9OmFK8UqdDpoOdv/Kf9pyDWL+IFyM7qLD2C75rszJujvGSPSpGlw==} + /@vue/devtools-api/6.0.0-beta.20: + resolution: {integrity: sha512-21u2jFOk8jbAneeGpDwZQ0W66RJa0IBDUyVl6SgKnn2cRFjLWzKj+ukXjpLhYr1KASyCe5E5U4jXwChVo0YUAw==} dev: false - /@vue/reactivity/3.2.20: - resolution: {integrity: sha512-nSmoLojUTk+H8HNTAkrUduB4+yIUBK2HPihJo2uXVSH4Spry6oqN6lFzE5zpLK+F27Sja+UqR9R1+/kIOsHV5w==} + /@vue/reactivity/3.2.21: + resolution: {integrity: sha512-7C57zFm/5E3SSTUhVuYj1InDwuJ+GIVQ/z+H43C9sST85gIThGXVhksl1yWTAadf8Yz4T5lSbqi5Ds8U/ueWcw==} dependencies: - '@vue/shared': 3.2.20 + '@vue/shared': 3.2.21 - /@vue/ref-transform/3.2.20: - resolution: {integrity: sha512-Y42d3PGlYZ1lXcF3dbd3+qU/C/a3wYEZ949fyOI5ptzkjDWlkfU6vn74fmOjsLjEcjs10BXK2qO99FqQIK2r1Q==} + /@vue/ref-transform/3.2.21: + resolution: {integrity: sha512-uiEWWBsrGeun9O7dQExYWzXO3rHm/YdtFNXDVqCSoPypzOVxWxdiL+8hHeWzxMB58fVuV2sT80aUtIVyaBVZgQ==} dependencies: - '@babel/parser': 7.15.8 - '@vue/compiler-core': 3.2.20 - '@vue/shared': 3.2.20 + '@babel/parser': 7.16.2 + '@vue/compiler-core': 3.2.21 + '@vue/shared': 3.2.21 estree-walker: 2.0.2 magic-string: 0.25.7 - /@vue/runtime-core/3.2.20: - resolution: {integrity: sha512-d1xfUGhZPfiZzAN7SatStD4vRtT8deJSXib2+Cz3x0brjMWKxe32asQc154FF1E2fFgMCHtnfd4A90bQEzV4GQ==} + /@vue/runtime-core/3.2.21: + resolution: {integrity: sha512-7oOxKaU0D2IunOAMOOHZgJVrHg63xwng8BZx3fbgmakqEIMwHhQcp+5GV1sOg/sWW7R4UhaRDIUCukO2GRVK2Q==} dependencies: - '@vue/reactivity': 3.2.20 - '@vue/shared': 3.2.20 + '@vue/reactivity': 3.2.21 + '@vue/shared': 3.2.21 - /@vue/runtime-dom/3.2.20: - resolution: {integrity: sha512-4TCvZMLhESWCFHFYgqN4QmMA/onnINAlUovhopjlS8ST27G1A8Z0tyxPzLoXLa+b5JrOpbMPheEMPvdKExTJig==} + /@vue/runtime-dom/3.2.21: + resolution: {integrity: sha512-apBdriD6QsI4ywbllY8kjr9/0scGuStDuvLbJULPQkFPtHzntd51bP5PQTQVAEIc9kwnTozmj6x6ZdX/cwo7xA==} dependencies: - '@vue/runtime-core': 3.2.20 - '@vue/shared': 3.2.20 + '@vue/runtime-core': 3.2.21 + '@vue/shared': 3.2.21 csstype: 2.6.18 - /@vue/server-renderer/3.2.20_vue@3.2.20: - resolution: {integrity: sha512-viIbZGep9XabnrRcaxWIi00cOh1x21QYm2upIL5W0zqzTJ54VdTzpI+zi1osNp+VfRQDTHpV2U7H3Kn4ljYJvg==} + /@vue/server-renderer/3.2.21_vue@3.2.21: + resolution: {integrity: sha512-QBgYqVgI7XCSBCqGa4LduV9vpfQFdZBOodFmq5Txk5W/v1KrJ1LoOh2Q0RHiRgtoK/UR9uyvRVcYqOmwHkZNEg==} peerDependencies: - vue: 3.2.20 + vue: 3.2.21 dependencies: - '@vue/compiler-ssr': 3.2.20 - '@vue/shared': 3.2.20 - vue: 3.2.20 + '@vue/compiler-ssr': 3.2.21 + '@vue/shared': 3.2.21 + vue: 3.2.21 - /@vue/shared/3.2.20: - resolution: {integrity: sha512-FbpX+hD5BvXCQerEYO7jtAGHlhAkhTQ4KIV73kmLWNlawWhTiVuQxizgVb0BOkX5oG9cIRZ42EG++d/k/Efp0w==} + /@vue/shared/3.2.21: + resolution: {integrity: sha512-5EQmIPK6gw4UVYUbM959B0uPsJ58+xoMESCZs3N89XyvJ9e+fX4pqEPrOGV8OroIk3SbEvJcC+eYc8BH9JQrHA==} /@wessberg/stringutil/1.0.19: resolution: {integrity: sha512-9AZHVXWlpN8Cn9k5BC/O0Dzb9E9xfEMXzYrNunwvkUTvuK7xgQPVRZpLo+jWCOZ5r8oBa8NIrHuPEu1hzbb6bg==} @@ -2661,34 +2691,34 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.17.5 - caniuse-lite: 1.0.30001272 + browserslist: 4.17.6 + caniuse-lite: 1.0.30001278 fraction.js: 4.1.1 normalize-range: 0.1.2 picocolors: 1.0.0 postcss-value-parser: 4.1.0 dev: false - /axios/0.21.4: - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + /axios/0.24.0: + resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==} dependencies: - follow-redirects: 1.14.4 + follow-redirects: 1.14.5 transitivePeerDependencies: - debug dev: false - /babel-jest/27.3.1_@babel+core@7.15.8: + /babel-jest/27.3.1_@babel+core@7.16.0: resolution: {integrity: sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@jest/transform': 27.3.1 '@jest/types': 27.2.5 '@types/babel__core': 7.1.16 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.2.0_@babel+core@7.15.8 + babel-preset-jest: 27.2.0_@babel+core@7.16.0 chalk: 4.1.2 graceful-fs: 4.2.8 slash: 3.0.0 @@ -2713,8 +2743,8 @@ packages: resolution: {integrity: sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/template': 7.15.4 - '@babel/types': 7.15.6 + '@babel/template': 7.16.0 + '@babel/types': 7.16.0 '@types/babel__core': 7.1.16 '@types/babel__traverse': 7.14.2 dev: true @@ -2722,47 +2752,47 @@ packages: /babel-plugin-macros/2.8.0: resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.0 cosmiconfig: 6.0.0 resolve: 1.20.0 dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.15.8: + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.16.0: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.15.8 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.15.8 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.15.8 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.15.8 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.15.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.15.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.15.8 - dev: true - - /babel-preset-jest/27.2.0_@babel+core@7.15.8: + '@babel/core': 7.16.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.0 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.16.0 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.16.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.16.0 + dev: true + + /babel-preset-jest/27.2.0_@babel+core@7.16.0: resolution: {integrity: sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 babel-plugin-jest-hoist: 27.2.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.8 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.16.0 dev: true /babel-walk/3.0.0-canary-5: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 dev: true /balanced-match/1.0.2: @@ -2813,13 +2843,13 @@ packages: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} dev: true - /browserslist/4.17.5: - resolution: {integrity: sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==} + /browserslist/4.17.6: + resolution: {integrity: sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001272 - electron-to-chromium: 1.3.884 + caniuse-lite: 1.0.30001278 + electron-to-chromium: 1.3.890 escalade: 3.1.1 node-releases: 2.0.1 picocolors: 1.0.0 @@ -2866,8 +2896,8 @@ packages: resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==} engines: {node: '>= 0.8'} - /cac/6.7.3: - resolution: {integrity: sha512-ECVqVZh74qgSuZG9YOt2OJPI3wGcf+EwwuF/XIOYqZBD0KZYLtgPWqFPxmDPQ6joxI1nOlvVgRV6VT53Ooyocg==} + /cac/6.7.9: + resolution: {integrity: sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==} engines: {node: '>=8'} dev: true @@ -2905,8 +2935,8 @@ packages: resolution: {integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==} engines: {node: '>=10'} - /caniuse-lite/1.0.30001272: - resolution: {integrity: sha512-DV1j9Oot5dydyH1v28g25KoVm7l8MTxazwuiH3utWiAS6iL/9Nh//TGwqFEeqqN8nnWYQ8HHhUq+o4QPt9kvYw==} + /caniuse-lite/1.0.30001278: + resolution: {integrity: sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==} /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -3015,6 +3045,11 @@ packages: wrap-ansi: 7.0.0 dev: true + /clone/2.1.2: + resolution: {integrity: sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=} + engines: {node: '>=0.8'} + dev: true + /cluster-key-slot/1.1.0: resolution: {integrity: sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==} engines: {node: '>=0.10.0'} @@ -3165,8 +3200,8 @@ packages: /constantinople/4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} dependencies: - '@babel/parser': 7.15.8 - '@babel/types': 7.15.6 + '@babel/parser': 7.16.2 + '@babel/types': 7.16.0 dev: true /content-disposition/0.5.3: @@ -3364,8 +3399,8 @@ packages: is-what: 3.14.1 dev: true - /core-js/3.19.0: - resolution: {integrity: sha512-L1TpFRWXZ76vH1yLM+z6KssLZrP8Z6GxxW4auoCj+XiViOzNPJCAuTIkn03BGdFe6Z5clX5t64wRIRypsZQrUg==} + /core-js/3.19.1: + resolution: {integrity: sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==} requiresBuild: true dev: false @@ -3457,23 +3492,16 @@ packages: resolution: {integrity: sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==} dev: true - /css-parse/2.0.0: - resolution: {integrity: sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=} - dependencies: - css: 2.2.4 - dev: true - /css-unit-converter/1.1.2: resolution: {integrity: sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==} dev: false - /css/2.2.4: - resolution: {integrity: sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==} + /css/3.0.0: + resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} dependencies: inherits: 2.0.4 source-map: 0.6.1 - source-map-resolve: 0.5.3 - urix: 0.1.0 + source-map-resolve: 0.6.0 dev: true /cssesc/3.0.0: @@ -3734,8 +3762,8 @@ packages: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} dev: true - /electron-to-chromium/1.3.884: - resolution: {integrity: sha512-kOaCAa+biA98PwH5BpCkeUeTL6mCeg8p3Q3OhqzPyqhu/5QUnWAN2wr/3IK8xMQxIV76kfoQpP+Bn/wij/jXrg==} + /electron-to-chromium/1.3.890: + resolution: {integrity: sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==} /emittery/0.8.1: resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} @@ -3850,147 +3878,147 @@ packages: ext: 1.6.0 dev: false - /esbuild-android-arm64/0.13.10: - resolution: {integrity: sha512-1sCdVAq64yMp2Uhlu+97/enFxpmrj31QHtThz7K+/QGjbHa7JZdBdBsZCzWJuntKHZ+EU178tHYkvjaI9z5sGg==} + /esbuild-android-arm64/0.13.12: + resolution: {integrity: sha512-TSVZVrb4EIXz6KaYjXfTzPyyRpXV5zgYIADXtQsIenjZ78myvDGaPi11o4ZSaHIwFHsuwkB6ne5SZRBwAQ7maw==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /esbuild-darwin-64/0.13.10: - resolution: {integrity: sha512-XlL+BYZ2h9cz3opHfFgSHGA+iy/mljBFIRU9q++f9SiBXEZTb4gTW/IENAD1l9oKH0FdO9rUpyAfV+lM4uAxrg==} + /esbuild-darwin-64/0.13.12: + resolution: {integrity: sha512-c51C+N+UHySoV2lgfWSwwmlnLnL0JWj/LzuZt9Ltk9ub1s2Y8cr6SQV5W3mqVH1egUceew6KZ8GyI4nwu+fhsw==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /esbuild-darwin-arm64/0.13.10: - resolution: {integrity: sha512-RZMMqMTyActMrXKkW71IQO8B0tyQm0Bm+ZJQWNaHJchL5LlqazJi7rriwSocP+sKLszHhsyTEBBh6qPdw5g5yQ==} + /esbuild-darwin-arm64/0.13.12: + resolution: {integrity: sha512-JvAMtshP45Hd8A8wOzjkY1xAnTKTYuP/QUaKp5eUQGX+76GIie3fCdUUr2ZEKdvpSImNqxiZSIMziEiGB5oUmQ==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /esbuild-freebsd-64/0.13.10: - resolution: {integrity: sha512-pf4BEN9reF3jvZEZdxljVgOv5JS4kuYFCI78xk+2HWustbLvTP0b9XXfWI/OD0ZLWbyLYZYIA+VbVe4tdAklig==} + /esbuild-freebsd-64/0.13.12: + resolution: {integrity: sha512-r6On/Skv9f0ZjTu6PW5o7pdXr8aOgtFOEURJZYf1XAJs0IQ+gW+o1DzXjVkIoT+n1cm3N/t1KRJfX71MPg/ZUA==} cpu: [x64] os: [freebsd] requiresBuild: true optional: true - /esbuild-freebsd-arm64/0.13.10: - resolution: {integrity: sha512-j9PUcuNWmlxr4/ry4dK/s6zKh42Jhh/N5qnAAj7tx3gMbkIHW0JBoVSbbgp97p88X9xgKbXx4lG2sJDhDWmsYQ==} + /esbuild-freebsd-arm64/0.13.12: + resolution: {integrity: sha512-F6LmI2Q1gii073kmBE3NOTt/6zLL5zvZsxNLF8PMAwdHc+iBhD1vzfI8uQZMJA1IgXa3ocr3L3DJH9fLGXy6Yw==} cpu: [arm64] os: [freebsd] requiresBuild: true optional: true - /esbuild-linux-32/0.13.10: - resolution: {integrity: sha512-imtdHG5ru0xUUXuc2ofdtyw0fWlHYXV7JjF7oZHgmn0b+B4o4Nr6ZON3xxoo1IP8wIekW+7b9exIf/MYq0QV7w==} + /esbuild-linux-32/0.13.12: + resolution: {integrity: sha512-U1UZwG3UIwF7/V4tCVAo/nkBV9ag5KJiJTt+gaCmLVWH3bPLX7y+fNlhIWZy8raTMnXhMKfaTvWZ9TtmXzvkuQ==} cpu: [ia32] os: [linux] requiresBuild: true optional: true - /esbuild-linux-64/0.13.10: - resolution: {integrity: sha512-O7fzQIH2e7GC98dvoTH0rad5BVLm9yU3cRWfEmryCEIFTwbNEWCEWOfsePuoGOHRtSwoVY1hPc21CJE4/9rWxQ==} + /esbuild-linux-64/0.13.12: + resolution: {integrity: sha512-YpXSwtu2NxN3N4ifJxEdsgd6Q5d8LYqskrAwjmoCT6yQnEHJSF5uWcxv783HWN7lnGpJi9KUtDvYsnMdyGw71Q==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /esbuild-linux-arm/0.13.10: - resolution: {integrity: sha512-R2Jij4A0K8BcmBehvQeUteQEcf24Y2YZ6mizlNFuJOBPxe3vZNmkZ4mCE7Pf1tbcqA65qZx8J3WSHeGJl9EsJA==} + /esbuild-linux-arm/0.13.12: + resolution: {integrity: sha512-SyiT/JKxU6J+DY2qUiSLZJqCAftIt3uoGejZ0HDnUM2MGJqEGSGh7p1ecVL2gna3PxS4P+j6WAehCwgkBPXNIw==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /esbuild-linux-arm64/0.13.10: - resolution: {integrity: sha512-bkGxN67S2n0PF4zhh87/92kBTsH2xXLuH6T5omReKhpXdJZF5SVDSk5XU/nngARzE+e6QK6isK060Dr5uobzNw==} + /esbuild-linux-arm64/0.13.12: + resolution: {integrity: sha512-sgDNb8kb3BVodtAlcFGgwk+43KFCYjnFOaOfJibXnnIojNWuJHpL6aQJ4mumzNWw8Rt1xEtDQyuGK9f+Y24jGA==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /esbuild-linux-mips64le/0.13.10: - resolution: {integrity: sha512-UDNO5snJYOLWrA2uOUxM/PVbzzh2TR7Zf2i8zCCuFlYgvAb/81XO+Tasp3YAElDpp4VGqqcpBXLtofa9nrnJGA==} + /esbuild-linux-mips64le/0.13.12: + resolution: {integrity: sha512-qQJHlZBG+QwVIA8AbTEtbvF084QgDi4DaUsUnA+EolY1bxrG+UyOuGflM2ZritGhfS/k7THFjJbjH2wIeoKA2g==} cpu: [mips64el] os: [linux] requiresBuild: true optional: true - /esbuild-linux-ppc64le/0.13.10: - resolution: {integrity: sha512-xu6J9rMWu1TcEGuEmoc8gsTrJCEPsf+QtxK4IiUZNde9r4Q4nlRVah4JVZP3hJapZgZJcxsse0XiKXh1UFdOeA==} + /esbuild-linux-ppc64le/0.13.12: + resolution: {integrity: sha512-2dSnm1ldL7Lppwlo04CGQUpwNn5hGqXI38OzaoPOkRsBRWFBozyGxTFSee/zHFS+Pdh3b28JJbRK3owrrRgWNw==} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /esbuild-netbsd-64/0.13.10: - resolution: {integrity: sha512-d+Gr0ScMC2J83Bfx/ZvJHK0UAEMncctwgjRth9d4zppYGLk/xMfFKxv5z1ib8yZpQThafq8aPm8AqmFIJrEesw==} + /esbuild-netbsd-64/0.13.12: + resolution: {integrity: sha512-D4raxr02dcRiQNbxOLzpqBzcJNFAdsDNxjUbKkDMZBkL54Z0vZh4LRndycdZAMcIdizC/l/Yp/ZsBdAFxc5nbA==} cpu: [x64] os: [netbsd] requiresBuild: true optional: true - /esbuild-openbsd-64/0.13.10: - resolution: {integrity: sha512-OuCYc+bNKumBvxflga+nFzZvxsgmWQW+z4rMGIjM5XIW0nNbGgRc5p/0PSDv0rTdxAmwCpV69fezal0xjrDaaA==} + /esbuild-openbsd-64/0.13.12: + resolution: {integrity: sha512-KuLCmYMb2kh05QuPJ+va60bKIH5wHL8ypDkmpy47lzwmdxNsuySeCMHuTv5o2Af1RUn5KLO5ZxaZeq4GEY7DaQ==} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - /esbuild-sunos-64/0.13.10: - resolution: {integrity: sha512-gUkgivZK11bD56wDoLsnYrsOHD/zHzzLSdqKcIl3wRMulfHpRBpoX8gL0dbWr+8N9c+1HDdbNdvxSRmZ4RCVwg==} + /esbuild-sunos-64/0.13.12: + resolution: {integrity: sha512-jBsF+e0woK3miKI8ufGWKG3o3rY9DpHvCVRn5eburMIIE+2c+y3IZ1srsthKyKI6kkXLvV4Cf/E7w56kLipMXw==} cpu: [x64] os: [sunos] requiresBuild: true optional: true - /esbuild-windows-32/0.13.10: - resolution: {integrity: sha512-C1xJ54E56dGWRaYcTnRy7amVZ9n1/D/D2/qVw7e5EtS7p+Fv/yZxxgqyb1hMGKXgtFYX4jMpU5eWBF/AsYrn+A==} + /esbuild-windows-32/0.13.12: + resolution: {integrity: sha512-L9m4lLFQrFeR7F+eLZXG82SbXZfUhyfu6CexZEil6vm+lc7GDCE0Q8DiNutkpzjv1+RAbIGVva9muItQ7HVTkQ==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /esbuild-windows-64/0.13.10: - resolution: {integrity: sha512-6+EXEXopEs3SvPFAHcps2Krp/FvqXXsOQV33cInmyilb0ZBEQew4MIoZtMIyB3YXoV6//dl3i6YbPrFZaWEinQ==} + /esbuild-windows-64/0.13.12: + resolution: {integrity: sha512-k4tX4uJlSbSkfs78W5d9+I9gpd+7N95W7H2bgOMFPsYREVJs31+Q2gLLHlsnlY95zBoPQMIzHooUIsixQIBjaQ==} cpu: [x64] os: [win32] requiresBuild: true optional: true - /esbuild-windows-arm64/0.13.10: - resolution: {integrity: sha512-xTqM/XKhORo6u9S5I0dNJWEdWoemFjogLUTVLkQMVyUV3ZuMChahVA+bCqKHdyX55pCFxD/8v2fm3/sfFMWN+g==} + /esbuild-windows-arm64/0.13.12: + resolution: {integrity: sha512-2tTv/BpYRIvuwHpp2M960nG7uvL+d78LFW/ikPItO+2GfK51CswIKSetSpDii+cjz8e9iSPgs+BU4o8nWICBwQ==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /esbuild/0.13.10: - resolution: {integrity: sha512-0NfCsnAh5XatHIx6Cu93wpR2v6opPoOMxONYhaAoZKzGYqAE+INcDeX2wqMdcndvPQdWCuuCmvlnsh0zmbHcSQ==} + /esbuild/0.13.12: + resolution: {integrity: sha512-vTKKUt+yoz61U/BbrnmlG9XIjwpdIxmHB8DlPR0AAW6OdS+nBQBci6LUHU2q9WbBobMEIQxxDpKbkmOGYvxsow==} hasBin: true requiresBuild: true optionalDependencies: - esbuild-android-arm64: 0.13.10 - esbuild-darwin-64: 0.13.10 - esbuild-darwin-arm64: 0.13.10 - esbuild-freebsd-64: 0.13.10 - esbuild-freebsd-arm64: 0.13.10 - esbuild-linux-32: 0.13.10 - esbuild-linux-64: 0.13.10 - esbuild-linux-arm: 0.13.10 - esbuild-linux-arm64: 0.13.10 - esbuild-linux-mips64le: 0.13.10 - esbuild-linux-ppc64le: 0.13.10 - esbuild-netbsd-64: 0.13.10 - esbuild-openbsd-64: 0.13.10 - esbuild-sunos-64: 0.13.10 - esbuild-windows-32: 0.13.10 - esbuild-windows-64: 0.13.10 - esbuild-windows-arm64: 0.13.10 + esbuild-android-arm64: 0.13.12 + esbuild-darwin-64: 0.13.12 + esbuild-darwin-arm64: 0.13.12 + esbuild-freebsd-64: 0.13.12 + esbuild-freebsd-arm64: 0.13.12 + esbuild-linux-32: 0.13.12 + esbuild-linux-64: 0.13.12 + esbuild-linux-arm: 0.13.12 + esbuild-linux-arm64: 0.13.12 + esbuild-linux-mips64le: 0.13.12 + esbuild-linux-ppc64le: 0.13.12 + esbuild-netbsd-64: 0.13.12 + esbuild-openbsd-64: 0.13.12 + esbuild-sunos-64: 0.13.12 + esbuild-windows-32: 0.13.12 + esbuild-windows-64: 0.13.12 + esbuild-windows-arm64: 0.13.12 /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -4027,31 +4055,32 @@ packages: source-map: 0.6.1 dev: true - /eslint-define-config/1.1.2: - resolution: {integrity: sha512-wf+ATzYNAG3xU1eT4QosuF20E60nGbaAvTwjDARabsTuelRxhmyzJEvk8prO/xJScU427X/gCmUNpzpy6Mc1uQ==} + /eslint-define-config/1.1.3: + resolution: {integrity: sha512-QKVZKhZMw+wwjddgHlKM8HZd33RWFDacMfW863a7tNWNHirbKL0vGj5VwF2L4OiiEsK8QqvyAY5DQywyA5IzLw==} + engines: {node: '>= 16.9.0', npm: '>= 7.0.0', pnpm: '>= 6.17.0'} dev: true - /eslint-plugin-es/3.0.1_eslint@8.1.0: + /eslint-plugin-es/3.0.1_eslint@8.2.0: resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 8.1.0 + eslint: 8.2.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true - /eslint-plugin-node/11.1.0_eslint@8.1.0: + /eslint-plugin-node/11.1.0_eslint@8.2.0: resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=5.16.0' dependencies: - eslint: 8.1.0 - eslint-plugin-es: 3.0.1_eslint@8.1.0 + eslint: 8.2.0 + eslint-plugin-es: 3.0.1_eslint@8.2.0 eslint-utils: 2.1.0 - ignore: 5.1.8 + ignore: 5.1.9 minimatch: 3.0.4 resolve: 1.20.0 semver: 6.3.0 @@ -4080,13 +4109,13 @@ packages: eslint-visitor-keys: 1.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.1.0: + /eslint-utils/3.0.0_eslint@8.2.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.1.0 + eslint: 8.2.0 eslint-visitor-keys: 2.1.0 dev: true @@ -4105,12 +4134,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.1.0: - resolution: {integrity: sha512-JZvNneArGSUsluHWJ8g8MMs3CfIEzwaLx9KyH4tZ2i+R2/rPWzL8c0zg3rHdwYVpN/1sB9gqnjHwz9HoeJpGHw==} + /eslint/8.2.0: + resolution: {integrity: sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.0.3 + '@eslint/eslintrc': 1.0.4 '@humanwhocodes/config-array': 0.6.0 ajv: 6.12.6 chalk: 4.1.2 @@ -4120,7 +4149,7 @@ packages: enquirer: 2.3.6 escape-string-regexp: 4.0.0 eslint-scope: 6.0.0 - eslint-utils: 3.0.0_eslint@8.1.0 + eslint-utils: 3.0.0_eslint@8.2.0 eslint-visitor-keys: 3.0.0 espree: 9.0.0 esquery: 1.4.0 @@ -4414,8 +4443,8 @@ packages: resolution: {integrity: sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==} dev: true - /follow-redirects/1.14.4: - resolution: {integrity: sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==} + /follow-redirects/1.14.5: + resolution: {integrity: sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -4630,7 +4659,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.7 - ignore: 5.1.8 + ignore: 5.1.9 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -4654,7 +4683,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.14.2 + uglify-js: 3.14.3 dev: true /hard-rejection/2.1.0: @@ -4707,10 +4736,10 @@ packages: /history/4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.0 loose-envify: 1.4.0 resolve-pathname: 3.0.0 - tiny-invariant: 1.1.0 + tiny-invariant: 1.2.0 tiny-warning: 1.0.3 value-equal: 1.0.1 dev: false @@ -4802,7 +4831,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.14.4 + follow-redirects: 1.14.5 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -4848,8 +4877,8 @@ packages: engines: {node: '>= 4'} dev: true - /ignore/5.1.8: - resolution: {integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==} + /ignore/5.1.9: + resolution: {integrity: sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==} engines: {node: '>= 4'} dev: true @@ -5192,7 +5221,7 @@ packages: resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -5204,8 +5233,8 @@ packages: resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.15.8 - '@babel/parser': 7.15.8 + '@babel/core': 7.16.0 + '@babel/parser': 7.16.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -5257,7 +5286,7 @@ packages: '@jest/environment': 27.3.1 '@jest/test-result': 27.3.1 '@jest/types': 27.2.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -5316,10 +5345,10 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 '@jest/test-sequencer': 27.3.1 '@jest/types': 27.2.5 - babel-jest: 27.3.1_@babel+core@7.15.8 + babel-jest: 27.3.1_@babel+core@7.16.0 chalk: 4.1.2 ci-info: 3.2.0 deepmerge: 4.2.2 @@ -5337,7 +5366,7 @@ packages: jest-validate: 27.3.1 micromatch: 4.0.4 pretty-format: 27.3.1 - ts-node: 10.4.0_d3e11751f498564481cc5d710b5b838a + ts-node: 10.4.0_ee928ac548ac44c173bf0d4654ae2c29 transitivePeerDependencies: - bufferutil - canvas @@ -5380,7 +5409,7 @@ packages: '@jest/environment': 27.3.1 '@jest/fake-timers': 27.3.1 '@jest/types': 27.2.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 jest-mock: 27.3.0 jest-util: 27.3.1 jsdom: 16.7.0 @@ -5398,7 +5427,7 @@ packages: '@jest/environment': 27.3.1 '@jest/fake-timers': 27.3.1 '@jest/types': 27.2.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 jest-mock: 27.3.0 jest-util: 27.3.1 dev: true @@ -5414,7 +5443,7 @@ packages: dependencies: '@jest/types': 27.2.5 '@types/graceful-fs': 4.1.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.8 @@ -5432,12 +5461,12 @@ packages: resolution: {integrity: sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/traverse': 7.15.4 + '@babel/traverse': 7.16.0 '@jest/environment': 27.3.1 '@jest/source-map': 27.0.6 '@jest/test-result': 27.3.1 '@jest/types': 27.2.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 chalk: 4.1.2 co: 4.6.0 expect: 27.3.1 @@ -5476,7 +5505,7 @@ packages: resolution: {integrity: sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/code-frame': 7.15.8 + '@babel/code-frame': 7.16.0 '@jest/types': 27.2.5 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -5492,7 +5521,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.2.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 dev: true /jest-pnp-resolver/1.2.2_jest-resolve@27.3.1: @@ -5548,7 +5577,7 @@ packages: '@jest/test-result': 27.3.1 '@jest/transform': 27.3.1 '@jest/types': 27.2.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 chalk: 4.1.2 emittery: 0.8.1 exit: 0.1.2 @@ -5610,7 +5639,7 @@ packages: resolution: {integrity: sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.7 graceful-fs: 4.2.8 dev: true @@ -5618,17 +5647,17 @@ packages: resolution: {integrity: sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.15.8 - '@babel/generator': 7.15.8 - '@babel/parser': 7.15.8 - '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.15.8 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/core': 7.16.0 + '@babel/generator': 7.16.0 + '@babel/parser': 7.16.2 + '@babel/plugin-syntax-typescript': 7.16.0_@babel+core@7.16.0 + '@babel/traverse': 7.16.0 + '@babel/types': 7.16.0 '@jest/transform': 27.3.1 '@jest/types': 27.2.5 '@types/babel__traverse': 7.14.2 '@types/prettier': 2.4.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.8 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.16.0 chalk: 4.1.2 expect: 27.3.1 graceful-fs: 4.2.8 @@ -5651,7 +5680,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.2.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 chalk: 4.1.2 ci-info: 3.2.0 graceful-fs: 4.2.8 @@ -5676,7 +5705,7 @@ packages: dependencies: '@jest/test-result': 27.3.1 '@jest/types': 27.2.5 - '@types/node': 15.14.9 + '@types/node': 16.11.7 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.3.1 @@ -5687,7 +5716,7 @@ packages: resolution: {integrity: sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.7 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -5879,23 +5908,6 @@ packages: shell-quote: 1.7.3 dev: true - /less/3.13.1: - resolution: {integrity: sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==} - engines: {node: '>=6'} - hasBin: true - dependencies: - copy-anything: 2.0.3 - tslib: 1.14.1 - optionalDependencies: - errno: 0.1.8 - graceful-fs: 4.2.8 - image-size: 0.5.5 - make-dir: 2.1.0 - mime: 1.6.0 - native-request: 1.1.0 - source-map: 0.6.1 - dev: true - /less/4.1.2: resolution: {integrity: sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==} engines: {node: '>=6'} @@ -5935,8 +5947,8 @@ packages: type-check: 0.4.0 dev: true - /lilconfig/2.0.3: - resolution: {integrity: sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==} + /lilconfig/2.0.4: + resolution: {integrity: sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==} engines: {node: '>=10'} /lines-and-columns/1.1.6: @@ -5953,7 +5965,7 @@ packages: debug: 4.3.2_supports-color@8.1.1 enquirer: 2.3.6 execa: 5.1.1 - listr2: 3.13.1_enquirer@2.3.6 + listr2: 3.13.3_enquirer@2.3.6 micromatch: 4.0.4 normalize-path: 3.0.0 please-upgrade-node: 3.2.0 @@ -5962,18 +5974,19 @@ packages: supports-color: 8.1.1 dev: true - /listr2/3.13.1_enquirer@2.3.6: - resolution: {integrity: sha512-pk4YBDA2cxtpM8iLHbz6oEsfZieJKHf6Pt19NlKaHZZVpqHyVs/Wqr7RfBBCeAFCJchGO7WQHVkUPZTvJMHk8w==} + /listr2/3.13.3_enquirer@2.3.6: + resolution: {integrity: sha512-VqAgN+XVfyaEjSaFewGPcDs5/3hBbWVaX1VgWv2f52MF7US45JuARlArULctiB44IIcEk3JF7GtoFCLqEdeuPA==} engines: {node: '>=10.0.0'} peerDependencies: enquirer: '>= 2.3.0 < 3' dependencies: cli-truncate: 2.1.0 + clone: 2.1.2 colorette: 2.0.16 enquirer: 2.3.6 log-update: 4.0.0 p-map: 4.0.0 - rxjs: 6.6.7 + rxjs: 7.4.0 through: 2.3.8 wrap-ansi: 7.0.0 dev: true @@ -6213,12 +6226,18 @@ packages: hasBin: true dev: true - /mime/2.5.2: - resolution: {integrity: sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==} + /mime/2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} engines: {node: '>=4.0.0'} hasBin: true dev: true + /mime/3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: true + /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -6235,7 +6254,7 @@ packages: prop-types: ^15.0.0 react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.0 prop-types: 15.7.2 react: 17.0.2 tiny-warning: 1.0.3 @@ -6269,7 +6288,7 @@ packages: typescript: 4.4.4 typeson: 6.1.0 typeson-registry: 1.0.0-alpha.39 - web-streams-polyfill: 3.1.1 + web-streams-polyfill: 3.2.0 ws: 7.5.5 yargs: 16.2.0 youch: 2.2.2 @@ -6342,12 +6361,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /native-request/1.1.0: - resolution: {integrity: sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==} - requiresBuild: true - dev: true - optional: true - /natural-compare/1.4.0: resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} dev: true @@ -6396,8 +6409,8 @@ packages: lodash: 4.17.21 dev: false - /node-fetch/2.6.5: - resolution: {integrity: sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==} + /node-fetch/2.6.6: + resolution: {integrity: sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==} engines: {node: 4.x || >=6.0.0} dependencies: whatwg-url: 5.0.0 @@ -6664,7 +6677,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.15.8 + '@babel/code-frame': 7.16.0 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.1.6 @@ -6789,21 +6802,21 @@ packages: find-up: 4.1.0 dev: true - /playwright-chromium/1.16.2: - resolution: {integrity: sha512-tqLzJCNfqIB25uJTOtBmD6WofLUMe4iO0q5SKDmUcZXkz5vKXGAvNg5PHg6piMR96qTUNXgbCCpt5i33r1u51Q==} + /playwright-chromium/1.16.3: + resolution: {integrity: sha512-wXKjf9UYB2WtzC3C+3CCn9bNO6svRGY+F1vjm2UMxW/9wjyclLFkbcV3P6EztGQ0Ngrov9BQwvtmpjIZuKk8dQ==} engines: {node: '>=12'} hasBin: true requiresBuild: true dependencies: - playwright-core: 1.16.2 + playwright-core: 1.16.3 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate dev: true - /playwright-core/1.16.2: - resolution: {integrity: sha512-8WkoP5OfZAYrRxtW/PCVACn9bNgqrTxVVPlc+MoxvJ48knNsZ+skrPjfno/XF3SgTUY9DyYX0g5fVOB7lkPtGg==} + /playwright-core/1.16.3: + resolution: {integrity: sha512-16hF27IvQheJee+DbhC941AUZLjbJgfZFWi9YPS4LKEk/lKFhZI+9TiFD0sboYqb9eaEWvul47uR5xxTVbE4iw==} engines: {node: '>=12'} hasBin: true dependencies: @@ -6812,7 +6825,7 @@ packages: extract-zip: 2.0.1 https-proxy-agent: 5.0.0 jpeg-js: 0.4.3 - mime: 2.5.2 + mime: 2.6.0 pngjs: 5.0.0 progress: 2.0.3 proper-lockfile: 4.1.2 @@ -6870,8 +6883,8 @@ packages: optional: true dependencies: import-cwd: 3.0.0 - lilconfig: 2.0.3 - ts-node: 10.4.0_d3e11751f498564481cc5d710b5b838a + lilconfig: 2.0.4 + ts-node: 10.4.0_ee928ac548ac44c173bf0d4654ae2c29 yaml: 1.10.2 /postcss-modules-extract-imports/3.0.0_postcss@8.3.11: @@ -7244,8 +7257,8 @@ packages: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true - /react-refresh/0.10.0: - resolution: {integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==} + /react-refresh/0.11.0: + resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==} engines: {node: '>=0.10.0'} dev: false @@ -7254,13 +7267,13 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.0 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.7.2 react: 17.0.2 react-router: 5.2.1_react@17.0.2 - tiny-invariant: 1.1.0 + tiny-invariant: 1.2.0 tiny-warning: 1.0.3 dev: false @@ -7269,7 +7282,7 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.0 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -7278,7 +7291,7 @@ packages: prop-types: 15.7.2 react: 17.0.2 react-is: 16.13.1 - tiny-invariant: 1.1.0 + tiny-invariant: 1.2.0 tiny-warning: 1.0.3 dev: false @@ -7293,14 +7306,6 @@ packages: react-dom: 17.0.2_react@17.0.2 dev: false - /react/17.0.0: - resolution: {integrity: sha512-rG9bqS3LMuetoSUKHN8G3fMNuQOePKDThK6+2yXFWtoeTDLVNh/QCaxT+Jr+rNf4lwNXpx+atdn3Aa0oi8/6eQ==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - dev: false - /react/17.0.2: resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} engines: {node: '>=0.10.0'} @@ -7449,11 +7454,6 @@ packages: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} dev: false - /resolve-url/0.2.1: - resolution: {integrity: sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=} - deprecated: https://github.com/lydell/resolve-url#deprecated - dev: true - /resolve.exports/1.1.0: resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} engines: {node: '>=10'} @@ -7509,7 +7509,7 @@ packages: dependencies: glob: 7.2.0 - /rollup-plugin-license/2.6.0_rollup@2.58.3: + /rollup-plugin-license/2.6.0_rollup@2.59.0: resolution: {integrity: sha512-ilM+sb9xCvP+23tmzsCqJSm33877nIFeO6lMDGbckxc1jq2nW6WtU1nFD4cfOrKYl0cw1dkz4rC3VMAe8dA8cQ==} engines: {node: '>=10.0.0'} peerDependencies: @@ -7522,13 +7522,13 @@ packages: mkdirp: 1.0.4 moment: 2.29.1 package-name-regex: 2.0.4 - rollup: 2.58.3 + rollup: 2.59.0 spdx-expression-validate: 2.0.0 spdx-satisfies: 5.0.1 dev: true - /rollup/2.58.3: - resolution: {integrity: sha512-ei27MSw1KhRur4p87Q0/Va2NAYqMXOX++FNEumMBcdreIRLURKy+cE2wcDJKBn0nfmhP2ZGrJkP1XPO+G8FJQw==} + /rollup/2.59.0: + resolution: {integrity: sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: @@ -7539,11 +7539,10 @@ packages: dependencies: queue-microtask: 1.2.3 - /rxjs/6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} + /rxjs/7.4.0: + resolution: {integrity: sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==} dependencies: - tslib: 1.14.1 + tslib: 2.1.0 dev: true /safe-buffer/5.1.2: @@ -7709,7 +7708,7 @@ packages: engines: {node: '>= 10'} dependencies: '@polka/url': 1.0.0-next.21 - mime: 2.5.2 + mime: 2.6.0 totalist: 1.1.0 dev: true @@ -7721,6 +7720,11 @@ packages: engines: {node: '>=8'} dev: true + /slash/4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + /slice-ansi/3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} @@ -7767,14 +7771,11 @@ packages: resolution: {integrity: sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==} engines: {node: '>=0.10.0'} - /source-map-resolve/0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + /source-map-resolve/0.6.0: + resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} dependencies: atob: 2.1.2 decode-uri-component: 0.2.0 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 dev: true /source-map-support/0.5.20: @@ -7784,10 +7785,6 @@ packages: source-map: 0.6.1 dev: true - /source-map-url/0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - dev: true - /source-map/0.5.7: resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} engines: {node: '>=0.10.0'} @@ -8010,11 +8007,11 @@ packages: /stylis/4.0.10: resolution: {integrity: sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==} - /stylus/0.54.8: - resolution: {integrity: sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==} + /stylus/0.55.0: + resolution: {integrity: sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw==} hasBin: true dependencies: - css-parse: 2.0.0 + css: 3.0.0 debug: 3.1.0 glob: 7.2.0 mkdirp: 1.0.4 @@ -8230,8 +8227,8 @@ packages: resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} dev: false - /tiny-invariant/1.1.0: - resolution: {integrity: sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==} + /tiny-invariant/1.2.0: + resolution: {integrity: sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==} dev: false /tiny-warning/1.0.3: @@ -8335,7 +8332,7 @@ packages: yargs-parser: 20.2.9 dev: true - /ts-node/10.4.0_d3e11751f498564481cc5d710b5b838a: + /ts-node/10.4.0_ee928ac548ac44c173bf0d4654ae2c29: resolution: {integrity: sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==} hasBin: true peerDependencies: @@ -8354,7 +8351,7 @@ packages: '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 15.14.9 + '@types/node': 16.11.7 acorn: 8.5.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -8365,8 +8362,8 @@ packages: yn: 3.1.1 dev: true - /tsconfck/1.0.0_typescript@4.4.4: - resolution: {integrity: sha512-9+flUmolxrnyKAYbNzXZX1UPHUuZsVqM42ioZ1H55r0I+UfJgYui4b7zUxhdJ4o5emEuZo89Cx4TiWG/Dd0c/A==} + /tsconfck/1.1.1_typescript@4.4.4: + resolution: {integrity: sha512-uEsCWef+3lA9/YqpGt/mdr+nDovhlr+f0zoycYiOyVDDOUb3BjYFA71+Ee3LB/GiZBRDyTfKBK1kGN2iuPPuEA==} engines: {node: ^12.20 || ^14.13.1 || >= 16, pnpm: '>=6.7.0'} hasBin: true peerDependencies: @@ -8382,6 +8379,10 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true + /tslib/2.1.0: + resolution: {integrity: sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==} + dev: true + /tslib/2.3.1: resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} dev: true @@ -8486,8 +8487,8 @@ packages: resolution: {integrity: sha512-kMBmblijHJXyOpKzgDhKx9INYU4u4E1RPMB0HqmKSgWG8vEcf3exEfLh4FFfzd3xdQOw9EuIy/cP0akY6rHopQ==} dev: true - /uglify-js/3.14.2: - resolution: {integrity: sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==} + /uglify-js/3.14.3: + resolution: {integrity: sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -8523,11 +8524,6 @@ packages: punycode: 2.1.1 dev: true - /urix/0.1.0: - resolution: {integrity: sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=} - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: true - /utf8-byte-length/1.0.4: resolution: {integrity: sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=} dev: true @@ -8580,8 +8576,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /vitepress/0.19.2: - resolution: {integrity: sha512-F8KY5gTfIa9B61by6rlGQE2K/fw2FIflld6UuB3SHTp0E5cblYGUkGfVwMiai+ets2ztDqWIiJJqpDBm/Cam1Q==} + /vitepress/0.20.1: + resolution: {integrity: sha512-2SOlvRv0bvPrQ3RPtp7Fh/G1MKidrsgAgYz18OvV+nIJb9iiYo0GUVHKN3OYswMh+vH78NyTeA1Q5v4YJ/H9LQ==} engines: {node: '>=12.0.0'} hasBin: true dependencies: @@ -8590,7 +8586,7 @@ packages: '@vitejs/plugin-vue': link:packages/plugin-vue prismjs: 1.25.0 vite: link:packages/vite - vue: 3.2.20 + vue: 3.2.21 transitivePeerDependencies: - react - react-dom @@ -8601,31 +8597,31 @@ packages: engines: {node: '>=0.10.0'} dev: true - /vue-router/4.0.12_vue@3.2.20: + /vue-router/4.0.12_vue@3.2.21: resolution: {integrity: sha512-CPXvfqe+mZLB1kBWssssTiWg4EQERyqJZes7USiqfW9B5N2x+nHlnsM1D3b5CaJ6qgCvMmYJnz+G0iWjNCvXrg==} peerDependencies: vue: ^3.0.0 dependencies: - '@vue/devtools-api': 6.0.0-beta.19 - vue: 3.2.20 + '@vue/devtools-api': 6.0.0-beta.20 + vue: 3.2.21 dev: false - /vue/3.2.20: - resolution: {integrity: sha512-81JjEP4OGk9oO8+CU0h2nFPGgJBm9mNa3kdCX2k6FuRdrWrC+CNe+tOnuIeTg8EWwQuI+wwdra5Q7vSzp7p4Iw==} + /vue/3.2.21: + resolution: {integrity: sha512-jpy7ckXdyclfRzqLjL4mtq81AkzQleE54KjZsJg/9OorNVurAxdlU5XpD49GpjKdnftuffKUvx2C5jDOrgc/zg==} dependencies: - '@vue/compiler-dom': 3.2.20 - '@vue/compiler-sfc': 3.2.20 - '@vue/runtime-dom': 3.2.20 - '@vue/server-renderer': 3.2.20_vue@3.2.20 - '@vue/shared': 3.2.20 + '@vue/compiler-dom': 3.2.21 + '@vue/compiler-sfc': 3.2.21 + '@vue/runtime-dom': 3.2.21 + '@vue/server-renderer': 3.2.21_vue@3.2.21 + '@vue/shared': 3.2.21 - /vuex/4.0.2_vue@3.2.20: + /vuex/4.0.2_vue@3.2.21: resolution: {integrity: sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==} peerDependencies: vue: ^3.0.2 dependencies: - '@vue/devtools-api': 6.0.0-beta.19 - vue: 3.2.20 + '@vue/devtools-api': 6.0.0-beta.20 + vue: 3.2.21 dev: false /w3c-hr-time/1.0.2: @@ -8647,8 +8643,8 @@ packages: makeerror: 1.0.12 dev: true - /web-streams-polyfill/3.1.1: - resolution: {integrity: sha512-Czi3fG883e96T4DLEPRvufrF2ydhOOW1+1a6c3gNjH2aIh50DNFBdfwh2AKoOf1rXvpvavAoA11Qdq9+BKjE0Q==} + /web-streams-polyfill/3.2.0: + resolution: {integrity: sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==} engines: {node: '>= 8'} dev: true @@ -8731,8 +8727,8 @@ packages: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/parser': 7.15.8 - '@babel/types': 7.15.6 + '@babel/parser': 7.16.2 + '@babel/types': 7.16.0 assert-never: 1.2.1 babel-walk: 3.0.0-canary-5 dev: true @@ -8789,6 +8785,19 @@ packages: optional: true dev: true + /ws/8.2.3: + resolution: {integrity: sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + /xml-name-validator/3.0.0: resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} dev: true diff --git a/scripts/jestPerTestSetup.ts b/scripts/jestPerTestSetup.ts index 3b7ec7d06fb226..c1d415b43f153f 100644 --- a/scripts/jestPerTestSetup.ts +++ b/scripts/jestPerTestSetup.ts @@ -22,15 +22,21 @@ export function slash(p: string): string { // injected by the test env declare global { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace NodeJS { - interface Global { - page?: Page - viteTestUrl?: string - watcher?: RollupWatcher - beforeAllError: any - } - } + const page: Page | undefined + + const browserLogs: string[] + const viteTestUrl: string | undefined + const watcher: RollupWatcher | undefined + let beforeAllError: Error | null // error caught in beforeAll, useful if you want to test error scenarios on build +} + +declare const global: { + page?: Page + + browserLogs: string[] + viteTestUrl?: string + watcher?: RollupWatcher + beforeAllError: Error | null } let server: ViteDevServer | http.Server diff --git a/scripts/preinstall.js b/scripts/preinstall.js deleted file mode 100644 index a1269cc0a7c6d2..00000000000000 --- a/scripts/preinstall.js +++ /dev/null @@ -1,7 +0,0 @@ -if (!/pnpm/.test(process.env.npm_execpath || '')) { - console.warn( - `\u001b[33mThis repository requires using pnpm as the package manager ` + - ` for scripts to work properly.\u001b[39m\n` - ) - process.exit(1) -}