mirror of
https://github.com/modrinth/code.git
synced 2026-08-03 14:45:55 +00:00
Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
70c4dfab73 | ||
|
|
e1c501caad | ||
|
|
b883a37aeb | ||
|
|
951f36381f | ||
|
|
ae71089e74 | ||
|
|
e45e0fdde9 | ||
|
|
db449d439a | ||
|
|
333d55741c | ||
|
|
2590b2f942 |
@@ -12,15 +12,16 @@ Represents the VIntl module options.
|
|||||||
|
|
||||||
**Properties**
|
**Properties**
|
||||||
|
|
||||||
| Property | Default | Description |
|
| Property | Default | Description |
|
||||||
| :---------------------- | :------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| :---------------------- | :-----: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `defaultLocale` | | A string that represents the BCP 47 code of the locale to use by default. |
|
| `defaultLocale` | | A string that represents the BCP 47 code of the locale to use by default. |
|
||||||
| `resolveDir` | `'.'` | An optional string that represents a directory where all the imports associated with the locales are being resolved. If it's relative, then it will be resolved against the Nuxt `srcDir` directory. If this property is not set, modules will be resolved from the Nuxt `srcDir`. |
|
| `resolveDir` | `'.'` | An optional string that represents a directory where all the imports associated with the locales are being resolved. If it's relative, then it will be resolved against the Nuxt `srcDir` directory. If this property is not set, modules will be resolved from the Nuxt `srcDir`. |
|
||||||
| `locales` | | An array of [`LocaleDescriptor`] objects that represent all the configured locales. |
|
| `locales` | | An array of [`LocaleDescriptor`] objects that represent all the configured locales. |
|
||||||
| `storage` | | An optional string that represents either a built-in storage name (`localStorage` / `cookie`), or a node import specifier that exports a custom storage adapter as the default export. |
|
| `storage` | | An optional string that represents either a built-in storage name (`localStorage` / `cookie`), or a node import specifier that exports a custom storage adapter as the default export. |
|
||||||
| `broadcastLocaleChange` | `true` | An optional boolean value that determines whether to use [`BroadcastChannel`] (if available) to synchronize the locale changes between the tabs on the same origin. |
|
| `broadcastLocaleChange` | `true` | An optional boolean value that determines whether to use [`BroadcastChannel`] (if available) to synchronize the locale changes between the tabs on the same origin. |
|
||||||
| `hostLanguageParam` | `'hl'` | An optional name of the query parameter used to override the user language (including automatically detected one). It is used to generate SEO meta tags. Using `null` will disable them. |
|
| `hostLanguageParam` | `'hl'` | **Deprecated.** An optional name of the query parameter used to override the user language (including automatically detected one). It is used to generate SEO meta tags. Using `null` will disable them. |
|
||||||
| `parserless` | `{ enabled: false }` | An optional [`ParserlessOptions`] object or [`ParserlessMode`] which configures the parserless mode. |
|
| `parserless` | `<...>` | An optional [`ParserlessOptions`] object or [`ParserlessMode`] which configures the parserless mode. |
|
||||||
|
| `seo` | `<...>` | An optional [`SEOOptions`] object which configures automatic head tags to improve discoverability of other languages by search engines. |
|
||||||
|
|
||||||
[`BroadcastChannel`]: https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel
|
[`BroadcastChannel`]: https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel
|
||||||
[`ParserlessOptions`]: #parserlessoptions
|
[`ParserlessOptions`]: #parserlessoptions
|
||||||
@@ -131,9 +132,9 @@ Represents an import source for the messages file. It is similar to the [`Import
|
|||||||
|
|
||||||
Represents options for the parserless mode.
|
Represents options for the parserless mode.
|
||||||
|
|
||||||
| Property | Description |
|
| Property | Default | Description |
|
||||||
| :-------- | :----------------------------------------------------------------------- |
|
| :-------- | :-----: | :----------------------------------------------------------------------- |
|
||||||
| `enabled` | A `ParserlessMode` value representing the status of the parserless mode. |
|
| `enabled` | `false` | A `ParserlessMode` value representing the status of the parserless mode. |
|
||||||
|
|
||||||
## `ParserlessMode`
|
## `ParserlessMode`
|
||||||
|
|
||||||
@@ -144,3 +145,17 @@ A string or boolean value representing the status of the parserless mode.
|
|||||||
| `always` | `true` | Parserless mode is always enabled, regardless of the mode in which Nuxt is running. |
|
| `always` | `true` | Parserless mode is always enabled, regardless of the mode in which Nuxt is running. |
|
||||||
| `only-prod` | | Parserless mode is only enabled when building Nuxt app for production. |
|
| `only-prod` | | Parserless mode is only enabled when building Nuxt app for production. |
|
||||||
| `never` | `false` | Parserless mode is never enabled, the parser is always present in the runtime. |
|
| `never` | `false` | Parserless mode is never enabled, the parser is always present in the runtime. |
|
||||||
|
|
||||||
|
## `SEOOptions`
|
||||||
|
|
||||||
|
[`SEOOptions`]: #seooptions
|
||||||
|
|
||||||
|
Represents options for the automatic head tags.
|
||||||
|
|
||||||
|
By default VIntl will add `<link>` tags for every language to make search engines aware of other languages, you can disable this by setting `enabled` to `false`.
|
||||||
|
|
||||||
|
| Property | Default | Description |
|
||||||
|
| :----------------------- | :-----: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| `enabled` | `true` | A boolean value representing whether VIntl should automatically add `<link>` tags to `<head>` of the site. These tags make search engines aware that your site is provided in different languages. |
|
||||||
|
| `hostLanguageParameter`: | `hl` | A string value representing the query parameter that VIntl would use to configure the language of the site. |
|
||||||
|
| `baseURL` | | **Recommended.** An optional string value representing the base URL of the site. If not set, VIntl will try to guess the URL based on inital request URL or the current `window.location`. |
|
||||||
|
|||||||
@@ -8,6 +8,9 @@
|
|||||||
"index.other-page": {
|
"index.other-page": {
|
||||||
"message": "To the other page"
|
"message": "To the other page"
|
||||||
},
|
},
|
||||||
|
"index.use-automatic": {
|
||||||
|
"message": "Use automatic"
|
||||||
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"message": "Language"
|
"message": "Language"
|
||||||
},
|
},
|
||||||
@@ -17,6 +20,9 @@
|
|||||||
"other-page.back": {
|
"other-page.back": {
|
||||||
"message": "Go back"
|
"message": "Go back"
|
||||||
},
|
},
|
||||||
|
"other-page.description": {
|
||||||
|
"message": "You must've clicked me a thousand times"
|
||||||
|
},
|
||||||
"other-page.title": {
|
"other-page.title": {
|
||||||
"message": "Hello from the other page!"
|
"message": "Hello from the other page!"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"generate": "nuxi generate",
|
"generate": "nuxi generate",
|
||||||
"preview": "nuxi preview",
|
"preview": "nuxi preview",
|
||||||
"lint": "eslint --cache .",
|
"lint": "eslint --cache .",
|
||||||
"intl:extract": "formatjs extract \"{,components,composables,layouts,middleware,modules,pages,plugins,utils}/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" --ignore '**/*.d.ts' --ignore 'node_modules' --out-file locales/en-US.json --format simple",
|
"intl:extract": "formatjs extract \"{,components,composables,layouts,middleware,modules,pages,plugins,utils}/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" --ignore '**/*.d.ts' --ignore 'node_modules' --out-file locales/en-US.json --format crowdin",
|
||||||
"start": "node .output/server/index.mjs"
|
"start": "node .output/server/index.mjs"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -23,47 +23,80 @@ const messages = defineMessages({
|
|||||||
id: 'index.other-page',
|
id: 'index.other-page',
|
||||||
defaultMessage: 'To the other page',
|
defaultMessage: 'To the other page',
|
||||||
},
|
},
|
||||||
|
useAutomatic: {
|
||||||
|
id: 'index.use-automatic',
|
||||||
|
defaultMessage: 'Use automatic',
|
||||||
|
},
|
||||||
} as const)
|
} as const)
|
||||||
|
|
||||||
const vintl = useVIntl()
|
const vintl = useVIntl()
|
||||||
const { formatMessage } = vintl
|
const { formatMessage } = vintl
|
||||||
|
|
||||||
|
const changing = ref(false)
|
||||||
|
|
||||||
|
async function changeLocale(locale: string) {
|
||||||
|
if (changing.value) return
|
||||||
|
changing.value = true
|
||||||
|
try {
|
||||||
|
await vintl.changeLocale(locale)
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Error changing locale', err)
|
||||||
|
} finally {
|
||||||
|
changing.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const noop = () => {}
|
||||||
|
|
||||||
const currentLocale = computed({
|
const currentLocale = computed({
|
||||||
get() {
|
get() {
|
||||||
return vintl.locale
|
return vintl.locale
|
||||||
},
|
},
|
||||||
set() {
|
set(value) {
|
||||||
// ignore
|
changeLocale(value).then(noop, noop)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
async function onLocaleChange(e: Event) {
|
const useAutomatic = computed({
|
||||||
await vintl.changeLocale(
|
get() {
|
||||||
(e as Event & { target: HTMLSelectElement }).target.value,
|
return vintl.automatic
|
||||||
)
|
},
|
||||||
}
|
set(value) {
|
||||||
|
changeLocale(value ? 'auto' : vintl.locale).then(noop, noop)
|
||||||
|
},
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
<h3>{{ formatMessage(messages.options) }}</h3>
|
<h3>{{ formatMessage(messages.options) }}</h3>
|
||||||
<label for="language-select">
|
<div>
|
||||||
{{ formatMessage(messages.language) }}
|
<label>
|
||||||
</label>
|
<input v-model="useAutomatic" type="checkbox" />
|
||||||
<select
|
{{ formatMessage(messages.useAutomatic) }}
|
||||||
id="language-select"
|
</label>
|
||||||
v-model="currentLocale"
|
</div>
|
||||||
@change="onLocaleChange"
|
|
||||||
>
|
<div>
|
||||||
<option
|
<label>
|
||||||
v-for="locale in [...$nuxt.$i18n.$locales.value.keys()]"
|
{{ formatMessage(messages.language) }}
|
||||||
:key="locale.tag"
|
<select
|
||||||
:value="locale.tag"
|
id="language-select"
|
||||||
>
|
v-model="currentLocale"
|
||||||
{{ locale.tag }}
|
:disabled="vintl.automatic"
|
||||||
</option>
|
@change="onLocaleChange"
|
||||||
</select>
|
>
|
||||||
|
<option
|
||||||
|
v-for="locale in [...$nuxt.$i18n.$locales.value.keys()]"
|
||||||
|
:key="locale.tag"
|
||||||
|
:value="locale.tag"
|
||||||
|
>
|
||||||
|
{{ locale.tag }}
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -28,7 +28,9 @@
|
|||||||
"no-useless-constructor": "off",
|
"no-useless-constructor": "off",
|
||||||
"@typescript-eslint/no-useless-constructor": "warn",
|
"@typescript-eslint/no-useless-constructor": "warn",
|
||||||
"brace-style": "off",
|
"brace-style": "off",
|
||||||
"vue/singleline-html-element-content-newline": "off"
|
"vue/singleline-html-element-content-newline": "off",
|
||||||
|
"vue/max-attributes-per-line": "off",
|
||||||
|
"vue/html-self-closing": "off"
|
||||||
},
|
},
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"extraFileExtensions": [".vue"]
|
"extraFileExtensions": [".vue"]
|
||||||
|
|||||||
@@ -1,5 +1,47 @@
|
|||||||
# @vintl/nuxt
|
# @vintl/nuxt
|
||||||
|
|
||||||
|
## 1.4.0
|
||||||
|
|
||||||
|
### Minor Changes
|
||||||
|
|
||||||
|
- e1c501c: Improve alternate links generation
|
||||||
|
|
||||||
|
Generation of `alternate` `hreflang` links has been improved to properly use absolute URLs.
|
||||||
|
|
||||||
|
Since there's no good way to know the URL of the site, there's now also `seo.baseURL` option which allows to set site's proper domain.
|
||||||
|
|
||||||
|
`hostLanguageParam` option has been deperecated in favour of `seo.hostLanguageParameter`, which functions almost the same way, except it does not accept `null`. If you want to disable generation of such tags or handle them yourself, you can set `seo.enabled` to `false`.
|
||||||
|
|
||||||
|
See [Configuration](https://vintl-nuxt.netlify.app/introduction/configuration#seooptions) documentation page for more details.
|
||||||
|
|
||||||
|
## 1.3.0
|
||||||
|
|
||||||
|
### Minor Changes
|
||||||
|
|
||||||
|
- 951f363: Add graceful fallback for unknown locales in storage
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- ae71089: Use automatic locale if none returned by the storage
|
||||||
|
|
||||||
|
Fixed a bug where automatic locale would not be restored from the storage properly on the next page reload, despite it being saved properly.
|
||||||
|
|
||||||
|
## 1.2.3
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- db449d4: Fix missing options in the newer Nuxt versions
|
||||||
|
|
||||||
|
## 1.2.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 2590b2f: Downgrade and pin versions of FormatJS packages
|
||||||
|
|
||||||
|
Newest versions of FormatJS packages contain exports map that result in illegal ESM as CJS imports. This downgrades them
|
||||||
|
|
||||||
|
For more details see the issue at https://github.com/formatjs/formatjs/issues/4126.
|
||||||
|
|
||||||
## 1.2.1
|
## 1.2.1
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@vintl/nuxt",
|
"name": "@vintl/nuxt",
|
||||||
"version": "1.2.1",
|
"version": "1.4.0",
|
||||||
"description": "Nuxt Module for VIntl integration",
|
"description": "Nuxt Module for VIntl integration",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"i18n",
|
"i18n",
|
||||||
@@ -47,20 +47,23 @@
|
|||||||
"@vintl-dev/eslint-config-peony": "workspace:^",
|
"@vintl-dev/eslint-config-peony": "workspace:^",
|
||||||
"hookable": "^5.5.3",
|
"hookable": "^5.5.3",
|
||||||
"prettier-plugin-jsdoc": "^0.4.2",
|
"prettier-plugin-jsdoc": "^0.4.2",
|
||||||
"typescript": "^5.1.3"
|
"typescript": "^5.1.3",
|
||||||
|
"vue-router": "^4.2.4"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@formatjs/intl": "^2.8.0",
|
"@formatjs/intl": "2.7.2",
|
||||||
|
"@formatjs/intl-localematcher": "^0.4.0",
|
||||||
"@nuxt/kit": "^3.5.3",
|
"@nuxt/kit": "^3.5.3",
|
||||||
"@vintl/unplugin": "^1.2.1",
|
"@vintl/unplugin": "^1.2.4",
|
||||||
"@vintl/vintl": "^4.2.0",
|
"@vintl/vintl": "^4.2.1",
|
||||||
"astring": "^1.8.6",
|
"astring": "^1.8.6",
|
||||||
|
"consola": "^3.1.0",
|
||||||
"hash-sum": "^2.0.0",
|
"hash-sum": "^2.0.0",
|
||||||
"import-meta-resolve": "^3.0.0",
|
"import-meta-resolve": "^3.0.0",
|
||||||
"pathe": "^1.1.1",
|
"pathe": "^1.1.1",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"slash": "^5.1.0",
|
"slash": "^5.1.0",
|
||||||
"zod": "^3.21.4",
|
"ufo": "^1.1.2",
|
||||||
"consola": "^3.1.0"
|
"zod": "^3.21.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,9 +28,9 @@ const optionsFilePath = 'i18n/options.mjs'
|
|||||||
|
|
||||||
type _InputModuleOptions = typeof moduleOptionsSchema
|
type _InputModuleOptions = typeof moduleOptionsSchema
|
||||||
|
|
||||||
export interface InputModuleOptions extends t.input<_InputModuleOptions> {}
|
export interface ModuleOptions extends t.input<_InputModuleOptions> {}
|
||||||
|
|
||||||
export default defineNuxtModule<InputModuleOptions>({
|
export default defineNuxtModule<ModuleOptions>({
|
||||||
meta: {
|
meta: {
|
||||||
name: '@vintl/nuxt',
|
name: '@vintl/nuxt',
|
||||||
configKey: 'vintl',
|
configKey: 'vintl',
|
||||||
@@ -157,12 +157,12 @@ export default defineNuxtModule<InputModuleOptions>({
|
|||||||
if (Array.isArray(aliases)) {
|
if (Array.isArray(aliases)) {
|
||||||
aliases.push({
|
aliases.push({
|
||||||
find: '@formatjs/icu-messageformat-parser',
|
find: '@formatjs/icu-messageformat-parser',
|
||||||
replacement: '@formatjs/icu-messageformat-parser/no-parser',
|
replacement: '@formatjs/icu-messageformat-parser/lib/no-parser',
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
Object.assign(aliases, {
|
Object.assign(aliases, {
|
||||||
'@formatjs/icu-messageformat-parser':
|
'@formatjs/icu-messageformat-parser':
|
||||||
'@formatjs/icu-messageformat-parser/no-parser',
|
'@formatjs/icu-messageformat-parser/lib/no-parser',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -172,11 +172,11 @@ export default defineNuxtModule<InputModuleOptions>({
|
|||||||
if (Array.isArray(aliases)) {
|
if (Array.isArray(aliases)) {
|
||||||
aliases.push({
|
aliases.push({
|
||||||
name: '@formatjs/icu-messageformat-parser',
|
name: '@formatjs/icu-messageformat-parser',
|
||||||
alias: '@formatjs/icu-messageformat-parser/no-parser',
|
alias: '@formatjs/icu-messageformat-parser/lib/no-parser',
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
aliases['@formatjs/icu-messageformat-parser'] =
|
aliases['@formatjs/icu-messageformat-parser'] =
|
||||||
'@formatjs/icu-messageformat-parser/no-parser'
|
'@formatjs/icu-messageformat-parser/lib/no-parser'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1020,8 +1020,8 @@ export function generate(
|
|||||||
new ExportNamedDeclaration().setDeclaration(
|
new ExportNamedDeclaration().setDeclaration(
|
||||||
new VariableDeclaration('const', [
|
new VariableDeclaration('const', [
|
||||||
new VariableDeclarator(
|
new VariableDeclarator(
|
||||||
new Identifier('hostLanguageParam'),
|
new Identifier('seo'),
|
||||||
new Literal(opts.hostLanguageParam),
|
new Literal(null).setRaw(JSON.stringify(opts.seo)),
|
||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { useHead } from '#imports'
|
import { useHead } from '#imports'
|
||||||
import type { IntlController } from '@vintl/vintl/controller'
|
import type { IntlController } from '@vintl/vintl/controller'
|
||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
import { useRouter } from 'nuxt/app'
|
import type { LocationQuery, useRouter as _useRouter$type } from 'vue-router'
|
||||||
|
import { useRouter as _useRouter, useRequestURL } from 'nuxt/app'
|
||||||
|
import { joinURL } from 'ufo'
|
||||||
|
|
||||||
type LocationQuery = ReturnType<
|
const useRouter = _useRouter as typeof _useRouter$type
|
||||||
typeof useRouter
|
|
||||||
>['currentRoute']['value']['query']
|
|
||||||
|
|
||||||
// I wish there was a better way to do this T_T
|
// I wish there was a better way to do this T_T
|
||||||
function getSeachParams(query: LocationQuery) {
|
function getSeachParams(query: LocationQuery) {
|
||||||
@@ -35,11 +35,32 @@ type LangHrefLink = {
|
|||||||
href: string
|
href: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export function initHead(controller: IntlController<any>, hlParam: string) {
|
interface HeadOptions {
|
||||||
|
hostLanguageParameter: string
|
||||||
|
baseURL?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export function initHead(
|
||||||
|
controller: IntlController<any>,
|
||||||
|
options: HeadOptions,
|
||||||
|
) {
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
const currentRoute = computed(() => router.currentRoute.value)
|
const currentRoute = computed(() => router.currentRoute.value)
|
||||||
|
|
||||||
|
const requestURL = useRequestURL()
|
||||||
|
|
||||||
|
const normalizeURL = (url: string) => {
|
||||||
|
try {
|
||||||
|
return options.baseURL == null
|
||||||
|
? new URL(url, requestURL).toString()
|
||||||
|
: joinURL(options.baseURL, url)
|
||||||
|
} catch (err) {
|
||||||
|
console.error(`[vintl] cannot normalize url: ${String(err)}`)
|
||||||
|
return url
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
useHead({
|
useHead({
|
||||||
htmlAttrs: {
|
htmlAttrs: {
|
||||||
lang: () => controller.$config.locale,
|
lang: () => controller.$config.locale,
|
||||||
@@ -55,12 +76,12 @@ export function initHead(controller: IntlController<any>, hlParam: string) {
|
|||||||
|
|
||||||
{
|
{
|
||||||
const sp = new URLSearchParams(query)
|
const sp = new URLSearchParams(query)
|
||||||
sp.delete(hlParam)
|
sp.delete(options.hostLanguageParameter)
|
||||||
defaultEntry = {
|
defaultEntry = {
|
||||||
// key: `hreflang-default`,
|
// key: `hreflang-default`,
|
||||||
rel: 'alternate',
|
rel: 'alternate',
|
||||||
hreflang: 'x-default',
|
hreflang: 'x-default',
|
||||||
href: withQueryParams(path, sp.toString()),
|
href: normalizeURL(withQueryParams(path, sp.toString())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,13 +92,13 @@ export function initHead(controller: IntlController<any>, hlParam: string) {
|
|||||||
if (hrefLangs.has(hrefLang)) continue
|
if (hrefLangs.has(hrefLang)) continue
|
||||||
|
|
||||||
const sp = new URLSearchParams(query)
|
const sp = new URLSearchParams(query)
|
||||||
sp.set(hlParam, locale.tag)
|
sp.set(options.hostLanguageParameter, locale.tag)
|
||||||
|
|
||||||
hrefLangs.set(hrefLang, {
|
hrefLangs.set(hrefLang, {
|
||||||
// key: `hreflang-${locale.tag}`,
|
// key: `hreflang-${locale.tag}`,
|
||||||
rel: 'alternate',
|
rel: 'alternate',
|
||||||
hreflang: hrefLang,
|
hreflang: hrefLang,
|
||||||
href: withQueryParams(path, sp.toString()),
|
href: normalizeURL(withQueryParams(path, sp.toString())),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import {
|
|||||||
localeDefinitions,
|
localeDefinitions,
|
||||||
storageAdapterFactory,
|
storageAdapterFactory,
|
||||||
broadcastLocaleChange,
|
broadcastLocaleChange,
|
||||||
hostLanguageParam,
|
|
||||||
parserless,
|
parserless,
|
||||||
|
seo as seoOptions,
|
||||||
} from '@vintl/nuxt-runtime/options'
|
} from '@vintl/nuxt-runtime/options'
|
||||||
import type { LocaleDescriptor, MessageValueType } from '@vintl/vintl'
|
import type { LocaleDescriptor, MessageValueType } from '@vintl/vintl'
|
||||||
import type { IntlController } from '@vintl/vintl/controller'
|
import type { IntlController } from '@vintl/vintl/controller'
|
||||||
@@ -21,6 +21,7 @@ import { useAcceptLanguageHeader } from '@vintl/vintl/sources/header'
|
|||||||
import { defineNuxtPlugin } from 'nuxt/app'
|
import { defineNuxtPlugin } from 'nuxt/app'
|
||||||
import { syncCaller } from './utils/hookable.js'
|
import { syncCaller } from './utils/hookable.js'
|
||||||
import { initHead } from './head.js'
|
import { initHead } from './head.js'
|
||||||
|
import { match as matchLocales } from '@formatjs/intl-localematcher'
|
||||||
|
|
||||||
export default defineNuxtPlugin(async (nuxtApp) => {
|
export default defineNuxtPlugin(async (nuxtApp) => {
|
||||||
const locales: LocaleDescriptor[] = Object.entries(localeDefinitions).map(
|
const locales: LocaleDescriptor[] = Object.entries(localeDefinitions).map(
|
||||||
@@ -41,8 +42,8 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hostLanguageParam != null) {
|
if (seoOptions.enabled) {
|
||||||
let hlLocale = nuxtApp._route.query[hostLanguageParam]
|
let hlLocale = nuxtApp._route.query[seoOptions.hostLanguageParameter]
|
||||||
|
|
||||||
if (Array.isArray(hlLocale)) {
|
if (Array.isArray(hlLocale)) {
|
||||||
hlLocale = hlLocale[0]
|
hlLocale = hlLocale[0]
|
||||||
@@ -53,12 +54,23 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (locale != null) {
|
||||||
|
const match = matchLocales(
|
||||||
|
[locale],
|
||||||
|
locales.map(({ tag }) => tag),
|
||||||
|
'en-x-placeholder',
|
||||||
|
)
|
||||||
|
|
||||||
|
locale = match == 'en-x-placeholder' ? undefined : match
|
||||||
|
}
|
||||||
|
|
||||||
const plugin = createPlugin<MessageValueType>({
|
const plugin = createPlugin<MessageValueType>({
|
||||||
injectInto: [nuxtApp],
|
injectInto: [nuxtApp],
|
||||||
controllerOpts: {
|
controllerOpts: {
|
||||||
defaultLocale,
|
defaultLocale,
|
||||||
locales,
|
locales,
|
||||||
locale,
|
locale,
|
||||||
|
usePreferredLocale: locale == null,
|
||||||
listen: {
|
listen: {
|
||||||
error(event) {
|
error(event) {
|
||||||
nuxtApp.hooks.callHookWith(syncCaller, 'i18n:error', {
|
nuxtApp.hooks.callHookWith(syncCaller, 'i18n:error', {
|
||||||
@@ -139,8 +151,8 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
|||||||
setupBroadcasting(controller)
|
setupBroadcasting(controller)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hostLanguageParam != null) {
|
if (seoOptions.enabled) {
|
||||||
nuxtApp.hook('vue:setup', () => initHead(controller, hostLanguageParam!))
|
nuxtApp.hook('vue:setup', () => initHead(controller, seoOptions))
|
||||||
}
|
}
|
||||||
|
|
||||||
await nuxtApp.callHook('i18n:ready', controller)
|
await nuxtApp.callHook('i18n:ready', controller)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { z as t } from 'zod'
|
|||||||
import { tSwitch } from '../utils/zod-utils.js'
|
import { tSwitch } from '../utils/zod-utils.js'
|
||||||
import { languageTagSchema } from './language-tag.js'
|
import { languageTagSchema } from './language-tag.js'
|
||||||
import { localeDescriptorSchema } from './locales.js'
|
import { localeDescriptorSchema } from './locales.js'
|
||||||
|
import { seoOptions } from './seo.js'
|
||||||
|
|
||||||
const parselessModeEnumSchema = t.enum(['always', 'only-prod', 'never'])
|
const parselessModeEnumSchema = t.enum(['always', 'only-prod', 'never'])
|
||||||
|
|
||||||
@@ -167,6 +168,7 @@ export const moduleOptionsSchema = t
|
|||||||
* user language. `null` to disable. If this value is `null`, the SEO tags
|
* user language. `null` to disable. If this value is `null`, the SEO tags
|
||||||
* generation will be disabled.
|
* generation will be disabled.
|
||||||
*
|
*
|
||||||
|
* @deprecated Use `seo` options instead.
|
||||||
* @default 'hl' // For example, ?hl=en to use English locale (if defined).
|
* @default 'hl' // For example, ?hl=en to use English locale (if defined).
|
||||||
*/
|
*/
|
||||||
hostLanguageParam: t
|
hostLanguageParam: t
|
||||||
@@ -174,8 +176,10 @@ export const moduleOptionsSchema = t
|
|||||||
.describe(
|
.describe(
|
||||||
'Name of the host language URL parameter, used to override the default or user language.',
|
'Name of the host language URL parameter, used to override the default or user language.',
|
||||||
)
|
)
|
||||||
.nullable()
|
.optional()
|
||||||
.default('hl'),
|
.nullable(),
|
||||||
|
|
||||||
|
seo: seoOptions.optional(),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration options for the parserless mode, a mode in which the parser
|
* Configuration options for the parserless mode, a mode in which the parser
|
||||||
@@ -197,6 +201,21 @@ export const moduleOptionsSchema = t
|
|||||||
}
|
}
|
||||||
}).default('only-prod'),
|
}).default('only-prod'),
|
||||||
})
|
})
|
||||||
|
.transform((from) => {
|
||||||
|
if (from.seo === undefined) {
|
||||||
|
let hostLanguageParam = from.hostLanguageParam
|
||||||
|
if (hostLanguageParam === undefined) {
|
||||||
|
hostLanguageParam = 'hl'
|
||||||
|
}
|
||||||
|
|
||||||
|
from.seo = seoOptions.parse({
|
||||||
|
enabled: hostLanguageParam != null,
|
||||||
|
hostLanguageParameter: hostLanguageParam ?? undefined,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return from as typeof from & { seo: t.output<typeof seoOptions> }
|
||||||
|
})
|
||||||
.refine((value) => {
|
.refine((value) => {
|
||||||
return value.locales.some((locale) => locale.tag === value.defaultLocale)
|
return value.locales.some((locale) => locale.tag === value.defaultLocale)
|
||||||
}, 'Default locale must be defined')
|
}, 'Default locale must be defined')
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
import { z as t } from 'zod'
|
||||||
|
|
||||||
|
export const seoOptions = t.object({
|
||||||
|
/** Whether CEO features are enabled. */
|
||||||
|
enabled: t.boolean().default(true),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the host language URL parameter, used to override the default or
|
||||||
|
* user language.
|
||||||
|
*
|
||||||
|
* @default 'hl' // For example, ?hl=en to use English locale (if defined).
|
||||||
|
*/
|
||||||
|
hostLanguageParameter: t
|
||||||
|
.string()
|
||||||
|
.describe(
|
||||||
|
'Name of the host language URL parameter, used to override the default or user language.',
|
||||||
|
)
|
||||||
|
.optional()
|
||||||
|
.default('hl'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base URL at which the site will be available. This is required to generate
|
||||||
|
* absolute hreflang links. Without this, VIntl will try to guess the URL
|
||||||
|
* based on the server request URL / current `window.location`.
|
||||||
|
*/
|
||||||
|
baseURL: t
|
||||||
|
.string()
|
||||||
|
.describe(
|
||||||
|
'Base URL at which the site will be available. This is required to generate absolute hreflang links. ',
|
||||||
|
)
|
||||||
|
.optional(),
|
||||||
|
})
|
||||||
+27
@@ -64,4 +64,31 @@ declare module '@vintl/nuxt-runtime/options' {
|
|||||||
* descriptor.
|
* descriptor.
|
||||||
*/
|
*/
|
||||||
export const parserless: boolean
|
export const parserless: boolean
|
||||||
|
|
||||||
|
export interface SEOOptions {
|
||||||
|
/**
|
||||||
|
* Whether SEO features are enabled.
|
||||||
|
*
|
||||||
|
* @default true
|
||||||
|
*/
|
||||||
|
enabled: boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the host language URL parameter, used to override the default or
|
||||||
|
* user language.
|
||||||
|
*
|
||||||
|
* @default 'hl' // For example, ?hl=en to use English locale (if defined).
|
||||||
|
*/
|
||||||
|
hostLanguageParameter: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base URL at which the site will be available. This is required to generate
|
||||||
|
* absolute hreflang links. Without this, VIntl must try to guess the URL
|
||||||
|
* based on the server request URL / current `window.location`.
|
||||||
|
*/
|
||||||
|
baseURL?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
/** SEO options. */
|
||||||
|
export const seo: SEOOptions
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+169
-112
@@ -101,17 +101,20 @@ importers:
|
|||||||
packages/vintl-nuxt:
|
packages/vintl-nuxt:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@formatjs/intl':
|
'@formatjs/intl':
|
||||||
specifier: ^2.8.0
|
specifier: 2.7.2
|
||||||
version: 2.8.0(typescript@5.1.3)
|
version: 2.7.2(typescript@5.1.3)
|
||||||
|
'@formatjs/intl-localematcher':
|
||||||
|
specifier: ^0.4.0
|
||||||
|
version: 0.4.0
|
||||||
'@nuxt/kit':
|
'@nuxt/kit':
|
||||||
specifier: ^3.5.3
|
specifier: ^3.5.3
|
||||||
version: 3.5.3(rollup@3.23.0)
|
version: 3.5.3(rollup@3.23.0)
|
||||||
'@vintl/unplugin':
|
'@vintl/unplugin':
|
||||||
specifier: ^1.2.1
|
specifier: ^1.2.4
|
||||||
version: 1.2.1(rollup@3.23.0)(webpack@5.83.1)
|
version: 1.2.4(rollup@3.23.0)(webpack@5.83.1)
|
||||||
'@vintl/vintl':
|
'@vintl/vintl':
|
||||||
specifier: ^4.2.0
|
specifier: ^4.2.1
|
||||||
version: 4.2.0(typescript@5.1.3)(vue@3.3.4)
|
version: 4.2.1(typescript@5.1.3)(vue@3.3.4)
|
||||||
astring:
|
astring:
|
||||||
specifier: ^1.8.6
|
specifier: ^1.8.6
|
||||||
version: 1.8.6
|
version: 1.8.6
|
||||||
@@ -133,6 +136,9 @@ importers:
|
|||||||
slash:
|
slash:
|
||||||
specifier: ^5.1.0
|
specifier: ^5.1.0
|
||||||
version: 5.1.0
|
version: 5.1.0
|
||||||
|
ufo:
|
||||||
|
specifier: ^1.1.2
|
||||||
|
version: 1.1.2
|
||||||
zod:
|
zod:
|
||||||
specifier: ^3.21.4
|
specifier: ^3.21.4
|
||||||
version: 3.21.4
|
version: 3.21.4
|
||||||
@@ -164,6 +170,9 @@ importers:
|
|||||||
typescript:
|
typescript:
|
||||||
specifier: ^5.1.3
|
specifier: ^5.1.3
|
||||||
version: 5.1.3
|
version: 5.1.3
|
||||||
|
vue-router:
|
||||||
|
specifier: ^4.2.4
|
||||||
|
version: 4.2.4(vue@3.3.4)
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
@@ -180,6 +189,13 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@babel/highlight': 7.18.6
|
'@babel/highlight': 7.18.6
|
||||||
|
|
||||||
|
/@babel/code-frame@7.22.5:
|
||||||
|
resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==}
|
||||||
|
engines: {node: '>=6.9.0'}
|
||||||
|
dependencies:
|
||||||
|
'@babel/highlight': 7.22.5
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@babel/compat-data@7.21.9:
|
/@babel/compat-data@7.21.9:
|
||||||
resolution: {integrity: sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ==}
|
resolution: {integrity: sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
@@ -353,6 +369,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
|
resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
|
||||||
|
/@babel/helper-validator-identifier@7.22.5:
|
||||||
|
resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
|
||||||
|
engines: {node: '>=6.9.0'}
|
||||||
|
|
||||||
/@babel/helper-validator-option@7.21.0:
|
/@babel/helper-validator-option@7.21.0:
|
||||||
resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==}
|
resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
@@ -371,10 +391,19 @@ packages:
|
|||||||
resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
|
resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/helper-validator-identifier': 7.19.1
|
'@babel/helper-validator-identifier': 7.22.5
|
||||||
chalk: 2.4.2
|
chalk: 2.4.2
|
||||||
js-tokens: 4.0.0
|
js-tokens: 4.0.0
|
||||||
|
|
||||||
|
/@babel/highlight@7.22.5:
|
||||||
|
resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==}
|
||||||
|
engines: {node: '>=6.9.0'}
|
||||||
|
dependencies:
|
||||||
|
'@babel/helper-validator-identifier': 7.22.5
|
||||||
|
chalk: 2.4.2
|
||||||
|
js-tokens: 4.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@babel/parser@7.21.9:
|
/@babel/parser@7.21.9:
|
||||||
resolution: {integrity: sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==}
|
resolution: {integrity: sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==}
|
||||||
engines: {node: '>=6.0.0'}
|
engines: {node: '>=6.0.0'}
|
||||||
@@ -963,25 +992,12 @@ packages:
|
|||||||
tslib: 2.5.2
|
tslib: 2.5.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@formatjs/ecma402-abstract@1.16.0:
|
|
||||||
resolution: {integrity: sha512-qIH2cmG/oHGrVdApbqDf6/YR+B2A4NdkBjKLeq369OMVkqMFsC5oPSP1xpiyL1cAn+PbNEZHxwOVMYD/C76c6g==}
|
|
||||||
dependencies:
|
|
||||||
'@formatjs/intl-localematcher': 0.3.0
|
|
||||||
tslib: 2.5.2
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@formatjs/fast-memoize@2.0.1:
|
/@formatjs/fast-memoize@2.0.1:
|
||||||
resolution: {integrity: sha512-M2GgV+qJn5WJQAYewz7q2Cdl6fobQa69S1AzSM2y0P68ZDbK5cWrJIcPCO395Of1ksftGZoOt4LYCO/j9BKBSA==}
|
resolution: {integrity: sha512-M2GgV+qJn5WJQAYewz7q2Cdl6fobQa69S1AzSM2y0P68ZDbK5cWrJIcPCO395Of1ksftGZoOt4LYCO/j9BKBSA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.5.2
|
tslib: 2.5.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@formatjs/fast-memoize@2.1.0:
|
|
||||||
resolution: {integrity: sha512-w7IzF6Okx2tQXRVlT/cXI4dfS0bvKHhWE5Kn7ajqDVYH4nksUFOMU21Yd4zDENxZ8mFb7IBu7bOopnB2VxZQeA==}
|
|
||||||
dependencies:
|
|
||||||
tslib: 2.5.2
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@formatjs/icu-messageformat-parser@2.4.0:
|
/@formatjs/icu-messageformat-parser@2.4.0:
|
||||||
resolution: {integrity: sha512-6Dh5Z/gp4F/HovXXu/vmd0If5NbYLB5dZrmhWVNb+BOGOEU3wt7Z/83KY1dtd7IDhAnYHasbmKE1RbTE0J+3hw==}
|
resolution: {integrity: sha512-6Dh5Z/gp4F/HovXXu/vmd0If5NbYLB5dZrmhWVNb+BOGOEU3wt7Z/83KY1dtd7IDhAnYHasbmKE1RbTE0J+3hw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -990,14 +1006,6 @@ packages:
|
|||||||
tslib: 2.5.2
|
tslib: 2.5.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@formatjs/icu-messageformat-parser@2.5.0:
|
|
||||||
resolution: {integrity: sha512-8AwKRkVIZzVlvZwio1TcLVvUbJw0up1joa8//JIxKVeflqKiZwfzCGAelZt/4hHCEQf9NECose//nODnmBEkNQ==}
|
|
||||||
dependencies:
|
|
||||||
'@formatjs/ecma402-abstract': 1.16.0
|
|
||||||
'@formatjs/icu-skeleton-parser': 1.5.0
|
|
||||||
tslib: 2.5.2
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@formatjs/icu-skeleton-parser@1.4.0:
|
/@formatjs/icu-skeleton-parser@1.4.0:
|
||||||
resolution: {integrity: sha512-Qq347VM616rVLkvN6QsKJELazRyNlbCiN47LdH0Mc5U7E2xV0vatiVhGqd3KFgbc055BvtnUXR7XX60dCGFuWg==}
|
resolution: {integrity: sha512-Qq347VM616rVLkvN6QsKJELazRyNlbCiN47LdH0Mc5U7E2xV0vatiVhGqd3KFgbc055BvtnUXR7XX60dCGFuWg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1005,26 +1013,19 @@ packages:
|
|||||||
tslib: 2.5.2
|
tslib: 2.5.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@formatjs/icu-skeleton-parser@1.5.0:
|
/@formatjs/intl-displaynames@6.3.2:
|
||||||
resolution: {integrity: sha512-R/wOg/hxh3JWNB4LHYfNtIe8PC39mkzplh6gtrqCY33EqYeUFEGOYTWJrkXNcoRXlZWQtfrH6REch5r57tAyMQ==}
|
resolution: {integrity: sha512-kBOh0O7QYKLUqaZujLSEF2+au017plPp63R6Hrokl+oDtLyTt9y9pEuCTbOKh/P8CC9THnDLKRKgeVWZw5Ek8A==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@formatjs/ecma402-abstract': 1.16.0
|
'@formatjs/ecma402-abstract': 1.15.0
|
||||||
|
'@formatjs/intl-localematcher': 0.2.32
|
||||||
tslib: 2.5.2
|
tslib: 2.5.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@formatjs/intl-displaynames@6.4.0:
|
/@formatjs/intl-listformat@7.2.2:
|
||||||
resolution: {integrity: sha512-5M4ok7tY5UI/Qzq2jULVrl17PZqyOgcSRW/7VXfVXyD0FG76TlmhuIKENiIYkFn5z3FlB+XMiQczvwqK+9ORJw==}
|
resolution: {integrity: sha512-YIruRGwUrmgVOXjWi6VbwPcRNBkEfgK2DFjyyqopCmpfJ+39vnl46oLpVchErnuXs6kkARy5GcGaGV7xRsH4lw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@formatjs/ecma402-abstract': 1.16.0
|
'@formatjs/ecma402-abstract': 1.15.0
|
||||||
'@formatjs/intl-localematcher': 0.3.0
|
'@formatjs/intl-localematcher': 0.2.32
|
||||||
tslib: 2.5.2
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@formatjs/intl-listformat@7.3.0:
|
|
||||||
resolution: {integrity: sha512-HWSST1TBcKi5frneeDi9O6YYp9NWb7HNrDSbCgnBLmz/9rpGycdp9c5bTKJqYFN6apw3E/kIo+kZHjVeiFITRQ==}
|
|
||||||
dependencies:
|
|
||||||
'@formatjs/ecma402-abstract': 1.16.0
|
|
||||||
'@formatjs/intl-localematcher': 0.3.0
|
|
||||||
tslib: 2.5.2
|
tslib: 2.5.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
@@ -1034,26 +1035,26 @@ packages:
|
|||||||
tslib: 2.5.2
|
tslib: 2.5.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@formatjs/intl-localematcher@0.3.0:
|
/@formatjs/intl-localematcher@0.4.0:
|
||||||
resolution: {integrity: sha512-NFoxXX3dtZ6B53NlCErq181NxN/noMZOWKHfcEPQRNfV0a19THxyjxu2RTSNS3532wGm6fOdid5qsBQWg0Rhtw==}
|
resolution: {integrity: sha512-bRTd+rKomvfdS4QDlVJ6TA/Jx1F2h/TBVO5LjvhQ7QPPHp19oPNMIum7W2CMEReq/zPxpmCeB31F9+5gl/qtvw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.5.2
|
tslib: 2.5.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@formatjs/intl@2.8.0(typescript@5.1.3):
|
/@formatjs/intl@2.7.2(typescript@5.1.3):
|
||||||
resolution: {integrity: sha512-RRp4BMG9v7vBegbX1UuDMfoBOQljDjcx1clY1XV8D5qn6m5w4gyJFCJ/iiG6eaBBRNAJrqGdszi0Ry6UNiWDsQ==}
|
resolution: {integrity: sha512-ziiQfnXwY0/rXhtohSAmYMqDjRsihoMKdl8H2aA+FvxG9638E0XrvfBFCb+1HhimNiuqRz5fTY7F/bZtsJxsjA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: ^4.7 || 5
|
typescript: ^4.7 || 5
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@formatjs/ecma402-abstract': 1.16.0
|
'@formatjs/ecma402-abstract': 1.15.0
|
||||||
'@formatjs/fast-memoize': 2.1.0
|
'@formatjs/fast-memoize': 2.0.1
|
||||||
'@formatjs/icu-messageformat-parser': 2.5.0
|
'@formatjs/icu-messageformat-parser': 2.4.0
|
||||||
'@formatjs/intl-displaynames': 6.4.0
|
'@formatjs/intl-displaynames': 6.3.2
|
||||||
'@formatjs/intl-listformat': 7.3.0
|
'@formatjs/intl-listformat': 7.2.2
|
||||||
intl-messageformat: 10.4.0
|
intl-messageformat: 10.3.5
|
||||||
tslib: 2.5.2
|
tslib: 2.5.2
|
||||||
typescript: 5.1.3
|
typescript: 5.1.3
|
||||||
dev: false
|
dev: false
|
||||||
@@ -1109,6 +1110,18 @@ packages:
|
|||||||
resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==}
|
resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@isaacs/cliui@8.0.2:
|
||||||
|
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dependencies:
|
||||||
|
string-width: 5.1.2
|
||||||
|
string-width-cjs: /string-width@4.2.3
|
||||||
|
strip-ansi: 7.1.0
|
||||||
|
strip-ansi-cjs: /strip-ansi@6.0.1
|
||||||
|
wrap-ansi: 8.1.0
|
||||||
|
wrap-ansi-cjs: /wrap-ansi@7.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@jridgewell/gen-mapping@0.3.3:
|
/@jridgewell/gen-mapping@0.3.3:
|
||||||
resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
|
resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
|
||||||
engines: {node: '>=6.0.0'}
|
engines: {node: '>=6.0.0'}
|
||||||
@@ -1661,6 +1674,13 @@ packages:
|
|||||||
- webpack-cli
|
- webpack-cli
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@pkgjs/parseargs@0.11.0:
|
||||||
|
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
||||||
|
engines: {node: '>=14'}
|
||||||
|
requiresBuild: true
|
||||||
|
dev: false
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@rollup/plugin-alias@5.0.0(rollup@3.23.0):
|
/@rollup/plugin-alias@5.0.0(rollup@3.23.0):
|
||||||
resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==}
|
resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
@@ -2258,8 +2278,8 @@ packages:
|
|||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vintl/unplugin@1.2.1(rollup@3.23.0)(webpack@5.83.1):
|
/@vintl/unplugin@1.2.4(rollup@3.23.0)(webpack@5.83.1):
|
||||||
resolution: {integrity: sha512-waUgWmGQa1Wxob0LnG5irrO3fwisJGztVvF8K6xDZnezr3qciG9hAlOQcvq6Ef33VYQX5ulbN+vL1C3xio80rg==}
|
resolution: {integrity: sha512-yGhUGcjqaREuGgm3ULokmovPuaij0hJf8lQoyFhbl1mLHW+GaP3y23WBzr87+t4/T341HHM2KaOTjf7my8JqAg==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
rollup: ^3
|
rollup: ^3
|
||||||
@@ -2276,8 +2296,8 @@ packages:
|
|||||||
'@formatjs/cli-lib': 6.1.1
|
'@formatjs/cli-lib': 6.1.1
|
||||||
'@formatjs/icu-messageformat-parser': 2.4.0
|
'@formatjs/icu-messageformat-parser': 2.4.0
|
||||||
'@rollup/pluginutils': 5.0.2(rollup@3.23.0)
|
'@rollup/pluginutils': 5.0.2(rollup@3.23.0)
|
||||||
glob: 9.3.5
|
glob: 10.2.7
|
||||||
import-meta-resolve: 2.2.2
|
import-meta-resolve: 3.0.0
|
||||||
pathe: 1.1.1
|
pathe: 1.1.1
|
||||||
rollup: 3.23.0
|
rollup: 3.23.0
|
||||||
unplugin: 1.3.1
|
unplugin: 1.3.1
|
||||||
@@ -2288,14 +2308,14 @@ packages:
|
|||||||
- ts-jest
|
- ts-jest
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@vintl/vintl@4.2.0(typescript@5.1.3)(vue@3.3.4):
|
/@vintl/vintl@4.2.1(typescript@5.1.3)(vue@3.3.4):
|
||||||
resolution: {integrity: sha512-wE805LYsmlkfEzKTw+c+UZBxQe2D3boKa3M5mFKB2zVvOsRNH0xUJq9hFdOqreAvm7A2AIkFbFRqcdjaB58w/Q==}
|
resolution: {integrity: sha512-ofHXpTafQrSLmW6J9O5iTo7p0juheWLc4vzTtm94q8TR1un894D88p0DFY7mwL1bcooauwBsQdMvCHUI2eTQIQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.2.47
|
vue: ^3.2.47
|
||||||
dependencies:
|
dependencies:
|
||||||
'@braw/async-computed': 5.0.2(vue@3.3.4)
|
'@braw/async-computed': 5.0.2(vue@3.3.4)
|
||||||
'@formatjs/icu-messageformat-parser': 2.4.0
|
'@formatjs/icu-messageformat-parser': 2.4.0
|
||||||
'@formatjs/intl': 2.8.0(typescript@5.1.3)
|
'@formatjs/intl': 2.7.2(typescript@5.1.3)
|
||||||
'@formatjs/intl-localematcher': 0.2.32
|
'@formatjs/intl-localematcher': 0.2.32
|
||||||
intl-messageformat: 10.3.5
|
intl-messageformat: 10.3.5
|
||||||
vue: 3.3.4
|
vue: 3.3.4
|
||||||
@@ -2704,6 +2724,11 @@ packages:
|
|||||||
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
|
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
|
/ansi-regex@6.0.1:
|
||||||
|
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/ansi-styles@3.2.1:
|
/ansi-styles@3.2.1:
|
||||||
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
|
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@@ -2716,6 +2741,11 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
color-convert: 2.0.1
|
color-convert: 2.0.1
|
||||||
|
|
||||||
|
/ansi-styles@6.2.1:
|
||||||
|
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/anymatch@3.1.3:
|
/anymatch@3.1.3:
|
||||||
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
|
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
@@ -3672,6 +3702,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
|
resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/eastasianwidth@0.2.0:
|
||||||
|
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/ee-first@1.1.1:
|
/ee-first@1.1.1:
|
||||||
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
|
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -3681,7 +3715,10 @@ packages:
|
|||||||
|
|
||||||
/emoji-regex@8.0.0:
|
/emoji-regex@8.0.0:
|
||||||
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
||||||
dev: true
|
|
||||||
|
/emoji-regex@9.2.2:
|
||||||
|
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/emoticon@4.0.1:
|
/emoticon@4.0.1:
|
||||||
resolution: {integrity: sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==}
|
resolution: {integrity: sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==}
|
||||||
@@ -4201,6 +4238,14 @@ packages:
|
|||||||
is-callable: 1.2.7
|
is-callable: 1.2.7
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/foreground-child@3.1.1:
|
||||||
|
resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
|
||||||
|
engines: {node: '>=14'}
|
||||||
|
dependencies:
|
||||||
|
cross-spawn: 7.0.3
|
||||||
|
signal-exit: 4.0.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
/formdata-polyfill@4.0.10:
|
/formdata-polyfill@4.0.10:
|
||||||
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
|
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
|
||||||
engines: {node: '>=12.20.0'}
|
engines: {node: '>=12.20.0'}
|
||||||
@@ -4391,6 +4436,18 @@ packages:
|
|||||||
/glob-to-regexp@0.4.1:
|
/glob-to-regexp@0.4.1:
|
||||||
resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
|
resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
|
||||||
|
|
||||||
|
/glob@10.2.7:
|
||||||
|
resolution: {integrity: sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==}
|
||||||
|
engines: {node: '>=16 || 14 >=14.17'}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
foreground-child: 3.1.1
|
||||||
|
jackspeak: 2.2.1
|
||||||
|
minimatch: 9.0.1
|
||||||
|
minipass: 6.0.2
|
||||||
|
path-scurry: 1.9.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
/glob@7.2.3:
|
/glob@7.2.3:
|
||||||
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
|
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -4412,16 +4469,6 @@ packages:
|
|||||||
once: 1.4.0
|
once: 1.4.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/glob@9.3.5:
|
|
||||||
resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==}
|
|
||||||
engines: {node: '>=16 || 14 >=14.17'}
|
|
||||||
dependencies:
|
|
||||||
fs.realpath: 1.0.0
|
|
||||||
minimatch: 8.0.4
|
|
||||||
minipass: 4.2.8
|
|
||||||
path-scurry: 1.9.2
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/globals@11.12.0:
|
/globals@11.12.0:
|
||||||
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
|
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@@ -4726,10 +4773,6 @@ packages:
|
|||||||
parent-module: 1.0.1
|
parent-module: 1.0.1
|
||||||
resolve-from: 4.0.0
|
resolve-from: 4.0.0
|
||||||
|
|
||||||
/import-meta-resolve@2.2.2:
|
|
||||||
resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==}
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/import-meta-resolve@3.0.0:
|
/import-meta-resolve@3.0.0:
|
||||||
resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==}
|
resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==}
|
||||||
dev: false
|
dev: false
|
||||||
@@ -4795,15 +4838,6 @@ packages:
|
|||||||
tslib: 2.5.2
|
tslib: 2.5.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/intl-messageformat@10.4.0:
|
|
||||||
resolution: {integrity: sha512-WKmvL2ATvsTJ0CMkO1Hs6f87QlOYZ10opvOJtj0+I3RAQCBxrY8xA3QvVJPJHTS2ru0B7q/kCDyJE1oiiElgyA==}
|
|
||||||
dependencies:
|
|
||||||
'@formatjs/ecma402-abstract': 1.16.0
|
|
||||||
'@formatjs/fast-memoize': 2.1.0
|
|
||||||
'@formatjs/icu-messageformat-parser': 2.5.0
|
|
||||||
tslib: 2.5.2
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/ioredis@5.3.2:
|
/ioredis@5.3.2:
|
||||||
resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==}
|
resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==}
|
||||||
engines: {node: '>=12.22.0'}
|
engines: {node: '>=12.22.0'}
|
||||||
@@ -4946,7 +4980,6 @@ packages:
|
|||||||
/is-fullwidth-code-point@3.0.0:
|
/is-fullwidth-code-point@3.0.0:
|
||||||
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
|
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/is-generator-function@1.0.10:
|
/is-generator-function@1.0.10:
|
||||||
resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
|
resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
|
||||||
@@ -5123,6 +5156,15 @@ packages:
|
|||||||
/isexe@2.0.0:
|
/isexe@2.0.0:
|
||||||
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
||||||
|
|
||||||
|
/jackspeak@2.2.1:
|
||||||
|
resolution: {integrity: sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==}
|
||||||
|
engines: {node: '>=14'}
|
||||||
|
dependencies:
|
||||||
|
'@isaacs/cliui': 8.0.2
|
||||||
|
optionalDependencies:
|
||||||
|
'@pkgjs/parseargs': 0.11.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/jest-worker@27.5.1:
|
/jest-worker@27.5.1:
|
||||||
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
|
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
|
||||||
engines: {node: '>= 10.13.0'}
|
engines: {node: '>= 10.13.0'}
|
||||||
@@ -5398,8 +5440,8 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
yallist: 4.0.0
|
yallist: 4.0.0
|
||||||
|
|
||||||
/lru-cache@9.1.1:
|
/lru-cache@9.1.2:
|
||||||
resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==}
|
resolution: {integrity: sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==}
|
||||||
engines: {node: 14 || >=16.14}
|
engines: {node: 14 || >=16.14}
|
||||||
|
|
||||||
/magic-string-ast@0.1.2:
|
/magic-string-ast@0.1.2:
|
||||||
@@ -5940,19 +5982,11 @@ packages:
|
|||||||
brace-expansion: 2.0.1
|
brace-expansion: 2.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/minimatch@8.0.4:
|
|
||||||
resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==}
|
|
||||||
engines: {node: '>=16 || 14 >=14.17'}
|
|
||||||
dependencies:
|
|
||||||
brace-expansion: 2.0.1
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/minimatch@9.0.1:
|
/minimatch@9.0.1:
|
||||||
resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==}
|
resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==}
|
||||||
engines: {node: '>=16 || 14 >=14.17'}
|
engines: {node: '>=16 || 14 >=14.17'}
|
||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion: 2.0.1
|
brace-expansion: 2.0.1
|
||||||
dev: true
|
|
||||||
|
|
||||||
/minimist-options@4.1.0:
|
/minimist-options@4.1.0:
|
||||||
resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
|
resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
|
||||||
@@ -5969,11 +6003,6 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
yallist: 4.0.0
|
yallist: 4.0.0
|
||||||
|
|
||||||
/minipass@4.2.8:
|
|
||||||
resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
|
|
||||||
engines: {node: '>=8'}
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/minipass@5.0.0:
|
/minipass@5.0.0:
|
||||||
resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
|
resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -6378,12 +6407,12 @@ packages:
|
|||||||
unenv: 1.5.1
|
unenv: 1.5.1
|
||||||
unimport: 3.0.7(rollup@3.23.0)
|
unimport: 3.0.7(rollup@3.23.0)
|
||||||
unplugin: 1.3.1
|
unplugin: 1.3.1
|
||||||
unplugin-vue-router: 0.6.4(rollup@3.23.0)(vue-router@4.2.2)(vue@3.3.4)
|
unplugin-vue-router: 0.6.4(rollup@3.23.0)(vue-router@4.2.4)(vue@3.3.4)
|
||||||
untyped: 1.3.2
|
untyped: 1.3.2
|
||||||
vue: 3.3.4
|
vue: 3.3.4
|
||||||
vue-bundle-renderer: 1.0.3
|
vue-bundle-renderer: 1.0.3
|
||||||
vue-devtools-stub: 0.1.0
|
vue-devtools-stub: 0.1.0
|
||||||
vue-router: 4.2.2(vue@3.3.4)
|
vue-router: 4.2.4(vue@3.3.4)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@azure/app-configuration'
|
- '@azure/app-configuration'
|
||||||
- '@azure/cosmos'
|
- '@azure/cosmos'
|
||||||
@@ -6639,7 +6668,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
|
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/code-frame': 7.21.4
|
'@babel/code-frame': 7.22.5
|
||||||
error-ex: 1.3.2
|
error-ex: 1.3.2
|
||||||
json-parse-even-better-errors: 2.3.1
|
json-parse-even-better-errors: 2.3.1
|
||||||
lines-and-columns: 1.2.4
|
lines-and-columns: 1.2.4
|
||||||
@@ -6705,7 +6734,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==}
|
resolution: {integrity: sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==}
|
||||||
engines: {node: '>=16 || 14 >=14.17'}
|
engines: {node: '>=16 || 14 >=14.17'}
|
||||||
dependencies:
|
dependencies:
|
||||||
lru-cache: 9.1.1
|
lru-cache: 9.1.2
|
||||||
minipass: 6.0.2
|
minipass: 6.0.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
@@ -7541,7 +7570,7 @@ packages:
|
|||||||
rollup: 3.23.0
|
rollup: 3.23.0
|
||||||
typescript: 5.1.3
|
typescript: 5.1.3
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@babel/code-frame': 7.21.4
|
'@babel/code-frame': 7.22.5
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/rollup-plugin-visualizer@5.9.0(rollup@3.23.0):
|
/rollup-plugin-visualizer@5.9.0(rollup@3.23.0):
|
||||||
@@ -7733,6 +7762,11 @@ packages:
|
|||||||
/signal-exit@3.0.7:
|
/signal-exit@3.0.7:
|
||||||
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
|
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
|
||||||
|
|
||||||
|
/signal-exit@4.0.2:
|
||||||
|
resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==}
|
||||||
|
engines: {node: '>=14'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/sisteransi@1.0.5:
|
/sisteransi@1.0.5:
|
||||||
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
|
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -7889,7 +7923,15 @@ packages:
|
|||||||
emoji-regex: 8.0.0
|
emoji-regex: 8.0.0
|
||||||
is-fullwidth-code-point: 3.0.0
|
is-fullwidth-code-point: 3.0.0
|
||||||
strip-ansi: 6.0.1
|
strip-ansi: 6.0.1
|
||||||
dev: true
|
|
||||||
|
/string-width@5.1.2:
|
||||||
|
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dependencies:
|
||||||
|
eastasianwidth: 0.2.0
|
||||||
|
emoji-regex: 9.2.2
|
||||||
|
strip-ansi: 7.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/string.prototype.trim@1.2.7:
|
/string.prototype.trim@1.2.7:
|
||||||
resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==}
|
resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==}
|
||||||
@@ -7940,6 +7982,13 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ansi-regex: 5.0.1
|
ansi-regex: 5.0.1
|
||||||
|
|
||||||
|
/strip-ansi@7.1.0:
|
||||||
|
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dependencies:
|
||||||
|
ansi-regex: 6.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/strip-bom@3.0.0:
|
/strip-bom@3.0.0:
|
||||||
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
|
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@@ -8523,7 +8572,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
|
resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
|
||||||
engines: {node: '>= 10.0.0'}
|
engines: {node: '>= 10.0.0'}
|
||||||
|
|
||||||
/unplugin-vue-router@0.6.4(rollup@3.23.0)(vue-router@4.2.2)(vue@3.3.4):
|
/unplugin-vue-router@0.6.4(rollup@3.23.0)(vue-router@4.2.4)(vue@3.3.4):
|
||||||
resolution: {integrity: sha512-9THVhhtbVFxbsIibjK59oPwMI1UCxRWRPX7azSkTUABsxovlOXJys5SJx0kd/0oKIqNJuYgkRfAgPuO77SqCOg==}
|
resolution: {integrity: sha512-9THVhhtbVFxbsIibjK59oPwMI1UCxRWRPX7azSkTUABsxovlOXJys5SJx0kd/0oKIqNJuYgkRfAgPuO77SqCOg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue-router: ^4.1.0
|
vue-router: ^4.1.0
|
||||||
@@ -8543,7 +8592,7 @@ packages:
|
|||||||
pathe: 1.1.1
|
pathe: 1.1.1
|
||||||
scule: 1.0.0
|
scule: 1.0.0
|
||||||
unplugin: 1.3.1
|
unplugin: 1.3.1
|
||||||
vue-router: 4.2.2(vue@3.3.4)
|
vue-router: 4.2.4(vue@3.3.4)
|
||||||
yaml: 2.3.0
|
yaml: 2.3.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
@@ -8596,7 +8645,7 @@ packages:
|
|||||||
h3: 1.6.6
|
h3: 1.6.6
|
||||||
ioredis: 5.3.2
|
ioredis: 5.3.2
|
||||||
listhen: 1.0.4
|
listhen: 1.0.4
|
||||||
lru-cache: 9.1.1
|
lru-cache: 9.1.2
|
||||||
mri: 1.2.0
|
mri: 1.2.0
|
||||||
node-fetch-native: 1.1.1
|
node-fetch-native: 1.1.1
|
||||||
ofetch: 1.0.1
|
ofetch: 1.0.1
|
||||||
@@ -8905,8 +8954,8 @@ packages:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
/vue-router@4.2.2(vue@3.3.4):
|
/vue-router@4.2.4(vue@3.3.4):
|
||||||
resolution: {integrity: sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==}
|
resolution: {integrity: sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.2.0
|
vue: ^3.2.0
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -9123,7 +9172,15 @@ packages:
|
|||||||
ansi-styles: 4.3.0
|
ansi-styles: 4.3.0
|
||||||
string-width: 4.2.3
|
string-width: 4.2.3
|
||||||
strip-ansi: 6.0.1
|
strip-ansi: 6.0.1
|
||||||
dev: true
|
|
||||||
|
/wrap-ansi@8.1.0:
|
||||||
|
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dependencies:
|
||||||
|
ansi-styles: 6.2.1
|
||||||
|
string-width: 5.1.2
|
||||||
|
strip-ansi: 7.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/wrappy@1.0.2:
|
/wrappy@1.0.2:
|
||||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||||
|
|||||||
Reference in New Issue
Block a user