diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 95% rename from .eslintrc.js rename to .eslintrc.cjs index 578e00417db95b..48a0bd7773b0d7 100644 --- a/.eslintrc.js +++ b/.eslintrc.cjs @@ -89,7 +89,11 @@ module.exports = defineConfig({ '@typescript-eslint/no-inferrable-types': 'off', '@typescript-eslint/no-non-null-assertion': 'off', // maybe we should turn this on in a new PR '@typescript-eslint/no-unused-vars': 'off', // maybe we should turn this on in a new PR - '@typescript-eslint/no-var-requires': 'off' + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/consistent-type-imports': [ + 'error', + { prefer: 'type-imports' } + ] }, overrides: [ { diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 1958ffdf1bea07..11a9a532fd5456 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -14,11 +14,11 @@ body: placeholder: Bug description validations: required: true - - type: textarea + - type: input id: reproduction attributes: label: Reproduction - description: Please provide a link to a repo that can reproduce the problem you ran into. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is required unless you are absolutely sure that the issue is obvious and the provided information is enough to understand the problem. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "need reproduction" label. If no reproduction is provided after 3 days, it will be auto-closed. + description: Please provide a link via [vite.new](https://vite.new/) or a link to a repo that can reproduce the problem you ran into. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is required. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "need reproduction" label. If no reproduction is provided after 3 days, it will be auto-closed. placeholder: Reproduction validations: required: true 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 ef4a33afb17f05..64166e7158caf3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,18 +14,22 @@ on: pull_request: workflow_dispatch: +concurrency: + group: ${{ github.workflow }}-${{ github.event.number || github.sha }} + cancel-in-progress: true + jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] - node_version: [12, 14, 16] + node_version: [12, 14, 16, 17] include: - os: macos-latest - node_version: 14 + node_version: 16 - os: windows-latest - node_version: 14 + node_version: 16 fail-fast: false name: "Build&Test: node-${{ matrix.node_version }}, ${{ matrix.os }}" @@ -34,9 +38,9 @@ jobs: uses: actions/checkout@v2 - name: Install pnpm - uses: pnpm/action-setup@v2.0.1 + uses: pnpm/action-setup@v2 with: - version: 6.15.1 + version: 6 - name: Set node version to ${{ matrix.node_version }} uses: actions/setup-node@v2 @@ -64,21 +68,21 @@ jobs: lint: runs-on: ubuntu-latest - name: "Lint: node-14, ubuntu-latest" + name: "Lint: node-16, ubuntu-latest" steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Install pnpm - uses: pnpm/action-setup@v2.0.1 + uses: pnpm/action-setup@v2 with: - version: 6.15.1 + version: 6 - - name: Set node version to 14 + - name: Set node version to 16 uses: actions/setup-node@v2 with: - node-version: 14 + node-version: 16 cache: "pnpm" - name: Install deps @@ -91,3 +95,6 @@ jobs: - name: Lint run: pnpm run lint + + - name: Check formatting + run: pnpm prettier --check . diff --git a/.github/workflows/issue-close-require.yml b/.github/workflows/issue-close-require.yml index 78822030cbf585..02ac374b06c426 100644 --- a/.github/workflows/issue-close-require.yml +++ b/.github/workflows/issue-close-require.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: need reproduction - uses: actions-cool/issues-helper@v2.4.3 + uses: actions-cool/issues-helper@v2 with: actions: "close-issues" token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/issue-labeled.yml b/.github/workflows/issue-labeled.yml index c92baa4b7c9728..a63021952fd73d 100644 --- a/.github/workflows/issue-labeled.yml +++ b/.github/workflows/issue-labeled.yml @@ -10,7 +10,7 @@ jobs: steps: - name: contribution welcome if: github.event.label.name == 'contribution welcome' || github.event.label.name == 'help wanted' - uses: actions-cool/issues-helper@v2.4.3 + uses: actions-cool/issues-helper@v2 with: actions: "create-comment, remove-labels" token: ${{ secrets.GITHUB_TOKEN }} @@ -21,7 +21,7 @@ jobs: - name: remove pending if: github.event.label.name == 'enhancement' || github.event.label.name == 'bug' || (contains(github.event.label.name, 'pending triage') == false && startsWith(github.event.label.name, 'bug:') == true) - uses: actions-cool/issues-helper@v2.4.3 + uses: actions-cool/issues-helper@v2 with: actions: "remove-labels" token: ${{ secrets.GITHUB_TOKEN }} @@ -30,7 +30,7 @@ jobs: - name: need reproduction if: github.event.label.name == 'need reproduction' - uses: actions-cool/issues-helper@v2.4.3 + uses: actions-cool/issues-helper@v2 with: actions: "create-comment, remove-labels" token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml new file mode 100644 index 00000000000000..5ed9495899340a --- /dev/null +++ b/.github/workflows/release-tag.yml @@ -0,0 +1,40 @@ +name: release + +on: + push: + tags: + - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 + - "plugin-*" # Push events to matching plugin-*, i.e. plugin-(vue|vue-jsx|react|legacy)@1.0.0 + - "create-vite*" # # Push events to matching create-vite*, i.e. create-vite@1.0.0 + +# $GITHUB_REF_NAME - https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Get pkgName for tag + id: tag + run: | + # matching v2.0.0 / v2.0.0-beta.8 etc + if [[ $GITHUB_REF_NAME =~ ^v.+ ]]; then + pkgName="vite" + else + # `%@*` truncates @ and version number from the right side. + # https://stackoverflow.com/questions/9532654/expression-after-last-specific-character + pkgName=${GITHUB_REF_NAME%@*} + fi + + echo "::set-output name=pkgName::$pkgName" + + - name: Create Release for Tag + id: release_tag + uses: yyx990803/release-tag@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + body: | + Please refer to [CHANGELOG.md](https://github.com/vitejs/vite/blob/${{ github.ref_name }}/packages/${{ steps.tag.outputs.pkgName }}/CHANGELOG.md) for details. diff --git a/.gitignore b/.gitignore index 57d35eff1d78b7..6a9f8063929462 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,4 @@ explorations *.local /packages/vite/LICENSE *.cpuprofile -/.vscode/ \ No newline at end of file +/.vscode/ diff --git a/.prettierignore b/.prettierignore index 76d0e7f08c2be1..1692b9d26cfa20 100644 --- a/.prettierignore +++ b/.prettierignore @@ -9,3 +9,4 @@ LICENSE.md pnpm-lock.yaml pnpm-workspace.yaml packages/playground/tsconfig-json-load-error/has-error/tsconfig.json +packages/playground/html/invalid.html diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2bba1b6f533a56..891e05cff3c5e4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,28 +6,32 @@ 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. - - Run `pnpm link vite` in another Vite project to use the locally built Vite; - - Use the `vite` binary anywhere. +You can alternatively use [Vite.js Docker Dev](https://github.com/nystudio107/vitejs-docker-dev) for a containerized Docker setup for Vite.js development. - If your project has `vite` as a nested dependency, you can customize the dependency resolution instead depending on the package manager used. For pnpm, add this in your project's root `package.json`: +## Testing Vite against external packages - ```json - { - "pnpm": { - "overrides": { - "vite": "link:../path/to/vite/packages/vite" - } - } - } - ``` +You may wish to test your locally-modified copy of Vite against another package that is built with Vite. For pnpm, after building Vite, you can use [`pnpm.overrides`](https://pnpm.io/package_json#pnpmoverrides). Please note that `pnpm.overrides` must be specified in the root `package.json` and you must first list the package as a dependency in the root `package.json`: - And re-run `pnpm install` to link the package. +```json +{ + "dependencies": { + "vite": "^2.0.0" + }, + "pnpm": { + "overrides": { + "vite": "link:../path/to/vite/packages/vite" + } + } +} +``` + +And re-run `pnpm install` to link the package. ## Running Tests @@ -98,7 +102,7 @@ To work around this, playground packages that uses the `file:` protocol should a ```jsonc "scripts": { //... - "postinstall": "node ../../../scripts/patchFileDeps" + "postinstall": "ts-node ../../../scripts/patchFileDeps.ts" } ``` diff --git a/docs/.vitepress/theme/index.js b/docs/.vitepress/theme/index.js index 3cedb624abdbfd..5d0a1b7a652039 100644 --- a/docs/.vitepress/theme/index.js +++ b/docs/.vitepress/theme/index.js @@ -9,7 +9,7 @@ export default { Layout() { return h(Theme.Layout, null, { 'sidebar-bottom': () => - h('div', { class: 'sponsors' }, [ + h('div', { class: 'sponsors sidebar' }, [ h( 'a', { diff --git a/docs/.vitepress/theme/sponsors.css b/docs/.vitepress/theme/sponsors.css index d069d7bc7a78d5..a512ed577f583a 100644 --- a/docs/.vitepress/theme/sponsors.css +++ b/docs/.vitepress/theme/sponsors.css @@ -5,13 +5,13 @@ .sponsors a { color: #999; + margin: 1em; + display: block; } .sponsors img { - max-width: 200px; - height: 40px; - display: block; - margin: 1.25rem 0; + max-width: 160px; + max-height: 40px; } .sponsors.frontpage { @@ -21,7 +21,6 @@ .sponsors.frontpage img { display: inline-block; vertical-align: middle; - margin: 0 1rem 1.25rem 1rem; } .sponsors.frontpage h2 { @@ -30,7 +29,28 @@ border: none; } +.sponsors.sidebar a img { + max-height: 36px; +} + +.platinum-sponsors { + margin-bottom: 1.5em; +} + +.platinum-sponsors a img { + max-width: 240px; + max-height: 60px; +} + +.gold-sponsors { + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; + align-items: center; +} + /* special cases */ #sponsor-mux { padding: 5px 0; + min-height: 36px; } diff --git a/docs/.vitepress/theme/sponsors.json b/docs/.vitepress/theme/sponsors.json index fd4a2e944630b3..8c6dbef4df7057 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", @@ -22,5 +29,17 @@ "name": "Plaid Inc.", "href": "https://plaid.co.jp/", "src": "/plaid.svg" + }, + { + "id": "divriots", + "name": "divriots", + "href": "https://divriots.com/", + "src": "/divriots.png" + }, + { + "id": "finclip", + "name": "FinClip", + "href": "https://finclip.com/?from=vite", + "src": "/finclip.png" } ] diff --git a/docs/config/index.md b/docs/config/index.md index 222ad9ea4fbdc3..b7cba23e2bce5f 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -1,3 +1,7 @@ +--- +title: Configuring Vite +--- + # Configuring Vite ## Config File @@ -52,15 +56,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 +73,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: @@ -128,9 +135,21 @@ export default defineConfig(async ({ command, mode }) => { For example, `process.env.FOO` and `__APP_VERSION__` are good fits. But `process` or `global` should not be put into this option. Variables can be shimmed or polyfilled instead. + ::: tip NOTE + For TypeScript users, make sure to add the type declarations in the `env.d.ts` or `vite-env.d.ts` file to get type checks and Intellisense. + + Example: + + ```ts + // vite-env.d.ts + declare const __APP_VERSION__: string + ``` + + ::: + ### plugins -- **Type:** ` (Plugin | Plugin[])[]` +- **Type:** `(Plugin | Plugin[])[]` Array of plugins to use. Falsy plugins are ignored and arrays of plugins are flattened. See [Plugin API](/guide/api-plugin) for more details on Vite plugins. @@ -169,6 +188,10 @@ export default defineConfig(async ({ command, mode }) => { If you have duplicated copies of the same dependency in your app (likely due to hoisting or linked packages in monorepos), use this option to force Vite to always resolve listed dependencies to the same copy (from project root). + :::warning SSR + ESM + For SSR builds, deduplication does not work for ESM build outputs configured from `build.rollupOptions.output`. A workaround is to use CJS build outputs until ESM has better plugin support for module loading. + ::: + ### resolve.conditions - **Type:** `string[]` @@ -229,9 +252,14 @@ export default defineConfig(async ({ command, mode }) => { | ((name: string, filename: string, css: string) => string) hashPrefix?: string /** - * default: 'camelCaseOnly' + * default: null */ - localsConvention?: 'camelCase' | 'camelCaseOnly' | 'dashes' | 'dashesOnly' + localsConvention?: + | 'camelCase' + | 'camelCaseOnly' + | 'dashes' + | 'dashesOnly' + | null } ``` @@ -358,20 +386,19 @@ export default defineConfig(async ({ command, mode }) => { Env variables starts with `envPrefix` will be exposed to your client source code via import.meta.env. -:::warning SECURITY NOTES - -- `envPrefix` should not be set as `''`, which will expose all your env variables and cause unexpected leaking of of sensitive information. Vite will throw error when detecting `''`. + :::warning SECURITY NOTES + `envPrefix` should not be set as `''`, which will expose all your env variables and cause unexpected leaking of of sensitive information. Vite will throw error when detecting `''`. ::: ## Server Options ### server.host -- **Type:** `string` +- **Type:** `string | boolean` - **Default:** `'127.0.0.1'` Specify which IP addresses the server should listen on. - Set this to `0.0.0.0` to listen on all addresses, including LAN and public addresses. + 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`. @@ -682,6 +709,10 @@ export default defineConfig({ If disabled, all CSS in the entire project will be extracted into a single CSS file. + ::: tip Note + If you specify `build.lib`, `build.cssCodeSplit` will be `false` as default. + ::: + ### build.cssTarget - **Type:** `string | string[]` @@ -741,6 +772,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'` @@ -748,6 +787,8 @@ export default defineConfig({ Set to `false` to disable minification, or specify the minifier to use. The default is [Esbuild](https://github.com/evanw/esbuild) which is 20 ~ 40x faster than terser and only 1 ~ 2% worse compression. [Benchmarks](https://github.com/privatenumber/minification-benchmarks) + Note the `build.minify` option is not available when using the `'es'` format in lib mode. + ### build.terserOptions - **Type:** `TerserOptions` @@ -768,12 +809,12 @@ export default defineConfig({ By default, Vite will empty the `outDir` on build if it is inside project root. It will emit a warning if `outDir` is outside of root to avoid accidentally removing important files. You can explicitly set this option to suppress the warning. This is also available via command line as `--emptyOutDir`. -### build.brotliSize +### build.reportCompressedSize - **Type:** `boolean` - **Default:** `true` - Enable/disable brotli-compressed size reporting. Compressing large output files can be slow, so disabling this may increase build performance for large projects. + Enable/disable gzip-compressed size reporting. Compressing large output files can be slow, so disabling this may increase build performance for large projects. ### build.chunkSizeWarningLimit @@ -789,6 +830,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) @@ -826,14 +938,17 @@ export default defineConfig({ By default, linked packages not inside `node_modules` are not pre-bundled. Use this option to force a linked package to be pre-bundled. -### optimizeDeps.keepNames +### optimizeDeps.esbuildOptions -- **Type:** `boolean` -- **Default:** `false` +- **Type:** [`EsbuildBuildOptions`](https://esbuild.github.io/api/#simple-options) + + Options to pass to esbuild during the dep scanning and optimization. + + Certain options are omitted since changing them would not be compatible with Vite's dep optimization. - The bundler sometimes needs to rename symbols to avoid collisions. - Set this to `true` to keep the `name` property on functions and classes. - See [`keepNames`](https://esbuild.github.io/api/#keep-names). + - `external` is also omitted, use Vite's `optimizeDeps.exclude` option + - `plugins` are merged with Vite's dep plugin + - `keepNames` takes precedence over the deprecated `optimizeDeps.keepNames` ## SSR Options diff --git a/docs/guide/api-javascript.md b/docs/guide/api-javascript.md index 24ea8da2d9a220..1651923c06cdcb 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() })() ``` @@ -102,6 +104,12 @@ interface ViteDevServer { * Start the server. */ listen(port?: number, isRestart?: boolean): Promise + /** + * Restart the server. + * + * @param forceOptimize - force the optimizer to re-bundle, same as --force cli flag + */ + restart(forceOptimize?: boolean): Promise /** * Stop the server. */ @@ -138,6 +146,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 +186,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..058130cec38414 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). - 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 +Vite convention for virtual modules is to prefix the user-facing 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. Internally, plugins that use virtual modules should prefix the module ID with `\0` while resolving the id, a convention from the rollup ecosystem. This prevents other plugins from trying to process the id (like node resolution), and core features like sourcemaps can use this info to differentiate between virtual modules and regular files. `\0` is not a permitted char in import URLs so we have to replace them during import analysis. A `\0{id}` virtual id ends up encoded as `/@id/__x00__{id}` during dev in the browser. The id will be decoded back before entering the plugins pipeline, so this is not seen by plugins hooks code. + +Note that modules directly derived from a real file, as in the case of a script module in a Single File Component (like a .vue or .svelte SFC) don't need to follow this convention. SFCs generally generate a set of submodules when processed but the code in these can be mapped back to the filesystem. Using `\0` for these submodules would prevent sourcemaps from working correctly. + ## Plugins config Users will add plugins to the project `devDependencies` and configure them using the `plugins` array option. @@ -84,28 +88,29 @@ It is common convention to author a Vite/Rollup plugin as a factory function tha ```js export default function myPlugin() { - const virtualFileId = '@my-virtual-file' + const virtualModuleId = '@my-virtual-module' + const resolvedVirtualModuleId = '\0' + virtualModuleId return { name: 'my-plugin', // required, will show up in warnings and errors resolveId(id) { - if (id === virtualFileId) { - return virtualFileId + if (id === virtualModuleId) { + return resolvedVirtualModuleId } }, load(id) { - if (id === virtualFileId) { - return `export const msg = "from virtual file"` + if (id === resolvedVirtualModuleId) { + return `export const msg = "from virtual module"` } } } } ``` -Which allows importing the file in JavaScript: +Which allows importing the module in JavaScript: ```js -import { msg } from '@my-virtual-file' +import { msg } from '@my-virtual-module' console.log(msg) ``` @@ -218,7 +223,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 +232,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/backend-integration.md b/docs/guide/backend-integration.md index 06fbce487ef3fd..a30831e735fff7 100644 --- a/docs/guide/backend-integration.md +++ b/docs/guide/backend-integration.md @@ -39,7 +39,7 @@ If you need a custom integration, you can follow the steps in this guide to conf Also make sure the server is configured to serve static assets in the Vite working directory, otherwise assets such as images won't be loaded properly. - Note if you are using React with `@vitejs/plugin-react-refresh`, you'll also need to add this before the above scripts, since the plugin is not able to modify the HTML you are serving: + Note if you are using React with `@vitejs/plugin-react`, you'll also need to add this before the above scripts, since the plugin is not able to modify the HTML you are serving: ```html + + diff --git a/packages/playground/hmr/__tests__/hmr.spec.ts b/packages/playground/hmr/__tests__/hmr.spec.ts index d0c78d9ee3f9f0..8244ecb20472e6 100644 --- a/packages/playground/hmr/__tests__/hmr.spec.ts +++ b/packages/playground/hmr/__tests__/hmr.spec.ts @@ -122,4 +122,21 @@ if (!isBuild) { editFile('customFile.js', (code) => code.replace('custom', 'edited')) await untilUpdated(() => el.textContent(), 'edited') }) + + test('full-reload encodeURI path', async () => { + await page.goto( + viteTestUrl + '/unicode-path/中文-にほんご-한글-🌕🌖🌗/index.html' + ) + let el = await page.$('#app') + expect(await el.textContent()).toBe('title') + await editFile( + 'unicode-path/中文-にほんご-한글-🌕🌖🌗/index.html', + (code) => code.replace('title', 'title2') + ) + await page.waitForEvent('load') + await untilUpdated( + async () => (await page.$('#app')).textContent(), + 'title2' + ) + }) } diff --git "a/packages/playground/hmr/unicode-path/\344\270\255\346\226\207-\343\201\253\343\201\273\343\202\223\343\201\224-\355\225\234\352\270\200-\360\237\214\225\360\237\214\226\360\237\214\227/index.html" "b/packages/playground/hmr/unicode-path/\344\270\255\346\226\207-\343\201\253\343\201\273\343\202\223\343\201\224-\355\225\234\352\270\200-\360\237\214\225\360\237\214\226\360\237\214\227/index.html" new file mode 100644 index 00000000000000..2f948015a88d6b --- /dev/null +++ "b/packages/playground/hmr/unicode-path/\344\270\255\346\226\207-\343\201\253\343\201\273\343\202\223\343\201\224-\355\225\234\352\270\200-\360\237\214\225\360\237\214\226\360\237\214\227/index.html" @@ -0,0 +1 @@ +
title
diff --git a/packages/playground/html/__tests__/html.spec.ts b/packages/playground/html/__tests__/html.spec.ts index dec0821f607409..66f537e5026361 100644 --- a/packages/playground/html/__tests__/html.spec.ts +++ b/packages/playground/html/__tests__/html.spec.ts @@ -1,4 +1,4 @@ -import { getColor, isBuild } from '../../testUtils' +import { getColor, isBuild, editFile } from '../../testUtils' function testPage(isNested: boolean) { test('pre transform', async () => { @@ -196,3 +196,43 @@ describe('noBody', () => { expect(await kw.innerHTML()).toMatch(``) }) }) + +describe('unicode path', () => { + test('direct access', async () => { + await page.goto( + viteTestUrl + '/unicode-path/中文-にほんご-한글-🌕🌖🌗/index.html' + ) + expect(await page.textContent('h1')).toBe('unicode-path') + }) + + test('spa fallback', async () => { + await page.goto(viteTestUrl + '/unicode-path/中文-にほんご-한글-🌕🌖🌗/') + expect(await page.textContent('h1')).toBe('unicode-path') + }) +}) + +if (!isBuild) { + describe('invalid', () => { + test('should be 500 with overlay', async () => { + const response = await page.goto(viteTestUrl + '/invalid.html') + expect(response.status()).toBe(500) + + const errorOverlay = await page.waitForSelector('vite-error-overlay') + expect(errorOverlay).toBeTruthy() + + const message = await errorOverlay.$$eval('.message-body', (m) => { + return m[0].innerHTML + }) + expect(message).toMatch(/^Unable to parse HTML/) + }) + + test('should reload when fixed', async () => { + const response = await page.goto(viteTestUrl + '/invalid.html') + await editFile('invalid.html', (content) => { + return content.replace('
Good') + }) + const content = await page.waitForSelector('text=Good Html') + expect(content).toBeTruthy() + }) + }) +} diff --git a/packages/playground/html/emptyAttr.html b/packages/playground/html/emptyAttr.html new file mode 100644 index 00000000000000..30c647017690dd --- /dev/null +++ b/packages/playground/html/emptyAttr.html @@ -0,0 +1,12 @@ + + + + + + + Empty Attr + + + + + diff --git a/packages/playground/html/index.html b/packages/playground/html/index.html index b0b5947debd00c..7320ff2b097db0 100644 --- a/packages/playground/html/index.html +++ b/packages/playground/html/index.html @@ -3,5 +3,5 @@

Hello

- + diff --git a/packages/playground/html/invalid.html b/packages/playground/html/invalid.html new file mode 100644 index 00000000000000..5b5cf429687466 --- /dev/null +++ b/packages/playground/html/invalid.html @@ -0,0 +1 @@ +
diff --git a/packages/playground/html/link.html b/packages/playground/html/link.html new file mode 100644 index 00000000000000..1ec95eedeab182 --- /dev/null +++ b/packages/playground/html/link.html @@ -0,0 +1,12 @@ + + + + + + + Link to rollup config + + + A Link to a Rollup Import + + diff --git "a/packages/playground/html/unicode-path/\344\270\255\346\226\207-\343\201\253\343\201\273\343\202\223\343\201\224-\355\225\234\352\270\200-\360\237\214\225\360\237\214\226\360\237\214\227/index.html" "b/packages/playground/html/unicode-path/\344\270\255\346\226\207-\343\201\253\343\201\273\343\202\223\343\201\224-\355\225\234\352\270\200-\360\237\214\225\360\237\214\226\360\237\214\227/index.html" new file mode 100644 index 00000000000000..f3c55befe1f315 --- /dev/null +++ "b/packages/playground/html/unicode-path/\344\270\255\346\226\207-\343\201\253\343\201\273\343\202\223\343\201\224-\355\225\234\352\270\200-\360\237\214\225\360\237\214\226\360\237\214\227/index.html" @@ -0,0 +1 @@ +

unicode-path

diff --git a/packages/playground/html/vite.config.js b/packages/playground/html/vite.config.js index 4caec59d195ad3..1703e02cc05366 100644 --- a/packages/playground/html/vite.config.js +++ b/packages/playground/html/vite.config.js @@ -11,12 +11,19 @@ module.exports = { nested: resolve(__dirname, 'nested/index.html'), scriptAsync: resolve(__dirname, 'scriptAsync.html'), scriptMixed: resolve(__dirname, 'scriptMixed.html'), + emptyAttr: resolve(__dirname, 'emptyAttr.html'), + link: resolve(__dirname, 'link.html'), + 'link/target': resolve(__dirname, 'index.html'), zeroJS: resolve(__dirname, 'zeroJS.html'), noHead: resolve(__dirname, 'noHead.html'), noBody: resolve(__dirname, 'noBody.html'), inline1: resolve(__dirname, 'inline/shared-1.html'), inline2: resolve(__dirname, 'inline/shared-2.html'), - inline3: resolve(__dirname, 'inline/unique.html') + inline3: resolve(__dirname, 'inline/unique.html'), + unicodePath: resolve( + __dirname, + 'unicode-path/中文-にほんご-한글-🌕🌖🌗/index.html' + ) } } }, diff --git a/packages/playground/json/package.json b/packages/playground/json/package.json index 5dc22762f6b1a0..ae49085bf36367 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.25" } } diff --git a/packages/playground/legacy/__tests__/legacy.spec.ts b/packages/playground/legacy/__tests__/legacy.spec.ts index 7263174e84b074..6a29965b10bd40 100644 --- a/packages/playground/legacy/__tests__/legacy.spec.ts +++ b/packages/playground/legacy/__tests__/legacy.spec.ts @@ -1,4 +1,9 @@ -import { isBuild, untilUpdated } from '../../testUtils' +import { + findAssetFile, + isBuild, + readManifest, + untilUpdated +} from '../../testUtils' test('should work', async () => { expect(await page.textContent('#app')).toMatch('Hello') @@ -44,3 +49,28 @@ test('generates assets', async () => { true ) }) + +if (isBuild) { + test('should generate correct manifest', async () => { + const manifest = readManifest() + expect(manifest['../../../vite/legacy-polyfills']).toBeDefined() + expect(manifest['../../../vite/legacy-polyfills'].src).toBe( + '../../../vite/legacy-polyfills' + ) + }) + + test('should minify legacy chunks with terser', async () => { + // This is a ghetto heuristic, but terser output seems to reliably start + // with one of the following, and non-terser output (including unminified or + // ebuild-minified) does not! + const terserPatt = /^(?:!function|System.register)/ + + expect(findAssetFile(/chunk-async-legacy/)).toMatch(terserPatt) + expect(findAssetFile(/chunk-async\./)).not.toMatch(terserPatt) + expect(findAssetFile(/immutable-chunk-legacy/)).toMatch(terserPatt) + expect(findAssetFile(/immutable-chunk\./)).not.toMatch(terserPatt) + expect(findAssetFile(/index-legacy/)).toMatch(terserPatt) + expect(findAssetFile(/index\./)).not.toMatch(terserPatt) + expect(findAssetFile(/polyfills-legacy/)).toMatch(terserPatt) + }) +} diff --git a/packages/playground/legacy/vite.config.js b/packages/playground/legacy/vite.config.js index 3d7d6b37d11451..da8addec974673 100644 --- a/packages/playground/legacy/vite.config.js +++ b/packages/playground/legacy/vite.config.js @@ -10,6 +10,7 @@ module.exports = { ], build: { + manifest: true, rollupOptions: { output: { chunkFileNames(chunkInfo) { diff --git a/packages/playground/lib/__tests__/lib.spec.ts b/packages/playground/lib/__tests__/lib.spec.ts index 9978d62ac777ad..382fb16510ce6f 100644 --- a/packages/playground/lib/__tests__/lib.spec.ts +++ b/packages/playground/lib/__tests__/lib.spec.ts @@ -11,6 +11,10 @@ if (isBuild) { expect(await page.textContent('.umd')).toBe('It works') }) + test('iife', async () => { + expect(await page.textContent('.iife')).toBe('It works') + }) + test('Library mode does not include `preload`', async () => { expect(await page.textContent('.dynamic-import-message')).toBe('hello vite') const code = fs.readFileSync( diff --git a/packages/playground/lib/index.dist.html b/packages/playground/lib/index.dist.html index b10b55e0fd913d..d6273923370aeb 100644 --- a/packages/playground/lib/index.dist.html +++ b/packages/playground/lib/index.dist.html @@ -1,6 +1,7 @@
+
+ + + diff --git a/packages/playground/lib/vite.config.js b/packages/playground/lib/vite.config.js index 2545d488e165ad..50cd188b1a40cc 100644 --- a/packages/playground/lib/vite.config.js +++ b/packages/playground/lib/vite.config.js @@ -9,6 +9,7 @@ module.exports = { lib: { entry: path.resolve(__dirname, 'src/main.js'), name: 'MyLib', + formats: ['es', 'umd', 'iife'], fileName: (format) => `my-lib-custom-filename.${format}.js` } }, 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..0606343e0dce3c 100644 --- a/packages/playground/optimize-deps/package.json +++ b/packages/playground/optimize-deps/package.json @@ -7,23 +7,23 @@ "build": "vite build", "debug": "node --inspect-brk ../../vite/bin/vite", "preview": "vite preview", - "postinstall": "node ../../../scripts/patchFileDeps" + "postinstall": "ts-node ../../../scripts/patchFileDeps.ts" }, "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.25", "vuex": "^4.0.0" }, "devDependencies": { diff --git a/packages/playground/optimize-missing-deps/package.json b/packages/playground/optimize-missing-deps/package.json index 4d2590591158e6..431cf3b33c3847 100644 --- a/packages/playground/optimize-missing-deps/package.json +++ b/packages/playground/optimize-missing-deps/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "scripts": { "dev": "node server", - "postinstall": "node ../../../scripts/patchFileDeps" + "postinstall": "ts-node ../../../scripts/patchFileDeps.ts" }, "dependencies": { "missing-dep": "file:./missing-dep", diff --git a/packages/playground/preload/__tests__/preload.spec.ts b/packages/playground/preload/__tests__/preload.spec.ts index 941f1b8e030dba..27a64930487797 100644 --- a/packages/playground/preload/__tests__/preload.spec.ts +++ b/packages/playground/preload/__tests__/preload.spec.ts @@ -11,4 +11,15 @@ if (isBuild) { const appHtml = await page.content() expect(appHtml).toMatch('This is home page.') }) + + test('dynamic import with comments', async () => { + await page.goto(viteTestUrl + '/#/hello') + const html = await page.content() + expect(html).toMatch( + /link rel="modulepreload".*?href="\/assets\/Hello\.\w{8}\.js"/ + ) + expect(html).toMatch( + /link rel="stylesheet".*?href="\/assets\/Hello\.\w{8}\.css"/ + ) + }) } diff --git a/packages/playground/preload/package.json b/packages/playground/preload/package.json index 746bdfa2a14fc5..5e65dafc8099c4 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.25", "vue-router": "^4.0.0" }, "devDependencies": { diff --git a/packages/playground/preload/router.js b/packages/playground/preload/router.js index a02628099bf264..d3d5afdc99f6a3 100644 --- a/packages/playground/preload/router.js +++ b/packages/playground/preload/router.js @@ -3,6 +3,11 @@ import Home from './src/components/Home.vue' const routes = [ { path: '/', name: 'Home', component: Home }, + { + path: '/hello', + name: 'Hello', + component: () => import(/* a comment */ './src/components/Hello.vue') + }, { path: '/about', name: 'About', diff --git a/packages/playground/preload/src/components/Hello.vue b/packages/playground/preload/src/components/Hello.vue new file mode 100644 index 00000000000000..33b44d278d305d --- /dev/null +++ b/packages/playground/preload/src/components/Hello.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/packages/playground/preload/src/components/Home.vue b/packages/playground/preload/src/components/Home.vue index aaf792bdc8e213..20f6b4948ac30a 100644 --- a/packages/playground/preload/src/components/Home.vue +++ b/packages/playground/preload/src/components/Home.vue @@ -3,6 +3,8 @@ This is home page.
Go to About page +
+ Go to Hello page
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-emotion/vite.config.ts b/packages/playground/react-emotion/vite.config.ts index 5b60bc7e26d145..9364c8f616c2f5 100644 --- a/packages/playground/react-emotion/vite.config.ts +++ b/packages/playground/react-emotion/vite.config.ts @@ -1,6 +1,7 @@ import react from '@vitejs/plugin-react' +import type { UserConfig } from 'vite' -const config: import('vite').UserConfig = { +const config: UserConfig = { plugins: [ react({ jsxImportSource: '@emotion/react', 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/react/vite.config.ts b/packages/playground/react/vite.config.ts index e8780031511dac..c6955a131d375f 100644 --- a/packages/playground/react/vite.config.ts +++ b/packages/playground/react/vite.config.ts @@ -1,6 +1,7 @@ import react from '@vitejs/plugin-react' +import type { UserConfig } from 'vite' -const config: import('vite').UserConfig = { +const config: UserConfig = { plugins: [react()], build: { // to make tests faster diff --git a/packages/playground/resolve/__tests__/resolve.spec.ts b/packages/playground/resolve/__tests__/resolve.spec.ts index b94be689371b22..97e4a5dd0add7b 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]') }) @@ -74,6 +78,10 @@ test('plugin resolved virtual file', async () => { expect(await page.textContent('.virtual')).toMatch('[success]') }) +test('plugin resolved custom virtual file', async () => { + expect(await page.textContent('.custom-virtual')).toMatch('[success]') +}) + test('resolve inline package', async () => { expect(await page.textContent('.inline-pkg')).toMatch('[success]') }) diff --git a/packages/playground/resolve/config-dep.js b/packages/playground/resolve/config-dep.js new file mode 100644 index 00000000000000..8bc3563c743bcd --- /dev/null +++ b/packages/playground/resolve/config-dep.js @@ -0,0 +1,3 @@ +module.exports = { + a: 1 +} diff --git a/packages/playground/resolve/index.html b/packages/playground/resolve/index.html index a121c5c8a68ca1..db0a4bc54f1ad7 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

@@ -48,6 +53,9 @@

Monorepo linked dep

Plugin resolved virtual file

+

Plugin resolved custom virtual file

+

+

Inline package

@@ -119,6 +127,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()) @@ -172,6 +183,9 @@

resolve package that contains # in path

import { msg as virtualMsg } from '@virtual-file' text('.virtual', virtualMsg) + import { msg as customVirtualMsg } from '@custom-virtual-file' + text('.custom-virtual', customVirtualMsg) + import { msg as inlineMsg } from './inline-package' text('.inline-pkg', inlineMsg) 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..be1b75e431383a 100644 --- a/packages/playground/resolve/vite.config.js +++ b/packages/playground/resolve/vite.config.js @@ -1,22 +1,42 @@ const virtualFile = '@virtual-file' +const virtualId = '\0' + virtualFile + +const customVirtualFile = '@custom-virtual-file' +const { a } = require('./config-dep') module.exports = { resolve: { - extensions: ['.mjs', '.js', '.es'], + extensions: ['.mjs', '.js', '.es', '.ts'], mainFields: ['custom', 'module'], conditions: ['custom'] }, + define: { + VITE_CONFIG_DEP_TEST: a + }, plugins: [ { - name: 'custom-resolve', + name: 'virtual-module', resolveId(id) { if (id === virtualFile) { + return virtualId + } + }, + load(id) { + if (id === virtualId) { + return `export const msg = "[success] from conventional virtual file"` + } + } + }, + { + name: 'custom-resolve', + resolveId(id) { + if (id === customVirtualFile) { return id } }, load(id) { - if (id === virtualFile) { - return `export const msg = "[success] from virtual file"` + if (id === customVirtualFile) { + return `export const msg = "[success] from custom virtual file"` } } } diff --git a/packages/playground/shims.d.ts b/packages/playground/shims.d.ts index 99ed8eb232b14f..ced8fb1ad585ae 100644 --- a/packages/playground/shims.d.ts +++ b/packages/playground/shims.d.ts @@ -4,7 +4,7 @@ declare module 'css-color-names' { } declare module '*.vue' { - import { ComponentOptions } from 'vue' + import type { ComponentOptions } from 'vue' const component: ComponentOptions export default component } diff --git a/packages/playground/ssr-deps/__tests__/serve.js b/packages/playground/ssr-deps/__tests__/serve.js new file mode 100644 index 00000000000000..5ba5724f2b7a94 --- /dev/null +++ b/packages/playground/ssr-deps/__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-deps/__tests__/ssr-deps.spec.ts b/packages/playground/ssr-deps/__tests__/ssr-deps.spec.ts new file mode 100644 index 00000000000000..8a201c9eb87455 --- /dev/null +++ b/packages/playground/ssr-deps/__tests__/ssr-deps.spec.ts @@ -0,0 +1,73 @@ +import { port } from './serve' + +const url = `http://localhost:${port}` + +/** + * test for #5809 + * + * NOTE: This test will always succeed now, unless the temporary workaround for Jest can be removed + * See https://github.com/vitejs/vite/pull/5197#issuecomment-938054077 + */ +test('msg should be encrypted', async () => { + await page.goto(url) + expect(await page.textContent('.encrypted-msg')).not.toMatch( + 'Secret Message!' + ) +}) + +test('msg read by fs/promises', async () => { + await page.goto(url) + expect(await page.textContent('.file-message')).toMatch('File Content!') +}) + +test('msg from primitive export', async () => { + await page.goto(url) + expect(await page.textContent('.primitive-export-message')).toMatch( + 'Hello World!' + ) +}) + +test('msg from TS transpiled exports', async () => { + await page.goto(url) + expect(await page.textContent('.ts-default-export-message')).toMatch( + 'Hello World!' + ) + expect(await page.textContent('.ts-named-export-message')).toMatch( + 'Hello World!' + ) +}) + +test('msg from Object.assign exports', async () => { + await page.goto(url) + expect(await page.textContent('.object-assigned-exports-message')).toMatch( + 'Hello World!' + ) +}) + +test('msg from forwarded exports', async () => { + await page.goto(url) + expect(await page.textContent('.forwarded-export-message')).toMatch( + 'Hello World!' + ) +}) + +test('msg from define properties exports', async () => { + await page.goto(url) + expect(await page.textContent('.define-properties-exports-msg')).toMatch( + 'Hello World!' + ) +}) + +test('msg from define property exports', async () => { + await page.goto(url) + expect(await page.textContent('.define-property-exports-msg')).toMatch( + 'Hello World!' + ) +}) + +test('msg from only object assigned exports', async () => { + await page.goto(url) + expect(await page.textContent('.only-object-assigned-exports-msg')).toMatch( + 'Hello World!' + ) +}) diff --git a/packages/playground/ssr-deps/define-properties-exports/index.js b/packages/playground/ssr-deps/define-properties-exports/index.js new file mode 100644 index 00000000000000..5bdd02be906469 --- /dev/null +++ b/packages/playground/ssr-deps/define-properties-exports/index.js @@ -0,0 +1,8 @@ +// prettier-ignore +Object.defineProperties ( exports , { + hello: { + value() { + return 'Hello World!' + } + } +}) diff --git a/packages/playground/ssr-deps/define-properties-exports/package.json b/packages/playground/ssr-deps/define-properties-exports/package.json new file mode 100644 index 00000000000000..7555314741d981 --- /dev/null +++ b/packages/playground/ssr-deps/define-properties-exports/package.json @@ -0,0 +1,5 @@ +{ + "name": "define-properties-exports", + "version": "0.0.0", + "private": true +} diff --git a/packages/playground/ssr-deps/define-property-exports/index.js b/packages/playground/ssr-deps/define-property-exports/index.js new file mode 100644 index 00000000000000..4506dd6200051e --- /dev/null +++ b/packages/playground/ssr-deps/define-property-exports/index.js @@ -0,0 +1,5 @@ +Object.defineProperty(exports, 'hello', { + value() { + return 'Hello World!' + } +}) diff --git a/packages/playground/ssr-deps/define-property-exports/package.json b/packages/playground/ssr-deps/define-property-exports/package.json new file mode 100644 index 00000000000000..02373646db832e --- /dev/null +++ b/packages/playground/ssr-deps/define-property-exports/package.json @@ -0,0 +1,5 @@ +{ + "name": "define-property-exports", + "version": "0.0.0", + "private": true +} diff --git a/packages/playground/ssr-deps/forwarded-export/index.js b/packages/playground/ssr-deps/forwarded-export/index.js new file mode 100644 index 00000000000000..0b9f314d00015e --- /dev/null +++ b/packages/playground/ssr-deps/forwarded-export/index.js @@ -0,0 +1,2 @@ +const original = require('object-assigned-exports') +module.exports = original diff --git a/packages/playground/ssr-deps/forwarded-export/package.json b/packages/playground/ssr-deps/forwarded-export/package.json new file mode 100644 index 00000000000000..49b7f792ba9c1d --- /dev/null +++ b/packages/playground/ssr-deps/forwarded-export/package.json @@ -0,0 +1,5 @@ +{ + "name": "forwarded-export", + "version": "0.0.0", + "private": true +} diff --git a/packages/playground/ssr-deps/index.html b/packages/playground/ssr-deps/index.html new file mode 100644 index 00000000000000..b1e884efaab01a --- /dev/null +++ b/packages/playground/ssr-deps/index.html @@ -0,0 +1,12 @@ + + + + + + SSR Dependencies + + +

SSR Dependencies

+
+ + diff --git a/packages/playground/ssr-deps/message b/packages/playground/ssr-deps/message new file mode 100644 index 00000000000000..bad92ec9bd7987 --- /dev/null +++ b/packages/playground/ssr-deps/message @@ -0,0 +1 @@ +File Content! diff --git a/packages/playground/ssr-deps/object-assigned-exports/index.js b/packages/playground/ssr-deps/object-assigned-exports/index.js new file mode 100644 index 00000000000000..d6510e38f3a36f --- /dev/null +++ b/packages/playground/ssr-deps/object-assigned-exports/index.js @@ -0,0 +1,9 @@ +Object.defineProperty(exports, '__esModule', { value: true }) + +const obj = { + hello() { + return 'Hello World!' + } +} + +Object.assign(exports, obj) diff --git a/packages/playground/ssr-deps/object-assigned-exports/package.json b/packages/playground/ssr-deps/object-assigned-exports/package.json new file mode 100644 index 00000000000000..cdbb4d04c95bbf --- /dev/null +++ b/packages/playground/ssr-deps/object-assigned-exports/package.json @@ -0,0 +1,5 @@ +{ + "name": "object-assigned-exports", + "version": "0.0.0", + "private": true +} diff --git a/packages/playground/ssr-deps/only-object-assigned-exports/index.js b/packages/playground/ssr-deps/only-object-assigned-exports/index.js new file mode 100644 index 00000000000000..b6a4ab368b133d --- /dev/null +++ b/packages/playground/ssr-deps/only-object-assigned-exports/index.js @@ -0,0 +1,5 @@ +Object.assign(exports, { + hello() { + return 'Hello World!' + } +}) diff --git a/packages/playground/ssr-deps/only-object-assigned-exports/package.json b/packages/playground/ssr-deps/only-object-assigned-exports/package.json new file mode 100644 index 00000000000000..b74c5215385df3 --- /dev/null +++ b/packages/playground/ssr-deps/only-object-assigned-exports/package.json @@ -0,0 +1,5 @@ +{ + "name": "only-object-assigned-exports", + "version": "0.0.0", + "private": true +} diff --git a/packages/playground/ssr-deps/package.json b/packages/playground/ssr-deps/package.json new file mode 100644 index 00000000000000..fac7c150b49924 --- /dev/null +++ b/packages/playground/ssr-deps/package.json @@ -0,0 +1,26 @@ +{ + "name": "test-ssr-deps", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "node server", + "serve": "cross-env NODE_ENV=production node server", + "debug": "node --inspect-brk server", + "postinstall": "ts-node ../../../scripts/patchFileDeps.ts" + }, + "dependencies": { + "bcrypt": "^5.0.1", + "define-properties-exports": "file:./define-properties-exports", + "define-property-exports": "file:./define-property-exports", + "forwarded-export": "file:./forwarded-export", + "object-assigned-exports": "file:./object-assigned-exports", + "only-object-assigned-exports": "file:./only-object-assigned-exports", + "primitive-export": "file:./primitive-export", + "read-file-content": "file:./read-file-content", + "ts-transpiled-exports": "file:./ts-transpiled-exports" + }, + "devDependencies": { + "cross-env": "^7.0.3", + "express": "^4.17.1" + } +} diff --git a/packages/playground/ssr-deps/primitive-export/index.js b/packages/playground/ssr-deps/primitive-export/index.js new file mode 100644 index 00000000000000..0701a4664b7537 --- /dev/null +++ b/packages/playground/ssr-deps/primitive-export/index.js @@ -0,0 +1 @@ +module.exports = 'Hello World!' diff --git a/packages/playground/ssr-deps/primitive-export/package.json b/packages/playground/ssr-deps/primitive-export/package.json new file mode 100644 index 00000000000000..c7a766db70b2e1 --- /dev/null +++ b/packages/playground/ssr-deps/primitive-export/package.json @@ -0,0 +1,5 @@ +{ + "name": "primitive-export", + "version": "0.0.0", + "private": true +} diff --git a/packages/playground/ssr-deps/read-file-content/index.js b/packages/playground/ssr-deps/read-file-content/index.js new file mode 100644 index 00000000000000..c8761b3b4734c1 --- /dev/null +++ b/packages/playground/ssr-deps/read-file-content/index.js @@ -0,0 +1,9 @@ +const path = require('path') + +module.exports = async function readFileContent(filePath) { + const fs = + process.versions.node.split('.')[0] >= '14' + ? require('fs/promises') + : require('fs').promises + return await fs.readFile(path.resolve(filePath), 'utf-8') +} diff --git a/packages/playground/ssr-deps/read-file-content/package.json b/packages/playground/ssr-deps/read-file-content/package.json new file mode 100644 index 00000000000000..1350dd365c3aa0 --- /dev/null +++ b/packages/playground/ssr-deps/read-file-content/package.json @@ -0,0 +1,5 @@ +{ + "name": "read-file-content", + "version": "0.0.0", + "private": true +} diff --git a/packages/playground/ssr-deps/server.js b/packages/playground/ssr-deps/server.js new file mode 100644 index 00000000000000..89a64ae51fdc94 --- /dev/null +++ b/packages/playground/ssr-deps/server.js @@ -0,0 +1,68 @@ +// @ts-check +const fs = require('fs') +const path = require('path') +const express = require('express') + +const isTest = process.env.NODE_ENV === 'test' || !!process.env.VITE_TEST_BUILD + +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} + */ + const 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 { + const url = req.originalUrl + + let template + template = fs.readFileSync(resolve('index.html'), 'utf-8') + template = await vite.transformIndexHtml(url, template) + const render = (await vite.ssrLoadModule('/src/app.js')).render + + const appHtml = await render(url, __dirname) + + const html = template.replace(``, appHtml) + + 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-deps/src/app.js b/packages/playground/ssr-deps/src/app.js new file mode 100644 index 00000000000000..da8883c6a9452b --- /dev/null +++ b/packages/playground/ssr-deps/src/app.js @@ -0,0 +1,45 @@ +import path from 'path' +import readFileContent from 'read-file-content' +import primitiveExport from 'primitive-export' +import tsDefaultExport, { hello as tsNamedExport } from 'ts-transpiled-exports' +import objectAssignedExports from 'object-assigned-exports' +import forwardedExport from 'forwarded-export' +import bcrypt from 'bcrypt' +import definePropertiesExports from 'define-properties-exports' +import definePropertyExports from 'define-property-exports' +import onlyObjectAssignedExports from 'only-object-assigned-exports' + +export async function render(url, rootDir) { + let html = '' + + const encryptedMsg = await bcrypt.hash('Secret Message!', 10) + html += `\n

encrypted message: ${encryptedMsg}

` + + const fileContent = await readFileContent(path.resolve(rootDir, 'message')) + html += `\n

msg read via fs/promises: ${fileContent}

` + + html += `\n

message from primitive export: ${primitiveExport}

` + + const tsDefaultExportMessage = tsDefaultExport() + html += `\n

message from ts-default-export: ${tsDefaultExportMessage}

` + + const tsNamedExportMessage = tsNamedExport() + html += `\n

message from ts-named-export: ${tsNamedExportMessage}

` + + const objectAssignedExportsMessage = objectAssignedExports.hello() + html += `\n

message from object-assigned-exports: ${objectAssignedExportsMessage}

` + + const forwardedExportMessage = forwardedExport.hello() + html += `\n

message from forwarded-export: ${forwardedExportMessage}

` + + const definePropertiesExportsMsg = definePropertiesExports.hello() + html += `\n

message from define-properties-exports: ${definePropertiesExportsMsg}

` + + const definePropertyExportsMsg = definePropertyExports.hello() + html += `\n

message from define-property-exports: ${definePropertyExportsMsg}

` + + const onlyObjectAssignedExportsMessage = onlyObjectAssignedExports.hello() + html += `\n

message from only-object-assigned-exports: ${onlyObjectAssignedExportsMessage}

` + + return html + '\n' +} diff --git a/packages/playground/ssr-deps/ts-transpiled-exports/index.js b/packages/playground/ssr-deps/ts-transpiled-exports/index.js new file mode 100644 index 00000000000000..882c5fee653a8b --- /dev/null +++ b/packages/playground/ssr-deps/ts-transpiled-exports/index.js @@ -0,0 +1,8 @@ +'use strict' +Object.defineProperty(exports, '__esModule', { value: true }) +exports.hello = void 0 +function hello() { + return 'Hello World!' +} +exports.hello = hello +exports.default = hello diff --git a/packages/playground/ssr-deps/ts-transpiled-exports/package.json b/packages/playground/ssr-deps/ts-transpiled-exports/package.json new file mode 100644 index 00000000000000..f975d9d736c7f2 --- /dev/null +++ b/packages/playground/ssr-deps/ts-transpiled-exports/package.json @@ -0,0 +1,5 @@ +{ + "name": "ts-transpiled-exports", + "version": "0.0.0", + "private": true +} 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 2cba97340b215c..a762909db538f5 100644 --- a/packages/playground/ssr-vue/__tests__/ssr-vue.spec.ts +++ b/packages/playground/ssr-vue/__tests__/ssr-vue.spec.ts @@ -4,6 +4,15 @@ import fetch from 'node-fetch' const url = `http://localhost:${port}` +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') @@ -141,14 +150,11 @@ test('client navigation', async () => { await untilUpdated(() => page.textContent('h1'), 'About') editFile('src/pages/About.vue', (code) => code.replace('About', 'changed')) await untilUpdated(() => page.textContent('h1'), 'changed') + await page.click('a[href="/"]') + await untilUpdated(() => page.textContent('a[href="/"]'), 'Home') }) test('import.meta.url', async () => { await page.goto(url) expect(await page.textContent('.protocol')).toEqual('file:') }) - -test('deep import built-in module', async () => { - await page.goto(url) - expect(await page.textContent('.file-message')).toMatch('fs/promises') -}) diff --git a/packages/playground/ssr-vue/package.json b/packages/playground/ssr-vue/package.json index c23e86fa5085a9..4a385336a97603 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.25", + "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/server.js b/packages/playground/ssr-vue/server.js index c10803b45ceef1..642f274647294f 100644 --- a/packages/playground/ssr-vue/server.js +++ b/packages/playground/ssr-vue/server.js @@ -66,7 +66,7 @@ async function createServer( render = require('./dist/server/entry-server.js').render } - const [appHtml, preloadLinks] = await render(url, manifest, __dirname) + const [appHtml, preloadLinks] = await render(url, manifest) const html = template .replace(``, preloadLinks) diff --git a/packages/playground/ssr-vue/src/entry-server.js b/packages/playground/ssr-vue/src/entry-server.js index 31c00870840b53..b1a5b6770d7fe2 100644 --- a/packages/playground/ssr-vue/src/entry-server.js +++ b/packages/playground/ssr-vue/src/entry-server.js @@ -1,8 +1,7 @@ import { createApp } from './main' import { renderToString } from 'vue/server-renderer' -import path from 'path' -export async function render(url, manifest, rootDir) { +export async function render(url, manifest) { const { app, router } = createApp() // set the router to the desired URL before rendering @@ -14,15 +13,7 @@ export async function render(url, manifest, rootDir) { // itself on ctx.modules. After the render, ctx.modules would contain all the // components that have been instantiated during this render call. const ctx = {} - let html = await renderToString(app, ctx) - - // for testing. Use deep import built-in module. PR #5248 - const fs = - process.versions.node.split('.')[0] >= '14' - ? await import('fs/promises') - : (await import('fs')).promises - const msg = await fs.readFile(path.resolve(rootDir, './src/message'), 'utf-8') - html += `

msg read via deep import built-in module: ${msg}

` + const html = await renderToString(app, ctx) // the SSR manifest generated by Vite contains module -> chunk/asset mapping // which we can then use to determine what files need to be preloaded for this diff --git a/packages/playground/ssr-vue/src/message b/packages/playground/ssr-vue/src/message deleted file mode 100644 index b0e64506dadd78..00000000000000 --- a/packages/playground/ssr-vue/src/message +++ /dev/null @@ -1 +0,0 @@ -"fs/promises" diff --git a/packages/playground/ssr-vue/src/pages/About.vue b/packages/playground/ssr-vue/src/pages/About.vue index 5fe0930c7abc4f..a5c29a24e8dbaf 100644 --- a/packages/playground/ssr-vue/src/pages/About.vue +++ b/packages/playground/ssr-vue/src/pages/About.vue @@ -1,12 +1,17 @@ + + 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/ssr-webworker/vite.config.js b/packages/playground/ssr-webworker/vite.config.js index 82fdf7579e9752..80cc1784cdc565 100644 --- a/packages/playground/ssr-webworker/vite.config.js +++ b/packages/playground/ssr-webworker/vite.config.js @@ -5,6 +5,9 @@ module.exports = { build: { minify: false }, + resolve: { + dedupe: ['react'] + }, ssr: { target: 'webworker', noExternal: true diff --git a/packages/playground/tailwind/package.json b/packages/playground/tailwind/package.json index 2d8e808757dae6..ff79908d386e96 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.25", "vue-router": "^4.0.0" }, "devDependencies": { diff --git a/packages/playground/tailwind/vite.config.ts b/packages/playground/tailwind/vite.config.ts index 8d076bee7e2277..e7c50bf3c3ae78 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/testUtils.ts b/packages/playground/testUtils.ts index 2be13b1aee8cc4..3c6cba769b3ffe 100644 --- a/packages/playground/testUtils.ts +++ b/packages/playground/testUtils.ts @@ -5,7 +5,7 @@ import fs from 'fs' import path from 'path' import colors from 'css-color-names' -import { ElementHandle } from 'playwright-chromium' +import type { ElementHandle } from 'playwright-chromium' import type { Manifest } from 'vite' export function slash(p: string): string { diff --git a/packages/playground/tsconfig-json/__tests__/tsconfig-json.spec.ts b/packages/playground/tsconfig-json/__tests__/tsconfig-json.spec.ts index 6f41efbeefb49a..0cd6af909f045b 100644 --- a/packages/playground/tsconfig-json/__tests__/tsconfig-json.spec.ts +++ b/packages/playground/tsconfig-json/__tests__/tsconfig-json.spec.ts @@ -31,9 +31,7 @@ describe('transformWithEsbuild', () => { } }) // "importsNotUsedAsValues": "preserve" from tsconfig.json should still work - expect(result.code).toContain( - 'import { MainTypeOnlyClass } from "./not-used-type";' - ) + expect(result.code).toContain('import "./not-used-type";') }) test('overwrite tsconfigRaw string', async () => { @@ -48,7 +46,22 @@ describe('transformWithEsbuild', () => { }) // "importsNotUsedAsValues": "preserve" from tsconfig.json should not be read // and defaults to "remove" - expect(result.code).not.toContain( + expect(result.code).not.toContain('import "./not-used-type";') + }) + + test('preserveValueImports', async () => { + const main = path.resolve(__dirname, '../src/main.ts') + const mainContent = fs.readFileSync(main, 'utf-8') + const result = await transformWithEsbuild(mainContent, main, { + tsconfigRaw: { + compilerOptions: { + useDefineForClassFields: false, + preserveValueImports: true + } + } + }) + // "importsNotUsedAsValues": "preserve" from tsconfig.json should still work + expect(result.code).toContain( 'import { MainTypeOnlyClass } from "./not-used-type";' ) }) diff --git a/packages/playground/tsconfig-json/nested-with-extends/main.ts b/packages/playground/tsconfig-json/nested-with-extends/main.ts index 557f496c4fe1dc..497708b4f4d226 100644 --- a/packages/playground/tsconfig-json/nested-with-extends/main.ts +++ b/packages/playground/tsconfig-json/nested-with-extends/main.ts @@ -1,4 +1,5 @@ // @ts-nocheck +// eslint-disable-next-line @typescript-eslint/consistent-type-imports import { NestedWithExtendsTypeOnlyClass } from './not-used-type' class NestedWithExtendsBase { diff --git a/packages/playground/tsconfig-json/nested/main.ts b/packages/playground/tsconfig-json/nested/main.ts index c3c23c44ef59f8..306efd0b1a87d9 100644 --- a/packages/playground/tsconfig-json/nested/main.ts +++ b/packages/playground/tsconfig-json/nested/main.ts @@ -1,4 +1,5 @@ // @ts-nocheck +// eslint-disable-next-line @typescript-eslint/consistent-type-imports import { NestedTypeOnlyClass } from './not-used-type' class NestedBase { diff --git a/packages/playground/tsconfig-json/src/main.ts b/packages/playground/tsconfig-json/src/main.ts index 05f1d1a02796ae..6ae1fe03b7d023 100644 --- a/packages/playground/tsconfig-json/src/main.ts +++ b/packages/playground/tsconfig-json/src/main.ts @@ -2,6 +2,7 @@ import '../nested/main' import '../nested-with-extends/main' +// eslint-disable-next-line @typescript-eslint/consistent-type-imports import { MainTypeOnlyClass } from './not-used-type' class MainBase { diff --git a/packages/playground/vue-jsx/package.json b/packages/playground/vue-jsx/package.json index f0807abdee0f32..4b2135906b2833 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.25" }, "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..4f5def023902bc 100644 --- a/packages/playground/vue/CustomBlockPlugin.ts +++ b/packages/playground/vue/CustomBlockPlugin.ts @@ -1,4 +1,4 @@ -import { Plugin } from 'vite' +import type { Plugin } from 'vite' export const vueI18nPlugin: Plugin = { name: 'vue-i18n', @@ -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/Hmr.vue b/packages/playground/vue/Hmr.vue index 89dade2c4f5879..5535467af3858f 100644 --- a/packages/playground/vue/Hmr.vue +++ b/packages/playground/vue/Hmr.vue @@ -6,6 +6,7 @@ diff --git a/packages/playground/vue/__tests__/vue.spec.ts b/packages/playground/vue/__tests__/vue.spec.ts index 99cd923cf1f35c..63680d6f021684 100644 --- a/packages/playground/vue/__tests__/vue.spec.ts +++ b/packages/playground/vue/__tests__/vue.spec.ts @@ -22,8 +22,16 @@ test(':slotted', async () => { expect(await getColor('.slotted')).toBe('red') }) -test('scan deps from 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/playground/vue/src-import/SrcImport.vue b/packages/playground/vue/src-import/SrcImport.vue index ac7ec78c869e65..d70e1f48a84331 100644 --- a/packages/playground/vue/src-import/SrcImport.vue +++ b/packages/playground/vue/src-import/SrcImport.vue @@ -1,3 +1,4 @@ + + - diff --git a/packages/playground/vue/src-import/script.ts b/packages/playground/vue/src-import/script.ts index c7712fc4b755b6..54e6e35db41f46 100644 --- a/packages/playground/vue/src-import/script.ts +++ b/packages/playground/vue/src-import/script.ts @@ -1,6 +1,12 @@ import { defineComponent } from 'vue' +import SrcImportStyle from './srcImportStyle.vue' +import SrcImportStyle2 from './srcImportStyle2.vue' export default defineComponent({ + components: { + SrcImportStyle, + SrcImportStyle2 + }, setup() { return { msg: 'hello from script src!' diff --git a/packages/playground/vue/src-import/srcImportStyle.vue b/packages/playground/vue/src-import/srcImportStyle.vue new file mode 100644 index 00000000000000..de91769858fe93 --- /dev/null +++ b/packages/playground/vue/src-import/srcImportStyle.vue @@ -0,0 +1,7 @@ + + + diff --git a/packages/playground/vue/src-import/srcImportStyle2.vue b/packages/playground/vue/src-import/srcImportStyle2.vue new file mode 100644 index 00000000000000..1e0f327413103e --- /dev/null +++ b/packages/playground/vue/src-import/srcImportStyle2.vue @@ -0,0 +1,4 @@ + + diff --git a/packages/playground/vue/src-import/style2.css b/packages/playground/vue/src-import/style2.css new file mode 100644 index 00000000000000..8c93cb983cc09d --- /dev/null +++ b/packages/playground/vue/src-import/style2.css @@ -0,0 +1,3 @@ +.src-imports-script { + color: #0088ff; +} diff --git a/packages/playground/vue/src-import/template.html b/packages/playground/vue/src-import/template.html index 305bbad0fbc2f6..6b55c545daac6a 100644 --- a/packages/playground/vue/src-import/template.html +++ b/packages/playground/vue/src-import/template.html @@ -1,3 +1,5 @@

SFC Src Imports

{{ msg }}
This should be tan
+ + diff --git a/packages/playground/vue/vite.config.ts b/packages/playground/vue/vite.config.ts index 4245af73426958..82efdac5e9f876 100644 --- a/packages/playground/vue/vite.config.ts +++ b/packages/playground/vue/vite.config.ts @@ -1,4 +1,3 @@ -import path from 'path' import { defineConfig } from 'vite' import vuePlugin from '@vitejs/plugin-vue' import { vueI18nPlugin } from './CustomBlockPlugin' @@ -11,7 +10,7 @@ export default defineConfig({ }, plugins: [ vuePlugin({ - refTransform: true + reactivityTransform: true }), vueI18nPlugin ], diff --git a/packages/playground/worker/__tests__/worker.spec.ts b/packages/playground/worker/__tests__/worker.spec.ts index 93bc590cb90b4e..b84ea39fef5d0a 100644 --- a/packages/playground/worker/__tests__/worker.spec.ts +++ b/packages/playground/worker/__tests__/worker.spec.ts @@ -1,7 +1,7 @@ import fs from 'fs' import path from 'path' import { untilUpdated, isBuild, testDir } from '../../testUtils' -import { Page } from 'playwright-chromium' +import type { Page } from 'playwright-chromium' test('normal', async () => { await page.click('.ping') @@ -12,6 +12,11 @@ test('normal', async () => { ) }) +test('TS output', async () => { + await page.click('.ping-ts-output') + await untilUpdated(() => page.textContent('.pong-ts-output'), 'pong') +}) + test('inlined', async () => { await page.click('.ping-inline') await untilUpdated(() => page.textContent('.pong-inline'), 'pong') @@ -47,8 +52,8 @@ if (isBuild) { test('inlined code generation', async () => { const assetsDir = path.resolve(testDir, 'dist/assets') const files = fs.readdirSync(assetsDir) - // should have 2 worker chunk - expect(files.length).toBe(3) + // should have 3 worker chunk + expect(files.length).toBe(4) const index = files.find((f) => f.includes('index')) const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8') const worker = files.find((f) => f.includes('my-worker')) diff --git a/packages/playground/worker/index.html b/packages/playground/worker/index.html index d388b9e3350a8f..20888835122fac 100644 --- a/packages/playground/worker/index.html +++ b/packages/playground/worker/index.html @@ -7,6 +7,12 @@
Response from inline worker:
+ +
+ Response from worker imported from code that might be compiled TS: + +
+
Tick from shared worker, it syncs between pages: @@ -17,6 +23,7 @@ import Worker from './my-worker?worker' import InlineWorker from './my-worker?worker&inline' import SharedWorker from './my-shared-worker?sharedworker&name=shared' + import TSOutputWorker from './possible-ts-output-worker?worker' import { mode } from './workerImport' document.querySelector('.mode-true').textContent = mode @@ -51,6 +58,15 @@ sharedWorker.port.start() + const tsOutputWorker = new TSOutputWorker() + tsOutputWorker.addEventListener('message', (e) => { + text('.pong-ts-output', e.data.msg) + }) + + document.querySelector('.ping-ts-output').addEventListener('click', () => { + tsOutputWorker.postMessage('ping') + }) + function text(el, text) { document.querySelector(el).textContent = text } diff --git a/packages/playground/worker/possible-ts-output-worker.mjs b/packages/playground/worker/possible-ts-output-worker.mjs new file mode 100644 index 00000000000000..2bcce3faa8a50e --- /dev/null +++ b/packages/playground/worker/possible-ts-output-worker.mjs @@ -0,0 +1,7 @@ +import { msg, mode } from './workerImport' + +self.onmessage = (e) => { + if (e.data === 'ping') { + self.postMessage({ msg, mode }) + } +} diff --git a/packages/plugin-legacy/CHANGELOG.md b/packages/plugin-legacy/CHANGELOG.md index 92a2a5cac70aca..4a97f73fa2b1a3 100644 --- a/packages/plugin-legacy/CHANGELOG.md +++ b/packages/plugin-legacy/CHANGELOG.md @@ -1,3 +1,16 @@ +## [1.6.4](https://github.com/vitejs/vite/compare/plugin-legacy@1.6.3...plugin-legacy@1.6.4) (2021-12-07) + + + +## [1.6.3](https://github.com/vitejs/vite/compare/plugin-legacy@1.6.2...plugin-legacy@1.6.3) (2021-11-22) + + +### Bug Fixes + +* **build:** resolve `rollupOptions.input` paths ([#5601](https://github.com/vitejs/vite/issues/5601)) ([5b6b016](https://github.com/vitejs/vite/commit/5b6b01693720290e8998b2613f0dcb2d699ee84f)) + + + ## [1.6.2](https://github.com/vitejs/vite/compare/plugin-legacy@1.6.1...plugin-legacy@1.6.2) (2021-10-11) diff --git a/packages/plugin-legacy/index.d.ts b/packages/plugin-legacy/index.d.ts index 612e6cacda9702..8f340f11cba074 100644 --- a/packages/plugin-legacy/index.d.ts +++ b/packages/plugin-legacy/index.d.ts @@ -1,4 +1,4 @@ -import { Plugin } from 'vite' +import type { Plugin } from 'vite' export interface Options { /** diff --git a/packages/plugin-legacy/index.js b/packages/plugin-legacy/index.js index bfa6ee491bcbf6..d030d7fc43344e 100644 --- a/packages/plugin-legacy/index.js +++ b/packages/plugin-legacy/index.js @@ -105,23 +105,6 @@ function viteLegacyPlugin(options = {}) { name: 'vite:legacy-generate-polyfill-chunk', apply: 'build', - config() { - return { - build: { - minify: 'terser' - } - } - }, - - configResolved(config) { - if (!config.build.ssr && genLegacy && config.build.minify === 'esbuild') { - throw new Error( - `Can't use esbuild as the minifier when targeting legacy browsers ` + - `because esbuild minification is not legacy safe.` - ) - } - }, - async generateBundle(opts, bundle) { if (config.build.ssr) { return @@ -297,6 +280,11 @@ function viteLegacyPlugin(options = {}) { // legacy-unsafe code - e.g. rewriting object properties into shorthands opts.__vite_skip_esbuild__ = true + // @ts-ignore force terser for legacy chunks. This only takes effect if + // minification isn't disabled, because that leaves out the terser plugin + // entirely. + opts.__vite_force_terser__ = true + const needPolyfills = options.polyfills !== false && !Array.isArray(options.polyfills) @@ -596,7 +584,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..d71fa06de0eec8 100644 --- a/packages/plugin-legacy/package.json +++ b/packages/plugin-legacy/package.json @@ -1,6 +1,6 @@ { "name": "@vitejs/plugin-legacy", - "version": "1.6.2", + "version": "1.6.4", "license": "MIT", "author": "Evan You", "files": [ @@ -11,7 +11,7 @@ "types": "index.d.ts", "scripts": { "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s --commit-path . --lerna-package plugin-legacy", - "release": "node ../../scripts/release.js --skipBuild" + "release": "ts-node ../../scripts/release.ts --skipBuild" }, "engines": { "node": ">=12.0.0" @@ -26,13 +26,13 @@ }, "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.6", + "core-js": "^3.20.1", "magic-string": "^0.25.7", "regenerator-runtime": "^0.13.9", "systemjs": "^6.11.0" }, "peerDependencies": { - "vite": "^2.0.0" + "vite": "^2.7.8" } } diff --git a/packages/plugin-react/CHANGELOG.md b/packages/plugin-react/CHANGELOG.md index 61eb5d662ead56..cf0df9a2d33b17 100644 --- a/packages/plugin-react/CHANGELOG.md +++ b/packages/plugin-react/CHANGELOG.md @@ -1,3 +1,41 @@ +## [1.1.3](https://github.com/vitejs/vite/compare/plugin-react@1.1.2...plugin-react@1.1.3) (2021-12-13) + + +### Bug Fixes + +* **plugin-react:** only detect preamble in hmr context ([#6096](https://github.com/vitejs/vite/issues/6096)) ([8735294](https://github.com/vitejs/vite/commit/8735294055ce16308a6b8302eba4538f4a2931d0)) + + + +## [1.1.2](https://github.com/vitejs/vite/compare/plugin-react@1.1.1...plugin-react@1.1.2) (2021-12-13) + + +### Bug Fixes + +* ignore babel config when running restore-jsx ([#6047](https://github.com/vitejs/vite/issues/6047)) ([9c2843c](https://github.com/vitejs/vite/commit/9c2843cf0506844ee32f042a04c22c440434df2a)) + + + +## [1.1.1](https://github.com/vitejs/vite/compare/plugin-react@1.1.0...plugin-react@1.1.1) (2021-12-07) + + + +# [1.1.0](https://github.com/vitejs/vite/compare/plugin-react@1.1.0-beta.1...plugin-react@1.1.0) (2021-11-22) + + + +# [1.1.0-beta.1](https://github.com/vitejs/vite/compare/plugin-react@1.1.0-beta.0...plugin-react@1.1.0-beta.1) (2021-11-19) + + +### Bug Fixes + +* **plugin-react:** apply `babel.plugins` to project files only ([#5255](https://github.com/vitejs/vite/issues/5255)) ([377d0be](https://github.com/vitejs/vite/commit/377d0be5cf85a50240e160beaaafda77b7199452)) +* **plugin-react:** remove querystring from sourcemap filename ([#5760](https://github.com/vitejs/vite/issues/5760)) ([d93a9fa](https://github.com/vitejs/vite/commit/d93a9fab8986f3659e79d7b0b065e99ef625a5dd)) +* **plugin-react:** restore usage of extension instead of id ([#5761](https://github.com/vitejs/vite/issues/5761)) ([59471b1](https://github.com/vitejs/vite/commit/59471b186612d3da0083543e23d660747d3287f3)) +* **plugin-react:** uncompiled JSX in linked pkgs ([#5669](https://github.com/vitejs/vite/issues/5669)) ([41a7c9c](https://github.com/vitejs/vite/commit/41a7c9ccfbc1a7bc60aec672056eac3966ddd036)) + + + # [1.1.0-beta.0](https://github.com/vitejs/vite/compare/plugin-react@1.0.6...plugin-react@1.1.0-beta.0) (2021-10-28) diff --git a/packages/plugin-react/package.json b/packages/plugin-react/package.json index 3180c3c6853328..f95a158155c400 100644 --- a/packages/plugin-react/package.json +++ b/packages/plugin-react/package.json @@ -1,6 +1,6 @@ { "name": "@vitejs/plugin-react", - "version": "1.1.0-beta.0", + "version": "1.1.3", "license": "MIT", "author": "Evan You", "contributors": [ @@ -18,7 +18,7 @@ "build-bundle": "esbuild src/index.ts --bundle --platform=node --target=node12 --external:@babel/* --external:@rollup/* --external:resolve --external:react-refresh/* --outfile=dist/index.js", "build-types": "tsc -p . --emitDeclarationOnly --outDir temp && api-extractor run && rimraf temp", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s --commit-path . --lerna-package plugin-react", - "release": "node ../../scripts/release.js" + "release": "ts-node ../../scripts/release.ts" }, "engines": { "node": ">=12.0.0" @@ -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", - "@rollup/pluginutils": "^4.1.1", - "react-refresh": "^0.10.0", + "@babel/core": "^7.16.5", + "@babel/plugin-transform-react-jsx": "^7.16.5", + "@babel/plugin-transform-react-jsx-development": "^7.16.5", + "@babel/plugin-transform-react-jsx-self": "^7.16.5", + "@babel/plugin-transform-react-jsx-source": "^7.16.5", + "@rollup/pluginutils": "^4.1.2", + "react-refresh": "^0.11.0", "resolve": "^1.20.0" } } diff --git a/packages/plugin-react/src/fast-refresh.ts b/packages/plugin-react/src/fast-refresh.ts index 76d163e4d665e2..70562bbbdfc5b7 100644 --- a/packages/plugin-react/src/fast-refresh.ts +++ b/packages/plugin-react/src/fast-refresh.ts @@ -35,14 +35,14 @@ import RefreshRuntime from "${runtimePublicPath}"; let prevRefreshReg; let prevRefreshSig; -if (!window.__vite_plugin_react_preamble_installed__) { - throw new Error( - "@vitejs/plugin-react can't detect preamble. Something is wrong. " + - "See https://github.com/vitejs/vite-plugin-react/pull/11#discussion_r430879201" - ); -} - if (import.meta.hot) { + if (!window.__vite_plugin_react_preamble_installed__) { + throw new Error( + "@vitejs/plugin-react can't detect preamble. Something is wrong. " + + "See https://github.com/vitejs/vite-plugin-react/pull/11#discussion_r430879201" + ); + } + prevRefreshReg = window.$RefreshReg$; prevRefreshSig = window.$RefreshSig$; window.$RefreshReg$ = (type, id) => { diff --git a/packages/plugin-react/src/index.ts b/packages/plugin-react/src/index.ts index 2cc9eaab5a5f75..5cbfc83c9bbbd5 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') + const 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,17 @@ 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 - ? await restoreJSX(babel, code, id) - : [null, false] + const [restoredAst, isCommonJS] = + !isProjectFile && !isJSX + ? await restoreJSX(babel, code, id) + : [null, false] - if (!isNodeModules || (ast = restoredAst)) { + if (isJSX || (ast = restoredAst)) { plugins.push([ await loadPlugin( '@babel/plugin-transform-react-jsx' + @@ -174,7 +156,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,6 +173,39 @@ export default function viteReact(opts: Options = {}): PluginOption[] { } } + // 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 (!extension.endsWith('.ts')) { + parserPlugins.push('jsx') + } + + if (/\.tsx?$/.test(extension)) { + parserPlugins.push('typescript') + } + const isReasonReact = extension.endsWith('.bs.js') const babelOpts: TransformOptions = { @@ -200,7 +215,7 @@ export default function viteReact(opts: Options = {}): PluginOption[] { ast: !isReasonReact, root: projectRoot, filename: id, - sourceFileName: id, + sourceFileName: filepath, parserOpts: { ...opts.babel?.parserOpts, sourceType: 'module', diff --git a/packages/plugin-react/src/jsx-runtime/babel-import-to-require.ts b/packages/plugin-react/src/jsx-runtime/babel-import-to-require.ts index 936d88b0c8472b..dc7129862fd976 100644 --- a/packages/plugin-react/src/jsx-runtime/babel-import-to-require.ts +++ b/packages/plugin-react/src/jsx-runtime/babel-import-to-require.ts @@ -1,3 +1,4 @@ +import type * as babelCore from '@babel/core' import type { types as t, Visitor } from '@babel/core' /** @@ -9,9 +10,7 @@ import type { types as t, Visitor } from '@babel/core' * * var _jsx = require("react/jsx-runtime").jsx */ -export function babelImportToRequire({ - types: t -}: typeof import('@babel/core')): { +export function babelImportToRequire({ types: t }: typeof babelCore): { visitor: Visitor } { return { diff --git a/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.spec.ts b/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.spec.ts index 60e330e4003b03..59d6661bedd11b 100644 --- a/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.spec.ts +++ b/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.spec.ts @@ -108,4 +108,10 @@ describe('babel-restore-jsx', () => { ) ).toMatchInlineSnapshot(`"

{foo ?

: null}

;"`) }) + + it('should handle lowercase component names', () => { + expect(jsx('React.createElement(aaa)')).toMatchInlineSnapshot( + `"React.createElement(aaa);"` + ) + }) }) diff --git a/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.ts b/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.ts index 0ac0a1f831c79a..669a0aeeced207 100644 --- a/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.ts +++ b/packages/plugin-react/src/jsx-runtime/babel-restore-jsx.ts @@ -2,7 +2,7 @@ * https://github.com/flying-sheep/babel-plugin-transform-react-createelement-to-jsx * @license GNU General Public License v3.0 */ -import * as babel from '@babel/core' +import type * as babel from '@babel/core' /** * Visitor factory for babel, converting React.createElement(...) to ... @@ -76,7 +76,7 @@ export default function ({ types: t }: typeof babel): babel.PluginObj { return null } - const name = getJSXIdentifier(node) + const name = getJSXIdentifier(node, true) if (name != null) { return name } @@ -152,9 +152,9 @@ export default function ({ types: t }: typeof babel): babel.PluginObj { return children } - function getJSXIdentifier(node: any) { + function getJSXIdentifier(node: any, tag = false) { //TODO: JSXNamespacedName - if (t.isIdentifier(node)) { + if (t.isIdentifier(node) && (!tag || node.name.match(/^[A-Z]/))) { return t.jsxIdentifier(node.name) } if (t.isStringLiteral(node)) { diff --git a/packages/plugin-react/src/jsx-runtime/restore-jsx.ts b/packages/plugin-react/src/jsx-runtime/restore-jsx.ts index d246ec1cc15067..5cc7042a32c55e 100644 --- a/packages/plugin-react/src/jsx-runtime/restore-jsx.ts +++ b/packages/plugin-react/src/jsx-runtime/restore-jsx.ts @@ -1,16 +1,29 @@ +import type * as babelCore from '@babel/core' import type { PluginItem, types as t } from '@babel/core' 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'), + babel: typeof babelCore, 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 +37,7 @@ export async function restoreJSX( }) if (!hasCompiledJsx) { - return [null, false] + return jsxNotFound } // Support modules that use `import {Fragment} from 'react'` @@ -36,6 +49,8 @@ export async function restoreJSX( babelRestoreJSX ||= import('./babel-restore-jsx') const result = await babel.transformAsync(code, { + babelrc: false, + configFile: false, ast: true, code: false, filename, diff --git a/packages/plugin-vue-jsx/CHANGELOG.md b/packages/plugin-vue-jsx/CHANGELOG.md index f344d30f82200c..d725541886ae3a 100644 --- a/packages/plugin-vue-jsx/CHANGELOG.md +++ b/packages/plugin-vue-jsx/CHANGELOG.md @@ -1,3 +1,24 @@ +## [1.3.3](https://github.com/vitejs/vite/compare/plugin-vue-jsx@1.3.2...plugin-vue-jsx@1.3.3) (2021-12-20) + + + +## [1.3.2](https://github.com/vitejs/vite/compare/plugin-vue-jsx@1.3.1...plugin-vue-jsx@1.3.2) (2021-12-13) + + +### Bug Fixes + +* allow overwriting `define` options in vue & vue-jsx plugins ([#6072](https://github.com/vitejs/vite/issues/6072)) ([5f3f6b7](https://github.com/vitejs/vite/commit/5f3f6b7b406cb3371084057c74814eb36175e5cf)) + + + +## [1.3.1](https://github.com/vitejs/vite/compare/plugin-vue-jsx@1.3.0...plugin-vue-jsx@1.3.1) (2021-12-07) + + + +# [1.3.0](https://github.com/vitejs/vite/compare/plugin-vue-jsx@1.3.0-beta.0...plugin-vue-jsx@1.3.0) (2021-11-22) + + + # [1.3.0-beta.0](https://github.com/vitejs/vite/compare/plugin-vue-jsx@1.2.0...plugin-vue-jsx@1.3.0-beta.0) (2021-10-28) diff --git a/packages/plugin-vue-jsx/index.d.ts b/packages/plugin-vue-jsx/index.d.ts index 2cac80ba56632e..a702c09baa8417 100644 --- a/packages/plugin-vue-jsx/index.d.ts +++ b/packages/plugin-vue-jsx/index.d.ts @@ -1,6 +1,6 @@ -import { Plugin } from 'vite' -import { VueJSXPluginOptions } from '@vue/babel-plugin-jsx' -import { FilterPattern } from '@rollup/pluginutils' +import type { Plugin } from 'vite' +import type { VueJSXPluginOptions } from '@vue/babel-plugin-jsx' +import type { FilterPattern } from '@rollup/pluginutils' declare interface FilterOptions { include?: FilterPattern diff --git a/packages/plugin-vue-jsx/index.js b/packages/plugin-vue-jsx/index.js index a520ae176dd770..56c50fe2ff5e6d 100644 --- a/packages/plugin-vue-jsx/index.js +++ b/packages/plugin-vue-jsx/index.js @@ -48,6 +48,12 @@ function vueJsxPlugin(options = {}) { name: 'vite:vue-jsx', config(config) { + const optionsApi = config.define + ? config.define.__VUE_OPTIONS_API__ + : undefined + const devTools = config.define + ? config.define.__VUE_PROD_DEVTOOLS__ + : undefined return { // only apply esbuild to ts files // since we are handling jsx and tsx now @@ -55,9 +61,8 @@ function vueJsxPlugin(options = {}) { include: /\.ts$/ }, define: { - __VUE_OPTIONS_API__: true, - __VUE_PROD_DEVTOOLS__: false, - ...config.define + __VUE_OPTIONS_API__: optionsApi != null ? optionsApi : true, + __VUE_PROD_DEVTOOLS__: devTools != null ? devTools : false } } }, diff --git a/packages/plugin-vue-jsx/package.json b/packages/plugin-vue-jsx/package.json index 672669aa273fd3..0e85320dc50f19 100644 --- a/packages/plugin-vue-jsx/package.json +++ b/packages/plugin-vue-jsx/package.json @@ -1,6 +1,6 @@ { "name": "@vitejs/plugin-vue-jsx", - "version": "1.3.0-beta.0", + "version": "1.3.3", "license": "MIT", "author": "Evan You", "files": [ @@ -11,7 +11,7 @@ "types": "index.d.ts", "scripts": { "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s --commit-path . --lerna-package plugin-vue-jsx", - "release": "node ../../scripts/release.js --skipBuild" + "release": "ts-node ../../scripts/release.ts --skipBuild" }, "engines": { "node": ">=12.0.0" @@ -26,10 +26,10 @@ }, "homepage": "https://github.com/vitejs/vite/tree/main/packages/plugin-vue-jsx#readme", "dependencies": { - "@babel/core": "^7.15.8", + "@babel/core": "^7.16.5", "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-transform-typescript": "^7.15.8", - "@rollup/pluginutils": "^4.1.1", + "@babel/plugin-transform-typescript": "^7.16.1", + "@rollup/pluginutils": "^4.1.2", "@vue/babel-plugin-jsx": "^1.1.1", "hash-sum": "^2.0.0" } diff --git a/packages/plugin-vue/CHANGELOG.md b/packages/plugin-vue/CHANGELOG.md index 37d3f505935fe8..ed5f600a645818 100644 --- a/packages/plugin-vue/CHANGELOG.md +++ b/packages/plugin-vue/CHANGELOG.md @@ -1,3 +1,72 @@ +## [2.0.1](https://github.com/vitejs/vite/compare/plugin-vue@2.0.0...plugin-vue@2.0.1) (2021-12-14) + + +### Bug Fixes + +* **plugin-vue:** error.length is zero ([#6106](https://github.com/vitejs/vite/issues/6106)) ([5ec49be](https://github.com/vitejs/vite/commit/5ec49befad4d7b5e7cc14f14520ba96d5b6f6d69)) + + + +# [2.0.0](https://github.com/vitejs/vite/compare/plugin-vue@1.10.2...plugin-vue@2.0.0) (2021-12-12) + + +### Bug Fixes + +* allow overwriting `define` options in vue & vue-jsx plugins ([#6072](https://github.com/vitejs/vite/issues/6072)) ([5f3f6b7](https://github.com/vitejs/vite/commit/5f3f6b7b406cb3371084057c74814eb36175e5cf)) +* **plugin-vue:** multiple vue files using the same src file (fix [#5925](https://github.com/vitejs/vite/issues/5925), [#5447](https://github.com/vitejs/vite/issues/5447)) ([#5994](https://github.com/vitejs/vite/issues/5994)) ([df7aec7](https://github.com/vitejs/vite/commit/df7aec7d2a567af1dfbab76e5765aba80dc3cb5c)) + + +### Code Refactoring + +* **plugin-vue:** resolve vue/compiler-sfc from project root ([ce8b0fe](https://github.com/vitejs/vite/commit/ce8b0feae334cc224b3f4d2fdb2bffbb62322acf)) + + +### Features + +* **plugin-vue:** add `reactivityTransform` option. ([955d0fe](https://github.com/vitejs/vite/commit/955d0fecd936b8175d7a7e4355eab855eb4567f8)) + + +### BREAKING CHANGES + +* **plugin-vue:** `refTransform` option has been replaced by +`reactivityTransform` option. Now also requires vue@^3.2.25. +* **plugin-vue:** now requires vue@^3.2.13 as peer dep + + + +## [1.10.2](https://github.com/vitejs/vite/compare/plugin-vue@1.10.1...plugin-vue@1.10.2) (2021-12-07) + + +### Bug Fixes + +* **plugin-vue:** misleading error thrown after refresh or hmr ([#5870](https://github.com/vitejs/vite/issues/5870)) ([5c07cec](https://github.com/vitejs/vite/commit/5c07cec7214948da73fbbc33c7f5c83bf7f6cd2e)) + + + +## [1.10.1](https://github.com/vitejs/vite/compare/plugin-vue@1.10.0...plugin-vue@1.10.1) (2021-11-26) + + +### Bug Fixes + +* **plugin-vue:** fix hmr issue in vuejs/vue-next[#4358](https://github.com/vitejs/vite/issues/4358) ([709e4b0](https://github.com/vitejs/vite/commit/709e4b0428d8cdc8299b22898c76e58d66ca92c9)) + + + +# [1.10.0](https://github.com/vitejs/vite/compare/plugin-vue@1.10.0-beta.1...plugin-vue@1.10.0) (2021-11-22) + + + +# [1.10.0-beta.1](https://github.com/vitejs/vite/compare/plugin-vue@1.10.0-beta.0...plugin-vue@1.10.0-beta.1) (2021-11-19) + + +### Bug Fixes + +* plugin-vue dev scripts error in ssr-vue ([#5607](https://github.com/vitejs/vite/issues/5607)) ([502b8f2](https://github.com/vitejs/vite/commit/502b8f2b31f06d4e524d36b5566197db76f6ccda)) +* **plugin-vue:** template src isn't working when script setup ([#5418](https://github.com/vitejs/vite/issues/5418)) ([518da44](https://github.com/vitejs/vite/commit/518da447e573b6f6ec5e2b1ca837332e0e230c14)) +* **plugin-vue:** use __vccOpts for vue-class-component ([#5374](https://github.com/vitejs/vite/issues/5374)) ([c4f9db2](https://github.com/vitejs/vite/commit/c4f9db2cb375729b06f438298560045d4c488c14)) + + + # [1.10.0-beta.0](https://github.com/vitejs/vite/compare/plugin-vue@1.9.4...plugin-vue@1.10.0-beta.0) (2021-10-28) diff --git a/packages/plugin-vue/README.md b/packages/plugin-vue/README.md index b29039da2cbef0..b8889fbaae35a6 100644 --- a/packages/plugin-vue/README.md +++ b/packages/plugin-vue/README.md @@ -22,7 +22,7 @@ export interface Options { isProduction?: boolean /** - * Transform Vue SFCs into custom elements (requires Vue >= 3.2.0) + * Transform Vue SFCs into custom elements (requires vue@^3.2.0) * - `true` -> all `*.vue` imports are converted into custom elements * - `string | RegExp` -> matched files are converted into custom elements * @@ -31,10 +31,8 @@ export interface Options { customElement?: boolean | string | RegExp | (string | RegExp)[] /** - * Enable Vue ref transform (experimental). - * https://github.com/vuejs/vue-next/tree/master/packages/ref-transform - * - * **requires Vue \>= 3.2.5** + * Enable Vue reactivity transform (experimental, requires vue@^3.2.25). + * https://github.com/vuejs/vue-next/tree/master/packages/reactivity-transform * * - `true`: transform will be enabled for all vue,js(x),ts(x) files except * those inside node_modules @@ -44,7 +42,7 @@ export interface Options { * * @default false */ - refTransform?: boolean | string | RegExp | (string | RegExp)[] + reactivityTransform?: boolean | string | RegExp | (string | RegExp)[] // options to pass on to vue/compiler-sfc script?: Partial @@ -83,7 +81,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..8e76dc4c1ec2fd 100644 --- a/packages/plugin-vue/package.json +++ b/packages/plugin-vue/package.json @@ -1,6 +1,6 @@ { "name": "@vitejs/plugin-vue", - "version": "1.10.0-beta.0", + "version": "2.0.1", "license": "MIT", "author": "Evan You", "files": [ @@ -9,12 +9,14 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "dev": "tsc -p . -w --incremental", + "dev": "rimraf dist && run-p dev-types dev-watch", + "dev-types": "tsc -p . -w --incremental --emitDeclarationOnly", + "dev-watch": "esbuild src/index.ts --watch --bundle --platform=node --target=node12 --external:@vue/compiler-sfc --external:vue/compiler-sfc --external:vite --outfile=dist/index.js", "build": "rimraf dist && run-s build-bundle build-types", "build-bundle": "esbuild src/index.ts --bundle --platform=node --target=node12 --external:@vue/compiler-sfc --external:vue/compiler-sfc --external:vite --outfile=dist/index.js", "build-types": "tsc -p . --emitDeclarationOnly --outDir temp && api-extractor run && rimraf temp", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s --commit-path . --lerna-package plugin-vue", - "release": "node ../../scripts/release.js" + "release": "ts-node ../../scripts/release.ts" }, "engines": { "node": ">=12.0.0" @@ -29,17 +31,17 @@ }, "homepage": "https://github.com/vitejs/vite/tree/main/packages/plugin-vue#readme", "peerDependencies": { - "vite": "^2.5.10" + "vite": "^2.5.10", + "vue": "^3.2.25" }, "devDependencies": { - "@rollup/pluginutils": "^4.1.1", + "@rollup/pluginutils": "^4.1.2", "@types/hash-sum": "^1.0.0", - "debug": "^4.3.2", + "debug": "^4.3.3", "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.26" } } diff --git a/packages/plugin-vue/src/compiler.ts b/packages/plugin-vue/src/compiler.ts index e7ece1dfc073b2..9c70f6a8a64590 100644 --- a/packages/plugin-vue/src/compiler.ts +++ b/packages/plugin-vue/src/compiler.ts @@ -1,25 +1,30 @@ // extend the descriptor so we can store the scopeId on it -declare module '@vue/compiler-sfc' { +declare module 'vue/compiler-sfc' { interface SFCDescriptor { id: string } } -import * as _compiler from '@vue/compiler-sfc' +import type * as _compiler from 'vue/compiler-sfc' -export let compiler: typeof _compiler +export function resolveCompiler(root: string): typeof _compiler { + // resolve from project root first, then fallback to peer dep (if any) + const compiler = + tryRequire('vue/compiler-sfc', root) || tryRequire('vue/compiler-sfc') -try { - // Vue 3.2.13+ ships the SFC compiler directly under the `vue` package - // making it no longer necessary to have @vue/compiler-sfc separately installed. - compiler = require('vue/compiler-sfc') -} catch (e) { - try { - compiler = require('@vue/compiler-sfc') - } catch (e) { + if (!compiler) { throw new Error( - `@vitejs/plugin-vue requires vue (>=3.2.13) or @vue/compiler-sfc ` + + `Failed to resolve vue/compiler-sfc.\n` + + `@vitejs/plugin-vue requires vue (>=3.2.25) ` + `to be present in the dependency tree.` ) } + + return compiler +} + +function tryRequire(id: string, from?: string) { + try { + return from ? require(require.resolve(id, { paths: [from] })) : require(id) + } catch (e) {} } diff --git a/packages/plugin-vue/src/handleHotUpdate.ts b/packages/plugin-vue/src/handleHotUpdate.ts index 88f44a37bd7b2b..2bce3950563367 100644 --- a/packages/plugin-vue/src/handleHotUpdate.ts +++ b/packages/plugin-vue/src/handleHotUpdate.ts @@ -1,13 +1,13 @@ import _debug from 'debug' -import { SFCBlock, SFCDescriptor } from '@vue/compiler-sfc' +import type { SFCBlock, SFCDescriptor } from 'vue/compiler-sfc' import { createDescriptor, getDescriptor, setPrevDescriptor } from './utils/descriptorCache' import { getResolvedScript, setResolvedScript } from './script' -import { ModuleNode, HmrContext } from 'vite' -import { ResolvedOptions } from '.' +import type { ModuleNode, HmrContext } from 'vite' +import type { ResolvedOptions } from '.' const debug = _debug('vite:hmr') @@ -38,10 +38,7 @@ export async function handleHotUpdate( ) const templateModule = modules.find((m) => /type=template/.test(m.url)) - if ( - !isEqualBlock(descriptor.script, prevDescriptor.script) || - !isEqualBlock(descriptor.scriptSetup, prevDescriptor.scriptSetup) - ) { + if (hasScriptChanged(prevDescriptor, descriptor)) { let scriptModule: ModuleNode | undefined if (descriptor.script?.lang && !descriptor.script.src) { const scriptModuleRE = new RegExp( @@ -174,11 +171,32 @@ export function isOnlyTemplateChanged( next: SFCDescriptor ): boolean { return ( - isEqualBlock(prev.script, next.script) && - isEqualBlock(prev.scriptSetup, next.scriptSetup) && + !hasScriptChanged(prev, next) && prev.styles.length === next.styles.length && prev.styles.every((s, i) => isEqualBlock(s, next.styles[i])) && prev.customBlocks.length === next.customBlocks.length && prev.customBlocks.every((s, i) => isEqualBlock(s, next.customBlocks[i])) ) } + +function hasScriptChanged(prev: SFCDescriptor, next: SFCDescriptor): boolean { + if (!isEqualBlock(prev.script, next.script)) { + return true + } + if (!isEqualBlock(prev.scriptSetup, next.scriptSetup)) { + return true + } + + // vue core #3176 + // - const filePath = id.replace(config.root, '') + const filePath = id.replace(normalizePath(config.root), '') addToHTMLProxyCache( config, filePath, @@ -244,6 +285,10 @@ export function buildHtmlPlugin(config: ResolvedConfig): Plugin { everyScriptIsAsync &&= isAsync someScriptsAreAsync ||= isAsync someScriptsAreDefer ||= !isAsync + } else if (url && !isPublicFile) { + config.logger.warn( + ` + + + + + `) } } } diff --git a/packages/vite/src/node/server/middlewares/indexHtml.ts b/packages/vite/src/node/server/middlewares/indexHtml.ts index 43d0075c7afd66..2721502c408e28 100644 --- a/packages/vite/src/node/server/middlewares/indexHtml.ts +++ b/packages/vite/src/node/server/middlewares/indexHtml.ts @@ -1,21 +1,23 @@ import fs from 'fs' import path from 'path' import MagicString from 'magic-string' -import { AttributeNode, NodeTypes } from '@vue/compiler-dom' -import { Connect } from 'types/connect' +import type { AttributeNode } from '@vue/compiler-dom' +import { NodeTypes } from '@vue/compiler-dom' +import type { Connect } from 'types/connect' +import type { IndexHtmlTransformHook } from '../../plugins/html' import { addToHTMLProxyCache, applyHtmlTransforms, assetAttrsConfig, getScriptInfo, - IndexHtmlTransformHook, resolveHtmlTransforms, traverseHtml } from '../../plugins/html' -import { ResolvedConfig, ViteDevServer } from '../..' +import type { ResolvedConfig, ViteDevServer } from '../..' import { send } from '../send' import { CLIENT_PUBLIC_PATH, FS_PREFIX } from '../../constants' -import { cleanUrl, fsPathFromId } from '../../utils' +import { cleanUrl, fsPathFromId, normalizePath, injectQuery } from '../../utils' +import type { ModuleGraph } from '../moduleGraph' export function createDevHtmlTransformFn( server: ViteDevServer @@ -34,9 +36,9 @@ export function createDevHtmlTransformFn( function getHtmlFilename(url: string, server: ViteDevServer) { if (url.startsWith(FS_PREFIX)) { - return fsPathFromId(url) + return decodeURIComponent(fsPathFromId(url)) } else { - return path.join(server.config.root, url.slice(1)) + return decodeURIComponent(path.join(server.config.root, url.slice(1))) } } @@ -46,9 +48,17 @@ const processNodeUrl = ( s: MagicString, config: ResolvedConfig, htmlPath: string, - originalUrl?: string + originalUrl?: string, + moduleGraph?: ModuleGraph ) => { - const url = node.value?.content || '' + let url = node.value?.content || '' + + if (moduleGraph) { + const mod = moduleGraph.urlToModuleMap.get(url) + if (mod && mod.lastHMRTimestamp > 0) { + url = injectQuery(url, `t=${mod.lastHMRTimestamp}`) + } + } if (startsWithSingleSlashRE.test(url)) { // prefix with base s.overwrite( @@ -80,10 +90,7 @@ const devHtmlHook: IndexHtmlTransformHook = async ( html, { path: htmlPath, server, originalUrl } ) => { - // TODO: solve this design issue - // Optional chain expressions can return undefined by design - // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain - const config = server?.config! + const { config, moduleGraph } = server! const base = config.base || '/' const s = new MagicString(html) @@ -103,9 +110,9 @@ const devHtmlHook: IndexHtmlTransformHook = async ( } if (src) { - processNodeUrl(src, s, config, htmlPath, originalUrl) + processNodeUrl(src, s, config, htmlPath, originalUrl, moduleGraph) } 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 || '') @@ -115,12 +122,20 @@ const devHtmlHook: IndexHtmlTransformHook = async ( addToHTMLProxyCache(config, url, scriptModuleIndex, contents) // inline js module. convert to src="proxy" + const modulePath = `${ + config.base + htmlPath.slice(1) + }?html-proxy&index=${scriptModuleIndex}.js` + + // invalidate the module so the newly cached contents will be served + const module = server?.moduleGraph.getModuleById(modulePath) + if (module) { + server?.moduleGraph.invalidateModule(module) + } + s.overwrite( node.loc.start.offset, node.loc.end.offset, - `` + `` ) } } @@ -174,7 +189,9 @@ export function indexHtmlMiddleware( try { let html = fs.readFileSync(filename, 'utf-8') html = await server.transformIndexHtml(url, html, req.originalUrl) - return send(req, res, html, 'html') + return send(req, res, html, 'html', { + headers: server.config.server.headers + }) } catch (e) { return next(e) } diff --git a/packages/vite/src/node/server/middlewares/proxy.ts b/packages/vite/src/node/server/middlewares/proxy.ts index b8c653fdfb4eda..aa1100f13d5229 100644 --- a/packages/vite/src/node/server/middlewares/proxy.ts +++ b/packages/vite/src/node/server/middlewares/proxy.ts @@ -1,11 +1,11 @@ -import * as http from 'http' +import type * as http from 'http' import { createDebugger, isObject } from '../../utils' import httpProxy from 'http-proxy' import { HMR_HEADER } from '../ws' -import { Connect } from 'types/connect' -import { HttpProxy } from 'types/http-proxy' -import chalk from 'chalk' -import { ResolvedConfig } from '../..' +import type { Connect } from 'types/connect' +import type { HttpProxy } from 'types/http-proxy' +import colors from 'picocolors' +import type { ResolvedConfig } from '../..' const debug = createDebugger('vite:proxy') @@ -45,7 +45,7 @@ export function proxyMiddleware( const proxy = httpProxy.createProxyServer(opts) as HttpProxy.Server proxy.on('error', (err) => { - config.logger.error(`${chalk.red(`http proxy error:`)}\n${err.stack}`, { + config.logger.error(`${colors.red(`http proxy error:`)}\n${err.stack}`, { timestamp: true, error: err }) diff --git a/packages/vite/src/node/server/middlewares/spaFallback.ts b/packages/vite/src/node/server/middlewares/spaFallback.ts index 73c0ad8cb2e92f..1aade764d6993a 100644 --- a/packages/vite/src/node/server/middlewares/spaFallback.ts +++ b/packages/vite/src/node/server/middlewares/spaFallback.ts @@ -1,7 +1,7 @@ import fs from 'fs' import history from 'connect-history-api-fallback' import path from 'path' -import { Connect } from 'types/connect' +import type { Connect } from 'types/connect' import { createDebugger } from '../../utils' export function spaFallbackMiddleware( @@ -14,7 +14,9 @@ export function spaFallbackMiddleware( { from: /\/$/, to({ parsedUrl }: any) { - const rewritten = parsedUrl.pathname + 'index.html' + const rewritten = + decodeURIComponent(parsedUrl.pathname) + 'index.html' + if (fs.existsSync(path.join(root, rewritten))) { return rewritten } else { diff --git a/packages/vite/src/node/server/middlewares/static.ts b/packages/vite/src/node/server/middlewares/static.ts index e2a02f27baefab..0b8e2db93255ed 100644 --- a/packages/vite/src/node/server/middlewares/static.ts +++ b/packages/vite/src/node/server/middlewares/static.ts @@ -1,8 +1,10 @@ import path from 'path' -import { ServerResponse } from 'http' -import sirv, { Options } from 'sirv' -import { Connect } from 'types/connect' -import { normalizePath, ViteDevServer } from '../..' +import type { ServerResponse } from 'http' +import type { Options } from 'sirv' +import sirv from 'sirv' +import type { Connect } from 'types/connect' +import type { ViteDevServer } from '../..' +import { normalizePath } from '../..' import { FS_PREFIX } from '../../constants' import { cleanUrl, @@ -14,7 +16,7 @@ import { slash, isFileReadable } from '../../utils' -import match from 'minimatch' +import { isMatch } from 'micromatch' const sirvOptions: Options = { dev: true, @@ -149,7 +151,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/middlewares/time.ts b/packages/vite/src/node/server/middlewares/time.ts index b551b846071631..64124ab58c70c7 100644 --- a/packages/vite/src/node/server/middlewares/time.ts +++ b/packages/vite/src/node/server/middlewares/time.ts @@ -1,5 +1,5 @@ import { performance } from 'perf_hooks' -import { Connect } from 'types/connect' +import type { Connect } from 'types/connect' import { createDebugger, prettifyUrl, timeFrom } from '../../utils' const logTime = createDebugger('vite:time') diff --git a/packages/vite/src/node/server/middlewares/transform.ts b/packages/vite/src/node/server/middlewares/transform.ts index a68308f391e363..73a2efc4b47582 100644 --- a/packages/vite/src/node/server/middlewares/transform.ts +++ b/packages/vite/src/node/server/middlewares/transform.ts @@ -1,6 +1,6 @@ import path from 'path' -import { ViteDevServer } from '..' -import { Connect } from 'types/connect' +import type { ViteDevServer } from '..' +import type { Connect } from 'types/connect' import { cleanUrl, createDebugger, @@ -16,7 +16,7 @@ import { import { send } from '../send' import { transformRequest } from '../transformRequest' import { isHTMLProxy } from '../../plugins/html' -import chalk from 'chalk' +import colors from 'picocolors' import { CLIENT_PUBLIC_PATH, DEP_VERSION_RE, @@ -74,23 +74,29 @@ export function transformMiddleware( !req.url?.startsWith(CLIENT_PUBLIC_PATH) && !req.url?.includes('vite/dist/client') ) { - // missing dep pending reload, hold request until reload happens - server._pendingReload.then(() => - // If the refresh has not happened after timeout, Vite considers - // something unexpected has happened. In this case, Vite - // returns an empty response that will error. - setTimeout(() => { - // Don't do anything if response has already been sent - if (res.writableEnded) return + try { + // missing dep pending reload, hold request until reload happens + await Promise.race([ + server._pendingReload, + // If the refresh has not happened after timeout, Vite considers + // something unexpected has happened. In this case, Vite + // returns an empty response that will error. + new Promise((_, reject) => + setTimeout(reject, NEW_DEPENDENCY_BUILD_TIMEOUT) + ) + ]) + } catch { + // Don't do anything if response has already been sent + if (!res.writableEnded) { // status code request timeout res.statusCode = 408 res.end( `

[vite] Something unexpected happened while optimizing "${req.url}"

` + `

The current page should have reloaded by now

` ) - }, NEW_DEPENDENCY_BUILD_TIMEOUT) - ) - return + } + return + } } let url = decodeURI(removeTimestampQuery(req.url!)).replace( @@ -105,10 +111,12 @@ export function transformMiddleware( // since we generate source map references, handle those requests here if (isSourceMap) { const originalUrl = url.replace(/\.map($|\?)/, '$1') - const map = (await moduleGraph.getModuleByUrl(originalUrl)) + const map = (await moduleGraph.getModuleByUrl(originalUrl, false)) ?.transformResult?.map if (map) { - return send(req, res, JSON.stringify(map), 'json') + return send(req, res, JSON.stringify(map), 'json', { + headers: server.config.server.headers + }) } else { return next() } @@ -122,9 +130,9 @@ export function transformMiddleware( // warn explicit public paths if (url.startsWith(publicPath)) { logger.warn( - chalk.yellow( + colors.yellow( `files in the public directory are served at the root path.\n` + - `Instead of ${chalk.cyan(url)}, use ${chalk.cyan( + `Instead of ${colors.cyan(url)}, use ${colors.cyan( url.replace(publicPath, '/') )}.` ) @@ -158,8 +166,8 @@ export function transformMiddleware( const ifNoneMatch = req.headers['if-none-match'] if ( ifNoneMatch && - (await moduleGraph.getModuleByUrl(url))?.transformResult?.etag === - ifNoneMatch + (await moduleGraph.getModuleByUrl(url, false))?.transformResult + ?.etag === ifNoneMatch ) { isDebug && debugCache(`[304] ${prettifyUrl(url, root)}`) res.statusCode = 304 @@ -175,16 +183,13 @@ export function transformMiddleware( const isDep = DEP_VERSION_RE.test(url) || (cacheDirPrefix && url.startsWith(cacheDirPrefix)) - return send( - req, - res, - result.code, - type, - result.etag, + return send(req, res, result.code, type, { + etag: result.etag, // allow browser to cache npm deps! - isDep ? 'max-age=31536000,immutable' : 'no-cache', - result.map - ) + cacheControl: isDep ? 'max-age=31536000,immutable' : 'no-cache', + headers: server.config.server.headers, + map: result.map + }) } } } catch (e) { diff --git a/packages/vite/src/node/server/moduleGraph.ts b/packages/vite/src/node/server/moduleGraph.ts index d29c31aae6bcc0..f09e741f430983 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 type { ModuleInfo, PartialResolvedId } from 'rollup' +import { parse as parseUrl } from 'url' import { isDirectCSSRequest } from '../plugins/css' import { cleanUrl, @@ -7,9 +9,7 @@ import { removeTimestampQuery } from '../utils' import { FS_PREFIX } from '../constants' -import { TransformResult } from './transformRequest' -import { PluginContainer } from './pluginContainer' -import { parse as parseUrl } from 'url' +import type { TransformResult } from './transformRequest' 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,20 +47,32 @@ 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 - } - async getModuleByUrl(rawUrl: string): Promise { - const [url] = await this.resolveUrl(rawUrl) + constructor( + private resolveId: ( + url: string, + ssr: boolean + ) => Promise + ) {} + + async getModuleByUrl( + rawUrl: string, + ssr?: boolean + ): Promise { + const [url] = await this.resolveUrl(rawUrl, ssr) return this.urlToModuleMap.get(url) } @@ -81,6 +95,7 @@ export class ModuleGraph { } invalidateModule(mod: ModuleNode, seen: Set = new Set()): void { + mod.info = undefined mod.transformResult = null mod.ssrTransformResult = null invalidateSSRModule(mod, seen) @@ -102,7 +117,8 @@ export class ModuleGraph { mod: ModuleNode, importedModules: Set, acceptedModules: Set, - isSelfAccepting: boolean + isSelfAccepting: boolean, + ssr?: boolean ): Promise | undefined> { mod.isSelfAccepting = isSelfAccepting const prevImports = mod.importedModules @@ -112,7 +128,7 @@ export class ModuleGraph { for (const imported of importedModules) { const dep = typeof imported === 'string' - ? await this.ensureEntryFromUrl(imported) + ? await this.ensureEntryFromUrl(imported, ssr) : imported dep.importers.add(mod) nextImports.add(dep) @@ -132,18 +148,19 @@ export class ModuleGraph { for (const accepted of acceptedModules) { const dep = typeof accepted === 'string' - ? await this.ensureEntryFromUrl(accepted) + ? await this.ensureEntryFromUrl(accepted, ssr) : accepted deps.add(dep) } return noLongerImported } - async ensureEntryFromUrl(rawUrl: string): Promise { - const [url, resolvedId] = await this.resolveUrl(rawUrl) + async ensureEntryFromUrl(rawUrl: string, ssr?: boolean): Promise { + const [url, resolvedId, meta] = await this.resolveUrl(rawUrl, ssr) 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 +204,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, ssr?: boolean): Promise { url = removeImportQuery(removeTimestampQuery(url)) - const resolvedId = (await this.container.resolveId(url))?.id || url + const resolved = await this.resolveId(url, !!ssr) + 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/openBrowser.ts b/packages/vite/src/node/server/openBrowser.ts index 658e7ab3e859eb..5eeb7554e606bb 100644 --- a/packages/vite/src/node/server/openBrowser.ts +++ b/packages/vite/src/node/server/openBrowser.ts @@ -10,10 +10,10 @@ import path from 'path' import open from 'open' -import execa from 'execa' -import chalk from 'chalk' +import spawn from 'cross-spawn' +import colors from 'picocolors' import { execSync } from 'child_process' -import { Logger } from '../logger' +import type { Logger } from '../logger' // https://github.com/sindresorhus/open#app const OSX_CHROME = 'google chrome' @@ -40,14 +40,14 @@ export function openBrowser( function executeNodeScript(scriptPath: string, url: string, logger: Logger) { const extraArgs = process.argv.slice(2) - const child = execa('node', [scriptPath, ...extraArgs, url], { + const child = spawn(process.execPath, [scriptPath, ...extraArgs, url], { stdio: 'inherit' }) child.on('close', (code) => { if (code !== 0) { logger.error( - chalk.red( - `\nThe script specified as BROWSER environment variable failed.\n\n${chalk.cyan( + colors.red( + `\nThe script specified as BROWSER environment variable failed.\n\n${colors.cyan( scriptPath )} exited with code ${code}.` ), diff --git a/packages/vite/src/node/server/pluginContainer.ts b/packages/vite/src/node/server/pluginContainer.ts index 33722132c32f24..b408f849d74c49 100644 --- a/packages/vite/src/node/server/pluginContainer.ts +++ b/packages/vite/src/node/server/pluginContainer.ts @@ -31,8 +31,8 @@ SOFTWARE. import fs from 'fs' import { resolve, join } from 'path' -import { Plugin } from '../plugin' -import { +import type { Plugin } from '../plugin' +import type { InputOptions, MinimalPluginContext, OutputOptions, @@ -49,12 +49,10 @@ import { TransformResult } from 'rollup' import * as acorn from 'acorn' -import acornClassFields from 'acorn-class-fields' -import acornStaticClassFeatures from 'acorn-static-class-features' -import { RawSourceMap } from '@ampproject/remapping/dist/types/types' +import type { RawSourceMap } from '@ampproject/remapping/dist/types/types' import { combineSourcemaps } from '../utils' import MagicString from 'magic-string' -import { FSWatcher } from 'chokidar' +import type { FSWatcher } from 'chokidar' import { createDebugger, ensureWatchedFile, @@ -67,10 +65,12 @@ import { timeFrom } from '../utils' import { FS_PREFIX } from '../constants' -import chalk from 'chalk' -import { ResolvedConfig } from '../config' +import colors from 'picocolors' +import type { ResolvedConfig } from '../config' import { buildErrorMessage } from './middlewares/error' +import type { ModuleGraph } from './moduleGraph' import { performance } from 'perf_hooks' +import type * as postcss from 'postcss' export interface PluginContainerOptions { cwd?: string @@ -81,6 +81,7 @@ export interface PluginContainerOptions { export interface PluginContainer { options: InputOptions + getModuleInfo(id: string): ModuleInfo | null buildStart(options: InputOptions): Promise resolveId( id: string, @@ -119,15 +120,14 @@ type PluginContext = Omit< | 'isExternal' | 'moduleIds' | 'resolveId' + | 'load' > -export let parser = acorn.Parser.extend( - acornClassFields, - acornStaticClassFeatures -) +export let parser = acorn.Parser export async function createPluginContainer( { plugins, logger, root, build: { rollupOptions } }: ResolvedConfig, + moduleGraph?: ModuleGraph, watcher?: FSWatcher ): Promise { const isDebug = process.env.DEBUG @@ -143,7 +143,6 @@ export async function createPluginContainer( // --------------------------------------------------------------------------- - const MODULES = new Map() const watchFiles = new Set() // get rollup version @@ -158,15 +157,54 @@ export async function createPluginContainer( function warnIncompatibleMethod(method: string, plugin: string) { logger.warn( - chalk.cyan(`[plugin:${plugin}] `) + - chalk.yellow( - `context method ${chalk.bold( + colors.cyan(`[plugin:${plugin}] `) + + colors.yellow( + `context method ${colors.bold( `${method}()` )} is not supported in serve mode. This plugin is likely not vite-compatible.` ) ) } + // 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 +246,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) { @@ -254,7 +286,7 @@ export async function createPluginContainer( const err = formatError(e, position, this) const msg = buildErrorMessage( err, - [chalk.yellow(`warning: ${err.message}`)], + [colors.yellow(`warning: ${err.message}`)], false ) logger.warn(msg, { @@ -278,7 +310,12 @@ export async function createPluginContainer( position: number | { column: number; line: number } | undefined, ctx: Context ) { - const err = (typeof e === 'string' ? new Error(e) : e) as RollupError + const err = ( + typeof e === 'string' ? new Error(e) : e + ) as postcss.CssSyntaxError & RollupError + if (err.file && err.name === 'CssSyntaxError') { + err.id = normalizePath(err.file) + } if (ctx._activePlugin) err.plugin = ctx._activePlugin.name if (ctx._activeId && !err.id) err.id = ctx._activeId if (ctx._activeCode) { @@ -296,7 +333,7 @@ export async function createPluginContainer( errLocation = numberToPos(ctx._activeCode, pos) } catch (err2) { logger.error( - chalk.red( + colors.red( `Error in error handler:\n${err2.stack || err2.message}\n` ), // print extra newline to separate the two errors @@ -327,7 +364,7 @@ export async function createPluginContainer( line: (err as any).line, column: (err as any).column } - err.frame = err.frame || generateCodeFrame(ctx._activeCode, err.loc) + err.frame = err.frame || generateCodeFrame(err.id!, err.loc) } } return err @@ -403,11 +440,7 @@ export async function createPluginContainer( (await plugin.options.call(minimalContext, options)) || options } if (options.acornInjectPlugins) { - parser = acorn.Parser.extend( - ...[acornClassFields, acornStaticClassFeatures].concat( - options.acornInjectPlugins - ) - ) + parser = acorn.Parser.extend(options.acornInjectPlugins as any) } return { acorn, @@ -416,6 +449,8 @@ export async function createPluginContainer( } })(), + getModuleInfo, + async buildStart() { await Promise.all( plugins.map((plugin) => { @@ -478,7 +513,9 @@ export async function createPluginContainer( if (!seenResolves[key]) { seenResolves[key] = true debugResolve( - `${timeFrom(resolveStart)} ${chalk.cyan(rawId)} -> ${chalk.dim(id)}` + `${timeFrom(resolveStart)} ${colors.cyan(rawId)} -> ${colors.dim( + id + )}` ) } } @@ -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/send.ts b/packages/vite/src/node/server/send.ts index 777e91abf9438c..43f0fe1660b2eb 100644 --- a/packages/vite/src/node/server/send.ts +++ b/packages/vite/src/node/server/send.ts @@ -1,6 +1,6 @@ -import { IncomingMessage, ServerResponse } from 'http' +import type { IncomingMessage, OutgoingHttpHeaders, ServerResponse } from 'http' import getEtag from 'etag' -import { SourceMap } from 'rollup' +import type { SourceMap } from 'rollup' const isDebug = process.env.DEBUG @@ -11,15 +11,27 @@ const alias: Record = { json: 'application/json' } +export interface SendOptions { + etag?: string + cacheControl?: string + headers?: OutgoingHttpHeaders + map?: SourceMap | null +} + export function send( req: IncomingMessage, res: ServerResponse, content: string | Buffer, type: string, - etag = getEtag(content, { weak: true }), - cacheControl = 'no-cache', - map?: SourceMap | null + options: SendOptions ): void { + const { + etag = getEtag(content, { weak: true }), + cacheControl = 'no-cache', + headers, + map + } = options + if (res.writableEnded) { return } @@ -33,6 +45,12 @@ export function send( res.setHeader('Cache-Control', cacheControl) res.setHeader('Etag', etag) + if (headers) { + for (const name in headers) { + res.setHeader(name, headers[name]!) + } + } + // inject source map reference if (map && map.mappings) { if (isDebug) { diff --git a/packages/vite/src/node/server/sourcemap.ts b/packages/vite/src/node/server/sourcemap.ts index 515b5a605a3157..c6fc3b1f2579bf 100644 --- a/packages/vite/src/node/server/sourcemap.ts +++ b/packages/vite/src/node/server/sourcemap.ts @@ -1,6 +1,6 @@ import path from 'path' import { promises as fs } from 'fs' -import { Logger } from '../logger' +import type { Logger } from '../logger' import { createDebugger } from '../utils' const isDebug = !!process.env.DEBUG @@ -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..2433470cbf4b33 100644 --- a/packages/vite/src/node/server/transformRequest.ts +++ b/packages/vite/src/node/server/transformRequest.ts @@ -2,9 +2,9 @@ import { promises as fs } from 'fs' import path from 'path' import getEtag from 'etag' import * as convertSourceMap from 'convert-source-map' -import { SourceDescription, SourceMap } from 'rollup' -import { ViteDevServer } from '..' -import chalk from 'chalk' +import type { SourceDescription, SourceMap } from 'rollup' +import type { ViteDevServer } from '..' +import colors from 'picocolors' import { createDebugger, cleanUrl, @@ -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( @@ -70,7 +65,7 @@ async function doTransform( const prettyUrl = isDebug ? prettifyUrl(url, root) : '' const ssr = !!options.ssr - const module = await server.moduleGraph.getModuleByUrl(url) + const module = await server.moduleGraph.getModuleByUrl(url, ssr) // check if we have a fresh cache const cached = @@ -87,7 +82,8 @@ async function doTransform( } // resolve - const id = (await pluginContainer.resolveId(url))?.id || url + const id = + (await pluginContainer.resolveId(url, undefined, { ssr }))?.id || url const file = cleanUrl(id) let code: string | null = null @@ -152,7 +148,7 @@ async function doTransform( } // ensure module in graph after successful load - const mod = await moduleGraph.ensureEntryFromUrl(url) + const mod = await moduleGraph.ensureEntryFromUrl(url, ssr) ensureWatchedFile(watcher, mod.file, root) // transform @@ -168,7 +164,7 @@ async function doTransform( // no transform applied, keep code as-is isDebug && debugTransform( - timeFrom(transformStart) + chalk.dim(` [skipped] ${prettyUrl}`) + timeFrom(transformStart) + colors.dim(` [skipped] ${prettyUrl}`) ) } else { isDebug && debugTransform(`${timeFrom(transformStart)} ${prettyUrl}`) diff --git a/packages/vite/src/node/server/ws.ts b/packages/vite/src/node/server/ws.ts index 82d9cb01e09642..498148933740ef 100644 --- a/packages/vite/src/node/server/ws.ts +++ b/packages/vite/src/node/server/ws.ts @@ -1,15 +1,15 @@ -import chalk from 'chalk' -import { Server, STATUS_CODES } from 'http' -import { - createServer as createHttpsServer, - ServerOptions as HttpsServerOptions -} from 'https' -import WebSocket from 'ws' -import { WebSocket as WebSocketTypes } from 'types/ws' -import { ErrorPayload, HMRPayload } from 'types/hmrPayload' -import { ResolvedConfig } from '..' +import colors from 'picocolors' +import type { Server } from 'http' +import { STATUS_CODES } from 'http' +import type { ServerOptions as HttpsServerOptions } from 'https' +import { createServer as createHttpsServer } from 'https' +import type { ServerOptions } from 'ws' +import { WebSocketServer as WebSocket } from 'ws' +import type { WebSocket as WebSocketTypes } from 'types/ws' +import type { ErrorPayload, HMRPayload } from 'types/hmrPayload' +import type { ResolvedConfig } from '..' import { isObject } from '../utils' -import { Socket } from 'net' +import type { Socket } from 'net' export const HMR_HEADER = 'vite-hmr' export interface WebSocketServer { @@ -24,14 +24,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 +40,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 +68,7 @@ export function createWebSocketServer( } // vite dev server in middleware mode - wss = new WebSocket.Server(websocketServerOptions) + wss = new WebSocket(websocketServerOptions) } wss.on('connection', (socket) => { @@ -82,7 +82,7 @@ export function createWebSocketServer( wss.on('error', (e: Error & { code: string }) => { if (e.code !== 'EADDRINUSE') { config.logger.error( - chalk.red(`WebSocket server error:\n${e.stack || e.message}`), + colors.red(`WebSocket server error:\n${e.stack || e.message}`), { error: e } ) } @@ -105,7 +105,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) } }) @@ -113,6 +114,9 @@ export function createWebSocketServer( close() { return new Promise((resolve, reject) => { + wss.clients.forEach((client) => { + client.terminate() + }) wss.close((err) => { if (err) { reject(err) diff --git a/packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts b/packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts index 111b31b890c89e..30aca4dda5a266 100644 --- a/packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts +++ b/packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts @@ -188,6 +188,48 @@ test('do not rewrite when variable is in scope', async () => { expect(result.deps).toEqual(['vue']) }) +// #5472 +test('do not rewrite when variable is in scope with object destructuring', async () => { + const result = await ssrTransform( + `import { fn } from 'vue';function A(){ let {fn, test} = {fn: 'foo', test: 'bar'}; return { fn }; }`, + null, + null + ) + expect(result.code).toMatchInlineSnapshot(` + "const __vite_ssr_import_0__ = await __vite_ssr_import__(\\"vue\\"); + function A(){ let {fn, test} = {fn: 'foo', test: 'bar'}; return { fn }; }" + `) + expect(result.deps).toEqual(['vue']) +}) + +// #5472 +test('do not rewrite when variable is in scope with array destructuring', async () => { + const result = await ssrTransform( + `import { fn } from 'vue';function A(){ let [fn, test] = ['foo', 'bar']; return { fn }; }`, + null, + null + ) + expect(result.code).toMatchInlineSnapshot(` + "const __vite_ssr_import_0__ = await __vite_ssr_import__(\\"vue\\"); + function A(){ let [fn, test] = ['foo', 'bar']; return { fn }; }" + `) + expect(result.deps).toEqual(['vue']) +}) + +// #5727 +test('rewrite variable in string interpolation in function nested arguments', async () => { + const result = await ssrTransform( + `import { fn } from 'vue';function A({foo = \`test\${fn}\`} = {}){ return {}; }`, + null, + null + ) + expect(result.code).toMatchInlineSnapshot(` + "const __vite_ssr_import_0__ = await __vite_ssr_import__(\\"vue\\"); + function A({foo = \`test\${__vite_ssr_import_0__.fn}\`} = {}){ return {}; }" + `) + expect(result.deps).toEqual(['vue']) +}) + test('do not rewrite when function declaration is in scope', async () => { const result = await ssrTransform( `import { fn } from 'vue';function A(){ function fn() {}; return { fn }; }`, @@ -333,3 +375,218 @@ test('overwrite bindings', async () => { " `) }) + +test('Empty array pattern', async () => { + expect( + (await ssrTransform(`const [, LHS, RHS] = inMatch;`, null, null)).code + ).toMatchInlineSnapshot(`"const [, LHS, RHS] = inMatch;"`) +}) + +test('function argument destructure', async () => { + expect( + ( + await ssrTransform( + ` +import { foo, bar } from 'foo' +const a = ({ _ = foo() }) => {} +function b({ _ = bar() }) {} +function c({ _ = bar() + foo() }) {} +`, + null, + null + ) + ).code + ).toMatchInlineSnapshot(` + " + const __vite_ssr_import_0__ = await __vite_ssr_import__(\\"foo\\"); + + const a = ({ _ = __vite_ssr_import_0__.foo() }) => {} + function b({ _ = __vite_ssr_import_0__.bar() }) {} + function c({ _ = __vite_ssr_import_0__.bar() + __vite_ssr_import_0__.foo() }) {} + " + `) +}) + +test('object destructure alias', async () => { + expect( + ( + await ssrTransform( + ` +import { n } from 'foo' +const a = () => { + const { type: n = 'bar' } = {} + console.log(n) +} +`, + null, + null + ) + ).code + ).toMatchInlineSnapshot(` + " + const __vite_ssr_import_0__ = await __vite_ssr_import__(\\"foo\\"); + + const a = () => { + const { type: n = 'bar' } = {} + console.log(n) + } + " + `) +}) + +test('nested object destructure alias', async () => { + expect( + ( + await ssrTransform( + ` +import { remove, add, get, set, rest, objRest } from 'vue' + +function a() { + const { + o: { remove }, + a: { b: { c: [ add ] }}, + d: [{ get }, set, ...rest], + ...objRest + } = foo + + remove() + add() + get() + set() + rest() + objRest() +} + +remove() +add() +get() +set() +rest() +objRest() +`, + null, + null + ) + ).code + ).toMatchInlineSnapshot(` + " + const __vite_ssr_import_0__ = await __vite_ssr_import__(\\"vue\\"); + + + function a() { + const { + o: { remove }, + a: { b: { c: [ add ] }}, + d: [{ get }, set, ...rest], + ...objRest + } = foo + + remove() + add() + get() + set() + rest() + objRest() + } + + __vite_ssr_import_0__.remove() + __vite_ssr_import_0__.add() + __vite_ssr_import_0__.get() + __vite_ssr_import_0__.set() + __vite_ssr_import_0__.rest() + __vite_ssr_import_0__.objRest() + " + `) +}) + +test('class props', async () => { + expect( + ( + await ssrTransform( + ` +import { remove, add } from 'vue' + +class A { + remove = 1 + add = null +} +`, + null, + null + ) + ).code + ).toMatchInlineSnapshot(` + " + const __vite_ssr_import_0__ = await __vite_ssr_import__(\\"vue\\"); + + + const add = __vite_ssr_import_0__.add; + const remove = __vite_ssr_import_0__.remove; + class A { + remove = 1 + add = null + } + " + `) +}) + +test('declare scope', async () => { + expect( + ( + await ssrTransform( + ` +import { aaa, bbb, ccc, ddd } from 'vue' + +function foobar() { + ddd() + + const aaa = () => { + bbb(ccc) + ddd() + } + const bbb = () => { + console.log('hi') + } + const ccc = 1 + function ddd() {} + + aaa() + bbb() + ccc() +} + +aaa() +bbb() +`, + null, + null + ) + ).code + ).toMatchInlineSnapshot(` + " + const __vite_ssr_import_0__ = await __vite_ssr_import__(\\"vue\\"); + + + function foobar() { + ddd() + + const aaa = () => { + bbb(ccc) + ddd() + } + const bbb = () => { + console.log('hi') + } + const ccc = 1 + function ddd() {} + + aaa() + bbb() + ccc() + } + + __vite_ssr_import_0__.aaa() + __vite_ssr_import_0__.bbb() + " + `) +}) diff --git a/packages/vite/src/node/ssr/ssrExternal.ts b/packages/vite/src/node/ssr/ssrExternal.ts index 8410692ed7b38a..0e2eade85c21f1 100644 --- a/packages/vite/src/node/ssr/ssrExternal.ts +++ b/packages/vite/src/node/ssr/ssrExternal.ts @@ -1,15 +1,15 @@ import fs from 'fs' import path from 'path' -import { tryNodeResolve, InternalResolveOptions } from '../plugins/resolve' +import type { InternalResolveOptions } from '../plugins/resolve' +import { tryNodeResolve } from '../plugins/resolve' import { createDebugger, isDefined, lookupFile, normalizePath, - resolveFrom, - unique + resolveFrom } from '../utils' -import { ResolvedConfig } from '..' +import type { Logger, ResolvedConfig } from '..' import { createFilter } from '@rollup/pluginutils' const debug = createDebugger('vite:ssr-external') @@ -20,49 +20,94 @@ 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 pkgContent = lookupFile(root, ['package.json']) - if (!pkgContent) { - return [] - } - const pkg = JSON.parse(pkgContent) + 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, + config.logger + ) + const importedDeps = knownImports.map(getNpmPackageName).filter(isDefined) - const deps = unique([ - ...importedDeps, - ...Object.keys(pkg.devDependencies || {}), - ...Object.keys(pkg.dependencies || {}) - ]) + for (const dep of importedDeps) { + // 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 +} + +const CJS_CONTENT_RE = + /\bmodule\.exports\b|\bexports[.\[]|\brequire\s*\(|\bObject\.(defineProperty|defineProperties|assign)\s*\(\s*exports\b/ + +// 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, + logger: Logger +) { + const rootPkgContent = lookupFile(root, ['package.json']) + if (!rootPkgContent) { + return + } + + const rootPkg = JSON.parse(rootPkgContent) + const deps = { + ...rootPkg.devDependencies, + ...rootPkg.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 +115,66 @@ 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 + } + // 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)) { + const pkgPath = resolveFrom(`${id}/package.json`, root) + const pkgContent = fs.readFileSync(pkgPath, 'utf-8') + + if (!pkgContent) { continue } - if (pkg.type === 'module' || entry.endsWith('.mjs')) { + const pkg = JSON.parse(pkgContent) + + if (pkg.type === 'module' || esmEntry.endsWith('.mjs')) { ssrExternals.add(id) continue } // check if the entry is cjs - const content = fs.readFileSync(entry, 'utf-8') - if (/\bmodule\.exports\b|\bexports[.\[]|\brequire\s*\(/.test(content)) { + const content = fs.readFileSync(esmEntry, 'utf-8') + if (CJS_CONTENT_RE.test(content)) { ssrExternals.add(id) + continue } - } - } - for (const id of depsToTrace) { - const depRoot = path.dirname( - resolveFrom(`${id}/package.json`, root, !!config.resolve.preserveSymlinks) - ) - resolveSSRExternal( - { - ...config, - root: depRoot - }, - knownImports, - ssrExternals, - seen - ) + logger.warn( + `${id} doesn't appear to be written in CJS, but also doesn't appear to be a valid ES module (i.e. it doesn't have "type": "module" or an .mjs extension for the entry point). Please contact the package author to fix.` + ) + } } - 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, logger) } - return externals.filter((id) => id !== 'vite') } export function shouldExternalizeForSSR( diff --git a/packages/vite/src/node/ssr/ssrManifestPlugin.ts b/packages/vite/src/node/ssr/ssrManifestPlugin.ts index 76b2a1f561962c..061cd2f419c6ba 100644 --- a/packages/vite/src/node/ssr/ssrManifestPlugin.ts +++ b/packages/vite/src/node/ssr/ssrManifestPlugin.ts @@ -1,7 +1,7 @@ import { relative } from 'path' import { normalizePath } from '@rollup/pluginutils' -import { ResolvedConfig } from '..' -import { Plugin } from '../plugin' +import type { ResolvedConfig } from '..' +import type { Plugin } from '../plugin' import { chunkToEmittedCssFileMap } from '../plugins/css' import { chunkToEmittedAssetsMap } from '../plugins/asset' diff --git a/packages/vite/src/node/ssr/ssrModuleLoader.ts b/packages/vite/src/node/ssr/ssrModuleLoader.ts index 16c5d0df01d992..a5e3e92c841671 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 type { ViteDevServer } from '../server' import { dynamicImport, - cleanUrl, isBuiltin, - resolveFrom, unwrapId, usingDynamicImport } from '../utils' @@ -19,9 +16,12 @@ import { ssrDynamicImportKey } from './ssrTransform' import { transformRequest } from '../server/transformRequest' +import type { InternalResolveOptions } from '../plugins/resolve' +import { tryNodeResolve } from '../plugins/resolve' +import { hookNodeResolve } from '../plugins/ssrRequireHook' interface SSRContext { - global: NodeJS.Global + global: typeof globalThis } type SSRModule = Record @@ -65,7 +65,7 @@ async function instantiateModule( urlStack: string[] = [] ): Promise { const { moduleGraph } = server - const mod = await moduleGraph.ensureEntryFromUrl(url) + const mod = await moduleGraph.ensureEntryFromUrl(url, true) if (mod.ssrModule) { return mod.ssrModule @@ -96,13 +96,33 @@ async function instantiateModule( urlStack = urlStack.concat(url) const isCircular = (url: string) => urlStack.includes(url) + const { + isProduction, + resolve: { dedupe, preserveSymlinks }, + root + } = server.config + + // The `extensions` and `mainFields` options are used to ensure that + // CommonJS modules are preferred. We want to avoid ESM->ESM imports + // whenever possible, because `hookNodeResolve` can't intercept them. + const resolveOptions: InternalResolveOptions = { + dedupe, + extensions: ['.js', '.cjs', '.json'], + isBuild: true, + isProduction, + isRequire: true, + mainFields: ['main'], + preserveSymlinks, + 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)) { @@ -110,12 +130,14 @@ async function instantiateModule( if (pendingDeps.length === 1) { pendingImports.set(url, pendingDeps) } - await ssrLoadModule(dep, server, context, urlStack) + const mod = await ssrLoadModule(dep, server, context, urlStack) if (pendingDeps.length === 1) { pendingImports.delete(url) } else { pendingDeps.splice(pendingDeps.indexOf(dep), 1) } + // return local module to avoid race condition #5470 + return mod } return moduleGraph.urlToModuleMap.get(dep)?.ssrModule } @@ -183,56 +205,93 @@ 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, + options = resolveOptions + ) => { + const resolved = tryNodeResolve(id, importer, options, 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) => { + // Fix #5709, use require to resolve files with the '.node' file extension. + // See detail, https://nodejs.org/api/addons.html#addons_loading_addons_using_require + if (id[0] === '.' || isBuiltin(id) || id.endsWith('.node')) { + return nodeResolve(id, parent, isMain, options) + } + if (parent) { + return viteResolve(id, parent.id) + } + // Importing a CJS module from an ESM module. In this case, the import + // specifier is already an absolute path, so this is a no-op. + // Options like `resolve.dedupe` and `mode` are not respected. + return 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, + // Non-external modules can import ESM-only modules, but only outside + // of test runs, because we use Node `require` in Jest to avoid segfault. + typeof jest === 'undefined' + ? { ...resolveOptions, tryEsmOnly: true } + : resolveOptions + ) if (usingDynamicImport) { url = pathToFileURL(url).toString() } } - const mod = await dynamicImport(url) - return proxyESM(id, mod) + + try { + const mod = await dynamicImport(url) + return proxyESM(mod) + } finally { + unhookNodeResolve() + } } // rollup-style default import interop for cjs -function proxyESM(id: string, mod: any) { - const defaultExport = mod.__esModule - ? mod.default - : mod.default - ? mod.default - : mod +function proxyESM(mod: any) { + // This is the only sensible option when the exports object is a primitve + if (isPrimitive(mod)) return { default: mod } + + let defaultExport = 'default' in mod ? mod.default : mod + + if (!isPrimitive(defaultExport) && '__esModule' in defaultExport) { + mod = defaultExport + if ('default' in defaultExport) { + defaultExport = defaultExport.default + } + } + 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 +function isPrimitive(value: any) { + return !value || (typeof value !== 'object' && typeof value !== 'function') } diff --git a/packages/vite/src/node/ssr/ssrStacktrace.ts b/packages/vite/src/node/ssr/ssrStacktrace.ts index 23fd7d018f0185..d70381062d062e 100644 --- a/packages/vite/src/node/ssr/ssrStacktrace.ts +++ b/packages/vite/src/node/ssr/ssrStacktrace.ts @@ -1,5 +1,6 @@ -import { SourceMapConsumer, RawSourceMap } from 'source-map' -import { ModuleGraph } from '../server/moduleGraph' +import type { RawSourceMap } from 'source-map' +import { SourceMapConsumer } from 'source-map' +import type { ModuleGraph } from '../server/moduleGraph' let offset: number try { @@ -31,6 +32,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/ssr/ssrTransform.ts b/packages/vite/src/node/ssr/ssrTransform.ts index 77754abc52f192..c33e9ddf8f9b7c 100644 --- a/packages/vite/src/node/ssr/ssrTransform.ts +++ b/packages/vite/src/node/ssr/ssrTransform.ts @@ -1,17 +1,18 @@ import MagicString from 'magic-string' -import { SourceMap } from 'rollup' -import { TransformResult } from '../server/transformRequest' +import type { SourceMap } from 'rollup' +import type { TransformResult } from '../server/transformRequest' import { parser } from '../server/pluginContainer' -import { +import type { Identifier, Node as _Node, Property, - Function as FunctionNode + Function as FunctionNode, + Pattern } from 'estree' import { extract_names as extractNames } from 'periscopic' import { walk as eswalk } from 'estree-walker' import { combineSourcemaps } from '../utils' -import { RawSourceMap } from '@ampproject/remapping/dist/types/types' +import type { RawSourceMap } from '@ampproject/remapping/dist/types/types' type Node = _Node & { start: number @@ -179,6 +180,7 @@ export async function ssrTransform( // 3. convert references to import bindings & import.meta references walk(ast, { onIdentifier(id, parent, parentStack) { + const grandparent = parentStack[1] const binding = idToImportMap.get(id.name) if (!binding) { return @@ -194,13 +196,14 @@ export async function ssrTransform( s.appendLeft(id.end, `: ${binding}`) } } else if ( - parent.type === 'ClassDeclaration' && - id === parent.superClass + (parent.type === 'PropertyDefinition' && + grandparent?.type === 'ClassBody') || + (parent.type === 'ClassDeclaration' && id === parent.superClass) ) { if (!declaredConst.has(id.name)) { declaredConst.add(id.name) // locate the top-most node containing the class declaration - const topNode = parentStack[1] + const topNode = parentStack[parentStack.length - 2] s.prependRight(topNode.start, `const ${id.name} = ${binding};\n`) } } else { @@ -263,19 +266,14 @@ function walk( { onIdentifier, onImportMeta, onDynamicImport }: Visitors ) { const parentStack: Node[] = [] - const scope: Record = Object.create(null) const scopeMap = new WeakMap<_Node, Set>() + const identifiers: [id: any, stack: Node[]][] = [] const setScope = (node: FunctionNode, name: string) => { let scopeIds = scopeMap.get(node) if (scopeIds && scopeIds.has(name)) { return } - if (name in scope) { - scope[name]++ - } else { - scope[name] = 1 - } if (!scopeIds) { scopeIds = new Set() scopeMap.set(node, scopeIds) @@ -283,13 +281,17 @@ function walk( scopeIds.add(name) } + function isInScope(name: string, parents: Node[]) { + return parents.some((node) => node && scopeMap.get(node)?.has(name)) + } + ;(eswalk as any)(root, { enter(node: Node, parent: Node | null) { if (node.type === 'ImportDeclaration') { return this.skip() } - parent && parentStack.push(parent) + parent && parentStack.unshift(parent) if (node.type === 'MetaProperty' && node.meta.name === 'import') { onImportMeta(node) @@ -298,8 +300,12 @@ function walk( } if (node.type === 'Identifier') { - if (!scope[node.name] && isRefIdentifier(node, parent!, parentStack)) { - onIdentifier(node, parent!, parentStack) + if ( + !isInScope(node.name, parentStack) && + isRefIdentifier(node, parent!, parentStack) + ) { + // record the identifier, for DFS -> BFS + identifiers.push([node, parentStack.slice(0)]) } } else if (isFunction(node)) { // If it is a function declaration, it could be shadowing an import @@ -315,20 +321,21 @@ function walk( node.params.forEach((p) => (eswalk as any)(p.type === 'AssignmentPattern' ? p.left : p, { enter(child: Node, parent: Node) { + if (child.type !== 'Identifier') return + // do not record as scope variable if is a destructuring keyword + if (isStaticPropertyKey(child, parent)) return + // do not record if this is a default value + // assignment of a destructuring variable if ( - child.type === 'Identifier' && - // do not record as scope variable if is a destructuring key - !isStaticPropertyKey(child, parent) && - // do not record if this is a default value - // assignment of a destructuring variable - !( - parent && - parent.type === 'AssignmentPattern' && - parent.right === child - ) + (parent?.type === 'AssignmentPattern' && + parent?.right === child) || + (parent?.type === 'TemplateLiteral' && + parent?.expressions.includes(child)) || + (parent?.type === 'CallExpression' && parent?.callee === child) ) { - setScope(node, child.name) + return } + setScope(node, child.name) } }) ) @@ -338,34 +345,45 @@ function walk( } else if (node.type === 'VariableDeclarator') { const parentFunction = findParentFunction(parentStack) if (parentFunction) { - if (node.id.type === 'ObjectPattern') { - node.id.properties.forEach((property) => { - if (property.type === 'RestElement') { - setScope(parentFunction, (property.argument as Identifier).name) - } else { - setScope(parentFunction, (property.value as Identifier).name) - } - }) - } else { - setScope(parentFunction, (node.id as Identifier).name) + const handlePattern = (p: Pattern) => { + if (p.type === 'Identifier') { + setScope(parentFunction, p.name) + } else if (p.type === 'RestElement') { + handlePattern(p.argument) + } else if (p.type === 'ObjectPattern') { + p.properties.forEach((property) => { + if (property.type === 'RestElement') { + setScope( + parentFunction, + (property.argument as Identifier).name + ) + } else handlePattern(property.value) + }) + } else if (p.type === 'ArrayPattern') { + p.elements.forEach((element) => { + if (element) handlePattern(element) + }) + } else if (p.type === 'AssignmentPattern') { + handlePattern(p.left) + } else { + setScope(parentFunction, (p as any).name) + } } + handlePattern(node.id) } } }, leave(node: Node, parent: Node | null) { - parent && parentStack.pop() - const scopeIds = scopeMap.get(node) - if (scopeIds) { - scopeIds.forEach((id: string) => { - scope[id]-- - if (scope[id] === 0) { - delete scope[id] - } - }) - } + parent && parentStack.shift() } }) + + // emit the identifier events in BFS so the hoisted declarations + // can be captured correctly + identifiers.forEach(([node, stack]) => { + if (!isInScope(node.name, stack)) onIdentifier(node, stack[0], stack) + }) } function isRefIdentifier(id: Identifier, parent: _Node, parentStack: _Node[]) { @@ -441,12 +459,7 @@ function isFunction(node: _Node): node is FunctionNode { } function findParentFunction(parentStack: _Node[]): FunctionNode | undefined { - for (let i = parentStack.length - 1; i >= 0; i--) { - const node = parentStack[i] - if (isFunction(node)) { - return node - } - } + return parentStack.find((i) => isFunction(i)) as FunctionNode } function isInDestructuringAssignment( @@ -457,15 +470,7 @@ function isInDestructuringAssignment( parent && (parent.type === 'Property' || parent.type === 'ArrayPattern') ) { - let i = parentStack.length - while (i--) { - const p = parentStack[i] - if (p.type === 'AssignmentExpression') { - return true - } else if (p.type !== 'Property' && !p.type.endsWith('Pattern')) { - break - } - } + return parentStack.some((i) => i.type === 'AssignmentExpression') } return false } diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index 4d6d4436b4248b..d723b25a54122d 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -1,5 +1,5 @@ import debug from 'debug' -import chalk from 'chalk' +import colors from 'picocolors' import fs from 'fs' import os from 'os' import path from 'path' @@ -12,14 +12,15 @@ import { ENV_PUBLIC_PATH } from './constants' import resolve from 'resolve' -import builtins from 'builtin-modules' -import { FSWatcher } from 'chokidar' +import { builtinModules } from 'module' +import type { FSWatcher } from 'chokidar' import remapping from '@ampproject/remapping' -import { +import type { DecodedSourceMap, RawSourceMap } from '@ampproject/remapping/dist/types/types' import { performance } from 'perf_hooks' +import { parse as parseUrl, URLSearchParams } from 'url' export function slash(p: string): string { return p.replace(/\\/g, '/') @@ -37,10 +38,26 @@ export const flattenId = (id: string): string => export const normalizeId = (id: string): string => id.replace(/(\s*>\s*)/g, ' > ') +//TODO: revisit later to see if the edge case that "compiling using node v12 code to be run in node v16 in the server" is what we intend to support. +const builtins = new Set([ + ...builtinModules, + 'assert/strict', + 'diagnostics_channel', + 'dns/promises', + 'fs/promises', + 'path/posix', + 'path/win32', + 'readline/promises', + 'stream/consumers', + 'stream/promises', + 'stream/web', + 'timers/promises', + 'util/types', + 'wasi' +]) + export function isBuiltin(id: string): boolean { - const deepMatch = id.match(deepImportRE) - id = deepMatch ? deepMatch[1] || deepMatch[2] : id - return builtins.includes(id) + return builtins.has(id.replace(/^node:/, '')) } export function moduleListContains( @@ -152,6 +169,9 @@ 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:.*/ +export const virtualModulePrefix = 'virtual-module:' + const knownJsSrcRE = /\.((j|t)sx?|mjs|vue|marko|svelte|astro)($|\?)/ export const isJSRequest = (url: string): boolean => { url = cleanUrl(url) @@ -164,6 +184,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, @@ -224,11 +252,11 @@ export function timeFrom(start: number, subtract = 0): string { const time: number | string = performance.now() - start - subtract const timeString = (time.toFixed(2) + `ms`).padEnd(5, ' ') if (time < 10) { - return chalk.green(timeString) + return colors.green(timeString) } else if (time < 50) { - return chalk.yellow(timeString) + return colors.yellow(timeString) } else { - return chalk.red(timeString) + return colors.red(timeString) } } @@ -248,11 +276,11 @@ export function prettifyUrl(url: string, root: string): string { if (file.startsWith('@')) { file = `${file}/${seg[npmIndex + 2]}` } - file = `npm: ${chalk.dim(file)}${isSourceMap ? ` (source map)` : ``}` + file = `npm: ${colors.dim(file)}${isSourceMap ? ` (source map)` : ``}` } - return chalk.dim(file) + return colors.dim(file) } else { - return chalk.dim(url) + return colors.dim(url) } } @@ -299,7 +327,9 @@ export function posToNumber( const { line, column } = pos let start = 0 for (let i = 0; i < line - 1; i++) { - start += lines[i].length + 1 + if (lines[i]) { + start += lines[i].length + 1 + } } return start + column } @@ -487,13 +517,11 @@ export async function processSrcSet( }) ) - const url = ret.reduce((prev, { url, descriptor }, index) => { + return ret.reduce((prev, { url, descriptor }, index) => { descriptor = descriptor || '' return (prev += url + ` ${descriptor}${index === ret.length - 1 ? '' : ', '}`) }, '') - - return url } // based on https://github.com/sveltejs/svelte/blob/abf11bb02b2afbd3e4cac509a0f70e318c306364/src/compiler/utils/mapped_code.ts#L221 @@ -606,3 +634,11 @@ export const usingDynamicImport = typeof jest === 'undefined' export const dynamicImport = usingDynamicImport ? new Function('file', 'return import(file)') : require + +export function parseRequest(id: string): Record | null { + const { search } = parseUrl(id) + if (!search) { + return null + } + return Object.fromEntries(new URLSearchParams(search.slice(1))) +} diff --git a/packages/vite/types/alias.d.ts b/packages/vite/types/alias.d.ts index aa70ec5bb59eb2..3f4393586f1299 100644 --- a/packages/vite/types/alias.d.ts +++ b/packages/vite/types/alias.d.ts @@ -27,7 +27,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import { PluginHooks } from 'rollup' +import type { PluginHooks } from 'rollup' export interface Alias { find: string | RegExp diff --git a/packages/vite/types/chokidar.d.ts b/packages/vite/types/chokidar.d.ts index 8882f026390d4e..4c6c295df96fd0 100644 --- a/packages/vite/types/chokidar.d.ts +++ b/packages/vite/types/chokidar.d.ts @@ -28,8 +28,8 @@ THE SOFTWARE. */ /// -import * as fs from 'fs' -import { Matcher } from './anymatch' +import type * as fs from 'fs' +import type { Matcher } from './anymatch' export interface FSWatcher extends fs.FSWatcher { options: WatchOptions 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/http-proxy.d.ts b/packages/vite/types/http-proxy.d.ts index 3ad701f12b08af..5a681cc1e3f170 100644 --- a/packages/vite/types/http-proxy.d.ts +++ b/packages/vite/types/http-proxy.d.ts @@ -13,11 +13,11 @@ /// -import * as net from 'net' -import * as http from 'http' +import type * as net from 'net' +import type * as http from 'http' import * as events from 'events' -import * as url from 'url' -import * as stream from 'stream' +import type * as url from 'url' +import type * as stream from 'stream' export namespace HttpProxy { export type ProxyTarget = ProxyTargetUrl | ProxyTargetDetailed diff --git a/packages/vite/types/importMeta.d.ts b/packages/vite/types/importMeta.d.ts index 7a96d76fe3b8c4..d93fed42129c26 100644 --- a/packages/vite/types/importMeta.d.ts +++ b/packages/vite/types/importMeta.d.ts @@ -1,3 +1,9 @@ +// This file is an augmentation to the built-in ImportMeta interface +// Thus cannot contain any top-level imports +// + +/* eslint-disable @typescript-eslint/consistent-type-imports */ + interface ImportMeta { url: string diff --git a/packages/vite/types/shims.d.ts b/packages/vite/types/shims.d.ts index a351f6bfc81092..9c2905cfb76dec 100644 --- a/packages/vite/types/shims.d.ts +++ b/packages/vite/types/shims.d.ts @@ -17,16 +17,6 @@ declare module 'http-proxy' { export = proxy } -declare module 'acorn-class-fields' { - const plugin: any - export = plugin -} - -declare module 'acorn-static-class-features' { - const plugin: any - export default plugin -} - declare module 'connect-history-api-fallback' { const plugin: any export = plugin @@ -38,7 +28,7 @@ declare module 'launch-editor-middleware' { } declare module 'postcss-load-config' { - import { ProcessOptions, Plugin } from 'postcss' + import type { ProcessOptions, Plugin } from 'postcss' function load( inline: any, root: string @@ -50,7 +40,7 @@ declare module 'postcss-load-config' { } declare module 'postcss-import' { - import { Plugin } from 'postcss' + import type { Plugin } from 'postcss' const plugin: (options: { resolve: ( id: string, @@ -62,13 +52,13 @@ declare module 'postcss-import' { } declare module 'postcss-modules' { - import { Plugin } from 'postcss' + import type { Plugin } from 'postcss' const plugin: (options: any) => Plugin export = plugin } declare module '@rollup/plugin-dynamic-import-vars' { - import { Plugin } from 'rollup' + import type { Plugin } from 'rollup' interface Options { include?: string | RegExp | (string | RegExp)[] @@ -81,7 +71,7 @@ declare module '@rollup/plugin-dynamic-import-vars' { } declare module 'rollup-plugin-web-worker-loader' { - import { Plugin } from 'rollup' + import type { Plugin } from 'rollup' interface Options { targetPlatform?: string @@ -95,13 +85,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/packages/vite/types/ws.d.ts b/packages/vite/types/ws.d.ts index 3a174f9df47ea7..4f85bb87d5bc3d 100644 --- a/packages/vite/types/ws.d.ts +++ b/packages/vite/types/ws.d.ts @@ -1,7 +1,4 @@ -// Inlined to avoid extra dependency -// MIT Licensed https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/LICENSE - -// Type definitions for ws 7.4 +// Type definitions for ws 8.2 // Project: https://github.com/websockets/ws // Definitions by: Paul Loyd // Margus Lamp @@ -15,7 +12,7 @@ /// import { EventEmitter } from 'events' -import { +import type { Agent, ClientRequest, ClientRequestArgs, @@ -23,287 +20,274 @@ import { OutgoingHttpHeaders, Server as HTTPServer } from 'http' -import { Server as HTTPSServer } from 'https' -import { Socket } from 'net' -import { Duplex, DuplexOptions } from 'stream' -import { SecureContextOptions } from 'tls' -import { URL } from 'url' -import { ZlibOptions } from 'zlib' - -export declare namespace WebSocket { - // WebSocket socket. - export class WebSocket extends EventEmitter { - /** The connection is not yet open. */ - static readonly CONNECTING: 0 - /** The connection is open and ready to communicate. */ - static readonly OPEN: 1 - /** The connection is in the process of closing. */ - static readonly CLOSING: 2 - /** The connection is closed. */ - static readonly CLOSED: 3 - - binaryType: 'nodebuffer' | 'arraybuffer' | 'fragments' - readonly bufferedAmount: number - readonly extensions: string - readonly protocol: string - /** The current state of the connection */ - readonly readyState: - | typeof WebSocket.CONNECTING - | typeof WebSocket.OPEN - | typeof WebSocket.CLOSING - | typeof WebSocket.CLOSED - readonly url: string - - /** The connection is not yet open. */ - readonly CONNECTING: 0 - /** The connection is open and ready to communicate. */ - readonly OPEN: 1 - /** The connection is in the process of closing. */ - readonly CLOSING: 2 - /** The connection is closed. */ - readonly CLOSED: 3 - - onopen: (event: WebSocket.OpenEvent) => void - onerror: (event: WebSocket.ErrorEvent) => void - onclose: (event: WebSocket.CloseEvent) => void - onmessage: (event: WebSocket.MessageEvent) => void - - constructor( - address: string | URL, - options?: WebSocket.ClientOptions | ClientRequestArgs - ) - constructor( - address: string | URL, - protocols?: string | string[], - options?: WebSocket.ClientOptions | ClientRequestArgs - ) - - close(code?: number, data?: string): void - ping(data?: any, mask?: boolean, cb?: (err: Error) => void): void - pong(data?: any, mask?: boolean, cb?: (err: Error) => void): void - send(data: any, cb?: (err?: Error) => void): void - send( - data: any, - options: { - mask?: boolean | undefined - binary?: boolean | undefined - compress?: boolean | undefined - fin?: boolean | undefined - }, - cb?: (err?: Error) => void - ): void - terminate(): void - - // HTML5 WebSocket events - addEventListener( - method: 'message', - cb: (event: { data: any; type: string; target: WebSocket }) => void, - options?: WebSocket.EventListenerOptions - ): void - addEventListener( - method: 'close', - cb: (event: { - wasClean: boolean - code: number - reason: string - target: WebSocket - }) => void, - options?: WebSocket.EventListenerOptions - ): void - addEventListener( - method: 'error', - cb: (event: { - error: any - message: any - type: string - target: WebSocket - }) => void, - options?: WebSocket.EventListenerOptions - ): void - addEventListener( - method: 'open', - cb: (event: { target: WebSocket }) => void, - options?: WebSocket.EventListenerOptions - ): void - addEventListener( - method: string, - listener: () => void, - options?: WebSocket.EventListenerOptions - ): void - - removeEventListener( - method: 'message', - cb?: (event: { data: any; type: string; target: WebSocket }) => void - ): void - removeEventListener( - method: 'close', - cb?: (event: { - wasClean: boolean - code: number - reason: string - target: WebSocket - }) => void - ): void - removeEventListener( - method: 'error', - cb?: (event: { - error: any - message: any - type: string - target: WebSocket - }) => void - ): void - removeEventListener( - method: 'open', - cb?: (event: { target: WebSocket }) => void - ): void - removeEventListener(method: string, listener?: () => void): void - - // Events - on( - event: 'close', - listener: (this: WebSocket, code: number, reason: string) => void - ): this - on(event: 'error', listener: (this: WebSocket, err: Error) => void): this - on( - event: 'upgrade', - listener: (this: WebSocket, request: IncomingMessage) => void - ): this - on( - event: 'message', - listener: (this: WebSocket, data: WebSocket.Data) => void - ): this - on(event: 'open', listener: (this: WebSocket) => void): this - on( - event: 'ping' | 'pong', - listener: (this: WebSocket, data: Buffer) => void - ): this - on( - event: 'unexpected-response', - listener: ( - this: WebSocket, - request: ClientRequest, - response: IncomingMessage - ) => void - ): this - on( - event: string | symbol, - listener: (this: WebSocket, ...args: any[]) => void - ): this - - once( - event: 'close', - listener: (this: WebSocket, code: number, reason: string) => void - ): this - once(event: 'error', listener: (this: WebSocket, err: Error) => void): this - once( - event: 'upgrade', - listener: (this: WebSocket, request: IncomingMessage) => void - ): this - once( - event: 'message', - listener: (this: WebSocket, data: WebSocket.Data) => void - ): this - once(event: 'open', listener: (this: WebSocket) => void): this - once( - event: 'ping' | 'pong', - listener: (this: WebSocket, data: Buffer) => void - ): this - once( - event: 'unexpected-response', - listener: ( - this: WebSocket, - request: ClientRequest, - response: IncomingMessage - ) => void - ): this - once( - event: string | symbol, - listener: (this: WebSocket, ...args: any[]) => void - ): this - - off( - event: 'close', - listener: (this: WebSocket, code: number, reason: string) => void - ): this - off(event: 'error', listener: (this: WebSocket, err: Error) => void): this - off( - event: 'upgrade', - listener: (this: WebSocket, request: IncomingMessage) => void - ): this - off( - event: 'message', - listener: (this: WebSocket, data: WebSocket.Data) => void - ): this - off(event: 'open', listener: (this: WebSocket) => void): this - off( - event: 'ping' | 'pong', - listener: (this: WebSocket, data: Buffer) => void - ): this - off( - event: 'unexpected-response', - listener: ( - this: WebSocket, - request: ClientRequest, - response: IncomingMessage - ) => void - ): this - off( - event: string | symbol, - listener: (this: WebSocket, ...args: any[]) => void - ): this +import type { Server as HTTPSServer } from 'https' +import type { Duplex, DuplexOptions } from 'stream' +import type { SecureContextOptions } from 'tls' +import type { URL } from 'url' +import type { ZlibOptions } from 'zlib' + +// WebSocket socket. +declare class WebSocket extends EventEmitter { + /** The connection is not yet open. */ + static readonly CONNECTING: 0 + /** The connection is open and ready to communicate. */ + static readonly OPEN: 1 + /** The connection is in the process of closing. */ + static readonly CLOSING: 2 + /** The connection is closed. */ + static readonly CLOSED: 3 + + binaryType: 'nodebuffer' | 'arraybuffer' | 'fragments' + readonly bufferedAmount: number + readonly extensions: string + readonly protocol: string + /** The current state of the connection */ + readonly readyState: + | typeof WebSocket.CONNECTING + | typeof WebSocket.OPEN + | typeof WebSocket.CLOSING + | typeof WebSocket.CLOSED + readonly url: string + + /** The connection is not yet open. */ + readonly CONNECTING: 0 + /** The connection is open and ready to communicate. */ + readonly OPEN: 1 + /** The connection is in the process of closing. */ + readonly CLOSING: 2 + /** The connection is closed. */ + readonly CLOSED: 3 + + onopen: (event: WebSocket.Event) => void + onerror: (event: WebSocket.ErrorEvent) => void + onclose: (event: WebSocket.CloseEvent) => void + onmessage: (event: WebSocket.MessageEvent) => void + + constructor( + address: string | URL, + options?: WebSocket.ClientOptions | ClientRequestArgs + ) + constructor( + address: string | URL, + protocols?: string | string[], + options?: WebSocket.ClientOptions | ClientRequestArgs + ) + + close(code?: number, data?: string | Buffer): void + ping(data?: any, mask?: boolean, cb?: (err: Error) => void): void + pong(data?: any, mask?: boolean, cb?: (err: Error) => void): void + send(data: any, cb?: (err?: Error) => void): void + send( + data: any, + options: { + mask?: boolean | undefined + binary?: boolean | undefined + compress?: boolean | undefined + fin?: boolean | undefined + }, + cb?: (err?: Error) => void + ): void + terminate(): void + + // HTML5 WebSocket events + addEventListener( + method: 'message', + cb: (event: WebSocket.MessageEvent) => void, + options?: WebSocket.EventListenerOptions + ): void + addEventListener( + method: 'close', + cb: (event: WebSocket.CloseEvent) => void, + options?: WebSocket.EventListenerOptions + ): void + addEventListener( + method: 'error', + cb: (event: WebSocket.ErrorEvent) => void, + options?: WebSocket.EventListenerOptions + ): void + addEventListener( + method: 'open', + cb: (event: WebSocket.Event) => void, + options?: WebSocket.EventListenerOptions + ): void + + removeEventListener( + method: 'message', + cb: (event: WebSocket.MessageEvent) => void + ): void + removeEventListener( + method: 'close', + cb: (event: WebSocket.CloseEvent) => void + ): void + removeEventListener( + method: 'error', + cb: (event: WebSocket.ErrorEvent) => void + ): void + removeEventListener( + method: 'open', + cb: (event: WebSocket.Event) => void + ): void + + // Events + on( + event: 'close', + listener: (this: WebSocket, code: number, reason: Buffer) => void + ): this + on(event: 'error', listener: (this: WebSocket, err: Error) => void): this + on( + event: 'upgrade', + listener: (this: WebSocket, request: IncomingMessage) => void + ): this + on( + event: 'message', + listener: ( + this: WebSocket, + data: WebSocket.RawData, + isBinary: boolean + ) => void + ): this + on(event: 'open', listener: (this: WebSocket) => void): this + on( + event: 'ping' | 'pong', + listener: (this: WebSocket, data: Buffer) => void + ): this + on( + event: 'unexpected-response', + listener: ( + this: WebSocket, + request: ClientRequest, + response: IncomingMessage + ) => void + ): this + on( + event: string | symbol, + listener: (this: WebSocket, ...args: any[]) => void + ): this + + once( + event: 'close', + listener: (this: WebSocket, code: number, reason: Buffer) => void + ): this + once(event: 'error', listener: (this: WebSocket, err: Error) => void): this + once( + event: 'upgrade', + listener: (this: WebSocket, request: IncomingMessage) => void + ): this + once( + event: 'message', + listener: ( + this: WebSocket, + data: WebSocket.RawData, + isBinary: boolean + ) => void + ): this + once(event: 'open', listener: (this: WebSocket) => void): this + once( + event: 'ping' | 'pong', + listener: (this: WebSocket, data: Buffer) => void + ): this + once( + event: 'unexpected-response', + listener: ( + this: WebSocket, + request: ClientRequest, + response: IncomingMessage + ) => void + ): this + once( + event: string | symbol, + listener: (this: WebSocket, ...args: any[]) => void + ): this + + off( + event: 'close', + listener: (this: WebSocket, code: number, reason: Buffer) => void + ): this + off(event: 'error', listener: (this: WebSocket, err: Error) => void): this + off( + event: 'upgrade', + listener: (this: WebSocket, request: IncomingMessage) => void + ): this + off( + event: 'message', + listener: ( + this: WebSocket, + data: WebSocket.RawData, + isBinary: boolean + ) => void + ): this + off(event: 'open', listener: (this: WebSocket) => void): this + off( + event: 'ping' | 'pong', + listener: (this: WebSocket, data: Buffer) => void + ): this + off( + event: 'unexpected-response', + listener: ( + this: WebSocket, + request: ClientRequest, + response: IncomingMessage + ) => void + ): this + off( + event: string | symbol, + listener: (this: WebSocket, ...args: any[]) => void + ): this + + addListener( + event: 'close', + listener: (code: number, reason: Buffer) => void + ): this + addListener(event: 'error', listener: (err: Error) => void): this + addListener( + event: 'upgrade', + listener: (request: IncomingMessage) => void + ): this + addListener( + event: 'message', + listener: (data: WebSocket.RawData, isBinary: boolean) => void + ): this + addListener(event: 'open', listener: () => void): this + addListener(event: 'ping' | 'pong', listener: (data: Buffer) => void): this + addListener( + event: 'unexpected-response', + listener: (request: ClientRequest, response: IncomingMessage) => void + ): this + addListener(event: string | symbol, listener: (...args: any[]) => void): this + + removeListener( + event: 'close', + listener: (code: number, reason: Buffer) => void + ): this + removeListener(event: 'error', listener: (err: Error) => void): this + removeListener( + event: 'upgrade', + listener: (request: IncomingMessage) => void + ): this + removeListener( + event: 'message', + listener: (data: WebSocket.RawData, isBinary: boolean) => void + ): this + removeListener(event: 'open', listener: () => void): this + removeListener(event: 'ping' | 'pong', listener: (data: Buffer) => void): this + removeListener( + event: 'unexpected-response', + listener: (request: ClientRequest, response: IncomingMessage) => void + ): this + removeListener( + event: string | symbol, + listener: (...args: any[]) => void + ): this +} - addListener( - event: 'close', - listener: (code: number, message: string) => void - ): this - addListener(event: 'error', listener: (err: Error) => void): this - addListener( - event: 'upgrade', - listener: (request: IncomingMessage) => void - ): this - addListener( - event: 'message', - listener: (data: WebSocket.Data) => void - ): this - addListener(event: 'open', listener: () => void): this - addListener(event: 'ping' | 'pong', listener: (data: Buffer) => void): this - addListener( - event: 'unexpected-response', - listener: (request: ClientRequest, response: IncomingMessage) => void - ): this - addListener( - event: string | symbol, - listener: (...args: any[]) => void - ): this +declare const WebSocketAlias: typeof WebSocket +type WebSocketAlias = WebSocket - removeListener( - event: 'close', - listener: (code: number, message: string) => void - ): this - removeListener(event: 'error', listener: (err: Error) => void): this - removeListener( - event: 'upgrade', - listener: (request: IncomingMessage) => void - ): this - removeListener( - event: 'message', - listener: (data: WebSocket.Data) => void - ): this - removeListener(event: 'open', listener: () => void): this - removeListener( - event: 'ping' | 'pong', - listener: (data: Buffer) => void - ): this - removeListener( - event: 'unexpected-response', - listener: (request: ClientRequest, response: IncomingMessage) => void - ): this - removeListener( - event: string | symbol, - listener: (...args: any[]) => void - ): this - } +declare namespace WebSocket { + /** + * Data represents the raw message payload received over the WebSocket. + */ + type RawData = Buffer | ArrayBuffer | Buffer[] /** * Data represents the message payload received over the WebSocket. @@ -382,7 +366,7 @@ export declare namespace WebSocket { concurrencyLimit?: number | undefined } - interface OpenEvent { + interface Event { type: string target: WebSocket } @@ -421,12 +405,16 @@ export declare namespace WebSocket { | VerifyClientCallbackAsync | VerifyClientCallbackSync | undefined - handleProtocols?: any + handleProtocols?: ( + protocols: Set, + request: IncomingMessage + ) => string | false path?: string | undefined noServer?: boolean | undefined clientTracking?: boolean | undefined perMessageDeflate?: boolean | PerMessageDeflateOptions | undefined maxPayload?: number | undefined + skipUTF8Validation?: boolean | undefined } interface AddressInfo { @@ -436,7 +424,7 @@ export declare namespace WebSocket { } // WebSocket Server - export class Server extends EventEmitter { + class Server extends EventEmitter { options: ServerOptions path: string clients: Set @@ -447,7 +435,7 @@ export declare namespace WebSocket { close(cb?: (err?: Error) => void): void handleUpgrade( request: IncomingMessage, - socket: Socket, + socket: Duplex, upgradeHead: Buffer, callback: (client: WebSocket, request: IncomingMessage) => void ): void @@ -524,9 +512,17 @@ export declare namespace WebSocket { ): this } + const WebSocketServer: typeof Server + type WebSocketServer = Server + const WebSocket: typeof WebSocketAlias + type WebSocket = WebSocketAlias + // WebSocket stream function createWebSocketStream( websocket: WebSocket, options?: DuplexOptions ): Duplex } + +//export = WebSocket; +export { WebSocket, WebSocketAlias } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 85a20a68fe002d..18a7f91269e990 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,91 +8,85 @@ importers: .: specifiers: - '@microsoft/api-extractor': ^7.18.11 + '@microsoft/api-extractor': ^7.19.3 '@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/jest': ^27.0.3 + '@types/node': ^16.11.17 + '@types/prompts': ^2.0.14 + '@types/semver': ^7.3.9 + '@typescript-eslint/eslint-plugin': ^5.8.1 + '@typescript-eslint/parser': ^5.8.1 chalk: ^4.1.2 - conventional-changelog-cli: ^2.1.1 + conventional-changelog-cli: ^2.2.2 cross-env: ^7.0.3 - esbuild: ^0.13.2 - eslint: ^8.1.0 - eslint-define-config: ^1.1.2 + esbuild: 0.14.3 + eslint: ^8.5.0 + eslint-define-config: ^1.2.1 eslint-plugin-node: ^11.1.0 execa: ^5.1.1 fs-extra: ^10.0.0 - jest: ^27.2.4 - lint-staged: ^11.2.0 + jest: ^27.4.5 + lint-staged: ^12.1.4 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 - prettier: 2.4.1 - prompts: ^2.4.1 + playwright-chromium: ^1.17.1 + prettier: 2.5.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 - ts-jest: ^27.0.5 - ts-node: ^10.1.0 - typescript: ~4.4.3 + sirv: ^1.0.19 + ts-jest: ^27.1.2 + ts-node: ^10.4.0 + typescript: ~4.5.4 vite: workspace:* - vitepress: ^0.19.2 + vitepress: ^0.20.10 yorkie: ^2.0.0 devDependencies: - '@microsoft/api-extractor': 7.18.11 + '@microsoft/api-extractor': 7.19.3 '@types/fs-extra': 9.0.13 - '@types/jest': 27.0.2 - '@types/node': 15.14.9 - '@types/semver': 7.3.8 - '@typescript-eslint/eslint-plugin': 5.2.0_c4b1efa9b4fb23f36c6acd0134327013 - '@typescript-eslint/parser': 5.2.0_eslint@8.1.0+typescript@4.4.3 + '@types/jest': 27.0.3 + '@types/node': 16.11.17 + '@types/prompts': 2.0.14 + '@types/semver': 7.3.9 + '@typescript-eslint/eslint-plugin': 5.8.1_3a47348159e115370aa4cba56aba33b6 + '@typescript-eslint/parser': 5.8.1_eslint@8.5.0+typescript@4.5.4 chalk: 4.1.2 - conventional-changelog-cli: 2.1.1 + conventional-changelog-cli: 2.2.2 cross-env: 7.0.3 - esbuild: 0.13.2 - eslint: 8.1.0 - eslint-define-config: 1.1.2 - eslint-plugin-node: 11.1.0_eslint@8.1.0 + esbuild: 0.14.3 + eslint: 8.5.0 + eslint-define-config: 1.2.1 + eslint-plugin-node: 11.1.0_eslint@8.5.0 execa: 5.1.1 fs-extra: 10.0.0 - jest: 27.2.4_ts-node@10.2.1 - lint-staged: 11.2.0 + jest: 27.4.5_ts-node@10.4.0 + lint-staged: 12.1.4 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 - prettier: 2.4.1 - prompts: 2.4.1 + playwright-chromium: 1.17.1 + prettier: 2.5.1 + prompts: 2.4.2 rimraf: 3.0.2 - rollup: 2.57.0 + rollup: 2.62.0 semver: 7.3.5 - sirv: 1.0.17 - ts-jest: 27.0.5_52a571d76319e63aeaa66dc9db9e90cc - ts-node: 10.2.1_3b624d72c50530188ff09826d1b48ebf - typescript: 4.4.3 + sirv: 1.0.19 + ts-jest: 27.1.2_1b5a1be2010a86e622f02a11eaeb730f + ts-node: 10.4.0_00264fd83560919cd06c986889baae0a + typescript: 4.5.4 vite: link:packages/vite - vitepress: 0.19.2 + vitepress: 0.20.10 yorkie: 2.0.0 - packages/create-app: - specifiers: - create-vite: latest - kolorist: ^1.5.0 - dependencies: - create-vite: link:../create-vite - kolorist: 1.5.0 - packages/create-vite: specifiers: - kolorist: ^1.5.0 + kolorist: ^1.5.1 minimist: ^1.2.5 prompts: ^2.4.2 dependencies: - kolorist: 1.5.0 + kolorist: 1.5.1 minimist: 1.2.5 prompts: 2.4.2 @@ -104,21 +98,26 @@ importers: packages/playground/alias: specifiers: + aliased-module: file:./dir/module resolve-linked: workspace:* - vue: ^3.2.16 + vue: ^3.2.25 dependencies: - vue: 3.2.16 + aliased-module: link:dir/module + vue: 3.2.26 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.15_ts-node@10.2.1 + tailwindcss: 2.2.19_ts-node@10.4.0 packages/playground/cli: specifiers: {} @@ -129,16 +128,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.1 + less: 4.1.2 postcss-nested: 5.0.6 - sass: 1.42.1 - stylus: 0.54.8 + sass: 1.45.1 + stylus: 0.55.0 packages/playground/css-codesplit: specifiers: {} @@ -175,15 +174,15 @@ importers: packages/playground/extensions: specifiers: - vue: ^3.2.16 + vue: ^3.2.25 dependencies: - vue: 3.2.16 + vue: 3.2.26 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 +203,9 @@ importers: packages/playground/json: specifiers: - vue: ^3.2.16 + vue: ^3.2.25 devDependencies: - vue: 3.2.16 + vue: 3.2.26 packages/playground/legacy: specifiers: @@ -272,23 +271,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.25 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 @@ -297,12 +296,12 @@ importers: dep-linked-include: link:dep-linked-include lodash-es: 4.17.21 nested-exclude: link:nested-exclude - phoenix: 1.5.13 + phoenix: 1.6.5 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 resolve-linked: link:../resolve-linked - vue: 3.2.16 - vuex: 4.0.2_vue@3.2.16 + vue: 3.2.26 + vuex: 4.0.2_vue@3.2.26 devDependencies: '@vitejs/plugin-vue': link:../../plugin-vue @@ -317,15 +316,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: @@ -345,7 +344,7 @@ importers: missing-dep: link:missing-dep multi-entry-dep: link:multi-entry-dep devDependencies: - express: 4.17.1 + express: 4.17.2 packages/playground/optimize-missing-deps/missing-dep: specifiers: @@ -359,11 +358,11 @@ importers: packages/playground/preload: specifiers: '@vitejs/plugin-vue': workspace:* - vue: ^3.2.16 + vue: ^3.2.25 vue-router: ^4.0.0 dependencies: - vue: 3.2.16 - vue-router: 4.0.11_vue@3.2.16 + vue: 3.2.26 + vue-router: 4.0.12_vue@3.2.26 devDependencies: '@vitejs/plugin-vue': link:../../plugin-vue @@ -379,8 +378,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,26 +388,26 @@ 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.4.1_react@17.0.2 + '@emotion/react': 11.7.1_react@17.0.2 react: 17.0.2 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 - '@emotion/babel-plugin': 11.3.0 + '@babel/plugin-proposal-pipeline-operator': 7.16.5 + '@emotion/babel-plugin': 11.7.2 '@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 +417,7 @@ importers: resolve-exports-path: link:./exports-path resolve-linked: workspace:* dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.5 es5-ext: 0.10.53 normalize.css: 8.0.1 resolve-browser-field: link:browser-field @@ -449,13 +448,74 @@ importers: packages/playground/resolve/inline-package: specifiers: {} + packages/playground/ssr-deps: + specifiers: + bcrypt: ^5.0.1 + cross-env: ^7.0.3 + define-properties-exports: file:./define-properties-exports + define-property-exports: file:./define-property-exports + express: ^4.17.1 + forwarded-export: file:./forwarded-export + object-assigned-exports: file:./object-assigned-exports + only-object-assigned-exports: file:./only-object-assigned-exports + primitive-export: file:./primitive-export + read-file-content: file:./read-file-content + ts-transpiled-exports: file:./ts-transpiled-exports + dependencies: + bcrypt: 5.0.1 + define-properties-exports: link:define-properties-exports + define-property-exports: link:define-property-exports + forwarded-export: link:forwarded-export + object-assigned-exports: link:object-assigned-exports + only-object-assigned-exports: link:only-object-assigned-exports + primitive-export: link:primitive-export + read-file-content: link:read-file-content + ts-transpiled-exports: link:ts-transpiled-exports + devDependencies: + cross-env: 7.0.3 + express: 4.17.2 + + packages/playground/ssr-deps/define-properties-exports: + specifiers: {} + + packages/playground/ssr-deps/define-property-exports: + specifiers: {} + + packages/playground/ssr-deps/forwarded-export: + specifiers: {} + + packages/playground/ssr-deps/object-assigned-exports: + specifiers: {} + + packages/playground/ssr-deps/only-object-assigned-exports: + specifiers: {} + + packages/playground/ssr-deps/primitive-export: + specifiers: {} + + packages/playground/ssr-deps/read-file-content: + specifiers: {} + + packages/playground/ssr-deps/ts-transpiled-exports: + specifiers: {} + packages/playground/ssr-html: specifiers: cross-env: ^7.0.3 express: ^4.17.1 devDependencies: cross-env: 7.0.3 - express: 4.17.1 + express: 4.17.2 + + 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.2 + pug: 3.0.2 packages/playground/ssr-react: specifiers: @@ -463,10 +523,10 @@ importers: 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 @@ -477,8 +537,8 @@ importers: '@vitejs/plugin-react': link:../../plugin-react compression: 1.7.4 cross-env: 7.0.3 - express: 4.17.1 - serve-static: 1.14.1 + express: 4.17.2 + serve-static: 1.14.2 packages/playground/ssr-vue: specifiers: @@ -490,20 +550,22 @@ importers: example-external-component: file:example-external-component express: ^4.17.1 serve-static: ^1.14.1 - vue: ^3.2.16 + vue: ^3.2.25 vue-router: ^4.0.0 + vuex: ^4.0.2 dependencies: example-external-component: link:example-external-component - vue: 3.2.16 - vue-router: 4.0.11_vue@3.2.16 + vue: 3.2.26 + vue-router: 4.0.12_vue@3.2.26 + vuex: 4.0.2_vue@3.2.26 devDependencies: '@vitejs/plugin-vue': link:../../plugin-vue '@vitejs/plugin-vue-jsx': link:../../plugin-vue-jsx 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 + express: 4.17.2 + serve-static: 1.14.2 packages/playground/ssr-vue/dep-import-type: specifiers: {} @@ -513,7 +575,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 +587,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.25 vue-router: ^4.0.0 dependencies: - autoprefixer: 10.3.5 - tailwindcss: 2.2.15_e444c4a095b9e9ba5c645754953637f2 - vue: 3.2.16 - vue-router: 4.0.11_vue@3.2.16 + autoprefixer: 10.4.0 + tailwindcss: 2.2.19_6d1fa3babc9cc84b994ff99ef39d1aff + vue: 3.2.26 + vue-router: 4.0.12_vue@3.2.26 devDependencies: '@vitejs/plugin-vue': link:../../plugin-vue @@ -546,31 +608,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.25 dependencies: lodash-es: 4.17.21 - vue: 3.2.16 + vue: 3.2.26 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.42.1 - stylus: 0.54.8 + sass: 1.45.1 + 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.25 dependencies: - vue: 3.2.16 + vue: 3.2.26 devDependencies: '@vitejs/plugin-vue': link:../../plugin-vue '@vitejs/plugin-vue-jsx': link:../../plugin-vue-jsx @@ -583,549 +645,506 @@ importers: packages/plugin-legacy: specifiers: - '@babel/standalone': ^7.15.8 - core-js: ^3.19.0 + '@babel/standalone': ^7.16.6 + core-js: ^3.20.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.6 + core-js: 3.20.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 - '@rollup/pluginutils': ^4.1.1 - react-refresh: ^0.10.0 + '@babel/core': ^7.16.5 + '@babel/plugin-transform-react-jsx': ^7.16.5 + '@babel/plugin-transform-react-jsx-development': ^7.16.5 + '@babel/plugin-transform-react-jsx-self': ^7.16.5 + '@babel/plugin-transform-react-jsx-source': ^7.16.5 + '@rollup/pluginutils': ^4.1.2 + 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 - '@rollup/pluginutils': 4.1.1 - react-refresh: 0.10.0 + '@babel/core': 7.16.5 + '@babel/plugin-transform-react-jsx': 7.16.5_@babel+core@7.16.5 + '@babel/plugin-transform-react-jsx-development': 7.16.5_@babel+core@7.16.5 + '@babel/plugin-transform-react-jsx-self': 7.16.5_@babel+core@7.16.5 + '@babel/plugin-transform-react-jsx-source': 7.16.5_@babel+core@7.16.5 + '@rollup/pluginutils': 4.1.2 + react-refresh: 0.11.0 resolve: 1.20.0 packages/plugin-vue: specifiers: - '@rollup/pluginutils': ^4.1.1 + '@rollup/pluginutils': ^4.1.2 '@types/hash-sum': ^1.0.0 - '@vue/compiler-sfc': ^3.2.20 - debug: ^4.3.2 + debug: ^4.3.3 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.26 devDependencies: - '@rollup/pluginutils': 4.1.1 + '@rollup/pluginutils': 4.1.2 '@types/hash-sum': 1.0.0 - '@vue/compiler-sfc': 3.2.20 - debug: 4.3.2 + debug: 4.3.3 hash-sum: 2.0.0 - rollup: 2.58.3 - slash: 3.0.0 + rollup: 2.62.0 + slash: 4.0.0 source-map: 0.6.1 - vue: 3.2.20 + vue: 3.2.26 packages/plugin-vue-jsx: specifiers: - '@babel/core': ^7.15.8 + '@babel/core': ^7.16.5 '@babel/plugin-syntax-import-meta': ^7.10.4 - '@babel/plugin-transform-typescript': ^7.15.8 - '@rollup/pluginutils': ^4.1.1 + '@babel/plugin-transform-typescript': ^7.16.1 + '@rollup/pluginutils': ^4.1.2 '@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 - '@rollup/pluginutils': 4.1.1 - '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.15.8 + '@babel/core': 7.16.5 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.16.5 + '@babel/plugin-transform-typescript': 7.16.1_@babel+core@7.16.5 + '@rollup/pluginutils': 4.1.2 + '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.16.5 hash-sum: 2.0.0 packages/vite: specifiers: - '@ampproject/remapping': ^1.0.1 - '@babel/parser': ^7.15.8 - '@babel/types': ^7.15.6 - '@rollup/plugin-alias': ^3.1.5 - '@rollup/plugin-commonjs': ^21.0.0 - '@rollup/plugin-dynamic-import-vars': ^1.4.0 + '@ampproject/remapping': ^1.0.2 + '@babel/parser': ^7.16.6 + '@babel/types': ^7.16.0 + '@rollup/plugin-alias': ^3.1.8 + '@rollup/plugin-commonjs': ^21.0.1 + '@rollup/plugin-dynamic-import-vars': ^1.4.2 '@rollup/plugin-json': ^4.1.0 - '@rollup/plugin-node-resolve': 13.0.5 - '@rollup/plugin-typescript': ^8.2.5 - '@rollup/pluginutils': ^4.1.1 + '@rollup/plugin-node-resolve': 13.1.1 + '@rollup/plugin-typescript': ^8.3.0 + '@rollup/pluginutils': ^4.1.2 '@types/convert-source-map': ^1.5.2 + '@types/cross-spawn': ^6.0.2 '@types/debug': ^4.1.7 - '@types/es-module-lexer': ^0.3.0 '@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.12.2 + '@types/node': ^16.11.17 '@types/resolve': ^1.20.1 - '@types/sass': ^1.16.1 + '@types/sass': ~1.43.1 '@types/stylus': ^0.48.36 - '@types/ws': ^7.4.7 - '@vue/compiler-dom': ^3.2.19 - 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 - chalk: ^4.1.2 + '@types/ws': ^8.2.2 + '@vue/compiler-dom': ^3.2.26 + acorn: ^8.7.0 + cac: 6.7.9 chokidar: ^3.5.2 compression: ^1.7.4 connect: ^3.7.0 connect-history-api-fallback: ^1.6.0 convert-source-map: ^1.8.0 cors: ^2.8.5 - debug: ^4.3.2 + cross-spawn: ^7.0.3 + debug: ^4.3.3 dotenv: ^10.0.0 dotenv-expand: ^5.1.0 - es-module-lexer: ^0.9.2 - esbuild: ^0.13.2 + es-module-lexer: ^0.9.3 + esbuild: 0.14.3 estree-walker: ^2.0.2 etag: ^1.8.1 - execa: ^5.1.1 fast-glob: ^3.2.7 fsevents: ~2.3.2 http-proxy: ^1.18.1 - launch-editor-middleware: ^2.2.1 + json5: ^2.2.0 + launch-editor-middleware: ^2.3.0 magic-string: ^0.25.7 - mime: ^2.5.2 - minimatch: ^3.0.4 + micromatch: ^4.0.4 + mrmime: ^1.0.0 okie: ^1.0.1 - open: ^8.2.1 + open: ^8.4.0 periscopic: ^2.0.3 - postcss: ^8.3.8 + picocolors: ^1.0.0 + postcss: ^8.4.5 postcss-import: ^14.0.2 postcss-load-config: ^3.1.0 - postcss-modules: ^4.2.2 + postcss-modules: ^4.3.0 resolve: ^1.20.0 - resolve.exports: ^1.0.2 - rollup: ^2.57.0 - rollup-plugin-license: ^2.5.0 + resolve.exports: ^1.1.0 + rollup: ^2.59.0 + rollup-plugin-license: ^2.6.0 selfsigned: ^1.10.11 - sirv: ^1.0.17 + sirv: ^1.0.19 source-map: ^0.6.1 - source-map-support: ^0.5.20 - strip-ansi: ^6.0.0 - terser: ^5.9.0 - tsconfck: ^1.0.0 + source-map-support: ^0.5.21 + strip-ansi: ^6.0.1 + terser: ^5.10.0 + tsconfck: 1.1.1 tslib: ^2.3.1 types: link:./types - ws: ^7.5.5 + ws: ^8.4.0 dependencies: - esbuild: 0.13.2 - postcss: 8.3.8 + esbuild: 0.14.3 + json5: 2.2.0 + postcss: 8.4.5 resolve: 1.20.0 - rollup: 2.57.0 + rollup: 2.62.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.5_rollup@2.57.0 - '@rollup/plugin-commonjs': 21.0.0_rollup@2.57.0 - '@rollup/plugin-dynamic-import-vars': 1.4.0_rollup@2.57.0 - '@rollup/plugin-json': 4.1.0_rollup@2.57.0 - '@rollup/plugin-node-resolve': 13.0.5_rollup@2.57.0 - '@rollup/plugin-typescript': 8.2.5_283b0408a190511f1240c12469d64cd5 - '@rollup/pluginutils': 4.1.1 + '@ampproject/remapping': 1.0.2 + '@babel/parser': 7.16.6 + '@babel/types': 7.16.0 + '@rollup/plugin-alias': 3.1.8_rollup@2.62.0 + '@rollup/plugin-commonjs': 21.0.1_rollup@2.62.0 + '@rollup/plugin-dynamic-import-vars': 1.4.2_rollup@2.62.0 + '@rollup/plugin-json': 4.1.0_rollup@2.62.0 + '@rollup/plugin-node-resolve': 13.1.1_rollup@2.62.0 + '@rollup/plugin-typescript': 8.3.0_rollup@2.62.0+tslib@2.3.1 + '@rollup/pluginutils': 4.1.2 '@types/convert-source-map': 1.5.2 + '@types/cross-spawn': 6.0.2 '@types/debug': 4.1.7 - '@types/es-module-lexer': 0.3.0 '@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.17 '@types/resolve': 1.20.1 - '@types/sass': 1.16.1 + '@types/sass': 1.43.1 '@types/stylus': 0.48.36 - '@types/ws': 7.4.7 - '@vue/compiler-dom': 3.2.19 - 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 - chalk: 4.1.2 + '@types/ws': 8.2.2 + '@vue/compiler-dom': 3.2.26 + acorn: 8.7.0 + cac: 6.7.9 chokidar: 3.5.2 compression: 1.7.4 connect: 3.7.0 connect-history-api-fallback: 1.6.0 convert-source-map: 1.8.0 cors: 2.8.5 - debug: 4.3.2 + cross-spawn: 7.0.3 + debug: 4.3.3 dotenv: 10.0.0 dotenv-expand: 5.1.0 - es-module-lexer: 0.9.2 + es-module-lexer: 0.9.3 estree-walker: 2.0.2 etag: 1.8.1 - execa: 5.1.1 fast-glob: 3.2.7 - http-proxy: 1.18.1_debug@4.3.2 - launch-editor-middleware: 2.2.1 + http-proxy: 1.18.1_debug@4.3.3 + launch-editor-middleware: 2.3.0 magic-string: 0.25.7 - mime: 2.5.2 - minimatch: 3.0.4 + micromatch: 4.0.4 + mrmime: 1.0.0 okie: 1.0.1 - open: 8.2.1 + open: 8.4.0 periscopic: 2.0.3 - postcss-import: 14.0.2_postcss@8.3.8 - postcss-load-config: 3.1.0_ts-node@10.2.1 - postcss-modules: 4.2.2_postcss@8.3.8 - resolve.exports: 1.0.2 - rollup-plugin-license: 2.5.0_rollup@2.57.0 + picocolors: 1.0.0 + postcss-import: 14.0.2_postcss@8.4.5 + postcss-load-config: 3.1.0 + postcss-modules: 4.3.0_postcss@8.4.5 + resolve.exports: 1.1.0 + rollup-plugin-license: 2.6.0_rollup@2.62.0 selfsigned: 1.10.11 - sirv: 1.0.17 + sirv: 1.0.19 source-map: 0.6.1 - source-map-support: 0.5.20 - strip-ansi: 6.0.0 - terser: 5.9.0 - tsconfck: 1.0.0_typescript@4.4.3 + source-map-support: 0.5.21 + strip-ansi: 6.0.1 + terser: 5.10.0_acorn@8.7.0 + tsconfck: 1.1.1 tslib: 2.3.1 types: link:types - ws: 7.5.5 + ws: 8.4.0 packages: - /@algolia/cache-browser-local-storage/4.10.5: - resolution: {integrity: sha512-cfX2rEKOtuuljcGI5DMDHClwZHdDqd2nT2Ohsc8aHtBiz6bUxKVyIqxr2gaC6tU8AgPtrTVBzcxCA+UavXpKww==} + /@algolia/autocomplete-core/1.5.0: + resolution: {integrity: sha512-E7+VJwcvwMM8vPeaVn7fNUgix8WHV8A1WUeHDi2KHemCaaGc8lvUnP3QnvhMxiDhTe7OpMEv4o2TBUMyDgThaw==} dependencies: - '@algolia/cache-common': 4.10.5 + '@algolia/autocomplete-shared': 1.5.0 dev: true - /@algolia/cache-common/4.10.5: - resolution: {integrity: sha512-1mClwdmTHll+OnHkG+yeRoFM17kSxDs4qXkjf6rNZhoZGXDvfYLy3YcZ1FX4Kyz0DJv8aroq5RYGBDsWkHj6Tw==} + /@algolia/autocomplete-preset-algolia/1.5.0_algoliasearch@4.11.0: + resolution: {integrity: sha512-iiFxKERGHkvkiupmrFJbvESpP/zv5jSgH714XRiP5LDvUHaYOo4GLAwZCFf2ef/L5tdtPBARvekn6k1Xf33gjA==} + peerDependencies: + '@algolia/client-search': ^4.9.1 + algoliasearch: ^4.9.1 + dependencies: + '@algolia/autocomplete-shared': 1.5.0 + algoliasearch: 4.11.0 + dev: true + + /@algolia/autocomplete-shared/1.5.0: + resolution: {integrity: sha512-bRSkqHHHSwZYbFY3w9hgMyQRm86Wz27bRaGCbNldLfbk0zUjApmE4ajx+ZCVSLqxvcUEjMqZFJzDsder12eKsg==} dev: true - /@algolia/cache-in-memory/4.10.5: - resolution: {integrity: sha512-+ciQnfIGi5wjMk02XhEY8fmy2pzy+oY1nIIfu8LBOglaSipCRAtjk6WhHc7/KIbXPiYzIwuDbM2K1+YOwSGjwA==} + /@algolia/cache-browser-local-storage/4.11.0: + resolution: {integrity: sha512-4sr9vHIG1fVA9dONagdzhsI/6M5mjs/qOe2xUP0yBmwsTsuwiZq3+Xu6D3dsxsuFetcJgC6ydQoCW8b7fDJHYQ==} dependencies: - '@algolia/cache-common': 4.10.5 + '@algolia/cache-common': 4.11.0 + dev: true + + /@algolia/cache-common/4.11.0: + resolution: {integrity: sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw==} dev: true - /@algolia/client-account/4.10.5: - resolution: {integrity: sha512-I9UkSS2glXm7RBZYZIALjBMmXSQbw/fI/djPcBHxiwXIheNIlqIFl2SNPkvihpPF979BSkzjqdJNRPhE1vku3Q==} + /@algolia/cache-in-memory/4.11.0: + resolution: {integrity: sha512-aBz+stMSTBOBaBEQ43zJXz2DnwS7fL6dR0e2myehAgtfAWlWwLDHruc/98VOy1ZAcBk1blE2LCU02bT5HekGxQ==} dependencies: - '@algolia/client-common': 4.10.5 - '@algolia/client-search': 4.10.5 - '@algolia/transporter': 4.10.5 + '@algolia/cache-common': 4.11.0 dev: true - /@algolia/client-analytics/4.10.5: - resolution: {integrity: sha512-h2owwJSkovPxzc+xIsjY1pMl0gj+jdVwP9rcnGjlaTY2fqHbSLrR9yvGyyr6305LvTppxsQnfAbRdE/5Z3eFxw==} + /@algolia/client-account/4.11.0: + resolution: {integrity: sha512-jwmFBoUSzoMwMqgD3PmzFJV/d19p1RJXB6C1ADz4ju4mU7rkaQLtqyZroQpheLoU5s5Tilmn/T8/0U2XLoJCRQ==} dependencies: - '@algolia/client-common': 4.10.5 - '@algolia/client-search': 4.10.5 - '@algolia/requester-common': 4.10.5 - '@algolia/transporter': 4.10.5 + '@algolia/client-common': 4.11.0 + '@algolia/client-search': 4.11.0 + '@algolia/transporter': 4.11.0 dev: true - /@algolia/client-common/4.10.5: - resolution: {integrity: sha512-21FAvIai5qm8DVmZHm2Gp4LssQ/a0nWwMchAx+1hIRj1TX7OcdW6oZDPyZ8asQdvTtK7rStQrRnD8a95SCUnzA==} + /@algolia/client-analytics/4.11.0: + resolution: {integrity: sha512-v5U9585aeEdYml7JqggHAj3E5CQ+jPwGVztPVhakBk8H/cmLyPS2g8wvmIbaEZCHmWn4TqFj3EBHVYxAl36fSA==} dependencies: - '@algolia/requester-common': 4.10.5 - '@algolia/transporter': 4.10.5 + '@algolia/client-common': 4.11.0 + '@algolia/client-search': 4.11.0 + '@algolia/requester-common': 4.11.0 + '@algolia/transporter': 4.11.0 dev: true - /@algolia/client-personalization/4.10.5: - resolution: {integrity: sha512-nH+IyFKBi8tCyzGOanJTbXC5t4dspSovX3+ABfmwKWUYllYzmiQNFUadpb3qo+MLA3jFx5IwBesjneN6dD5o3w==} + /@algolia/client-common/4.11.0: + resolution: {integrity: sha512-Qy+F+TZq12kc7tgfC+FM3RvYH/Ati7sUiUv/LkvlxFwNwNPwWGoZO81AzVSareXT/ksDDrabD4mHbdTbBPTRmQ==} dependencies: - '@algolia/client-common': 4.10.5 - '@algolia/requester-common': 4.10.5 - '@algolia/transporter': 4.10.5 + '@algolia/requester-common': 4.11.0 + '@algolia/transporter': 4.11.0 dev: true - /@algolia/client-search/4.10.5: - resolution: {integrity: sha512-1eQFMz9uodrc5OM+9HeT+hHcfR1E1AsgFWXwyJ9Q3xejA2c1c4eObGgOgC9ZoshuHHdptaTN1m3rexqAxXRDBg==} + /@algolia/client-personalization/4.11.0: + resolution: {integrity: sha512-mI+X5IKiijHAzf9fy8VSl/GTT67dzFDnJ0QAM8D9cMPevnfX4U72HRln3Mjd0xEaYUOGve8TK/fMg7d3Z5yG6g==} dependencies: - '@algolia/client-common': 4.10.5 - '@algolia/requester-common': 4.10.5 - '@algolia/transporter': 4.10.5 + '@algolia/client-common': 4.11.0 + '@algolia/requester-common': 4.11.0 + '@algolia/transporter': 4.11.0 dev: true - /@algolia/logger-common/4.10.5: - resolution: {integrity: sha512-gRJo9zt1UYP4k3woEmZm4iuEBIQd/FrArIsjzsL/b+ihNoOqIxZKTSuGFU4UUZOEhvmxDReiA4gzvQXG+TMTmA==} + /@algolia/client-search/4.11.0: + resolution: {integrity: sha512-iovPLc5YgiXBdw2qMhU65sINgo9umWbHFzInxoNErWnYoTQWfXsW6P54/NlKx5uscoLVjSf+5RUWwFu5BX+lpw==} + dependencies: + '@algolia/client-common': 4.11.0 + '@algolia/requester-common': 4.11.0 + '@algolia/transporter': 4.11.0 + dev: true + + /@algolia/logger-common/4.11.0: + resolution: {integrity: sha512-pRMJFeOY8hoWKIxWuGHIrqnEKN/kqKh7UilDffG/+PeEGxBuku+Wq5CfdTFG0C9ewUvn8mAJn5BhYA5k8y0Jqg==} dev: true - /@algolia/logger-console/4.10.5: - resolution: {integrity: sha512-4WfIbn4253EDU12u9UiYvz+QTvAXDv39mKNg9xSoMCjKE5szcQxfcSczw2byc6pYhahOJ9PmxPBfs1doqsdTKQ==} + /@algolia/logger-console/4.11.0: + resolution: {integrity: sha512-wXztMk0a3VbNmYP8Kpc+F7ekuvaqZmozM2eTLok0XIshpAeZ/NJDHDffXK2Pw+NF0wmHqurptLYwKoikjBYvhQ==} dependencies: - '@algolia/logger-common': 4.10.5 + '@algolia/logger-common': 4.11.0 dev: true - /@algolia/requester-browser-xhr/4.10.5: - resolution: {integrity: sha512-53/MURQEqtK+bGdfq4ITSPwTh5hnADU99qzvpAINGQveUFNSFGERipJxHjTJjIrjFz3vxj5kKwjtxDnU6ygO9g==} + /@algolia/requester-browser-xhr/4.11.0: + resolution: {integrity: sha512-Fp3SfDihAAFR8bllg8P5ouWi3+qpEVN5e7hrtVIYldKBOuI/qFv80Zv/3/AMKNJQRYglS4zWyPuqrXm58nz6KA==} dependencies: - '@algolia/requester-common': 4.10.5 + '@algolia/requester-common': 4.11.0 dev: true - /@algolia/requester-common/4.10.5: - resolution: {integrity: sha512-UkVa1Oyuj6NPiAEt5ZvrbVopEv1m/mKqjs40KLB+dvfZnNcj+9Fry4Oxnt15HMy/HLORXsx4UwcthAvBuOXE9Q==} + /@algolia/requester-common/4.11.0: + resolution: {integrity: sha512-+cZGe/9fuYgGuxjaBC+xTGBkK7OIYdfapxhfvEf03dviLMPmhmVYFJtJlzAjQ2YmGDJpHrGgAYj3i/fbs8yhiA==} dev: true - /@algolia/requester-node-http/4.10.5: - resolution: {integrity: sha512-aNEKVKXL4fiiC+bS7yJwAHdxln81ieBwY3tsMCtM4zF9f5KwCzY2OtN4WKEZa5AAADVcghSAUdyjs4AcGUlO5w==} + /@algolia/requester-node-http/4.11.0: + resolution: {integrity: sha512-qJIk9SHRFkKDi6dMT9hba8X1J1z92T5AZIgl+tsApjTGIRQXJLTIm+0q4yOefokfu4CoxYwRZ9QAq+ouGwfeOg==} dependencies: - '@algolia/requester-common': 4.10.5 + '@algolia/requester-common': 4.11.0 dev: true - /@algolia/transporter/4.10.5: - resolution: {integrity: sha512-F8DLkmIlvCoMwSCZA3FKHtmdjH3o5clbt0pi2ktFStVNpC6ZDmY307HcK619bKP5xW6h8sVJhcvrLB775D2cyA==} + /@algolia/transporter/4.11.0: + resolution: {integrity: sha512-k4dyxiaEfYpw4UqybK9q7lrFzehygo6KV3OCYJMMdX0IMWV0m4DXdU27c1zYRYtthaFYaBzGF4Kjcl8p8vxCKw==} dependencies: - '@algolia/cache-common': 4.10.5 - '@algolia/logger-common': 4.10.5 - '@algolia/requester-common': 4.10.5 + '@algolia/cache-common': 4.11.0 + '@algolia/logger-common': 4.11.0 + '@algolia/requester-common': 4.11.0 dev: true - /@ampproject/remapping/1.0.1: - resolution: {integrity: sha512-Ta9bMA3EtUHDaZJXqUoT5cn/EecwOp+SXpKJqxDbDuMbLvEMu6YTyDDuvTWeStODfdmXyfMo7LymQyPkN3BicA==} + /@ampproject/remapping/1.0.2: + resolution: {integrity: sha512-SncaVxs+E3EdoA9xJgHfWPxZfowAgeIsd71VpqCKP6KNKm6s7zSqqvUc70UpKUFsrV3dAmy6qxHoIj5NG+3DiA==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/resolve-uri': 1.0.0 sourcemap-codec: 1.4.8 dev: true - /@babel/code-frame/7.14.5: - resolution: {integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.14.5 - - /@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.4: + resolution: {integrity: sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==} engines: {node: '>=6.9.0'} - /@babel/core/7.15.5: - resolution: {integrity: sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.14.5 - '@babel/generator': 7.15.4 - '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.5 - '@babel/helper-module-transforms': 7.15.7 - '@babel/helpers': 7.15.4 - '@babel/parser': 7.15.7 - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 - convert-source-map: 1.8.0 - debug: 4.3.2 - gensync: 1.0.0-beta.2 - json5: 2.2.0 - semver: 6.3.0 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/core/7.15.8: - resolution: {integrity: sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==} + /@babel/core/7.16.5: + resolution: {integrity: sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==} 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.5 + '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.16.5 + '@babel/helper-module-transforms': 7.16.5 + '@babel/helpers': 7.16.5 + '@babel/parser': 7.16.6 + '@babel/template': 7.16.0 + '@babel/traverse': 7.16.5 + '@babel/types': 7.16.0 convert-source-map: 1.8.0 - debug: 4.3.2 + debug: 4.3.3 gensync: 1.0.0-beta.2 json5: 2.2.0 semver: 6.3.0 source-map: 0.5.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/generator/7.15.4: - resolution: {integrity: sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==} + /@babel/generator/7.16.5: + resolution: {integrity: sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==} 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 - dev: true - /@babel/generator/7.15.8: - resolution: {integrity: sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==} + /@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 - jsesc: 2.5.2 - source-map: 0.5.7 - - /@babel/helper-annotate-as-pure/7.15.4: - resolution: {integrity: sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==} - 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.5: - resolution: {integrity: sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==} + /@babel/helper-compilation-targets/7.16.3_@babel+core@7.16.5: + resolution: {integrity: sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.15.0 - '@babel/core': 7.15.5 + '@babel/compat-data': 7.16.4 + '@babel/core': 7.16.5 '@babel/helper-validator-option': 7.14.5 - browserslist: 4.17.1 + browserslist: 4.19.1 semver: 6.3.0 - dev: true - /@babel/helper-compilation-targets/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==} + /@babel/helper-create-class-features-plugin/7.16.5_@babel+core@7.16.5: + resolution: {integrity: sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.15.0 - '@babel/core': 7.15.8 - '@babel/helper-validator-option': 7.14.5 - browserslist: 4.17.1 - semver: 6.3.0 - dev: false - - /@babel/helper-create-class-features-plugin/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==} - 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.5 + '@babel/helper-annotate-as-pure': 7.16.0 + '@babel/helper-environment-visitor': 7.16.5 + '@babel/helper-function-name': 7.16.0 + '@babel/helper-member-expression-to-functions': 7.16.5 + '@babel/helper-optimise-call-expression': 7.16.0 + '@babel/helper-replace-supers': 7.16.5 + '@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-environment-visitor/7.16.5: + resolution: {integrity: sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==} 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/types': 7.16.0 - /@babel/helper-get-function-arity/7.15.4: - resolution: {integrity: sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==} + /@babel/helper-function-name/7.16.0: + resolution: {integrity: sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==} engines: {node: '>=6.9.0'} dependencies: - '@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-hoist-variables/7.15.4: - resolution: {integrity: sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==} + /@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-member-expression-to-functions/7.15.4: - resolution: {integrity: sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==} + /@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-module-imports/7.15.4: - resolution: {integrity: sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==} + /@babel/helper-member-expression-to-functions/7.16.5: + resolution: {integrity: sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 + dev: false - /@babel/helper-module-transforms/7.15.7: - resolution: {integrity: sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==} + /@babel/helper-module-imports/7.16.0: + resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} 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-validator-identifier': 7.15.7 - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/types': 7.16.0 - /@babel/helper-module-transforms/7.15.8: - resolution: {integrity: sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==} + /@babel/helper-module-transforms/7.16.5: + resolution: {integrity: sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==} 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-environment-visitor': 7.16.5 + '@babel/helper-module-imports': 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.5 + '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color - dev: false - /@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 + dev: false - /@babel/helper-plugin-utils/7.14.5: - resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==} + /@babel/helper-plugin-utils/7.16.5: + resolution: {integrity: sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==} engines: {node: '>=6.9.0'} - /@babel/helper-replace-supers/7.15.4: - resolution: {integrity: sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==} + /@babel/helper-replace-supers/7.16.5: + resolution: {integrity: sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ==} 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-environment-visitor': 7.16.5 + '@babel/helper-member-expression-to-functions': 7.16.5 + '@babel/helper-optimise-call-expression': 7.16.0 + '@babel/traverse': 7.16.5 + '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color + dev: false - /@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==} @@ -1135,305 +1154,280 @@ 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.5: + resolution: {integrity: sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==} 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.5 + '@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.7: - resolution: {integrity: sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==} - engines: {node: '>=6.0.0'} - hasBin: true - - /@babel/parser/7.15.8: - resolution: {integrity: sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==} + /@babel/parser/7.16.6: + resolution: {integrity: sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==} 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.5: + resolution: {integrity: sha512-aMw3gPJYa2F6mVnL6QuHr9NtAScspBPTVXU2kaup7FVl02Hr4tY2diaGNdismAOmiroWa/2ENy4EFyoz81ACLg==} 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/helper-plugin-utils': 7.16.5 + '@babel/plugin-syntax-pipeline-operator': 7.16.5 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.15.5: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.16.5: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.16.5: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.15.5: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.16.5: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.15.5: - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.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.5: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: false + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.16.5: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true - /@babel/plugin-syntax-jsx/7.14.5: - resolution: {integrity: sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==} + /@babel/plugin-syntax-jsx/7.16.5: + resolution: {integrity: sha512-42OGssv9NPk4QHKVgIHlzeLgPOW5rGgfV5jzG90AhcXXIv6hu/eqj63w4VgvRxdvZY3AlYeDgPiSJ3BqAd1Y6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.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.5_@babel+core@7.16.5: + resolution: {integrity: sha512-42OGssv9NPk4QHKVgIHlzeLgPOW5rGgfV5jzG90AhcXXIv6hu/eqj63w4VgvRxdvZY3AlYeDgPiSJ3BqAd1Y6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 dev: false - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.15.5: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.16.5: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.16.5: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.15.5: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.16.5: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.16.5: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.16.5: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.16.5: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true - /@babel/plugin-syntax-pipeline-operator/7.15.0: - resolution: {integrity: sha512-APuEsBJFWgLasnPi3XS4o7AW24Z8hsX1odmCl9it1fpIA38E2+rSWk6zy1MpFQYKGyphlh84dJB4MtDwI0XN5w==} + /@babel/plugin-syntax-pipeline-operator/7.16.5: + resolution: {integrity: sha512-JNPDHcP1DfYkVMREaQtRo6h8aaZBvK/dlKSRJpZcFv3wD9ZDg4qwwYzTmFxY4hTpwSKyty6rqLb6KIP52v11ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.15.5: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.16.5: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true - /@babel/plugin-syntax-typescript/7.14.5_@babel+core@7.15.5: - resolution: {integrity: sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==} + /@babel/plugin-syntax-typescript/7.16.5_@babel+core@7.16.5: + resolution: {integrity: sha512-/d4//lZ1Vqb4mZ5xTep3dDK888j7BGM/iKqBmndBaoYAFPlPKrGU608VVBz5JeyAb6YQDjRu1UKqj86UhwWVgw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 - dev: true + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.5 - /@babel/plugin-syntax-typescript/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==} + /@babel/plugin-transform-react-jsx-development/7.16.5_@babel+core@7.16.5: + resolution: {integrity: sha512-uQSLacMZSGLCxOw20dzo1dmLlKkd+DsayoV54q3MHXhbqgPzoiGerZQgNPl/Ro8/OcXV2ugfnkx+rxdS0sN5Uw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/plugin-transform-react-jsx': 7.16.5_@babel+core@7.16.5 dev: false - /@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-self/7.16.5_@babel+core@7.16.5: + resolution: {integrity: sha512-fvwq+jir1Vn4f5oBS0H/J/gD5CneTD53MHs+NMjlHcha4Sq35fwxI5RtmJGEBXO+M93f/eeD9cAhRPhmLyJiVw==} 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.5 + '@babel/helper-plugin-utils': 7.16.5 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-source/7.16.5_@babel+core@7.16.5: + resolution: {integrity: sha512-/eP+nZywJntGLjSPjksAnM9/ELIs3RbiEuTu2/zAOzwwBcfiu+m/iptEq1lERUUtSXubYSHVnVHMr13GR+TwPw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-plugin-utils': 7.16.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/7.16.5_@babel+core@7.16.5: + resolution: {integrity: sha512-+arLIz1d7kmwX0fKxTxbnoeG85ONSnLpvdODa4P3pc1sS7CV1hfmtYWufkW/oYsPnkDrEeQFxhUWcFnrXW7jQQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.16.5 + '@babel/helper-annotate-as-pure': 7.16.0 + '@babel/helper-module-imports': 7.16.0 + '@babel/helper-plugin-utils': 7.16.5 + '@babel/plugin-syntax-jsx': 7.16.5_@babel+core@7.16.5 + '@babel/types': 7.16.0 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-typescript/7.16.1_@babel+core@7.16.5: + 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-annotate-as-pure': 7.15.4 - '@babel/helper-module-imports': 7.15.4 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-jsx': 7.14.5_@babel+core@7.15.8 - '@babel/types': 7.15.6 - dev: false - - /@babel/plugin-transform-typescript/7.15.8_@babel+core@7.15.8: - resolution: {integrity: sha512-ZXIkJpbaf6/EsmjeTbiJN/yMxWPFWvlr7sEG1P95Xb4S4IBcrf2n7s/fItIhsAmOf8oSh3VJPDppO6ExfAfKRQ==} - 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/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.15.8 + '@babel/core': 7.16.5 + '@babel/helper-create-class-features-plugin': 7.16.5_@babel+core@7.16.5 + '@babel/helper-plugin-utils': 7.16.5 + '@babel/plugin-syntax-typescript': 7.16.5_@babel+core@7.16.5 transitivePeerDependencies: - supports-color dev: false - /@babel/runtime/7.15.4: - resolution: {integrity: sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==} + /@babel/runtime/7.16.5: + resolution: {integrity: sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==} 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.6: + resolution: {integrity: sha512-wjildVe951w1IPEPN4G76j+y5JFZfJN9gdyP8o9zd61qbiVEecAgORKskK1D/7VrJZrZS+nxDbhj2akEFU2RJw==} 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.6 + '@babel/types': 7.16.0 - /@babel/traverse/7.15.4: - resolution: {integrity: sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==} + /@babel/traverse/7.16.5: + resolution: {integrity: sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==} 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 - debug: 4.3.2 + '@babel/code-frame': 7.16.0 + '@babel/generator': 7.16.5 + '@babel/helper-environment-visitor': 7.16.5 + '@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.6 + '@babel/types': 7.16.0 + debug: 4.3.3 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 @@ -1452,47 +1446,52 @@ packages: engines: {node: '>= 12'} dev: true - /@cspotcode/source-map-support/0.6.1: - resolution: {integrity: sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==} + /@cspotcode/source-map-support/0.7.0: + resolution: {integrity: sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==} engines: {node: '>=12'} dependencies: '@cspotcode/source-map-consumer': 0.8.0 dev: true - /@docsearch/css/1.0.0-alpha.28: - resolution: {integrity: sha512-1AhRzVdAkrWwhaxTX6/R7SnFHz8yLz1W8I/AldlTrfbNvZs9INk1FZiEFTJdgHaP68nhgQNWSGlQiDiI3y2RYg==} + /@docsearch/css/3.0.0-alpha.42: + resolution: {integrity: sha512-AGwI2AXUacYhVOHmYnsXoYDJKO6Ued2W+QO80GERbMLhC7GH5tfvtW5REs/s7jSdcU3vzFoxT8iPDBCh/PkrlQ==} dev: true - /@docsearch/js/1.0.0-alpha.28: - resolution: {integrity: sha512-2g7aPhBy7FoEyeZW2G3LYHWVa8CFvqyozEz8PXt3hyywdFcmEIqmoCRwn8kboVftrOKCjtPcuLCewsaBoB3uiw==} + /@docsearch/js/3.0.0-alpha.42: + resolution: {integrity: sha512-8rxxsvFKS5GzDX2MYMETeib4EOwAkoxVUHFP5R4tSENXojhuCEy3np+k3Q0c9WPT+MUmWLxKJab5jyl0jmaeBQ==} dependencies: - '@docsearch/react': 1.0.0-alpha.28 - preact: 10.5.14 + '@docsearch/react': 3.0.0-alpha.42 + preact: 10.6.4 transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' - react - react-dom dev: true - /@docsearch/react/1.0.0-alpha.28: - resolution: {integrity: sha512-XjJOnCBXn+UZmtuDmgzlVIHnnvh6yHVwG4aFq8AXN6xJEIX3f180FvGaowFWAxgdtHplJxFGux0Xx4piHqBzIw==} + /@docsearch/react/3.0.0-alpha.42: + resolution: {integrity: sha512-1aOslZJDxwUUcm2QRNmlEePUgL8P5fOAeFdOLDMctHQkV2iTja9/rKVbkP8FZbIUnZxuuCCn8ErLrjD/oXWOag==} peerDependencies: - react: ^16.8.0 - react-dom: ^16.8.0 - dependencies: - '@docsearch/css': 1.0.0-alpha.28 - '@francoischalifour/autocomplete-core': 1.0.0-alpha.28 - '@francoischalifour/autocomplete-preset-algolia': 1.0.0-alpha.28 - algoliasearch: 4.10.5 + '@types/react': '>= 16.8.0 < 18.0.0' + react: '>= 16.8.0 < 18.0.0' + react-dom: '>= 16.8.0 < 18.0.0' + dependencies: + '@algolia/autocomplete-core': 1.5.0 + '@algolia/autocomplete-preset-algolia': 1.5.0_algoliasearch@4.11.0 + '@docsearch/css': 3.0.0-alpha.42 + algoliasearch: 4.11.0 + transitivePeerDependencies: + - '@algolia/client-search' dev: true - /@emotion/babel-plugin/11.3.0: - resolution: {integrity: sha512-UZKwBV2rADuhRp+ZOGgNWg2eYgbzKzQXfQPtJbu/PLy8onurxlNCLvxMQEvlr1/GudguPI5IU9qIY1+2z1M5bA==} + /@emotion/babel-plugin/11.7.2: + resolution: {integrity: sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ==} 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.5 + '@babel/runtime': 7.16.5 '@emotion/hash': 0.8.0 '@emotion/memoize': 0.7.5 '@emotion/serialize': 1.0.2 @@ -1501,17 +1500,17 @@ packages: escape-string-regexp: 4.0.0 find-root: 1.1.0 source-map: 0.5.7 - stylis: 4.0.10 + stylis: 4.0.13 dev: true - /@emotion/cache/11.4.0: - resolution: {integrity: sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g==} + /@emotion/cache/11.7.1: + resolution: {integrity: sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==} dependencies: '@emotion/memoize': 0.7.5 - '@emotion/sheet': 1.0.2 + '@emotion/sheet': 1.1.0 '@emotion/utils': 1.0.0 '@emotion/weak-memoize': 0.2.5 - stylis: 4.0.10 + stylis: 4.0.13 dev: false /@emotion/hash/0.8.0: @@ -1520,8 +1519,8 @@ packages: /@emotion/memoize/0.7.5: resolution: {integrity: sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==} - /@emotion/react/11.4.1_react@17.0.2: - resolution: {integrity: sha512-pRegcsuGYj4FCdZN6j5vqCALkNytdrKw3TZMekTzNXixRg4wkLsU5QEaBG5LC6l01Vppxlp7FE3aTHpIG5phLg==} + /@emotion/react/11.7.1_react@17.0.2: + resolution: {integrity: sha512-DV2Xe3yhkF1yT4uAUoJcYL1AmrnO5SVsdfvu+fBuS7IbByDeTVx9+wFmvx9Idzv7/78+9Mgx2Hcmr7Fex3tIyw==} peerDependencies: '@babel/core': ^7.0.0 '@types/react': '*' @@ -1532,10 +1531,10 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.15.4 - '@emotion/cache': 11.4.0 + '@babel/runtime': 7.16.5 + '@emotion/cache': 11.7.1 '@emotion/serialize': 1.0.2 - '@emotion/sheet': 1.0.2 + '@emotion/sheet': 1.1.0 '@emotion/utils': 1.0.0 '@emotion/weak-memoize': 0.2.5 hoist-non-react-statics: 3.3.2 @@ -1549,10 +1548,10 @@ packages: '@emotion/memoize': 0.7.5 '@emotion/unitless': 0.7.5 '@emotion/utils': 1.0.0 - csstype: 3.0.9 + csstype: 3.0.10 - /@emotion/sheet/1.0.2: - resolution: {integrity: sha512-QQPB1B70JEVUHuNtzjHftMGv6eC3Y9wqavyarj4x4lg47RACkeSfNo5pxIOKizwS9AEFLohsqoaxGQj4p0vSIw==} + /@emotion/sheet/1.1.0: + resolution: {integrity: sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==} dev: false /@emotion/unitless/0.7.5: @@ -1565,44 +1564,36 @@ packages: resolution: {integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==} dev: false - /@eslint/eslintrc/1.0.3: - resolution: {integrity: sha512-DHI1wDPoKCBPoLZA3qDR91+3te/wDSc1YhKg3jR8NxKKRJq2hwHwcWv31cSwSYvIBrmbENoYMWcenW8uproQqg==} + /@eslint/eslintrc/1.0.5: + resolution: {integrity: sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.2 - espree: 9.0.0 - globals: 13.11.0 + debug: 4.3.3 + espree: 9.2.0 + 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: - supports-color dev: true - /@francoischalifour/autocomplete-core/1.0.0-alpha.28: - resolution: {integrity: sha512-rL9x+72btViw+9icfBKUJjZj87FgjFrD2esuTUqtj4RAX3s4AuVZiN8XEsfjQBSc6qJk31cxlvqZHC/BIyYXgg==} - dev: true - - /@francoischalifour/autocomplete-preset-algolia/1.0.0-alpha.28: - resolution: {integrity: sha512-bprfNmYt1opFUFEtD2XfY/kEsm13bzHQgU80uMjhuK0DJ914IjolT1GytpkdM6tJ4MBvyiJPP+bTtWO+BZ7c7w==} - dev: true - - /@humanwhocodes/config-array/0.6.0: - resolution: {integrity: sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==} + /@humanwhocodes/config-array/0.9.2: + resolution: {integrity: sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.0 - debug: 4.3.2 + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.3 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: @@ -1630,20 +1621,20 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/27.2.4: - resolution: {integrity: sha512-94znCKynPZpDpYHQ6esRJSc11AmONrVkBOBZiD7S+bSubHhrUfbS95EY5HIOxhm4PQO7cnvZkL3oJcY0oMA+Wg==} + /@jest/console/27.4.2: + resolution: {integrity: sha512-xknHThRsPB/To1FUbi6pCe43y58qFC03zfb6R7fDb/FfC7k2R3i1l+izRBJf8DI46KhYGRaF14Eo9A3qbBoixg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.2.4 - '@types/node': 15.14.9 + '@jest/types': 27.4.2 + '@types/node': 16.11.17 chalk: 4.1.2 - jest-message-util: 27.2.4 - jest-util: 27.2.4 + jest-message-util: 27.4.2 + jest-util: 27.4.2 slash: 3.0.0 dev: true - /@jest/core/27.2.4_ts-node@10.2.1: - resolution: {integrity: sha512-UNQLyy+rXoojNm2MGlapgzWhZD1CT1zcHZQYeiD0xE7MtJfC19Q6J5D/Lm2l7i4V97T30usKDoEtjI8vKwWcLg==} + /@jest/core/27.4.5_ts-node@10.4.0: + resolution: {integrity: sha512-3tm/Pevmi8bDsgvo73nX8p/WPng6KWlCyScW10FPEoN1HU4pwI83tJ3TsFvi1FfzsjwUlMNEPowgb/rPau/LTQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -1651,34 +1642,34 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 27.2.4 - '@jest/reporters': 27.2.4 - '@jest/test-result': 27.2.4 - '@jest/transform': 27.2.4 - '@jest/types': 27.2.4 - '@types/node': 15.14.9 + '@jest/console': 27.4.2 + '@jest/reporters': 27.4.5 + '@jest/test-result': 27.4.2 + '@jest/transform': 27.4.5 + '@jest/types': 27.4.2 + '@types/node': 16.11.17 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 exit: 0.1.2 graceful-fs: 4.2.8 - jest-changed-files: 27.2.4 - jest-config: 27.2.4_ts-node@10.2.1 - jest-haste-map: 27.2.4 - jest-message-util: 27.2.4 - jest-regex-util: 27.0.6 - jest-resolve: 27.2.4 - jest-resolve-dependencies: 27.2.4 - jest-runner: 27.2.4 - jest-runtime: 27.2.4 - jest-snapshot: 27.2.4 - jest-util: 27.2.4 - jest-validate: 27.2.4 - jest-watcher: 27.2.4 + jest-changed-files: 27.4.2 + jest-config: 27.4.5_ts-node@10.4.0 + jest-haste-map: 27.4.5 + jest-message-util: 27.4.2 + jest-regex-util: 27.4.0 + jest-resolve: 27.4.5 + jest-resolve-dependencies: 27.4.5 + jest-runner: 27.4.5 + jest-runtime: 27.4.5 + jest-snapshot: 27.4.5 + jest-util: 27.4.2 + jest-validate: 27.4.2 + jest-watcher: 27.4.2 micromatch: 4.0.4 rimraf: 3.0.2 slash: 3.0.0 - strip-ansi: 6.0.0 + strip-ansi: 6.0.1 transitivePeerDependencies: - bufferutil - canvas @@ -1687,39 +1678,39 @@ packages: - utf-8-validate dev: true - /@jest/environment/27.2.4: - resolution: {integrity: sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==} + /@jest/environment/27.4.4: + resolution: {integrity: sha512-q+niMx7cJgt/t/b6dzLOh4W8Ef/8VyKG7hxASK39jakijJzbFBGpptx3RXz13FFV7OishQ9lTbv+dQ5K3EhfDQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/fake-timers': 27.2.4 - '@jest/types': 27.2.4 - '@types/node': 15.14.9 - jest-mock: 27.2.4 + '@jest/fake-timers': 27.4.2 + '@jest/types': 27.4.2 + '@types/node': 16.11.17 + jest-mock: 27.4.2 dev: true - /@jest/fake-timers/27.2.4: - resolution: {integrity: sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==} + /@jest/fake-timers/27.4.2: + resolution: {integrity: sha512-f/Xpzn5YQk5adtqBgvw1V6bF8Nx3hY0OIRRpCvWcfPl0EAjdqWPdhH3t/3XpiWZqtjIEHDyMKP9ajpva1l4Zmg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.2.4 - '@sinonjs/fake-timers': 8.0.1 - '@types/node': 15.14.9 - jest-message-util: 27.2.4 - jest-mock: 27.2.4 - jest-util: 27.2.4 + '@jest/types': 27.4.2 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 16.11.17 + jest-message-util: 27.4.2 + jest-mock: 27.4.2 + jest-util: 27.4.2 dev: true - /@jest/globals/27.2.4: - resolution: {integrity: sha512-DRsRs5dh0i+fA9mGHylTU19+8fhzNJoEzrgsu+zgJoZth3x8/0juCQ8nVVdW1er4Cqifb/ET7/hACYVPD0dBEA==} + /@jest/globals/27.4.4: + resolution: {integrity: sha512-bqpqQhW30BOreXM8bA8t8JbOQzsq/WnPTnBl+It3UxAD9J8yxEAaBEylHx1dtBapAr/UBk8GidXbzmqnee8tYQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/environment': 27.2.4 - '@jest/types': 27.2.4 - expect: 27.2.4 + '@jest/environment': 27.4.4 + '@jest/types': 27.4.2 + expect: 27.4.2 dev: true - /@jest/reporters/27.2.4: - resolution: {integrity: sha512-LHeSdDnDZkDnJ8kvnjcqV8P1Yv/32yL4d4XfR5gBiy3xGO0onwll1QEbvtW96fIwhx2nejug0GTaEdNDoyr3fQ==} + /@jest/reporters/27.4.5: + resolution: {integrity: sha512-3orsG4vi8zXuBqEoy2LbnC1kuvkg1KQUgqNxmxpQgIOQEPeV0onvZu+qDQnEoX8qTQErtqn/xzcnbpeTuOLSiA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -1728,24 +1719,25 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.2.4 - '@jest/test-result': 27.2.4 - '@jest/transform': 27.2.4 - '@jest/types': 27.2.4 + '@jest/console': 27.4.2 + '@jest/test-result': 27.4.2 + '@jest/transform': 27.4.5 + '@jest/types': 27.4.2 + '@types/node': 16.11.17 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 glob: 7.2.0 graceful-fs: 4.2.8 - istanbul-lib-coverage: 3.0.1 + istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 4.0.3 istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.0 - istanbul-reports: 3.0.2 - jest-haste-map: 27.2.4 - jest-resolve: 27.2.4 - jest-util: 27.2.4 - jest-worker: 27.2.4 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.2 + jest-haste-map: 27.4.5 + jest-resolve: 27.4.5 + jest-util: 27.4.2 + jest-worker: 27.4.5 slash: 3.0.0 source-map: 0.6.1 string-length: 4.0.2 @@ -1755,8 +1747,8 @@ packages: - supports-color dev: true - /@jest/source-map/27.0.6: - resolution: {integrity: sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==} + /@jest/source-map/27.4.0: + resolution: {integrity: sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: callsites: 3.1.0 @@ -1764,44 +1756,44 @@ packages: source-map: 0.6.1 dev: true - /@jest/test-result/27.2.4: - resolution: {integrity: sha512-eU+PRo0+lIS01b0dTmMdVZ0TtcRSxEaYquZTRFMQz6CvsehGhx9bRzi9Zdw6VROviJyv7rstU+qAMX5pNBmnfQ==} + /@jest/test-result/27.4.2: + resolution: {integrity: sha512-kr+bCrra9jfTgxHXHa2UwoQjxvQk3Am6QbpAiJ5x/50LW8llOYrxILkqY0lZRW/hu8FXesnudbql263+EW9iNA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/console': 27.2.4 - '@jest/types': 27.2.4 - '@types/istanbul-lib-coverage': 2.0.3 + '@jest/console': 27.4.2 + '@jest/types': 27.4.2 + '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/27.2.4: - resolution: {integrity: sha512-fpk5eknU3/DXE2QCCG1wv/a468+cfPo3Asu6d6yUtM9LOPh709ubZqrhuUOYfM8hXMrIpIdrv1CdCrWWabX0rQ==} + /@jest/test-sequencer/27.4.5: + resolution: {integrity: sha512-n5woIn/1v+FT+9hniymHPARA9upYUmfi5Pw9ewVwXCDlK4F5/Gkees9v8vdjGdAIJ2MPHLHodiajLpZZanWzEQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/test-result': 27.2.4 + '@jest/test-result': 27.4.2 graceful-fs: 4.2.8 - jest-haste-map: 27.2.4 - jest-runtime: 27.2.4 + jest-haste-map: 27.4.5 + jest-runtime: 27.4.5 transitivePeerDependencies: - supports-color dev: true - /@jest/transform/27.2.4: - resolution: {integrity: sha512-n5FlX2TH0oQGwyVDKPxdJ5nI2sO7TJBFe3u3KaAtt7TOiV4yL+Y+rSFDl+Ic5MpbiA/eqXmLAQxjnBmWgS2rEA==} + /@jest/transform/27.4.5: + resolution: {integrity: sha512-PuMet2UlZtlGzwc6L+aZmR3I7CEBpqadO03pU40l2RNY2fFJ191b9/ITB44LNOhVtsyykx0OZvj0PCyuLm7Eew==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.15.5 - '@jest/types': 27.2.4 - babel-plugin-istanbul: 6.0.0 + '@babel/core': 7.16.5 + '@jest/types': 27.4.2 + babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 1.8.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.8 - jest-haste-map: 27.2.4 - jest-regex-util: 27.0.6 - jest-util: 27.2.4 + jest-haste-map: 27.4.5 + jest-regex-util: 27.4.0 + jest-util: 27.4.2 micromatch: 4.0.4 - pirates: 4.0.1 + pirates: 4.0.4 slash: 3.0.0 source-map: 0.6.1 write-file-atomic: 3.0.3 @@ -1809,24 +1801,13 @@ packages: - supports-color dev: true - /@jest/types/27.1.1: - resolution: {integrity: sha512-yqJPDDseb0mXgKqmNqypCsb85C22K1aY5+LUxh7syIM9n/b0AsaltxNy+o6tt29VcfGDpYEve175bm3uOhcehA==} + /@jest/types/27.4.2: + resolution: {integrity: sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/istanbul-lib-coverage': 2.0.3 + '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 15.14.9 - '@types/yargs': 16.0.4 - chalk: 4.1.2 - dev: true - - /@jest/types/27.2.4: - resolution: {integrity: sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/istanbul-lib-coverage': 2.0.3 - '@types/istanbul-reports': 3.0.1 - '@types/node': 15.14.9 + '@types/node': 16.11.17 '@types/yargs': 16.0.4 chalk: 4.1.2 dev: true @@ -1836,30 +1817,47 @@ packages: engines: {node: '>=6.0.0'} dev: true - /@microsoft/api-extractor-model/7.13.9: - resolution: {integrity: sha512-t/XKTr8MlHRWgDr1fkyCzTQRR5XICf/WzIFs8yw1JLU8Olw99M3by4/dtpOZNskfqoW+J8NwOxovduU2csi4Ww==} + /@mapbox/node-pre-gyp/1.0.8: + resolution: {integrity: sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg==} + hasBin: true + dependencies: + detect-libc: 1.0.3 + https-proxy-agent: 5.0.0 + make-dir: 3.1.0 + node-fetch: 2.6.6 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.3.5 + tar: 6.1.11 + transitivePeerDependencies: + - supports-color + dev: false + + /@microsoft/api-extractor-model/7.15.2: + resolution: {integrity: sha512-qgxKX/s6vo3nCVLhP0Ds7555QrErhcYHEok5/KyEZ7iR8J5M5oldD1eJJQmtEdVF5IzmnPPbxx1nRvfgA674LQ==} dependencies: '@microsoft/tsdoc': 0.13.2 '@microsoft/tsdoc-config': 0.15.2 - '@rushstack/node-core-library': 3.41.0 + '@rushstack/node-core-library': 3.44.3 dev: true - /@microsoft/api-extractor/7.18.11: - resolution: {integrity: sha512-WfN5MZry4TrF60OOcGadFDsGECF9JNKNT+8P/8crYAumAYQRitI2cUiQRlCWrgmFgCWNezsNZeI/2BggdnUqcg==} + /@microsoft/api-extractor/7.19.3: + resolution: {integrity: sha512-GZe+R3K4kh2X425iOHkPbByysB7FN0592mPPA6vNj5IhyhlPHgdZS6m6AmOZOIxMS4euM+SBKzEJEp3oC+WsOQ==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.13.9 + '@microsoft/api-extractor-model': 7.15.2 '@microsoft/tsdoc': 0.13.2 '@microsoft/tsdoc-config': 0.15.2 - '@rushstack/node-core-library': 3.41.0 - '@rushstack/rig-package': 0.3.1 - '@rushstack/ts-command-line': 4.9.1 + '@rushstack/node-core-library': 3.44.3 + '@rushstack/rig-package': 0.3.7 + '@rushstack/ts-command-line': 4.10.6 colors: 1.2.5 lodash: 4.17.21 resolve: 1.17.0 semver: 7.3.5 source-map: 0.6.1 - typescript: 4.4.3 + typescript: 4.5.4 dev: true /@microsoft/tsdoc-config/0.15.2: @@ -1882,7 +1880,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: @@ -1903,12 +1901,12 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 - /@peculiar/asn1-schema/2.0.38: - resolution: {integrity: sha512-zZ64UpCTm9me15nuCpPgJghSdbEm8atcDQPCyK+bKXjZAQ1735NCZXCSCfbckbQ4MH36Rm9403n/qMq77LFDzQ==} + /@peculiar/asn1-schema/2.0.44: + resolution: {integrity: sha512-uaCnjQ9A9WwQSMuDJcNOCYEPXTahgKbFMvI7eMOMd8lXgx0J1eU7F3BoMsK5PFxa3dVUxjSQbaOjfgGoeHGgoQ==} dependencies: '@types/asn1js': 2.0.2 - asn1js: 2.1.1 - pvtsutils: 1.2.0 + asn1js: 2.2.0 + pvtsutils: 1.2.1 tslib: 2.3.1 dev: true @@ -1919,100 +1917,99 @@ packages: tslib: 2.3.1 dev: true - /@peculiar/webcrypto/1.1.7: - resolution: {integrity: sha512-aCNLYdHZkvGH+T8/YBOY33jrVGVuLIa3bpizeHXqwN+P4ZtixhA+kxEEWM1amZwUY2nY/iuj+5jdZn/zB7EPPQ==} + /@peculiar/webcrypto/1.2.3: + resolution: {integrity: sha512-q7wDfZy3k/tpnsYB23/MyyDkjn6IdHh8w+xwoVMS5cu6CjVoFzngXDZEOOuSE4zus2yO6ciQhhHxd4XkLpwVnQ==} engines: {node: '>=10.12.0'} dependencies: - '@peculiar/asn1-schema': 2.0.38 + '@peculiar/asn1-schema': 2.0.44 '@peculiar/json-schema': 1.1.12 - pvtsutils: 1.2.0 + pvtsutils: 1.2.1 tslib: 2.3.1 - webcrypto-core: 1.2.1 + webcrypto-core: 1.4.0 dev: true - /@polka/url/1.0.0-next.20: - resolution: {integrity: sha512-88p7+M0QGxKpmnkfXjS4V26AnoC/eiqZutE8GLdaI5X12NY75bXSdTY9NkmYb2Xyk1O+MmkuO6Frmsj84V6I8Q==} + /@polka/url/1.0.0-next.21: + resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true - /@rollup/plugin-alias/3.1.5_rollup@2.57.0: - resolution: {integrity: sha512-yzUaSvCC/LJPbl9rnzX3HN7vy0tq7EzHoEiQl1ofh4n5r2Rd5bj/+zcJgaGA76xbw95/JjWQyvHg9rOJp2y0oQ==} + /@rollup/plugin-alias/3.1.8_rollup@2.62.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.57.0 + rollup: 2.62.0 slash: 3.0.0 dev: true - /@rollup/plugin-commonjs/21.0.0_rollup@2.57.0: - resolution: {integrity: sha512-XDQimjHl0kNotAV5lLo34XoygaI0teqiKGJ100B3iCU8+15YscJPeqk2KqkqD3NIe1H8ZTUo5lYjUFZyEgASTw==} + /@rollup/plugin-commonjs/21.0.1_rollup@2.62.0: + resolution: {integrity: sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==} engines: {node: '>= 8.0.0'} peerDependencies: rollup: ^2.38.3 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.57.0 + '@rollup/pluginutils': 3.1.0_rollup@2.62.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.57.0 + rollup: 2.62.0 dev: true - /@rollup/plugin-dynamic-import-vars/1.4.0_rollup@2.57.0: - resolution: {integrity: sha512-oDeBDYJkD+VleSqSmWZo4h7iMHFYgEx/XVnJJZhCGuqkrS9QwOubESyWMqujBuUMeIByv954RvBTFvkAKlLh4A==} + /@rollup/plugin-dynamic-import-vars/1.4.2_rollup@2.62.0: + resolution: {integrity: sha512-SEaS9Pf0RyaZ/oJ1knLZT+Fu0X6DlyTfUcoE7XKkiKJjNaB+8SLoHmDVRhomo5RpWHPyd+B00G/bE5R5+Q+HEg==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.57.0 + '@rollup/pluginutils': 4.1.2 estree-walker: 2.0.2 - globby: 11.0.4 + fast-glob: 3.2.7 magic-string: 0.25.7 - rollup: 2.57.0 + rollup: 2.62.0 dev: true - /@rollup/plugin-json/4.1.0_rollup@2.57.0: + /@rollup/plugin-json/4.1.0_rollup@2.62.0: resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.57.0 - rollup: 2.57.0 + '@rollup/pluginutils': 3.1.0_rollup@2.62.0 + rollup: 2.62.0 dev: true - /@rollup/plugin-node-resolve/13.0.5_rollup@2.57.0: - resolution: {integrity: sha512-mVaw6uxtvuGx/XCI4qBQXsDZJUfyx5vp39iE0J/7Hd6wDhEbjHr6aES7Nr9yWbuE0BY+oKp6N7Bq6jX5NCGNmQ==} + /@rollup/plugin-node-resolve/13.1.1_rollup@2.62.0: + resolution: {integrity: sha512-6QKtRevXLrmEig9UiMYt2fSvee9TyltGRfw+qSs6xjUnxwjOzTOqy+/Lpxsgjb8mJn1EQNbCDAvt89O4uzL5kw==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^2.42.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.57.0 + '@rollup/pluginutils': 3.1.0_rollup@2.62.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.57.0 + rollup: 2.62.0 dev: true - /@rollup/plugin-typescript/8.2.5_283b0408a190511f1240c12469d64cd5: - resolution: {integrity: sha512-QL/LvDol/PAGB2O0S7/+q2HpSUNodpw7z6nGn9BfoVCPOZ0r4EALrojFU29Bkoi2Hr2jgTocTejJ5GGWZfOxbQ==} + /@rollup/plugin-typescript/8.3.0_rollup@2.62.0+tslib@2.3.1: + resolution: {integrity: sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA==} engines: {node: '>=8.0.0'} peerDependencies: rollup: ^2.14.0 tslib: '*' typescript: '>=3.7.0' dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.57.0 + '@rollup/pluginutils': 3.1.0_rollup@2.62.0 resolve: 1.20.0 - rollup: 2.57.0 + rollup: 2.62.0 tslib: 2.3.1 - typescript: 4.4.3 dev: true - /@rollup/pluginutils/3.1.0_rollup@2.57.0: + /@rollup/pluginutils/3.1.0_rollup@2.62.0: resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -2021,18 +2018,18 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.0 - rollup: 2.57.0 + rollup: 2.62.0 dev: true - /@rollup/pluginutils/4.1.1: - resolution: {integrity: sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==} + /@rollup/pluginutils/4.1.2: + resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==} engines: {node: '>= 8.0.0'} dependencies: estree-walker: 2.0.2 picomatch: 2.3.0 - /@rushstack/node-core-library/3.41.0: - resolution: {integrity: sha512-JxdmqR+SHU04jTDaZhltMZL3/XTz2ZZM47DTN+FSPUGUVp6WmxLlvJnT5FoHrOZWUjL/FoIlZUdUPTSXjTjIcg==} + /@rushstack/node-core-library/3.44.3: + resolution: {integrity: sha512-Bt+R5LAnVr2BImTJqPpton5rvhJ2Wq8x4BaTqaCHQMmfxqtz5lb4nLYT9kneMJTCDuRMBvvLpSuz4MBj50PV3w==} dependencies: '@types/node': 12.20.24 colors: 1.2.5 @@ -2042,18 +2039,18 @@ packages: resolve: 1.17.0 semver: 7.3.5 timsort: 0.3.0 - z-schema: 3.18.4 + z-schema: 5.0.2 dev: true - /@rushstack/rig-package/0.3.1: - resolution: {integrity: sha512-DXQmrPWOCNoE2zPzHCShE1y47FlgbAg48wpaY058Qo/yKDzL0GlEGf5Ra2NIt22pMcp0R/HHh+kZGbqTnF4CrA==} + /@rushstack/rig-package/0.3.7: + resolution: {integrity: sha512-pzMsTSeTC8IiZ6EJLr53gGMvhT4oLWH+hxD7907cHyWuIUlEXFtu/2pK25vUQT13nKp5DJCWxXyYoGRk/h6rtA==} dependencies: resolve: 1.17.0 strip-json-comments: 3.1.1 dev: true - /@rushstack/ts-command-line/4.9.1: - resolution: {integrity: sha512-zzoWB6OqVbMjnxlxbAUqbZqDWITUSHqwFCx7JbH5CVrjR9kcsB4NeWkN1I8GcR92beiOGvO3yPlB2NRo5Ugh+A==} + /@rushstack/ts-command-line/4.10.6: + resolution: {integrity: sha512-Y3GkUag39sTIlukDg9mUp8MCHrrlJ27POrBNRQGc/uF+VVgX8M7zMzHch5zP6O1QVquWgD7Engdpn2piPYaS/g==} dependencies: '@types/argparse': 1.0.38 argparse: 1.0.10 @@ -2067,8 +2064,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 @@ -2102,49 +2099,55 @@ packages: resolution: {integrity: sha512-t4YHCgtD+ERvH0FyxvNlYwJ2ezhqw7t+Ygh4urQ7dJER8i185JPv6oIM3ey5YQmGN6Zp9EMbpohkjZi9t3UxwA==} dev: true - /@types/babel__core/7.1.16: - resolution: {integrity: sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==} + /@types/babel__core/7.1.17: + resolution: {integrity: sha512-6zzkezS9QEIL8yCBvXWxPTJPNuMeECJVxSOhxNY/jfq9LxOTHivaYTqr37n9LknWWRTIkzqH2UilS5QFvfa90A==} dependencies: - '@babel/parser': 7.15.7 - '@babel/types': 7.15.6 - '@types/babel__generator': 7.6.3 + '@babel/parser': 7.16.6 + '@babel/types': 7.16.0 + '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.14.2 dev: true - /@types/babel__generator/7.6.3: - resolution: {integrity: sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==} + /@types/babel__generator/7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} 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.7 - '@babel/types': 7.15.6 + '@babel/parser': 7.16.6 + '@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: resolution: {integrity: sha512-tHs++ZeXer40kCF2JpE51Hg7t4HPa18B1b1Dzy96S0eCw8QKECNMYMfwa1edK/x8yCN0r4e6ewvLcc5CsVGkdg==} dev: true + /@types/cross-spawn/6.0.2: + resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} + dependencies: + '@types/node': 16.11.17 + dev: true + /@types/debug/4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 dev: true - /@types/es-module-lexer/0.3.0: - resolution: {integrity: sha512-XI3MGSejUQIJ3wzY0i5IHy5J3eb36M/ytgG8jIOssP08ovtRPcjpjXQqrx51AHBNBOisTS/NQNWJitI17+EwzQ==} - dev: true - /@types/estree/0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true @@ -2156,33 +2159,33 @@ packages: /@types/etag/1.8.1: resolution: {integrity: sha512-bsKkeSqN7HYyYntFRAmzcwx/dKW4Wa+KVMTInANlI72PWLQmOpZu96j0OqHZGArW4VQwCmJPteQlXaUDeOB0WQ==} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.17 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.17 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.17 dev: true /@types/hash-sum/1.0.0: resolution: {integrity: sha512-FdLBT93h3kcZ586Aee66HPCVJ6qvxVjBlDWNmxSGSbCZe9hTsjRKdSsl4y1T+3zfujxo9auykQMnFsfyHWD7wg==} dev: true - /@types/istanbul-lib-coverage/2.0.3: - resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==} + /@types/istanbul-lib-coverage/2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true /@types/istanbul-lib-report/3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: - '@types/istanbul-lib-coverage': 2.0.3 + '@types/istanbul-lib-coverage': 2.0.4 dev: true /@types/istanbul-reports/3.0.1: @@ -2191,11 +2194,11 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/27.0.2: - resolution: {integrity: sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==} + /@types/jest/27.0.3: + resolution: {integrity: sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==} dependencies: - jest-diff: 27.2.0 - pretty-format: 27.2.0 + jest-diff: 27.4.2 + pretty-format: 27.4.2 dev: true /@types/json-schema/7.0.9: @@ -2206,6 +2209,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 @@ -2226,6 +2235,10 @@ packages: resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} dev: true + /@types/node/16.11.17: + resolution: {integrity: sha512-C1vTZME8cFo8uxY2ui41xcynEotVkczIVI5AjLmy5pkpBv/FtG+jhtOlfcPysI8VRVwoOMv6NJm44LGnoMSWkw==} + dev: true + /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -2233,28 +2246,34 @@ packages: /@types/parse-json/4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - /@types/prettier/2.3.2: - resolution: {integrity: sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==} + /@types/prettier/2.4.2: + resolution: {integrity: sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==} + dev: true + + /@types/prompts/2.0.14: + resolution: {integrity: sha512-HZBd99fKxRWpYCErtm2/yxUZv6/PBI9J7N4TNFffl5JbrYMHBwF25DjQGTW3b3jmXq+9P6/8fCIb2ee57BFfYA==} + dependencies: + '@types/node': 16.11.17 dev: true /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.17 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.1: + resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.17 dev: true - /@types/semver/7.3.8: - resolution: {integrity: sha512-D/2EJvAlCEtYFEYmmlGwbGXuK886HzyCc3nZX/tkFTQdEU8jZDAgiv08P162yB17y4ZXZoq7yFAnW4GDBb9Now==} + /@types/semver/7.3.9: + resolution: {integrity: sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==} dev: true /@types/stack-trace/0.0.29: @@ -2268,13 +2287,13 @@ packages: /@types/stylus/0.48.36: resolution: {integrity: sha512-7klEq45BUE8ZJWkYWy1E442DcCs0wi0FkFY1Tjr6EJ7edL77t9w/QmOwlkFumBMqHlatDBtrA2xgfRrGqkUkzg==} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.17 dev: true - /@types/ws/7.4.7: - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + /@types/ws/8.2.2: + resolution: {integrity: sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.17 dev: true /@types/yargs-parser/20.2.1: @@ -2291,12 +2310,12 @@ packages: resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==} requiresBuild: true dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.17 dev: true optional: true - /@typescript-eslint/eslint-plugin/5.2.0_c4b1efa9b4fb23f36c6acd0134327013: - resolution: {integrity: sha512-qQwg7sqYkBF4CIQSyRQyqsYvP+g/J0To9ZPVNJpfxfekl5RmdvQnFFTVVwpRtaUDFNvjfe/34TgY/dpc3MgNTw==} + /@typescript-eslint/eslint-plugin/5.8.1_3a47348159e115370aa4cba56aba33b6: + resolution: {integrity: sha512-wTZ5oEKrKj/8/366qTM366zqhIKAp6NCMweoRONtfuC07OAU9nVI2GZZdqQ1qD30WAAtcPdkH+npDwtRFdp4Rw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -2306,41 +2325,41 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 5.2.0_eslint@8.1.0+typescript@4.4.3 - '@typescript-eslint/parser': 5.2.0_eslint@8.1.0+typescript@4.4.3 - '@typescript-eslint/scope-manager': 5.2.0 - debug: 4.3.2 - eslint: 8.1.0 + '@typescript-eslint/experimental-utils': 5.8.1_eslint@8.5.0+typescript@4.5.4 + '@typescript-eslint/parser': 5.8.1_eslint@8.5.0+typescript@4.5.4 + '@typescript-eslint/scope-manager': 5.8.1 + debug: 4.3.3 + eslint: 8.5.0 functional-red-black-tree: 1.0.1 - ignore: 5.1.8 + ignore: 5.2.0 regexpp: 3.2.0 semver: 7.3.5 - tsutils: 3.21.0_typescript@4.4.3 - typescript: 4.4.3 + tsutils: 3.21.0_typescript@4.5.4 + typescript: 4.5.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.2.0_eslint@8.1.0+typescript@4.4.3: - resolution: {integrity: sha512-fWyT3Agf7n7HuZZRpvUYdFYbPk3iDCq6fgu3ulia4c7yxmPnwVBovdSOX7RL+k8u6hLbrXcdAehlWUVpGh6IEw==} + /@typescript-eslint/experimental-utils/5.8.1_eslint@8.5.0+typescript@4.5.4: + resolution: {integrity: sha512-fbodVnjIDU4JpeXWRDsG5IfIjYBxEvs8EBO8W1+YVdtrc2B9ppfof5sZhVEDOtgTfFHnYQJDI8+qdqLYO4ceww==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: '*' + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 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.3 - eslint: 8.1.0 + '@typescript-eslint/scope-manager': 5.8.1 + '@typescript-eslint/types': 5.8.1 + '@typescript-eslint/typescript-estree': 5.8.1_typescript@4.5.4 + eslint: 8.5.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.1.0 + eslint-utils: 3.0.0_eslint@8.5.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/5.2.0_eslint@8.1.0+typescript@4.4.3: - resolution: {integrity: sha512-Uyy4TjJBlh3NuA8/4yIQptyJb95Qz5PX//6p8n7zG0QnN4o3NF9Je3JHbVU7fxf5ncSXTmnvMtd/LDQWDk0YqA==} + /@typescript-eslint/parser/5.8.1_eslint@8.5.0+typescript@4.5.4: + resolution: {integrity: sha512-K1giKHAjHuyB421SoXMXFHHVI4NdNY603uKw92++D3qyxSeYvC10CBJ/GE5Thpo4WTUvu1mmJI2/FFkz38F2Gw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2349,31 +2368,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.3 - debug: 4.3.2 - eslint: 8.1.0 - typescript: 4.4.3 + '@typescript-eslint/scope-manager': 5.8.1 + '@typescript-eslint/types': 5.8.1 + '@typescript-eslint/typescript-estree': 5.8.1_typescript@4.5.4 + debug: 4.3.3 + eslint: 8.5.0 + typescript: 4.5.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.8.1: + resolution: {integrity: sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q==} 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.8.1 + '@typescript-eslint/visitor-keys': 5.8.1 dev: true - /@typescript-eslint/types/5.2.0: - resolution: {integrity: sha512-cTk6x08qqosps6sPyP2j7NxyFPlCNsJwSDasqPNjEQ8JMD5xxj2NHxcLin5AJQ8pAVwpQ8BMI3bTxR0zxmK9qQ==} + /@typescript-eslint/types/5.8.1: + resolution: {integrity: sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.2.0_typescript@4.4.3: - resolution: {integrity: sha512-RsdXq2XmVgKbm9nLsE3mjNUM7BTr/K4DYR9WfFVMUuozHWtH5gMpiNZmtrMG8GR385EOSQ3kC9HiEMJWimxd/g==} + /@typescript-eslint/typescript-estree/5.8.1_typescript@4.5.4: + resolution: {integrity: sha512-26lQ8l8tTbG7ri7xEcCFT9ijU5Fk+sx/KRRyyzCv7MQ+rZZlqiDPtMKWLC8P7o+dtCnby4c+OlxuX1tp8WfafQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -2381,40 +2400,40 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.2.0 - '@typescript-eslint/visitor-keys': 5.2.0 - debug: 4.3.2 + '@typescript-eslint/types': 5.8.1 + '@typescript-eslint/visitor-keys': 5.8.1 + debug: 4.3.3 globby: 11.0.4 is-glob: 4.0.3 semver: 7.3.5 - tsutils: 3.21.0_typescript@4.4.3 - typescript: 4.4.3 + tsutils: 3.21.0_typescript@4.5.4 + typescript: 4.5.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/visitor-keys/5.2.0: - resolution: {integrity: sha512-Nk7HizaXWWCUBfLA/rPNKMzXzWS8Wg9qHMuGtT+v2/YpPij4nVXrVJc24N/r5WrrmqK31jCrZxeHqIgqRzs0Xg==} + /@typescript-eslint/visitor-keys/5.8.1: + resolution: {integrity: sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.2.0 - eslint-visitor-keys: 3.0.0 + '@typescript-eslint/types': 5.8.1 + eslint-visitor-keys: 3.1.0 dev: true /@vue/babel-helper-vue-transform-on/1.0.2: 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.5: 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.5_@babel+core@7.16.5 + '@babel/template': 7.16.0 + '@babel/traverse': 7.16.5 + '@babel/types': 7.16.0 '@vue/babel-helper-vue-transform-on': 1.0.2 - camelcase: 6.2.0 + camelcase: 6.2.1 html-tags: 3.1.0 svg-tags: 1.0.0 transitivePeerDependencies: @@ -2422,248 +2441,82 @@ packages: - supports-color dev: false - /@vue/compiler-core/3.2.16: - resolution: {integrity: sha512-60LD3f1GpMtoCPWKP7HacFxv97/EUY8m4WNqfFYmfaILVGO0icojdOCYOfgGFiYC+kgk1MOVdiI4vrWci0CnhQ==} + /@vue/compiler-core/3.2.26: + resolution: {integrity: sha512-N5XNBobZbaASdzY9Lga2D9Lul5vdCIOXvUMd6ThcN8zgqQhPKfCV+wfAJNNJKQkSHudnYRO2gEB+lp0iN3g2Tw==} dependencies: - '@babel/parser': 7.15.7 - '@vue/shared': 3.2.16 + '@babel/parser': 7.16.6 + '@vue/shared': 3.2.26 estree-walker: 2.0.2 source-map: 0.6.1 - /@vue/compiler-core/3.2.19: - resolution: {integrity: sha512-8dOPX0YOtaXol0Zf2cfLQ4NU/yHYl2H7DCKsLEZ7gdvPK6ZSEwGLJ7IdghhY2YEshEpC5RB9QKdC5I07z8Dtjg==} - dependencies: - '@babel/parser': 7.15.7 - '@vue/shared': 3.2.19 - estree-walker: 2.0.2 - source-map: 0.6.1 - dev: true - - /@vue/compiler-core/3.2.20: - resolution: {integrity: sha512-vcEXlKXoPwBXFP5aUTHN9GTZaDfwCofa9Yu9bbW2C5O/QSa9Esdt7OG4+0RRd3EHEMxUvEdj4RZrd/KpQeiJbA==} - dependencies: - '@babel/parser': 7.15.8 - '@vue/shared': 3.2.20 - estree-walker: 2.0.2 - source-map: 0.6.1 - dev: true - - /@vue/compiler-dom/3.2.16: - resolution: {integrity: sha512-K7lYfwvsp5OLb0+/rKI9XT2RJy2RB7TyJBjvlfCDAF0KOJGqWAx++DLJPm+F3D29Mhxgt6ozSKP+rC3dSabvYA==} - dependencies: - '@vue/compiler-core': 3.2.16 - '@vue/shared': 3.2.16 - - /@vue/compiler-dom/3.2.19: - resolution: {integrity: sha512-WzQoE8rfkFjPtIioc7SSgTsnz9g2oG61DU8KHnzPrRS7fW/lji6H2uCYJfp4Z6kZE8GjnHc1Ljwl3/gxDes0cw==} - dependencies: - '@vue/compiler-core': 3.2.19 - '@vue/shared': 3.2.19 - dev: true - - /@vue/compiler-dom/3.2.20: - resolution: {integrity: sha512-QnI77ec/JtV7R0YBbcVayYTDCRcI9OCbxiUQK6izVyqQO0658n0zQuoNwe+bYgtqnvGAIqTR3FShTd5y4oOjdg==} - dependencies: - '@vue/compiler-core': 3.2.20 - '@vue/shared': 3.2.20 - dev: true - - /@vue/compiler-sfc/3.2.16: - resolution: {integrity: sha512-AxaDDg0ZjY7lCoVnCq7V+K3SIEfhyIHtten7k/LRupVC/VzSbelBmW0J8bawgsjLJAfTsdWZjeezZ5JJp2DM/A==} - dependencies: - '@babel/parser': 7.15.7 - '@vue/compiler-core': 3.2.16 - '@vue/compiler-dom': 3.2.16 - '@vue/compiler-ssr': 3.2.16 - '@vue/ref-transform': 3.2.16 - '@vue/shared': 3.2.16 - estree-walker: 2.0.2 - magic-string: 0.25.7 - postcss: 8.3.7 - source-map: 0.6.1 - - /@vue/compiler-sfc/3.2.19: - resolution: {integrity: sha512-pLlbgkO1UHTO02MSpa/sFOXUwIDxSMiKZ1ozE5n71CY4DM+YmI+G3gT/ZHZ46WBId7f3VTF/D8pGwMygcQbrQA==} + /@vue/compiler-dom/3.2.26: + resolution: {integrity: sha512-smBfaOW6mQDxcT3p9TKT6mE22vjxjJL50GFVJiI0chXYGU/xzC05QRGrW3HHVuJrmLTLx5zBhsZ2dIATERbarg==} dependencies: - '@babel/parser': 7.15.7 - '@vue/compiler-core': 3.2.19 - '@vue/compiler-dom': 3.2.19 - '@vue/compiler-ssr': 3.2.19 - '@vue/ref-transform': 3.2.19 - '@vue/shared': 3.2.19 - estree-walker: 2.0.2 - magic-string: 0.25.7 - postcss: 8.3.7 - source-map: 0.6.1 - dev: true + '@vue/compiler-core': 3.2.26 + '@vue/shared': 3.2.26 - /@vue/compiler-sfc/3.2.20: - resolution: {integrity: sha512-03aZo+6tQKiFLfunHKSPZvdK4Jsn/ftRCyaro8AQIWkuxJbvSosbKK6HTTn+D2c3nPScG155akJoxKENw7rftQ==} + /@vue/compiler-sfc/3.2.26: + resolution: {integrity: sha512-ePpnfktV90UcLdsDQUh2JdiTuhV0Skv2iYXxfNMOK/F3Q+2BO0AulcVcfoksOpTJGmhhfosWfMyEaEf0UaWpIw==} 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.6 + '@vue/compiler-core': 3.2.26 + '@vue/compiler-dom': 3.2.26 + '@vue/compiler-ssr': 3.2.26 + '@vue/reactivity-transform': 3.2.26 + '@vue/shared': 3.2.26 estree-walker: 2.0.2 magic-string: 0.25.7 - postcss: 8.3.8 + postcss: 8.4.5 source-map: 0.6.1 - dev: true - /@vue/compiler-ssr/3.2.16: - resolution: {integrity: sha512-u2Inuqp3QpEV3E03ppBLdba40mU0dz/fisbfGjRPlxH5uuQ9v9i5qgrFl7xZ+N5C0ugg5+5KI7MgsbsCAPn0mQ==} + /@vue/compiler-ssr/3.2.26: + resolution: {integrity: sha512-2mywLX0ODc4Zn8qBoA2PDCsLEZfpUGZcyoFRLSOjyGGK6wDy2/5kyDOWtf0S0UvtoyVq95OTSGIALjZ4k2q/ag==} dependencies: - '@vue/compiler-dom': 3.2.16 - '@vue/shared': 3.2.16 + '@vue/compiler-dom': 3.2.26 + '@vue/shared': 3.2.26 - /@vue/compiler-ssr/3.2.19: - resolution: {integrity: sha512-oLon0Cn3O7WEYzzmzZavGoqXH+199LT+smdjBT3Uf3UX4HwDNuBFCmvL0TsqV9SQnIgKvBRbQ7lhbpnd4lqM3w==} - dependencies: - '@vue/compiler-dom': 3.2.19 - '@vue/shared': 3.2.19 - dev: true - - /@vue/compiler-ssr/3.2.20: - resolution: {integrity: sha512-rzzVVYivm+EjbfiGQvNeyiYZWzr6Hkej97RZLZvcumacQlnKv9176Xo9rRyeWwFbBlxmtNdrVMslRXtipMXk2w==} - dependencies: - '@vue/compiler-dom': 3.2.20 - '@vue/shared': 3.2.20 - dev: true - - /@vue/devtools-api/6.0.0-beta.18: - resolution: {integrity: sha512-56vRhO7nXWWFYTx520BQSDlQH5VYpwy62hFDEqi2yHHEBpEqseOP5WYQusq7BEW3DXSY9E9cfPVR5CFtJbKuMg==} + /@vue/devtools-api/6.0.0-beta.21.1: + resolution: {integrity: sha512-FqC4s3pm35qGVeXRGOjTsRzlkJjrBLriDS9YXbflHLsfA9FrcKzIyWnLXoNm+/7930E8rRakXuAc2QkC50swAw==} dev: false - /@vue/reactivity/3.2.16: - resolution: {integrity: sha512-eOOpjakbRFg2roaGhVsGgBFnQWaXJcTw66wfc+ZMWl/cihAcgn792gFO1a6KeT68vQBp4JVpGZ5jkkdgZnwFfA==} - dependencies: - '@vue/shared': 3.2.16 - - /@vue/reactivity/3.2.19: - resolution: {integrity: sha512-FtachoYs2SnyrWup5UikP54xDX6ZJ1s5VgHcJp4rkGoutU3Ry61jhs+nCX7J64zjX992Mh9gGUC0LqTs8q9vCA==} + /@vue/reactivity-transform/3.2.26: + resolution: {integrity: sha512-XKMyuCmzNA7nvFlYhdKwD78rcnmPb7q46uoR00zkX6yZrUmcCQ5OikiwUEVbvNhL5hBJuvbSO95jB5zkUon+eQ==} dependencies: - '@vue/shared': 3.2.19 - dev: true - - /@vue/reactivity/3.2.20: - resolution: {integrity: sha512-nSmoLojUTk+H8HNTAkrUduB4+yIUBK2HPihJo2uXVSH4Spry6oqN6lFzE5zpLK+F27Sja+UqR9R1+/kIOsHV5w==} - dependencies: - '@vue/shared': 3.2.20 - dev: true - - /@vue/ref-transform/3.2.16: - resolution: {integrity: sha512-IXFgxGnyd5jIXPQ/QlOoz+daeikeR1AA6DujgqalmW/ndCX9ZKW1rhFsoMGR0WAUZ4VHbT3eluUJhBF8ikNzPg==} - dependencies: - '@babel/parser': 7.15.7 - '@vue/compiler-core': 3.2.16 - '@vue/shared': 3.2.16 + '@babel/parser': 7.16.6 + '@vue/compiler-core': 3.2.26 + '@vue/shared': 3.2.26 estree-walker: 2.0.2 magic-string: 0.25.7 - /@vue/ref-transform/3.2.19: - resolution: {integrity: sha512-03wwUnoIAeKti5IGGx6Vk/HEBJ+zUcm5wrUM3+PQsGf7IYnXTbeIfHHpx4HeSeWhnLAjqZjADQwW8uA4rBmVbg==} + /@vue/reactivity/3.2.26: + resolution: {integrity: sha512-h38bxCZLW6oFJVDlCcAiUKFnXI8xP8d+eO0pcDxx+7dQfSPje2AO6M9S9QO6MrxQB7fGP0DH0dYQ8ksf6hrXKQ==} dependencies: - '@babel/parser': 7.15.7 - '@vue/compiler-core': 3.2.19 - '@vue/shared': 3.2.19 - estree-walker: 2.0.2 - magic-string: 0.25.7 - dev: true + '@vue/shared': 3.2.26 - /@vue/ref-transform/3.2.20: - resolution: {integrity: sha512-Y42d3PGlYZ1lXcF3dbd3+qU/C/a3wYEZ949fyOI5ptzkjDWlkfU6vn74fmOjsLjEcjs10BXK2qO99FqQIK2r1Q==} + /@vue/runtime-core/3.2.26: + resolution: {integrity: sha512-BcYi7qZ9Nn+CJDJrHQ6Zsmxei2hDW0L6AB4vPvUQGBm2fZyC0GXd/4nVbyA2ubmuhctD5RbYY8L+5GUJszv9mQ==} dependencies: - '@babel/parser': 7.15.8 - '@vue/compiler-core': 3.2.20 - '@vue/shared': 3.2.20 - estree-walker: 2.0.2 - magic-string: 0.25.7 - dev: true + '@vue/reactivity': 3.2.26 + '@vue/shared': 3.2.26 - /@vue/runtime-core/3.2.16: - resolution: {integrity: sha512-Y7jDSKpwRmibQSXpGS2xcC2eVF9CuHQ6uPd1BSMy4aJCzB3ATI0CpRm/Ee/a5e70vjd5D9bY9IHe+9I0CIX1Bg==} + /@vue/runtime-dom/3.2.26: + resolution: {integrity: sha512-dY56UIiZI+gjc4e8JQBwAifljyexfVCkIAu/WX8snh8vSOt/gMSEGwPRcl2UpYpBYeyExV8WCbgvwWRNt9cHhQ==} dependencies: - '@vue/reactivity': 3.2.16 - '@vue/shared': 3.2.16 + '@vue/runtime-core': 3.2.26 + '@vue/shared': 3.2.26 + csstype: 2.6.19 - /@vue/runtime-core/3.2.19: - resolution: {integrity: sha512-qArZSWKxWsgKfxk9BelZ32nY0MZ31CAW2kUUyVJyxh4cTfHaXGbjiQB5JgsvKc49ROMNffv9t3/qjasQqAH+RQ==} - dependencies: - '@vue/reactivity': 3.2.19 - '@vue/shared': 3.2.19 - dev: true - - /@vue/runtime-core/3.2.20: - resolution: {integrity: sha512-d1xfUGhZPfiZzAN7SatStD4vRtT8deJSXib2+Cz3x0brjMWKxe32asQc154FF1E2fFgMCHtnfd4A90bQEzV4GQ==} - dependencies: - '@vue/reactivity': 3.2.20 - '@vue/shared': 3.2.20 - dev: true - - /@vue/runtime-dom/3.2.16: - resolution: {integrity: sha512-PJ/aMaGfXkqFnykNqpDamcMJni4c/nqDQDz0hKncJiVqU4leiFGq7YC2IFbXECdG83GiHFhEc/77WOhecWSmCw==} - dependencies: - '@vue/runtime-core': 3.2.16 - '@vue/shared': 3.2.16 - csstype: 2.6.18 - - /@vue/runtime-dom/3.2.19: - resolution: {integrity: sha512-hIRboxXwafeHhbZEkZYNV0MiJXPNf4fP0X6hM2TJb0vssz8BKhD9cF92BkRgZztTQevecbhk0gu4uAPJ3dxL9A==} - dependencies: - '@vue/runtime-core': 3.2.19 - '@vue/shared': 3.2.19 - csstype: 2.6.18 - dev: true - - /@vue/runtime-dom/3.2.20: - resolution: {integrity: sha512-4TCvZMLhESWCFHFYgqN4QmMA/onnINAlUovhopjlS8ST27G1A8Z0tyxPzLoXLa+b5JrOpbMPheEMPvdKExTJig==} - dependencies: - '@vue/runtime-core': 3.2.20 - '@vue/shared': 3.2.20 - csstype: 2.6.18 - dev: true - - /@vue/server-renderer/3.2.16_vue@3.2.16: - resolution: {integrity: sha512-g2aSNYHaExFElYmKw1bfmp3yQmBCPQzrX3Hd7bhDa7bbGGHGchOg0n31SwuMrGk/z/pho4Z0K+LPfChmcECynQ==} + /@vue/server-renderer/3.2.26_vue@3.2.26: + resolution: {integrity: sha512-Jp5SggDUvvUYSBIvYEhy76t4nr1vapY/FIFloWmQzn7UxqaHrrBpbxrqPcTrSgGrcaglj0VBp22BKJNre4aA1w==} peerDependencies: - vue: 3.2.16 + vue: 3.2.26 dependencies: - '@vue/compiler-ssr': 3.2.16 - '@vue/shared': 3.2.16 - vue: 3.2.16 + '@vue/compiler-ssr': 3.2.26 + '@vue/shared': 3.2.26 + vue: 3.2.26 - /@vue/server-renderer/3.2.19_vue@3.2.19: - resolution: {integrity: sha512-A9FNT7fgQJXItwdzWREntAgWKVtKYuXHBKGev/H4+ByTu8vB7gQXGcim01QxaJshdNg4dYuH2tEBZXCNCNx+/w==} - peerDependencies: - vue: 3.2.19 - dependencies: - '@vue/compiler-ssr': 3.2.19 - '@vue/shared': 3.2.19 - vue: 3.2.19 - dev: true - - /@vue/server-renderer/3.2.20_vue@3.2.20: - resolution: {integrity: sha512-viIbZGep9XabnrRcaxWIi00cOh1x21QYm2upIL5W0zqzTJ54VdTzpI+zi1osNp+VfRQDTHpV2U7H3Kn4ljYJvg==} - peerDependencies: - vue: 3.2.20 - dependencies: - '@vue/compiler-ssr': 3.2.20 - '@vue/shared': 3.2.20 - vue: 3.2.20 - dev: true - - /@vue/shared/3.2.16: - resolution: {integrity: sha512-zpv8lxuatl3ruCJCsGzrO/F4+IlLug4jbu3vaIi/wJVZKQgnsW1R/xSRJMQS6K57cl4fT/2zkrYsWh1/6H7Esw==} - - /@vue/shared/3.2.19: - resolution: {integrity: sha512-Knqhx7WieLdVgwCAZgTVrDCXZ50uItuecLh9JdLC8O+a5ayaSyIQYveUK3hCRNC7ws5zalHmZwfdLMGaS8r4Ew==} - dev: true - - /@vue/shared/3.2.20: - resolution: {integrity: sha512-FbpX+hD5BvXCQerEYO7jtAGHlhAkhTQ4KIV73kmLWNlawWhTiVuQxizgVb0BOkX5oG9cIRZ42EG++d/k/Efp0w==} - dev: true + /@vue/shared/3.2.26: + resolution: {integrity: sha512-vPV6Cq+NIWbH5pZu+V+2QHE9y1qfuTq49uNWw4f7FDEeZaDU2H2cx5jcUZOAKW7qTrUS4k6qZPbMy1x4N96nbA==} /@wessberg/stringutil/1.0.19: resolution: {integrity: sha512-9AZHVXWlpN8Cn9k5BC/O0Dzb9E9xfEMXzYrNunwvkUTvuK7xgQPVRZpLo+jWCOZ5r8oBa8NIrHuPEu1hzbb6bg==} @@ -2682,24 +2535,18 @@ packages: resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} dev: true + /abbrev/1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: false + /accepts/1.3.7: resolution: {integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==} engines: {node: '>= 0.6'} dependencies: - mime-types: 2.1.32 + mime-types: 2.1.34 negotiator: 0.6.2 dev: true - /acorn-class-fields/1.0.0_acorn@8.5.0: - resolution: {integrity: sha512-l+1FokF34AeCXGBHkrXFmml9nOIRI+2yBnBpO5MaVAaTIJ96irWLtcCxX+7hAp6USHFCe+iyyBB4ZhxV807wmA==} - engines: {node: '>=4.8.2'} - peerDependencies: - acorn: ^6 || ^7 || ^8 - dependencies: - acorn: 8.5.0 - acorn-private-class-elements: 1.0.0_acorn@8.5.0 - dev: true - /acorn-globals/6.0.0: resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} dependencies: @@ -2707,12 +2554,12 @@ packages: acorn-walk: 7.2.0 dev: true - /acorn-jsx/5.3.2_acorn@8.5.0: + /acorn-jsx/5.3.2_acorn@8.7.0: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.5.0 + acorn: 8.7.0 dev: true /acorn-node/1.8.2: @@ -2723,25 +2570,6 @@ packages: xtend: 4.0.2 dev: false - /acorn-private-class-elements/1.0.0_acorn@8.5.0: - resolution: {integrity: sha512-zYNcZtxKgVCg1brS39BEou86mIao1EV7eeREG+6WMwKbuYTeivRRs6S2XdWnboRde6G9wKh2w+WBydEyJsJ6mg==} - engines: {node: '>=4.8.2'} - peerDependencies: - acorn: ^6.1.0 || ^7 || ^8 - dependencies: - acorn: 8.5.0 - dev: true - - /acorn-static-class-features/1.0.0_acorn@8.5.0: - resolution: {integrity: sha512-XZJECjbmMOKvMHiNzbiPXuXpLAJfN3dAKtfIYbk1eHiWdsutlek+gS7ND4B8yJ3oqvHo1NxfafnezVmq7NXK0A==} - engines: {node: '>=4.8.2'} - peerDependencies: - acorn: ^6.1.0 || ^7 || ^8 - dependencies: - acorn: 8.5.0 - acorn-private-class-elements: 1.0.0_acorn@8.5.0 - dev: true - /acorn-walk/7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} @@ -2756,8 +2584,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - /acorn/8.5.0: - resolution: {integrity: sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==} + /acorn/8.7.0: + resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -2770,10 +2598,9 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.2 + debug: 4.3.3 transitivePeerDependencies: - supports-color - dev: true /aggregate-error/3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} @@ -2792,23 +2619,23 @@ packages: uri-js: 4.4.1 dev: true - /algoliasearch/4.10.5: - resolution: {integrity: sha512-KmH2XkiN+8FxhND4nWFbQDkIoU6g2OjfeU9kIv4Lb+EiOOs3Gpp7jvd+JnatsCisAZsnWQdjd7zVlW7I/85QvQ==} + /algoliasearch/4.11.0: + resolution: {integrity: sha512-IXRj8kAP2WrMmj+eoPqPc6P7Ncq1yZkFiyDrjTBObV1ADNL8Z/KdZ+dWC5MmYcBLAbcB/mMCpak5N/D1UIZvsA==} dependencies: - '@algolia/cache-browser-local-storage': 4.10.5 - '@algolia/cache-common': 4.10.5 - '@algolia/cache-in-memory': 4.10.5 - '@algolia/client-account': 4.10.5 - '@algolia/client-analytics': 4.10.5 - '@algolia/client-common': 4.10.5 - '@algolia/client-personalization': 4.10.5 - '@algolia/client-search': 4.10.5 - '@algolia/logger-common': 4.10.5 - '@algolia/logger-console': 4.10.5 - '@algolia/requester-browser-xhr': 4.10.5 - '@algolia/requester-common': 4.10.5 - '@algolia/requester-node-http': 4.10.5 - '@algolia/transporter': 4.10.5 + '@algolia/cache-browser-local-storage': 4.11.0 + '@algolia/cache-common': 4.11.0 + '@algolia/cache-in-memory': 4.11.0 + '@algolia/client-account': 4.11.0 + '@algolia/client-analytics': 4.11.0 + '@algolia/client-common': 4.11.0 + '@algolia/client-personalization': 4.11.0 + '@algolia/client-search': 4.11.0 + '@algolia/logger-common': 4.11.0 + '@algolia/logger-console': 4.11.0 + '@algolia/requester-browser-xhr': 4.11.0 + '@algolia/requester-common': 4.11.0 + '@algolia/requester-node-http': 4.11.0 + '@algolia/transporter': 4.11.0 dev: true /ansi-colors/4.1.1: @@ -2826,6 +2653,10 @@ packages: /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + + /ansi-regex/6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} dev: true /ansi-styles/3.2.1: @@ -2845,6 +2676,11 @@ packages: engines: {node: '>=10'} dev: true + /ansi-styles/6.1.0: + resolution: {integrity: sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==} + engines: {node: '>=12'} + dev: true + /anymatch/3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} @@ -2852,6 +2688,18 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.0 + /aproba/2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: false + + /are-we-there-yet/2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.0 + dev: false + /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true @@ -2897,8 +2745,8 @@ packages: resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=} dev: true - /asn1js/2.1.1: - resolution: {integrity: sha512-t9u0dU0rJN4ML+uxgN6VM2Z4H5jWIYm0w8LsZLzMJaQsgL3IJNbxHgmbWDvJAwspyHpDFuzUaUFh4c05UB4+6g==} + /asn1js/2.2.0: + resolution: {integrity: sha512-oagLNqpfNv7CvmyMoexMDNyVDSiq1rya0AEUgcLlNHdHgNl6U/hi8xY370n5y+ZIFEXOx0J4B1qF2NDjMRxklA==} engines: {node: '>=6.0.0'} dependencies: pvutils: 1.0.17 @@ -2923,41 +2771,41 @@ packages: hasBin: true dev: true - /autoprefixer/10.3.5: - resolution: {integrity: sha512-2H5kQSsyoOMdIehTzIt/sC9ZDIgWqlkG/dbevm9B9xQZ1TDPBHpNUDW5ENqqQQzuaBWEo75JkV0LJe+o5Lnr5g==} + /autoprefixer/10.4.0: + resolution: {integrity: sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.17.1 - caniuse-lite: 1.0.30001259 - fraction.js: 4.1.1 - nanocolors: 0.1.6 + browserslist: 4.19.1 + caniuse-lite: 1.0.30001294 + fraction.js: 4.1.2 normalize-range: 0.1.2 - postcss-value-parser: 4.1.0 + picocolors: 1.0.0 + postcss-value-parser: 4.2.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.6 transitivePeerDependencies: - debug dev: false - /babel-jest/27.2.4_@babel+core@7.15.5: - resolution: {integrity: sha512-f24OmxyWymk5jfgLdlCMu4fTs4ldxFBIdn5sJdhvGC1m08rSkJ5hYbWkNmfBSvE/DjhCVNSHXepxsI6THGfGsg==} + /babel-jest/27.4.5_@babel+core@7.16.5: + resolution: {integrity: sha512-3uuUTjXbgtODmSv/DXO9nZfD52IyC2OYTFaXGRzL0kpykzroaquCrD5+lZNafTvZlnNqZHt5pb0M08qVBZnsnA==} 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.5 - '@jest/transform': 27.2.4 - '@jest/types': 27.2.4 - '@types/babel__core': 7.1.16 - babel-plugin-istanbul: 6.0.0 - babel-preset-jest: 27.2.0_@babel+core@7.15.5 + '@babel/core': 7.16.5 + '@jest/transform': 27.4.5 + '@jest/types': 27.4.2 + '@types/babel__core': 7.1.17 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.4.0_@babel+core@7.16.5 chalk: 4.1.2 graceful-fs: 4.2.8 slash: 3.0.0 @@ -2965,73 +2813,73 @@ packages: - supports-color dev: true - /babel-plugin-istanbul/6.0.0: - resolution: {integrity: sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==} + /babel-plugin-istanbul/6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 4.0.3 + istanbul-lib-instrument: 5.1.0 test-exclude: 6.0.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-jest-hoist/27.2.0: - resolution: {integrity: sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==} + /babel-plugin-jest-hoist/27.4.0: + resolution: {integrity: sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==} 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 - '@types/babel__core': 7.1.16 + '@babel/template': 7.16.0 + '@babel/types': 7.16.0 + '@types/babel__core': 7.1.17 '@types/babel__traverse': 7.14.2 dev: true /babel-plugin-macros/2.8.0: resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.5 cosmiconfig: 6.0.0 resolve: 1.20.0 dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.15.5: + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.16.5: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.15.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.15.5 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.15.5 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.15.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.15.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.15.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.15.5 - dev: true - - /babel-preset-jest/27.2.0_@babel+core@7.15.5: - resolution: {integrity: sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==} + '@babel/core': 7.16.5 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.5 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.16.5 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.16.5 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.16.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.5 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.16.5 + dev: true + + /babel-preset-jest/27.4.0_@babel+core@7.16.5: + resolution: {integrity: sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==} 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.5 - babel-plugin-jest-hoist: 27.2.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.5 + '@babel/core': 7.16.5 + babel-plugin-jest-hoist: 27.4.0 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.16.5 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: @@ -3042,27 +2890,34 @@ packages: engines: {node: '>=6.0.0'} dev: true - /big.js/5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true + /bcrypt/5.0.1: + resolution: {integrity: sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==} + engines: {node: '>= 10.0.0'} + requiresBuild: true + dependencies: + '@mapbox/node-pre-gyp': 1.0.8 + node-addon-api: 3.2.1 + transitivePeerDependencies: + - supports-color + dev: false /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - /body-parser/1.19.0: - resolution: {integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==} + /body-parser/1.19.1: + resolution: {integrity: sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==} engines: {node: '>= 0.8'} dependencies: - bytes: 3.1.0 + bytes: 3.1.1 content-type: 1.0.4 debug: 2.6.9 depd: 1.1.2 - http-errors: 1.7.2 + http-errors: 1.8.1 iconv-lite: 0.4.24 on-finished: 2.3.0 - qs: 6.7.0 - raw-body: 2.4.0 + qs: 6.9.6 + raw-body: 2.4.2 type-is: 1.6.18 dev: true @@ -3082,16 +2937,16 @@ packages: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} dev: true - /browserslist/4.17.1: - resolution: {integrity: sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==} + /browserslist/4.19.1: + resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001259 - electron-to-chromium: 1.3.848 + caniuse-lite: 1.0.30001294 + electron-to-chromium: 1.4.29 escalade: 3.1.1 - nanocolors: 0.1.6 - node-releases: 1.1.76 + node-releases: 2.0.1 + picocolors: 1.0.0 /bs-logger/0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -3131,12 +2986,12 @@ packages: engines: {node: '>= 0.8'} dev: true - /bytes/3.1.0: - resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==} + /bytes/3.1.1: + resolution: {integrity: sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==} 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 @@ -3170,12 +3025,12 @@ packages: engines: {node: '>=6'} dev: true - /camelcase/6.2.0: - resolution: {integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==} + /camelcase/6.2.1: + resolution: {integrity: sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==} engines: {node: '>=10'} - /caniuse-lite/1.0.30001259: - resolution: {integrity: sha512-V7mQTFhjITxuk9zBpI6nYsiTXhcPe05l+364nZjK7MFK/E7ibvYBSAXr4YcA6oPR8j3ZLM/LN+lUqUVAQEUZFg==} + /caniuse-lite/1.0.30001294: + resolution: {integrity: sha512-LiMlrs1nSKZ8qkNhpUf5KD0Al1KCBE3zaT7OLOwEkagXMEDij98SiOovn9wxVGQpklk9vVC/pUSqgYmkmKOS8g==} /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -3211,25 +3066,30 @@ packages: braces: 3.0.2 glob-parent: 5.1.2 is-binary-path: 2.1.0 - is-glob: 4.0.1 + is-glob: 4.0.3 normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 + /chownr/2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: false + /ci-info/1.6.0: resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==} dev: true - /ci-info/3.2.0: - resolution: {integrity: sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==} + /ci-info/3.3.0: + resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} dev: true /cjs-module-lexer/1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /cjstoesm/1.1.4_typescript@4.4.3: + /cjstoesm/1.1.4_typescript@4.5.4: resolution: {integrity: sha512-cixLJwK2HS8R8J1jJcYwlrLxWUbdNms5EmVQuvP3O0CGvHNv2WVd2gnqTP/tbTEYzbgWiSYQBZDoAakqsSl94Q==} engines: {node: '>=10.0.0'} hasBin: true @@ -3239,13 +3099,13 @@ packages: '@wessberg/stringutil': 1.0.19 chalk: 4.1.2 commander: 7.2.0 - compatfactory: 0.0.6_typescript@4.4.3 + compatfactory: 0.0.6_typescript@4.5.4 crosspath: 0.0.8 fast-glob: 3.2.7 helpertypes: 0.0.2 reserved-words: 0.1.2 resolve: 1.20.0 - typescript: 4.4.3 + typescript: 4.5.4 dev: true /clean-stack/2.2.0: @@ -3265,7 +3125,15 @@ packages: engines: {node: '>=8'} dependencies: slice-ansi: 3.0.0 - string-width: 4.2.2 + string-width: 4.2.3 + dev: true + + /cli-truncate/3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + slice-ansi: 5.0.0 + string-width: 5.0.1 dev: true /clipboard/2.0.8: @@ -3279,8 +3147,8 @@ packages: /cliui/7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: - string-width: 4.2.2 - strip-ansi: 6.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 wrap-ansi: 7.0.0 dev: true @@ -3315,22 +3183,27 @@ packages: /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-string/1.6.0: - resolution: {integrity: sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==} + /color-string/1.9.0: + resolution: {integrity: sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==} dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 dev: false - /color/4.0.1: - resolution: {integrity: sha512-rpZjOKN5O7naJxkH2Rx1sZzzBgaiWECc6BYXjeCE6kF0kcASJYbUq02u7JqIHwCb/j3NhV+QhRL2683aICeGZA==} + /color-support/1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + dev: false + + /color/4.1.0: + resolution: {integrity: sha512-o2rkkxyLGgYoeUy1OodXpbPAQNmlNBrirQ8ODO8QutzDiDMNdezSOZLNnusQ6pUpCQJUsaJIo9DZJKqa2HgH7A==} dependencies: color-convert: 2.0.1 - color-string: 1.6.0 + color-string: 1.9.0 dev: false - /colorette/1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + /colorette/2.0.16: + resolution: {integrity: sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==} dev: true /colors/1.2.5: @@ -3349,19 +3222,14 @@ packages: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true - /commander/6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - /commander/7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} dev: true - /commander/8.2.0: - resolution: {integrity: sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==} + /commander/8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - dev: true /commenting/1.1.0: resolution: {integrity: sha512-YeNK4tavZwtH7jEgK1ZINXzLKm6DZdEMfsaaieOsCAN0S8vsY7UeuO3Q7d/M018EFgE+IeUAuBOKkFccBZsUZA==} @@ -3378,21 +3246,21 @@ packages: dot-prop: 5.3.0 dev: true - /compatfactory/0.0.6_typescript@4.4.3: + /compatfactory/0.0.6_typescript@4.5.4: resolution: {integrity: sha512-F1LpdNxgxay4UdanmeL75+guJPDg2zu8bFZDVih/kse5hA3oa+aMgvk4tLwq7AFBpy3S0ilnPdSfYsTl/L9NXA==} engines: {node: '>=10.0.0'} peerDependencies: typescript: '>=3.x || >= 4.x' dependencies: helpertypes: 0.0.2 - typescript: 4.4.3 + typescript: 4.5.4 dev: true /compressible/2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} dependencies: - mime-db: 1.50.0 + mime-db: 1.51.0 dev: true /compression/1.7.4: @@ -3426,18 +3294,22 @@ packages: utils-merge: 1.0.1 dev: true + /console-control-strings/1.1.0: + resolution: {integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=} + dev: false + /constantinople/4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} dependencies: - '@babel/parser': 7.15.7 - '@babel/types': 7.15.6 + '@babel/parser': 7.16.6 + '@babel/types': 7.16.0 dev: true - /content-disposition/0.5.3: - resolution: {integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==} + /content-disposition/0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} dependencies: - safe-buffer: 5.1.2 + safe-buffer: 5.2.1 dev: true /content-type/1.0.4: @@ -3460,13 +3332,13 @@ packages: q: 1.5.1 dev: true - /conventional-changelog-cli/2.1.1: - resolution: {integrity: sha512-xMGQdKJ+4XFDDgfX5aK7UNFduvJMbvF5BB+g0OdVhA3rYdYyhctrIE2Al+WYdZeKTdg9YzMWF2iFPT8MupIwng==} + /conventional-changelog-cli/2.2.2: + resolution: {integrity: sha512-8grMV5Jo8S0kP3yoMeJxV2P5R6VJOqK72IiSV9t/4H5r/HiRqEBQ83bYGuz4Yzfdj4bjaAEhZN/FFbsFXr5bOA==} engines: {node: '>=10'} hasBin: true dependencies: add-stream: 1.0.0 - conventional-changelog: 3.1.24 + conventional-changelog: 3.1.25 lodash: 4.17.21 meow: 8.1.2 tempfile: 3.0.0 @@ -3479,8 +3351,8 @@ packages: q: 1.5.1 dev: true - /conventional-changelog-conventionalcommits/4.6.1: - resolution: {integrity: sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==} + /conventional-changelog-conventionalcommits/4.6.2: + resolution: {integrity: sha512-fo+VhM0VtD3wdHZtrPhgvTFjAhAMUjYeQV6B5+DB/cupG1O554pJdTwrvBInq8JLHl+GucKQpZycMPye/OpgSw==} engines: {node: '>=10'} dependencies: compare-func: 2.0.0 @@ -3494,7 +3366,7 @@ packages: dependencies: add-stream: 1.0.0 conventional-changelog-writer: 5.0.0 - conventional-commits-parser: 3.2.2 + conventional-commits-parser: 3.2.3 dateformat: 3.0.3 get-pkg-repo: 4.2.1 git-raw-commits: 2.0.10 @@ -3565,14 +3437,14 @@ packages: through2: 4.0.2 dev: true - /conventional-changelog/3.1.24: - resolution: {integrity: sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==} + /conventional-changelog/3.1.25: + resolution: {integrity: sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==} engines: {node: '>=10'} dependencies: conventional-changelog-angular: 5.0.13 conventional-changelog-atom: 2.0.8 conventional-changelog-codemirror: 2.0.8 - conventional-changelog-conventionalcommits: 4.6.1 + conventional-changelog-conventionalcommits: 4.6.2 conventional-changelog-core: 4.2.4 conventional-changelog-ember: 2.0.9 conventional-changelog-eslint: 3.0.9 @@ -3590,8 +3462,8 @@ packages: modify-values: 1.0.1 dev: true - /conventional-commits-parser/3.2.2: - resolution: {integrity: sha512-Jr9KAKgqAkwXMRHjxDwO/zOCDKod1XdAESHAGuJX38iZ7ZzVti/tvVoysO0suMsdAObp9NQ2rHSsSbnAqZ5f5g==} + /conventional-commits-parser/3.2.3: + resolution: {integrity: sha512-YyRDR7On9H07ICFpRm/igcdjIqebXbvf4Cff+Pf0BrBys1i1EOzx9iFXNlAbdrLAR8jf7bkUYkDAr8pEy0q4Pw==} engines: {node: '>=10'} hasBin: true dependencies: @@ -3612,11 +3484,6 @@ packages: resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} dev: true - /cookie/0.4.0: - resolution: {integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==} - engines: {node: '>= 0.6'} - dev: true - /cookie/0.4.1: resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==} engines: {node: '>= 0.6'} @@ -3628,8 +3495,8 @@ packages: is-what: 3.14.1 dev: true - /core-js/3.19.0: - resolution: {integrity: sha512-L1TpFRWXZ76vH1yLM+z6KssLZrP8Z6GxxW4auoCj+XiViOzNPJCAuTIkn03BGdFe6Z5clX5t64wRIRypsZQrUg==} + /core-js/3.20.1: + resolution: {integrity: sha512-btdpStYFQScnNVQ5slVcr858KP0YWYjV16eGJQw8Gg7CWtu/2qNvIM3qVRIR3n1pK2R9NNOrTevbvAYxajwEjg==} requiresBuild: true dev: false @@ -3665,6 +3532,7 @@ packages: parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 + dev: false /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -3721,23 +3589,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: @@ -3760,11 +3621,11 @@ packages: cssom: 0.3.8 dev: true - /csstype/2.6.18: - resolution: {integrity: sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==} + /csstype/2.6.19: + resolution: {integrity: sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==} - /csstype/3.0.9: - resolution: {integrity: sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==} + /csstype/3.0.10: + resolution: {integrity: sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==} /d/1.0.1: resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} @@ -3810,8 +3671,8 @@ packages: dev: true optional: true - /debug/4.3.2: - resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} + /debug/4.3.3: + resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -3821,8 +3682,8 @@ packages: dependencies: ms: 2.1.2 - /debug/4.3.2_supports-color@8.1.1: - resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} + /debug/4.3.3_supports-color@9.2.1: + resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -3831,7 +3692,7 @@ packages: optional: true dependencies: ms: 2.1.2 - supports-color: 8.1.1 + supports-color: 9.2.1 dev: true /decamelize-keys/1.1.0: @@ -3894,6 +3755,10 @@ packages: resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==} dev: false + /delegates/1.0.0: + resolution: {integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=} + dev: false + /denque/1.5.1: resolution: {integrity: sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==} engines: {node: '>=0.10'} @@ -3908,6 +3773,12 @@ packages: resolution: {integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=} dev: true + /detect-libc/1.0.3: + resolution: {integrity: sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=} + engines: {node: '>=0.10'} + hasBin: true + dev: false + /detect-newline/3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -3934,8 +3805,8 @@ packages: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: false - /diff-sequences/27.0.6: - resolution: {integrity: sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==} + /diff-sequences/27.4.0: + resolution: {integrity: sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true @@ -3998,8 +3869,8 @@ packages: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} dev: true - /electron-to-chromium/1.3.848: - resolution: {integrity: sha512-wchRyBcdcmibioggdO7CbMT5QQ4lXlN/g7Mkpf1K2zINidnqij6EVu94UIZ+h5nB2S9XD4bykqFv9LonAWLFyw==} + /electron-to-chromium/1.4.29: + resolution: {integrity: sha512-N2Jbwxo5Rum8G2YXeUxycs1sv4Qme/ry71HG73bv8BvZl+I/4JtRgK/En+ST/Wh/yF1fqvVCY4jZBgMxnhjtBA==} /emittery/0.8.1: resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} @@ -4008,11 +3879,9 @@ packages: /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - /emojis-list/3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} + /emoji-regex/9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true /encodeurl/1.0.2: @@ -4052,8 +3921,8 @@ packages: dependencies: is-arrayish: 0.2.1 - /es-abstract/1.18.6: - resolution: {integrity: sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==} + /es-abstract/1.19.1: + resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -4065,10 +3934,12 @@ packages: has-symbols: 1.0.2 internal-slot: 1.0.3 is-callable: 1.2.4 - is-negative-zero: 2.0.1 + is-negative-zero: 2.0.2 is-regex: 1.1.4 + is-shared-array-buffer: 1.0.1 is-string: 1.0.7 - object-inspect: 1.11.0 + is-weakref: 1.0.2 + object-inspect: 1.12.0 object-keys: 1.1.1 object.assign: 4.1.2 string.prototype.trimend: 1.0.4 @@ -4076,8 +3947,8 @@ packages: unbox-primitive: 1.0.1 dev: true - /es-module-lexer/0.9.2: - resolution: {integrity: sha512-YkAGWqxZq2B4FxQ5y687UwywDwvLQhIMCZ+SDU7ZW729SDHOEI6wVFXwTRecz+yiwJzCsVwC6V7bxyNbZSB1rg==} + /es-module-lexer/0.9.3: + resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} dev: true /es-to-primitive/1.2.1: @@ -4112,139 +3983,147 @@ packages: ext: 1.6.0 dev: false - /esbuild-android-arm64/0.13.2: - resolution: {integrity: sha512-Eh2paXUWYqf5JgikdkC0LnhtjSC8tGAz/L2kJRlMC0o3DzOBIxcmT2fdzBerdhW4roY0bOExfcO6deI1qsxI/A==} + /esbuild-android-arm64/0.14.3: + resolution: {integrity: sha512-v/vdnGJiSGWOAXzg422T9qb4S+P3tOaYtc5n3FDR27Bh3/xQDS7PdYz/yY7HhOlVp0eGwWNbPHEi8FcEhXjsuw==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /esbuild-darwin-64/0.13.2: - resolution: {integrity: sha512-jqp6uXHIIAWZ8kxRqFjxyMmIE1cuSbINellwwigOgk44eLg74ls82oqjY72MbDAowPivQkOU/fF7tsyaGQf5Zg==} + /esbuild-darwin-64/0.14.3: + resolution: {integrity: sha512-swY5OtEg6cfWdgc/XEjkBP7wXSyXXeZHEsWMdh1bDiN1D6GmRphk9SgKFKTj+P3ZHhOGIcC1+UdIwHk5bUcOig==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /esbuild-darwin-arm64/0.13.2: - resolution: {integrity: sha512-bD4oAyPZdzOWEA/JoX0sAitOhjJRwhomhWMeyRyowtlVQhQleG2ijRUKTvkq4CAvSobrW5EnZxjvHNKJ5L7zJg==} + /esbuild-darwin-arm64/0.14.3: + resolution: {integrity: sha512-6i9dXPk8oT87wF6VHmwzSad76eMRU2Rt+GXrwF3Y4DCJgnPssJbabNQ9gurkuEX8M0YnEyJF0d1cR7rpTzcEiA==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /esbuild-freebsd-64/0.13.2: - resolution: {integrity: sha512-fFJ0yc3lZyfwca+F5OPN/s+izozWryUQpN8aUMIdUkOa7UKX0h3xXrKnkDgdOo8vy3d1A6zHH0/4f2VJfEzLCg==} + /esbuild-freebsd-64/0.14.3: + resolution: {integrity: sha512-WDY5ENsmyceeE+95U3eI+FM8yARY5akWkf21M/x/+v2P5OVsYqCYELglSeAI5Y7bhteCVV3g4i2fRqtkmprdSA==} cpu: [x64] os: [freebsd] requiresBuild: true optional: true - /esbuild-freebsd-arm64/0.13.2: - resolution: {integrity: sha512-DWBZauEfjmqdfWxIacI+KBEim3ulOjtvK+WVm1bX67XlfyUVIkD915OIfT2EBhQUWmv+Z0tZZwskSMNj5DKojw==} + /esbuild-freebsd-arm64/0.14.3: + resolution: {integrity: sha512-4BEEGcP0wBzg04pCCWXlgaPuksQHHfwHvYgCIsi+7IsuB17ykt6MHhTkHR5b5pjI/jNtRhPfMsDODUyftQJgvw==} cpu: [arm64] os: [freebsd] requiresBuild: true optional: true - /esbuild-linux-32/0.13.2: - resolution: {integrity: sha512-Gt2rNqqRCRh1QQC2d83KP0iWIXWQYpns7l2+41a1n0PQxXkQ5AarpjjL9mUzdXtcZauNXbUvWwBKAuBTCW+XQg==} + /esbuild-linux-32/0.14.3: + resolution: {integrity: sha512-8yhsnjLG/GwCA1RAIndjmCHWViRB2Ol0XeOh2fCXS9qF8tlVrJB7qAiHZpm2vXx+yjOA/bFLTxzU+5pMKqkn5A==} cpu: [ia32] os: [linux] requiresBuild: true optional: true - /esbuild-linux-64/0.13.2: - resolution: {integrity: sha512-yT0D5Xly8oGHuqq975k1XUyULHzk3fN/ZlTY+awlU+nCFsYPZ43NE5msGpxlNQu8i6KOXQEke5GXN3y5d+Zd4g==} + /esbuild-linux-64/0.14.3: + resolution: {integrity: sha512-eNq4aixfbwXHIJq4bQDe+XaSNV1grxqpZYs/zHbp0HGHf6SBNlTI02uyTbYGpIzlXmCEPS9tpPCi7BTU45kcJQ==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /esbuild-linux-arm/0.13.2: - resolution: {integrity: sha512-KXeyotqj9jbvCjbSpwnxDE8E8jKoBgrgbJpOvvY5Zz7Pp2fAwu/94vWQtE/jPEJndY4C4MSs+ryJLFWzmLOa4w==} + /esbuild-linux-arm/0.14.3: + resolution: {integrity: sha512-YcMvJHAQnWrWKb+eLxN9e/iWUC/3w01UF/RXuMknqOW3prX8UQ63QknWz9/RI8BY/sdrdgPEbSmsTU2jy2cayQ==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /esbuild-linux-arm64/0.13.2: - resolution: {integrity: sha512-qwXL+3NDCWiC8RMKBBETpuOWdC+pUAUS+pwg9jJmapYblLdVKkyRtwF/ogj06TdYs6riSSNikW8HK/Xs0HHbbQ==} + /esbuild-linux-arm64/0.14.3: + resolution: {integrity: sha512-wPLyRoqoV/tEMQ7M24DpAmCMyKqBmtgZY35w2tXM8X5O5b2Ohi7fkPSmd6ZgLIxZIApWt88toA8RT0S7qoxcOA==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /esbuild-linux-mips64le/0.13.2: - resolution: {integrity: sha512-sx8eheRX2XC2ppNAsbQm8/VUcU8XPYGpJK0BEyRefqHONz6u5Ib2guUdOz2Wh4YlbA7oOd482lHjprXSTwUcrQ==} + /esbuild-linux-mips64le/0.14.3: + resolution: {integrity: sha512-DdmfM5rcuoqjQL3px5MbquAjZWnySB5LdTrg52SSapp0gXMnGcsM6GY2WVta02CMKn5qi7WPVG4WbqTWE++tJw==} cpu: [mips64el] os: [linux] requiresBuild: true optional: true - /esbuild-linux-ppc64le/0.13.2: - resolution: {integrity: sha512-y8iZ3qy2TIAKKsZ6xSopCztHOtGW9oiYDl22vQ0UIoVWjnfRKrbSzX7Y2F94y32hSvRWle6OhAIC+UpS5nQmIA==} + /esbuild-linux-ppc64le/0.14.3: + resolution: {integrity: sha512-ujdqryj0m135Ms9yaNDVFAcLeRtyftM/v2v7Osji5zElf2TivSMdFxdrYnYICuHfkm8c8gHg1ncwqitL0r+nnA==} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /esbuild-openbsd-64/0.13.2: - resolution: {integrity: sha512-g6AYrjBeV9OK624bw0KQ1TjHJQSW+X1Yicyd1NvDWqSFpMqKAjw7EUX4tA87mOFqv8BflPGr4f43ySgNvSVzIw==} + /esbuild-netbsd-64/0.14.3: + resolution: {integrity: sha512-Z/UB9OUdwo1KDJCSGnVueDuKowRZRkduLvRMegHtDBHC3lS5LfZ3RdM1i+4MMN9iafyk8Q9FNcqIXI178ZujvA==} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + + /esbuild-openbsd-64/0.14.3: + resolution: {integrity: sha512-9I1uoMDeogq3zQuTe3qygmXYjImnvc6rBn51LLbLniQDlfvqHPBMnAZ/5KshwtXXIIMkCwByytDZdiuzRRlTvQ==} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - /esbuild-sunos-64/0.13.2: - resolution: {integrity: sha512-hIXvFIyrqwFd6v62XSra0ctCUXDS9Tu5D6QYbvnbhEoBmvD/TmEJRYRH48/+xmRifKJLzu6aegcrjAsDmaww7g==} + /esbuild-sunos-64/0.14.3: + resolution: {integrity: sha512-pldqx/Adxl4V4ymiyKxOOyJmHn6nUIo3wqk2xBx07iDgmL2XTcDDQd7N4U4QGu9LnYN4ZF+8IdOYa3oRRpbjtg==} cpu: [x64] os: [sunos] requiresBuild: true optional: true - /esbuild-windows-32/0.13.2: - resolution: {integrity: sha512-Y767LG0NFkw0sPoDVOTKC5gaj4vURjjWfSCCDV5awpXXxBKOF2zsIp3aia4KvVoivoSSeRPk3emDd0OPHuPrKg==} + /esbuild-windows-32/0.14.3: + resolution: {integrity: sha512-AqzvA/KbkC2m3kTXGpljLin3EttRbtoPTfBn6w6n2m9MWkTEbhQbE1ONoOBxhO5tExmyJdL/6B87TJJD5jEFBQ==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /esbuild-windows-64/0.13.2: - resolution: {integrity: sha512-01b59kVJUMasctn6lzswC0drchr7zO75QtF22o5w0nlOw0Zorw0loY/8i5choFuWc30gXJId9qBSc1zPvt7uEw==} + /esbuild-windows-64/0.14.3: + resolution: {integrity: sha512-HGg3C6113zLGB5hN41PROTnBuoh/arG2lQdOird6xFl9giff1cAfMQOUJUfODKD57dDqHjQ1YGW8gOkg0/IrWw==} cpu: [x64] os: [win32] requiresBuild: true optional: true - /esbuild-windows-arm64/0.13.2: - resolution: {integrity: sha512-HxyY604ytmh8NkPYyS1TdIB/bFS7DWd1hP90e8Ovo/elEdN5I13h0tyIatDYZkXKS0Ztk+9T/3h6K0fI1a/4tQ==} + /esbuild-windows-arm64/0.14.3: + resolution: {integrity: sha512-qB2izYu4VpigGnOrAN2Yv7ICYLZWY/AojZtwFfteViDnHgW4jXPYkHQIXTISJbRz25H2cYiv+MfRQYK31RNjlw==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /esbuild/0.13.2: - resolution: {integrity: sha512-/tpIqo45hyRREGqh7hsIut8GwY1X2n9IhKbIwRIXUO6IohzG3/RarSGX7dT2eNvYzIbQmelpX+ZyuIphE5u+Bw==} + /esbuild/0.14.3: + resolution: {integrity: sha512-zyEC5hkguW2oieXRXp8VJzQdcO/1FxCS5GjzqOHItRlojXnx/cTavsrkxdWvBH9li2lUq0bN+LeeVEmyCwiR/Q==} hasBin: true requiresBuild: true optionalDependencies: - esbuild-android-arm64: 0.13.2 - esbuild-darwin-64: 0.13.2 - esbuild-darwin-arm64: 0.13.2 - esbuild-freebsd-64: 0.13.2 - esbuild-freebsd-arm64: 0.13.2 - esbuild-linux-32: 0.13.2 - esbuild-linux-64: 0.13.2 - esbuild-linux-arm: 0.13.2 - esbuild-linux-arm64: 0.13.2 - esbuild-linux-mips64le: 0.13.2 - esbuild-linux-ppc64le: 0.13.2 - esbuild-openbsd-64: 0.13.2 - esbuild-sunos-64: 0.13.2 - esbuild-windows-32: 0.13.2 - esbuild-windows-64: 0.13.2 - esbuild-windows-arm64: 0.13.2 + esbuild-android-arm64: 0.14.3 + esbuild-darwin-64: 0.14.3 + esbuild-darwin-arm64: 0.14.3 + esbuild-freebsd-64: 0.14.3 + esbuild-freebsd-arm64: 0.14.3 + esbuild-linux-32: 0.14.3 + esbuild-linux-64: 0.14.3 + esbuild-linux-arm: 0.14.3 + esbuild-linux-arm64: 0.14.3 + esbuild-linux-mips64le: 0.14.3 + esbuild-linux-ppc64le: 0.14.3 + esbuild-netbsd-64: 0.14.3 + esbuild-openbsd-64: 0.14.3 + esbuild-sunos-64: 0.14.3 + esbuild-windows-32: 0.14.3 + esbuild-windows-64: 0.14.3 + esbuild-windows-arm64: 0.14.3 /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -4274,38 +4153,39 @@ packages: hasBin: true dependencies: esprima: 4.0.1 - estraverse: 5.2.0 + estraverse: 5.3.0 esutils: 2.0.3 optionator: 0.8.3 optionalDependencies: source-map: 0.6.1 dev: true - /eslint-define-config/1.1.2: - resolution: {integrity: sha512-wf+ATzYNAG3xU1eT4QosuF20E60nGbaAvTwjDARabsTuelRxhmyzJEvk8prO/xJScU427X/gCmUNpzpy6Mc1uQ==} + /eslint-define-config/1.2.1: + resolution: {integrity: sha512-Mj6OvJXNDrMA+RtFtPFst4BRJPkB4qi9B+8FFr/hdxY0gNbhGoSnp7i3w3/k75vMXTbbfsmeZhQUomI6mK/JVw==} + 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.5.0: resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 8.1.0 + eslint: 8.5.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.5.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.5.0 + eslint-plugin-es: 3.0.1_eslint@8.5.0 eslint-utils: 2.1.0 - ignore: 5.1.8 + ignore: 5.2.0 minimatch: 3.0.4 resolve: 1.20.0 semver: 6.3.0 @@ -4319,12 +4199,12 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope/6.0.0: - resolution: {integrity: sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==} + /eslint-scope/7.1.0: + resolution: {integrity: sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 - estraverse: 5.2.0 + estraverse: 5.3.0 dev: true /eslint-utils/2.1.0: @@ -4334,13 +4214,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.5.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.5.0 eslint-visitor-keys: 2.1.0 dev: true @@ -4354,40 +4234,40 @@ packages: engines: {node: '>=10'} dev: true - /eslint-visitor-keys/3.0.0: - resolution: {integrity: sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==} + /eslint-visitor-keys/3.1.0: + resolution: {integrity: sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==} 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.5.0: + resolution: {integrity: sha512-tVGSkgNbOfiHyVte8bCM8OmX+xG9PzVG/B4UCF60zx7j61WIVY/AqJECDgpLD4DbbESD0e174gOg3ZlrX15GDg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.0.3 - '@humanwhocodes/config-array': 0.6.0 + '@eslint/eslintrc': 1.0.5 + '@humanwhocodes/config-array': 0.9.2 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.2 + debug: 4.3.3 doctrine: 3.0.0 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-visitor-keys: 3.0.0 - espree: 9.0.0 + eslint-scope: 7.1.0 + eslint-utils: 3.0.0_eslint@8.5.0 + eslint-visitor-keys: 3.1.0 + espree: 9.2.0 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 functional-red-black-tree: 1.0.1 - glob-parent: 6.0.1 - globals: 13.11.0 + glob-parent: 6.0.2 + globals: 13.12.0 ignore: 4.0.6 import-fresh: 3.3.0 imurmurhash: 0.1.4 - is-glob: 4.0.1 + is-glob: 4.0.3 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -4398,7 +4278,7 @@ packages: progress: 2.0.3 regexpp: 3.2.0 semver: 7.3.5 - strip-ansi: 6.0.0 + strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 v8-compile-cache: 2.3.0 @@ -4406,13 +4286,13 @@ packages: - supports-color dev: true - /espree/9.0.0: - resolution: {integrity: sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==} + /espree/9.2.0: + resolution: {integrity: sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.5.0 - acorn-jsx: 5.3.2_acorn@8.5.0 - eslint-visitor-keys: 3.0.0 + acorn: 8.7.0 + acorn-jsx: 5.3.2_acorn@8.7.0 + eslint-visitor-keys: 3.1.0 dev: true /esprima/4.0.1: @@ -4425,14 +4305,14 @@ packages: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} dependencies: - estraverse: 5.2.0 + estraverse: 5.3.0 dev: true /esrecurse/4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: - estraverse: 5.2.0 + estraverse: 5.3.0 dev: true /estraverse/4.3.0: @@ -4440,8 +4320,8 @@ packages: engines: {node: '>=4.0'} dev: true - /estraverse/5.2.0: - resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true @@ -4480,7 +4360,7 @@ packages: is-stream: 1.1.0 npm-run-path: 2.0.2 p-finally: 1.0.0 - signal-exit: 3.0.4 + signal-exit: 3.0.6 strip-eof: 1.0.0 dev: true @@ -4495,7 +4375,7 @@ packages: merge-stream: 2.0.0 npm-run-path: 4.0.1 onetime: 5.1.2 - signal-exit: 3.0.4 + signal-exit: 3.0.6 strip-final-newline: 2.0.0 dev: true @@ -4504,28 +4384,28 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expect/27.2.4: - resolution: {integrity: sha512-gOtuonQ8TCnbNNCSw2fhVzRf8EFYDII4nB5NmG4IEV0rbUnW1I5zXvoTntU4iicB/Uh0oZr20NGlOLdJiwsOZA==} + /expect/27.4.2: + resolution: {integrity: sha512-BjAXIDC6ZOW+WBFNg96J22D27Nq5ohn+oGcuP2rtOtcjuxNoV9McpQ60PcQWhdFOSBIQdR72e+4HdnbZTFSTyg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.2.4 + '@jest/types': 27.4.2 ansi-styles: 5.2.0 - jest-get-type: 27.0.6 - jest-matcher-utils: 27.2.4 - jest-message-util: 27.2.4 - jest-regex-util: 27.0.6 + jest-get-type: 27.4.0 + jest-matcher-utils: 27.4.2 + jest-message-util: 27.4.2 + jest-regex-util: 27.4.0 dev: true - /express/4.17.1: - resolution: {integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==} + /express/4.17.2: + resolution: {integrity: sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.7 array-flatten: 1.1.1 - body-parser: 1.19.0 - content-disposition: 0.5.3 + body-parser: 1.19.1 + content-disposition: 0.5.4 content-type: 1.0.4 - cookie: 0.4.0 + cookie: 0.4.1 cookie-signature: 1.0.6 debug: 2.6.9 depd: 1.1.2 @@ -4540,12 +4420,12 @@ packages: parseurl: 1.3.3 path-to-regexp: 0.1.7 proxy-addr: 2.0.7 - qs: 6.7.0 + qs: 6.9.6 range-parser: 1.2.1 - safe-buffer: 5.1.2 - send: 0.17.1 - serve-static: 1.14.1 - setprototypeof: 1.1.1 + safe-buffer: 5.2.1 + send: 0.17.2 + serve-static: 1.14.2 + setprototypeof: 1.2.0 statuses: 1.5.0 type-is: 1.6.18 utils-merge: 1.0.1 @@ -4563,7 +4443,7 @@ packages: engines: {node: '>= 10.17.0'} hasBin: true dependencies: - debug: 4.3.2 + debug: 4.3.3 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -4660,22 +4540,35 @@ packages: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.2 + flatted: 3.2.4 rimraf: 3.0.2 dev: true - /flatted/3.2.2: - resolution: {integrity: sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==} + /flatted/3.2.4: + resolution: {integrity: sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==} dev: true - /follow-redirects/1.14.4: - resolution: {integrity: sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==} + /follow-redirects/1.14.6: + resolution: {integrity: sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==} engines: {node: '>=4.0'} peerDependencies: debug: '*' peerDependenciesMeta: debug: optional: true + dev: false + + /follow-redirects/1.14.6_debug@4.3.3: + resolution: {integrity: sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.3.3 + dev: true /form-data/3.0.1: resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} @@ -4683,7 +4576,7 @@ packages: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 - mime-types: 2.1.32 + mime-types: 2.1.34 dev: true /formdata-node/2.5.0: @@ -4698,8 +4591,8 @@ packages: engines: {node: '>= 0.6'} dev: true - /fraction.js/4.1.1: - resolution: {integrity: sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==} + /fraction.js/4.1.2: + resolution: {integrity: sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==} dev: false /fresh/0.5.2: @@ -4724,6 +4617,13 @@ packages: universalify: 0.1.2 dev: true + /fs-minipass/2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.1.6 + dev: false + /fs.realpath/1.0.0: resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} @@ -4741,10 +4641,25 @@ packages: resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} dev: true - /generic-names/2.0.1: - resolution: {integrity: sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==} + /gauge/3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.6 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: false + + /generic-names/4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} dependencies: - loader-utils: 1.4.0 + loader-utils: 3.2.0 dev: true /gensync/1.0.0-beta.2: @@ -4764,10 +4679,6 @@ packages: has-symbols: 1.0.2 dev: true - /get-own-enumerable-property-symbols/3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - dev: true - /get-package-type/0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -4848,24 +4759,13 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: - is-glob: 4.0.1 + is-glob: 4.0.3 - /glob-parent/6.0.1: - resolution: {integrity: sha512-kEVjS71mQazDBHKcsq4E9u/vUzaLcw1A8EtUeydawvIWQCJM0qQ08G1H7/XTjFUulla6XQiDOG6MXSaG0HDKog==} + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: - is-glob: 4.0.1 - - /glob/7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.0.4 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true + is-glob: 4.0.3 /glob/7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} @@ -4881,8 +4781,8 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals/13.11.0: - resolution: {integrity: sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==} + /globals/13.12.0: + resolution: {integrity: sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -4895,7 +4795,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.7 - ignore: 5.1.8 + ignore: 5.2.0 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -4919,7 +4819,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.14.2 + uglify-js: 3.14.5 dev: true /hard-rejection/2.1.0: @@ -4951,6 +4851,10 @@ packages: has-symbols: 1.0.2 dev: true + /has-unicode/2.0.1: + resolution: {integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=} + dev: false + /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -4972,10 +4876,10 @@ packages: /history/4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.5 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 @@ -5029,26 +4933,15 @@ packages: resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} dev: true - /http-errors/1.7.2: - resolution: {integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==} - engines: {node: '>= 0.6'} - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.1 - statuses: 1.5.0 - toidentifier: 1.0.0 - dev: true - - /http-errors/1.7.3: - resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} + /http-errors/1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} engines: {node: '>= 0.6'} dependencies: depd: 1.1.2 inherits: 2.0.4 - setprototypeof: 1.1.1 + setprototypeof: 1.2.0 statuses: 1.5.0 - toidentifier: 1.0.0 + toidentifier: 1.0.1 dev: true /http-proxy-agent/4.0.1: @@ -5057,17 +4950,17 @@ packages: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.2 + debug: 4.3.3 transitivePeerDependencies: - supports-color dev: true - /http-proxy/1.18.1_debug@4.3.2: + /http-proxy/1.18.1_debug@4.3.3: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.14.4 + follow-redirects: 1.14.6_debug@4.3.3 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -5078,10 +4971,9 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.2 + debug: 4.3.3 transitivePeerDependencies: - supports-color - dev: true /human-signals/2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} @@ -5099,13 +4991,13 @@ packages: resolution: {integrity: sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=} dev: true - /icss-utils/5.1.0_postcss@8.3.8: + /icss-utils/5.1.0_postcss@8.4.5: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.3.8 + postcss: 8.4.5 dev: true /ignore/4.0.6: @@ -5113,8 +5005,8 @@ packages: engines: {node: '>= 4'} dev: true - /ignore/5.1.8: - resolution: {integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==} + /ignore/5.2.0: + resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} dev: true @@ -5126,6 +5018,10 @@ packages: dev: true optional: true + /immutable/4.0.0: + resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==} + dev: true + /import-cwd/3.0.0: resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} engines: {node: '>=8'} @@ -5150,8 +5046,8 @@ packages: engines: {node: '>=8'} dev: true - /import-local/3.0.2: - resolution: {integrity: sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==} + /import-local/3.0.3: + resolution: {integrity: sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==} engines: {node: '>=8'} hasBin: true dependencies: @@ -5175,10 +5071,6 @@ packages: once: 1.4.0 wrappy: 1.0.2 - /inherits/2.0.3: - resolution: {integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=} - dev: true - /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -5195,12 +5087,12 @@ packages: side-channel: 1.0.4 dev: true - /ioredis/4.27.9: - resolution: {integrity: sha512-hAwrx9F+OQ0uIvaJefuS3UTqW+ByOLyLIV+j0EH8ClNVxvFyH9Vmb08hCL4yje6mDYT5zMquShhypkd50RRzkg==} + /ioredis/4.28.2: + resolution: {integrity: sha512-kQ+Iv7+c6HsDdPP2XUHaMv8DhnSeAeKEwMbaoqsXYbO+03dItXt7+5jGQDRyjdRUV2rFJbzg7P4Qt1iX2tqkOg==} engines: {node: '>=6'} dependencies: cluster-key-slot: 1.1.0 - debug: 4.3.2 + debug: 4.3.3 denque: 1.5.1 lodash.defaults: 4.2.0 lodash.flatten: 4.4.0 @@ -5214,6 +5106,10 @@ packages: - supports-color dev: true + /ip/1.1.5: + resolution: {integrity: sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=} + dev: true + /ipaddr.js/1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -5258,13 +5154,6 @@ packages: ci-info: 1.6.0 dev: true - /is-ci/3.0.0: - resolution: {integrity: sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==} - hasBin: true - dependencies: - ci-info: 3.2.0 - dev: true - /is-color-stop/1.1.0: resolution: {integrity: sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=} dependencies: @@ -5276,8 +5165,8 @@ packages: rgba-regex: 1.0.0 dev: false - /is-core-module/2.6.0: - resolution: {integrity: sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==} + /is-core-module/2.8.0: + resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} dependencies: has: 1.0.3 @@ -5308,6 +5197,10 @@ packages: /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + + /is-fullwidth-code-point/4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} dev: true /is-generator-fn/2.1.0: @@ -5315,25 +5208,18 @@ packages: engines: {node: '>=6'} dev: true - /is-glob/4.0.1: - resolution: {integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-module/1.0.0: resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} dev: true - /is-negative-zero/2.0.1: - resolution: {integrity: sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==} + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true @@ -5348,11 +5234,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - /is-obj/1.0.1: - resolution: {integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8=} - engines: {node: '>=0.10.0'} - dev: true - /is-obj/2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} @@ -5385,9 +5266,8 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-regexp/1.0.0: - resolution: {integrity: sha1-/S2INUXEa6xaYz57mgnof6LLUGk=} - engines: {node: '>=0.10.0'} + /is-shared-array-buffer/1.0.1: + resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} dev: true /is-stream/1.1.0: @@ -5425,6 +5305,12 @@ packages: resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} dev: true + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + /is-what/3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} dev: true @@ -5448,8 +5334,8 @@ packages: resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} dev: true - /istanbul-lib-coverage/3.0.1: - resolution: {integrity: sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ==} + /istanbul-lib-coverage/3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true @@ -5457,9 +5343,22 @@ packages: resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.15.5 + '@babel/core': 7.16.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument/5.1.0: + resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.16.5 + '@babel/parser': 7.16.6 '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.0.1 + istanbul-lib-coverage: 3.2.0 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -5469,59 +5368,59 @@ packages: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: - istanbul-lib-coverage: 3.0.1 + istanbul-lib-coverage: 3.2.0 make-dir: 3.1.0 supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.0: - resolution: {integrity: sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==} - engines: {node: '>=8'} + /istanbul-lib-source-maps/4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} dependencies: - debug: 4.3.2 - istanbul-lib-coverage: 3.0.1 + debug: 4.3.3 + istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color dev: true - /istanbul-reports/3.0.2: - resolution: {integrity: sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==} + /istanbul-reports/3.1.2: + resolution: {integrity: sha512-0gHxuT1NNC0aEIL1zbJ+MTgPbbHhU77eJPuU35WKA7TgXiSNlCAx4PENoMrH0Or6M2H80TaZcWKhM0IK6V8gRw==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/27.2.4: - resolution: {integrity: sha512-eeO1C1u4ex7pdTroYXezr+rbr957myyVoKGjcY4R1TJi3A+9v+4fu1Iv9J4eLq1bgFyT3O3iRWU9lZsEE7J72Q==} + /jest-changed-files/27.4.2: + resolution: {integrity: sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.2.4 + '@jest/types': 27.4.2 execa: 5.1.1 throat: 6.0.1 dev: true - /jest-circus/27.2.4: - resolution: {integrity: sha512-TtheheTElrGjlsY9VxkzUU1qwIx05ItIusMVKnvNkMt4o/PeegLRcjq3Db2Jz0GGdBalJdbzLZBgeulZAJxJWA==} + /jest-circus/27.4.5: + resolution: {integrity: sha512-eTNWa9wsvBwPykhMMShheafbwyakcdHZaEYh5iRrQ0PFJxkDP/e3U/FvzGuKWu2WpwUA3C3hPlfpuzvOdTVqnw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/environment': 27.2.4 - '@jest/test-result': 27.2.4 - '@jest/types': 27.2.4 - '@types/node': 15.14.9 + '@jest/environment': 27.4.4 + '@jest/test-result': 27.4.2 + '@jest/types': 27.4.2 + '@types/node': 16.11.17 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 - expect: 27.2.4 + expect: 27.4.2 is-generator-fn: 2.1.0 - jest-each: 27.2.4 - jest-matcher-utils: 27.2.4 - jest-message-util: 27.2.4 - jest-runtime: 27.2.4 - jest-snapshot: 27.2.4 - jest-util: 27.2.4 - pretty-format: 27.2.4 + jest-each: 27.4.2 + jest-matcher-utils: 27.4.2 + jest-message-util: 27.4.2 + jest-runtime: 27.4.5 + jest-snapshot: 27.4.5 + jest-util: 27.4.2 + pretty-format: 27.4.2 slash: 3.0.0 stack-utils: 2.0.5 throat: 6.0.1 @@ -5529,8 +5428,8 @@ packages: - supports-color dev: true - /jest-cli/27.2.4_ts-node@10.2.1: - resolution: {integrity: sha512-4kpQQkg74HYLaXo3nzwtg4PYxSLgL7puz1LXHj5Tu85KmlIpxQFjRkXlx4V47CYFFIDoyl3rHA/cXOxUWyMpNg==} + /jest-cli/27.4.5_ts-node@10.4.0: + resolution: {integrity: sha512-hrky3DSgE0u7sQxaCL7bdebEPHx5QzYmrGuUjaPLmPE8jx5adtvGuOlRspvMoVLTTDOHRnZDoRLYJuA+VCI7Hg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true peerDependencies: @@ -5539,17 +5438,17 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.2.4_ts-node@10.2.1 - '@jest/test-result': 27.2.4 - '@jest/types': 27.2.4 + '@jest/core': 27.4.5_ts-node@10.4.0 + '@jest/test-result': 27.4.2 + '@jest/types': 27.4.2 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.8 - import-local: 3.0.2 - jest-config: 27.2.4_ts-node@10.2.1 - jest-util: 27.2.4 - jest-validate: 27.2.4 - prompts: 2.4.1 + import-local: 3.0.3 + jest-config: 27.4.5_ts-node@10.4.0 + jest-util: 27.4.2 + jest-validate: 27.4.2 + prompts: 2.4.2 yargs: 16.2.0 transitivePeerDependencies: - bufferutil @@ -5559,8 +5458,8 @@ packages: - utf-8-validate dev: true - /jest-config/27.2.4_ts-node@10.2.1: - resolution: {integrity: sha512-tWy0UxhdzqiKyp4l5Vq4HxLyD+gH5td+GCF3c22/DJ0bYAOsMo+qi2XtbJI6oYMH5JOJQs9nLW/r34nvFCehjA==} + /jest-config/27.4.5_ts-node@10.4.0: + resolution: {integrity: sha512-t+STVJtPt+fpqQ8GBw850NtSQbnDOw/UzdPfzDaHQ48/AylQlW7LHj3dH+ndxhC1UxJ0Q3qkq7IH+nM1skwTwA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: ts-node: '>=9.0.0' @@ -5568,28 +5467,29 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.15.5 - '@jest/test-sequencer': 27.2.4 - '@jest/types': 27.2.4 - babel-jest: 27.2.4_@babel+core@7.15.5 + '@babel/core': 7.16.5 + '@jest/test-sequencer': 27.4.5 + '@jest/types': 27.4.2 + babel-jest: 27.4.5_@babel+core@7.16.5 chalk: 4.1.2 + ci-info: 3.3.0 deepmerge: 4.2.2 glob: 7.2.0 graceful-fs: 4.2.8 - is-ci: 3.0.0 - jest-circus: 27.2.4 - jest-environment-jsdom: 27.2.4 - jest-environment-node: 27.2.4 - jest-get-type: 27.0.6 - jest-jasmine2: 27.2.4 - jest-regex-util: 27.0.6 - jest-resolve: 27.2.4 - jest-runner: 27.2.4 - jest-util: 27.2.4 - jest-validate: 27.2.4 + jest-circus: 27.4.5 + jest-environment-jsdom: 27.4.4 + jest-environment-node: 27.4.4 + jest-get-type: 27.4.0 + jest-jasmine2: 27.4.5 + jest-regex-util: 27.4.0 + jest-resolve: 27.4.5 + jest-runner: 27.4.5 + jest-util: 27.4.2 + jest-validate: 27.4.2 micromatch: 4.0.4 - pretty-format: 27.2.4 - ts-node: 10.2.1_3b624d72c50530188ff09826d1b48ebf + pretty-format: 27.4.2 + slash: 3.0.0 + ts-node: 10.4.0_00264fd83560919cd06c986889baae0a transitivePeerDependencies: - bufferutil - canvas @@ -5597,54 +5497,44 @@ packages: - utf-8-validate dev: true - /jest-diff/27.2.0: - resolution: {integrity: sha512-QSO9WC6btFYWtRJ3Hac0sRrkspf7B01mGrrQEiCW6TobtViJ9RWL0EmOs/WnBsZDsI/Y2IoSHZA2x6offu0sYw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 27.0.6 - jest-get-type: 27.0.6 - pretty-format: 27.2.0 - dev: true - - /jest-diff/27.2.4: - resolution: {integrity: sha512-bLAVlDSCR3gqUPGv+4nzVpEXGsHh98HjUL7Vb2hVyyuBDoQmja8eJb0imUABsuxBeUVmf47taJSAd9nDrwWKEg==} + /jest-diff/27.4.2: + resolution: {integrity: sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 27.0.6 - jest-get-type: 27.0.6 - pretty-format: 27.2.4 + diff-sequences: 27.4.0 + jest-get-type: 27.4.0 + pretty-format: 27.4.2 dev: true - /jest-docblock/27.0.6: - resolution: {integrity: sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==} + /jest-docblock/27.4.0: + resolution: {integrity: sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/27.2.4: - resolution: {integrity: sha512-w9XVc+0EDBUTJS4xBNJ7N2JCcWItFd006lFjz77OarAQcQ10eFDBMrfDv2GBJMKlXe9aq0HrIIF51AXcZrRJyg==} + /jest-each/27.4.2: + resolution: {integrity: sha512-53V2MNyW28CTruB3lXaHNk6PkiIFuzdOC9gR3C6j8YE/ACfrPnz+slB0s17AgU1TtxNzLuHyvNlLJ+8QYw9nBg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.2.4 + '@jest/types': 27.4.2 chalk: 4.1.2 - jest-get-type: 27.0.6 - jest-util: 27.2.4 - pretty-format: 27.2.4 + jest-get-type: 27.4.0 + jest-util: 27.4.2 + pretty-format: 27.4.2 dev: true - /jest-environment-jsdom/27.2.4: - resolution: {integrity: sha512-X70pTXFSypD7AIzKT1mLnDi5hP9w9mdTRcOGOmoDoBrNyNEg4rYm6d4LQWFLc9ps1VnMuDOkFSG0wjSNYGjkng==} + /jest-environment-jsdom/27.4.4: + resolution: {integrity: sha512-cYR3ndNfHBqQgFvS1RL7dNqSvD//K56j/q1s2ygNHcfTCAp12zfIromO1w3COmXrxS8hWAh7+CmZmGCIoqGcGA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/environment': 27.2.4 - '@jest/fake-timers': 27.2.4 - '@jest/types': 27.2.4 - '@types/node': 15.14.9 - jest-mock: 27.2.4 - jest-util: 27.2.4 + '@jest/environment': 27.4.4 + '@jest/fake-timers': 27.4.2 + '@jest/types': 27.4.2 + '@types/node': 16.11.17 + jest-mock: 27.4.2 + jest-util: 27.4.2 jsdom: 16.7.0 transitivePeerDependencies: - bufferutil @@ -5653,111 +5543,111 @@ packages: - utf-8-validate dev: true - /jest-environment-node/27.2.4: - resolution: {integrity: sha512-ZbVbFSnbzTvhLOIkqh5lcLuGCCFvtG4xTXIRPK99rV2KzQT3kNg16KZwfTnLNlIiWCE8do960eToeDfcqmpSAw==} + /jest-environment-node/27.4.4: + resolution: {integrity: sha512-D+v3lbJ2GjQTQR23TK0kY3vFVmSeea05giInI41HHOaJnAwOnmUHTZgUaZL+VxUB43pIzoa7PMwWtCVlIUoVoA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/environment': 27.2.4 - '@jest/fake-timers': 27.2.4 - '@jest/types': 27.2.4 - '@types/node': 15.14.9 - jest-mock: 27.2.4 - jest-util: 27.2.4 + '@jest/environment': 27.4.4 + '@jest/fake-timers': 27.4.2 + '@jest/types': 27.4.2 + '@types/node': 16.11.17 + jest-mock: 27.4.2 + jest-util: 27.4.2 dev: true - /jest-get-type/27.0.6: - resolution: {integrity: sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==} + /jest-get-type/27.4.0: + resolution: {integrity: sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /jest-haste-map/27.2.4: - resolution: {integrity: sha512-bkJ4bT00T2K+1NZXbRcyKnbJ42I6QBvoDNMTAQQDBhaGNnZreiQKUNqax0e6hLTx7E75pKDeltVu3V1HAdu+YA==} + /jest-haste-map/27.4.5: + resolution: {integrity: sha512-oJm1b5qhhPs78K24EDGifWS0dELYxnoBiDhatT/FThgB9yxqUm5F6li3Pv+Q+apMBmmPNzOBnZ7ZxWMB1Leq1Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.2.4 + '@jest/types': 27.4.2 '@types/graceful-fs': 4.1.5 - '@types/node': 15.14.9 + '@types/node': 16.11.17 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.8 - jest-regex-util: 27.0.6 - jest-serializer: 27.0.6 - jest-util: 27.2.4 - jest-worker: 27.2.4 + jest-regex-util: 27.4.0 + jest-serializer: 27.4.0 + jest-util: 27.4.2 + jest-worker: 27.4.5 micromatch: 4.0.4 - walker: 1.0.7 + walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-jasmine2/27.2.4: - resolution: {integrity: sha512-fcffjO/xLWLVnW2ct3No4EksxM5RyPwHDYu9QU+90cC+/eSMLkFAxS55vkqsxexOO5zSsZ3foVpMQcg/amSeIQ==} + /jest-jasmine2/27.4.5: + resolution: {integrity: sha512-oUnvwhJDj2LhOiUB1kdnJjkx8C5PwgUZQb9urF77mELH9DGR4e2GqpWQKBOYXWs5+uTN9BGDqRz3Aeg5Wts7aw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/traverse': 7.15.4 - '@jest/environment': 27.2.4 - '@jest/source-map': 27.0.6 - '@jest/test-result': 27.2.4 - '@jest/types': 27.2.4 - '@types/node': 15.14.9 + '@babel/traverse': 7.16.5 + '@jest/environment': 27.4.4 + '@jest/source-map': 27.4.0 + '@jest/test-result': 27.4.2 + '@jest/types': 27.4.2 + '@types/node': 16.11.17 chalk: 4.1.2 co: 4.6.0 - expect: 27.2.4 + expect: 27.4.2 is-generator-fn: 2.1.0 - jest-each: 27.2.4 - jest-matcher-utils: 27.2.4 - jest-message-util: 27.2.4 - jest-runtime: 27.2.4 - jest-snapshot: 27.2.4 - jest-util: 27.2.4 - pretty-format: 27.2.4 + jest-each: 27.4.2 + jest-matcher-utils: 27.4.2 + jest-message-util: 27.4.2 + jest-runtime: 27.4.5 + jest-snapshot: 27.4.5 + jest-util: 27.4.2 + pretty-format: 27.4.2 throat: 6.0.1 transitivePeerDependencies: - supports-color dev: true - /jest-leak-detector/27.2.4: - resolution: {integrity: sha512-SrcHWbe0EHg/bw2uBjVoHacTo5xosl068x2Q0aWsjr2yYuW2XwqrSkZV4lurUop0jhv1709ymG4or+8E4sH27Q==} + /jest-leak-detector/27.4.2: + resolution: {integrity: sha512-ml0KvFYZllzPBJWDei3mDzUhyp/M4ubKebX++fPaudpe8OsxUE+m+P6ciVLboQsrzOCWDjE20/eXew9QMx/VGw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - jest-get-type: 27.0.6 - pretty-format: 27.2.4 + jest-get-type: 27.4.0 + pretty-format: 27.4.2 dev: true - /jest-matcher-utils/27.2.4: - resolution: {integrity: sha512-nQeLfFAIPPkyhkDfifAPfP/U5wm1x0fLtAzqXZSSKckXDNuk2aaOfQiDYv1Mgf5GY6yOsxfUnvNm3dDjXM+BXw==} + /jest-matcher-utils/27.4.2: + resolution: {integrity: sha512-jyP28er3RRtMv+fmYC/PKG8wvAmfGcSNproVTW2Y0P/OY7/hWUOmsPfxN1jOhM+0u2xU984u2yEagGivz9OBGQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: chalk: 4.1.2 - jest-diff: 27.2.4 - jest-get-type: 27.0.6 - pretty-format: 27.2.4 + jest-diff: 27.4.2 + jest-get-type: 27.4.0 + pretty-format: 27.4.2 dev: true - /jest-message-util/27.2.4: - resolution: {integrity: sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==} + /jest-message-util/27.4.2: + resolution: {integrity: sha512-OMRqRNd9E0DkBLZpFtZkAGYOXl6ZpoMtQJWTAREJKDOFa0M6ptB7L67tp+cszMBkvSgKOhNtQp2Vbcz3ZZKo/w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/code-frame': 7.14.5 - '@jest/types': 27.2.4 + '@babel/code-frame': 7.16.0 + '@jest/types': 27.4.2 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.8 micromatch: 4.0.4 - pretty-format: 27.2.4 + pretty-format: 27.4.2 slash: 3.0.0 stack-utils: 2.0.5 dev: true - /jest-mock/27.2.4: - resolution: {integrity: sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==} + /jest-mock/27.4.2: + resolution: {integrity: sha512-PDDPuyhoukk20JrQKeofK12hqtSka7mWH0QQuxSNgrdiPsrnYYLS6wbzu/HDlxZRzji5ylLRULeuI/vmZZDrYA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.2.4 - '@types/node': 15.14.9 + '@jest/types': 27.4.2 + '@types/node': 16.11.17 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@27.2.4: + /jest-pnp-resolver/1.2.2_jest-resolve@27.4.5: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -5766,66 +5656,66 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 27.2.4 + jest-resolve: 27.4.5 dev: true - /jest-regex-util/27.0.6: - resolution: {integrity: sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==} + /jest-regex-util/27.4.0: + resolution: {integrity: sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /jest-resolve-dependencies/27.2.4: - resolution: {integrity: sha512-i5s7Uh9B3Q6uwxLpMhNKlgBf6pcemvWaORxsW1zNF/YCY3jd5EftvnGBI+fxVwJ1CBxkVfxqCvm1lpZkbaoGmg==} + /jest-resolve-dependencies/27.4.5: + resolution: {integrity: sha512-elEVvkvRK51y037NshtEkEnukMBWvlPzZHiL847OrIljJ8yIsujD2GXRPqDXC4rEVKbcdsy7W0FxoZb4WmEs7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.2.4 - jest-regex-util: 27.0.6 - jest-snapshot: 27.2.4 + '@jest/types': 27.4.2 + jest-regex-util: 27.4.0 + jest-snapshot: 27.4.5 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/27.2.4: - resolution: {integrity: sha512-IsAO/3+3BZnKjI2I4f3835TBK/90dxR7Otgufn3mnrDFTByOSXclDi3G2XJsawGV4/18IMLARJ+V7Wm7t+J89Q==} + /jest-resolve/27.4.5: + resolution: {integrity: sha512-xU3z1BuOz/hUhVUL+918KqUgK+skqOuUsAi7A+iwoUldK6/+PW+utK8l8cxIWT9AW7IAhGNXjSAh1UYmjULZZw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.2.4 + '@jest/types': 27.4.2 chalk: 4.1.2 - escalade: 3.1.1 graceful-fs: 4.2.8 - jest-haste-map: 27.2.4 - jest-pnp-resolver: 1.2.2_jest-resolve@27.2.4 - jest-util: 27.2.4 - jest-validate: 27.2.4 + jest-haste-map: 27.4.5 + jest-pnp-resolver: 1.2.2_jest-resolve@27.4.5 + jest-util: 27.4.2 + jest-validate: 27.4.2 resolve: 1.20.0 + resolve.exports: 1.1.0 slash: 3.0.0 dev: true - /jest-runner/27.2.4: - resolution: {integrity: sha512-hIo5PPuNUyVDidZS8EetntuuJbQ+4IHWxmHgYZz9FIDbG2wcZjrP6b52uMDjAEQiHAn8yn8ynNe+TL8UuGFYKg==} + /jest-runner/27.4.5: + resolution: {integrity: sha512-/irauncTfmY1WkTaRQGRWcyQLzK1g98GYG/8QvIPviHgO1Fqz1JYeEIsSfF+9mc/UTA6S+IIHFgKyvUrtiBIZg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/console': 27.2.4 - '@jest/environment': 27.2.4 - '@jest/test-result': 27.2.4 - '@jest/transform': 27.2.4 - '@jest/types': 27.2.4 - '@types/node': 15.14.9 + '@jest/console': 27.4.2 + '@jest/environment': 27.4.4 + '@jest/test-result': 27.4.2 + '@jest/transform': 27.4.5 + '@jest/types': 27.4.2 + '@types/node': 16.11.17 chalk: 4.1.2 emittery: 0.8.1 exit: 0.1.2 graceful-fs: 4.2.8 - jest-docblock: 27.0.6 - jest-environment-jsdom: 27.2.4 - jest-environment-node: 27.2.4 - jest-haste-map: 27.2.4 - jest-leak-detector: 27.2.4 - jest-message-util: 27.2.4 - jest-resolve: 27.2.4 - jest-runtime: 27.2.4 - jest-util: 27.2.4 - jest-worker: 27.2.4 - source-map-support: 0.5.20 + jest-docblock: 27.4.0 + jest-environment-jsdom: 27.4.4 + jest-environment-node: 27.4.4 + jest-haste-map: 27.4.5 + jest-leak-detector: 27.4.2 + jest-message-util: 27.4.2 + jest-resolve: 27.4.5 + jest-runtime: 27.4.5 + jest-util: 27.4.2 + jest-worker: 27.4.5 + source-map-support: 0.5.21 throat: 6.0.1 transitivePeerDependencies: - bufferutil @@ -5834,18 +5724,17 @@ packages: - utf-8-validate dev: true - /jest-runtime/27.2.4: - resolution: {integrity: sha512-ICKzzYdjIi70P17MZsLLIgIQFCQmIjMFf+xYww3aUySiUA/QBPUTdUqo5B2eg4HOn9/KkUsV0z6GVgaqAPBJvg==} + /jest-runtime/27.4.5: + resolution: {integrity: sha512-CIYqwuJQXHQtPd/idgrx4zgJ6iCb6uBjQq1RSAGQrw2S8XifDmoM1Ot8NRd80ooAm+ZNdHVwsktIMGlA1F1FAQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/console': 27.2.4 - '@jest/environment': 27.2.4 - '@jest/fake-timers': 27.2.4 - '@jest/globals': 27.2.4 - '@jest/source-map': 27.0.6 - '@jest/test-result': 27.2.4 - '@jest/transform': 27.2.4 - '@jest/types': 27.2.4 + '@jest/console': 27.4.2 + '@jest/environment': 27.4.4 + '@jest/globals': 27.4.4 + '@jest/source-map': 27.4.0 + '@jest/test-result': 27.4.2 + '@jest/transform': 27.4.5 + '@jest/types': 27.4.2 '@types/yargs': 16.0.4 chalk: 4.1.2 cjs-module-lexer: 1.2.2 @@ -5854,14 +5743,14 @@ packages: exit: 0.1.2 glob: 7.2.0 graceful-fs: 4.2.8 - jest-haste-map: 27.2.4 - jest-message-util: 27.2.4 - jest-mock: 27.2.4 - jest-regex-util: 27.0.6 - jest-resolve: 27.2.4 - jest-snapshot: 27.2.4 - jest-util: 27.2.4 - jest-validate: 27.2.4 + jest-haste-map: 27.4.5 + jest-message-util: 27.4.2 + jest-mock: 27.4.2 + jest-regex-util: 27.4.0 + jest-resolve: 27.4.5 + jest-snapshot: 27.4.5 + jest-util: 27.4.2 + jest-validate: 27.4.2 slash: 3.0.0 strip-bom: 4.0.0 yargs: 16.2.0 @@ -5869,106 +5758,94 @@ packages: - supports-color dev: true - /jest-serializer/27.0.6: - resolution: {integrity: sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==} + /jest-serializer/27.4.0: + resolution: {integrity: sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.17 graceful-fs: 4.2.8 dev: true - /jest-snapshot/27.2.4: - resolution: {integrity: sha512-5DFxK31rYS8X8C6WXsFx8XxrxW3PGa6+9IrUcZdTLg1aEyXDGIeiBh4jbwvh655bg/9vTETbEj/njfZicHTZZw==} + /jest-snapshot/27.4.5: + resolution: {integrity: sha512-eCi/iM1YJFrJWiT9de4+RpWWWBqsHiYxFG9V9o/n0WXs6GpW4lUt4FAHAgFPTLPqCUVzrMQmSmTZSgQzwqR7IQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.15.5 - '@babel/generator': 7.15.4 - '@babel/parser': 7.15.7 - '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.15.5 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 - '@jest/transform': 27.2.4 - '@jest/types': 27.2.4 + '@babel/core': 7.16.5 + '@babel/generator': 7.16.5 + '@babel/parser': 7.16.6 + '@babel/plugin-syntax-typescript': 7.16.5_@babel+core@7.16.5 + '@babel/traverse': 7.16.5 + '@babel/types': 7.16.0 + '@jest/transform': 27.4.5 + '@jest/types': 27.4.2 '@types/babel__traverse': 7.14.2 - '@types/prettier': 2.3.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.5 + '@types/prettier': 2.4.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.16.5 chalk: 4.1.2 - expect: 27.2.4 + expect: 27.4.2 graceful-fs: 4.2.8 - jest-diff: 27.2.4 - jest-get-type: 27.0.6 - jest-haste-map: 27.2.4 - jest-matcher-utils: 27.2.4 - jest-message-util: 27.2.4 - jest-resolve: 27.2.4 - jest-util: 27.2.4 + jest-diff: 27.4.2 + jest-get-type: 27.4.0 + jest-haste-map: 27.4.5 + jest-matcher-utils: 27.4.2 + jest-message-util: 27.4.2 + jest-resolve: 27.4.5 + jest-util: 27.4.2 natural-compare: 1.4.0 - pretty-format: 27.2.4 + pretty-format: 27.4.2 semver: 7.3.5 transitivePeerDependencies: - supports-color dev: true - /jest-util/27.2.0: - resolution: {integrity: sha512-T5ZJCNeFpqcLBpx+Hl9r9KoxBCUqeWlJ1Htli+vryigZVJ1vuLB9j35grEBASp4R13KFkV7jM52bBGnArpJN6A==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.1.1 - '@types/node': 15.14.9 - chalk: 4.1.2 - graceful-fs: 4.2.8 - is-ci: 3.0.0 - picomatch: 2.3.0 - dev: true - - /jest-util/27.2.4: - resolution: {integrity: sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==} + /jest-util/27.4.2: + resolution: {integrity: sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.2.4 - '@types/node': 15.14.9 + '@jest/types': 27.4.2 + '@types/node': 16.11.17 chalk: 4.1.2 + ci-info: 3.3.0 graceful-fs: 4.2.8 - is-ci: 3.0.0 picomatch: 2.3.0 dev: true - /jest-validate/27.2.4: - resolution: {integrity: sha512-VMtbxbkd7LHnIH7PChdDtrluCFRJ4b1YV2YJzNwwsASMWftq/HgqiqjvptBOWyWOtevgO3f14wPxkPcLlVBRog==} + /jest-validate/27.4.2: + resolution: {integrity: sha512-hWYsSUej+Fs8ZhOm5vhWzwSLmVaPAxRy+Mr+z5MzeaHm9AxUpXdoVMEW4R86y5gOobVfBsMFLk4Rb+QkiEpx1A==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.2.4 - camelcase: 6.2.0 + '@jest/types': 27.4.2 + camelcase: 6.2.1 chalk: 4.1.2 - jest-get-type: 27.0.6 + jest-get-type: 27.4.0 leven: 3.1.0 - pretty-format: 27.2.4 + pretty-format: 27.4.2 dev: true - /jest-watcher/27.2.4: - resolution: {integrity: sha512-LXC/0+dKxhK7cfF7reflRYlzDIaQE+fL4ynhKhzg8IMILNMuI4xcjXXfUJady7OR4/TZeMg7X8eHx8uan9vqaQ==} + /jest-watcher/27.4.2: + resolution: {integrity: sha512-NJvMVyyBeXfDezhWzUOCOYZrUmkSCiatpjpm+nFUid74OZEHk6aMLrZAukIiFDwdbqp6mTM6Ui1w4oc+8EobQg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/test-result': 27.2.4 - '@jest/types': 27.2.4 - '@types/node': 15.14.9 + '@jest/test-result': 27.4.2 + '@jest/types': 27.4.2 + '@types/node': 16.11.17 ansi-escapes: 4.3.2 chalk: 4.1.2 - jest-util: 27.2.4 + jest-util: 27.4.2 string-length: 4.0.2 dev: true - /jest-worker/27.2.4: - resolution: {integrity: sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==} + /jest-worker/27.4.5: + resolution: {integrity: sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 15.14.9 + '@types/node': 16.11.17 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/27.2.4_ts-node@10.2.1: - resolution: {integrity: sha512-h4uqb1EQLfPulWyUFFWv9e9Nn8sCqsJ/j3wk/KCY0p4s4s0ICCfP3iMf6hRf5hEhsDyvyrCgKiZXma63gMz16A==} + /jest/27.4.5_ts-node@10.4.0: + resolution: {integrity: sha512-uT5MiVN3Jppt314kidCk47MYIRilJjA/l2mxwiuzzxGUeJIvA8/pDaJOAX5KWvjAo7SCydcW0/4WEtgbLMiJkg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true peerDependencies: @@ -5977,9 +5854,9 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.2.4_ts-node@10.2.1 - import-local: 3.0.2 - jest-cli: 27.2.4_ts-node@10.2.1 + '@jest/core': 27.4.5_ts-node@10.4.0 + import-local: 3.0.3 + jest-cli: 27.4.5_ts-node@10.4.0 transitivePeerDependencies: - bufferutil - canvas @@ -6028,7 +5905,7 @@ packages: optional: true dependencies: abab: 2.0.5 - acorn: 8.5.0 + acorn: 8.7.0 acorn-globals: 6.0.0 cssom: 0.4.4 cssstyle: 2.3.0 @@ -6052,7 +5929,7 @@ packages: whatwg-encoding: 1.0.5 whatwg-mimetype: 2.3.0 whatwg-url: 8.7.0 - ws: 7.5.5 + ws: 7.5.6 xml-name-validator: 3.0.0 transitivePeerDependencies: - bufferutil @@ -6084,13 +5961,6 @@ packages: resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} dev: true - /json5/1.0.1: - resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} - hasBin: true - dependencies: - minimist: 1.2.5 - dev: true - /json5/2.2.0: resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} engines: {node: '>=6'} @@ -6137,48 +6007,31 @@ packages: engines: {node: '>=6'} dev: true - /kolorist/1.5.0: - resolution: {integrity: sha512-pPobydIHK884YBtkS/tWSZXpSAEpcMbilyun3KL37ot935qL2HNKm/tI45i/Rd+MxdIWEhm7/LmUQzWZYK+Qhg==} + /kolorist/1.5.1: + resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==} dev: false - /launch-editor-middleware/2.2.1: - resolution: {integrity: sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==} - dependencies: - launch-editor: 2.2.1 - dev: true - - /launch-editor/2.2.1: - resolution: {integrity: sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==} + /launch-editor-middleware/2.3.0: + resolution: {integrity: sha512-GJR64trLdFFwCoL9DMn/d1SZX0OzTDPixu4mcfWTShQ4tIqCHCGvlg9fOEYQXyBlrSMQwylsJfUWncheShfV2w==} dependencies: - chalk: 2.4.2 - shell-quote: 1.7.2 + launch-editor: 2.3.0 dev: true - /less/3.13.1: - resolution: {integrity: sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==} - engines: {node: '>=6'} - hasBin: true + /launch-editor/2.3.0: + resolution: {integrity: sha512-3QrsCXejlWYHjBPFXTyGNhPj4rrQdB+5+r5r3wArpLH201aR+nWUgw/zKKkTmilCfY/sv6u8qo98pNvtg8LUTA==} 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 + picocolors: 1.0.0 + shell-quote: 1.7.3 dev: true - /less/4.1.1: - resolution: {integrity: sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==} + /less/4.1.2: + resolution: {integrity: sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==} engines: {node: '>=6'} hasBin: true dependencies: copy-anything: 2.0.3 parse-node-version: 1.0.1 - tslib: 1.14.1 + tslib: 2.3.1 optionalDependencies: errno: 0.1.8 graceful-fs: 4.2.8 @@ -6210,45 +6063,50 @@ 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: - resolution: {integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=} + /lines-and-columns/1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /lint-staged/11.2.0: - resolution: {integrity: sha512-0KIcRuO4HQS2Su7qWtjrfTXgSklvyIb9Fk9qVWRZkGHa5S81Vj6WBbs+ogQBvHUwLJYq1eQ4R+H82GSak4OM7w==} + /lint-staged/12.1.4: + resolution: {integrity: sha512-RgDz9nsFsE0/5eL9Vat0AvCuk0+j5mEuzBIVfrRH5FRtt5wibYe8zTjZs2nuqLFrLAGQGYnj8+HJxolcj08i/A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true dependencies: - cli-truncate: 2.1.0 - colorette: 1.4.0 - commander: 8.2.0 - cosmiconfig: 7.0.1 - debug: 4.3.2_supports-color@8.1.1 - enquirer: 2.3.6 + cli-truncate: 3.1.0 + colorette: 2.0.16 + commander: 8.3.0 + debug: 4.3.3_supports-color@9.2.1 execa: 5.1.1 - listr2: 3.12.2_enquirer@2.3.6 + lilconfig: 2.0.4 + listr2: 3.13.5 micromatch: 4.0.4 normalize-path: 3.0.0 - please-upgrade-node: 3.2.0 + object-inspect: 1.12.0 string-argv: 0.3.1 - stringify-object: 3.3.0 - supports-color: 8.1.1 + supports-color: 9.2.1 + yaml: 1.10.2 + transitivePeerDependencies: + - enquirer dev: true - /listr2/3.12.2_enquirer@2.3.6: - resolution: {integrity: sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A==} + /listr2/3.13.5: + resolution: {integrity: sha512-3n8heFQDSk+NcwBn3CgxEibZGaRzx+pC64n3YjpMD1qguV4nWus3Al+Oo3KooqFKTQEJ1v7MmnbnyyNspgx3NA==} engines: {node: '>=10.0.0'} peerDependencies: enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true dependencies: cli-truncate: 2.1.0 - colorette: 1.4.0 - enquirer: 2.3.6 + colorette: 2.0.16 log-update: 4.0.0 p-map: 4.0.0 - rxjs: 6.6.7 + rfdc: 1.3.0 + rxjs: 7.5.1 through: 2.3.8 wrap-ansi: 7.0.0 dev: true @@ -6263,13 +6121,9 @@ packages: strip-bom: 3.0.0 dev: true - /loader-utils/1.4.0: - resolution: {integrity: sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==} - engines: {node: '>=4.0.0'} - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 1.0.1 + /loader-utils/3.2.0: + resolution: {integrity: sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==} + engines: {node: '>= 12.13.0'} dev: true /locate-path/2.0.0: @@ -6319,6 +6173,10 @@ packages: resolution: {integrity: sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=} dev: true + /lodash.memoize/4.1.2: + resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} + dev: true + /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -6359,7 +6217,6 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: true /magic-string/0.25.7: resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} @@ -6381,14 +6238,13 @@ packages: engines: {node: '>=8'} dependencies: semver: 6.3.0 - dev: true /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /makeerror/1.0.11: - resolution: {integrity: sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=} + /makeerror/1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true @@ -6459,13 +6315,8 @@ packages: engines: {node: '>= 0.6'} dev: true - /mime-db/1.49.0: - resolution: {integrity: sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==} - engines: {node: '>= 0.6'} - dev: true - - /mime-db/1.50.0: - resolution: {integrity: sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==} + /mime-db/1.51.0: + resolution: {integrity: sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==} engines: {node: '>= 0.6'} dev: true @@ -6476,11 +6327,11 @@ packages: mime-db: 1.46.0 dev: true - /mime-types/2.1.32: - resolution: {integrity: sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==} + /mime-types/2.1.34: + resolution: {integrity: sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==} engines: {node: '>= 0.6'} dependencies: - mime-db: 1.49.0 + mime-db: 1.51.0 dev: true /mime/1.6.0: @@ -6489,8 +6340,8 @@ 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 @@ -6505,14 +6356,14 @@ packages: engines: {node: '>=4'} dev: true - /mini-create-react-context/0.4.1_prop-types@15.7.2+react@17.0.2: + /mini-create-react-context/0.4.1_prop-types@15.8.0+react@17.0.2: resolution: {integrity: sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==} peerDependencies: prop-types: ^15.0.0 react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.15.4 - prop-types: 15.7.2 + '@babel/runtime': 7.16.5 + prop-types: 15.8.0 react: 17.0.2 tiny-warning: 1.0.3 dev: false @@ -6524,29 +6375,29 @@ packages: dependencies: '@iarna/toml': 2.2.5 '@mrbbot/node-fetch': 4.6.0 - '@peculiar/webcrypto': 1.1.7 + '@peculiar/webcrypto': 1.2.3 chokidar: 3.5.2 - cjstoesm: 1.1.4_typescript@4.4.3 + cjstoesm: 1.1.4_typescript@4.5.4 dotenv: 8.6.0 env-paths: 2.2.1 event-target-shim: 6.0.2 formdata-node: 2.5.0 html-rewriter-wasm: 0.3.2 http-cache-semantics: 4.1.0 - ioredis: 4.27.9 + ioredis: 4.28.2 kleur: 4.1.4 node-cron: 2.0.3 picomatch: 2.3.0 sanitize-filename: 1.6.3 selfsigned: 1.10.11 semiver: 1.1.0 - source-map-support: 0.5.20 + source-map-support: 0.5.21 tslib: 2.3.1 - typescript: 4.4.3 + typescript: 4.5.4 typeson: 6.1.0 typeson-registry: 1.0.0-alpha.39 - web-streams-polyfill: 3.1.1 - ws: 7.5.5 + web-streams-polyfill: 3.2.0 + ws: 7.5.6 yargs: 16.2.0 youch: 2.2.2 transitivePeerDependencies: @@ -6572,11 +6423,25 @@ packages: /minimist/1.2.5: resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} + /minipass/3.1.6: + resolution: {integrity: sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: false + + /minizlib/2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.1.6 + yallist: 4.0.0 + dev: false + /mkdirp/1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - dev: true /modern-normalize/1.1.0: resolution: {integrity: sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==} @@ -6592,12 +6457,13 @@ packages: resolution: {integrity: sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==} dev: true - /ms/2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + /mrmime/1.0.0: + resolution: {integrity: sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==} + engines: {node: '>=10'} dev: true - /ms/2.1.1: - resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} + /ms/2.0.0: + resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} dev: true /ms/2.1.2: @@ -6606,31 +6472,17 @@ packages: /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - optional: true /mustache/4.2.0: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true dev: true - /nanocolors/0.1.6: - resolution: {integrity: sha512-2pvTw6vYRaBLGir2xR7MxaJtyWkrn+C53EpW8yPotG+pdAwBvt0Xwk4VJ6VHLY0aLthVZPvDfm9TdZvrvAm5UQ==} - engines: {node: '>=8.0.0'} - - /nanocolors/0.2.9: - resolution: {integrity: sha512-aymgS4Xe0LMqHOHl7jSUEkFh/6O/pcF0j61dBtreQZ1nmbyYdYjSYSJzz0iPLbKPkMtSmdRgyBGywNZGjKOEfw==} - - /nanoid/3.1.25: - resolution: {integrity: sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==} + /nanoid/3.1.30: + resolution: {integrity: sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==} 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 @@ -6664,6 +6516,10 @@ packages: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true + /node-addon-api/3.2.1: + resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} + dev: false + /node-cron/2.0.3: resolution: {integrity: sha512-eJI+QitXlwcgiZwNNSRbqsjeZMp5shyajMR81RZCqeW0ZDEj4zU9tpd4nTh/1JsBiKbF8d08FCewiipDmVIYjg==} engines: {node: '>=6.0.0'} @@ -6679,12 +6535,11 @@ 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 - dev: true /node-forge/0.10.0: resolution: {integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==} @@ -6695,13 +6550,16 @@ packages: resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} dev: true - /node-modules-regexp/1.0.0: - resolution: {integrity: sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=} - engines: {node: '>=0.10.0'} - dev: true + /node-releases/2.0.1: + resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} - /node-releases/1.1.76: - resolution: {integrity: sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==} + /nopt/5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: false /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -6717,7 +6575,7 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.0.2 - is-core-module: 2.6.0 + is-core-module: 2.8.0 semver: 7.3.5 validate-npm-package-license: 3.0.4 dev: true @@ -6752,8 +6610,8 @@ packages: minimatch: 3.0.4 pidtree: 0.3.1 read-pkg: 3.0.0 - shell-quote: 1.7.2 - string.prototype.padend: 3.1.2 + shell-quote: 1.7.3 + string.prototype.padend: 3.1.3 dev: true /npm-run-path/2.0.2: @@ -6770,6 +6628,15 @@ packages: path-key: 3.1.1 dev: true + /npmlog/5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + dev: false + /nwsapi/2.2.0: resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} dev: true @@ -6783,8 +6650,8 @@ packages: engines: {node: '>= 6'} dev: false - /object-inspect/1.11.0: - resolution: {integrity: sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==} + /object-inspect/1.12.0: + resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} dev: true /object-keys/1.1.1: @@ -6831,8 +6698,8 @@ packages: mimic-fn: 2.1.0 dev: true - /open/8.2.1: - resolution: {integrity: sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==} + /open/8.4.0: + resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 @@ -6924,8 +6791,8 @@ packages: engines: {node: '>=6'} dev: true - /package-name-regex/2.0.1: - resolution: {integrity: sha512-U+K6/cuwHwr/8pUQrpNpKOIFSdS/EluTRSmtn92mug1UiPcff4t9AHs36e2xXJtpEtRfbg+JOj3Y/GLX+mzT6w==} + /package-name-regex/2.0.4: + resolution: {integrity: sha512-p+ixFAmbQ9DE9TG3ptbjLc7/gwgdKEMCwdGpZwxzgD02D1q/SRRT/j32MyjGjJQ36CSTeVsvKt9Zp3PUHYWBnw==} engines: {node: '>=12'} dev: true @@ -6947,10 +6814,10 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.14.5 + '@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 + lines-and-columns: 1.2.4 /parse-node-version/1.0.1: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} @@ -7025,10 +6892,13 @@ packages: is-reference: 1.2.1 dev: true - /phoenix/1.5.13: - resolution: {integrity: sha512-aJKbnuCTtgH8qT7AzHhPwhOP3bqhja3ogFMQmUdY7jNzl/91nsUtpnz0M3HDW7j+IvfjiM2/TIkOaGwzW9BKhg==} + /phoenix/1.6.5: + resolution: {integrity: sha512-Krhx9IwB1Lzj+MqK5bz8CI2ULxjdO63CAjdAZni2lSa1LW3zNflMnsVeQLOu6jz8TDl9wtUKfx3vNSZDAB8jQw==} dev: false + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /picomatch/2.3.0: resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} engines: {node: '>=8.6'} @@ -7055,11 +6925,9 @@ packages: dev: true optional: true - /pirates/4.0.1: - resolution: {integrity: sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==} + /pirates/4.0.4: + resolution: {integrity: sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==} engines: {node: '>= 6'} - dependencies: - node-modules-regexp: 1.0.0 dev: true /pkg-dir/4.2.0: @@ -7069,25 +6937,39 @@ packages: find-up: 4.1.0 dev: true - /playwright-chromium/1.15.1: - resolution: {integrity: sha512-69zZGAb6XTNyAGfbnCUiGItCMQo/5c9XW/DkdRyC89WoLGix/dH9TwrqiDEzRTwqnSYNJNT43S13w/mDE6+1Xg==} + /playwright-chromium/1.17.1: + resolution: {integrity: sha512-EnCtsP/QTWWoQV/cFYpt2wgKwcOdoa2iHBlBaldHB8gobtynMKwk96rzldaRS4YimFibIzREFkWCNMrrb3LRMQ==} engines: {node: '>=12'} hasBin: true requiresBuild: true dependencies: - commander: 6.2.1 - debug: 4.3.2 + playwright-core: 1.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /playwright-core/1.17.1: + resolution: {integrity: sha512-C3c8RpPiC3qr15fRDN6dx6WnUkPLFmST37gms2aoHPDRvp7EaGDPMMZPpqIm/QWB5J40xDrQCD4YYHz2nBTojQ==} + engines: {node: '>=12'} + hasBin: true + dependencies: + commander: 8.3.0 + debug: 4.3.3 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 proxy-from-env: 1.1.0 rimraf: 3.0.2 + socks-proxy-agent: 6.1.1 stack-utils: 2.0.5 - ws: 7.5.5 + ws: 7.5.6 + yauzl: 2.10.0 yazl: 2.5.1 transitivePeerDependencies: - bufferutil @@ -7095,25 +6977,19 @@ packages: - utf-8-validate dev: true - /please-upgrade-node/3.2.0: - resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} - dependencies: - semver-compare: 1.0.0 - dev: true - /pngjs/5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} dev: true - /postcss-import/14.0.2_postcss@8.3.8: + /postcss-import/14.0.2_postcss@8.4.5: resolution: {integrity: sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.3.8 - postcss-value-parser: 4.1.0 + postcss: 8.4.5 + postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.20.0 dev: true @@ -7123,10 +6999,24 @@ packages: engines: {node: '>=10.0'} dependencies: camelcase-css: 2.0.1 - postcss: 8.3.7 + postcss: 8.4.5 dev: false - /postcss-load-config/3.1.0_ts-node@10.2.1: + /postcss-load-config/3.1.0: + resolution: {integrity: sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==} + engines: {node: '>= 10'} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + import-cwd: 3.0.0 + lilconfig: 2.0.4 + yaml: 1.10.2 + dev: true + + /postcss-load-config/3.1.0_ts-node@10.4.0: resolution: {integrity: sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==} engines: {node: '>= 10'} peerDependencies: @@ -7136,64 +7026,65 @@ packages: optional: true dependencies: import-cwd: 3.0.0 - lilconfig: 2.0.3 - ts-node: 10.2.1_3b624d72c50530188ff09826d1b48ebf + lilconfig: 2.0.4 + ts-node: 10.4.0_00264fd83560919cd06c986889baae0a yaml: 1.10.2 + dev: false - /postcss-modules-extract-imports/3.0.0_postcss@8.3.8: + /postcss-modules-extract-imports/3.0.0_postcss@8.4.5: resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.3.8 + postcss: 8.4.5 dev: true - /postcss-modules-local-by-default/4.0.0_postcss@8.3.8: + /postcss-modules-local-by-default/4.0.0_postcss@8.4.5: resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0_postcss@8.3.8 - postcss: 8.3.8 - postcss-selector-parser: 6.0.6 - postcss-value-parser: 4.1.0 + icss-utils: 5.1.0_postcss@8.4.5 + postcss: 8.4.5 + postcss-selector-parser: 6.0.8 + postcss-value-parser: 4.2.0 dev: true - /postcss-modules-scope/3.0.0_postcss@8.3.8: + /postcss-modules-scope/3.0.0_postcss@8.4.5: resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.3.8 - postcss-selector-parser: 6.0.6 + postcss: 8.4.5 + postcss-selector-parser: 6.0.8 dev: true - /postcss-modules-values/4.0.0_postcss@8.3.8: + /postcss-modules-values/4.0.0_postcss@8.4.5: resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0_postcss@8.3.8 - postcss: 8.3.8 + icss-utils: 5.1.0_postcss@8.4.5 + postcss: 8.4.5 dev: true - /postcss-modules/4.2.2_postcss@8.3.8: - resolution: {integrity: sha512-/H08MGEmaalv/OU8j6bUKi/kZr2kqGF6huAW8m9UAgOLWtpFdhA14+gPBoymtqyv+D4MLsmqaF2zvIegdCxJXg==} + /postcss-modules/4.3.0_postcss@8.4.5: + resolution: {integrity: sha512-zoUttLDSsbWDinJM9jH37o7hulLRyEgH6fZm2PchxN7AZ8rkdWiALyNhnQ7+jg7cX9f10m6y5VhHsrjO0Mf/DA==} peerDependencies: postcss: ^8.0.0 dependencies: - generic-names: 2.0.1 + generic-names: 4.0.0 icss-replace-symbols: 1.1.0 lodash.camelcase: 4.3.0 - postcss: 8.3.8 - postcss-modules-extract-imports: 3.0.0_postcss@8.3.8 - postcss-modules-local-by-default: 4.0.0_postcss@8.3.8 - postcss-modules-scope: 3.0.0_postcss@8.3.8 - postcss-modules-values: 4.0.0_postcss@8.3.8 + postcss: 8.4.5 + postcss-modules-extract-imports: 3.0.0_postcss@8.4.5 + postcss-modules-local-by-default: 4.0.0_postcss@8.4.5 + postcss-modules-scope: 3.0.0_postcss@8.4.5 + postcss-modules-values: 4.0.0_postcss@8.4.5 string-hash: 1.1.3 dev: true @@ -7203,10 +7094,10 @@ packages: peerDependencies: postcss: ^8.2.14 dependencies: - postcss-selector-parser: 6.0.6 + postcss-selector-parser: 6.0.8 - /postcss-selector-parser/6.0.6: - resolution: {integrity: sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==} + /postcss-selector-parser/6.0.8: + resolution: {integrity: sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -7216,27 +7107,19 @@ packages: resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} dev: false - /postcss-value-parser/4.1.0: - resolution: {integrity: sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==} + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /postcss/8.3.7: - resolution: {integrity: sha512-9SaY7nnyQ63/WittqZYAvkkYPyKxchMKH71UDzeTmWuLSvxTRpeEeABZAzlCi55cuGcoFyoV/amX2BdsafQidQ==} + /postcss/8.4.5: + resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanocolors: 0.1.6 - nanoid: 3.1.25 - source-map-js: 0.6.2 + nanoid: 3.1.30 + picocolors: 1.0.0 + source-map-js: 1.0.1 - /postcss/8.3.8: - resolution: {integrity: sha512-GT5bTjjZnwDifajzczOC+r3FI3Cu+PgPvrsjhQdRqa2kTJ4968/X9CUce9xttIB0xOs5c6xf0TCWZo/y9lF6bA==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanocolors: 0.2.9 - nanoid: 3.1.25 - source-map-js: 0.6.2 - - /preact/10.5.14: - resolution: {integrity: sha512-KojoltCrshZ099ksUZ2OQKfbH66uquFoxHSbnwKbTJHeQNvx42EmC7wQVWNuDt6vC5s3nudRHFtKbpY4ijKlaQ==} + /preact/10.6.4: + resolution: {integrity: sha512-WyosM7pxGcndU8hY0OQlLd54tOU+qmG45QXj2dAYrL11HoyU/EzOSTlpJsirbBr1QW7lICxSsVJJmcmUglovHQ==} dev: true /prelude-ls/1.1.2: @@ -7249,27 +7132,17 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier/2.4.1: - resolution: {integrity: sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==} + /prettier/2.5.1: + resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==} engines: {node: '>=10.13.0'} hasBin: true dev: true - /pretty-format/27.2.0: - resolution: {integrity: sha512-KyJdmgBkMscLqo8A7K77omgLx5PWPiXJswtTtFV7XgVZv2+qPk6UivpXXO+5k6ZEbWIbLoKdx1pZ6ldINzbwTA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.1.1 - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - dev: true - - /pretty-format/27.2.4: - resolution: {integrity: sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==} + /pretty-format/27.4.2: + resolution: {integrity: sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.2.4 + '@jest/types': 27.4.2 ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 @@ -7299,24 +7172,15 @@ packages: asap: 2.0.6 dev: true - /prompts/2.4.1: - resolution: {integrity: sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: true - /prompts/2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: false - /prop-types/15.7.2: - resolution: {integrity: sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==} + /prop-types/15.8.0: + resolution: {integrity: sha512-fDGekdaHh65eI3lMi5OnErU6a8Ighg2KjcjQxO7m8VHyWjcPyj5kiOgV1LQDOOOgVy3+5FgjXvdSSX7B8/5/4g==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 @@ -7328,7 +7192,7 @@ packages: dependencies: graceful-fs: 4.2.8 retry: 0.12.0 - signal-exit: 3.0.4 + signal-exit: 3.0.6 dev: true /proxy-addr/2.0.7: @@ -7459,18 +7323,18 @@ packages: engines: {node: '>=6'} dev: true - /purgecss/4.0.3: - resolution: {integrity: sha512-PYOIn5ibRIP34PBU9zohUcCI09c7drPJJtTDAc0Q6QlRz2/CHQ8ywGLdE7ZhxU2VTqB7p5wkvj5Qcm05Rz3Jmw==} + /purgecss/4.1.3: + resolution: {integrity: sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==} hasBin: true dependencies: - commander: 6.2.1 + commander: 8.3.0 glob: 7.2.0 - postcss: 8.3.7 - postcss-selector-parser: 6.0.6 + postcss: 8.4.5 + postcss-selector-parser: 6.0.8 dev: false - /pvtsutils/1.2.0: - resolution: {integrity: sha512-IDefMJEQl7HX0FP2hIKJFnAR11klP1js2ixCrOaMhe3kXFK6RQ2ABUCuwWaaD4ib0hSbh2fGTICvWJJhDfNecA==} + /pvtsutils/1.2.1: + resolution: {integrity: sha512-Q867jEr30lBR2YSFFLZ0/XsEvpweqH6Kj096wmlRAFXrdRGPCNq2iz9B5Tk085EZ+OBZyYAVA5UhPkjSHGrUzQ==} dependencies: tslib: 2.3.1 dev: true @@ -7485,8 +7349,8 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true - /qs/6.7.0: - resolution: {integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==} + /qs/6.9.6: + resolution: {integrity: sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==} engines: {node: '>=0.6'} dev: true @@ -7508,12 +7372,12 @@ packages: engines: {node: '>= 0.6'} dev: true - /raw-body/2.4.0: - resolution: {integrity: sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==} + /raw-body/2.4.2: + resolution: {integrity: sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==} engines: {node: '>= 0.8'} dependencies: - bytes: 3.1.0 - http-errors: 1.7.2 + bytes: 3.1.1 + http-errors: 1.8.1 iconv-lite: 0.4.24 unpipe: 1.0.0 dev: true @@ -7537,8 +7401,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 @@ -7547,13 +7411,13 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.5 history: 4.10.1 loose-envify: 1.4.0 - prop-types: 15.7.2 + prop-types: 15.8.0 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 @@ -7562,16 +7426,16 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.5 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 - mini-create-react-context: 0.4.1_prop-types@15.7.2+react@17.0.2 + mini-create-react-context: 0.4.1_prop-types@15.8.0+react@17.0.2 path-to-regexp: 1.8.0 - prop-types: 15.7.2 + prop-types: 15.8.0 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 @@ -7581,19 +7445,11 @@ packages: react: ^15.3.0 || ^16.0.0 || ^17.0.0 react-dom: ^15.3.0 || ^16.0.0 || ^17.0.0 dependencies: - prop-types: 15.7.2 + prop-types: 15.8.0 react: 17.0.2 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'} @@ -7663,7 +7519,6 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: true /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -7742,13 +7597,8 @@ 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.0.2: - resolution: {integrity: sha512-1+PDdTR3xrGWB/NzXLkzS1+PQlJ+BOR2baBGJSVat4HasiY1mnkyAQws3FUTmBDB79oK54QFaDM8Ig9nUtJwvQ==} + /resolve.exports/1.1.0: + resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} engines: {node: '>=10'} dev: true @@ -7761,14 +7611,14 @@ packages: /resolve/1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: - is-core-module: 2.6.0 + is-core-module: 2.8.0 path-parse: 1.0.7 dev: true /resolve/1.20.0: resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} dependencies: - is-core-module: 2.6.0 + is-core-module: 2.8.0 path-parse: 1.0.7 /restore-cursor/3.1.0: @@ -7776,7 +7626,7 @@ packages: engines: {node: '>=8'} dependencies: onetime: 5.1.2 - signal-exit: 3.0.4 + signal-exit: 3.0.6 dev: true /retry/0.12.0: @@ -7788,6 +7638,10 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + /rfdc/1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true + /rgb-regex/1.0.1: resolution: {integrity: sha1-wODWiC3w4jviVKR16O3UGRX+rrE=} dev: false @@ -7802,49 +7656,40 @@ packages: dependencies: glob: 7.2.0 - /rollup-plugin-license/2.5.0_rollup@2.57.0: - resolution: {integrity: sha512-HUjGV+i1tRxi/zL4WpeNCLJZfEJBbCcDmwGJCjKBvcLDIK6VNW1JmYKjSJJOqJjNqRIvKt6/BLSQB9RwNDLtQw==} + /rollup-plugin-license/2.6.0_rollup@2.62.0: + resolution: {integrity: sha512-ilM+sb9xCvP+23tmzsCqJSm33877nIFeO6lMDGbckxc1jq2nW6WtU1nFD4cfOrKYl0cw1dkz4rC3VMAe8dA8cQ==} engines: {node: '>=10.0.0'} peerDependencies: rollup: ^1.0.0 || ^2.0.0 dependencies: commenting: 1.1.0 - glob: 7.1.7 + glob: 7.2.0 lodash: 4.17.21 magic-string: 0.25.7 mkdirp: 1.0.4 moment: 2.29.1 - package-name-regex: 2.0.1 - rollup: 2.57.0 + package-name-regex: 2.0.4 + rollup: 2.62.0 spdx-expression-validate: 2.0.0 spdx-satisfies: 5.0.1 dev: true - /rollup/2.57.0: - resolution: {integrity: sha512-bKQIh1rWKofRee6mv8SrF2HdP6pea5QkwBZSMImJysFj39gQuiV8MEPBjXOCpzk3wSYp63M2v2wkWBmFC8O/rg==} - engines: {node: '>=10.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - - /rollup/2.58.3: - resolution: {integrity: sha512-ei27MSw1KhRur4p87Q0/Va2NAYqMXOX++FNEumMBcdreIRLURKy+cE2wcDJKBn0nfmhP2ZGrJkP1XPO+G8FJQw==} + /rollup/2.62.0: + resolution: {integrity: sha512-cJEQq2gwB0GWMD3rYImefQTSjrPYaC6s4J9pYqnstVLJ1CHa/aZNVkD4Epuvg4iLeMA4KRiq7UM7awKK6j7jcw==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 - dev: true /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - /rxjs/6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} + /rxjs/7.5.1: + resolution: {integrity: sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ==} dependencies: - tslib: 1.14.1 + tslib: 2.3.1 dev: true /safe-buffer/5.1.2: @@ -7852,7 +7697,6 @@ packages: /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -7864,12 +7708,14 @@ packages: truncate-utf8-bytes: 1.0.2 dev: true - /sass/1.42.1: - resolution: {integrity: sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==} + /sass/1.45.1: + resolution: {integrity: sha512-pwPRiq29UR0o4X3fiQyCtrESldXvUQAAE0QmcJTpsI4kuHHcLzZ54M1oNBVIXybQv8QF2zfkpFcTxp8ta97dUA==} engines: {node: '>=8.9.0'} hasBin: true dependencies: chokidar: 3.5.2 + immutable: 4.0.0 + source-map-js: 1.0.1 dev: true /sax/1.2.4: @@ -7905,10 +7751,6 @@ packages: engines: {node: '>=6'} dev: true - /semver-compare/1.0.0: - resolution: {integrity: sha1-De4hahyUGrN+nvsXiPavxf9VN/w=} - dev: true - /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true @@ -7924,10 +7766,9 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true - /send/0.17.1: - resolution: {integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==} + /send/0.17.2: + resolution: {integrity: sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==} engines: {node: '>= 0.8.0'} dependencies: debug: 2.6.9 @@ -7937,26 +7778,30 @@ packages: escape-html: 1.0.3 etag: 1.8.1 fresh: 0.5.2 - http-errors: 1.7.3 + http-errors: 1.8.1 mime: 1.6.0 - ms: 2.1.1 + ms: 2.1.3 on-finished: 2.3.0 range-parser: 1.2.1 statuses: 1.5.0 dev: true - /serve-static/1.14.1: - resolution: {integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==} + /serve-static/1.14.2: + resolution: {integrity: sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==} engines: {node: '>= 0.8.0'} dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.17.1 + send: 0.17.2 dev: true - /setprototypeof/1.1.1: - resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} + /set-blocking/2.0.0: + resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} + dev: false + + /setprototypeof/1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: true /shebang-command/1.2.0: @@ -7983,8 +7828,8 @@ packages: engines: {node: '>=8'} dev: true - /shell-quote/1.7.2: - resolution: {integrity: sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==} + /shell-quote/1.7.3: + resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==} dev: true /side-channel/1.0.4: @@ -7992,12 +7837,11 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.1 - object-inspect: 1.11.0 + object-inspect: 1.12.0 dev: true - /signal-exit/3.0.4: - resolution: {integrity: sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==} - dev: true + /signal-exit/3.0.6: + resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==} /simple-swizzle/0.2.2: resolution: {integrity: sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=} @@ -8005,12 +7849,12 @@ packages: is-arrayish: 0.3.2 dev: false - /sirv/1.0.17: - resolution: {integrity: sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw==} + /sirv/1.0.19: + resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} engines: {node: '>= 10'} dependencies: - '@polka/url': 1.0.0-next.20 - mime: 2.5.2 + '@polka/url': 1.0.0-next.21 + mrmime: 1.0.0 totalist: 1.1.0 dev: true @@ -8022,6 +7866,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'} @@ -8040,31 +7889,56 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /source-map-js/0.6.2: - resolution: {integrity: sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==} + /slice-ansi/5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.1.0 + is-fullwidth-code-point: 4.0.0 + dev: true + + /smart-buffer/4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: true + + /socks-proxy-agent/6.1.1: + resolution: {integrity: sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==} + engines: {node: '>= 10'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.3 + socks: 2.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socks/2.6.1: + resolution: {integrity: sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 1.1.5 + smart-buffer: 4.2.0 + dev: true + + /source-map-js/1.0.1: + resolution: {integrity: sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==} 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: - resolution: {integrity: sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==} + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 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'} @@ -8093,7 +7967,7 @@ packages: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.10 + spdx-license-ids: 3.0.11 dev: true /spdx-exceptions/2.3.0: @@ -8104,7 +7978,7 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.10 + spdx-license-ids: 3.0.11 dev: true /spdx-expression-validate/2.0.0: @@ -8113,8 +7987,8 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /spdx-license-ids/3.0.10: - resolution: {integrity: sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==} + /spdx-license-ids/3.0.11: + resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} dev: true /spdx-ranges/2.1.1: @@ -8184,25 +8058,33 @@ packages: engines: {node: '>=10'} dependencies: char-regex: 1.0.2 - strip-ansi: 6.0.0 + strip-ansi: 6.0.1 dev: true - /string-width/4.2.2: - resolution: {integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==} + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.0 + strip-ansi: 6.0.1 + + /string-width/5.0.1: + resolution: {integrity: sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g==} + engines: {node: '>=12'} + dependencies: + emoji-regex: 9.2.2 + is-fullwidth-code-point: 4.0.0 + strip-ansi: 7.0.1 dev: true - /string.prototype.padend/3.1.2: - resolution: {integrity: sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==} + /string.prototype.padend/3.1.3: + resolution: {integrity: sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.6 + es-abstract: 1.19.1 dev: true /string.prototype.trimend/1.0.4: @@ -8229,22 +8111,18 @@ packages: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - dev: true - - /stringify-object/3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} - dependencies: - get-own-enumerable-property-symbols: 3.0.2 - is-obj: 1.0.1 - is-regexp: 1.0.0 - dev: true - /strip-ansi/6.0.0: - resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 + + /strip-ansi/7.0.1: + resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 dev: true /strip-bom/3.0.0: @@ -8284,14 +8162,14 @@ packages: engines: {node: '>=8'} dev: true - /stylis/4.0.10: - resolution: {integrity: sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==} + /stylis/4.0.13: + resolution: {integrity: sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==} - /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 @@ -8320,6 +8198,11 @@ packages: has-flag: 4.0.0 dev: true + /supports-color/9.2.1: + resolution: {integrity: sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==} + engines: {node: '>=12'} + dev: true + /supports-hyperlinks/2.2.0: resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} engines: {node: '>=8'} @@ -8340,8 +8223,8 @@ packages: resolution: {integrity: sha512-7YPIY44j+BoY+E6cGBSw0oCU8SNTTIHKZgftcBdwWkDzs/M86Fdlr21FrzAyph7Zo8r3CFGscyFe4rrBtixrBg==} dev: false - /tailwindcss/2.2.15_e444c4a095b9e9ba5c645754953637f2: - resolution: {integrity: sha512-WgV41xTMbnSoTNMNnJvShQZ+8GmY86DmXTrCgnsveNZJdlybfwCItV8kAqjYmU49YiFr+ofzmT1JlAKajBZboQ==} + /tailwindcss/2.2.19_6d1fa3babc9cc84b994ff99ef39d1aff: + resolution: {integrity: sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw==} engines: {node: '>=12.13.0'} hasBin: true peerDependencies: @@ -8349,21 +8232,21 @@ packages: postcss: ^8.0.9 dependencies: arg: 5.0.1 - autoprefixer: 10.3.5 - bytes: 3.1.0 + autoprefixer: 10.4.0 + bytes: 3.1.1 chalk: 4.1.2 chokidar: 3.5.2 - color: 4.0.1 + color: 4.1.0 cosmiconfig: 7.0.1 detective: 5.2.0 didyoumean: 1.2.2 dlv: 1.1.3 fast-glob: 3.2.7 fs-extra: 10.0.0 - glob-parent: 6.0.1 + glob-parent: 6.0.2 html-tags: 3.1.0 is-color-stop: 1.1.0 - is-glob: 4.0.1 + is-glob: 4.0.3 lodash: 4.17.21 lodash.topath: 4.5.2 modern-normalize: 1.1.0 @@ -8371,12 +8254,12 @@ packages: normalize-path: 3.0.0 object-hash: 2.2.0 postcss-js: 3.0.3 - postcss-load-config: 3.1.0_ts-node@10.2.1 + postcss-load-config: 3.1.0_ts-node@10.4.0 postcss-nested: 5.0.6 - postcss-selector-parser: 6.0.6 - postcss-value-parser: 4.1.0 + postcss-selector-parser: 6.0.8 + postcss-value-parser: 4.2.0 pretty-hrtime: 1.0.3 - purgecss: 4.0.3 + purgecss: 4.1.3 quick-lru: 5.1.1 reduce-css-calc: 2.1.8 resolve: 1.20.0 @@ -8385,8 +8268,8 @@ packages: - ts-node dev: false - /tailwindcss/2.2.15_ts-node@10.2.1: - resolution: {integrity: sha512-WgV41xTMbnSoTNMNnJvShQZ+8GmY86DmXTrCgnsveNZJdlybfwCItV8kAqjYmU49YiFr+ofzmT1JlAKajBZboQ==} + /tailwindcss/2.2.19_ts-node@10.4.0: + resolution: {integrity: sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw==} engines: {node: '>=12.13.0'} hasBin: true peerDependencies: @@ -8394,20 +8277,20 @@ packages: postcss: ^8.0.9 dependencies: arg: 5.0.1 - bytes: 3.1.0 + bytes: 3.1.1 chalk: 4.1.2 chokidar: 3.5.2 - color: 4.0.1 + color: 4.1.0 cosmiconfig: 7.0.1 detective: 5.2.0 didyoumean: 1.2.2 dlv: 1.1.3 fast-glob: 3.2.7 fs-extra: 10.0.0 - glob-parent: 6.0.1 + glob-parent: 6.0.2 html-tags: 3.1.0 is-color-stop: 1.1.0 - is-glob: 4.0.1 + is-glob: 4.0.3 lodash: 4.17.21 lodash.topath: 4.5.2 modern-normalize: 1.1.0 @@ -8415,12 +8298,12 @@ packages: normalize-path: 3.0.0 object-hash: 2.2.0 postcss-js: 3.0.3 - postcss-load-config: 3.1.0_ts-node@10.2.1 + postcss-load-config: 3.1.0_ts-node@10.4.0 postcss-nested: 5.0.6 - postcss-selector-parser: 6.0.6 - postcss-value-parser: 4.1.0 + postcss-selector-parser: 6.0.8 + postcss-value-parser: 4.2.0 pretty-hrtime: 1.0.3 - purgecss: 4.0.3 + purgecss: 4.1.3 quick-lru: 5.1.1 reduce-css-calc: 2.1.8 resolve: 1.20.0 @@ -8429,6 +8312,18 @@ packages: - ts-node dev: false + /tar/6.1.11: + resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} + engines: {node: '>= 10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 3.1.6 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: false + /temp-dir/2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -8450,14 +8345,20 @@ packages: supports-hyperlinks: 2.2.0 dev: true - /terser/5.9.0: - resolution: {integrity: sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==} + /terser/5.10.0_acorn@8.7.0: + resolution: {integrity: sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==} engines: {node: '>=10'} hasBin: true + peerDependencies: + acorn: ^8.5.0 + peerDependenciesMeta: + acorn: + optional: true dependencies: + acorn: 8.7.0 commander: 2.20.3 source-map: 0.7.3 - source-map-support: 0.5.20 + source-map-support: 0.5.21 dev: true /test-exclude/6.0.0: @@ -8507,8 +8408,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: @@ -8536,8 +8437,8 @@ packages: dependencies: is-number: 7.0.0 - /toidentifier/1.0.0: - resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} + /toidentifier/1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} dev: true @@ -8561,7 +8462,6 @@ packages: /tr46/0.0.3: resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=} - dev: true /tr46/2.1.0: resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} @@ -8581,14 +8481,15 @@ packages: utf8-byte-length: 1.0.4 dev: true - /ts-jest/27.0.5_52a571d76319e63aeaa66dc9db9e90cc: - resolution: {integrity: sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==} + /ts-jest/27.1.2_1b5a1be2010a86e622f02a11eaeb730f: + resolution: {integrity: sha512-eSOiJOWq6Hhs6Khzk5wKC5sgWIXgXqOCiIl1+3lfnearu58Hj4QpE5tUhQcA3xtZrELbcvAGCsd6HB8OsaVaTA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true peerDependencies: '@babel/core': '>=7.0.0-beta.0 <8' '@types/jest': ^27.0.0 babel-jest: '>=27.0.0 <28' + esbuild: ~0.14.0 jest: ^27.0.0 typescript: '>=3.8 <5.0' peerDependenciesMeta: @@ -8598,23 +8499,25 @@ packages: optional: true babel-jest: optional: true + esbuild: + optional: true dependencies: - '@types/jest': 27.0.2 + '@types/jest': 27.0.3 bs-logger: 0.2.6 + esbuild: 0.14.3 fast-json-stable-stringify: 2.1.0 - jest: 27.2.4_ts-node@10.2.1 - jest-util: 27.2.0 + jest: 27.4.5_ts-node@10.4.0 + jest-util: 27.4.2 json5: 2.2.0 - lodash: 4.17.21 + lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.3.5 - typescript: 4.4.3 + typescript: 4.5.4 yargs-parser: 20.2.9 dev: true - /ts-node/10.2.1_3b624d72c50530188ff09826d1b48ebf: - resolution: {integrity: sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==} - engines: {node: '>=12.0.0'} + /ts-node/10.4.0_00264fd83560919cd06c986889baae0a: + resolution: {integrity: sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -8627,24 +8530,24 @@ packages: '@swc/wasm': optional: true dependencies: - '@cspotcode/source-map-support': 0.6.1 + '@cspotcode/source-map-support': 0.7.0 '@tsconfig/node10': 1.0.8 '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 15.14.9 - acorn: 8.5.0 + '@types/node': 16.11.17 + acorn: 8.7.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.4.3 + typescript: 4.5.4 yn: 3.1.1 dev: true - /tsconfck/1.0.0_typescript@4.4.3: - resolution: {integrity: sha512-9+flUmolxrnyKAYbNzXZX1UPHUuZsVqM42ioZ1H55r0I+UfJgYui4b7zUxhdJ4o5emEuZo89Cx4TiWG/Dd0c/A==} + /tsconfck/1.1.1: + 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: @@ -8652,8 +8555,6 @@ packages: peerDependenciesMeta: typescript: optional: true - dependencies: - typescript: 4.4.3 dev: true /tslib/1.14.1: @@ -8664,14 +8565,14 @@ packages: resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} dev: true - /tsutils/3.21.0_typescript@4.4.3: + /tsutils/3.21.0_typescript@4.5.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.4.3 + typescript: 4.5.4 dev: true /type-check/0.3.2: @@ -8723,7 +8624,7 @@ packages: engines: {node: '>= 0.6'} dependencies: media-typer: 0.3.0 - mime-types: 2.1.32 + mime-types: 2.1.34 dev: true /type/1.2.0: @@ -8740,8 +8641,8 @@ packages: is-typedarray: 1.0.0 dev: true - /typescript/4.4.3: - resolution: {integrity: sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==} + /typescript/4.5.4: + resolution: {integrity: sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==} engines: {node: '>=4.2.0'} hasBin: true dev: true @@ -8764,8 +8665,8 @@ packages: resolution: {integrity: sha512-kMBmblijHJXyOpKzgDhKx9INYU4u4E1RPMB0HqmKSgWG8vEcf3exEfLh4FFfzd3xdQOw9EuIy/cP0akY6rHopQ==} dev: true - /uglify-js/3.14.2: - resolution: {integrity: sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==} + /uglify-js/3.14.5: + resolution: {integrity: sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -8801,11 +8702,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 @@ -8832,7 +8728,7 @@ packages: resolution: {integrity: sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==} engines: {node: '>=10.12.0'} dependencies: - '@types/istanbul-lib-coverage': 2.0.3 + '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 source-map: 0.7.3 dev: true @@ -8844,8 +8740,8 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /validator/8.2.0: - resolution: {integrity: sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==} + /validator/13.7.0: + resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==} engines: {node: '>= 0.10'} dev: true @@ -8858,18 +8754,20 @@ packages: engines: {node: '>= 0.8'} dev: true - /vitepress/0.19.2: - resolution: {integrity: sha512-F8KY5gTfIa9B61by6rlGQE2K/fw2FIflld6UuB3SHTp0E5cblYGUkGfVwMiai+ets2ztDqWIiJJqpDBm/Cam1Q==} + /vitepress/0.20.10: + resolution: {integrity: sha512-dKgH6k1yxdEjIIxoXGI0vMg3lpBLvMarre/vvt4beuxd+rXOUB1a7DAtXDmgIXOMGQ7IcF+4zyd2132IedhjtQ==} engines: {node: '>=12.0.0'} hasBin: true dependencies: - '@docsearch/css': 1.0.0-alpha.28 - '@docsearch/js': 1.0.0-alpha.28 + '@docsearch/css': 3.0.0-alpha.42 + '@docsearch/js': 3.0.0-alpha.42 '@vitejs/plugin-vue': link:packages/plugin-vue prismjs: 1.25.0 vite: link:packages/vite - vue: 3.2.19 + vue: 3.2.26 transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' - react - react-dom dev: true @@ -8879,51 +8777,31 @@ packages: engines: {node: '>=0.10.0'} dev: true - /vue-router/4.0.11_vue@3.2.16: - resolution: {integrity: sha512-sha6I8fx9HWtvTrFZfxZkiQQBpqSeT+UCwauYjkdOQYRvwsGwimlQQE2ayqUwuuXGzquFpCPoXzYKWlzL4OuXg==} + /vue-router/4.0.12_vue@3.2.26: + resolution: {integrity: sha512-CPXvfqe+mZLB1kBWssssTiWg4EQERyqJZes7USiqfW9B5N2x+nHlnsM1D3b5CaJ6qgCvMmYJnz+G0iWjNCvXrg==} peerDependencies: vue: ^3.0.0 dependencies: - '@vue/devtools-api': 6.0.0-beta.18 - vue: 3.2.16 + '@vue/devtools-api': 6.0.0-beta.21.1 + vue: 3.2.26 dev: false - /vue/3.2.16: - resolution: {integrity: sha512-aGm8HbZe6IIj2b/LX6QXpAwwDFrpo8E1jdTkuBX2fS42c1+mQ1n0Wl+Dxnj9cgRM7bp1MIoXbPbDyDsOrXTO0w==} + /vue/3.2.26: + resolution: {integrity: sha512-KD4lULmskL5cCsEkfhERVRIOEDrfEL9CwAsLYpzptOGjaGFNWo3BQ9g8MAb7RaIO71rmVOziZ/uEN/rHwcUIhg==} dependencies: - '@vue/compiler-dom': 3.2.16 - '@vue/compiler-sfc': 3.2.16 - '@vue/runtime-dom': 3.2.16 - '@vue/server-renderer': 3.2.16_vue@3.2.16 - '@vue/shared': 3.2.16 + '@vue/compiler-dom': 3.2.26 + '@vue/compiler-sfc': 3.2.26 + '@vue/runtime-dom': 3.2.26 + '@vue/server-renderer': 3.2.26_vue@3.2.26 + '@vue/shared': 3.2.26 - /vue/3.2.19: - resolution: {integrity: sha512-6KAMdIfAtlK+qohTIUE4urwAv4A3YRuo8uAbByApUmiB0CziGAAPs6qVugN6oHPia8YIafHB/37K0O6KZ7sGmA==} - dependencies: - '@vue/compiler-dom': 3.2.19 - '@vue/compiler-sfc': 3.2.19 - '@vue/runtime-dom': 3.2.19 - '@vue/server-renderer': 3.2.19_vue@3.2.19 - '@vue/shared': 3.2.19 - dev: true - - /vue/3.2.20: - resolution: {integrity: sha512-81JjEP4OGk9oO8+CU0h2nFPGgJBm9mNa3kdCX2k6FuRdrWrC+CNe+tOnuIeTg8EWwQuI+wwdra5Q7vSzp7p4Iw==} - 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 - dev: true - - /vuex/4.0.2_vue@3.2.16: + /vuex/4.0.2_vue@3.2.26: resolution: {integrity: sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==} peerDependencies: vue: ^3.0.2 dependencies: - '@vue/devtools-api': 6.0.0-beta.18 - vue: 3.2.16 + '@vue/devtools-api': 6.0.0-beta.21.1 + vue: 3.2.26 dev: false /w3c-hr-time/1.0.2: @@ -8939,30 +8817,29 @@ packages: xml-name-validator: 3.0.0 dev: true - /walker/1.0.7: - resolution: {integrity: sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=} + /walker/1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: - makeerror: 1.0.11 + 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 - /webcrypto-core/1.2.1: - resolution: {integrity: sha512-5+h1/e/A4eegCRTg+oQ9ehTJRTMwFhZazJ2RH1FP0VC3q1/0xl7x6SzzTwPxd/VTGc7kjuSEJGnfNgoLe5jNRQ==} + /webcrypto-core/1.4.0: + resolution: {integrity: sha512-HY3Zo0GcRIQUUDnlZ/shGjN+4f7LVMkdJZoGPog+oHhJsJdMz6iM8Za5xZ0t6qg7Fx/JXXz+oBv2J2p982hGTQ==} dependencies: - '@peculiar/asn1-schema': 2.0.38 + '@peculiar/asn1-schema': 2.0.44 '@peculiar/json-schema': 1.1.12 - asn1js: 2.1.1 - pvtsutils: 1.2.0 + asn1js: 2.2.0 + pvtsutils: 1.2.1 tslib: 2.3.1 dev: true /webidl-conversions/3.0.1: resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=} - dev: true /webidl-conversions/5.0.0: resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} @@ -8989,7 +8866,6 @@ packages: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: true /whatwg-url/8.7.0: resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} @@ -9025,12 +8901,18 @@ packages: isexe: 2.0.0 dev: true + /wide-align/1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + dependencies: + string-width: 4.2.3 + dev: false + /with/7.0.2: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/parser': 7.15.7 - '@babel/types': 7.15.6 + '@babel/parser': 7.16.6 + '@babel/types': 7.16.0 assert-never: 1.2.1 babel-walk: 3.0.0-canary-5 dev: true @@ -9049,8 +8931,8 @@ packages: engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 - string-width: 4.2.2 - strip-ansi: 6.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 dev: true /wrap-ansi/7.0.0: @@ -9058,8 +8940,8 @@ packages: engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 - string-width: 4.2.2 - strip-ansi: 6.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 dev: true /wrappy/1.0.2: @@ -9070,12 +8952,12 @@ packages: dependencies: imurmurhash: 0.1.4 is-typedarray: 1.0.0 - signal-exit: 3.0.4 + signal-exit: 3.0.6 typedarray-to-buffer: 3.1.5 dev: true - /ws/7.5.5: - resolution: {integrity: sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==} + /ws/7.5.6: + resolution: {integrity: sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -9087,6 +8969,19 @@ packages: optional: true dev: true + /ws/8.4.0: + resolution: {integrity: sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==} + 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 @@ -9110,7 +9005,6 @@ packages: /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} @@ -9129,7 +9023,7 @@ packages: escalade: 3.1.1 get-caller-file: 2.0.5 require-directory: 2.1.1 - string-width: 4.2.2 + string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 dev: true @@ -9172,13 +9066,14 @@ packages: stack-trace: 0.0.10 dev: true - /z-schema/3.18.4: - resolution: {integrity: sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==} + /z-schema/5.0.2: + resolution: {integrity: sha512-40TH47ukMHq5HrzkeVE40Ad7eIDKaRV2b+Qpi2prLc9X9eFJFzV7tMe5aH12e6avaSS/u5l653EQOv+J9PirPw==} + engines: {node: '>=8.0.0'} hasBin: true dependencies: lodash.get: 4.4.2 lodash.isequal: 4.5.0 - validator: 8.2.0 + validator: 13.7.0 optionalDependencies: commander: 2.20.3 dev: true diff --git a/scripts/jestEnv.js b/scripts/jestEnv.cjs similarity index 100% rename from scripts/jestEnv.js rename to scripts/jestEnv.cjs diff --git a/scripts/jestGlobalSetup.js b/scripts/jestGlobalSetup.cjs similarity index 100% rename from scripts/jestGlobalSetup.js rename to scripts/jestGlobalSetup.cjs diff --git a/scripts/jestGlobalTeardown.js b/scripts/jestGlobalTeardown.cjs similarity index 100% rename from scripts/jestGlobalTeardown.js rename to scripts/jestGlobalTeardown.cjs diff --git a/scripts/jestPerTestSetup.ts b/scripts/jestPerTestSetup.ts index 3b7ec7d06fb226..cf4f96e87e7a54 100644 --- a/scripts/jestPerTestSetup.ts +++ b/scripts/jestPerTestSetup.ts @@ -2,17 +2,17 @@ import fs from 'fs-extra' import * as http from 'http' import { resolve, dirname } from 'path' import sirv from 'sirv' -import { - createServer, - build, +import type { ViteDevServer, UserConfig, PluginOption, - ResolvedConfig + ResolvedConfig, + Logger } from 'vite' -import { Page } from 'playwright-chromium' +import { createServer, build } from 'vite' +import type { Page } from 'playwright-chromium' // eslint-disable-next-line node/no-extraneous-import -import { RollupWatcher, RollupWatcherEvent } from 'rollup' +import type { RollupError, RollupWatcher, RollupWatcherEvent } from 'rollup' const isBuildTest = !!process.env.VITE_TEST_BUILD @@ -22,15 +22,23 @@ 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 serverLogs: 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[] + serverLogs: string[] + viteTestUrl?: string + watcher?: RollupWatcher + beforeAllError: Error | null } let server: ViteDevServer | http.Server @@ -81,6 +89,8 @@ beforeAll(async () => { } } + const serverLogs: string[] = [] + const options: UserConfig = { root: rootDir, logLevel: 'silent', @@ -99,9 +109,12 @@ beforeAll(async () => { build: { // skip transpilation during tests to make it faster target: 'esnext' - } + }, + customLogger: createInMemoryLogger(serverLogs) } + global.serverLogs = serverLogs + if (!isBuildTest) { process.env.VITE_INLINE = 'inline-serve' server = await (await createServer(options)).listen() @@ -147,6 +160,7 @@ beforeAll(async () => { afterAll(async () => { global.page?.off('console', onConsole) + global.serverLogs = [] await global.page?.close() await server?.close() const beforeAllErr = getBeforeAllError() @@ -215,3 +229,35 @@ export async function notifyRebuildComplete( }) return watcher.removeListener('event', callback) } + +function createInMemoryLogger(logs: string[]): Logger { + const loggedErrors = new WeakSet() + const warnedMessages = new Set() + + const logger: Logger = { + hasWarned: false, + hasErrorLogged: (err) => loggedErrors.has(err), + clearScreen: () => {}, + info(msg) { + logs.push(msg) + }, + warn(msg) { + logs.push(msg) + logger.hasWarned = true + }, + warnOnce(msg) { + if (warnedMessages.has(msg)) return + logs.push(msg) + logger.hasWarned = true + warnedMessages.add(msg) + }, + error(msg, opts) { + logs.push(msg) + if (opts?.error) { + loggedErrors.add(opts.error) + } + } + } + + return logger +} diff --git a/scripts/patchFileDeps.js b/scripts/patchFileDeps.ts similarity index 61% rename from scripts/patchFileDeps.js rename to scripts/patchFileDeps.ts index dbb42caadd38f4..0e90bbe8adece2 100644 --- a/scripts/patchFileDeps.js +++ b/scripts/patchFileDeps.ts @@ -3,19 +3,20 @@ // This script is called from postinstall hooks in playground packages that // uses the file: protocol, and copies the file: deps into node_modules. -const fs = require('fs-extra') -const path = require('path') +import { copySync, removeSync } from 'fs-extra' +import { join, resolve } from 'path' + const root = process.cwd() -const pkg = require(path.join(root, 'package.json')) +const pkg = require(join(root, 'package.json')) -let hasPatched -for (const [key, val] of Object.entries(pkg.dependencies)) { +let hasPatched: boolean = false +for (const [key, val] of Object.entries(pkg.dependencies)) { if (val.startsWith('file:')) { hasPatched = true - const src = path.resolve(root, val.slice('file:'.length)) - const dest = path.resolve(root, 'node_modules', key) - fs.removeSync(dest) - fs.copySync(src, dest, { + const src = resolve(root, val.slice('file:'.length)) + const dest = resolve(root, 'node_modules', key) + removeSync(dest) + copySync(src, dest, { dereference: true }) console.log(`patched ${val}`) @@ -26,5 +27,5 @@ if (hasPatched) { // remove node_modules/.ignored as pnpm will think our patched files are // installed by another package manager and move them into this directory. // On further installs it will error out if this directory is not empty. - fs.removeSync(path.resolve(root, 'node_modules', '.ignored')) + removeSync(resolve(root, 'node_modules', '.ignored')) } 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) -} diff --git a/scripts/release.js b/scripts/release.ts similarity index 65% rename from scripts/release.js rename to scripts/release.ts index d7f258bc70d140..03461a8a0208ea 100644 --- a/scripts/release.js +++ b/scripts/release.ts @@ -1,37 +1,26 @@ -// @ts-check - /** * modified from https://github.com/vuejs/vue-next/blob/master/scripts/release.js */ -const execa = require('execa') -const path = require('path') -const fs = require('fs') +import chalk from 'chalk' +import type { ExecaChildProcess, Options as ExecaOptions } from 'execa' +import execa from 'execa' +import { readFileSync, writeFileSync } from 'fs' +import path from 'path' +import prompts from 'prompts' +import type { ReleaseType } from 'semver' +import semver from 'semver' + const args = require('minimist')(process.argv.slice(2)) -const semver = require('semver') -const chalk = require('chalk') -const prompts = require('prompts') const pkgDir = process.cwd() const pkgPath = path.resolve(pkgDir, 'package.json') -/** - * @type {{ name: string, version: string }} - */ -const pkg = require(pkgPath) +const pkg: { name: string; version: string } = require(pkgPath) const pkgName = pkg.name.replace(/^@vitejs\//, '') const currentVersion = pkg.version -/** - * @type {boolean} - */ -const isDryRun = args.dry -/** - * @type {boolean} - */ -const skipBuild = args.skipBuild +const isDryRun: boolean = args.dry +const skipBuild: boolean = args.skipBuild -/** - * @type {import('semver').ReleaseType[]} - */ -const versionIncrements = [ +const versionIncrements: ReleaseType[] = [ 'patch', 'minor', 'major', @@ -41,43 +30,33 @@ const versionIncrements = [ 'prerelease' ] -/** - * @param {import('semver').ReleaseType} i - */ -const inc = (i) => semver.inc(currentVersion, i, 'beta') +const inc: (i: ReleaseType) => string = (i) => + semver.inc(currentVersion, i, 'beta')! -/** - * @param {string} bin - * @param {string[]} args - * @param {object} opts - */ -const run = (bin, args, opts = {}) => +type RunFn = ( + bin: string, + args: string[], + opts?: ExecaOptions +) => ExecaChildProcess + +const run: RunFn = (bin, args, opts = {}) => execa(bin, args, { stdio: 'inherit', ...opts }) -/** - * @param {string} bin - * @param {string[]} args - * @param {object} opts - */ -const dryRun = (bin, args, opts = {}) => +type DryRunFn = (bin: string, args: string[], opts?: any) => void + +const dryRun: DryRunFn = (bin, args, opts: any) => console.log(chalk.blue(`[dryrun] ${bin} ${args.join(' ')}`), opts) const runIfNotDry = isDryRun ? dryRun : run -/** - * @param {string} msg - */ -const step = (msg) => console.log(chalk.cyan(msg)) +const step: (msg: string) => void = (msg) => console.log(chalk.cyan(msg)) -async function main() { - let targetVersion = args._[0] +async function main(): Promise { + let targetVersion: string | undefined = args._[0] if (!targetVersion) { // no explicit version, offer suggestions - /** - * @type {{ release: string }} - */ - const { release } = await prompts({ + const { release }: { release: string } = await prompts({ type: 'select', name: 'release', message: 'Select release type', @@ -88,10 +67,7 @@ async function main() { }) if (release === 'custom') { - /** - * @type {{ version: string }} - */ - const res = await prompts({ + const res: { version: string } = await prompts({ type: 'text', name: 'version', message: 'Input custom version', @@ -99,7 +75,7 @@ async function main() { }) targetVersion = res.version } else { - targetVersion = release.match(/\((.*)\)/)[1] + targetVersion = release.match(/\((.*)\)/)![1] } } @@ -111,10 +87,7 @@ async function main() { pkgName === 'vite' ? `v${targetVersion}` : `${pkgName}@${targetVersion}` if (targetVersion.includes('beta') && !args.tag) { - /** - * @type {{ tagBeta: boolean }} - */ - const { tagBeta } = await prompts({ + const { tagBeta }: { tagBeta: boolean } = await prompts({ type: 'confirm', name: 'tagBeta', message: `Publish under dist-tag "beta"?` @@ -123,10 +96,7 @@ async function main() { if (tagBeta) args.tag = 'beta' } - /** - * @type {{ yes: boolean }} - */ - const { yes } = await prompts({ + const { yes }: { yes: boolean } = await prompts({ type: 'confirm', name: 'yes', message: `Releasing ${tag}. Confirm?` @@ -173,20 +143,16 @@ async function main() { console.log() } -/** - * @param {string} version - */ -function updateVersion(version) { - const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')) +function updateVersion(version: string): void { + const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) pkg.version = version - fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n') + writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n') } -/** - * @param {string} version - * @param {Function} runIfNotDry - */ -async function publishPackage(version, runIfNotDry) { +async function publishPackage( + version: string, + runIfNotDry: RunFn | DryRunFn +): Promise { const publicArgs = [ 'publish', '--no-git-tag-version', @@ -205,7 +171,7 @@ async function publishPackage(version, runIfNotDry) { stdio: 'pipe' }) console.log(chalk.green(`Successfully published ${pkgName}@${version}`)) - } catch (e) { + } catch (e: any) { if (e.stderr.match(/previously published/)) { console.log(chalk.red(`Skipping already published: ${pkgName}`)) } else { diff --git a/scripts/verifyCommit.js b/scripts/verifyCommit.ts similarity index 83% rename from scripts/verifyCommit.js rename to scripts/verifyCommit.ts index fbbff40796a8d7..437e723c85d17b 100644 --- a/scripts/verifyCommit.js +++ b/scripts/verifyCommit.ts @@ -1,8 +1,10 @@ // Invoked on the commit-msg git hook by yorkie. -const chalk = require('chalk') -const msgPath = process.env.GIT_PARAMS -const msg = require('fs').readFileSync(msgPath, 'utf-8').trim() +import chalk from 'chalk' +import { readFileSync } from 'fs' + +const msgPath = process.env.GIT_PARAMS! +const msg = readFileSync(msgPath, 'utf-8').trim() const releaseRE = /^v\d/ const commitRE =