From a567689575ea2d0428d3bcc111cacca0e71eb1c2 Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Thu, 23 Mar 2023 14:44:14 +0900 Subject: [PATCH] feat: support js and ts extension resource formats (#1938) * docs: typos * feat: support js and ts extension resource formats * add server handler skelton * feat: support js and ts extension resource formats * add server handler skelton * basic implementation * refactor * support ssg * update snapshot * bump * fix: change to $config using * fix: strip type annotation on typescript codes * refactoring * docs: updates * fix: updates * fix: more updates * add defineI18nLocale * remove unnecesary deps * add `precompile` options * fix: update snapshots * chore: bump deps * docs: updates * refactor: remove codes --------- Co-authored-by: pierresaid Co-authored-by: Inesh Bose <56732164+ineshbose@users.noreply.github.com> --- TODO.md | 2 +- build.config.ts | 2 +- docs/content/2.guide/15.migrating.md | 3 +- .../2.guide/8.lazy-load-translations.md | 60 +- docs/content/3.options/3.lazy.md | 9 +- docs/content/3.options/6.misc.md | 41 + docs/content/3.options/7.runtime-config.md | 48 +- docs/content/4.API/1.composables.md | 44 + package.json | 47 +- playground/locales/en-GB.js | 3 + playground/locales/en.json | 3 +- playground/locales/ja.js | 20 + playground/locales/ja.mjs | 3 + playground/locales/ja.ts | 15 + playground/nuxt.config.ts | 13 +- playground/package.json | 1 + playground/pages/index.vue | 1 + playground/server/api/[locale].ts | 35 + playground/tsconfig.json | 6 +- pnpm-lock.yaml | 2822 +++++++++++++---- specs/fixtures/lazy/lang/en-GB.js | 3 + specs/fixtures/lazy/lang/en-GB.json | 11 - specs/fixtures/lazy/lang/en-GB.ts | 3 + specs/fixtures/lazy/pages/index.vue | 3 +- specs/fixtures/lazy/server/api/[locale].ts | 23 + specs/helper.ts | 15 + .../__snapshots__/server.spec.ts.snap | 7 + .../basic.spec.ts} | 12 +- specs/lazy_load/server.spec.ts | 94 + src/bundler.ts | 31 +- src/constants.ts | 15 + src/gen.ts | 196 +- src/module.ts | 121 +- src/options.d.ts | 2 + src/pages.ts | 5 +- src/runtime/composables.ts | 35 +- src/runtime/internal.ts | 44 +- src/runtime/server/precompile.ts | 48 + src/transform/dynamic.ts | 60 + src/{ => transform}/macros.ts | 9 +- src/transform/proxy.ts | 118 + src/transform/utils.ts | 17 + src/types.ts | 17 +- src/utils.ts | 2 +- test/__snapshots__/gen.test.ts.snap | 34 +- test/gen.test.ts | 3 +- .../__snapshots__/custom_route.test.ts.snap | 2 +- .../__snapshots__/disable.test.ts.snap | 2 +- .../__snapshots__/pick.test.ts.snap | 2 +- 49 files changed, 3264 insertions(+), 848 deletions(-) create mode 100644 playground/locales/en-GB.js create mode 100644 playground/locales/ja.js create mode 100644 playground/locales/ja.mjs create mode 100644 playground/locales/ja.ts create mode 100644 playground/server/api/[locale].ts create mode 100644 specs/fixtures/lazy/lang/en-GB.js delete mode 100644 specs/fixtures/lazy/lang/en-GB.json create mode 100644 specs/fixtures/lazy/lang/en-GB.ts create mode 100644 specs/fixtures/lazy/server/api/[locale].ts create mode 100644 specs/lazy_load/__snapshots__/server.spec.ts.snap rename specs/{lazy_load.spec.ts => lazy_load/basic.spec.ts} (87%) create mode 100644 specs/lazy_load/server.spec.ts create mode 100644 src/runtime/server/precompile.ts create mode 100644 src/transform/dynamic.ts rename src/{ => transform}/macros.ts (86%) create mode 100644 src/transform/proxy.ts create mode 100644 src/transform/utils.ts diff --git a/TODO.md b/TODO.md index 55b3dc890..9f47e43bc 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,7 @@ # TODO - [ ] `skipNuxtState` -- [ ] executalbe files (`js`, `cjs`, and `mjs`) are not supported yet +- [x] executalbe files (`js`, `cjs`, and `mjs`) are not supported yet - [ ] `sortRoutes` option - [x] `vueI18n` option for function - Refactoring diff --git a/build.config.ts b/build.config.ts index 2786e70e2..127041eee 100644 --- a/build.config.ts +++ b/build.config.ts @@ -1,5 +1,5 @@ import { defineBuildConfig } from 'unbuild' export default defineBuildConfig({ - externals: ['node:fs', 'node:url', '@intlify/vue-i18n-bridge', 'webpack'] + externals: ['node:fs', 'node:url', '@intlify/vue-i18n-bridge', 'webpack', '@babel/parser'] }) diff --git a/docs/content/2.guide/15.migrating.md b/docs/content/2.guide/15.migrating.md index 3ef507554..c7d3cc40a 100644 --- a/docs/content/2.guide/15.migrating.md +++ b/docs/content/2.guide/15.migrating.md @@ -153,6 +153,7 @@ This option is no longer necessary, because i18n custom block is supported by [u These functions can now be triggered using Nuxt runtime hooks. Please refer to [runtime hooks](/guide/runtime-hooks) to see how to use these. + ### Change some export APIs name on Nuxt context The following API will be changed to `$`: @@ -166,7 +167,7 @@ The following API will be changed to `$`: ### Deprecated export APIs in Vuex -Vuex extention APIs were removed, because Vuex no longer requires in Nuxt3. +Vuex extension APIs were removed, because Vuex no longer requires in Nuxt3. The following APIs are no longer available: diff --git a/docs/content/2.guide/8.lazy-load-translations.md b/docs/content/2.guide/8.lazy-load-translations.md index 8cd79e2e7..dd99b0513 100755 --- a/docs/content/2.guide/8.lazy-load-translations.md +++ b/docs/content/2.guide/8.lazy-load-translations.md @@ -12,13 +12,7 @@ To enable translations lazy-loading, follow these steps when configuring **Nuxt - Set `langDir` option to the directory (can not be empty) that contains your translation files. - Configure `locales` option as an array of object, where each object has a `file` or `files` key whose value is the translation file corresponding to the locale. - Optionally, remove all messages that you might have passed to Vue I18n via `vueI18n` option. -- Each `file` can return either an `Object`. - -::alert{type="warning"} - -`file` or `files` is still not supported `function` , Promises - -:: +- Each `file` or `files` can return either an `Object`, or a function that returns `Promise` must return `Object`. ## Basic usage @@ -28,14 +22,14 @@ Example files structure: nuxt-project/ ├── lang/ │ ├── en-US.json -│ ├── es-ES.json -│ ├── fr-FR.json +│ ├── es-ES.js +│ ├── fr-FR.ts ├── nuxt.config.ts ``` Configuration example: -```js {}[nuxt.config.ts] +```ts {}[nuxt.config.ts] export default defineNuxtConfig({ // ... @@ -47,11 +41,11 @@ export default defineNuxtConfig({ }, { code: 'es', - file: 'es-ES.json' + file: 'es-ES.js' }, { code: 'fr', - file: 'fr-FR.json' + file: 'fr-FR.ts' } ], lazy: true, @@ -63,12 +57,50 @@ export default defineNuxtConfig({ }) ``` -::alert{type="warning"} +```ts {}[lang/fr-FR.ts] +export default defineI18nLocale(async (context, locale) => { + return { + welcome: 'Welcome' + } +}) + +// or + +export default { + welcome: 'Welcome' +} +``` + +::alert{type="info"} + +If your function returns an object of locale messages, **you must define it in the `defineI18nLocale` composable function**. + +About `defineI18nLocale` details, see the [here](/api/composables#defineI18nLocale). -Currently, `json`,`json5` and `yaml` are supported only. +:: + +::alert{type="warn"} + +The js / ts format is currently an experimental feature and disabled by default. + +If you want to use it, you must set the `experimental.jsTsFormatResource` module option to `true`. :: +::alert{type="info"} + +If the function returns an Object available in nuxt i18n module, you can configure the dynamic locale messages, like the API (including external API) or back-end, via fetch: + +```js +export default defineI18nLocale((context, locale) => { + // for example, fetch locale messages from nuxt server + return $fetch(`/api/${locale}`) +}) +``` + +:: + + ## Multiple files lazy loading The `files` can load lazily multiple files. diff --git a/docs/content/3.options/3.lazy.md b/docs/content/3.options/3.lazy.md index ef91825fb..d09f1d5f3 100644 --- a/docs/content/3.options/3.lazy.md +++ b/docs/content/3.options/3.lazy.md @@ -24,13 +24,6 @@ Loading locale messages lazily means that only messages for currently used local :: -The value can also be set to an object instead of the value `true` to override configuration options related to lazy loading. Supports the following optional properties: - -- type: `boolean` -- default: `true` - -Whether the translation messages for the current locale should be injected into Nuxt state and re-used on the client-side. [Read more](/guide/lazy-load-translations#lazy-configuration-options). - ## `langDir` - type: `string` or `null` @@ -41,5 +34,7 @@ A relative path to a directory containing translation files to load. Can be used The path is resolved relative to the project `srcDir` (project root by default). ::alert{type="warning"} + Absolute paths will fail in production (eg. `/locales` should be changed into either `locales` or `./locales`) + :: \ No newline at end of file diff --git a/docs/content/3.options/6.misc.md b/docs/content/3.options/6.misc.md index a337416ca..5f36130f5 100644 --- a/docs/content/3.options/6.misc.md +++ b/docs/content/3.options/6.misc.md @@ -4,6 +4,47 @@ Miscellaneous options. --- +## `experimental` + +- type: `object` +- default: `{ jsTsFormatResource: false }` + +Configure the flag for experimental features of the nuxt i18n module. + +::alert{type="info"} + +This module option setting is also set to the runtime config. + +:: + +Supported properties: + +- `jsTsFormatResource` (default: `false`) - Allow the format `js` and `ts` for locale messages in lazy load translation. + + +## `precompile` + +- type: `object` +- default: `{ strictMessage: true, escapeHtml: false }` + +Configure flags that sets the behavior precompilation of locale messages. + +Supported properties: + +- `strictMessage` (default: `true`) Strictly check that the locale message does not contain HTML tags. If HTML tags are included, an error is thrown. + ::alert{type="warning"} + + If you do not want the error to be thrown, you can work around it by setting it to false. However, **this means that the locale message might cause security issues with XSS**. In that case, we recommend setting the `escapeHtml` option to `true`. + + :: + +- `escapeHtml` (default: `false`) - Determine whether to escape HTML tags if they are included in the locale message. + ::alert{type="warning"} + + If `strictMessage` is disabled by setting it to `false`, we recommend enabling this option. + + :: + ## `types` - type: `string` (`composition` or `legacy`) | `undefined` diff --git a/docs/content/3.options/7.runtime-config.md b/docs/content/3.options/7.runtime-config.md index 644d7a05b..25fad2b33 100644 --- a/docs/content/3.options/7.runtime-config.md +++ b/docs/content/3.options/7.runtime-config.md @@ -8,40 +8,56 @@ Some options can be set via the `runtimeConfig`, setting options this way makes If you want to use environment variables to change [supported options](#supported-options), you will have to set these in `runtimeConfig.public.i18n`. -The module configuration takes precedence, options set through `runtimeConfig` will only be used if they are unset. - -Setting `baseUrl` through `runtimeConfig` would look like this: - ```ts {}[nuxt.config.ts] export default defineNuxtConfig({ - runtimeConfig: { - public: { - i18n: { - baseUrl: 'https://example.com', - } - } - }, modules: [ '@nuxtjs/i18n' ], i18n: { // Leave options unset that you want to set using `runtimeConfig` // baseUrl: 'https://example.com', + }, + runtimeConfig: { + public: { + i18n: { + baseUrl: 'https://example.com', + // smothing other options ... + } + } } }) ``` -With this configuration you will be able to override the `baseUrl` option by setting the `NUXT_PUBLIC_I18N_BASE_URL` environment variable. You can read more about how this works in the [Nuxt documentation](https://nuxt.com/docs/guide/going-further/runtime-config#environment-variables). +You can read more about how this works in the [Nuxt documentation](https://nuxt.com/docs/guide/going-further/runtime-config#environment-variables). -## Supported options - -These options can be set using `runtimeConfig`: -* [`baseUrl`](./routing#baseUrl) ::alert{type=warning} + Only [serializable values are supported](https://nuxt.com/docs/guide/going-further/runtime-config#serialization) in `runtimeConfig`, options set this way may not support all available types (such as functions) as would normally be possible using the default configuration. + :: ::alert{type=info} + If you would like other options to be supported, open an issue describing your use case, or open a PR adding to add support yourself! + +:: + + +## Supported options + +These options can be set using `runtimeConfig`: + +### `baseUrl` + +This runtime config option is same the [`baseUrl`](./routing#baseUrl) module option. + +The module configuration takes precedence, options set through `runtimeConfig` will only be used if they are unset. + +::alert{type=warning} + +Note that the `baseUrl` module option allows you to set the function, but the runtime config does not due to limitations. + :: + +With this configuration you will be able to override the `baseUrl` option by setting the `NUXT_PUBLIC_I18N_BASE_URL` environment variable. diff --git a/docs/content/4.API/1.composables.md b/docs/content/4.API/1.composables.md index e57d4c6dc..19ed11708 100644 --- a/docs/content/4.API/1.composables.md +++ b/docs/content/4.API/1.composables.md @@ -176,3 +176,47 @@ Note that if the value of `detectBrowserLanguage.useCookie` is `false`, an **emp ```ts declare function useCookieLocale(): Ref; ``` + +## `defineI18nLocale` + +The `defineI18nLocale` defines a composable function to dynamically load locale messages. + +This function is used to dynamically load a locale with [lazy-load translations](/guide/lazy-load-translations). + +You can use at JavaScript and TypeScript extension formats. + +You need return locale messags object that will be resolved by Promise. + +### Type + +```ts +declare function defineI18nLocale, Locales = Locale>(loader: (context: NuxtApp, locale: Locales) => Messages | Promise): (context: NuxtApp, locale: Locales) => Messages | Promise; +``` + +for example, locale loading with fetch: +```ts +export default defineI18nLocale((context, locale) => { + return $fetch(`https://your-company-product/api/${locale}`) +}) +``` + +### Parameters + +#### `loader` + +A function that is the dynamic locale messages loading, that has the following parameters: + +- `context` + + **Type**: `NuxtApp` + + A Nuxt Application instance that is passed from nuxt i18n module. + +- `locale` + + **Type**: `Locale` + + A target locale that is passed from nuxt i18n module. That is passed when the locale is switched in the following cases: + + - when you switch the locale with `setLocale`. + - when the locale is switched with ``. for example, the route path resolved by `useSwitchLocalePath` or `$switchLocalePath`. diff --git a/package.json b/package.json index 56ee5d863..58aa10694 100644 --- a/package.json +++ b/package.json @@ -72,56 +72,59 @@ } }, "dependencies": { - "@intlify/bundle-utils": "^4.0.0", - "@intlify/shared": "9.3.0-beta.16", - "@intlify/unplugin-vue-i18n": "^0.8.1", + "@intlify/bundle-utils": "^5.4.0", + "@intlify/shared": "9.3.0-beta.17", + "@intlify/unplugin-vue-i18n": "^0.10.0", + "@mizchi/sucrase": "^4.1.0", "@nuxt/kit": "^3.1.2", "@vue/compiler-sfc": "^3.2.47", "cookie-es": "^0.5.0", "debug": "^4.3.4", + "defu": "^6.1.2", "estree-walker": "^3.0.1", "is-https": "^4.0.0", "js-cookie": "^3.0.1", "knitwork": "^1.0.0", "magic-string": "^0.27.0", - "mlly": "^1.1.0", + "mlly": "^1.2.0", "pathe": "^1.1.0", - "pkg-types": "^1.0.1", - "ufo": "^1.0.1", + "pkg-types": "^1.0.2", + "ufo": "^1.1.0", "unplugin": "^1.0.1", - "vue-i18n": "9.3.0-beta.16", + "unstorage": "^1.4.1", + "vue-i18n": "9.3.0-beta.17", "vue-i18n-routing": "^0.12.2" }, "devDependencies": { - "@babel/parser": "^7.20.15", + "@babel/parser": "^7.21.3", "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/types": "^7.20.7", + "@babel/types": "^7.21.3", "@nuxt/module-builder": "latest", "@nuxt/schema": "^3.1.2", "@nuxt/test-utils": "^3.1.2", "@types/debug": "^4.1.7", - "@types/js-cookie": "^3.0.2", + "@types/js-cookie": "^3.0.3", "@types/rimraf": "^3", - "@typescript-eslint/eslint-plugin": "^5.50.0", - "@typescript-eslint/parser": "^5.50.0", + "@typescript-eslint/eslint-plugin": "^5.56.0", + "@typescript-eslint/parser": "^5.56.0", "bumpp": "^9.0.0", "changelogithub": "^0.12.7", "debug": "^4.3.4", - "eslint": "^8.33.0", - "eslint-config-prettier": "^8.6.0", + "eslint": "^8.36.0", + "eslint-config-prettier": "^8.8.0", "eslint-plugin-prettier": "^4.2.1", "gh-changelogen": "^0.2.8", - "jiti": "^1.16.2", - "jsdom": "^21.1.0", - "lint-staged": "^13.1.0", + "jiti": "^1.18.2", + "jsdom": "^21.1.1", + "lint-staged": "^13.2.0", "npm-run-all": "^4.1.5", "nuxt": "^3.0.0", - "playwright": "^1.30.0", - "prettier": "^2.8.3", - "rimraf": "^4.1.2", - "ts-essentials": "^9.3.0", + "playwright": "^1.32.0", + "prettier": "^2.8.6", + "rimraf": "^4.4.1", + "ts-essentials": "^9.3.1", "typescript": "^4.9.5", - "vitest": "^0.26.2", + "vitest": "^0.29.7", "vue": "^3.2.47", "yorkie": "^2.0.0" }, diff --git a/playground/locales/en-GB.js b/playground/locales/en-GB.js new file mode 100644 index 000000000..da8984b2a --- /dev/null +++ b/playground/locales/en-GB.js @@ -0,0 +1,3 @@ +export default defineI18nLocale(async function (context, locale) { + return $fetch(`/api/${locale}`) +}) diff --git a/playground/locales/en.json b/playground/locales/en.json index 9802c9815..1c7f1f0cf 100644 --- a/playground/locales/en.json +++ b/playground/locales/en.json @@ -9,5 +9,6 @@ } }, "welcome": "Welcome", - "hello": "Hello {name} !" + "hello": "Hello {name} !", + "tag": "

Tag

" } diff --git a/playground/locales/ja.js b/playground/locales/ja.js new file mode 100644 index 000000000..52697e340 --- /dev/null +++ b/playground/locales/ja.js @@ -0,0 +1,20 @@ +// import type { Locale } from 'vue-i18n' +// import type { NuxtApp } from '@nuxt/schema' + +// export default function (context: NuxtApp, locale: Locale) { +export default async function (context, locale) { + console.log('dynamical resource loading ...', context, locale) + return { + layouts: { + title: 'ページ ー {title}' + }, + pages: { + title: { + top: 'トップ', + about: 'このサイトについて' + } + }, + welcome: 'ようこそ', + hello: 'こんにちは {name} !' + } +} diff --git a/playground/locales/ja.mjs b/playground/locales/ja.mjs new file mode 100644 index 000000000..4ee90b7fb --- /dev/null +++ b/playground/locales/ja.mjs @@ -0,0 +1,3 @@ +export default async function (context, locale) { + return $fetch(`/api/${locale}`) +} diff --git a/playground/locales/ja.ts b/playground/locales/ja.ts new file mode 100644 index 000000000..0940d5d62 --- /dev/null +++ b/playground/locales/ja.ts @@ -0,0 +1,15 @@ +export default defineI18nLocale((context, locale) => { + return { + layouts: { + title: 'ページ ー {title}' + }, + pages: { + title: { + top: 'トップ', + about: 'このサイトについて' + } + }, + welcome: 'ようこそ', + hello: 'こんにちは {name} !' + } +}) diff --git a/playground/nuxt.config.ts b/playground/nuxt.config.ts index d49d3bcdc..c46c7fd82 100644 --- a/playground/nuxt.config.ts +++ b/playground/nuxt.config.ts @@ -3,7 +3,7 @@ import type { NuxtApp } from 'nuxt/dist/app/index' // https://nuxt.com/docs/guide/directory-structure/nuxt.config export default defineNuxtConfig({ - modules: [Module1, '@nuxtjs/i18n'], + modules: [Module1, '@nuxtjs/i18n', '@nuxt/devtools'], vite: { build: { @@ -21,6 +21,13 @@ export default defineNuxtConfig({ // }, i18n: { + experimental: { + jsTsFormatResource: true + }, + precompile: { + strictMessage: false, + escapeHtml: true + }, langDir: 'locales', lazy: true, baseUrl: 'http://localhost:3000', @@ -35,13 +42,13 @@ export default defineNuxtConfig({ { code: 'en-GB', iso: 'en-GB', - files: ['en.json', 'en-GB.json'], + files: ['en.json', 'en-GB.js'], name: 'English (UK)' }, { code: 'ja', iso: 'ja-JP', - file: 'ja.json', + file: 'ja.ts', domain: 'mydomain.com', name: 'Japanses' }, diff --git a/playground/package.json b/playground/package.json index 738cc6b4c..39700a68d 100644 --- a/playground/package.json +++ b/playground/package.json @@ -10,6 +10,7 @@ }, "devDependencies": { "@nuxtjs/i18n": "latest", + "@nuxt/devtools": "npm:@nuxt/devtools-edge@latest", "nuxt": "latest" } } diff --git a/playground/pages/index.vue b/playground/pages/index.vue index c9d4fb63a..a93042e07 100644 --- a/playground/pages/index.vue +++ b/playground/pages/index.vue @@ -71,6 +71,7 @@ definePageMeta({

{{ $t('settings.profile') }}

+

{{ $t('tag') }}

diff --git a/playground/server/api/[locale].ts b/playground/server/api/[locale].ts new file mode 100644 index 000000000..6ed957935 --- /dev/null +++ b/playground/server/api/[locale].ts @@ -0,0 +1,35 @@ +import type { LocaleMessages, DefineLocaleMessage } from 'vue-i18n' + +/** + * NOTE: + * locale resources is managed on backend examples + */ + +const locales: LocaleMessages = { + 'en-GB': { + settings: { + profile: 'Profile' + } + }, + ja: { + layouts: { + title: 'ページ ー {title}' + }, + pages: { + title: { + top: 'トップ', + about: 'このサイトについて' + } + }, + welcome: 'ようこそ', + hello: 'こんにちは {name} !' + } +} + +export default defineEventHandler(event => { + const locale = event.context.params?.locale + if (locale == null) { + return {} + } + return locales[locale] || {} +}) diff --git a/playground/tsconfig.json b/playground/tsconfig.json index bba8d6e38..a746f2a70 100644 --- a/playground/tsconfig.json +++ b/playground/tsconfig.json @@ -1,4 +1,4 @@ { - // https://nuxt.com/docs/guide/concepts/typescript - "extends": "./.nuxt/tsconfig.json" -} \ No newline at end of file + // https://nuxt.com/docs/guide/concepts/typescript + "extends": "./.nuxt/tsconfig.json" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb645f601..fa0ed05dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,104 +8,110 @@ importers: .: specifiers: - '@babel/parser': ^7.20.15 + '@babel/parser': ^7.21.3 '@babel/plugin-syntax-import-assertions': ^7.20.0 - '@babel/types': ^7.20.7 - '@intlify/bundle-utils': ^4.0.0 - '@intlify/shared': 9.3.0-beta.16 - '@intlify/unplugin-vue-i18n': ^0.8.1 + '@babel/types': ^7.21.3 + '@intlify/bundle-utils': ^5.4.0 + '@intlify/shared': 9.3.0-beta.17 + '@intlify/unplugin-vue-i18n': ^0.10.0 + '@mizchi/sucrase': ^4.1.0 '@nuxt/kit': ^3.1.2 '@nuxt/module-builder': latest '@nuxt/schema': ^3.1.2 '@nuxt/test-utils': ^3.1.2 '@types/debug': ^4.1.7 - '@types/js-cookie': ^3.0.2 + '@types/js-cookie': ^3.0.3 '@types/rimraf': ^3 - '@typescript-eslint/eslint-plugin': ^5.50.0 - '@typescript-eslint/parser': ^5.50.0 + '@typescript-eslint/eslint-plugin': ^5.56.0 + '@typescript-eslint/parser': ^5.56.0 '@vue/compiler-sfc': ^3.2.47 bumpp: ^9.0.0 changelogithub: ^0.12.7 cookie-es: ^0.5.0 debug: ^4.3.4 - eslint: ^8.33.0 - eslint-config-prettier: ^8.6.0 + defu: ^6.1.2 + eslint: ^8.36.0 + eslint-config-prettier: ^8.8.0 eslint-plugin-prettier: ^4.2.1 estree-walker: ^3.0.1 gh-changelogen: ^0.2.8 is-https: ^4.0.0 - jiti: ^1.16.2 + jiti: ^1.18.2 js-cookie: ^3.0.1 - jsdom: ^21.1.0 + jsdom: ^21.1.1 knitwork: ^1.0.0 - lint-staged: ^13.1.0 + lint-staged: ^13.2.0 magic-string: ^0.27.0 - mlly: ^1.1.0 + mlly: ^1.2.0 npm-run-all: ^4.1.5 nuxt: ^3.1.0 pathe: ^1.1.0 - pkg-types: ^1.0.1 - playwright: ^1.30.0 - prettier: ^2.8.3 - rimraf: ^4.1.2 - ts-essentials: ^9.3.0 + pkg-types: ^1.0.2 + playwright: ^1.32.0 + prettier: ^2.8.6 + rimraf: ^4.4.1 + ts-essentials: ^9.3.1 typescript: ^4.9.5 - ufo: ^1.0.1 + ufo: ^1.1.0 unplugin: ^1.0.1 - vitest: ^0.26.2 + unstorage: ^1.4.1 + vitest: ^0.29.7 vue: ^3.2.47 - vue-i18n: 9.3.0-beta.16 + vue-i18n: 9.3.0-beta.17 vue-i18n-routing: ^0.12.2 yorkie: ^2.0.0 dependencies: - '@intlify/bundle-utils': 4.0.0_vue-i18n@9.3.0-beta.16 - '@intlify/shared': 9.3.0-beta.16 - '@intlify/unplugin-vue-i18n': 0.8.1_vue-i18n@9.3.0-beta.16 + '@intlify/bundle-utils': 5.4.0_vue-i18n@9.3.0-beta.17 + '@intlify/shared': 9.3.0-beta.17 + '@intlify/unplugin-vue-i18n': 0.10.0_vue-i18n@9.3.0-beta.17 + '@mizchi/sucrase': 4.1.0 '@nuxt/kit': 3.1.2 '@vue/compiler-sfc': 3.2.47 cookie-es: 0.5.0 debug: 4.3.4 + defu: 6.1.2 estree-walker: 3.0.1 is-https: 4.0.0 js-cookie: 3.0.1 knitwork: 1.0.0 magic-string: 0.27.0 - mlly: 1.1.0 + mlly: 1.2.0 pathe: 1.1.0 - pkg-types: 1.0.1 - ufo: 1.0.1 + pkg-types: 1.0.2 + ufo: 1.1.1 unplugin: 1.0.1 - vue-i18n: 9.3.0-beta.16_vue@3.2.47 - vue-i18n-routing: 0.12.2_nojl5tq4gemnzytwc7cf7ndqfm + unstorage: 1.4.1 + vue-i18n: 9.3.0-beta.17_vue@3.2.47 + vue-i18n-routing: 0.12.2_dwizjyv4hs6kri7l6h6rdn5dcm devDependencies: - '@babel/parser': 7.20.15 + '@babel/parser': 7.21.3 '@babel/plugin-syntax-import-assertions': 7.20.0 - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 '@nuxt/module-builder': 0.2.1 '@nuxt/schema': 3.1.2 '@nuxt/test-utils': 3.1.2_vue@3.2.47 '@types/debug': 4.1.7 - '@types/js-cookie': 3.0.2 + '@types/js-cookie': 3.0.3 '@types/rimraf': 3.0.2 - '@typescript-eslint/eslint-plugin': 5.50.0_go4drrxstycfikanvu45pi4vgq - '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/eslint-plugin': 5.56.0_iskin7c6dxqunwflhstekcjqmq + '@typescript-eslint/parser': 5.56.0_vgl77cfdswitgr47lm5swmv43m bumpp: 9.0.0 changelogithub: 0.12.7 - eslint: 8.33.0 - eslint-config-prettier: 8.6.0_eslint@8.33.0 - eslint-plugin-prettier: 4.2.1_jqplj6qf3uqpxpu4gdyhwwasnq + eslint: 8.36.0 + eslint-config-prettier: 8.8.0_eslint@8.36.0 + eslint-plugin-prettier: 4.2.1_ose2zoovovx4ulolhifz3tfzx4 gh-changelogen: 0.2.8 - jiti: 1.16.2 - jsdom: 21.1.0 - lint-staged: 13.1.0 + jiti: 1.18.2 + jsdom: 21.1.1 + lint-staged: 13.2.0 npm-run-all: 4.1.5 - nuxt: 3.1.2_zy2iiwafl5ugncweetwigsts4i - playwright: 1.30.0 - prettier: 2.8.3 - rimraf: 4.1.2 - ts-essentials: 9.3.0_typescript@4.9.5 + nuxt: 3.1.2_zwskxr4vkm5ve3umpbxr4wh7ku + playwright: 1.32.0 + prettier: 2.8.6 + rimraf: 4.4.1 + ts-essentials: 9.3.1_typescript@4.9.5 typescript: 4.9.5 - vitest: 0.26.2_jsdom@21.1.0 + vitest: 0.29.7_jsdom@21.1.1 vue: 3.2.47 yorkie: 2.0.0 @@ -119,9 +125,11 @@ importers: playground: specifiers: + '@nuxt/devtools': npm:@nuxt/devtools-edge@latest '@nuxtjs/i18n': link:.. nuxt: ^3.1.0 devDependencies: + '@nuxt/devtools': /@nuxt/devtools-edge/0.2.5-27991385.f13be91_nuxt@3.1.2 '@nuxtjs/i18n': link:.. nuxt: 3.1.2 @@ -449,9 +457,9 @@ packages: dev: true optional: true - /@azure/keyvault-secrets/4.6.0: - resolution: {integrity: sha512-MDqsyODCGC2srqLKmO6MFw9WdgLrbPsfCNxgbekHXEd6XKM6KKyBlup5joj96EmdfZnXDFriecAIpj0Dtu81RQ==} - engines: {node: '>=12.0.0'} + /@azure/keyvault-secrets/4.7.0: + resolution: {integrity: sha512-YvlFXRQ+SI5NT4GtSFbb6HGo6prW3yzDab8tr6vga2/SjDQew3wJsCAAr/xwZz6XshFXCYEX26CDKmPf+SJKJg==} + engines: {node: '>=14.0.0'} requiresBuild: true dependencies: '@azure/abort-controller': 1.1.0 @@ -546,10 +554,10 @@ packages: '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-module-transforms': 7.20.11 '@babel/helpers': 7.20.13 - '@babel/parser': 7.20.15 + '@babel/parser': 7.21.3 '@babel/template': 7.20.7 '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -558,19 +566,52 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core/7.21.3: + resolution: {integrity: sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.21.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.3 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/generator/7.20.7: resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 + /@babel/generator/7.21.3: + resolution: {integrity: sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.3 + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 dev: true /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: @@ -586,6 +627,20 @@ packages: lru-cache: 5.1.1 semver: 6.3.0 + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.21.3: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.20.10 + '@babel/core': 7.21.3 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 + lru-cache: 5.1.1 + semver: 6.3.0 + dev: true + /@babel/helper-create-class-features-plugin/7.20.2_@babel+core@7.20.12: resolution: {integrity: sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==} engines: {node: '>=6.9.0'} @@ -604,6 +659,25 @@ packages: - supports-color dev: true + /@babel/helper-create-class-features-plugin/7.21.0_@babel+core@7.21.3: + resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-environment-visitor/7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} @@ -613,26 +687,41 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 + + /@babel/helper-function-name/7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.3 + dev: true /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 /@babel/helper-member-expression-to-functions/7.18.9: resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 + dev: true + + /@babel/helper-member-expression-to-functions/7.21.0: + resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.3 dev: true /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 /@babel/helper-module-transforms/7.20.11: resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} @@ -645,15 +734,31 @@ packages: '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 + transitivePeerDependencies: + - supports-color + + /@babel/helper-module-transforms/7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-simple-access': 7.20.2 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-optimise-call-expression/7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 dev: true /@babel/helper-plugin-utils/7.20.2: @@ -669,7 +774,21 @@ packages: '@babel/helper-member-expression-to-functions': 7.18.9 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-replace-supers/7.20.7: + resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-member-expression-to-functions': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color dev: true @@ -678,13 +797,20 @@ packages: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 + + /@babel/helper-skip-transparent-expression-wrappers/7.20.0: + resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.3 + dev: true /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 /@babel/helper-string-parser/7.19.4: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} @@ -704,9 +830,20 @@ packages: dependencies: '@babel/template': 7.20.7 '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 + transitivePeerDependencies: + - supports-color + + /@babel/helpers/7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color + dev: true /@babel/highlight/7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} @@ -722,6 +859,14 @@ packages: hasBin: true dependencies: '@babel/types': 7.20.7 + dev: true + + /@babel/parser/7.21.3: + resolution: {integrity: sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.3 /@babel/plugin-syntax-import-assertions/7.20.0: resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} @@ -732,6 +877,15 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.21.3: + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} @@ -742,6 +896,16 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.12: resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} @@ -752,6 +916,16 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.21.3: + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + /@babel/plugin-transform-typescript/7.20.2_@babel+core@7.20.12: resolution: {integrity: sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==} engines: {node: '>=6.9.0'} @@ -766,6 +940,21 @@ packages: - supports-color dev: true + /@babel/plugin-transform-typescript/7.21.3_@babel+core@7.21.3: + resolution: {integrity: sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.21.3 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/standalone/7.20.13: resolution: {integrity: sha512-L13qadxX3yB4mU92iSiWKePm3hYfGaAXPMqGEPUDNzzsmNh0+1M7agMBF62UHM29kFWOWowGfRRDvfAU8uLovg==} engines: {node: '>=6.9.0'} @@ -775,8 +964,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 /@babel/traverse/7.20.13: resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} @@ -788,12 +977,30 @@ packages: '@babel/helper-function-name': 7.19.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/traverse/7.21.3: + resolution: {integrity: sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.21.3 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true /@babel/types/7.20.7: resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} @@ -802,6 +1009,15 @@ packages: '@babel/helper-string-parser': 7.19.4 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 + dev: true + + /@babel/types/7.21.3: + resolution: {integrity: sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 /@cloudflare/kv-asset-handler/0.3.0: resolution: {integrity: sha512-9CB/MKf/wdvbfkUdfrj+OkEwZ5b7rws0eogJ4293h+7b6KX5toPwym+VQKmILafNB9YiehqY0DlNrDcDhdWHSQ==} @@ -834,8 +1050,29 @@ packages: engines: {node: ^14 || ^16 || >=18} dev: true - /@esbuild/android-arm/0.15.18: - resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + /@esbuild-kit/cjs-loader/2.4.2: + resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} + dependencies: + '@esbuild-kit/core-utils': 3.1.0 + get-tsconfig: 4.4.0 + dev: true + + /@esbuild-kit/core-utils/3.1.0: + resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} + dependencies: + esbuild: 0.17.12 + source-map-support: 0.5.21 + dev: true + + /@esbuild-kit/esm-loader/2.5.5: + resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} + dependencies: + '@esbuild-kit/core-utils': 3.1.0 + get-tsconfig: 4.4.0 + dev: true + + /@esbuild/android-arm/0.16.17: + resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -843,8 +1080,8 @@ packages: dev: true optional: true - /@esbuild/android-arm/0.16.17: - resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + /@esbuild/android-arm/0.17.10: + resolution: {integrity: sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -852,8 +1089,8 @@ packages: dev: true optional: true - /@esbuild/android-arm/0.17.10: - resolution: {integrity: sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==} + /@esbuild/android-arm/0.17.12: + resolution: {integrity: sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -879,6 +1116,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64/0.17.12: + resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64/0.16.17: resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} engines: {node: '>=12'} @@ -897,6 +1143,15 @@ packages: dev: true optional: true + /@esbuild/android-x64/0.17.12: + resolution: {integrity: sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64/0.16.17: resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} engines: {node: '>=12'} @@ -915,6 +1170,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64/0.17.12: + resolution: {integrity: sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64/0.16.17: resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} engines: {node: '>=12'} @@ -933,6 +1197,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64/0.17.12: + resolution: {integrity: sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64/0.16.17: resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} engines: {node: '>=12'} @@ -951,6 +1224,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64/0.17.12: + resolution: {integrity: sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64/0.16.17: resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} engines: {node: '>=12'} @@ -969,6 +1251,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64/0.17.12: + resolution: {integrity: sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm/0.16.17: resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} engines: {node: '>=12'} @@ -987,6 +1278,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm/0.17.12: + resolution: {integrity: sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64/0.16.17: resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} engines: {node: '>=12'} @@ -1005,6 +1305,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64/0.17.12: + resolution: {integrity: sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32/0.16.17: resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} engines: {node: '>=12'} @@ -1023,10 +1332,10 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.15.18: - resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + /@esbuild/linux-ia32/0.17.12: + resolution: {integrity: sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==} engines: {node: '>=12'} - cpu: [loong64] + cpu: [ia32] os: [linux] requiresBuild: true dev: true @@ -1050,6 +1359,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64/0.17.12: + resolution: {integrity: sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el/0.16.17: resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} engines: {node: '>=12'} @@ -1068,6 +1386,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el/0.17.12: + resolution: {integrity: sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64/0.16.17: resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} engines: {node: '>=12'} @@ -1086,6 +1413,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64/0.17.12: + resolution: {integrity: sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64/0.16.17: resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} engines: {node: '>=12'} @@ -1104,6 +1440,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64/0.17.12: + resolution: {integrity: sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x/0.16.17: resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} engines: {node: '>=12'} @@ -1122,6 +1467,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x/0.17.12: + resolution: {integrity: sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64/0.16.17: resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} engines: {node: '>=12'} @@ -1140,6 +1494,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64/0.17.12: + resolution: {integrity: sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64/0.16.17: resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} engines: {node: '>=12'} @@ -1158,6 +1521,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64/0.17.12: + resolution: {integrity: sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64/0.16.17: resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} engines: {node: '>=12'} @@ -1176,6 +1548,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64/0.17.12: + resolution: {integrity: sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64/0.16.17: resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} engines: {node: '>=12'} @@ -1194,6 +1575,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64/0.17.12: + resolution: {integrity: sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64/0.16.17: resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} engines: {node: '>=12'} @@ -1212,6 +1602,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64/0.17.12: + resolution: {integrity: sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32/0.16.17: resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} engines: {node: '>=12'} @@ -1230,6 +1629,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32/0.17.12: + resolution: {integrity: sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64/0.16.17: resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} engines: {node: '>=12'} @@ -1248,13 +1656,37 @@ packages: dev: true optional: true - /@eslint/eslintrc/1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + /@esbuild/win32-x64/0.17.12: + resolution: {integrity: sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils/4.3.0_eslint@8.36.0: + resolution: {integrity: sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.36.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /@eslint-community/regexpp/4.4.0: + resolution: {integrity: sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc/2.0.1: + resolution: {integrity: sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.4.1 + espree: 9.5.0 globals: 13.19.0 ignore: 5.2.4 import-fresh: 3.3.0 @@ -1265,6 +1697,15 @@ packages: - supports-color dev: true + /@eslint/js/8.36.0: + resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@gar/promisify/1.1.3: + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + dev: true + /@humanwhocodes/config-array/0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} @@ -1297,28 +1738,8 @@ packages: '@iconify/types': 2.0.0 dev: true - /@intlify/bundle-utils/3.4.0_vue-i18n@9.3.0-beta.16: - resolution: {integrity: sha512-2UQkqiSAOSPEHMGWlybqWm4G2K0X+FyYho5AwXz6QklSX1EY5EDmOSxZmwscn2qmKBnp6OYsme5kUrnN9xrWzQ==} - engines: {node: '>= 12'} - peerDependencies: - petite-vue-i18n: '*' - vue-i18n: '*' - peerDependenciesMeta: - petite-vue-i18n: - optional: true - vue-i18n: - optional: true - dependencies: - '@intlify/message-compiler': 9.3.0-beta.16 - '@intlify/shared': 9.3.0-beta.16 - jsonc-eslint-parser: 1.4.1 - source-map: 0.6.1 - vue-i18n: 9.3.0-beta.16_vue@3.2.47 - yaml-eslint-parser: 0.3.2 - dev: false - - /@intlify/bundle-utils/4.0.0_vue-i18n@9.3.0-beta.16: - resolution: {integrity: sha512-klXrYT9VXyKEXsD6UY3pShg0O5MPC07n0TZ5RrSs5ry6T1eZVolIFGJi9c3qcDrh1qjJxgikRnPBmD7qGDqbjw==} + /@intlify/bundle-utils/5.4.0_vue-i18n@9.3.0-beta.17: + resolution: {integrity: sha512-oJbibbP5djdQYTv0cQC4PYRHPpS5nF/KZ7MWM1/yhdsGzjvCekJHWk25MCQIIOrfQ+aw5tKi2t66KpYEUki/tw==} engines: {node: '>= 12'} peerDependencies: petite-vue-i18n: '*' @@ -1329,46 +1750,50 @@ packages: vue-i18n: optional: true dependencies: - '@intlify/message-compiler': 9.3.0-beta.16 - '@intlify/shared': 9.3.0-beta.16 + '@intlify/message-compiler': 9.3.0-beta.17 + '@intlify/shared': 9.3.0-beta.17 + acorn: 8.8.2 + escodegen: 2.0.0 + estree-walker: 2.0.2 jsonc-eslint-parser: 1.4.1 + magic-string: 0.30.0 source-map: 0.6.1 - vue-i18n: 9.3.0-beta.16_vue@3.2.47 + vue-i18n: 9.3.0-beta.17_vue@3.2.47 yaml-eslint-parser: 0.3.2 dev: false - /@intlify/core-base/9.3.0-beta.16: - resolution: {integrity: sha512-BoAxVoPIJoPKCCMdsuNXKaaJxvetvHrW2KA43IpkwgPd2/w6zPebh/+v8e4zpXKjFVSgcF97zP87KeVcM/Lxwg==} + /@intlify/core-base/9.3.0-beta.17: + resolution: {integrity: sha512-M/ZUU53G68YKN59E2gd/bOZB4TvFMWXvpWIgwsLJeAjktKYOt7JDSGdGHYGivKAG12pTGWeIeY6WmJCaDenloA==} engines: {node: '>= 14'} dependencies: - '@intlify/devtools-if': 9.3.0-beta.16 - '@intlify/message-compiler': 9.3.0-beta.16 - '@intlify/shared': 9.3.0-beta.16 - '@intlify/vue-devtools': 9.3.0-beta.16 + '@intlify/devtools-if': 9.3.0-beta.17 + '@intlify/message-compiler': 9.3.0-beta.17 + '@intlify/shared': 9.3.0-beta.17 + '@intlify/vue-devtools': 9.3.0-beta.17 dev: false - /@intlify/devtools-if/9.3.0-beta.16: - resolution: {integrity: sha512-9WXn8YMAnL/DHdoWqCy6yLTXcLFxd8eXB9UNsViQA5JJV7neR+yahr+23X1wP0prhG338MruxAu65khRf+AJCw==} + /@intlify/devtools-if/9.3.0-beta.17: + resolution: {integrity: sha512-up5vm1ytN9Wm/loKjFlp5TuDy7dmBVgU3UOk1vLUXUfYH+EMlm07pUXNiIpSjdt4Eak+bSLfsWcqPwhsb2jknw==} engines: {node: '>= 14'} dependencies: - '@intlify/shared': 9.3.0-beta.16 + '@intlify/shared': 9.3.0-beta.17 dev: false - /@intlify/message-compiler/9.3.0-beta.16: - resolution: {integrity: sha512-CGQI3xRcs1ET75eDQ0DUy3MRYOqTauRIIgaMoISKiF83gqRWg93FqN8lGMKcpBqaF4tI0JhsfosCaGiBL9+dnw==} + /@intlify/message-compiler/9.3.0-beta.17: + resolution: {integrity: sha512-i7hvVIRk1Ax2uKa9xLRJCT57to08OhFMhFXXjWN07rmx5pWQYQ23MfX1xgggv9drnWTNhqEiD+u4EJeHoS5+Ww==} engines: {node: '>= 14'} dependencies: - '@intlify/shared': 9.3.0-beta.16 + '@intlify/shared': 9.3.0-beta.17 source-map: 0.6.1 dev: false - /@intlify/shared/9.3.0-beta.16: - resolution: {integrity: sha512-kXbm4svALe3lX+EjdJxfnabOphqS4yQ1Ge/iIlR8tvUiYRCoNz3hig1M4336iY++Dfx5ytEQJPNjIcknNIuvig==} + /@intlify/shared/9.3.0-beta.17: + resolution: {integrity: sha512-mscf7RQsUTOil35jTij4KGW1RC9SWQjYScwLxP53Ns6g24iEd5HN7ksbt9O6FvTmlQuX77u+MXpBdfJsGqizLQ==} engines: {node: '>= 14'} dev: false - /@intlify/unplugin-vue-i18n/0.8.1_vue-i18n@9.3.0-beta.16: - resolution: {integrity: sha512-BhigujPmP6JL1FSxmpogCaL+REozncHCVkJuUnefz4GWBu3X+pRe5O7PeJn8/g+Iml2ieQJz4ISPMmEbuGQjqQ==} + /@intlify/unplugin-vue-i18n/0.10.0_vue-i18n@9.3.0-beta.17: + resolution: {integrity: sha512-Sf8fe26/d8rBNcg+zBSb7RA1uyhrG9zhIM+CRX6lqcznMDjLRr/1tuVaJ9E6xqJkzjfPgRzNcCqwMt6rpNkL7Q==} engines: {node: '>= 14.16'} peerDependencies: petite-vue-i18n: '*' @@ -1382,32 +1807,33 @@ packages: vue-i18n-bridge: optional: true dependencies: - '@intlify/bundle-utils': 3.4.0_vue-i18n@9.3.0-beta.16 - '@intlify/shared': 9.3.0-beta.16 - '@rollup/pluginutils': 4.2.1 + '@intlify/bundle-utils': 5.4.0_vue-i18n@9.3.0-beta.17 + '@intlify/shared': 9.3.0-beta.17 + '@rollup/pluginutils': 5.0.2 '@vue/compiler-sfc': 3.2.47 debug: 4.3.4 fast-glob: 3.2.12 js-yaml: 4.1.0 - json5: 2.2.1 + json5: 2.2.3 pathe: 1.1.0 picocolors: 1.0.0 source-map: 0.6.1 - unplugin: 1.0.1 - vue-i18n: 9.3.0-beta.16_vue@3.2.47 + unplugin: 1.3.1 + vue-i18n: 9.3.0-beta.17_vue@3.2.47 transitivePeerDependencies: + - rollup - supports-color dev: false - /@intlify/vue-devtools/9.3.0-beta.16: - resolution: {integrity: sha512-rQ/jSW0gBciYLBBi+XN65r80B59Ypege9oqUi+EZ2QpOaK54wDcy1xq9w6Zbj6WpY1qgf34KtYawKIF10mMr6w==} + /@intlify/vue-devtools/9.3.0-beta.17: + resolution: {integrity: sha512-Wzl+3kZONjYG3lL8I8G+4H46s7m3CkxyoZXjZgC0zMy51cq1OTlOuOohcgxpwcSSYYVj9Y86PvlSakPNqHEweA==} engines: {node: '>= 14'} dependencies: - '@intlify/core-base': 9.3.0-beta.16 - '@intlify/shared': 9.3.0-beta.16 + '@intlify/core-base': 9.3.0-beta.17 + '@intlify/shared': 9.3.0-beta.17 dev: false - /@intlify/vue-i18n-bridge/0.8.0_vue-i18n@9.3.0-beta.16: + /@intlify/vue-i18n-bridge/0.8.0_vue-i18n@9.3.0-beta.17: resolution: {integrity: sha512-wQ18fSccm9QaWpUW2vq2QHvojgKIog7s+UMj9LeY3pUV3yD9bU4YZI+1PTNoX3tOA+BE71gQyqVGox/TVQKP6Q==} engines: {node: '>= 12'} hasBin: true @@ -1424,7 +1850,7 @@ packages: vue-i18n-bridge: optional: true dependencies: - vue-i18n: 9.3.0-beta.16_vue@3.2.47 + vue-i18n: 9.3.0-beta.17_vue@3.2.47 dev: false /@intlify/vue-router-bridge/0.8.0_vue@3.2.47: @@ -1448,7 +1874,6 @@ packages: /@ioredis/commands/1.2.0: resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - dev: true /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} @@ -1517,6 +1942,13 @@ packages: - supports-color dev: true + /@mizchi/sucrase/4.1.0: + resolution: {integrity: sha512-AaN8HSGdXmNqEqIb0IQPIQL+MI/8Xr1QTOcVnA6k0u2afqfYhlre05hSxRybOFpq34oF8EqMTrYovYZxEV1FLw==} + engines: {node: '>=14'} + dependencies: + lines-and-columns: 1.2.4 + dev: false + /@netlify/functions/1.4.0: resolution: {integrity: sha512-gy7ULTIRroc2/jyFVGx1djCmmBMVisIwrvkqggq5B6iDcInRSy2Tpkm+V5C63hKJVkNRskKWtLQKm9ecCaQTjA==} engines: {node: '>=8.3.0'} @@ -1542,6 +1974,82 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 + /@npmcli/fs/2.1.2: + resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.3.8 + dev: true + + /@npmcli/fs/3.1.0: + resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.3.8 + dev: true + + /@npmcli/git/4.0.3: + resolution: {integrity: sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@npmcli/promise-spawn': 6.0.2 + lru-cache: 7.18.3 + mkdirp: 1.0.4 + npm-pick-manifest: 8.0.1 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.3.8 + which: 3.0.0 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/installed-package-contents/2.0.2: + resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + npm-bundled: 3.0.0 + npm-normalize-package-bin: 3.0.0 + dev: true + + /@npmcli/move-file/2.0.1: + resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This functionality has been moved to @npmcli/fs + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + dev: true + + /@npmcli/node-gyp/3.0.0: + resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@npmcli/promise-spawn/6.0.2: + resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + which: 3.0.0 + dev: true + + /@npmcli/run-script/6.0.0: + resolution: {integrity: sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@npmcli/node-gyp': 3.0.0 + '@npmcli/promise-spawn': 6.0.2 + node-gyp: 9.3.1 + read-package-json-fast: 3.0.2 + which: 3.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + /@nuxt-themes/docus/1.9.9_nuxt@3.1.2: resolution: {integrity: sha512-JIrG8dlJOUCu4HQ4IlYr04xryFs7ePKzAvA4cb0VPKP4+ukNEuJwGV3JPFprV3uac9jtPr/HawuoLm/TV5rgtw==} dependencies: @@ -1659,6 +2167,54 @@ packages: resolution: {integrity: sha512-YBI/6o2EBz02tdEJRBK8xkt3zvOFOWlLBf7WKYGBsSYSRtjjgrqPe2skp6VLLmKx5WbHHDNcW+6oACaurxGzeA==} dev: true + /@nuxt/devtools-edge/0.2.5-27991385.f13be91_nuxt@3.1.2: + resolution: {integrity: sha512-+BJYCiKq8EK0oF4PoRzpudQQd6UkNyKnIcvLXKmU2Wf4HntAQrfkeoR3DwAGnQu8acwk/UX9K0YwoatvbH7irw==} + hasBin: true + peerDependencies: + nuxt: ^3.3.1 + vite: '*' + dependencies: + '@nuxt/devtools-kit': /@nuxt/devtools-kit-edge/0.2.5-27991385.f13be91_nuxt@3.1.2 + '@nuxt/kit': 3.3.1 + birpc: 0.2.10 + consola: 2.15.3 + execa: 7.1.1 + fast-glob: 3.2.12 + h3: 1.6.2 + hookable: 5.5.1 + image-meta: 0.1.1 + is-installed-globally: 0.4.0 + launch-editor: 2.6.0 + local-pkg: 0.4.3 + nuxt: 3.1.2 + pacote: 15.1.1 + pathe: 1.1.0 + pkg-types: 1.0.2 + rc9: 2.0.1 + unimport: 3.0.3 + vite-plugin-inspect: 0.7.18 + vite-plugin-vue-inspector: 3.4.0 + transitivePeerDependencies: + - bluebird + - rollup + - supports-color + dev: true + + /@nuxt/devtools-kit-edge/0.2.5-27991385.f13be91_nuxt@3.1.2: + resolution: {integrity: sha512-vkvi226v1um9ZpNGWjNJ55PP3le6TPZbsdIZvpTQaT57ua0RbNqoUPxKj0MhObtPJAud6F1SVo6s4JVMNjVemg==} + peerDependencies: + nuxt: ^3.3.1 + vite: '*' + dependencies: + '@nuxt/kit': 3.3.1 + '@nuxt/schema': 3.3.1 + execa: 7.1.1 + nuxt: 3.1.2 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + /@nuxt/kit/3.1.2: resolution: {integrity: sha512-m8/AF8hBJiG7aTx2CpiDGeLYYz30fUoPbJ9XiSmHqRIXv1goAFWHSkzWfRNEsoAAbMHf76oB917wVUQ3VSSQHg==} engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} @@ -1670,12 +2226,12 @@ packages: globby: 13.1.3 hash-sum: 2.0.0 ignore: 5.2.4 - jiti: 1.16.2 + jiti: 1.18.2 knitwork: 1.0.0 lodash.template: 4.5.0 - mlly: 1.1.0 + mlly: 1.2.0 pathe: 1.1.0 - pkg-types: 1.0.1 + pkg-types: 1.0.2 scule: 1.0.0 semver: 7.3.8 unctx: 2.1.1 @@ -1696,12 +2252,12 @@ packages: globby: 13.1.3 hash-sum: 2.0.0 ignore: 5.2.4 - jiti: 1.16.2 + jiti: 1.18.2 knitwork: 1.0.0 lodash.template: 4.5.0 - mlly: 1.1.0 + mlly: 1.2.0 pathe: 1.1.0 - pkg-types: 1.0.1 + pkg-types: 1.0.2 scule: 1.0.0 semver: 7.3.8 unctx: 2.1.1 @@ -1723,10 +2279,10 @@ packages: globby: 13.1.3 hash-sum: 2.0.0 ignore: 5.2.4 - jiti: 1.17.1 + jiti: 1.18.2 knitwork: 1.0.0 lodash.template: 4.5.0 - mlly: 1.1.1 + mlly: 1.2.0 pathe: 1.1.0 pkg-types: 1.0.2 scule: 1.0.0 @@ -1739,12 +2295,39 @@ packages: - supports-color dev: true + /@nuxt/kit/3.3.1: + resolution: {integrity: sha512-zb7/2FUIB1g7nl6K6qozUzfG5uu4yrs9TQjZvpASnPBZ/x1EuJX5k3AA71hMMIVBEX9Adxvh9AuhDEHE5W26Zg==} + engines: {node: ^14.18.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} + dependencies: + '@nuxt/schema': 3.3.1 + c12: 1.2.0 + consola: 2.15.3 + defu: 6.1.2 + globby: 13.1.3 + hash-sum: 2.0.0 + ignore: 5.2.4 + jiti: 1.18.2 + knitwork: 1.0.0 + lodash.template: 4.5.0 + mlly: 1.2.0 + pathe: 1.1.0 + pkg-types: 1.0.2 + scule: 1.0.0 + semver: 7.3.8 + unctx: 2.1.2 + unimport: 3.0.3 + untyped: 1.2.2 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + /@nuxt/module-builder/0.2.1: resolution: {integrity: sha512-Om8q08CO2joxiv9piTL+jcFUAL7nOZrrq9DedbA0PoRww1It1UnRs3Mijp0MfkFNyGHwWbSbmvbo3EhWmGdWUg==} hasBin: true dependencies: consola: 2.15.3 - mlly: 1.1.1 + mlly: 1.2.0 mri: 1.2.0 pathe: 1.1.0 unbuild: 1.1.2 @@ -1761,13 +2344,13 @@ packages: create-require: 1.1.1 defu: 6.1.2 hookable: 5.4.2 - jiti: 1.16.2 + jiti: 1.18.2 pathe: 1.1.0 - pkg-types: 1.0.1 + pkg-types: 1.0.2 postcss-import-resolver: 2.0.0 scule: 1.0.0 std-env: 3.3.2 - ufo: 1.0.1 + ufo: 1.1.1 unimport: 2.1.0 untyped: 1.2.2 transitivePeerDependencies: @@ -1782,13 +2365,13 @@ packages: create-require: 1.1.1 defu: 6.1.2 hookable: 5.4.2 - jiti: 1.16.2 + jiti: 1.18.2 pathe: 1.1.0 - pkg-types: 1.0.1 + pkg-types: 1.0.2 postcss-import-resolver: 2.0.0 scule: 1.0.0 std-env: 3.3.2 - ufo: 1.0.1 + ufo: 1.1.1 unimport: 2.1.0_rollup@3.18.0 untyped: 1.2.2 transitivePeerDependencies: @@ -1804,7 +2387,7 @@ packages: create-require: 1.1.1 defu: 6.1.2 hookable: 5.4.2 - jiti: 1.17.1 + jiti: 1.18.2 pathe: 1.1.0 pkg-types: 1.0.2 postcss-import-resolver: 2.0.0 @@ -1818,6 +2401,28 @@ packages: - supports-color dev: true + /@nuxt/schema/3.3.1: + resolution: {integrity: sha512-E8HWzU43rXzqwDTmWduTLHY4xIwRSAUt1LbpuE9IjZ4uJZq5Mbaj4nfhANNsTQGw2c+O+rL81yzAP3i61LEJDw==} + engines: {node: ^14.18.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} + dependencies: + c12: 1.2.0 + create-require: 1.1.1 + defu: 6.1.2 + hookable: 5.5.1 + jiti: 1.18.2 + pathe: 1.1.0 + pkg-types: 1.0.2 + postcss-import-resolver: 2.0.0 + scule: 1.0.0 + std-env: 3.3.2 + ufo: 1.1.1 + unimport: 3.0.3 + untyped: 1.2.2 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + /@nuxt/telemetry/2.1.9: resolution: {integrity: sha512-mUyDqmB8GUJwTHVnwxuapeUHDSsUycOt+ZsA7GB6F8MOBJiVhQl/EeEAWoO2TUs0BPp2SlY9uO6eQihvxyLRqQ==} hasBin: true @@ -1834,7 +2439,7 @@ packages: git-url-parse: 13.1.0 inquirer: 9.1.4 is-docker: 3.0.0 - jiti: 1.17.1 + jiti: 1.18.2 mri: 1.2.0 nanoid: 4.0.1 node-fetch: 3.3.0 @@ -1859,7 +2464,7 @@ packages: defu: 6.1.2 execa: 6.1.0 get-port-please: 3.0.1 - jiti: 1.16.2 + jiti: 1.18.2 ofetch: 1.0.0 pathe: 1.1.0 vue: 3.2.47 @@ -1872,7 +2477,7 @@ packages: resolution: {integrity: sha512-PjVETP7+iZXAs5Q8O4ivl4t6qjWZMZqwiTVogUXHoHGZZcw7GZW3u3tzfYfE1HbzyYJfr236IXqQ02MeR8Fz2w==} dev: true - /@nuxt/vite-builder/3.1.2_pyztoqq6jfcic4vzn3afnhhxoi: + /@nuxt/vite-builder/3.1.2_dvv2j667zjrmsuy6szq6yl3izm: resolution: {integrity: sha512-xKH71LG2xKAmCNlu1rqeL9YmGpJCr4NKg9py3yqmMN+CdivIU4kJ+O5gU0DxX9vo7ZSl7d72v+kyQa3KEM2Gyg==} engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} peerDependencies: @@ -1895,7 +2500,7 @@ packages: h3: 1.5.0 knitwork: 1.0.0 magic-string: 0.27.0 - mlly: 1.1.1 + mlly: 1.2.0 ohash: 1.0.0 pathe: 1.1.0 perfect-debounce: 0.1.3 @@ -1909,7 +2514,7 @@ packages: unplugin: 1.1.0 vite: 4.1.1 vite-node: 0.28.4 - vite-plugin-checker: 0.5.5_tdliyewd6avdihdzfzo6sjhney + vite-plugin-checker: 0.5.5_urlne5o5dtrrgo4gholvvfzeui vue: 3.2.47 vue-bundle-renderer: 1.0.0 transitivePeerDependencies: @@ -2028,6 +2633,10 @@ packages: dev: true optional: true + /@polka/url/1.0.0-next.21: + resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} + dev: true + /@rollup/plugin-alias/4.0.3_rollup@3.18.0: resolution: {integrity: sha512-ZuDWE1q4PQDhvm/zc5Prun8sBpLJy41DMptYrS6MhAy9s9kL/doN1613BWfEchGVfKxzliJ3BjbOPizXX38DbQ==} engines: {node: '>=14.0.0'} @@ -2041,6 +2650,19 @@ packages: slash: 4.0.0 dev: true + /@rollup/plugin-alias/4.0.3_rollup@3.20.0: + resolution: {integrity: sha512-ZuDWE1q4PQDhvm/zc5Prun8sBpLJy41DMptYrS6MhAy9s9kL/doN1613BWfEchGVfKxzliJ3BjbOPizXX38DbQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + rollup: 3.20.0 + slash: 4.0.0 + dev: true + /@rollup/plugin-commonjs/24.0.1_rollup@3.18.0: resolution: {integrity: sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==} engines: {node: '>=14.0.0'} @@ -2059,6 +2681,24 @@ packages: rollup: 3.18.0 dev: true + /@rollup/plugin-commonjs/24.0.1_rollup@3.20.0: + resolution: {integrity: sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2_rollup@3.20.0 + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.27.0 + rollup: 3.20.0 + dev: true + /@rollup/plugin-inject/5.0.3_rollup@3.18.0: resolution: {integrity: sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA==} engines: {node: '>=14.0.0'} @@ -2087,6 +2727,19 @@ packages: rollup: 3.18.0 dev: true + /@rollup/plugin-json/6.0.0_rollup@3.20.0: + resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2_rollup@3.20.0 + rollup: 3.20.0 + dev: true + /@rollup/plugin-node-resolve/15.0.1_rollup@3.18.0: resolution: {integrity: sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==} engines: {node: '>=14.0.0'} @@ -2105,6 +2758,24 @@ packages: rollup: 3.18.0 dev: true + /@rollup/plugin-node-resolve/15.0.1_rollup@3.20.0: + resolution: {integrity: sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2_rollup@3.20.0 + '@types/resolve': 1.20.2 + deepmerge: 4.2.2 + is-builtin-module: 3.2.0 + is-module: 1.0.0 + resolve: 1.22.1 + rollup: 3.20.0 + dev: true + /@rollup/plugin-replace/5.0.2_rollup@3.18.0: resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} @@ -2119,6 +2790,20 @@ packages: rollup: 3.18.0 dev: true + /@rollup/plugin-replace/5.0.2_rollup@3.20.0: + resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2_rollup@3.20.0 + magic-string: 0.27.0 + rollup: 3.20.0 + dev: true + /@rollup/plugin-terser/0.4.0_rollup@3.18.0: resolution: {integrity: sha512-Ipcf3LPNerey1q9ZMjiaWHlNPEHNU/B5/uh9zXLltfEQ1lVSLLeZSgAtTPWGyw8Ip1guOeq+mDtdOlEj/wNxQw==} engines: {node: '>=14.0.0'} @@ -2152,6 +2837,7 @@ packages: dependencies: estree-walker: 2.0.2 picomatch: 2.3.1 + dev: true /@rollup/pluginutils/5.0.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} @@ -2181,6 +2867,26 @@ packages: rollup: 3.18.0 dev: true + /@rollup/pluginutils/5.0.2_rollup@3.20.0: + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.0 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 3.20.0 + dev: true + + /@sigstore/protobuf-specs/0.1.0: + resolution: {integrity: sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + /@socket.io/component-emitter/3.1.0: resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} dev: true @@ -2195,6 +2901,13 @@ packages: engines: {node: '>=10.13.0'} dev: true + /@tufjs/models/1.0.0: + resolution: {integrity: sha512-RRMu4uMxWnZlxaIBxahSb2IssFZiu188sndesZflWOe1cA/qUqtemSIoBWbuVKPvvdktapImWNnKpBcc+VrCQw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minimatch: 6.2.0 + dev: true + /@types/chai-subset/1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: @@ -2227,8 +2940,8 @@ packages: '@types/unist': 2.0.6 dev: true - /@types/js-cookie/3.0.2: - resolution: {integrity: sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA==} + /@types/js-cookie/3.0.3: + resolution: {integrity: sha512-Xe7IImK09HP1sv2M/aI+48a20VX+TdRJucfq4vfRVy6nWN8PYPOEnlMRSgxJAgYQIXJVL8dZ4/ilAM7dWNaOww==} dev: true /@types/json-schema/7.0.11: @@ -2295,8 +3008,8 @@ packages: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} dev: true - /@typescript-eslint/eslint-plugin/5.50.0_go4drrxstycfikanvu45pi4vgq: - resolution: {integrity: sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==} + /@typescript-eslint/eslint-plugin/5.56.0_iskin7c6dxqunwflhstekcjqmq: + resolution: {integrity: sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -2306,16 +3019,16 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 - '@typescript-eslint/scope-manager': 5.50.0 - '@typescript-eslint/type-utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 - '@typescript-eslint/utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@eslint-community/regexpp': 4.4.0 + '@typescript-eslint/parser': 5.56.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/scope-manager': 5.56.0 + '@typescript-eslint/type-utils': 5.56.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/utils': 5.56.0_vgl77cfdswitgr47lm5swmv43m debug: 4.3.4 - eslint: 8.33.0 + eslint: 8.36.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - regexpp: 3.2.0 semver: 7.3.8 tsutils: 3.21.0_typescript@4.9.5 typescript: 4.9.5 @@ -2323,8 +3036,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.50.0_4vsywjlpuriuw3tl5oq6zy5a64: - resolution: {integrity: sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==} + /@typescript-eslint/parser/5.56.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2333,26 +3046,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.50.0 - '@typescript-eslint/types': 5.50.0 - '@typescript-eslint/typescript-estree': 5.50.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.56.0 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/typescript-estree': 5.56.0_typescript@4.9.5 debug: 4.3.4 - eslint: 8.33.0 + eslint: 8.36.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.50.0: - resolution: {integrity: sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==} + /@typescript-eslint/scope-manager/5.56.0: + resolution: {integrity: sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.50.0 - '@typescript-eslint/visitor-keys': 5.50.0 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/visitor-keys': 5.56.0 dev: true - /@typescript-eslint/type-utils/5.50.0_4vsywjlpuriuw3tl5oq6zy5a64: - resolution: {integrity: sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==} + /@typescript-eslint/type-utils/5.56.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -2361,23 +3074,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.50.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/typescript-estree': 5.56.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.56.0_vgl77cfdswitgr47lm5swmv43m debug: 4.3.4 - eslint: 8.33.0 + eslint: 8.36.0 tsutils: 3.21.0_typescript@4.9.5 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.50.0: - resolution: {integrity: sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==} + /@typescript-eslint/types/5.56.0: + resolution: {integrity: sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.50.0_typescript@4.9.5: - resolution: {integrity: sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==} + /@typescript-eslint/typescript-estree/5.56.0_typescript@4.9.5: + resolution: {integrity: sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -2385,8 +3098,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.50.0 - '@typescript-eslint/visitor-keys': 5.50.0 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/visitor-keys': 5.56.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -2397,31 +3110,31 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.50.0_4vsywjlpuriuw3tl5oq6zy5a64: - resolution: {integrity: sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==} + /@typescript-eslint/utils/5.56.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: + '@eslint-community/eslint-utils': 4.3.0_eslint@8.36.0 '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.50.0 - '@typescript-eslint/types': 5.50.0 - '@typescript-eslint/typescript-estree': 5.50.0_typescript@4.9.5 - eslint: 8.33.0 + '@typescript-eslint/scope-manager': 5.56.0 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/typescript-estree': 5.56.0_typescript@4.9.5 + eslint: 8.36.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.33.0 semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys/5.50.0: - resolution: {integrity: sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==} + /@typescript-eslint/visitor-keys/5.56.0: + resolution: {integrity: sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.50.0 + '@typescript-eslint/types': 5.56.0 eslint-visitor-keys: 3.3.0 dev: true @@ -2506,6 +3219,37 @@ packages: vue: 3.2.47 dev: true + /@vitest/expect/0.29.7: + resolution: {integrity: sha512-UtG0tW0DP6b3N8aw7PHmweKDsvPv4wjGvrVZW7OSxaFg76ShtVdMiMcUkZJgCE8QWUmhwaM0aQhbbVLo4F4pkA==} + dependencies: + '@vitest/spy': 0.29.7 + '@vitest/utils': 0.29.7 + chai: 4.3.7 + dev: true + + /@vitest/runner/0.29.7: + resolution: {integrity: sha512-Yt0+csM945+odOx4rjZSjibQfl2ymxqVsmYz6sO2fiO5RGPYDFCo60JF6tLL9pz4G/kjY4irUxadeB1XT+H1jg==} + dependencies: + '@vitest/utils': 0.29.7 + p-limit: 4.0.0 + pathe: 1.1.0 + dev: true + + /@vitest/spy/0.29.7: + resolution: {integrity: sha512-IalL0iO6A6Xz8hthR8sctk6ZS//zVBX48EiNwQguYACdgdei9ZhwMaBFV70mpmeYAFCRAm+DpoFHM5470Im78A==} + dependencies: + tinyspy: 1.0.2 + dev: true + + /@vitest/utils/0.29.7: + resolution: {integrity: sha512-vNgGadp2eE5XKCXtZXL5UyNEDn68npSct75OC9AlELenSK0DiV1Mb9tfkwJHKjRb69iek+e79iipoJx8+s3SdA==} + dependencies: + cli-truncate: 3.1.0 + diff: 5.1.0 + loupe: 2.3.6 + pretty-format: 27.5.1 + dev: true + /@volar/language-core/1.0.24: resolution: {integrity: sha512-vTN+alJiWwK0Pax6POqrmevbtFW2dXhjwWiW/MW4f48eDYPLdyURWcr8TixO7EN/nHsUBj2udT7igFKPtjyAKg==} dependencies: @@ -2569,6 +3313,23 @@ packages: '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 '@babel/template': 7.20.7 '@babel/traverse': 7.20.13 + '@babel/types': 7.21.3 + '@vue/babel-helper-vue-transform-on': 1.0.2 + camelcase: 6.3.0 + html-tags: 3.2.0 + svg-tags: 1.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.21.3: + resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==} + dependencies: + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.3 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 '@babel/types': 7.20.7 '@vue/babel-helper-vue-transform-on': 1.0.2 camelcase: 6.3.0 @@ -2582,7 +3343,7 @@ packages: /@vue/compiler-core/3.2.47: resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} dependencies: - '@babel/parser': 7.20.15 + '@babel/parser': 7.21.3 '@vue/shared': 3.2.47 estree-walker: 2.0.2 source-map: 0.6.1 @@ -2596,7 +3357,7 @@ packages: /@vue/compiler-sfc/3.2.47: resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} dependencies: - '@babel/parser': 7.20.15 + '@babel/parser': 7.21.3 '@vue/compiler-core': 3.2.47 '@vue/compiler-dom': 3.2.47 '@vue/compiler-ssr': 3.2.47 @@ -2619,7 +3380,7 @@ packages: /@vue/reactivity-transform/3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} dependencies: - '@babel/parser': 7.20.15 + '@babel/parser': 7.21.3 '@vue/compiler-core': 3.2.47 '@vue/shared': 3.2.47 estree-walker: 2.0.2 @@ -2774,6 +3535,17 @@ packages: transitivePeerDependencies: - supports-color + /agentkeepalive/4.3.0: + resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} + engines: {node: '>= 8.0.0'} + dependencies: + debug: 4.3.4 + depd: 2.0.0 + humanize-ms: 1.2.1 + transitivePeerDependencies: + - supports-color + dev: true + /aggregate-error/3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -2828,6 +3600,11 @@ packages: color-convert: 2.0.1 dev: true + /ansi-styles/5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + /ansi-styles/6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -2846,7 +3623,6 @@ packages: /arch/2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} - dev: true /archiver-utils/2.1.0: resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} @@ -2885,6 +3661,14 @@ packages: readable-stream: 3.6.0 dev: true + /are-we-there-yet/3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.0 + dev: true + /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2973,6 +3757,10 @@ packages: file-uri-to-path: 1.0.0 dev: true + /birpc/0.2.10: + resolution: {integrity: sha512-dECjfiLLuCWAlatyFOOCqjXsAbZl9A10Ix0TZh7FFs0Ho6b4zhumEtsXtADH2dMTWfJi320WdWjt3UAwEx0NFw==} + dev: true + /bl/4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -3054,6 +3842,12 @@ packages: engines: {node: '>=6'} dev: true + /builtins/5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.3.8 + dev: true + /bumpp/9.0.0: resolution: {integrity: sha512-I2+JLFQin46NioHg6wi23hYQMVExiJyGblARp5fIHUzLv3rRz9me38eUe2xlQCAl7Ys9X+SlhTaIkttTxiL6cQ==} engines: {node: '>=10'} @@ -3079,7 +3873,7 @@ packages: defu: 6.1.2 dotenv: 16.0.3 gittar: 0.1.1 - jiti: 1.17.1 + jiti: 1.18.2 mlly: 0.5.17 pathe: 0.3.9 pkg-types: 0.3.6 @@ -3092,8 +3886,8 @@ packages: defu: 6.1.2 dotenv: 16.0.3 giget: 1.1.2 - jiti: 1.17.1 - mlly: 1.1.1 + jiti: 1.18.2 + mlly: 1.2.0 pathe: 1.1.0 pkg-types: 1.0.2 rc9: 2.0.1 @@ -3106,8 +3900,23 @@ packages: defu: 6.1.2 dotenv: 16.0.3 giget: 1.1.2 - jiti: 1.17.1 - mlly: 1.1.1 + jiti: 1.18.2 + mlly: 1.2.0 + pathe: 1.1.0 + pkg-types: 1.0.2 + rc9: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /c12/1.2.0: + resolution: {integrity: sha512-CMznkE0LpNEuD8ILp5QvsQVP+YvcpJnrI/zFeFnosU2PyDtx1wT7tXfZ8S3Tl3l9MTTXbKeuhDYKwgvnAPOx3w==} + dependencies: + defu: 6.1.2 + dotenv: 16.0.3 + giget: 1.1.2 + jiti: 1.18.2 + mlly: 1.2.0 pathe: 1.1.0 pkg-types: 1.0.2 rc9: 2.0.1 @@ -3120,6 +3929,53 @@ packages: engines: {node: '>=8'} dev: true + /cacache/16.1.3: + resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + '@npmcli/fs': 2.1.2 + '@npmcli/move-file': 2.0.1 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 8.1.0 + infer-owner: 1.0.4 + lru-cache: 7.18.3 + minipass: 3.3.4 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 9.0.1 + tar: 6.1.13 + unique-filename: 2.0.1 + transitivePeerDependencies: + - bluebird + dev: true + + /cacache/17.0.4: + resolution: {integrity: sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.1 + glob: 8.1.0 + lru-cache: 7.18.3 + minipass: 4.2.0 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + ssri: 10.0.1 + tar: 6.1.13 + unique-filename: 3.0.0 + transitivePeerDependencies: + - bluebird + dev: true + /call-bind/1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -3383,7 +4239,6 @@ packages: arch: 2.2.0 execa: 5.1.1 is-wsl: 2.2.0 - dev: true /cliui/8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -3402,7 +4257,6 @@ packages: /cluster-key-slot/1.1.2: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} - dev: true /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -3465,11 +4319,6 @@ packages: engines: {node: '>= 12'} dev: true - /commander/9.4.1: - resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} - engines: {node: ^12.20.0 || >=14} - dev: true - /commondir/1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true @@ -3559,7 +4408,6 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: true /css-declaration-sorter/6.3.1_postcss@8.4.21: resolution: {integrity: sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==} @@ -3665,19 +4513,11 @@ packages: css-tree: 1.1.3 dev: true - /cssom/0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: true - - /cssom/0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - dev: true - - /cssstyle/2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} + /cssstyle/3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} dependencies: - cssom: 0.3.8 + rrweb-cssom: 0.6.0 dev: true /csstype/2.6.21: @@ -3696,13 +4536,13 @@ packages: engines: {node: '>= 12'} dev: true - /data-urls/3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} + /data-urls/4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} dependencies: abab: 2.0.6 whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 + whatwg-url: 12.0.1 dev: true /de-indent/1.0.2: @@ -3731,8 +4571,8 @@ packages: dependencies: ms: 2.1.2 - /decimal.js/10.4.2: - resolution: {integrity: sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==} + /decimal.js/10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true /decode-named-character-reference/1.0.2: @@ -3750,7 +4590,6 @@ packages: /deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true /deepmerge/4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} @@ -3791,7 +4630,6 @@ packages: /denque/2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} - dev: true /depd/2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} @@ -3933,6 +4771,14 @@ packages: engines: {node: '>= 0.8'} dev: true + /encoding/0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + dev: true + optional: true + /end-of-stream/1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -3983,6 +4829,15 @@ packages: engines: {node: '>=0.12'} dev: true + /env-paths/2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /err-code/2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: true + /errno/0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true @@ -4038,216 +4893,6 @@ packages: resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==} dev: true - /esbuild-android-64/0.15.18: - resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-android-arm64/0.15.18: - resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-64/0.15.18: - resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-arm64/0.15.18: - resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-64/0.15.18: - resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-arm64/0.15.18: - resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-32/0.15.18: - resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-64/0.15.18: - resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm/0.15.18: - resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm64/0.15.18: - resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-mips64le/0.15.18: - resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-ppc64le/0.15.18: - resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-riscv64/0.15.18: - resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-s390x/0.15.18: - resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-netbsd-64/0.15.18: - resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-openbsd-64/0.15.18: - resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-sunos-64/0.15.18: - resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-32/0.15.18: - resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-64/0.15.18: - resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-arm64/0.15.18: - resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild/0.15.18: - resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.15.18 - '@esbuild/linux-loong64': 0.15.18 - esbuild-android-64: 0.15.18 - esbuild-android-arm64: 0.15.18 - esbuild-darwin-64: 0.15.18 - esbuild-darwin-arm64: 0.15.18 - esbuild-freebsd-64: 0.15.18 - esbuild-freebsd-arm64: 0.15.18 - esbuild-linux-32: 0.15.18 - esbuild-linux-64: 0.15.18 - esbuild-linux-arm: 0.15.18 - esbuild-linux-arm64: 0.15.18 - esbuild-linux-mips64le: 0.15.18 - esbuild-linux-ppc64le: 0.15.18 - esbuild-linux-riscv64: 0.15.18 - esbuild-linux-s390x: 0.15.18 - esbuild-netbsd-64: 0.15.18 - esbuild-openbsd-64: 0.15.18 - esbuild-sunos-64: 0.15.18 - esbuild-windows-32: 0.15.18 - esbuild-windows-64: 0.15.18 - esbuild-windows-arm64: 0.15.18 - dev: true - /esbuild/0.16.17: resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} engines: {node: '>=12'} @@ -4308,6 +4953,36 @@ packages: '@esbuild/win32-x64': 0.17.10 dev: true + /esbuild/0.17.12: + resolution: {integrity: sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.12 + '@esbuild/android-arm64': 0.17.12 + '@esbuild/android-x64': 0.17.12 + '@esbuild/darwin-arm64': 0.17.12 + '@esbuild/darwin-x64': 0.17.12 + '@esbuild/freebsd-arm64': 0.17.12 + '@esbuild/freebsd-x64': 0.17.12 + '@esbuild/linux-arm': 0.17.12 + '@esbuild/linux-arm64': 0.17.12 + '@esbuild/linux-ia32': 0.17.12 + '@esbuild/linux-loong64': 0.17.12 + '@esbuild/linux-mips64el': 0.17.12 + '@esbuild/linux-ppc64': 0.17.12 + '@esbuild/linux-riscv64': 0.17.12 + '@esbuild/linux-s390x': 0.17.12 + '@esbuild/linux-x64': 0.17.12 + '@esbuild/netbsd-x64': 0.17.12 + '@esbuild/openbsd-x64': 0.17.12 + '@esbuild/sunos-x64': 0.17.12 + '@esbuild/win32-arm64': 0.17.12 + '@esbuild/win32-ia32': 0.17.12 + '@esbuild/win32-x64': 0.17.12 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -4340,18 +5015,17 @@ packages: optionator: 0.8.3 optionalDependencies: source-map: 0.6.1 - dev: true - /eslint-config-prettier/8.6.0_eslint@8.33.0: - resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} + /eslint-config-prettier/8.8.0_eslint@8.36.0: + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.33.0 + eslint: 8.36.0 dev: true - /eslint-plugin-prettier/4.2.1_jqplj6qf3uqpxpu4gdyhwwasnq: + /eslint-plugin-prettier/4.2.1_ose2zoovovx4ulolhifz3tfzx4: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -4362,9 +5036,9 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.33.0 - eslint-config-prettier: 8.6.0_eslint@8.33.0 - prettier: 2.8.3 + eslint: 8.36.0 + eslint-config-prettier: 8.8.0_eslint@8.36.0 + prettier: 2.8.6 prettier-linter-helpers: 1.0.0 dev: true @@ -4391,37 +5065,25 @@ packages: eslint-visitor-keys: 1.3.0 dev: false - /eslint-utils/3.0.0_eslint@8.33.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.33.0 - eslint-visitor-keys: 2.1.0 - dev: true - /eslint-visitor-keys/1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} dev: false - /eslint-visitor-keys/2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - /eslint-visitor-keys/3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.33.0: - resolution: {integrity: sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==} + /eslint/8.36.0: + resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.4.1 + '@eslint-community/eslint-utils': 4.3.0_eslint@8.36.0 + '@eslint-community/regexpp': 4.4.0 + '@eslint/eslintrc': 2.0.1 + '@eslint/js': 8.36.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -4432,10 +5094,9 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.33.0 eslint-visitor-keys: 3.3.0 - espree: 9.4.1 - esquery: 1.4.0 + espree: 9.5.0 + esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -4456,7 +5117,6 @@ packages: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.1 - regexpp: 3.2.0 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 @@ -4464,6 +5124,13 @@ packages: - supports-color dev: true + /esno/0.16.3: + resolution: {integrity: sha512-6slSBEV1lMKcX13DBifvnDFpNno5WXhw4j/ff7RI0y51BZiDqEe5dNhhjhIQ3iCOQuzsm2MbVzmwqbN78BBhPg==} + hasBin: true + dependencies: + tsx: 3.12.5 + dev: true + /espree/6.2.1: resolution: {integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==} engines: {node: '>=6.0.0'} @@ -4473,8 +5140,8 @@ packages: eslint-visitor-keys: 1.3.0 dev: false - /espree/9.4.1: - resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} + /espree/9.5.0: + resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.2 @@ -4486,10 +5153,9 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: true - /esquery/1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + /esquery/1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 @@ -4510,7 +5176,6 @@ packages: /estraverse/5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - dev: true /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -4527,7 +5192,6 @@ packages: /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: true /etag/1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} @@ -4570,7 +5234,6 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true /execa/6.1.0: resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} @@ -4587,6 +5250,21 @@ packages: strip-final-newline: 3.0.0 dev: true + /execa/7.1.1: + resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + /extend/3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true @@ -4604,7 +5282,7 @@ packages: resolution: {integrity: sha512-MAU9ci3XdpqOX1aoIoyL2DMzW97P8LYeJxIUkfXhOfsrkH4KLHFaYDwKN0B2l6tqedVJWiTIJtWmxmZfa05vOQ==} dependencies: enhanced-resolve: 5.10.0 - mlly: 1.1.1 + mlly: 1.2.0 pathe: 1.1.0 ufo: 1.1.1 dev: true @@ -4633,7 +5311,6 @@ packages: /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true /fast-xml-parser/4.1.3: resolution: {integrity: sha512-LsNDahCiCcJPe8NO7HijcnukHB24tKbfDDA5IILx9dmW3Frb52lhbeX6MPNUSvyGNfav2VTYpJ/OqkRoVLrh2Q==} @@ -4790,6 +5467,15 @@ packages: universalify: 2.0.0 dev: true + /fs-extra/11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + /fs-minipass/1.2.7: resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} dependencies: @@ -4800,7 +5486,14 @@ packages: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 + + /fs-minipass/3.0.1: + resolution: {integrity: sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 4.2.0 + dev: true /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -4846,6 +5539,20 @@ packages: wide-align: 1.1.5 dev: true + /gauge/4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: true + /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -4869,7 +5576,6 @@ packages: /get-port-please/3.0.1: resolution: {integrity: sha512-R5pcVO8Z1+pVDu8Ml3xaJCEkBiiy1VQN9za0YqH8GIi1nIqD4IzQhzY6dDzMRtdS1lyiGlucRzm8IN8wtLIXng==} - dev: true /get-stream/3.0.0: resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} @@ -4879,7 +5585,6 @@ packages: /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - dev: true /get-symbol-description/1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} @@ -4889,6 +5594,10 @@ packages: get-intrinsic: 1.1.3 dev: true + /get-tsconfig/4.4.0: + resolution: {integrity: sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==} + dev: true + /gh-changelogen/0.2.8: resolution: {integrity: sha512-E9mRhhmpol2WkCqqljVhg+aUST0RE5WEDbh+oeF4MGIA1T+UvgYxv7sFQemnvY5EWj3pg2xz8cVzJX6gNvgHSw==} engines: {node: '>= 14.18'} @@ -4979,6 +5688,23 @@ packages: once: 1.4.0 dev: true + /glob/9.3.2: + resolution: {integrity: sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + fs.realpath: 1.0.0 + minimatch: 7.4.3 + minipass: 4.2.5 + path-scurry: 1.6.3 + dev: true + + /global-dirs/3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + dependencies: + ini: 2.0.0 + dev: true + /globals/11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -5021,6 +5747,10 @@ packages: /graceful-fs/4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + /graceful-fs/4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + /grapheme-splitter/1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true @@ -5053,6 +5783,17 @@ packages: uncrypto: 0.1.2 dev: true + /h3/1.6.2: + resolution: {integrity: sha512-1v/clj/qCzWbuiG+DbpViuOVO789sEYNjlwRjekkmyLGsezIJk30gazbnjcWvF8L/ffUdRz2SwxE5HNgNx+Yjg==} + dependencies: + cookie-es: 0.5.0 + defu: 6.1.2 + destr: 1.2.2 + iron-webcrypto: 0.6.0 + radix3: 1.0.0 + ufo: 1.1.1 + uncrypto: 0.1.2 + /has-bigints/1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true @@ -5191,10 +5932,21 @@ packages: /hookable/5.4.2: resolution: {integrity: sha512-6rOvaUiNKy9lET1X0ECnyZ5O5kSV0PJbtA5yZUgdEF7fGJEVwSLSislltyt7nFwVVALYHQJtfGeAR2Y0A0uJkg==} + /hookable/5.5.1: + resolution: {integrity: sha512-ac50aYjbtRMMZEtTG0qnVaBDA+1lqL9fHzDnxMQlVuO6LZWcBB7NXjIu9H9iImClewNdrit4RiEzi9QpRTgKrg==} + dev: true + /hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true + /hosted-git-info/6.1.1: + resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + lru-cache: 7.18.3 + dev: true + /html-encoding-sniffer/3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -5211,6 +5963,10 @@ packages: resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} dev: true + /http-cache-semantics/4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true + /http-errors/2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -5258,7 +6014,6 @@ packages: /http-shutdown/1.2.2: resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true /https-proxy-agent/5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} @@ -5272,13 +6027,23 @@ packages: /human-signals/2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - dev: true /human-signals/3.0.1: resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} engines: {node: '>=12.20.0'} dev: true + /human-signals/4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + + /humanize-ms/1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + dependencies: + ms: 2.1.3 + dev: true + /iconv-lite/0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -5297,10 +6062,22 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true + /ignore-walk/6.0.1: + resolution: {integrity: sha512-/c8MxUAqpRccq+LyDOecwF+9KqajueJHh8fz7g3YqjMZt+NSfJzx05zrKiXwa2sKwFCzaiZ5qUVfRj0pmxixEA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minimatch: 6.2.0 + dev: true + /ignore/5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} + /image-meta/0.1.1: + resolution: {integrity: sha512-+oXiHwOEPr1IE5zY0tcBLED/CYcre15J4nwL50x3o0jxWqEkyjrusiKP3YSU+tr9fvJp33ZcP5Gpj2295g3aEw==} + engines: {node: '>=10.18.0'} + dev: true + /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -5319,6 +6096,10 @@ packages: engines: {node: '>=8'} dev: true + /infer-owner/1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + dev: true + /inflight/1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -5333,6 +6114,11 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true + /ini/2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + dev: true + /inquirer/9.1.4: resolution: {integrity: sha512-9hiJxE5gkK/cM2d1mTEnuurGTAoHebbkX0BYl3h7iEg7FYfuNIom+nDfBCSWtvSnoSrWCeBxqqBZu26xdlJlXA==} engines: {node: '>=12.0.0'} @@ -5378,17 +6164,22 @@ packages: standard-as-callback: 2.1.0 transitivePeerDependencies: - supports-color - dev: true /ip-regex/5.0.0: resolution: {integrity: sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + /ip/2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: true /iron-webcrypto/0.5.0: resolution: {integrity: sha512-9m0tDUIo+GPwDYi1CNlAW3ToIFTS9y88lf41KsEwbBsL4PKNjhrNDGoA0WlB6WWaJ6pgp+FOP1+6ls0YftivyA==} dev: true + /iron-webcrypto/0.6.0: + resolution: {integrity: sha512-WYgEQttulX/+JTv1BTJFYY3OsAb+ZnCuA53IjppZMyiRsVdGeEuZ/k4fJrg77Rzn0pp9/PgWtXUF+5HndDA5SQ==} + /is-absolute-url/4.0.1: resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5482,7 +6273,6 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - dev: true /is-docker/3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} @@ -5525,11 +6315,23 @@ packages: resolution: {integrity: sha512-FeMLiqf8E5g6SdiVJsPcNZX8k4h2fBs1wp5Bb6uaNxn58ufK1axBqQZdmAQsqh0t9BuwFObybrdVJh6MKyPlyg==} dev: false + /is-installed-globally/0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + dev: true + /is-interactive/2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} dev: true + /is-lambda/1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + dev: true + /is-module/1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true @@ -5615,7 +6417,6 @@ packages: /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - dev: true /is-stream/3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -5663,22 +6464,26 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - dev: true /isarray/1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true /jiti/1.16.2: resolution: {integrity: sha512-OKBOVWmU3FxDt/UH4zSwiKPuc1nihFZiOD722FuJlngvLz2glX1v2/TJIgoA4+mrpnXxHV6dSAoCvPcYQtoG5A==} hasBin: true + dev: true /jiti/1.17.1: resolution: {integrity: sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw==} hasBin: true + dev: true + + /jiti/1.18.2: + resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} + hasBin: true /js-cookie/3.0.1: resolution: {integrity: sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==} @@ -5703,8 +6508,8 @@ packages: dev: true optional: true - /jsdom/21.1.0: - resolution: {integrity: sha512-m0lzlP7qOtthD918nenK3hdItSd2I+V3W9IrBcB36sqDwG+KnUs66IF5GY7laGWUnlM9vTsD0W1QwSEBYWWcJg==} + /jsdom/21.1.1: + resolution: {integrity: sha512-Jjgdmw48RKcdAIQyUD1UdBh2ecH7VqwaXPN3ehoZN6MqgVbMn+lRm1aAT1AsdJRAJpwfa4IpwgzySn61h2qu3w==} engines: {node: '>=14'} peerDependencies: canvas: ^2.5.0 @@ -5715,10 +6520,9 @@ packages: abab: 2.0.6 acorn: 8.8.2 acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.4.2 + cssstyle: 3.0.0 + data-urls: 4.0.0 + decimal.js: 10.4.3 domexception: 4.0.0 escodegen: 2.0.0 form-data: 4.0.0 @@ -5727,7 +6531,8 @@ packages: https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.2 - parse5: 7.1.1 + parse5: 7.1.2 + rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.2 @@ -5735,8 +6540,8 @@ packages: webidl-conversions: 7.0.0 whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.12.0 + whatwg-url: 12.0.1 + ws: 8.13.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -5753,6 +6558,11 @@ packages: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} dev: true + /json-parse-even-better-errors/3.0.0: + resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -5761,12 +6571,6 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json5/2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} - engines: {node: '>=6'} - hasBin: true - dev: false - /json5/2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -5794,6 +6598,11 @@ packages: graceful-fs: 4.2.10 dev: true + /jsonparse/1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true + /jsonwebtoken/9.0.0: resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} engines: {node: '>=12', npm: '>=6'} @@ -5861,6 +6670,17 @@ packages: resolution: {integrity: sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==} dev: true + /kolorist/1.7.0: + resolution: {integrity: sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==} + dev: true + + /launch-editor/2.6.0: + resolution: {integrity: sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==} + dependencies: + picocolors: 1.0.0 + shell-quote: 1.8.0 + dev: true + /lazystream/1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} @@ -5874,7 +6694,6 @@ packages: dependencies: prelude-ls: 1.1.2 type-check: 0.3.2 - dev: true /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} @@ -5889,24 +6708,33 @@ packages: engines: {node: '>=10'} dev: true - /lint-staged/13.1.0: - resolution: {integrity: sha512-pn/sR8IrcF/T0vpWLilih8jmVouMlxqXxKuAojmbiGX5n/gDnz+abdPptlj0vYnbfE0SQNl3CY/HwtM0+yfOVQ==} + /lilconfig/2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /lines-and-columns/1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: false + + /lint-staged/13.2.0: + resolution: {integrity: sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==} engines: {node: ^14.13.1 || >=16.0.0} hasBin: true dependencies: + chalk: 5.2.0 cli-truncate: 3.1.0 - colorette: 2.0.19 - commander: 9.4.1 + commander: 10.0.0 debug: 4.3.4 - execa: 6.1.0 - lilconfig: 2.0.6 - listr2: 5.0.6 + execa: 7.1.1 + lilconfig: 2.1.0 + listr2: 5.0.8 micromatch: 4.0.5 normalize-path: 3.0.0 - object-inspect: 1.12.2 + object-inspect: 1.12.3 pidtree: 0.6.0 string-argv: 0.3.1 - yaml: 2.1.3 + yaml: 2.2.1 transitivePeerDependencies: - enquirer - supports-color @@ -5923,10 +6751,9 @@ packages: ip-regex: 5.0.0 node-forge: 1.3.1 ufo: 1.1.1 - dev: true - /listr2/5.0.6: - resolution: {integrity: sha512-u60KxKBy1BR2uLJNTWNptzWQ1ob/gjMzIJPZffAENzpZqbMZ/5PrXXOomDcevIS/+IB7s1mmCEtSlT2qHWMqag==} + /listr2/5.0.8: + resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} engines: {node: ^14.13.1 || >=16.0.0} peerDependencies: enquirer: '>= 2.3.0 < 3' @@ -5939,7 +6766,7 @@ packages: log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 - rxjs: 7.5.7 + rxjs: 7.8.0 through: 2.3.8 wrap-ansi: 7.0.0 dev: true @@ -5954,11 +6781,6 @@ packages: strip-bom: 3.0.0 dev: true - /local-pkg/0.4.2: - resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} - engines: {node: '>=14'} - dev: true - /local-pkg/0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} @@ -5979,7 +6801,6 @@ packages: /lodash.defaults/4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - dev: true /lodash.difference/4.5.0: resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} @@ -5991,7 +6812,6 @@ packages: /lodash.isarguments/3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - dev: true /lodash.isplainobject/4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} @@ -6086,7 +6906,6 @@ packages: /lru-cache/7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} - dev: true /magic-string/0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} @@ -6117,7 +6936,6 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.14 - dev: true /make-dir/3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -6126,6 +6944,55 @@ packages: semver: 6.3.0 dev: true + /make-fetch-happen/10.2.1: + resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + agentkeepalive: 4.3.0 + cacache: 16.1.3 + http-cache-semantics: 4.1.1 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 3.3.4 + minipass-collect: 1.0.2 + minipass-fetch: 2.1.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + socks-proxy-agent: 7.0.0 + ssri: 9.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /make-fetch-happen/11.0.3: + resolution: {integrity: sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + agentkeepalive: 4.3.0 + cacache: 17.0.4 + http-cache-semantics: 4.1.1 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 4.2.0 + minipass-fetch: 3.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + socks-proxy-agent: 7.0.0 + ssri: 10.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + /markdown-table/3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} dev: true @@ -6290,7 +7157,6 @@ packages: /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -6585,7 +7451,6 @@ packages: /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - dev: true /mimic-fn/4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} @@ -6618,10 +7483,74 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch/7.4.3: + resolution: {integrity: sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: true + /minipass-collect/1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.4 + dev: true + + /minipass-fetch/2.1.2: + resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + minipass: 3.3.4 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: true + + /minipass-fetch/3.0.1: + resolution: {integrity: sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 4.2.0 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: true + + /minipass-flush/1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.4 + dev: true + + /minipass-json-stream/1.0.1: + resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} + dependencies: + jsonparse: 1.3.1 + minipass: 3.3.4 + dev: true + + /minipass-pipeline/1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.4 + dev: true + + /minipass-sized/1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.4 + dev: true + /minipass/2.9.0: resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} dependencies: @@ -6634,10 +7563,22 @@ packages: engines: {node: '>=8'} dependencies: yallist: 4.0.0 + dev: true + + /minipass/3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 /minipass/4.2.0: resolution: {integrity: sha512-ExlilAIS7zJ2EWUMaVXi14H+FnZ18kr17kFkGemMqBx6jW0m8P6XfqwYVPEG53ENlgsED+alVP9ZxC3JzkK23Q==} engines: {node: '>=8'} + dev: true + + /minipass/4.2.5: + resolution: {integrity: sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==} + engines: {node: '>=8'} /minizlib/1.3.3: resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} @@ -6649,7 +7590,7 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 yallist: 4.0.0 /mkdirp/0.5.6: @@ -6664,11 +7605,11 @@ packages: engines: {node: '>=10'} hasBin: true - /mkdist/1.1.1_typescript@4.9.5: - resolution: {integrity: sha512-9cEzCsBD0qpybR/lJMB0vRIDZiHP7hJHTN2mQtFU2qt0vr7lFnghxersOJbKLshaDsl4GlnY2OBzmRRUTfuaDg==} + /mkdist/1.1.2_typescript@4.9.5: + resolution: {integrity: sha512-s9whPlQsr84iY3XoufsDrVlzGiDdTnMwf2+7QU6ekJPgTIgGwn7EsU8lcefWqLH6no+/4UqjDBwyIkGKfZyH9g==} hasBin: true peerDependencies: - sass: ^1.58.0 + sass: ^1.58.3 typescript: '>=4.9.5' peerDependenciesMeta: sass: @@ -6677,10 +7618,11 @@ packages: optional: true dependencies: defu: 6.1.2 - esbuild: 0.17.10 - fs-extra: 11.1.0 + esbuild: 0.17.12 + fs-extra: 11.1.1 globby: 13.1.3 - jiti: 1.17.1 + jiti: 1.18.2 + mlly: 1.2.0 mri: 1.2.0 pathe: 1.1.0 typescript: 4.9.5 @@ -6701,7 +7643,8 @@ packages: acorn: 8.8.2 pathe: 1.1.0 pkg-types: 1.0.1 - ufo: 1.0.1 + ufo: 1.1.1 + dev: true /mlly/1.1.1: resolution: {integrity: sha512-Jnlh4W/aI4GySPo6+DyTN17Q75KKbLTyFK8BrGhjNP4rxuUjbRWhE6gHg3bs33URWAF44FRm7gdQA348i3XxRw==} @@ -6710,11 +7653,25 @@ packages: pathe: 1.1.0 pkg-types: 1.0.2 ufo: 1.1.1 + dev: true + + /mlly/1.2.0: + resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} + dependencies: + acorn: 8.8.2 + pathe: 1.1.0 + pkg-types: 1.0.2 + ufo: 1.1.1 /mri/1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} + /mrmime/1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true + /ms/2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true @@ -6757,6 +7714,11 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /negotiator/0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + /nice-try/1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true @@ -6866,12 +7828,12 @@ packages: hookable: 5.4.2 http-proxy: 1.18.1_debug@4.3.4 is-primitive: 3.0.1 - jiti: 1.17.1 + jiti: 1.18.2 klona: 2.0.6 knitwork: 1.0.0 listhen: 1.0.3 mime: 3.0.0 - mlly: 1.1.1 + mlly: 1.2.0 mri: 1.2.0 node-fetch-native: 1.0.2 ofetch: 1.0.1 @@ -6892,8 +7854,15 @@ packages: ufo: 1.1.1 unenv: 1.0.3 unimport: 2.2.4_rollup@3.18.0 - unstorage: 1.4.0 + unstorage: 1.4.1 transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@planetscale/database' - debug - encoding - supports-color @@ -6953,13 +7922,32 @@ packages: /node-forge/1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} - dev: true /node-gyp-build/4.5.0: resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} hasBin: true dev: true + /node-gyp/9.3.1: + resolution: {integrity: sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==} + engines: {node: ^12.13 || ^14.13 || >=16} + hasBin: true + dependencies: + env-paths: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.10 + make-fetch-happen: 10.2.1 + nopt: 6.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.3.8 + tar: 6.1.13 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + /node-releases/2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} @@ -6971,6 +7959,14 @@ packages: abbrev: 1.1.1 dev: true + /nopt/6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -6980,6 +7976,16 @@ packages: validate-npm-package-license: 3.0.4 dev: true + /normalize-package-data/5.0.0: + resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + hosted-git-info: 6.1.1 + is-core-module: 2.11.0 + semver: 7.3.8 + validate-npm-package-license: 3.0.4 + dev: true + /normalize-path/1.0.0: resolution: {integrity: sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==} engines: {node: '>=0.10.0'} @@ -6999,6 +8005,68 @@ packages: engines: {node: '>=10'} dev: true + /npm-bundled/3.0.0: + resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + npm-normalize-package-bin: 3.0.0 + dev: true + + /npm-install-checks/6.0.0: + resolution: {integrity: sha512-SBU9oFglRVZnfElwAtF14NivyulDqF1VKqqwNsFW9HDcbHMAPHpRSsVFgKuwFGq/hVvWZExz62Th0kvxn/XE7Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.3.8 + dev: true + + /npm-normalize-package-bin/3.0.0: + resolution: {integrity: sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /npm-package-arg/10.1.0: + resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + hosted-git-info: 6.1.1 + proc-log: 3.0.0 + semver: 7.3.8 + validate-npm-package-name: 5.0.0 + dev: true + + /npm-packlist/7.0.4: + resolution: {integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + ignore-walk: 6.0.1 + dev: true + + /npm-pick-manifest/8.0.1: + resolution: {integrity: sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + npm-install-checks: 6.0.0 + npm-normalize-package-bin: 3.0.0 + npm-package-arg: 10.1.0 + semver: 7.3.8 + dev: true + + /npm-registry-fetch/14.0.3: + resolution: {integrity: sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + make-fetch-happen: 11.0.3 + minipass: 4.2.0 + minipass-fetch: 3.0.1 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 10.1.0 + proc-log: 3.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + /npm-run-all/4.1.5: resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} engines: {node: '>= 4'} @@ -7027,7 +8095,6 @@ packages: engines: {node: '>=8'} dependencies: path-key: 3.1.1 - dev: true /npm-run-path/5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} @@ -7045,6 +8112,16 @@ packages: set-blocking: 2.0.0 dev: true + /npmlog/6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + dev: true + /nth-check/2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -7168,7 +8245,7 @@ packages: - vue-tsc dev: true - /nuxt/3.1.2_zy2iiwafl5ugncweetwigsts4i: + /nuxt/3.1.2_zwskxr4vkm5ve3umpbxr4wh7ku: resolution: {integrity: sha512-mzEYvokFZAtiZRfNNj72m94nuMWzBgOCwuxlYt9paxH4Y9qcBr+Ki4ppnqD1gK719exccGqJAODJWL05aN3HFA==} engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} hasBin: true @@ -7178,7 +8255,7 @@ packages: '@nuxt/schema': 3.1.2 '@nuxt/telemetry': 2.1.9 '@nuxt/ui-templates': 1.1.1 - '@nuxt/vite-builder': 3.1.2_pyztoqq6jfcic4vzn3afnhhxoi + '@nuxt/vite-builder': 3.1.2_dvv2j667zjrmsuy6szq6yl3izm '@unhead/ssr': 1.0.20 '@vue/reactivity': 3.2.47 '@vue/shared': 3.2.47 @@ -7194,10 +8271,10 @@ packages: h3: 1.1.0 hash-sum: 2.0.0 hookable: 5.4.2 - jiti: 1.16.2 + jiti: 1.18.2 knitwork: 1.0.0 magic-string: 0.27.0 - mlly: 1.1.0 + mlly: 1.2.0 nitropack: 2.1.1_debug@4.3.4 nuxi: 3.1.2 ofetch: 1.0.0 @@ -7219,6 +8296,13 @@ packages: vue-devtools-stub: 0.1.0 vue-router: 4.1.6_vue@3.2.47 transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@planetscale/database' - '@types/node' - debug - encoding @@ -7252,6 +8336,10 @@ packages: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: true + /object-inspect/1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: true + /object-is/1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} @@ -7289,7 +8377,6 @@ packages: destr: 1.2.2 node-fetch-native: 1.0.2 ufo: 1.1.1 - dev: true /ohash/1.0.0: resolution: {integrity: sha512-kxSyzq6tt+6EE/xCnD1XaFhCCjUNUaz3X30rJp6mnjGLXAAvuPFqohMdv0aScWzajR45C29HyBaXZ8jXBwnh9A==} @@ -7322,7 +8409,6 @@ packages: engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - dev: true /onetime/6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} @@ -7350,7 +8436,6 @@ packages: prelude-ls: 1.1.2 type-check: 0.3.2 word-wrap: 1.2.3 - dev: true /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} @@ -7396,6 +8481,13 @@ packages: yocto-queue: 0.1.0 dev: true + /p-limit/4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + /p-locate/5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -7410,6 +8502,34 @@ packages: aggregate-error: 3.1.0 dev: true + /pacote/15.1.1: + resolution: {integrity: sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + '@npmcli/git': 4.0.3 + '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/promise-spawn': 6.0.2 + '@npmcli/run-script': 6.0.0 + cacache: 17.0.4 + fs-minipass: 3.0.1 + minipass: 4.2.0 + npm-package-arg: 10.1.0 + npm-packlist: 7.0.4 + npm-pick-manifest: 8.0.1 + npm-registry-fetch: 14.0.3 + proc-log: 3.0.0 + promise-retry: 2.0.1 + read-package-json: 6.0.0 + read-package-json-fast: 3.0.2 + sigstore: 1.1.1 + ssri: 10.0.1 + tar: 6.1.13 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + /paneer/0.1.0: resolution: {integrity: sha512-SZfJe/y9fbpeXZU+Kf7cSG2G7rnGP50hUYzCvcWyhp7hYzA3YXGthpkGfv6NSt0oo6QbcRyKwycg/6dpG5p8aw==} deprecated: renamed to https://www.npmjs.com/package/magicast @@ -7478,8 +8598,8 @@ packages: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} dev: true - /parse5/7.1.1: - resolution: {integrity: sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==} + /parse5/7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.4.0 dev: true @@ -7521,7 +8641,6 @@ packages: /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - dev: true /path-key/4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} @@ -7532,6 +8651,14 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true + /path-scurry/1.6.3: + resolution: {integrity: sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 7.18.3 + minipass: 4.2.5 + dev: true + /path-type/3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} @@ -7543,10 +8670,6 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /pathe/0.2.0: - resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} - dev: true - /pathe/0.3.9: resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} dev: true @@ -7634,27 +8757,28 @@ packages: jsonc-parser: 3.2.0 mlly: 1.1.0 pathe: 1.1.0 + dev: true /pkg-types/1.0.2: resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.1.1 + mlly: 1.2.0 pathe: 1.1.0 - /playwright-core/1.30.0: - resolution: {integrity: sha512-7AnRmTCf+GVYhHbLJsGUtskWTE33SwMZkybJ0v6rqR1boxq2x36U7p1vDRV7HO2IwTZgmycracLxPEJI49wu4g==} + /playwright-core/1.32.0: + resolution: {integrity: sha512-Z9Ij17X5Z3bjpp6XKujGBp9Gv4eViESac9aDmwgQFUEJBW0K80T21m/Z+XJQlu4cNsvPygw33b6V1Va6Bda5zQ==} engines: {node: '>=14'} hasBin: true dev: true - /playwright/1.30.0: - resolution: {integrity: sha512-ENbW5o75HYB3YhnMTKJLTErIBExrSlX2ZZ1C/FzmHjUYIfxj/UnI+DWpQr992m+OQVSg0rCExAOlRwB+x+yyIg==} + /playwright/1.32.0: + resolution: {integrity: sha512-zQVzxTGoC/ak2Zu0l3CeBGQ6z5oOka5ecUOk+5QbmAerih6CaVsjY9BjjhiN+UOImd3xLiNeCcmLEWcXlz1Dlg==} engines: {node: '>=14'} hasBin: true requiresBuild: true dependencies: - playwright-core: 1.30.0 + playwright-core: 1.32.0 dev: true /postcss-calc/8.2.4_postcss@8.4.21: @@ -8009,15 +9133,6 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss/8.4.19: - resolution: {integrity: sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - /postcss/8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} @@ -8029,7 +9144,6 @@ packages: /prelude-ls/1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} - dev: true /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -8043,8 +9157,8 @@ packages: fast-diff: 1.2.0 dev: true - /prettier/2.8.3: - resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} + /prettier/2.8.6: + resolution: {integrity: sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==} engines: {node: '>=10.13.0'} hasBin: true dev: true @@ -8054,11 +9168,25 @@ packages: engines: {node: ^14.13.1 || >=16.0.0} dev: true + /pretty-format/27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + dev: true + /priorityqueuejs/1.0.0: resolution: {integrity: sha512-lg++21mreCEOuGWTbO5DnJKAdxfjrdN0S9ysoW9SzdSJvbkWpkaDdpG/cdsPCsEnoLUwmd9m3WcZhngW7yKA2g==} dev: true optional: true + /proc-log/3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -8066,7 +9194,24 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} dev: true - optional: true + optional: true + + /promise-inflight/1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: true + + /promise-retry/2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: true /prompts/2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} @@ -8100,6 +9245,11 @@ packages: engines: {node: '>=6'} dev: true + /punycode/2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + /querystringify/2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true @@ -8109,7 +9259,6 @@ packages: /radix3/1.0.0: resolution: {integrity: sha512-6n3AEXth91ASapMVKiEh2wrbFJmI+NBilrWE0AbiGgfm0xet0QXC8+a3K19r1UVYjUjctUgB053c3V/J6V0kCQ==} - dev: true /randombytes/2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -8137,12 +9286,34 @@ packages: destr: 1.2.2 flat: 5.0.2 + /react-is/17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: true + /read-cache/1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 dev: true + /read-package-json-fast/3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + json-parse-even-better-errors: 3.0.0 + npm-normalize-package-bin: 3.0.0 + dev: true + + /read-package-json/6.0.0: + resolution: {integrity: sha512-b/9jxWJ8EwogJPpv99ma+QwtqB7FSl3+V6UXS7Aaay8/5VwMY50oIFooY1UKXMWpfNCM6T/PoGqa5GD1g9xf9w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + glob: 8.1.0 + json-parse-even-better-errors: 3.0.0 + normalize-package-data: 5.0.0 + npm-normalize-package-bin: 3.0.0 + dev: true + /read-pkg/3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} @@ -8198,14 +9369,12 @@ packages: /redis-errors/1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} engines: {node: '>=4'} - dev: true /redis-parser/3.0.0: resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} engines: {node: '>=4'} dependencies: redis-errors: 1.2.0 - dev: true /regexp.prototype.flags/1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} @@ -8216,11 +9385,6 @@ packages: functions-have-names: 1.2.3 dev: true - /regexpp/3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - /rehype-external-links/2.0.1: resolution: {integrity: sha512-u2dNypma+ps12SJWlS23zvbqwNx0Hl24t0YHXSM/6FCZj/pqWETCO3WyyrvALv4JYvRtuPjhiv2Lpen15ESqbA==} dependencies: @@ -8381,6 +9545,11 @@ packages: signal-exit: 3.0.7 dev: true + /retry/0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: true + /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -8396,21 +9565,23 @@ packages: glob: 7.2.3 dev: true - /rimraf/4.1.2: - resolution: {integrity: sha512-BlIbgFryTbw3Dz6hyoWFhKk+unCcHMSkZGrTFVAx2WmttdBSonsdtRlwiuTbDqTKr+UlXIUqJVS4QT5tUzGENQ==} + /rimraf/4.4.1: + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} engines: {node: '>=14'} hasBin: true + dependencies: + glob: 9.3.2 dev: true - /rollup-plugin-dts/5.2.0_fn2onl6nbsljlgjr3jlzr6w7we: - resolution: {integrity: sha512-B68T/haEu2MKcz4kNUhXB8/h5sq4gpplHAJIYNHbh8cp4ZkvzDvNca/11KQdFrB9ZeKucegQIotzo5T0JUtM8w==} + /rollup-plugin-dts/5.3.0_pn5zetjg24cqcolt42iry5qj6a: + resolution: {integrity: sha512-8FXp0ZkyZj1iU5klkIJYLjIq/YZSwBoERu33QBDxm/1yw5UU4txrEtcmMkrq+ZiKu3Q4qvPCNqc3ovX6rjqzbQ==} engines: {node: '>=v14'} peerDependencies: rollup: ^3.0.0 - typescript: ^4.1 + typescript: ^4.1 || ^5.0 dependencies: - magic-string: 0.29.0 - rollup: 3.18.0 + magic-string: 0.30.0 + rollup: 3.20.0 typescript: 4.9.5 optionalDependencies: '@babel/code-frame': 7.18.6 @@ -8433,22 +9604,26 @@ packages: yargs: 17.6.2 dev: true - /rollup/2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} - engines: {node: '>=10.0.0'} + /rollup/3.18.0: + resolution: {integrity: sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 dev: true - /rollup/3.18.0: - resolution: {integrity: sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg==} + /rollup/3.20.0: + resolution: {integrity: sha512-YsIfrk80NqUDrxrjWPXUa7PWvAfegZEXHuPsEZg58fGCdjL1I9C1i/NaG+L+27kxxwkrG/QEDEQc8s/ynXWWGQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 dev: true + /rrweb-cssom/0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true + /run-async/2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -8465,6 +9640,12 @@ packages: tslib: 2.4.1 dev: true + /rxjs/7.8.0: + resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} + dependencies: + tslib: 2.5.0 + dev: true + /sade/1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -8605,7 +9786,6 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - dev: true /shebang-regex/1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} @@ -8615,12 +9795,15 @@ packages: /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - dev: true /shell-quote/1.7.4: resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==} dev: true + /shell-quote/1.8.0: + resolution: {integrity: sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==} + dev: true + /shiki-es/0.2.0: resolution: {integrity: sha512-RbRMD+IuJJseSZljDdne9ThrUYrwBwJR04FvN4VXpfsU3MNID5VJGHLAD5je/HGThCyEKNgH+nEkSFEWKD7C3Q==} dev: true @@ -8633,8 +9816,33 @@ packages: object-inspect: 1.12.2 dev: true + /siginfo/2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /sigstore/1.1.1: + resolution: {integrity: sha512-4hR3tPP1y59YWlaoAgAWFVZ7srTjNWOrrpkQXWu05qP0BvwFYyt3K3l848+IHo+mKhkOzGcNDf7ktASXLEPC+A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + '@sigstore/protobuf-specs': 0.1.0 + make-fetch-happen: 11.0.3 + tuf-js: 1.1.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /sirv/2.0.2: + resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.21 + mrmime: 1.0.1 + totalist: 3.0.0 dev: true /sisteransi/1.0.5: @@ -8681,6 +9889,11 @@ packages: engines: {node: '>=8.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 + /smob/0.0.6: resolution: {integrity: sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==} dev: true @@ -8716,6 +9929,25 @@ packages: - supports-color dev: true + /socks-proxy-agent/7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socks/2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 2.0.0 + smart-buffer: 4.2.0 + dev: true + /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -8766,14 +9998,31 @@ packages: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} dev: true + /ssri/10.0.1: + resolution: {integrity: sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 4.2.0 + dev: true + + /ssri/9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + minipass: 3.3.4 + dev: true + /stable/0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' dev: true + /stackback/0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + /standard-as-callback/2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - dev: true /statuses/2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} @@ -8887,7 +10136,6 @@ packages: /strip-final-newline/2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - dev: true /strip-final-newline/3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} @@ -8909,6 +10157,12 @@ packages: dependencies: acorn: 8.8.2 + /strip-literal/1.0.1: + resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} + dependencies: + acorn: 8.8.2 + dev: true + /strnum/1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: true @@ -9021,7 +10275,7 @@ packages: dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 - minipass: 4.2.0 + minipass: 4.2.5 minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 @@ -9057,8 +10311,8 @@ packages: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} dev: true - /tinypool/0.3.0: - resolution: {integrity: sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==} + /tinypool/0.4.0: + resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==} engines: {node: '>=14.0.0'} dev: true @@ -9089,6 +10343,11 @@ packages: engines: {node: '>=0.6'} dev: true + /totalist/3.0.0: + resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} + engines: {node: '>=6'} + dev: true + /tough-cookie/4.1.2: resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} engines: {node: '>=6'} @@ -9103,11 +10362,11 @@ packages: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /tr46/3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} + /tr46/4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} dependencies: - punycode: 2.1.1 + punycode: 2.3.0 dev: true /trim-lines/3.0.1: @@ -9118,8 +10377,8 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: true - /ts-essentials/9.3.0_typescript@4.9.5: - resolution: {integrity: sha512-XeiCboEyBG8UqXZtXl59bWEi4ZgOqRsogFDI6WDGIF1LmzbYiAkIwjkXN6zZWWl4re/lsOqMlYfe8KA0XiiEPw==} + /ts-essentials/9.3.1_typescript@4.9.5: + resolution: {integrity: sha512-9CChSvQMyVRo29Vb1A2jbs+LKo3d/bAf+ndSaX0T8cEiy/HChVaRN/HY5DqUryZ8hZ6uol9bEgCnGmnDbwBR9Q==} peerDependencies: typescript: '>=4.1.0' dependencies: @@ -9134,6 +10393,10 @@ packages: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} dev: true + /tslib/2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + dev: true + /tsutils/3.21.0_typescript@4.9.5: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -9144,6 +10407,28 @@ packages: typescript: 4.9.5 dev: true + /tsx/3.12.5: + resolution: {integrity: sha512-/TLj30xF1zcN9JkoFCyROtIQUi8cRQG+AFchsg5YkWou3+RXxTZS/ffWB3nCxyZPoBqF2+8ohs07N815dNb1wQ==} + hasBin: true + dependencies: + '@esbuild-kit/cjs-loader': 2.4.2 + '@esbuild-kit/core-utils': 3.1.0 + '@esbuild-kit/esm-loader': 2.5.5 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /tuf-js/1.1.1: + resolution: {integrity: sha512-WTp382/PR96k0dI4GD5RdiRhgOU0rAC7+lnoih/5pZg3cyb3aNMqDozleEEWwyfT3+FOg7Qz9JU3n6A44tLSHw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@tufjs/models': 1.0.0 + make-fetch-happen: 11.0.3 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + /tunnel/0.0.6: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} @@ -9155,7 +10440,6 @@ packages: engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 - dev: true /type-check/0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -9205,6 +10489,7 @@ packages: /ufo/1.0.1: resolution: {integrity: sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==} + dev: true /ufo/1.1.1: resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==} @@ -9226,28 +10511,28 @@ packages: resolution: {integrity: sha512-EK5LeABThyn5KbX0eo5c7xKRQhnHVxKN8/e5Y+YQEf4ZobJB6OZ766756wbVqzIY/G/MvAfLbc6EwFPdSNnlpA==} hasBin: true dependencies: - '@rollup/plugin-alias': 4.0.3_rollup@3.18.0 - '@rollup/plugin-commonjs': 24.0.1_rollup@3.18.0 - '@rollup/plugin-json': 6.0.0_rollup@3.18.0 - '@rollup/plugin-node-resolve': 15.0.1_rollup@3.18.0 - '@rollup/plugin-replace': 5.0.2_rollup@3.18.0 - '@rollup/pluginutils': 5.0.2_rollup@3.18.0 + '@rollup/plugin-alias': 4.0.3_rollup@3.20.0 + '@rollup/plugin-commonjs': 24.0.1_rollup@3.20.0 + '@rollup/plugin-json': 6.0.0_rollup@3.20.0 + '@rollup/plugin-node-resolve': 15.0.1_rollup@3.20.0 + '@rollup/plugin-replace': 5.0.2_rollup@3.20.0 + '@rollup/pluginutils': 5.0.2_rollup@3.20.0 chalk: 5.2.0 consola: 2.15.3 defu: 6.1.2 - esbuild: 0.17.10 + esbuild: 0.17.12 globby: 13.1.3 - hookable: 5.4.2 - jiti: 1.17.1 + hookable: 5.5.1 + jiti: 1.18.2 magic-string: 0.29.0 - mkdist: 1.1.1_typescript@4.9.5 - mlly: 1.1.1 + mkdist: 1.1.2_typescript@4.9.5 + mlly: 1.2.0 mri: 1.2.0 pathe: 1.1.0 pkg-types: 1.0.2 pretty-bytes: 6.1.0 - rollup: 3.18.0 - rollup-plugin-dts: 5.2.0_fn2onl6nbsljlgjr3jlzr6w7we + rollup: 3.20.0 + rollup-plugin-dts: 5.3.0_pn5zetjg24cqcolt42iry5qj6a scule: 1.0.0 typescript: 4.9.5 untyped: 1.2.2 @@ -9258,7 +10543,6 @@ packages: /uncrypto/0.1.2: resolution: {integrity: sha512-kuZwRKV615lEw/Xx3Iz56FKk3nOeOVGaVmw0eg+x4Mne28lCotNFbBhDW7dEBCBKyKbRQiCadEZeNAFPVC5cgw==} - dev: true /unctx/2.1.1: resolution: {integrity: sha512-RffJlpvLOtolWsn0fxXsuSDfwiWcR6cyuykw2e0+zAggvGW1SesXt9WxIWlWpJhwVCZD/WlxxLqKLS50Q0CkWA==} @@ -9321,7 +10605,7 @@ packages: fast-glob: 3.2.12 local-pkg: 0.4.3 magic-string: 0.27.0 - mlly: 1.1.1 + mlly: 1.2.0 pathe: 1.1.0 pkg-types: 1.0.2 scule: 1.0.0 @@ -9338,7 +10622,7 @@ packages: fast-glob: 3.2.12 local-pkg: 0.4.3 magic-string: 0.27.0 - mlly: 1.1.1 + mlly: 1.2.0 pathe: 1.1.0 pkg-types: 1.0.2 scule: 1.0.0 @@ -9356,7 +10640,7 @@ packages: fast-glob: 3.2.12 local-pkg: 0.4.3 magic-string: 0.27.0 - mlly: 1.1.1 + mlly: 1.2.0 pathe: 1.1.0 pkg-types: 1.0.2 scule: 1.0.0 @@ -9374,7 +10658,7 @@ packages: fast-glob: 3.2.12 local-pkg: 0.4.3 magic-string: 0.27.0 - mlly: 1.1.1 + mlly: 1.2.0 pathe: 1.1.0 pkg-types: 1.0.2 scule: 1.0.0 @@ -9384,6 +10668,52 @@ packages: - rollup dev: true + /unimport/3.0.3: + resolution: {integrity: sha512-RzQqQiqepF5P13SwBGCe4pLlRnAQlbFuDAaQlSkXiNJDpN2iymtGMSfa75AcVSejgV05Q2aQYt6UhCiy5GuZ2A==} + dependencies: + '@rollup/pluginutils': 5.0.2 + escape-string-regexp: 5.0.0 + fast-glob: 3.2.12 + local-pkg: 0.4.3 + magic-string: 0.30.0 + mlly: 1.2.0 + pathe: 1.1.0 + pkg-types: 1.0.2 + scule: 1.0.0 + strip-literal: 1.0.1 + unplugin: 1.3.1 + transitivePeerDependencies: + - rollup + dev: true + + /unique-filename/2.0.1: + resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + unique-slug: 3.0.0 + dev: true + + /unique-filename/3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + unique-slug: 4.0.0 + dev: true + + /unique-slug/3.0.0: + resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + dev: true + + /unique-slug/4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + imurmurhash: 0.1.4 + dev: true + /unist-builder/3.0.1: resolution: {integrity: sha512-gnpOw7DIpCA0vpr6NqdPvTWnlPTApCTRzr+38E6hCWx3rz/cjo83SsKIlS1Z+L5ttScQ2AwutNnb8+tAvpb6qQ==} dependencies: @@ -9456,13 +10786,21 @@ packages: webpack-sources: 3.2.3 webpack-virtual-modules: 0.5.0 + /unplugin/1.3.1: + resolution: {integrity: sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==} + dependencies: + acorn: 8.8.2 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.5.0 + /unstorage/1.4.0: resolution: {integrity: sha512-l4ggmklguKsfkoEcO9QiSgnYLEUTVqHk+Sl9Y63FzhUnCqGz7icxLX7WmvDwPtAYH6qI4hBkfJbVVjS5rispMQ==} dependencies: anymatch: 3.1.3 chokidar: 3.5.3 destr: 1.2.2 - h3: 1.5.0 + h3: 1.6.2 ioredis: 5.3.1 listhen: 1.0.3 lru-cache: 7.18.3 @@ -9475,7 +10813,7 @@ packages: '@azure/cosmos': 3.17.3 '@azure/data-tables': 13.2.1 '@azure/identity': 3.1.3 - '@azure/keyvault-secrets': 4.6.0 + '@azure/keyvault-secrets': 4.7.0 '@azure/storage-blob': 12.13.0 '@planetscale/database': 1.6.0 transitivePeerDependencies: @@ -9483,12 +10821,52 @@ packages: - supports-color dev: true + /unstorage/1.4.1: + resolution: {integrity: sha512-ETLczXBd7sjJZuA3oIzaYwhMShiGlo7cGx01Ww23x2ehlk6WiRR1YsmjDBipoiGorq8pX1RRoMQFp/n3me7QOg==} + peerDependencies: + '@azure/app-configuration': ^1.3.1 + '@azure/cosmos': ^3.17.3 + '@azure/data-tables': ^13.2.1 + '@azure/identity': ^3.1.3 + '@azure/keyvault-secrets': ^4.6.0 + '@azure/storage-blob': ^12.13.0 + '@planetscale/database': ^1.6.0 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@planetscale/database': + optional: true + dependencies: + anymatch: 3.1.3 + chokidar: 3.5.3 + destr: 1.2.2 + h3: 1.6.2 + ioredis: 5.3.1 + listhen: 1.0.3 + lru-cache: 7.18.3 + mri: 1.2.0 + node-fetch-native: 1.0.2 + ofetch: 1.0.1 + ufo: 1.1.1 + transitivePeerDependencies: + - supports-color + /untyped/1.2.2: resolution: {integrity: sha512-EANYd5L6AdpgfldlgMcmvOOnj092nWhy0ybhc7uhEH12ipytDYz89EOegBQKj8qWL3u1wgYnmFjADhsuCJs5Aw==} dependencies: '@babel/core': 7.20.12 '@babel/standalone': 7.20.13 - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 scule: 1.0.0 transitivePeerDependencies: - supports-color @@ -9565,6 +10943,13 @@ packages: spdx-expression-parse: 3.0.1 dev: true + /validate-npm-package-name/5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + builtins: 5.0.1 + dev: true + /vfile-location/4.0.1: resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==} dependencies: @@ -9588,17 +10973,19 @@ packages: vfile-message: 3.1.3 dev: true - /vite-node/0.26.2_@types+node@18.11.9: - resolution: {integrity: sha512-4M/zlatItZAyvrQG+82zQBhgDjRZRhVJYFW4T9wcAKh7eMmSiPOVSeI5zsV9UzHXgCcIDKX0o0r3s4OxExTHqg==} + /vite-node/0.28.4: + resolution: {integrity: sha512-KM0Q0uSG/xHHKOJvVHc5xDBabgt0l70y7/lWTR7Q0pR5/MrYxadT+y32cJOE65FfjGmJgxpVEEY+69btJgcXOQ==} engines: {node: '>=v14.16.0'} hasBin: true dependencies: + cac: 6.7.14 debug: 4.3.4 - mlly: 1.1.1 - pathe: 0.2.0 + mlly: 1.2.0 + pathe: 1.1.0 + picocolors: 1.0.0 source-map: 0.6.1 source-map-support: 0.5.21 - vite: 3.2.4_@types+node@18.11.9 + vite: 4.1.1 transitivePeerDependencies: - '@types/node' - less @@ -9609,19 +10996,17 @@ packages: - terser dev: true - /vite-node/0.28.4: - resolution: {integrity: sha512-KM0Q0uSG/xHHKOJvVHc5xDBabgt0l70y7/lWTR7Q0pR5/MrYxadT+y32cJOE65FfjGmJgxpVEEY+69btJgcXOQ==} + /vite-node/0.29.7_@types+node@18.11.9: + resolution: {integrity: sha512-PakCZLvz37yFfUPWBnLa1OYHPCGm5v4pmRrTcFN4V/N/T3I6tyP3z07S//9w+DdeL7vVd0VSeyMZuAh+449ZWw==} engines: {node: '>=v14.16.0'} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4 - mlly: 1.1.1 + mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - source-map: 0.6.1 - source-map-support: 0.5.21 - vite: 4.1.1 + vite: 4.1.1_@types+node@18.11.9 transitivePeerDependencies: - '@types/node' - less @@ -9632,7 +11017,7 @@ packages: - terser dev: true - /vite-plugin-checker/0.5.5_tdliyewd6avdihdzfzo6sjhney: + /vite-plugin-checker/0.5.5_urlne5o5dtrrgo4gholvvfzeui: resolution: {integrity: sha512-BLaRlBmiVn3Fg/wR9A0+YNwgXVteFJaH8rCIiIgYQcQ50jc3oVe2m8i0xxG5geq36UttNJsAj7DpDelN7/KjOg==} engines: {node: '>=14.16'} peerDependencies: @@ -9668,7 +11053,7 @@ packages: chalk: 4.1.2 chokidar: 3.5.3 commander: 8.3.0 - eslint: 8.33.0 + eslint: 8.36.0 fast-glob: 3.2.12 fs-extra: 11.1.0 lodash.debounce: 4.0.8 @@ -9734,8 +11119,44 @@ packages: vscode-uri: 3.0.6 dev: true - /vite/3.2.4_@types+node@18.11.9: - resolution: {integrity: sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==} + /vite-plugin-inspect/0.7.18: + resolution: {integrity: sha512-hyIxg2qJaRs0LoB3Tqy9ML8yEublIzTzFVXmNhgw2jsjETJUXeR6iQ4YPHk3Q6kTbbiwgoPPyXimlAfEwektnA==} + engines: {node: '>=14'} + peerDependencies: + vite: ^3.1.0 || ^4.0.0 + dependencies: + '@antfu/utils': 0.7.2 + '@rollup/pluginutils': 5.0.2 + debug: 4.3.4 + fs-extra: 11.1.0 + kolorist: 1.7.0 + sirv: 2.0.2 + ufo: 1.1.1 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /vite-plugin-vue-inspector/3.4.0: + resolution: {integrity: sha512-gAdJ6fCPO7+PcUZJexgdOz27yuzQfEviBSS4c+zLLsItHdUq79oYgoWpPZwIYcE0FDFcAtz8dfG6I1ugWuykrw==} + peerDependencies: + vite: ^3.0.0-0 || ^4.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.21.3 + '@babel/plugin-transform-typescript': 7.21.3_@babel+core@7.21.3 + '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.21.3 + '@vue/compiler-dom': 3.2.47 + esno: 0.16.3 + kolorist: 1.7.0 + magic-string: 0.30.0 + shell-quote: 1.8.0 + transitivePeerDependencies: + - supports-color + dev: true + + /vite/4.1.1: + resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -9759,16 +11180,15 @@ packages: terser: optional: true dependencies: - '@types/node': 18.11.9 - esbuild: 0.15.18 - postcss: 8.4.19 + esbuild: 0.16.17 + postcss: 8.4.21 resolve: 1.22.1 - rollup: 2.79.1 + rollup: 3.18.0 optionalDependencies: fsevents: 2.3.2 dev: true - /vite/4.1.1: + /vite/4.1.1_@types+node@18.11.9: resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9793,6 +11213,7 @@ packages: terser: optional: true dependencies: + '@types/node': 18.11.9 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 @@ -9801,8 +11222,8 @@ packages: fsevents: 2.3.2 dev: true - /vitest/0.26.2_jsdom@21.1.0: - resolution: {integrity: sha512-Jvqxh6SDy9SsuslkDjts0iDewDIdq4rveEt69YgDuAb1tVDGV0lDepVaeAFraoySWqneJmOt4TngFFNhlw7GfA==} + /vitest/0.29.7_jsdom@21.1.1: + resolution: {integrity: sha512-aWinOSOu4jwTuZHkb+cCyrqQ116Q9TXaJrNKTHudKBknIpR0VplzeaOUuDF9jeZcrbtQKZQt6yrtd+eakbaxHg==} engines: {node: '>=v14.16.0'} hasBin: true peerDependencies: @@ -9811,6 +11232,8 @@ packages: '@vitest/ui': '*' happy-dom: '*' jsdom: '*' + safaridriver: '*' + webdriverio: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -9822,23 +11245,36 @@ packages: optional: true jsdom: optional: true + safaridriver: + optional: true + webdriverio: + optional: true dependencies: '@types/chai': 4.3.4 '@types/chai-subset': 1.3.3 '@types/node': 18.11.9 - acorn: 8.8.1 + '@vitest/expect': 0.29.7 + '@vitest/runner': 0.29.7 + '@vitest/spy': 0.29.7 + '@vitest/utils': 0.29.7 + acorn: 8.8.2 acorn-walk: 8.2.0 + cac: 6.7.14 chai: 4.3.7 debug: 4.3.4 - jsdom: 21.1.0 - local-pkg: 0.4.2 + jsdom: 21.1.1 + local-pkg: 0.4.3 + pathe: 1.1.0 + picocolors: 1.0.0 source-map: 0.6.1 + std-env: 3.3.2 strip-literal: 1.0.0 tinybench: 2.3.1 - tinypool: 0.3.0 + tinypool: 0.4.0 tinyspy: 1.0.2 - vite: 3.2.4_@types+node@18.11.9 - vite-node: 0.26.2_@types+node@18.11.9 + vite: 4.1.1_@types+node@18.11.9 + vite-node: 0.29.7_@types+node@18.11.9 + why-is-node-running: 2.2.2 transitivePeerDependencies: - less - sass @@ -9937,7 +11373,7 @@ packages: resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} dev: true - /vue-i18n-routing/0.12.2_nojl5tq4gemnzytwc7cf7ndqfm: + /vue-i18n-routing/0.12.2_dwizjyv4hs6kri7l6h6rdn5dcm: resolution: {integrity: sha512-VzYUzbUJyPHUP74t973dN42/sJnZUzBwdcYX+TJgr9YHD08+9uouw5Ume2jHO2Pi8Nymu4cz/UiHWDPeMyc/bQ==} engines: {node: '>= 14.6'} peerDependencies: @@ -9958,24 +11394,24 @@ packages: vue-router: optional: true dependencies: - '@intlify/shared': 9.3.0-beta.16 - '@intlify/vue-i18n-bridge': 0.8.0_vue-i18n@9.3.0-beta.16 + '@intlify/shared': 9.3.0-beta.17 + '@intlify/vue-i18n-bridge': 0.8.0_vue-i18n@9.3.0-beta.17 '@intlify/vue-router-bridge': 0.8.0_vue@3.2.47 - ufo: 1.0.1 + ufo: 1.1.1 vue: 3.2.47 vue-demi: 0.13.11_vue@3.2.47 - vue-i18n: 9.3.0-beta.16_vue@3.2.47 + vue-i18n: 9.3.0-beta.17_vue@3.2.47 dev: false - /vue-i18n/9.3.0-beta.16_vue@3.2.47: - resolution: {integrity: sha512-huhBeRB0SEvv2gIgCS7Zo06nb8AAhbPQCoB/vwDfbDNs8F+giv9QCmhEed+TkLTih/54JGnXkxN6tw1VZqVY/w==} + /vue-i18n/9.3.0-beta.17_vue@3.2.47: + resolution: {integrity: sha512-2r6QWgwCMjzpLb6RuIU8XPw8vU9kJu8OE4zGIOOnNq1gMYrzawO1LlK/yxG7ugWmzFA/IBqSIs6ADu0Z+PO/Ow==} engines: {node: '>= 14'} peerDependencies: vue: ^3.0.0 dependencies: - '@intlify/core-base': 9.3.0-beta.16 - '@intlify/shared': 9.3.0-beta.16 - '@intlify/vue-devtools': 9.3.0-beta.16 + '@intlify/core-base': 9.3.0-beta.17 + '@intlify/shared': 9.3.0-beta.17 + '@intlify/vue-devtools': 9.3.0-beta.17 '@vue/devtools-api': 6.4.5 vue: 3.2.47 dev: false @@ -10055,11 +11491,11 @@ packages: engines: {node: '>=12'} dev: true - /whatwg-url/11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} + /whatwg-url/12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} dependencies: - tr46: 3.0.0 + tr46: 4.1.1 webidl-conversions: 7.0.0 dev: true @@ -10105,6 +11541,22 @@ packages: hasBin: true dependencies: isexe: 2.0.0 + + /which/3.0.0: + resolution: {integrity: sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /why-is-node-running/2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 dev: true /wide-align/1.1.5: @@ -10116,7 +11568,6 @@ packages: /word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} - dev: true /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -10162,8 +11613,8 @@ packages: optional: true dev: true - /ws/8.12.0: - resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} + /ws/8.12.1: + resolution: {integrity: sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10175,8 +11626,8 @@ packages: optional: true dev: true - /ws/8.12.1: - resolution: {integrity: sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==} + /ws/8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10250,8 +11701,8 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - /yaml/2.1.3: - resolution: {integrity: sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==} + /yaml/2.2.1: + resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} engines: {node: '>= 14'} dev: true @@ -10278,6 +11729,11 @@ packages: engines: {node: '>=10'} dev: true + /yocto-queue/1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + /yorkie/2.0.0: resolution: {integrity: sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==} engines: {node: '>=4'} diff --git a/specs/fixtures/lazy/lang/en-GB.js b/specs/fixtures/lazy/lang/en-GB.js new file mode 100644 index 000000000..da8984b2a --- /dev/null +++ b/specs/fixtures/lazy/lang/en-GB.js @@ -0,0 +1,3 @@ +export default defineI18nLocale(async function (context, locale) { + return $fetch(`/api/${locale}`) +}) diff --git a/specs/fixtures/lazy/lang/en-GB.json b/specs/fixtures/lazy/lang/en-GB.json deleted file mode 100644 index 579679365..000000000 --- a/specs/fixtures/lazy/lang/en-GB.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "settings": { - "nest": { - "foo": { - "bar": { - "profile": "Profile" - } - } - } - } -} diff --git a/specs/fixtures/lazy/lang/en-GB.ts b/specs/fixtures/lazy/lang/en-GB.ts new file mode 100644 index 000000000..a0a58cbda --- /dev/null +++ b/specs/fixtures/lazy/lang/en-GB.ts @@ -0,0 +1,3 @@ +export default { + settings_nest_foo_bar_profile: 'Profile2' +} diff --git a/specs/fixtures/lazy/pages/index.vue b/specs/fixtures/lazy/pages/index.vue index 240ae6f3f..67a6f36ba 100644 --- a/specs/fixtures/lazy/pages/index.vue +++ b/specs/fixtures/lazy/pages/index.vue @@ -43,6 +43,7 @@ useHead({ {{ i18nHead }} {{ $t('about') }} -

{{ $t('settings.nest.foo.bar.profile') }}

+

{{ $t('settings.nest.foo.bar.profile') }}

+

{{ $t('settings_nest_foo_bar_profile') }}

diff --git a/specs/fixtures/lazy/server/api/[locale].ts b/specs/fixtures/lazy/server/api/[locale].ts new file mode 100644 index 000000000..218ee5e7a --- /dev/null +++ b/specs/fixtures/lazy/server/api/[locale].ts @@ -0,0 +1,23 @@ +import type { LocaleMessages, DefineLocaleMessage } from 'vue-i18n' + +const locales: LocaleMessages = { + 'en-GB': { + settings: { + nest: { + foo: { + bar: { + profile: 'Profile1' + } + } + } + } + } +} + +export default defineEventHandler(event => { + const locale = event.context.params?.locale + if (locale == null) { + return {} + } + return locales[locale] || {} +}) diff --git a/specs/helper.ts b/specs/helper.ts index 69b6f3a29..6f3b54928 100644 --- a/specs/helper.ts +++ b/specs/helper.ts @@ -1,4 +1,5 @@ import { JSDOM } from 'jsdom' +import { parse } from '@babel/parser' import type { Page } from 'playwright' @@ -60,3 +61,17 @@ export async function assertLocaleHeadWithDom(dom: Document, headSelector: strin } } } + +export function validateSyntax(code: string): boolean { + let ret = false + try { + const node = parse(code, { + allowImportExportEverywhere: true, + sourceType: 'module' + }) + ret = !node.errors.length + } catch (e) { + console.error(e) + } + return ret +} diff --git a/specs/lazy_load/__snapshots__/server.spec.ts.snap b/specs/lazy_load/__snapshots__/server.spec.ts.snap new file mode 100644 index 000000000..66ce7c226 --- /dev/null +++ b/specs/lazy_load/__snapshots__/server.spec.ts.snap @@ -0,0 +1,7 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`success 1`] = ` +"export default { + \\"hello\\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\\"Hello\\"])} +}" +`; diff --git a/specs/lazy_load.spec.ts b/specs/lazy_load/basic.spec.ts similarity index 87% rename from specs/lazy_load.spec.ts rename to specs/lazy_load/basic.spec.ts index 81dfc4184..aa78cf269 100644 --- a/specs/lazy_load.spec.ts +++ b/specs/lazy_load/basic.spec.ts @@ -1,14 +1,17 @@ import { test, expect } from 'vitest' import { fileURLToPath } from 'node:url' import { setup, url, createPage } from '@nuxt/test-utils' -import { getText, getData } from './helper' +import { getText, getData } from '../helper' await setup({ - rootDir: fileURLToPath(new URL(`./fixtures/lazy`, import.meta.url)), + rootDir: fileURLToPath(new URL(`../fixtures/lazy`, import.meta.url)), browser: true, // overrides nuxtConfig: { i18n: { + experimental: { + jsTsFormatResource: true + }, defaultLocale: 'en', langDir: 'lang', lazy: true, @@ -22,7 +25,7 @@ await setup({ { code: 'en-GB', iso: 'en-GB', - files: ['en.json', 'en-GB.json'], + files: ['en.json', 'en-GB.js', 'en-GB.ts'], name: 'English (UK)' }, { @@ -92,5 +95,6 @@ test('mutiple lazy loading', async () => { expect(await getText(page, 'title')).toEqual('Homepage') expect(await getText(page, '#link-about')).toEqual('About us') - expect(await getText(page, '#profile')).toEqual('Profile') + expect(await getText(page, '#profile-js')).toEqual('Profile1') + expect(await getText(page, '#profile-ts')).toEqual('Profile2') }) diff --git a/specs/lazy_load/server.spec.ts b/specs/lazy_load/server.spec.ts new file mode 100644 index 000000000..5d6d7a1f0 --- /dev/null +++ b/specs/lazy_load/server.spec.ts @@ -0,0 +1,94 @@ +import { test, expect, describe } from 'vitest' +import { fileURLToPath } from 'node:url' +import { setup, $fetch, fetch } from '@nuxt/test-utils' +import { validateSyntax } from '../helper' + +await setup({ + rootDir: fileURLToPath(new URL(`../fixtures/lazy`, import.meta.url)), + browser: true, + // overrides + nuxtConfig: { + i18n: { + experimental: { + jsTsFormatResource: true + }, + defaultLocale: 'en', + langDir: 'lang', + lazy: true, + locales: [ + { + code: 'en', + iso: 'en-US', + file: 'en.json', + name: 'English' + }, + { + code: 'en-GB', + iso: 'en-GB', + files: ['en.json', 'en-GB.js', 'en-GB.ts'], + name: 'English (UK)' + }, + { + code: 'fr', + iso: 'fr-FR', + file: 'fr.json5', + name: 'Français' + } + ] + } + } +}) + +test('success', async () => { + const code = await $fetch('/api/__i18n__', { + method: 'POST', + body: { + locale: 'en', + resource: { + hello: 'Hello' + } + } + }) + expect(validateSyntax(code)).toBe(true) + expect(code).toMatchSnapshot() +}) + +describe('fail', () => { + test('no locale param', async () => { + const res = await fetch('/api/__i18n__', { + method: 'POST', + body: JSON.stringify({ + resource: { + hello: 'Hello' + } + }) + }) + expect(res.status).toBe(400) + expect(res.statusText).toBe(`require the 'locale'`) + }) + + test('no resource param', async () => { + const res = await fetch('/api/__i18n__', { + method: 'POST', + body: JSON.stringify({ + locale: 'en' + }) + }) + expect(res.status).toBe(400) + expect(res.statusText).toBe(`require the 'resource'`) + }) + + test('include html code in resource', async () => { + const res = await fetch('/api/__i18n__', { + method: 'POST', + body: JSON.stringify({ + locale: 'en-tag', + resource: { + hello: '' + } + }) + }) + expect(res.status).toBe(400) + expect(res.statusText).toBe(`Detected HTML in '' message.`) + }) +}) diff --git a/src/bundler.ts b/src/bundler.ts index 783c52b7c..f8e8d627f 100644 --- a/src/bundler.ts +++ b/src/bundler.ts @@ -3,7 +3,9 @@ import { resolve } from 'pathe' import { extendWebpackConfig, extendViteConfig, addWebpackPlugin, addVitePlugin } from '@nuxt/kit' import VueI18nWebpackPlugin from '@intlify/unplugin-vue-i18n/webpack' import VueI18nVitePlugin from '@intlify/unplugin-vue-i18n/vite' -import { TransformMacroPlugin, TransformMacroPluginOptions } from './macros' +import { TransformMacroPlugin, TransformMacroPluginOptions } from './transform/macros' +import { ResourceProxyPlugin, ResourceProxyPluginOptions } from './transform/proxy' +import { ResourceDynamicPlugin, ResourceDynamicPluginOptions } from './transform/dynamic' import type { Nuxt } from '@nuxt/schema' import type { NuxtI18nOptions } from './types' @@ -34,9 +36,16 @@ export async function extendBundler( } debug('nitro.replace', nuxt.options.nitro.replace) + const proxyOptions: ResourceProxyPluginOptions = { + sourcemap: nuxt.options.sourcemap.server || nuxt.options.sourcemap.client + } + // extract macros from components const macroOptions: TransformMacroPluginOptions = { - dev: nuxt.options.dev, + sourcemap: nuxt.options.sourcemap.server || nuxt.options.sourcemap.client + } + + const dynamicOptions: ResourceDynamicPluginOptions = { sourcemap: nuxt.options.sourcemap.server || nuxt.options.sourcemap.client } @@ -49,14 +58,19 @@ export async function extendBundler( const webpack = await import('webpack').then(m => m.default || m) const webpackPluginOptions: PluginOptions = { - runtimeOnly: true + runtimeOnly: true, + allowDynamic: true, + strictMessage: nuxtOptions.precompile.strictMessage, + escapeHtml: nuxtOptions.precompile.escapeHtml } if (hasLocaleFiles && langPath) { webpackPluginOptions.include = [resolve(langPath, './**')] } - addWebpackPlugin(VueI18nWebpackPlugin(webpackPluginOptions)) + addWebpackPlugin(ResourceProxyPlugin.webpack(proxyOptions)) + addWebpackPlugin(VueI18nWebpackPlugin(webpackPluginOptions)) addWebpackPlugin(TransformMacroPlugin.webpack(macroOptions)) + addWebpackPlugin(ResourceDynamicPlugin.webpack(dynamicOptions)) extendWebpackConfig(config => { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- `config.plugins` is safe, so it's assigned with nuxt! @@ -78,14 +92,19 @@ export async function extendBundler( */ const vitePluginOptions: PluginOptions = { - runtimeOnly: true + runtimeOnly: true, + allowDynamic: true, + strictMessage: nuxtOptions.precompile.strictMessage, + escapeHtml: nuxtOptions.precompile.escapeHtml } if (hasLocaleFiles && langPath) { vitePluginOptions.include = [resolve(langPath, './**')] } - addVitePlugin(VueI18nVitePlugin(vitePluginOptions)) + addVitePlugin(ResourceProxyPlugin.vite(proxyOptions)) + addVitePlugin(VueI18nVitePlugin(vitePluginOptions)) addVitePlugin(TransformMacroPlugin.vite(macroOptions)) + addVitePlugin(ResourceDynamicPlugin.vite(dynamicOptions)) extendViteConfig(config => { if (config.define) { diff --git a/src/constants.ts b/src/constants.ts index 89895deef..aef2ec020 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -30,6 +30,13 @@ export const REDIRECT_ON_OPTIONS = { export const COMPONENT_OPTIONS_KEY = 'nuxtI18n' export const DEFAULT_OPTIONS = { + experimental: { + jsTsFormatResource: false + }, + precompile: { + strictMessage: true, + escapeHtml: false + }, vueI18n: undefined, locales: [] as string[], defaultLocale: '', @@ -62,4 +69,12 @@ export const DEFAULT_OPTIONS = { debug: false } as const +export const NUXT_I18N_RESOURCE_PROXY_ID = '@nuxtjs/i18n/__resource__' as const +export const NUXT_I18N_PRECOMPILE_ENDPOINT = '/api/__i18n__' as const // TODO: we night use `useRuntimeConfig`? +export const NUXT_I18N_PRECOMPILED_LOCALE_KEY = 'i18n-locales' as const // TODO: we night use `useRuntimeConfig`? +export const NUXT_I18N_TEMPLATE_OPTIONS_KEY = 'i18n.options.mjs' as const +export const NUXT_I18N_TEMPLATE_INTERNAL_KEY = 'i18n.internal.mjs' as const +export const NUXT_I18N_COMPOSABLE_DEFINE_ROUTE = 'defineI18nRoute' as const +export const NUXT_I18N_COMPOSABLE_DEFINE_LOCALE = 'defineI18nLocale' as const + export type NuxtI18nOptionsDefault = typeof DEFAULT_OPTIONS diff --git a/src/gen.ts b/src/gen.ts index e7bab8b9a..cf641ce58 100644 --- a/src/gen.ts +++ b/src/gen.ts @@ -1,13 +1,27 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + import createDebug from 'debug' import { isString, isRegExp, isFunction, isArray, isObject } from '@intlify/shared' import { generateJSON } from '@intlify/bundle-utils' -import { NUXT_I18N_MODULE_ID } from './constants' +import { + NUXT_I18N_MODULE_ID, + NUXT_I18N_RESOURCE_PROXY_ID, + NUXT_I18N_PRECOMPILE_ENDPOINT, + NUXT_I18N_PRECOMPILED_LOCALE_KEY, + NUXT_I18N_COMPOSABLE_DEFINE_LOCALE +} from './constants' import { genImport, genSafeVariableName, genDynamicImport } from 'knitwork' import { parse as parsePath, normalize } from 'pathe' +import fs from 'node:fs' +// @ts-ignore +import { transform as stripType } from '@mizchi/sucrase' +import { parse as _parseCode } from '@babel/parser' +import { asVirtualId } from './transform/utils' import type { NuxtI18nOptions, NuxtI18nInternalOptions, LocaleInfo } from './types' import type { NuxtI18nOptionsDefault } from './constants' import type { AdditionalMessages } from './messages' +import type { File } from '@babel/types' export type LoaderOptions = { localeCodes?: string[] @@ -31,40 +45,37 @@ export function generateLoaderOptions( ssr: boolean } = { dev: true, ssg: false, ssr: true } ) { - let genCode = '' - const localeInfo = options.localeInfo || [] - const syncLocaleFiles = new Set() - const asyncLocaleFiles = new Set() - - if (langDir) { - for (const locale of localeInfo) { - if (!syncLocaleFiles.has(locale) && !asyncLocaleFiles.has(locale)) { - ;(lazy ? asyncLocaleFiles : syncLocaleFiles).add(locale) - } - } - } - const generatedImports = new Map() const importMapper = new Map() + const convertToPairs = ({ file, files, path, paths }: LocaleInfo) => { + const _files = file ? [file] : files || [] + const _paths = path ? [path] : paths || [] + return _files.map((f, i) => ({ file: f, path: _paths[i] })) + } + const buildImportKey = (root: string, dir: string, base: string) => normalize(`${root ? `${root}/` : ''}${dir ? `${dir}/` : ''}${base}`) - function generateSyncImports(gen: string, filepath?: string) { - if (!filepath) { + function generateSyncImports(gen: string, absolutePath: string, relativePath?: string) { + if (!relativePath) { return gen } - const { root, dir, base, ext } = parsePath(filepath) + const { root, dir, base, ext } = parsePath(relativePath) const key = buildImportKey(root, dir, base) if (!generatedImports.has(key)) { - let loadPath = filepath + let loadPath = relativePath if (langDir) { - loadPath = resolveLocaleRelativePath(localesRelativeBase, langDir, filepath) + loadPath = resolveLocaleRelativePath(localesRelativeBase, langDir, relativePath) } const assertFormat = ext.slice(1) const variableName = genSafeVariableName(`locale_${convertToImportId(key)}`) - gen += `${genImport(loadPath, variableName, assertFormat ? { assert: { type: assertFormat } } : {})}\n` + gen += `${genImport( + genImportSpecifier(loadPath, ext, absolutePath), + variableName, + assertFormat ? { assert: { type: assertFormat } } : {} + )}\n` importMapper.set(key, variableName) generatedImports.set(key, loadPath) } @@ -72,12 +83,54 @@ export function generateLoaderOptions( return gen } - for (const { file, files } of syncLocaleFiles) { - ;(file ? [file] : files || []).forEach(f => { - genCode = generateSyncImports(genCode, f) + let genCode = '' + const localeInfo = options.localeInfo || [] + const syncLocaleFiles = new Set() + const asyncLocaleFiles = new Set() + + /** + * Prepare locale files for synthetic or asynthetic + */ + if (langDir) { + for (const locale of localeInfo) { + if (!syncLocaleFiles.has(locale) && !asyncLocaleFiles.has(locale)) { + ;(lazy ? asyncLocaleFiles : syncLocaleFiles).add(locale) + } + } + } + + /** + * Generate locale synthetic imports + */ + for (const localeInfo of syncLocaleFiles) { + convertToPairs(localeInfo).forEach(({ file, path }) => { + genCode = generateSyncImports(genCode, path, file) }) } + /** + * Strip info for code generation + */ + const stripPathFromLocales = (locales: any) => { + if (isArray(locales)) { + return locales.map(locale => { + if (isObject(locale)) { + const obj = { ...locale } + delete obj.path + delete obj.paths + return obj + } else { + return locale + } + }) + } else { + return locales + } + } + + /** + * Generate options + */ // prettier-ignore genCode += `${Object.entries(options).map(([rootKey, rootValue]) => { if (rootKey === 'nuxtI18nOptions') { @@ -99,7 +152,7 @@ export function generateLoaderOptions( genCodes += ` if (${rootKey}.${key}.messages) { console.warn("[${NUXT_I18N_MODULE_ID}]: Cannot include 'messages' option in '${loaderFilename}'. Please use Lazy-load translations."); ${rootKey}.${key}.messages = {}; }\n` } } else { - genCodes += ` ${rootKey}.${key} = ${toCode(value)}\n` + genCodes += ` ${rootKey}.${key} = ${toCode(key === 'locales' ? stripPathFromLocales(value) : value)}\n` } } genCodes += ` return nuxtI18nOptions\n` @@ -112,7 +165,7 @@ export function generateLoaderOptions( }).join(`,`)}})\n` } else if (rootKey === 'nuxtI18nInternalOptions') { return `export const ${rootKey} = Object({${Object.entries(rootValue).map(([key, value]) => { - return `${key}: ${toCode(value)}` + return `${key}: ${toCode(key === '__normalizedLocales' ? stripPathFromLocales(value) : value)}` }).join(`,`)}})\n` } else if (rootKey === 'localeInfo') { let codes = `export const localeMessages = {\n` @@ -125,13 +178,12 @@ export function generateLoaderOptions( return `{ key: ${toCode(generatedImports.get(key))}, load: () => Promise.resolve(${importMapper.get(key)}) }` })}],\n` } - for (const { code, file, files } of asyncLocaleFiles) { - const dynamicPaths = file ? [file] : files || [] - codes += ` ${toCode(code)}: [${dynamicPaths.map(filepath => { - const { root, dir, base } = parsePath(filepath) + for (const localeInfo of asyncLocaleFiles) { + codes += ` ${toCode(localeInfo.code)}: [${convertToPairs(localeInfo).map(({ file, path }) => { + const { root, dir, base, ext } = parsePath(file) const key = buildImportKey(root, dir, base) - const loadPath = resolveLocaleRelativePath(localesRelativeBase, langDir, filepath) - return `{ key: ${toCode(loadPath)}, load: ${genDynamicImport(loadPath, { comment: `webpackChunkName: "lang_${normalizeWithUnderScore(key)}"` })} }` + const loadPath = resolveLocaleRelativePath(localesRelativeBase, langDir, file) + return `{ key: ${toCode(loadPath)}, load: ${genDynamicImport(genImportSpecifier(loadPath, ext, path), { comment: `webpackChunkName: "lang_${normalizeWithUnderScore(key)}"` })} }` })}],\n` } } @@ -144,7 +196,12 @@ export function generateLoaderOptions( } }).join('\n')}` + /** + * Generate meta info + */ genCode += `export const NUXT_I18N_MODULE_ID = ${toCode(NUXT_I18N_MODULE_ID)}\n` + genCode += `export const NUXT_I18N_PRECOMPILE_ENDPOINT = ${toCode(NUXT_I18N_PRECOMPILE_ENDPOINT)}\n` + genCode += `export const NUXT_I18N_PRECOMPILED_LOCALE_KEY = ${toCode(NUXT_I18N_PRECOMPILED_LOCALE_KEY)}\n` genCode += `export const isSSG = ${toCode(misc.ssg)}\n` genCode += `export const isSSR = ${toCode(misc.ssr)}\n` @@ -152,6 +209,77 @@ export function generateLoaderOptions( return genCode } +const TARGET_TS_EXTENSIONS = ['.ts', '.cts', '.mts'] + +function genImportSpecifier(id: string, ext: string, absolutePath: string) { + if (['.js', '.cjs', '.mjs', ...TARGET_TS_EXTENSIONS].includes(ext)) { + const code = readCode(absolutePath, ext) + const parsed = parseCode(code, absolutePath) + const anaylzed = scanProgram(parsed.program) + // prettier-ignore + return anaylzed === 'arrow-function' || anaylzed === 'function' + ? `${asVirtualId(NUXT_I18N_RESOURCE_PROXY_ID)}?target=${id}` + : id + } else { + return id + } +} + +const PARSE_CODE_CACHES = new Map>() + +function parseCode(code: string, path: string) { + if (PARSE_CODE_CACHES.has(path)) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return PARSE_CODE_CACHES.get(path)! + } + + const parsed = _parseCode(code, { + allowImportExportEverywhere: true, + sourceType: 'module' + }) + + PARSE_CODE_CACHES.set(path, parsed) + return parsed +} + +function scanProgram(program: File['program']) { + let ret: false | 'object' | 'function' | 'arrow-function' = false + for (const node of program.body) { + if (node.type === 'ExportDefaultDeclaration') { + if (node.declaration.type === 'ObjectExpression') { + ret = 'object' + break + } else if ( + node.declaration.type === 'CallExpression' && + node.declaration.callee.type === 'Identifier' && + node.declaration.callee.name === NUXT_I18N_COMPOSABLE_DEFINE_LOCALE + ) { + const [fnNode] = node.declaration.arguments + if (fnNode.type === 'FunctionExpression') { + ret = 'function' + break + } else if (fnNode.type === 'ArrowFunctionExpression') { + ret = 'arrow-function' + break + } + } + } + } + return ret +} + +export function readCode(absolutePath: string, ext: string) { + let code = fs.readFileSync(absolutePath, 'utf-8').toString() + if (TARGET_TS_EXTENSIONS.includes(ext)) { + const out = stripType(code, { + transforms: ['jsx'], + keepUnusedImports: true + }) + code = out.code + } + return code +} + const IMPORT_ID_CACHES = new Map() const normalizeWithUnderScore = (name: string) => name.replace(/-/g, '_').replace(/\./g, '_').replace(/\//g, '_') @@ -172,7 +300,6 @@ function resolveLocaleRelativePath(relativeBase: string, langDir: string, file: return normalize(`${relativeBase}/${langDir}/${file}`) } -// eslint-disable-next-line @typescript-eslint/no-explicit-any function generateVueI18nOptions(options: Record, dev: boolean): string { let genCode = 'Object({' for (const [key, value] of Object.entries(options)) { @@ -192,7 +319,6 @@ function generateVueI18nOptions(options: Record, dev: boolean): str return genCode } -// eslint-disable-next-line @typescript-eslint/no-explicit-any function generateAdditionalMessages(value: Record, dev: boolean): string { let genCode = 'Object({' for (const [locale, messages] of Object.entries(value)) { @@ -208,14 +334,12 @@ function generateAdditionalMessages(value: Record, dev: boolean): s return genCode } -// eslint-disable-next-line @typescript-eslint/no-explicit-any export function stringifyObj(obj: Record): string { return `Object({${Object.entries(obj) .map(([key, value]) => `${JSON.stringify(key)}:${toCode(value)}`) .join(`,`)}})` } -// eslint-disable-next-line @typescript-eslint/no-explicit-any export function toCode(code: any): string { if (code === null) { return `null` @@ -247,3 +371,5 @@ export function toCode(code: any): string { return code + `` } + +/* eslint-enable @typescript-eslint/no-explicit-any */ diff --git a/src/module.ts b/src/module.ts index ff37bcd5a..97e215fe1 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1,13 +1,34 @@ import createDebug from 'debug' +import { promises as fs } from 'node:fs' import { isBoolean, isObject, isString } from '@intlify/shared' -import { defineNuxtModule, isNuxt2, isNuxt3, getNuxtVersion, addPlugin, addTemplate, addImports } from '@nuxt/kit' +import { + defineNuxtModule, + isNuxt2, + isNuxt3, + getNuxtVersion, + addPlugin, + addTemplate, + addImports, + addServerHandler, + useLogger, + addPrerenderRoutes // TODO: remove? +} from '@nuxt/kit' import { resolve, relative, isAbsolute } from 'pathe' +import { defu } from 'defu' import { setupAlias, resolveVueI18nAlias } from './alias' import { setupPages } from './pages' import { extendMessages } from './messages' import { extendBundler } from './bundler' import { generateLoaderOptions } from './gen' -import { NUXT_I18N_MODULE_ID, DEFAULT_OPTIONS } from './constants' +import { + NUXT_I18N_MODULE_ID, + DEFAULT_OPTIONS, + NUXT_I18N_TEMPLATE_OPTIONS_KEY, + NUXT_I18N_PRECOMPILE_ENDPOINT, + NUXT_I18N_PRECOMPILED_LOCALE_KEY, + NUXT_I18N_COMPOSABLE_DEFINE_ROUTE, + NUXT_I18N_COMPOSABLE_DEFINE_LOCALE +} from './constants' import { formatMessage, getNormalizedLocales, resolveLocales, getPackageManagerType } from './utils' import { distDir, runtimeDir, pkgModulesDir } from './dirs' @@ -29,9 +50,15 @@ export default defineNuxtModule({ }, defaults: DEFAULT_OPTIONS, async setup(i18nOptions, nuxt) { + const logger = useLogger(NUXT_I18N_MODULE_ID) + const options = i18nOptions as Required debug('options', options) + if (options.experimental.jsTsFormatResource) { + logger.warn(formatMessage('JS / TS extension format is experimental')) + } + /** * Check vertions */ @@ -60,6 +87,20 @@ export default defineNuxtModule({ ) } + /** + * setup runtime config + */ + + nuxt.options.runtimeConfig.public.i18n = defu(nuxt.options.runtimeConfig.public.i18n, { + experimental: options.experimental, + baseUrl: options.baseUrl + // TODO: we should support more i18n module options. welcome PRs :-) + }) + + nuxt.options.runtimeConfig.i18n = defu(nuxt.options.runtimeConfig.i18n, { + precompile: options.precompile + }) + /** * resolve lang directory */ @@ -146,7 +187,7 @@ export default defineNuxtModule({ debug('localesRelativeBasePath', localesRelativeBasePath) addTemplate({ - filename: 'i18n.options.mjs', + filename: NUXT_I18N_TEMPLATE_OPTIONS_KEY, write: true, getContents: () => { return generateLoaderOptions( @@ -211,6 +252,63 @@ export default defineNuxtModule({ langPath }) + /** + * extend server handlers + */ + + addServerHandler({ + route: NUXT_I18N_PRECOMPILE_ENDPOINT, + handler: resolve(runtimeDir, './server/precompile') + }) + + // NOTE: Maybe, there is a better way to pre-compile resources using prerender... + // addPrerenderRoutes([NUXT_I18N_PRECOMPILE_ENDPOINT]) + + /** + * extend nitro storages + */ + + const storageKey = NUXT_I18N_PRECOMPILED_LOCALE_KEY.split('-').join(':') + nuxt.hook('nitro:config', nitro => { + nitro.storage = nitro.storage || {} + nitro.storage[storageKey] = { + // nitro.devStorage = nitro.devStorage || {} + // nitro.devStorage['i18n:locales'] = { + driver: 'fs', + base: resolve(nuxt.options.buildDir, NUXT_I18N_PRECOMPILED_LOCALE_KEY) + } + // NOTE: Maybe, there is a better way to pre-compile resources using prerender... + // nitro.bundledStorage = nitro.bundledStorage || [] + // nitro.bundledStorage.push('/i18n/locales') + }) + + /** + * copy pre-compiled locale resources to `public` dir from `.nuxt/i18n-locale` + * + * NOTE: + * There has to be a smart way to do this, one that is nitro. + * (maybe, I think that is prerender) + */ + + if (nuxt.options._generate) { + nuxt.hook('nitro:build:before', async nitro => { + const buildLocaleDir = nitro.options.storage[storageKey].base + await nitro.storage.watch(async (event, key) => { + if (event === 'update') { + const buildKey = `build:${NUXT_I18N_PRECOMPILED_LOCALE_KEY}` + if (key.startsWith(buildKey)) { + const locale = key.split(':')[2] + const source = resolve(buildLocaleDir, locale) + const target = resolve(nitro.options.output.publicDir, `${NUXT_I18N_PRECOMPILED_LOCALE_KEY}-${locale}`) + const localeCode = await fs.readFile(source, 'utf-8') + await fs.writeFile(target, localeCode, 'utf-8') + debug(`generate locale file: ${source} -> ${target}`) + } + } + }) + }) + } + /** * auto imports */ @@ -229,7 +327,8 @@ export default defineNuxtModule({ 'useLocaleHead', 'useBrowserLocale', 'useCookieLocale', - 'defineI18nRoute' + NUXT_I18N_COMPOSABLE_DEFINE_ROUTE, + NUXT_I18N_COMPOSABLE_DEFINE_LOCALE ].map(key => ({ name: key, as: key, @@ -287,6 +386,9 @@ function checkOptions(options: NuxtI18nOptions) { type MaybePromise = T | Promise type LocaleSwitch = { oldLocale: T; newLocale: T } +type ModulePublicRuntimeConfig = Pick, 'baseUrl' | 'experimental'> +type ModulePrivateRuntimeConfig = Pick, 'precompile'> + declare module '@nuxt/schema' { interface NuxtConfig { i18n?: NuxtI18nOptions @@ -295,6 +397,17 @@ declare module '@nuxt/schema' { interface NuxtHooks { 'i18n:extend-messages': (messages: LocaleMessages[], localeCodes: string[]) => Promise } + + interface ConfigSchema { + runtimeConfig: { + public?: { + i18n?: ModulePublicRuntimeConfig + } + private?: { + i18n?: ModulePrivateRuntimeConfig + } + } + } } declare module '#app' { diff --git a/src/options.d.ts b/src/options.d.ts index 881688aed..019a4d76b 100644 --- a/src/options.d.ts +++ b/src/options.d.ts @@ -28,6 +28,8 @@ export const nuxtI18nOptions: DeepRequired = {} export const nuxtI18nOptionsDefault: NuxtI18nOptionsDefault = {} export const nuxtI18nInternalOptions: DeepRequired = {} export const NUXT_I18N_MODULE_ID = '' +export const NUXT_I18N_PRECOMPILE_ENDPOINT = '' +export const NUXT_I18N_PRECOMPILED_LOCALE_KEY = '' export const isSSG = false export const isSSR = false diff --git a/src/pages.ts b/src/pages.ts index a05c7f167..c627988b5 100644 --- a/src/pages.ts +++ b/src/pages.ts @@ -8,6 +8,7 @@ import { walk } from 'estree-walker' import MagicString from 'magic-string' import { formatMessage, getRoutePath, parseSegment } from './utils' import { resolve, parse as parsePath } from 'pathe' +import { NUXT_I18N_COMPOSABLE_DEFINE_ROUTE } from './constants' import type { Nuxt, NuxtPage } from '@nuxt/schema' import type { RouteOptionsResolver, ComputedRouteOptions, LocalizeRoutesPrefixableOptions } from 'vue-i18n-routing' @@ -246,7 +247,7 @@ function readComponent(target: string) { const content = fs.readFileSync(target, 'utf8').toString() const { descriptor } = parseSFC(content) - if (!content.includes('defineI18nRoute')) { + if (!content.includes(NUXT_I18N_COMPOSABLE_DEFINE_ROUTE)) { return options } @@ -265,7 +266,7 @@ function readComponent(target: string) { if ( node.type === 'CallExpression' && node.callee.type === 'Identifier' && - node.callee.name === 'defineI18nRoute' + node.callee.name === NUXT_I18N_COMPOSABLE_DEFINE_ROUTE ) { const arg = node.arguments[0] if (arg.type === 'ObjectExpression') { diff --git a/src/runtime/composables.ts b/src/runtime/composables.ts index 7018db154..eb87b02cf 100644 --- a/src/runtime/composables.ts +++ b/src/runtime/composables.ts @@ -15,7 +15,7 @@ import type { DetectBrowserLanguageOptions } from '#build/i18n.options.mjs' export * from 'vue-i18n' export type { LocaleObject } from 'vue-i18n-routing' -import type { Locale } from 'vue-i18n' +import type { Locale, LocaleMessages, DefineLocaleMessage } from 'vue-i18n' /** * The `useRouteBaseName` composable returns function that get the route base name. @@ -233,3 +233,36 @@ export function defineI18nRoute(route: I18nRoute | false): void { warnRuntimeUsage('defineI18nRoute') } } + +type MaybePromise = T | Promise + +/** + * The `defineI18nLocale` defines a composable function to dynamically load locale messages. + * + * @remarks + * This function is used to dynamically load a locale with lazy-load translations. + * + * You can use at JavaScript and TypeScript extension formats. + * + * @param context - A Nuxt Application instance that is passed from nuxt i18n module. + * @param locale - A target locale that is passed from nuxt i18n module. + * + * @returns Returns the locale messages object that will be resolved with Promise. + */ +export type LocaleLoader, Locales = Locale> = ( + context: ReturnType, + locale: Locales +) => MaybePromise + +/** + * Define locale loader for dynamic locale messages loading + * + * @param loader - The target locale loader + * + * @returns The defined locale loader + */ +export function defineI18nLocale, Locales = Locale>( + loader: LocaleLoader +): LocaleLoader { + return loader +} diff --git a/src/runtime/internal.ts b/src/runtime/internal.ts index 020cc3bb8..a2df68f6d 100644 --- a/src/runtime/internal.ts +++ b/src/runtime/internal.ts @@ -19,6 +19,7 @@ import { localeMessages, additionalMessages, NUXT_I18N_MODULE_ID, + NUXT_I18N_PRECOMPILE_ENDPOINT, isSSG } from '#build/i18n.options.mjs' @@ -105,15 +106,27 @@ function deepCopy(src: Record, des: Record) { } } -async function loadMessage(context: NuxtApp, loader: () => Promise) { +async function loadMessage(context: NuxtApp, loader: () => Promise, locale: Locale) { + const i18nConfig = context.$config.public?.i18n + let message: LocaleMessages | null = null try { + __DEBUG__ && console.log('loadMessage: (locale) -', locale) const getter = await loader().then(r => r.default || r) - // TODO: support for js, cjs, mjs if (isFunction(getter)) { - console.error(formatMessage('Not support executable file (e.g. js, cjs, mjs)')) + if (i18nConfig.experimental?.jsTsFormatResource) { + message = await getter(context, locale).then((r: any) => r.default || r) + __DEBUG__ && console.log('loadMessage: dynamic load', message) + } else { + console.warn( + formatMessage( + 'Not support js / ts extension format as default. you can do enable with `i18n.experimental.jsTsFormatResource: true` (experimental)' + ) + ) + } } else { message = getter + __DEBUG__ && console.log('loadMessage: load', message) } } catch (e: any) { // eslint-disable-next-line no-console @@ -139,7 +152,7 @@ export async function loadLocale( if (loadedMessages.has(key)) { message = loadedMessages.get(key) } else { - message = await loadMessage(context, load) + message = await loadMessage(context, load, locale) if (message != null) { loadedMessages.set(key, message) } @@ -155,7 +168,7 @@ export async function loadLocale( if (loadedMessages.has(key)) { message = loadedMessages.get(key) } else { - message = await loadMessage(context, load) + message = await loadMessage(context, load, locale) if (message != null) { loadedMessages.set(key, message) } @@ -183,7 +196,7 @@ export async function loadAdditionalLocale( if (process.server || process.dev || !loadedAdditionalLocales.includes(locale)) { const additionalLoaders = additionalMessages[locale] || [] for (const additionalLoader of additionalLoaders) { - const message = await loadMessage(context, additionalLoader) + const message = await loadMessage(context, additionalLoader, locale) if (message != null) { merger(locale, message) loadedAdditionalLocales.push(locale) @@ -232,7 +245,6 @@ export function getLocaleCookie( } else if (process.server) { const cookie = useRequestHeaders(['cookie']) if ('cookie' in cookie) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any const parsedCookie = parse((cookie as any)['cookie']) as Record localeCode = parsedCookie[cookieKey] __DEBUG__ && console.log('getLocaleCookie cookie', parsedCookie[cookieKey]) @@ -478,4 +490,22 @@ export function getDomainFromLocale(localeCode: Locale, locales: LocaleObject[], console.warn(formatMessage('Could not find domain name for locale ' + localeCode)) } +export async function loadResource( + context: NuxtApp, + locale: Locale, + loader: (context: NuxtApp, locale: Locale) => Promise> +) { + const loaded = await loader(context, locale) + const precompiledCode = (await $fetch(NUXT_I18N_PRECOMPILE_ENDPOINT, { + method: 'POST', + body: { + locale, + resource: loaded + } + })) as string + // TODO: We should strictly check if this is really a safe way to get evaluated codes + const data = 'data:text/javascript;charset=utf-8,' + encodeURIComponent(precompiledCode) + return await import(/* @vite-ignore */ data).then(m => m.default || m) +} + /* eslint-enable @typescript-eslint/no-explicit-any */ diff --git a/src/runtime/server/precompile.ts b/src/runtime/server/precompile.ts new file mode 100644 index 000000000..ad718e9f5 --- /dev/null +++ b/src/runtime/server/precompile.ts @@ -0,0 +1,48 @@ +import { defineEventHandler, readBody, setResponseHeader, createError } from 'h3' +import { generateJSON } from '@intlify/bundle-utils' +import { prefixStorage } from 'unstorage' +// @ts-ignore TODO: fix resolve +import { useStorage, useRuntimeConfig } from '#imports' + +import type { Locale, LocaleMessages, DefineLocaleMessage } from 'vue-i18n' + +const NUXT_I18N_PRECOMPILED_LOCALE_KEY = 'i18n-locales' +const localeStorage = prefixStorage(useStorage(), NUXT_I18N_PRECOMPILED_LOCALE_KEY.split('-').join(':')) + +const resourceKey = (locale: Locale) => `${locale}.js` + +export default defineEventHandler(async event => { + const { locale, resource } = await readBody<{ + locale: Locale + resource: LocaleMessages + }>(event) + + if (!locale) { + throw createError({ statusMessage: `require the 'locale'`, statusCode: 400 }) + } + if (!resource) { + throw createError({ statusMessage: `require the 'resource'`, statusCode: 400 }) + } + + let localeCode = await localeStorage.getItem(resourceKey(locale)) + if (!localeCode) { + const errors = [] as string[] + const config = useRuntimeConfig() + const { code } = generateJSON(JSON.stringify(resource), { + env: process.dev ? 'development' : 'production', + strictMessage: config.i18n.strictMessage, + escapeHtml: config.i18n.escapeHtml, + onError: error => { + errors.push(error) + } + }) + if (errors.length > 0) { + throw createError({ statusMessage: errors.join('|'), statusCode: 400 }) + } + await localeStorage.setItem(resourceKey(locale), code) + localeCode = code + } + + await setResponseHeader(event, 'content-type', 'text/javascript') + return localeCode.toString() +}) diff --git a/src/transform/dynamic.ts b/src/transform/dynamic.ts new file mode 100644 index 000000000..05f7a49d5 --- /dev/null +++ b/src/transform/dynamic.ts @@ -0,0 +1,60 @@ +import createDebug from 'debug' +import { pathToFileURL } from 'node:url' +import { createUnplugin } from 'unplugin' +import { parseQuery, parseURL } from 'ufo' +import MagicString from 'magic-string' +import { VIRTUAL_PREFIX_HEX } from './utils' +import { NUXT_I18N_COMPOSABLE_DEFINE_LOCALE } from '../constants' + +export interface ResourceDynamicPluginOptions { + sourcemap?: boolean +} + +const debug = createDebug('@nuxtjs/i18n:transform:dynamic') + +export const ResourceDynamicPlugin = createUnplugin((options: ResourceDynamicPluginOptions = {}, meta) => { + debug('options', options, meta) + + return { + name: 'nuxtjs:i18n-resource-proxy', + enforce: 'post', + + transformInclude(id) { + debug('transformInclude', id) + + if (!id || id.startsWith(VIRTUAL_PREFIX_HEX)) { + return false + } + + const { pathname, search } = parseURL(decodeURIComponent(pathToFileURL(id).href)) + return /\.([c|m]?[j|t]s)$/.test(pathname) && !!parseQuery(search).dynamic + }, + + transform(code, id) { + debug('transform', id) + + const { pathname } = parseURL(decodeURIComponent(pathToFileURL(id).href)) + const s = new MagicString(code) + + function result() { + if (s.hasChanged()) { + return { + code: s.toString(), + map: + options.sourcemap && !/\.([c|m]?ts)$/.test(pathname) + ? s.generateMap({ source: id, includeContent: true }) + : undefined + } + } + } + + const match = code.match(new RegExp(`\\b${NUXT_I18N_COMPOSABLE_DEFINE_LOCALE}\\s*`)) + if (match?.[0]) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + s.remove(match.index!, match.index! + match[0].length) + } + + return result() + } + } +}) diff --git a/src/macros.ts b/src/transform/macros.ts similarity index 86% rename from src/macros.ts rename to src/transform/macros.ts index 0c7682659..5c353acc0 100644 --- a/src/macros.ts +++ b/src/transform/macros.ts @@ -11,13 +11,14 @@ import { pathToFileURL } from 'node:url' import { createUnplugin } from 'unplugin' import { parseQuery, parseURL } from 'ufo' import MagicString from 'magic-string' +import { VIRTUAL_PREFIX_HEX } from './utils' +import { NUXT_I18N_COMPOSABLE_DEFINE_ROUTE } from '../constants' export interface TransformMacroPluginOptions { - dev?: boolean sourcemap?: boolean } -const debug = createDebug('@nuxtjs/i18n:macros') +const debug = createDebug('@nuxtjs/i18n:transform:macros') /** * TODO: @@ -31,7 +32,7 @@ export const TransformMacroPlugin = createUnplugin((options: TransformMacroPlugi enforce: 'post', transformInclude(id) { - if (!id || id.startsWith('\x00')) { + if (!id || id.startsWith(VIRTUAL_PREFIX_HEX)) { return false } const { pathname, search } = parseURL(decodeURIComponent(pathToFileURL(id).href)) @@ -57,7 +58,7 @@ export const TransformMacroPlugin = createUnplugin((options: TransformMacroPlugi // tree-shake out any runtime references to the macro. // we do this first as it applies to all files, not just those with the query - const match = code.match(new RegExp(`\\b${'defineI18nRoute'}\\s*\\(\\s*`)) + const match = code.match(new RegExp(`\\b${NUXT_I18N_COMPOSABLE_DEFINE_ROUTE}\\s*\\(\\s*`)) if (match?.[0]) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion s.overwrite(match.index!, match.index! + match[0].length, `/*#__PURE__*/ false && ${match[0]}`) diff --git a/src/transform/proxy.ts b/src/transform/proxy.ts new file mode 100644 index 000000000..0aa122e4e --- /dev/null +++ b/src/transform/proxy.ts @@ -0,0 +1,118 @@ +import createDebug from 'debug' +import { dirname, resolve } from 'node:path' +import { createUnplugin } from 'unplugin' +import { parseQuery, parseURL } from 'ufo' +import { isString } from '@intlify/shared' +import MagicString from 'magic-string' +// @ts-ignore +import { transform as stripType } from '@mizchi/sucrase' +import { getVirtualId, VIRTUAL_PREFIX_HEX } from './utils' +import { + NUXT_I18N_TEMPLATE_OPTIONS_KEY, + NUXT_I18N_TEMPLATE_INTERNAL_KEY, + NUXT_I18N_RESOURCE_PROXY_ID +} from '../constants' + +export interface ResourceProxyPluginOptions { + sourcemap?: boolean +} + +const debug = createDebug('@nuxtjs/i18n:transform:proxy') + +export const ResourceProxyPlugin = createUnplugin((options: ResourceProxyPluginOptions = {}, meta) => { + debug('options', options, meta) + + return { + name: 'nuxtjs:i18n-resource-proxy', + + resolveId(id, importer) { + debug('resolveId', id, importer) + const { pathname, search } = parseURL(decodeURIComponent(getVirtualId(id))) + const query = parseQuery(search) + + if (pathname === NUXT_I18N_RESOURCE_PROXY_ID) { + // console.log('resolveId', id, importer, pathname, query) + if (importer?.endsWith(NUXT_I18N_TEMPLATE_OPTIONS_KEY)) { + return { + id: `${id}&from=${importer}`, + moduleSideEffects: true + } + } else if (isString(query.from) && query.from.endsWith(NUXT_I18N_TEMPLATE_OPTIONS_KEY)) { + return { + id, + moduleSideEffects: true + } + } + } + + return null + }, + + async load(id) { + debug('load', id) + const { pathname, search } = parseURL(decodeURIComponent(getVirtualId(id))) + const query = parseQuery(search) + + if (pathname === NUXT_I18N_RESOURCE_PROXY_ID) { + if (isString(query.target) && isString(query.from)) { + const baseDir = dirname(query.from) + // console.log('load ->', id, pathname, query, baseDir) + // prettier-ignore + const code = `import { loadResource, formatMessage } from '#build/${NUXT_I18N_TEMPLATE_INTERNAL_KEY}' +import { NUXT_I18N_PRECOMPILED_LOCALE_KEY, isSSG } from '#build/${NUXT_I18N_TEMPLATE_OPTIONS_KEY}' +export default async function(context, locale) { + if (process.dev || process.server || !isSSG) { + __DEBUG__ && console.log('loadResource', locale) + const loader = await import(${JSON.stringify(`${resolve(baseDir, query.target)}?dynamic=true`)}).then(m => m.default || m) + return await loadResource(context, locale, loader) + } else { + __DEBUG__ && console.log('load precompiled resource', locale) + let mod = null + try { + mod = await import(/* @vite-ignore */ \`/\${NUXT_I18N_PRECOMPILED_LOCALE_KEY}-\${locale}.js\`).then( + m => m.default || m + ) + } catch (e) { + console.error(format(e.message)) + } + return mod || {} + } +}` + // console.log(`code ->`, code) + + const s = new MagicString(code) + return { + code: s.toString(), + map: options.sourcemap ? s.generateMap({ source: id, includeContent: true }) : undefined + } + } + } + }, + + transformInclude(id) { + debug('transformInclude', id) + + if (id.startsWith(VIRTUAL_PREFIX_HEX) || !/\.([c|m]?ts)$/.test(id)) { + return false + } else { + return true + } + }, + + transform(code, id) { + debug('transform', id) + + const out = stripType(code, { + transforms: ['jsx'], + keepUnusedImports: true + }) + + const s = new MagicString(out.code) + + return { + code: s.toString(), + map: options.sourcemap ? s.generateMap({ source: id, includeContent: true }) : undefined + } + } + } +}) diff --git a/src/transform/utils.ts b/src/transform/utils.ts new file mode 100644 index 000000000..811d07708 --- /dev/null +++ b/src/transform/utils.ts @@ -0,0 +1,17 @@ +import type { UnpluginContextMeta } from 'unplugin' + +export const VIRTUAL_PREFIX = '\0' as const +export const VIRTUAL_PREFIX_HEX = '\x00' as const + +export function getVirtualId(id: string, framework: UnpluginContextMeta['framework'] = 'vite') { + // prettier-ignore + return framework === 'vite' + ? id.startsWith(VIRTUAL_PREFIX) + ? id.slice(VIRTUAL_PREFIX.length) + : '' + : id +} + +export function asVirtualId(id: string, framework: UnpluginContextMeta['framework'] = 'vite') { + return framework === 'vite' ? VIRTUAL_PREFIX + id : id +} diff --git a/src/types.ts b/src/types.ts index a18fbe4bc..10a4a51d8 100644 --- a/src/types.ts +++ b/src/types.ts @@ -3,10 +3,6 @@ import type { Locale, I18nOptions } from 'vue-i18n' export type RedirectOnOptions = 'all' | 'root' | 'no prefix' -export interface LazyOptions { - skipNuxtState?: boolean -} - export interface DetectBrowserLanguageOptions { alwaysRedirect?: boolean cookieCrossOrigin?: boolean @@ -36,11 +32,22 @@ export type CustomRoutePages = { } } +export interface ExperimentalFeatures { + jsTsFormatResource?: boolean +} + +export interface LocaleMessagePrecompileOptions { + strictMessage?: boolean + escapeHtml?: boolean +} + export type NuxtI18nOptions = { + experimental?: ExperimentalFeatures + precompile?: LocaleMessagePrecompileOptions differentDomains?: boolean detectBrowserLanguage?: DetectBrowserLanguageOptions | false langDir?: string | null - lazy?: boolean | LazyOptions + lazy?: boolean pages?: CustomRoutePages customRoutes?: 'page' | 'config' /** diff --git a/src/utils.ts b/src/utils.ts index 420323cb8..1d62a38b6 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -54,7 +54,7 @@ export function getNormalizedLocales(locales: NuxtI18nOptions['locales']): Local } export async function resolveLocales(path: string, locales: LocaleObject[]): Promise { - const files = await resolveFiles(path, '**/*{json,json5,yaml,yml}') + const files = await resolveFiles(path, '**/*{json,json5,yaml,yml,js,cjs,mjs,ts,cts,mts}') const find = (f: string) => files.find(file => file === resolve(path, f)) return (locales as LocaleInfo[]).map(locale => { if (locale.file) { diff --git a/test/__snapshots__/gen.test.ts.snap b/test/__snapshots__/gen.test.ts.snap index 6e701c88b..875f53bf9 100644 --- a/test/__snapshots__/gen.test.ts.snap +++ b/test/__snapshots__/gen.test.ts.snap @@ -1,4 +1,4 @@ -// Vitest Snapshot v1 +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`basic 1`] = ` "import locale_en from \\"../locales/en.json\\" assert { type: \\"json\\" }; @@ -24,10 +24,12 @@ export const resolveNuxtI18nOptions = async (context) => { return nuxtI18nOptions } -export const nuxtI18nOptionsDefault = Object({vueI18n: undefined,locales: [],defaultLocale: \\"\\",defaultDirection: \\"ltr\\",routesNameSeparator: \\"___\\",trailingSlash: false,defaultLocaleRouteNameSuffix: \\"default\\",strategy: \\"prefix_except_default\\",lazy: false,langDir: null,rootRedirect: null,detectBrowserLanguage: Object({\\"alwaysRedirect\\":false,\\"cookieCrossOrigin\\":false,\\"cookieDomain\\":null,\\"cookieKey\\":\\"i18n_redirected\\",\\"cookieSecure\\":false,\\"fallbackLocale\\":\\"\\",\\"redirectOn\\":\\"root\\",\\"useCookie\\":true}),differentDomains: false,baseUrl: \\"\\",dynamicRouteParams: false,customRoutes: \\"page\\",pages: Object({}),skipSettingLocaleOnNavigate: false,types: undefined,debug: false}) +export const nuxtI18nOptionsDefault = Object({experimental: Object({\\"jsTsFormatResource\\":false}),precompile: Object({\\"strictMessage\\":true,\\"escapeHtml\\":false}),vueI18n: undefined,locales: [],defaultLocale: \\"\\",defaultDirection: \\"ltr\\",routesNameSeparator: \\"___\\",trailingSlash: false,defaultLocaleRouteNameSuffix: \\"default\\",strategy: \\"prefix_except_default\\",lazy: false,langDir: null,rootRedirect: null,detectBrowserLanguage: Object({\\"alwaysRedirect\\":false,\\"cookieCrossOrigin\\":false,\\"cookieDomain\\":null,\\"cookieKey\\":\\"i18n_redirected\\",\\"cookieSecure\\":false,\\"fallbackLocale\\":\\"\\",\\"redirectOn\\":\\"root\\",\\"useCookie\\":true}),differentDomains: false,baseUrl: \\"\\",dynamicRouteParams: false,customRoutes: \\"page\\",pages: Object({}),skipSettingLocaleOnNavigate: false,types: undefined,debug: false}) export const nuxtI18nInternalOptions = Object({__normalizedLocales: [Object({\\"code\\":\\"en\\"})]}) export const NUXT_I18N_MODULE_ID = \\"@nuxtjs/i18n\\" +export const NUXT_I18N_PRECOMPILE_ENDPOINT = \\"/api/__i18n__\\" +export const NUXT_I18N_PRECOMPILED_LOCALE_KEY = \\"i18n-locales\\" export const isSSG = false export const isSSR = true " @@ -56,6 +58,8 @@ export const resolveNuxtI18nOptions = async (context) => { export const nuxtI18nInternalOptions = Object({__normalizedLocales: [Object({\\"code\\":\\"en\\"})]}) export const NUXT_I18N_MODULE_ID = \\"@nuxtjs/i18n\\" +export const NUXT_I18N_PRECOMPILE_ENDPOINT = \\"/api/__i18n__\\" +export const NUXT_I18N_PRECOMPILED_LOCALE_KEY = \\"i18n-locales\\" export const isSSG = false export const isSSR = true " @@ -84,6 +88,8 @@ export const resolveNuxtI18nOptions = async (context) => { export const nuxtI18nInternalOptions = Object({__normalizedLocales: [Object({\\"code\\":\\"en\\"})]}) export const NUXT_I18N_MODULE_ID = \\"@nuxtjs/i18n\\" +export const NUXT_I18N_PRECOMPILE_ENDPOINT = \\"/api/__i18n__\\" +export const NUXT_I18N_PRECOMPILED_LOCALE_KEY = \\"i18n-locales\\" export const isSSG = false export const isSSR = true " @@ -114,6 +120,8 @@ export const resolveNuxtI18nOptions = async (context) => { export const nuxtI18nInternalOptions = Object({__normalizedLocales: [Object({\\"code\\":\\"en\\"})]}) export const NUXT_I18N_MODULE_ID = \\"@nuxtjs/i18n\\" +export const NUXT_I18N_PRECOMPILE_ENDPOINT = \\"/api/__i18n__\\" +export const NUXT_I18N_PRECOMPILED_LOCALE_KEY = \\"i18n-locales\\" export const isSSG = false export const isSSR = true " @@ -131,20 +139,22 @@ export const resolveNuxtI18nOptions = async (context) => { \\"hello\\": (()=>{const fn=(ctx) => {const { normalize: _normalize } = ctx;return _normalize([\\"Hello!\\"])};fn.source=\\"Hello!\\";return fn;})() },}),}) nuxtI18nOptions.vueI18n = await vueI18nOptionsLoader(context) - nuxtI18nOptions.locales = [Object({\\"code\\":\\"en\\",\\"file\\":\\"en.json\\",\\"path\\":\\"/path/to/en.json\\",\\"testFunc\\":((prop) => { + nuxtI18nOptions.locales = [Object({\\"code\\":\\"en\\",\\"file\\":\\"en.json\\",\\"testFunc\\":((prop) => { return \`Hello \${prop}\`; - })}),Object({\\"code\\":\\"ja\\",\\"file\\":\\"ja.json\\",\\"path\\":\\"/path/to/ja.json\\",\\"testFunc\\":((prop) => { + })}),Object({\\"code\\":\\"ja\\",\\"file\\":\\"ja.json\\",\\"testFunc\\":((prop) => { return \`Hello \${prop}\`; - })}),Object({\\"code\\":\\"fr\\",\\"file\\":\\"fr.json\\",\\"path\\":\\"/path/to/fr.json\\",\\"testFunc\\":((prop) => { + })}),Object({\\"code\\":\\"fr\\",\\"file\\":\\"fr.json\\",\\"testFunc\\":((prop) => { return \`Hello \${prop}\`; })})] return nuxtI18nOptions } -export const nuxtI18nOptionsDefault = Object({vueI18n: undefined,locales: [],defaultLocale: \\"\\",defaultDirection: \\"ltr\\",routesNameSeparator: \\"___\\",trailingSlash: false,defaultLocaleRouteNameSuffix: \\"default\\",strategy: \\"prefix_except_default\\",lazy: false,langDir: null,rootRedirect: null,detectBrowserLanguage: Object({\\"alwaysRedirect\\":false,\\"cookieCrossOrigin\\":false,\\"cookieDomain\\":null,\\"cookieKey\\":\\"i18n_redirected\\",\\"cookieSecure\\":false,\\"fallbackLocale\\":\\"\\",\\"redirectOn\\":\\"root\\",\\"useCookie\\":true}),differentDomains: false,baseUrl: \\"\\",dynamicRouteParams: false,customRoutes: \\"page\\",pages: Object({}),skipSettingLocaleOnNavigate: false,types: undefined,debug: false}) +export const nuxtI18nOptionsDefault = Object({experimental: Object({\\"jsTsFormatResource\\":false}),precompile: Object({\\"strictMessage\\":true,\\"escapeHtml\\":false}),vueI18n: undefined,locales: [],defaultLocale: \\"\\",defaultDirection: \\"ltr\\",routesNameSeparator: \\"___\\",trailingSlash: false,defaultLocaleRouteNameSuffix: \\"default\\",strategy: \\"prefix_except_default\\",lazy: false,langDir: null,rootRedirect: null,detectBrowserLanguage: Object({\\"alwaysRedirect\\":false,\\"cookieCrossOrigin\\":false,\\"cookieDomain\\":null,\\"cookieKey\\":\\"i18n_redirected\\",\\"cookieSecure\\":false,\\"fallbackLocale\\":\\"\\",\\"redirectOn\\":\\"root\\",\\"useCookie\\":true}),differentDomains: false,baseUrl: \\"\\",dynamicRouteParams: false,customRoutes: \\"page\\",pages: Object({}),skipSettingLocaleOnNavigate: false,types: undefined,debug: false}) export const nuxtI18nInternalOptions = Object({__normalizedLocales: [Object({\\"code\\":\\"en\\"})]}) export const NUXT_I18N_MODULE_ID = \\"@nuxtjs/i18n\\" +export const NUXT_I18N_PRECOMPILE_ENDPOINT = \\"/api/__i18n__\\" +export const NUXT_I18N_PRECOMPILED_LOCALE_KEY = \\"i18n-locales\\" export const isSSG = false export const isSSR = true " @@ -162,20 +172,22 @@ export const resolveNuxtI18nOptions = async (context) => { \\"hello\\": (()=>{const fn=(ctx) => {const { normalize: _normalize } = ctx;return _normalize([\\"Hello!\\"])};fn.source=\\"Hello!\\";return fn;})() },}),}) nuxtI18nOptions.vueI18n = await vueI18nOptionsLoader(context) - nuxtI18nOptions.locales = [Object({\\"code\\":\\"en\\",\\"file\\":\\"en.json\\",\\"path\\":\\"/path/to/en.json\\",\\"testFunc\\":(function (prop) { + nuxtI18nOptions.locales = [Object({\\"code\\":\\"en\\",\\"file\\":\\"en.json\\",\\"testFunc\\":(function (prop) { return \`Hello \${prop}\`; - })}),Object({\\"code\\":\\"ja\\",\\"file\\":\\"ja.json\\",\\"path\\":\\"/path/to/ja.json\\",\\"testFunc\\":(function (prop) { + })}),Object({\\"code\\":\\"ja\\",\\"file\\":\\"ja.json\\",\\"testFunc\\":(function (prop) { return \`Hello \${prop}\`; - })}),Object({\\"code\\":\\"fr\\",\\"file\\":\\"fr.json\\",\\"path\\":\\"/path/to/fr.json\\",\\"testFunc\\":(function (prop) { + })}),Object({\\"code\\":\\"fr\\",\\"file\\":\\"fr.json\\",\\"testFunc\\":(function (prop) { return \`Hello \${prop}\`; })})] return nuxtI18nOptions } -export const nuxtI18nOptionsDefault = Object({vueI18n: undefined,locales: [],defaultLocale: \\"\\",defaultDirection: \\"ltr\\",routesNameSeparator: \\"___\\",trailingSlash: false,defaultLocaleRouteNameSuffix: \\"default\\",strategy: \\"prefix_except_default\\",lazy: false,langDir: null,rootRedirect: null,detectBrowserLanguage: Object({\\"alwaysRedirect\\":false,\\"cookieCrossOrigin\\":false,\\"cookieDomain\\":null,\\"cookieKey\\":\\"i18n_redirected\\",\\"cookieSecure\\":false,\\"fallbackLocale\\":\\"\\",\\"redirectOn\\":\\"root\\",\\"useCookie\\":true}),differentDomains: false,baseUrl: \\"\\",dynamicRouteParams: false,customRoutes: \\"page\\",pages: Object({}),skipSettingLocaleOnNavigate: false,types: undefined,debug: false}) +export const nuxtI18nOptionsDefault = Object({experimental: Object({\\"jsTsFormatResource\\":false}),precompile: Object({\\"strictMessage\\":true,\\"escapeHtml\\":false}),vueI18n: undefined,locales: [],defaultLocale: \\"\\",defaultDirection: \\"ltr\\",routesNameSeparator: \\"___\\",trailingSlash: false,defaultLocaleRouteNameSuffix: \\"default\\",strategy: \\"prefix_except_default\\",lazy: false,langDir: null,rootRedirect: null,detectBrowserLanguage: Object({\\"alwaysRedirect\\":false,\\"cookieCrossOrigin\\":false,\\"cookieDomain\\":null,\\"cookieKey\\":\\"i18n_redirected\\",\\"cookieSecure\\":false,\\"fallbackLocale\\":\\"\\",\\"redirectOn\\":\\"root\\",\\"useCookie\\":true}),differentDomains: false,baseUrl: \\"\\",dynamicRouteParams: false,customRoutes: \\"page\\",pages: Object({}),skipSettingLocaleOnNavigate: false,types: undefined,debug: false}) export const nuxtI18nInternalOptions = Object({__normalizedLocales: [Object({\\"code\\":\\"en\\"})]}) export const NUXT_I18N_MODULE_ID = \\"@nuxtjs/i18n\\" +export const NUXT_I18N_PRECOMPILE_ENDPOINT = \\"/api/__i18n__\\" +export const NUXT_I18N_PRECOMPILED_LOCALE_KEY = \\"i18n-locales\\" export const isSSG = false export const isSSR = true " @@ -217,6 +229,8 @@ export const resolveNuxtI18nOptions = async (context) => { export const nuxtI18nInternalOptions = Object({__normalizedLocales: [Object({\\"code\\":\\"en\\"})]}) export const NUXT_I18N_MODULE_ID = \\"@nuxtjs/i18n\\" +export const NUXT_I18N_PRECOMPILE_ENDPOINT = \\"/api/__i18n__\\" +export const NUXT_I18N_PRECOMPILED_LOCALE_KEY = \\"i18n-locales\\" export const isSSG = false export const isSSR = true " diff --git a/test/gen.test.ts b/test/gen.test.ts index ccc8ceeb9..17dc75a7e 100644 --- a/test/gen.test.ts +++ b/test/gen.test.ts @@ -1,7 +1,6 @@ -import { test, expect } from 'vitest' import { parse } from '@babel/parser' -import { generateLoaderOptions } from '../src/gen' import { DEFAULT_OPTIONS } from '../src/constants' +import { generateLoaderOptions } from '../src/gen' import type { NuxtI18nOptions, NuxtI18nInternalOptions } from '../src/types' import type { AdditionalMessages } from '../src/messages' diff --git a/test/pages/__snapshots__/custom_route.test.ts.snap b/test/pages/__snapshots__/custom_route.test.ts.snap index 14c3984ba..61dc393a3 100644 --- a/test/pages/__snapshots__/custom_route.test.ts.snap +++ b/test/pages/__snapshots__/custom_route.test.ts.snap @@ -1,4 +1,4 @@ -// Vitest Snapshot v1 +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`#1649 1`] = ` [ diff --git a/test/pages/ignore_route/__snapshots__/disable.test.ts.snap b/test/pages/ignore_route/__snapshots__/disable.test.ts.snap index e5ca4f142..8088aba53 100644 --- a/test/pages/ignore_route/__snapshots__/disable.test.ts.snap +++ b/test/pages/ignore_route/__snapshots__/disable.test.ts.snap @@ -1,4 +1,4 @@ -// Vitest Snapshot v1 +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Module configuration > nested complex route 1`] = ` [ diff --git a/test/pages/ignore_route/__snapshots__/pick.test.ts.snap b/test/pages/ignore_route/__snapshots__/pick.test.ts.snap index 73c23dbca..0c8727f8a 100644 --- a/test/pages/ignore_route/__snapshots__/pick.test.ts.snap +++ b/test/pages/ignore_route/__snapshots__/pick.test.ts.snap @@ -1,4 +1,4 @@ -// Vitest Snapshot v1 +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Module configuration > nested complex route 1`] = ` [