diff --git a/.gitignore b/.gitignore index 7c462b5..4fe59f3 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ examples/**/dist .yarn/* !.yarn/releases !.yarn/plugins +*.tgz diff --git a/package.json b/package.json index 33cbe5d..ca976ae 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@types/webpack-merge": "^5.0.0", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", - "@vitejs/plugin-vue": "^1.2.5", + "@vitejs/plugin-vue": "^5.0.5", "@vue/compiler-sfc": "^3.2.23", "babel-loader": "^8.2.2", "chalk": "^4.1.1", @@ -82,13 +82,13 @@ "typescript": "^4.9.3", "vite": "^4.4.9", "vitest": "^0.29.8", - "vue": "^2.6.14", + "vue": "^3.2.25", "vue-i18n": "next", "vue-loader": "^16.3.0", "vue-loader15": "npm:vue-loader@15.11.1", "vue-loader17": "npm:vue-loader@17.4.2", "vue-template-compiler": "^2.6.14", - "vue3": "npm:vue@3.3.4", + "vue2": "npm:vue@^2.6.14", "webpack": "^5.88.2", "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1", diff --git a/packages/rollup-plugin-vue-i18n/examples/rollup.config.js b/packages/rollup-plugin-vue-i18n/examples/rollup.config.js index 609bdbe..962d120 100644 --- a/packages/rollup-plugin-vue-i18n/examples/rollup.config.js +++ b/packages/rollup-plugin-vue-i18n/examples/rollup.config.js @@ -25,7 +25,7 @@ export default [ entries: { vue: path.resolve( __dirname, - '../../../node_modules/vue3/dist/vue.esm-bundler.js' + '../../../node_modules/vue/dist/vue.esm-bundler.js' ) } }), diff --git a/packages/unplugin-vue-i18n/README.md b/packages/unplugin-vue-i18n/README.md index 8885e1f..b7a5647 100644 --- a/packages/unplugin-vue-i18n/README.md +++ b/packages/unplugin-vue-i18n/README.md @@ -374,7 +374,7 @@ Whether to tree-shake message compiler when we will be bundling. If do you will use this option, you need to enable `jitCompilation` option. -> [NOTE] +> [!NOTE] > After v5 or later, this option can be set with or without `jitCompilation`. > [!NOTE] @@ -571,6 +571,18 @@ If do you will use this option, you need to enable `jitCompilation` option. `useVueI18nImportName` option is deprecated in v5. This option will be supported with vue-i18n until v9 latest version. +### `optimizeTranslationDirective` + +- **Type**: `boolean` | `string` | `string[]` +- **Default:** `false` + + Whether to optimize `v-t` directive. If set to `true`, this plugin's transform will automatically translate to vue-i18n's translation function. If you need SSR, you must activate this option. + + If you want to put it manually, you can specify the signature of the translation function as a string or a string array. + + > [!WARNING] + About for manually signature, see the details [vue-i18n-extensions API docs](https://github.com/intlify/vue-i18n-extensions/blob/next/docs/%40intlify/vue-i18n-extensions-api.md#translationsignatures) and [usecase from vue-i18n-extensions PR](https://github.com/intlify/vue-i18n-extensions/pull/217/files#diff-3fb9543f91e011d4b0dc9beff44082fe1a99c9eab70c1afab23c3c34352b7c38R121-R200) + ## πŸ“œ Changelog Details changes for each release are documented in the [CHANGELOG.md](https://github.com/intlify/bundle-tools/blob/main/packages/unplugin-vue-i18n/CHANGELOG.md) diff --git a/packages/unplugin-vue-i18n/e2e/vite.test.js b/packages/unplugin-vue-i18n/e2e/vite.test.js index fb60cc2..a16fa96 100644 --- a/packages/unplugin-vue-i18n/e2e/vite.test.js +++ b/packages/unplugin-vue-i18n/e2e/vite.test.js @@ -8,12 +8,14 @@ describe('vite', () => { await expect(page).toMatch('γ“γ‚“γ«γ‘γ―γ€δΈ–η•ŒοΌ') await expect(page).toMatch('γƒγƒŠγƒŠγŒζ¬²γ—γ„οΌŸ') await expect(page).toMatch('γƒγƒŠγƒŠ 0 個') + await expect(page).toMatch('やあ!') }) test('change locale', async () => { await page.select('#app select', 'en') await expect(page).toMatch('Language') await expect(page).toMatch('hello, world!') + await expect(page).toMatch('Hi!') }) test('change banana select', async () => { diff --git a/packages/unplugin-vue-i18n/examples/vite/src/App.vue b/packages/unplugin-vue-i18n/examples/vite/src/App.vue index 140944a..eb8cef0 100644 --- a/packages/unplugin-vue-i18n/examples/vite/src/App.vue +++ b/packages/unplugin-vue-i18n/examples/vite/src/App.vue @@ -7,6 +7,7 @@

{{ t('hello') }}

+

@@ -29,15 +30,17 @@ export default { } - + { "en": { "language": "Language", - "hello": "hello, world!" + "hello": "hello, world!", + "hi": "Hi!" }, "ja": { "language": "言θͺž", - "hello": "γ“γ‚“γ«γ‘γ―γ€δΈ–η•ŒοΌ" + "hello": "γ“γ‚“γ«γ‘γ―γ€δΈ–η•ŒοΌ", + "hi": "やあ!" } } diff --git a/packages/unplugin-vue-i18n/examples/vite/vite.config.ts b/packages/unplugin-vue-i18n/examples/vite/vite.config.ts index 5a8d5fa..822f8d4 100644 --- a/packages/unplugin-vue-i18n/examples/vite/vite.config.ts +++ b/packages/unplugin-vue-i18n/examples/vite/vite.config.ts @@ -8,7 +8,7 @@ export default defineConfig({ alias: { vue: path.resolve( __dirname, - '../../../../node_modules/vue3/dist/vue.esm-bundler.js' + '../../../../node_modules/vue/dist/vue.esm-bundler.js' ) } }, @@ -20,7 +20,8 @@ export default defineConfig({ plugins: [ vue(), vueI18n({ - include: path.resolve(__dirname, './src/locales/**') + include: path.resolve(__dirname, './src/locales/**'), + optimizeTranslationDirective: true }) ] }) diff --git a/packages/unplugin-vue-i18n/package.json b/packages/unplugin-vue-i18n/package.json index 398d799..c33a2fc 100644 --- a/packages/unplugin-vue-i18n/package.json +++ b/packages/unplugin-vue-i18n/package.json @@ -11,8 +11,8 @@ }, "peerDependencies": { "petite-vue-i18n": "*", - "vue-i18n": "*", - "vue-i18n-bridge": "*" + "vue": "^3.2.25", + "vue-i18n": "*" }, "peerDependenciesMeta": { "petite-vue-i18n": { @@ -20,16 +20,16 @@ }, "vue-i18n": { "optional": true - }, - "vue-i18n-bridge": { - "optional": true } }, "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", "@intlify/bundle-utils": "^9.0.0-beta.0", "@intlify/shared": "next", + "@intlify/vue-i18n-extensions": "^6.2.0", "@rollup/pluginutils": "^5.1.0", - "@vue/compiler-sfc": "^3.2.47", + "@typescript-eslint/scope-manager": "^7.13.0", + "@typescript-eslint/typescript-estree": "^7.13.0", "debug": "^4.3.3", "fast-glob": "^3.2.12", "js-yaml": "^4.1.0", @@ -37,7 +37,8 @@ "pathe": "^1.0.0", "picocolors": "^1.0.0", "source-map-js": "^1.0.2", - "unplugin": "^1.1.0" + "unplugin": "^1.1.0", + "vue": "^3.4" }, "devDependencies": { "unbuild": "^2.0.0" diff --git a/packages/unplugin-vue-i18n/src/core/directive.ts b/packages/unplugin-vue-i18n/src/core/directive.ts new file mode 100644 index 0000000..20f819d --- /dev/null +++ b/packages/unplugin-vue-i18n/src/core/directive.ts @@ -0,0 +1,446 @@ +import path from 'node:path' +import createDebug from 'debug' +import { isBoolean } from '@intlify/shared' +import { transformVTDirective } from '@intlify/vue-i18n-extensions' +import { analyze as analyzeScope } from '@typescript-eslint/scope-manager' +import { + parse, + simpleTraverse, + AST_NODE_TYPES +} from '@typescript-eslint/typescript-estree' +// @ts-expect-error -- FIXME: missing types +import eslintUitls from '@eslint-community/eslint-utils' +import { + resolveNamespace, + getVitePlugin, + checkVuePlugin, + normalizePath +} from '../utils' +import { parseVueRequest, getVuePluginOptions, getDescriptor } from '../vue' + +import type { TranslationSignatureResolver } from '@intlify/vue-i18n-extensions' +import type { Scope } from '@typescript-eslint/scope-manager' +import { + ParserServicesWithTypeInformation, + TSESTree +} from '@typescript-eslint/typescript-estree' +import type { UnpluginOptions, RollupPlugin } from 'unplugin' +import type { + VuePluginResolvedOptions, + TranslationDirectiveResolveIndetifier +} from '../vue' +import type { ResolvedOptions } from './options' + +type Node = Parameters< + ParserServicesWithTypeInformation['getSymbolAtLocation'] +>[0] + +const debug = createDebug(resolveNamespace('directive')) + +export function directivePlugin({ + optimizeTranslationDirective, + translationIdentifiers +}: ResolvedOptions): UnpluginOptions { + let vuePlugin: RollupPlugin | null = null + let vuePluginOptions: VuePluginResolvedOptions | null = null + + return { + name: resolveNamespace('directive'), + enforce: 'pre', + vite: { + config(config) { + // @ts-expect-error -- TODO + vuePlugin = getVitePlugin(config, 'vite:vue') + if (!checkVuePlugin(vuePlugin!)) { + return + } + + if (optimizeTranslationDirective) { + vuePlugin!.api.options = resolveVueOptions( + vuePlugin!, + optimizeTranslationDirective, + translationIdentifiers + ) + debug(`vite:vue options['template']:`, vuePlugin!.api.options) + } + }, + + configResolved(config) { + vuePlugin = getVitePlugin(config, 'vite:vue') + if (!checkVuePlugin(vuePlugin)) { + return + } + } + }, + + async transform(code, id) { + const { filename } = parseVueRequest(id) + + // lazy load vue plugin options + if (vuePluginOptions == null) { + vuePluginOptions = getVuePluginOptions(vuePlugin!) + } + + if (id.endsWith('.vue')) { + analyzeIdentifiers( + getDescriptor(filename, code, vuePluginOptions!), + vuePluginOptions, + translationIdentifiers + ) + } + + return code + } + } +} + +function resolveVueOptions( + vuePlugin: RollupPlugin, + optimizeTranslationDirective: ResolvedOptions['optimizeTranslationDirective'], + translationIdentifiers: ResolvedOptions['translationIdentifiers'] + // eslint-disable-next-line @typescript-eslint/no-explicit-any +): any { + const vueOptions = vuePlugin.api.options + vueOptions.template ||= {} + vueOptions.template.compilerOptions ||= {} + vueOptions.template.compilerOptions.directiveTransforms ||= {} + + /** + * NOTE: + * This is a custom translation signature resolver for Vue SFC. + * The resolver works by this plugin. + * That is analyzing the identifier of the `t` function exposed by `useI18n` in vue-i18n. + * The analyzed identifier is replaced by the directive transform of the Vue compiler. + */ + const translationSignatureResolver: TranslationSignatureResolver = ( + context, + baseResolver + ) => { + const { filename } = context + const vuePluginOptions = getVuePluginOptions(vuePlugin) + const normalizedFilename = normalizePath( + path.relative(vuePluginOptions.root, filename) + ) + const resolveIdentifier = translationIdentifiers.get(normalizedFilename) + debug('resolved vue-i18n Identifier', resolveIdentifier) + if (resolveIdentifier == null) { + return undefined + } + + if (resolveIdentifier.type === 'identifier') { + return baseResolver(context, resolveIdentifier.key) + } else { + // object + const resolvedSignature = baseResolver(context, resolveIdentifier.key) + return resolveIdentifier?.style === 'script-setup' + ? `${resolvedSignature}.t` + : resolvedSignature + } + } + + vueOptions.template.compilerOptions.directiveTransforms.t = + transformVTDirective({ + translationSignatures: isBoolean(optimizeTranslationDirective) + ? translationSignatureResolver + : optimizeTranslationDirective + }) + + return vueOptions +} + +function analyzeIdentifiers( + descriptor: ReturnType, + { root }: VuePluginResolvedOptions, + translationIdentifiers: Map +) { + const source = descriptor.scriptSetup?.content || descriptor.script?.content + debug('getDescriptor content', source) + if (!source) { + return + } + + const ast = parse(source, { range: true }) + simpleTraverse(ast, { + enter(node, parent) { + if (parent) { + node.parent = parent + } + } + }) + const scopeManager = analyzeScope(ast, { sourceType: 'module' }) + const scope = getScope(scopeManager, ast) + + const importLocalName = getImportLocalName(scope, 'vue-i18n', 'useI18n') + if (importLocalName == null) { + return + } + debug('importLocalName', importLocalName) + const resolvedIdentifier = getVueI18nIdentifier(scope, importLocalName!) + + if (resolvedIdentifier) { + const normalizedFilename = normalizePath( + path.relative(root, descriptor.filename) + ) + debug('set vue-i18n resolved identifier: ', resolvedIdentifier) + translationIdentifiers.set(normalizedFilename, resolvedIdentifier) + } +} + +function getScope(manager: ReturnType, node: Node): Scope { + const scope = manager.acquire(node, true) + if (scope) { + if (scope.type === 'function-expression-name') { + return scope.childScopes[0] + } + return scope + } + return manager.scopes[0] +} + +function getImportLocalName( + scope: Scope, + source: string, + imported: string +): string | null { + const importDecl = getImportDeclaration(scope, source) + if (importDecl) { + const specifierNode = importDecl.specifiers.find( + specifierNode => + isImportedIdentifierInImportClause(specifierNode) && + specifierNode.imported.name === imported + ) + return specifierNode ? specifierNode.local.name : null + } + return null +} + +function getImportDeclaration(scope: Scope, source: string) { + const tracker = new eslintUitls.ReferenceTracker(scope) + const traceMap = { + [source]: { + [eslintUitls.ReferenceTracker.ESM]: true, + [eslintUitls.ReferenceTracker.READ]: true + } + } + const refs = Array.from(tracker.iterateEsmReferences(traceMap)) satisfies { + path: string + node: Node + }[] + return refs.length ? (refs[0].node as TSESTree.ImportDeclaration) : null +} + +function isImportedIdentifierInImportClause( + node: TSESTree.ImportClause +): node is TSESTree.ImportClause & { imported: TSESTree.Identifier } { + return 'imported' in node +} + +function getVueI18nIdentifier(scope: Scope, local: string) { + // Get the CallExpression and ReturnStatement needed for analysis from scope. + const { callExpression, returnStatement } = + getCallExpressionAndReturnStatement(scope, local) + + // If CallExpression cannot get, `useI18n` will not be called and exit from this function + if (callExpression == null) { + return null + } + + // Get the AST Nodes from `id` prop on VariableDeclarator + // e.g. `const { t } = useI18n()` + // VariableDeclarator Node: `{ t } = useI18n()` + // expeted AST Nodes: `{ t }` + const id = getVariableDeclarationIdFrom(callExpression) + if (id == null) { + return null + } + + // parse variable id from AST Nodes + const variableIdPairs = parseVariableId(id) + debug('variableIdPairs:', variableIdPairs) + + // parse variable id from RestStatement Node + const returnVariableIdPairs = parseReturnStatement(returnStatement) + debug('returnVariableIdPairs:', returnVariableIdPairs) + + // resolve identifier + return resolveIdentifier(variableIdPairs, returnVariableIdPairs) +} + +const EMPTY_NODE_RETURN = { + callExpression: null, + returnStatement: null +} as const + +function getCallExpressionAndReturnStatement( + scope: Scope, + local: string +): + | { + callExpression: TSESTree.CallExpression | null + returnStatement: TSESTree.ReturnStatement | null + } + | typeof EMPTY_NODE_RETURN { + // TODO: missing types (eslint-utils) + const variable = eslintUitls.findVariable(scope, local) + if (variable == null) { + return EMPTY_NODE_RETURN + } + + // @ts-expect-error -- FIXME: missing types (eslint-utils) + const callExpressionRef = variable.references.find(ref => { + return ref.identifier.parent?.type === AST_NODE_TYPES.CallExpression + }) + if (callExpressionRef == null) { + return EMPTY_NODE_RETURN + } + + let returnStatement: TSESTree.ReturnStatement | null = null + if ( + callExpressionRef.from.type === 'function' && + callExpressionRef.from.block.type === AST_NODE_TYPES.FunctionExpression && + callExpressionRef.from.block.parent.type === AST_NODE_TYPES.Property && + callExpressionRef.from.block.parent.key.type === + AST_NODE_TYPES.Identifier && + callExpressionRef.from.block.parent.key.name === 'setup' + ) { + returnStatement = callExpressionRef.from.block.body.body.find( + (statement: Node) => { + return statement.type === AST_NODE_TYPES.ReturnStatement + } + ) as TSESTree.ReturnStatement | null + } + + return { + callExpression: callExpressionRef.identifier + .parent as TSESTree.CallExpression, + returnStatement + } +} + +function getVariableDeclarationIdFrom(node: TSESTree.CallExpression) { + if (node.parent?.type !== AST_NODE_TYPES.VariableDeclarator) { + return null + } + return node.parent.id as TSESTree.Identifier | TSESTree.ObjectPattern +} + +type VariableIdPair = { + key: string | null + value: string | null +} + +function parseVariableId( + node: TSESTree.Identifier | TSESTree.ObjectPattern +): VariableIdPair[] { + if (node.type === AST_NODE_TYPES.Identifier) { + // Identifier + // e.g `const i18n = useI18n()` + // [{ key: 'i18n', value: null }] + return [{ key: node.name, value: null }] + } else { + // ObjectPattern + // e.g `const { t, d: datetime } = useI18n()` + // [{ key: 't', value: 't' }, { key: 'd', value: 'datetime' }] + const props = node.properties.filter( + // ignore RestElement + prop => prop.type === AST_NODE_TYPES.Property + ) as TSESTree.Property[] + const pairs = [] as { key: string | null; value: string | null }[] + for (const prop of props) { + if ( + prop?.key.type === AST_NODE_TYPES.Identifier && + prop?.value.type === AST_NODE_TYPES.Identifier + ) { + pairs.push({ key: prop.key.name, value: prop.value.name }) + } + } + return pairs + } +} + +function parseReturnStatement( + node: TSESTree.ReturnStatement | null +): VariableIdPair[] { + const pairs = [] as VariableIdPair[] + if (node == null || node.argument == null) { + return pairs + } + + if (node.argument.type === AST_NODE_TYPES.ObjectExpression) { + // ObjectExpression + for (const prop of node.argument.properties) { + if (prop.type === AST_NODE_TYPES.Property) { + if ( + prop.key.type === AST_NODE_TYPES.Identifier && + prop.value.type === AST_NODE_TYPES.Identifier + ) { + // Identifier + // e.g `return { t, d: datetime }` + // [{ key: 't', value: 't' }, { key: 'd', value: 'datetime' }] + pairs.push({ key: prop.key.name, value: prop.value.name }) + } else if ( + prop.key.type === AST_NODE_TYPES.Identifier && + prop.value.type === AST_NODE_TYPES.MemberExpression && + prop.value.object.type === AST_NODE_TYPES.Identifier && + prop.value.property.type === AST_NODE_TYPES.Identifier + ) { + // MemberExpression + // e.g `return { t: i18n.t }` + // [{ key: 't', value: 'i18n.t' }] + pairs.push({ + key: prop.key.name, + value: `${prop.value.object.name}.${prop.value.property.name}` + }) + } + } + } + return pairs + } else if (node.argument.type === AST_NODE_TYPES.Identifier) { + // Identifier + // e.g `return i18n` + return pairs + } else { + // other AST Nodes + return pairs + } +} + +function resolveIdentifier( + localVariables: VariableIdPair[], + returnVariable: VariableIdPair[] +): TranslationDirectiveResolveIndetifier | null { + if (returnVariable.length === 0) { + // for ` + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-global-option.vue b/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-global-option.vue new file mode 100644 index 0000000..e31068c --- /dev/null +++ b/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-global-option.vue @@ -0,0 +1,14 @@ + + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-local-option.vue b/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-local-option.vue new file mode 100644 index 0000000..f91090d --- /dev/null +++ b/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-local-option.vue @@ -0,0 +1,19 @@ + + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-no-option.vue b/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-no-option.vue new file mode 100644 index 0000000..a3646a6 --- /dev/null +++ b/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-no-option.vue @@ -0,0 +1,12 @@ + + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-no-use.vue b/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-no-use.vue new file mode 100644 index 0000000..19912bb --- /dev/null +++ b/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-no-use.vue @@ -0,0 +1,10 @@ + + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-obj.vue b/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-obj.vue new file mode 100644 index 0000000..e3c3a05 --- /dev/null +++ b/packages/unplugin-vue-i18n/test/fixtures/directives/script-setup-obj.vue @@ -0,0 +1,12 @@ + + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/directives/setup-alias.vue b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-alias.vue new file mode 100644 index 0000000..2ed5150 --- /dev/null +++ b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-alias.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/directives/setup-global-option.vue b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-global-option.vue new file mode 100644 index 0000000..266768b --- /dev/null +++ b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-global-option.vue @@ -0,0 +1,19 @@ + + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/directives/setup-local-option.vue b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-local-option.vue new file mode 100644 index 0000000..383c767 --- /dev/null +++ b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-local-option.vue @@ -0,0 +1,24 @@ + + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/directives/setup-no-option.vue b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-no-option.vue new file mode 100644 index 0000000..73bb3a2 --- /dev/null +++ b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-no-option.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/directives/setup-no-use.vue b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-no-use.vue new file mode 100644 index 0000000..5146277 --- /dev/null +++ b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-no-use.vue @@ -0,0 +1,15 @@ + + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/directives/setup-return-alias-with-obj.vue b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-return-alias-with-obj.vue new file mode 100644 index 0000000..40d1a2d --- /dev/null +++ b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-return-alias-with-obj.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/directives/setup-return-alias.vue b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-return-alias.vue new file mode 100644 index 0000000..1926320 --- /dev/null +++ b/packages/unplugin-vue-i18n/test/fixtures/directives/setup-return-alias.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/unplugin-vue-i18n/test/fixtures/global-mix.vue b/packages/unplugin-vue-i18n/test/fixtures/global-mix.vue index 6fde3e0..4da5c7c 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/global-mix.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/global-mix.vue @@ -1,3 +1,4 @@ + { "en": { diff --git a/packages/unplugin-vue-i18n/test/fixtures/global-scope-import.vue b/packages/unplugin-vue-i18n/test/fixtures/global-scope-import.vue index d3f4b28..1f9b22e 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/global-scope-import.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/global-scope-import.vue @@ -1,2 +1,3 @@ + diff --git a/packages/unplugin-vue-i18n/test/fixtures/import.vue b/packages/unplugin-vue-i18n/test/fixtures/import.vue index d3f4b28..1f9b22e 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/import.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/import.vue @@ -1,2 +1,3 @@ + diff --git a/packages/unplugin-vue-i18n/test/fixtures/json5.vue b/packages/unplugin-vue-i18n/test/fixtures/json5.vue index d0e98ad..20d44a2 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/json5.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/json5.vue @@ -1,3 +1,4 @@ + { "en": { diff --git a/packages/unplugin-vue-i18n/test/fixtures/locale-import.vue b/packages/unplugin-vue-i18n/test/fixtures/locale-import.vue index a4869d7..f8ed91a 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/locale-import.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/locale-import.vue @@ -1,2 +1,3 @@ + diff --git a/packages/unplugin-vue-i18n/test/fixtures/locale-mix-json.vue b/packages/unplugin-vue-i18n/test/fixtures/locale-mix-json.vue index c02e2da..2b71bfb 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/locale-mix-json.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/locale-mix-json.vue @@ -1,3 +1,4 @@ + { "en": { diff --git a/packages/unplugin-vue-i18n/test/fixtures/locale-mix-yaml.vue b/packages/unplugin-vue-i18n/test/fixtures/locale-mix-yaml.vue index de765ee..9522a51 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/locale-mix-yaml.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/locale-mix-yaml.vue @@ -1,3 +1,4 @@ + en: hello: hello world! diff --git a/packages/unplugin-vue-i18n/test/fixtures/locale-mix.vue b/packages/unplugin-vue-i18n/test/fixtures/locale-mix.vue index 076164b..bc28878 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/locale-mix.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/locale-mix.vue @@ -1,3 +1,4 @@ + { "en": { diff --git a/packages/unplugin-vue-i18n/test/fixtures/locale.vue b/packages/unplugin-vue-i18n/test/fixtures/locale.vue index f59bc60..c1cf2dc 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/locale.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/locale.vue @@ -1,3 +1,4 @@ + { "hello": "γ“γ‚“γ«γ‘γ―γ€δΈ–η•ŒοΌ" diff --git a/packages/unplugin-vue-i18n/test/fixtures/multiple.vue b/packages/unplugin-vue-i18n/test/fixtures/multiple.vue index 1f0e33e..1fa8c8f 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/multiple.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/multiple.vue @@ -1,3 +1,4 @@ + { "en": { @@ -12,4 +13,4 @@ "hello": "γ“γ‚“γ«γ‘γ―γ€δΈ–η•ŒοΌ" } } - \ No newline at end of file + diff --git a/packages/unplugin-vue-i18n/test/fixtures/special-char.vue b/packages/unplugin-vue-i18n/test/fixtures/special-char.vue index 67d37a2..a6fd2a0 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/special-char.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/special-char.vue @@ -1,3 +1,4 @@ + { "en": { diff --git a/packages/unplugin-vue-i18n/test/fixtures/yaml.vue b/packages/unplugin-vue-i18n/test/fixtures/yaml.vue index 7944f46..7c65109 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/yaml.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/yaml.vue @@ -1,3 +1,4 @@ + hello: "hello world!" diff --git a/packages/unplugin-vue-i18n/test/fixtures/yml.vue b/packages/unplugin-vue-i18n/test/fixtures/yml.vue index 7c2291c..ad07ac0 100644 --- a/packages/unplugin-vue-i18n/test/fixtures/yml.vue +++ b/packages/unplugin-vue-i18n/test/fixtures/yml.vue @@ -1,3 +1,4 @@ + message: "@.caml:{'no apples'} | {0} apple | {n} apples" diff --git a/packages/unplugin-vue-i18n/test/query.test.ts b/packages/unplugin-vue-i18n/test/query.test.ts index ebe2bd5..689c5e7 100644 --- a/packages/unplugin-vue-i18n/test/query.test.ts +++ b/packages/unplugin-vue-i18n/test/query.test.ts @@ -1,4 +1,4 @@ -import { parseVueRequest } from '../src/query' +import { parseVueRequest } from '../src/vue' test('parse', () => { const id = diff --git a/packages/unplugin-vue-i18n/test/utils.ts b/packages/unplugin-vue-i18n/test/utils.ts index 3f168f5..cbd23b6 100644 --- a/packages/unplugin-vue-i18n/test/utils.ts +++ b/packages/unplugin-vue-i18n/test/utils.ts @@ -42,9 +42,10 @@ export async function bundleVite( ? options.strictMessage : true options.escapeHtml = !!options.escapeHtml + options.optimizeTranslationDirective = !!options.optimizeTranslationDirective const alias: Record = { - vue: 'vue/dist/vue.runtime.esm-browser.js' + vue: 'vue/dist/vue.esm-bundler.js' } if (!fixture.startsWith('@')) { alias['~target'] = resolve(__dirname, target, fixture) @@ -165,6 +166,7 @@ export async function bundleAndRun( ? options.strictMessage : true options.escapeHtml = !!options.escapeHtml + options.optimizeTranslationDirective = !!options.optimizeTranslationDirective const { code, map } = await bundler(fixture, options) diff --git a/packages/unplugin-vue-i18n/test/vite/__snapshots__/sourcemap.test.ts.snap b/packages/unplugin-vue-i18n/test/vite/__snapshots__/sourcemap.test.ts.snap index aad5d3e..29529b7 100644 --- a/packages/unplugin-vue-i18n/test/vite/__snapshots__/sourcemap.test.ts.snap +++ b/packages/unplugin-vue-i18n/test/vite/__snapshots__/sourcemap.test.ts.snap @@ -1,12 +1,12 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`custom blocks: json 1`] = `";;;;;;;;;;;;;;;;;;;AAGA,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,SAASA;AAChB,SAAO,UAAU;AACnB;"`; +exports[`custom blocks: json 1`] = `";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,SAAS;AAChB,SAAO,UAAU;AACnB;"`; -exports[`custom blocks: json5 1`] = `";;;;;;;;;;;;;;;;;;;AAGA,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,SAASA;AAChB,SAAO,UAAU;AACnB;"`; +exports[`custom blocks: json5 1`] = `";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,SAAS;AAChB,SAAO,UAAU;AACnB;"`; -exports[`custom blocks: yaml 1`] = `";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,SAASA;AAChB,SAAO,UAAU;AACnB;"`; +exports[`custom blocks: yaml 1`] = `";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,SAAS;AAChB,SAAO,UAAU;AACnB;"`; -exports[`custom blocks: yml 1`] = `";;;;;;;;;;;;;;;;;AAGA,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,SAASA;AAChB,SAAO,UAAU;AACnB;"`; +exports[`custom blocks: yml 1`] = `";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,SAAS;AAChB,SAAO,UAAU;AACnB;"`; exports[`resource files: json 1`] = `";;;;;;;;;;;;;;;;;AAGA,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,SAASA;AAChB,SAAO,UAAU;AACnB;"`; diff --git a/packages/unplugin-vue-i18n/test/vite/__snapshots__/translation-directive.test.ts.snap b/packages/unplugin-vue-i18n/test/vite/__snapshots__/translation-directive.test.ts.snap new file mode 100644 index 0000000..4649ba0 --- /dev/null +++ b/packages/unplugin-vue-i18n/test/vite/__snapshots__/translation-directive.test.ts.snap @@ -0,0 +1,352 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`translation directive > script-setup-alias 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString$1(($setup.translation || _ctx.$t)(\\"hello\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString$1($setup.count) + \\" \\" + toDisplayString$1($setup.translation(\\"hello\\")), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; + +exports[`translation directive > script-setup-global-option 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString$1(($setup.t || _ctx.$t)(\\"hello\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString$1($setup.count) + \\" \\" + toDisplayString$1($setup.t(\\"hello\\")), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; + +exports[`translation directive > script-setup-local-option 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString$1(($setup.t || _ctx.$t)(\\"count\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString$1($setup.count) + \\" \\" + toDisplayString$1($setup.t(\\"hello\\")), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; + +exports[`translation directive > script-setup-no-option 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString$1(($setup.t || _ctx.$t)(\\"hello\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString$1($setup.count) + \\" \\" + toDisplayString$1($setup.t(\\"hello\\")), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; + +exports[`translation directive > script-setup-no-use 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString(_ctx.$t(\\"hello\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString($setup.count), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; + +exports[`translation directive > script-setup-obj 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString$1(($setup.i18n.t || _ctx.$t)(\\"hello\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString$1($setup.count) + \\" \\" + toDisplayString$1($setup.i18n.t(\\"hello\\")), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; + +exports[`translation directive > setup-alias 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString$1(($setup.translation || _ctx.$t)(\\"hello\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString$1($setup.count) + \\" \\" + toDisplayString$1($setup.translation(\\"hello\\")), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; + +exports[`translation directive > setup-global-option 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString$1(($setup.t || _ctx.$t)(\\"hello\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString$1($setup.count) + \\" \\" + toDisplayString$1($setup.t(\\"hello\\")), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; + +exports[`translation directive > setup-local-option 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString$1(($setup.t || _ctx.$t)(\\"count\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString$1($setup.count) + \\" \\" + toDisplayString$1($setup.t(\\"hello\\")), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; + +exports[`translation directive > setup-no-option 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString$1(($setup.t || _ctx.$t)(\\"hello\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString$1($setup.count) + \\" \\" + toDisplayString$1($setup.t(\\"hello\\")), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; + +exports[`translation directive > setup-no-use 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString(_ctx.$t(\\"hello\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString($setup.count), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; + +exports[`translation directive > setup-return-alias 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString$1(($setup.translation || _ctx.$t)(\\"hello\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString$1($setup.count) + \\" \\" + toDisplayString$1($setup.translation(\\"hello\\")), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; + +exports[`translation directive > setup-return-alias-with-obj 1`] = ` +"function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock( + Fragment, + null, + [ + createBaseVNode( + \\"h1\\", + null, + toDisplayString$1(($setup.translation || _ctx.$t)(\\"hello\\", {}, {})), + 1 + /* TEXT */ + ), + createBaseVNode( + \\"p\\", + null, + toDisplayString$1($setup.count) + \\" \\" + toDisplayString$1($setup.translation(\\"hello\\")), + 1 + /* TEXT */ + ) + ], + 64 + /* STABLE_FRAGMENT */ + ); +}" +`; diff --git a/packages/unplugin-vue-i18n/test/vite/translation-directive.test.ts b/packages/unplugin-vue-i18n/test/vite/translation-directive.test.ts new file mode 100644 index 0000000..5f2d9a1 --- /dev/null +++ b/packages/unplugin-vue-i18n/test/vite/translation-directive.test.ts @@ -0,0 +1,22 @@ +import fg from 'fast-glob' +import path from 'node:path' +import { bundleVite, bundleAndRun } from '../utils' + +describe('translation directive', async () => { + const fixtures = await fg( + path.resolve(__dirname, '../fixtures/directives/*.vue') + ) + fixtures.forEach(fixture => { + const filename = path.basename(fixture) + const basename = filename.replace(/\.vue$/, '') + test(basename, async () => { + const options = { + target: './fixtures/directives/', + optimizeTranslationDirective: true + } + const mod = await bundleAndRun(filename, bundleVite, options) + const renderString = mod.module.render.toString() as string + expect(renderString).toMatchSnapshot() + }) + }) +}) diff --git a/packages/unplugin-vue-i18n/test/webpack/__snapshots__/sourcemap.test.ts.snap b/packages/unplugin-vue-i18n/test/webpack/__snapshots__/sourcemap.test.ts.snap index 32f2f6c..ce93f72 100644 --- a/packages/unplugin-vue-i18n/test/webpack/__snapshots__/sourcemap.test.ts.snap +++ b/packages/unplugin-vue-i18n/test/webpack/__snapshots__/sourcemap.test.ts.snap @@ -1,12 +1,12 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`custom blocks: json 1`] = `";;;;;;;;;;AAAa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACVA;AACA;AACA,CAAuE;AACvE,WAAW,yFAAM,iBAAiB,6FAAM;;;AAGxC,CAAoI;AACpI,iCAAiC,kJAAe;;AAEhD,iEAAe;;;;;;;;;;;;;;ACTf,6BAAe,oCAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mCAAmC,SAAS,+BAA+B,QAAQ,iCAAiC,yBAAyB,SAAS,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,mCAAmC,SAAS,+BAA+B,QAAQ,mCAAmC;AAC9Z;AACA;AACA,GAAG;AACH;;;;;;;UCXA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;ACN+B;AACG;;AAElC;AACA,kBAAkB,+CAAS;AAC3B,mBAAmB,oCAAO;AAC1B;;AAEA,iEAAe,+CAAS"`; +exports[`custom blocks: json 1`] = `";;;;;;;;;;AAAa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACVkE;AAClE;AACA;AACA,CAAuE;AACvE,WAAW,yFAAM,iBAAiB,6FAAM;;;AAGxC,CAAoI;AACpI,iCAAiC,kJAAe,oBAAoB,4EAAM;AAC1E;AACA,IAAI,KAAU,EAAE,EAcf;;;AAGD,iEAAe;;;;;;;;;;;;;;AC3Bf,6BAAe,oCAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mCAAmC,SAAS,+BAA+B,QAAQ,iCAAiC,yBAAyB,SAAS,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,mCAAmC,SAAS,+BAA+B,QAAQ,mCAAmC;AAC9Z;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UGXA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;ACN+B;AACG;;AAElC;AACA,kBAAkB,+CAAS;AAC3B,mBAAmB,oCAAO;AAC1B;;AAEA,iEAAe,+CAAS"`; -exports[`custom blocks: json5 1`] = `";;;;;;;;;;AAAa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACVA;AACA;AACA,CAAkF;AAClF,WAAW,oGAAM,iBAAiB,wGAAM;;;AAGxC,CAAoI;AACpI,iCAAiC,kJAAe;;AAEhD,iEAAe;;;;;;;;;;;;;;ACTf,6BAAe,oCAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mCAAmC,SAAS,+BAA+B,QAAQ,iCAAiC,yBAAyB,SAAS,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,mCAAmC,SAAS,+BAA+B,QAAQ,mCAAmC;AAC9Z;AACA;AACA,GAAG;AACH;;;;;;;UCXA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;ACN+B;AACG;;AAElC;AACA,kBAAkB,+CAAS;AAC3B,mBAAmB,oCAAO;AAC1B;;AAEA,iEAAe,+CAAS"`; +exports[`custom blocks: json5 1`] = `";;;;;;;;;;AAAa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACVkE;AAClE;AACA;AACA,CAAkF;AAClF,WAAW,oGAAM,iBAAiB,wGAAM;;;AAGxC,CAAoI;AACpI,iCAAiC,kJAAe,oBAAoB,4EAAM;AAC1E;AACA,IAAI,KAAU,EAAE,EAcf;;;AAGD,iEAAe;;;;;;;;;;;;;;AC3Bf,6BAAe,oCAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mCAAmC,SAAS,+BAA+B,QAAQ,iCAAiC,yBAAyB,SAAS,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,mCAAmC,SAAS,+BAA+B,QAAQ,mCAAmC;AAC9Z;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UGXA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;ACN+B;AACG;;AAElC;AACA,kBAAkB,+CAAS;AAC3B,mBAAmB,oCAAO;AAC1B;;AAEA,iEAAe,+CAAS"`; -exports[`custom blocks: yaml 1`] = `";;;;;;;;;;AAAa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA,CAA0F;AAC1F,WAAW,4GAAM,iBAAiB,gHAAM;AACxC,CAAyF;AACzF,WAAW,2GAAM,iBAAiB,+GAAM;;;AAGxC,CAAoI;AACpI,iCAAiC,kJAAe;;AAEhD,iEAAe;;;;;;;;;;;;;;ACXf,6BAAe,oCAAU;AACzB;AACA;AACA;AACA;AACA;AACA,gBAAgB,mCAAmC,SAAS,+BAA+B,QAAQ,iCAAiC,yBAAyB,SAAS,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,mCAAmC,SAAS,+BAA+B,QAAQ,mCAAmC;AAC5Z;AACA,GAAG;AACH;;;;;;;;;;;;;;ACTA,6BAAe,oCAAU;AACzB;AACA;AACA;AACA;AACA;AACA,gBAAgB,kCAAkC,SAAS,+BAA+B,QAAQ,gCAAgC,sBAAsB,SAAS,kCAAkC,SAAS,+BAA+B,QAAQ,iCAAiC,WAAW,kCAAkC,SAAS,+BAA+B,QAAQ,kCAAkC;AACnZ;AACA,GAAG;AACH;;;;;;UCTA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;ACN+B;AACG;;AAElC;AACA,kBAAkB,+CAAS;AAC3B,mBAAmB,oCAAO;AAC1B;;AAEA,iEAAe,+CAAS"`; +exports[`custom blocks: yaml 1`] = `";;;;;;;;;;AAAa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACViE;AACjE;AACA;AACA,CAA0F;AAC1F,WAAW,4GAAM,iBAAiB,gHAAM;AACxC,CAAyF;AACzF,WAAW,2GAAM,iBAAiB,+GAAM;;;AAGxC,CAAoI;AACpI,iCAAiC,kJAAe,oBAAoB,2EAAM;AAC1E;AACA,IAAI,KAAU,EAAE,EAcf;;;AAGD,iEAAe;;;;;;;;;;;;;;AC7Bf,6BAAe,oCAAU;AACzB;AACA;AACA;AACA;AACA;AACA,gBAAgB,mCAAmC,SAAS,+BAA+B,QAAQ,iCAAiC,yBAAyB,SAAS,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,mCAAmC,SAAS,+BAA+B,QAAQ,mCAAmC;AAC5Z;AACA,GAAG;AACH;;;;;;;;;;;;;;ACTA,6BAAe,oCAAU;AACzB;AACA;AACA;AACA;AACA;AACA,gBAAgB,kCAAkC,SAAS,+BAA+B,QAAQ,gCAAgC,sBAAsB,SAAS,kCAAkC,SAAS,+BAA+B,QAAQ,iCAAiC,WAAW,kCAAkC,SAAS,+BAA+B,QAAQ,kCAAkC;AACnZ;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UGTA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;ACN+B;AACG;;AAElC;AACA,kBAAkB,+CAAS;AAC3B,mBAAmB,oCAAO;AAC1B;;AAEA,iEAAe,+CAAS"`; -exports[`custom blocks: yml 1`] = `";;;;;;;;;;AAAa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACVA;AACA;AACA,CAA8E;AAC9E,WAAW,gGAAM,iBAAiB,oGAAM;;;AAGxC,CAAoI;AACpI,iCAAiC,kJAAe;;AAEhD,iEAAe;;;;;;;;;;;;;;ACTf,6BAAe,oCAAU;AACzB;AACA;AACA;AACA;AACA;AACA,kBAAkB,mCAAmC,SAAS,+BAA+B,QAAQ,iCAAiC,mBAAmB,uBAAuB,GAAG,GAAG,SAAS,GAAG,QAAQ,SAAS,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,aAAa,kCAAkC,SAAS,+BAA+B,QAAQ,gCAAgC,gBAAgB,QAAQ,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,sBAAsB,EAAE,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,WAAW,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,WAAW,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,kBAAkB,EAAE,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,WAAW,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,WAAW,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,mBAAmB,EAAE;AACzpD;AACA,GAAG;AACH;;;;;;UCTA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;ACN+B;AACG;;AAElC;AACA,kBAAkB,+CAAS;AAC3B,mBAAmB,oCAAO;AAC1B;;AAEA,iEAAe,+CAAS"`; +exports[`custom blocks: yml 1`] = `";;;;;;;;;;AAAa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACVgE;AAChE;AACA;AACA,CAA8E;AAC9E,WAAW,gGAAM,iBAAiB,oGAAM;;;AAGxC,CAAoI;AACpI,iCAAiC,kJAAe,oBAAoB,0EAAM;AAC1E;AACA,IAAI,KAAU,EAAE,EAcf;;;AAGD,iEAAe;;;;;;;;;;;;;;AC3Bf,6BAAe,oCAAU;AACzB;AACA;AACA;AACA;AACA;AACA,kBAAkB,mCAAmC,SAAS,+BAA+B,QAAQ,iCAAiC,mBAAmB,uBAAuB,GAAG,GAAG,SAAS,GAAG,QAAQ,SAAS,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,aAAa,kCAAkC,SAAS,+BAA+B,QAAQ,gCAAgC,gBAAgB,QAAQ,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,sBAAsB,EAAE,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,WAAW,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,WAAW,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,kBAAkB,EAAE,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,WAAW,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,WAAW,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,mBAAmB,EAAE;AACzpD;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UGTA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;ACN+B;AACG;;AAElC;AACA,kBAAkB,+CAAS;AAC3B,mBAAmB,oCAAO;AAC1B;;AAEA,iEAAe,+CAAS"`; exports[`resource files: json 1`] = `";;;;;;;;;;;;;;AAAA;AACA,cAAc,mCAAmC,SAAS,+BAA+B,QAAQ,iCAAiC,mBAAmB,uBAAuB,GAAG,GAAG,SAAS,GAAG,QAAQ,SAAS,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,aAAa,kCAAkC,SAAS,+BAA+B,QAAQ,gCAAgC,gBAAgB,QAAQ,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,sBAAsB,EAAE,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,WAAW,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,WAAW,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,kBAAkB,EAAE,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,WAAW,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,WAAW,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,mBAAmB,EAAE,GAAG;AACxpD;AACA,cAAc,mCAAmC,SAAS,+BAA+B,QAAQ,iCAAiC,kBAAkB,KAAK,GAAG,SAAS,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,WAAW,kCAAkC,SAAS,+BAA+B,QAAQ,gCAAgC,kBAAkB,EAAE,mCAAmC,SAAS,+BAA+B,QAAQ,kCAAkC,cAAc,EAAE,oCAAoC,SAAS,iCAAiC,QAAQ,kCAAkC,aAAa;AACrrB,GAAG;AACH;AACA,KAAK,kCAAkC,SAAS,+BAA+B,QAAQ,+BAA+B,kBAAkB,SAAS,kCAAkC,SAAS,+BAA+B,QAAQ,gCAAgC,WAAW,kCAAkC,SAAS,+BAA+B,QAAQ,iCAAiC,oBAAoB;AACrZ;AACA;AACA,cAAc,kCAAkC,SAAS,+BAA+B,QAAQ,+BAA+B,kBAAkB,SAAS,kCAAkC,SAAS,+BAA+B,QAAQ,gCAAgC,WAAW,kCAAkC,SAAS,+BAA+B,QAAQ,iCAAiC;AAC1Y;AACA;AACA;AACA,iEAAe;;;;;;UCbf;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;ACN+B;AACG;;AAElC;AACA,kBAAkB,+CAAS;AAC3B,mBAAmB,oCAAO;AAC1B;;AAEA,iEAAe,+CAAS"`; diff --git a/packages/vite-plugin-vue-i18n/examples/vite.config.ts b/packages/vite-plugin-vue-i18n/examples/vite.config.ts index 67f84ed..d77515e 100644 --- a/packages/vite-plugin-vue-i18n/examples/vite.config.ts +++ b/packages/vite-plugin-vue-i18n/examples/vite.config.ts @@ -8,7 +8,7 @@ export default defineConfig({ alias: { vue: path.resolve( __dirname, - '../../../node_modules/vue3/dist/vue.esm-bundler.js' + '../../../node_modules/vue/dist/vue.esm-bundler.js' ) } }, diff --git a/yarn.lock b/yarn.lock index 266ed7d..06c69c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -394,21 +394,21 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.20.15, @babel/parser@npm:^7.21.3": - version: 7.23.0 - resolution: "@babel/parser@npm:7.23.0" +"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.16": + version: 7.22.16 + resolution: "@babel/parser@npm:7.22.16" bin: parser: ./bin/babel-parser.js - checksum: 453fdf8b9e2c2b7d7b02139e0ce003d1af21947bbc03eb350fb248ee335c9b85e4ab41697ddbdd97079698de825a265e45a0846bb2ed47a2c7c1df833f42a354 + checksum: 944c756b5bdeb07b9fec16ecef6b3c61aff9d4c4b924abadcf01afa1840a740b8e2357ae00482b5b37daad6d2bfd848c947f27ad65138d687b6fdc924bc59edd languageName: node linkType: hard -"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.16": - version: 7.22.16 - resolution: "@babel/parser@npm:7.22.16" +"@babel/parser@npm:^7.24.4, @babel/parser@npm:^7.24.6": + version: 7.24.7 + resolution: "@babel/parser@npm:7.24.7" bin: parser: ./bin/babel-parser.js - checksum: 944c756b5bdeb07b9fec16ecef6b3c61aff9d4c4b924abadcf01afa1840a740b8e2357ae00482b5b37daad6d2bfd848c947f27ad65138d687b6fdc924bc59edd + checksum: fc9d2c4c8712f89672edc55c0dc5cf640dcec715b56480f111f85c2bc1d507e251596e4110d65796690a96ac37a4b60432af90b3e97bb47e69d4ef83872dbbd6 languageName: node linkType: hard @@ -1235,7 +1235,7 @@ __metadata: "@types/webpack-merge": ^5.0.0 "@typescript-eslint/eslint-plugin": ^6.21.0 "@typescript-eslint/parser": ^6.21.0 - "@vitejs/plugin-vue": ^1.2.5 + "@vitejs/plugin-vue": ^5.0.5 "@vue/compiler-sfc": ^3.2.23 babel-loader: ^8.2.2 chalk: ^4.1.1 @@ -1270,13 +1270,13 @@ __metadata: typescript: ^4.9.3 vite: ^4.4.9 vitest: ^0.29.8 - vue: ^2.6.14 + vue: ^3.2.25 vue-i18n: next vue-loader: ^16.3.0 vue-loader15: "npm:vue-loader@15.11.1" vue-loader17: "npm:vue-loader@17.4.2" vue-template-compiler: ^2.6.14 - vue3: "npm:vue@3.3.4" + vue2: "npm:vue@^2.6.14" webpack: ^5.88.2 webpack-cli: ^5.1.4 webpack-dev-server: ^4.15.1 @@ -1319,6 +1319,16 @@ __metadata: languageName: node linkType: hard +"@intlify/core-base@npm:9.13.1": + version: 9.13.1 + resolution: "@intlify/core-base@npm:9.13.1" + dependencies: + "@intlify/message-compiler": 9.13.1 + "@intlify/shared": 9.13.1 + checksum: afca8308829efdadb14555da05c7cb12277a829606236833254f35aac2118912e1b3c20e2e0a86a9af3769975a8d6526dcd30b690843bfb7216817cb3a594c43 + languageName: node + linkType: hard + "@intlify/message-compiler@npm:10.0.0-alpha.5, @intlify/message-compiler@npm:next": version: 10.0.0-alpha.5 resolution: "@intlify/message-compiler@npm:10.0.0-alpha.5" @@ -1329,6 +1339,16 @@ __metadata: languageName: node linkType: hard +"@intlify/message-compiler@npm:9.13.1": + version: 9.13.1 + resolution: "@intlify/message-compiler@npm:9.13.1" + dependencies: + "@intlify/shared": 9.13.1 + source-map-js: ^1.0.2 + checksum: 75fb8625e5907a799834ade3406774996d219cde9aed6369ccf51f37f87e2ce4a05b5c24c010e67a4fcabc8e9af92a2cb28d8fa8e803efc6826250b56b996cea + languageName: node + linkType: hard + "@intlify/shared@npm:10.0.0-alpha.5, @intlify/shared@npm:next": version: 10.0.0-alpha.5 resolution: "@intlify/shared@npm:10.0.0-alpha.5" @@ -1336,14 +1356,24 @@ __metadata: languageName: node linkType: hard +"@intlify/shared@npm:9.13.1, @intlify/shared@npm:^9.0.0": + version: 9.13.1 + resolution: "@intlify/shared@npm:9.13.1" + checksum: 27f0e351de1fe57955f27076000bb6103fca593049c315d58e01dece2ebd0e25779de28e5586877fd1596d7377f07784014755cdcb64a345e1efe050afadf911 + languageName: node + linkType: hard + "@intlify/unplugin-vue-i18n@workspace:packages/unplugin-vue-i18n": version: 0.0.0-use.local resolution: "@intlify/unplugin-vue-i18n@workspace:packages/unplugin-vue-i18n" dependencies: + "@eslint-community/eslint-utils": ^4.4.0 "@intlify/bundle-utils": ^9.0.0-beta.0 "@intlify/shared": next + "@intlify/vue-i18n-extensions": ^6.2.0 "@rollup/pluginutils": ^5.1.0 - "@vue/compiler-sfc": ^3.2.47 + "@typescript-eslint/scope-manager": ^7.13.0 + "@typescript-eslint/typescript-estree": ^7.13.0 debug: ^4.3.3 fast-glob: ^3.2.12 js-yaml: ^4.1.0 @@ -1353,20 +1383,45 @@ __metadata: source-map-js: ^1.0.2 unbuild: ^2.0.0 unplugin: ^1.1.0 + vue: ^3.4 peerDependencies: petite-vue-i18n: "*" + vue: ^3.2.25 vue-i18n: "*" - vue-i18n-bridge: "*" peerDependenciesMeta: petite-vue-i18n: optional: true vue-i18n: optional: true - vue-i18n-bridge: - optional: true languageName: unknown linkType: soft +"@intlify/vue-i18n-extensions@npm:^6.2.0": + version: 6.2.0 + resolution: "@intlify/vue-i18n-extensions@npm:6.2.0" + dependencies: + "@babel/parser": ^7.24.6 + "@intlify/shared": ^9.0.0 + "@vue/compiler-dom": ^3.2.45 + vue-i18n: ^9.0.0 + peerDependencies: + "@intlify/shared": ^9.0.0 || ^10.0.0 + "@vue/compiler-dom": ^3.0.0 + vue: ^3.0.0 + vue-i18n: ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + "@intlify/shared": + optional: true + "@vue/compiler-dom": + optional: true + vue: + optional: true + vue-i18n: + optional: true + checksum: de9b99982f2ed382385e8844f6c8e8c9a510ae2ae8ab81d79db92bcf0597c56eca45e6eb96cb5ac310ed1217708486169679747fd260d8352ab830c32712d97e + languageName: node + linkType: hard + "@istanbuljs/load-nyc-config@npm:^1.0.0": version: 1.1.0 resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" @@ -3085,6 +3140,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:^7.13.0": + version: 7.13.0 + resolution: "@typescript-eslint/scope-manager@npm:7.13.0" + dependencies: + "@typescript-eslint/types": 7.13.0 + "@typescript-eslint/visitor-keys": 7.13.0 + checksum: fb9663f414985e0fecd0952a9c5ff2a2e2b975cc7eb07a3fa13243b30d8aa67f9b707d636aa050b673b50a6b63aa8b5ba78a64f712e801e23f9c86e1896c3f21 + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/type-utils@npm:6.21.0" @@ -3109,6 +3174,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:7.13.0": + version: 7.13.0 + resolution: "@typescript-eslint/types@npm:7.13.0" + checksum: 1b81398bf4d0cb2602220d3a64f3bb74cd7b1e3e75fc1aecd28b9a6d6d20314ed7dffe057db3526ef3bdaa951e401443bb82e034cdebee79b28ea3b4ca9ff50f + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" @@ -3128,6 +3200,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:^7.13.0": + version: 7.13.0 + resolution: "@typescript-eslint/typescript-estree@npm:7.13.0" + dependencies: + "@typescript-eslint/types": 7.13.0 + "@typescript-eslint/visitor-keys": 7.13.0 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + minimatch: ^9.0.4 + semver: ^7.6.0 + ts-api-utils: ^1.3.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 5a410db27ddb514344414a579e9f81a0db0e7e9f579aa624ace223655b905705a37510992a94924d9ead3c4c84c9357cf5358599036f7c44f50b56b54a791d82 + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/utils@npm:6.21.0" @@ -3155,6 +3246,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:7.13.0": + version: 7.13.0 + resolution: "@typescript-eslint/visitor-keys@npm:7.13.0" + dependencies: + "@typescript-eslint/types": 7.13.0 + eslint-visitor-keys: ^3.4.3 + checksum: 23d48e1c1b9e16e5a867615ffe7111f637224b79bd738f94282b610a0b6b7bf5e436e1422e82395243d0f58714353fc613a11ea671bb217ea99d710f93ab6a26 + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.2.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" @@ -3162,12 +3263,13 @@ __metadata: languageName: node linkType: hard -"@vitejs/plugin-vue@npm:^1.2.5": - version: 1.10.2 - resolution: "@vitejs/plugin-vue@npm:1.10.2" +"@vitejs/plugin-vue@npm:^5.0.5": + version: 5.0.5 + resolution: "@vitejs/plugin-vue@npm:5.0.5" peerDependencies: - vite: ^2.5.10 - checksum: 7cffcf10f865ba30e380a64eff5aeb69e828905833ae85a1621523d76b7de38a66549deeefecd05788919e0e31aba155d734f67fd97542a6d77046f89ae86c8c + vite: ^5.0.0 + vue: ^3.2.25 + checksum: 96077539da0c6d0d19f68ca112466d804e374a9e18cdb97b5396793a7eecaff433c109bac82ff0d130d39c48963f658158f2f44696fd0a50df2eb5080fafbdcc languageName: node linkType: hard @@ -3226,27 +3328,16 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-core@npm:3.2.47": - version: 3.2.47 - resolution: "@vue/compiler-core@npm:3.2.47" +"@vue/compiler-core@npm:3.4.27": + version: 3.4.27 + resolution: "@vue/compiler-core@npm:3.4.27" dependencies: - "@babel/parser": ^7.16.4 - "@vue/shared": 3.2.47 - estree-walker: ^2.0.2 - source-map: ^0.6.1 - checksum: 9ccc2a0b897b59eea56ca4f92ed29c14cd1184f68532edf5fb0fe5cb2833bcf9e4836029effb6eb9a7c872e9e0350fafdcd96ff00c0b5b79e17ded0c068b5f84 - languageName: node - linkType: hard - -"@vue/compiler-core@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/compiler-core@npm:3.3.4" - dependencies: - "@babel/parser": ^7.21.3 - "@vue/shared": 3.3.4 + "@babel/parser": ^7.24.4 + "@vue/shared": 3.4.27 + entities: ^4.5.0 estree-walker: ^2.0.2 - source-map-js: ^1.0.2 - checksum: 5437942ea6575b316c9cd84f4f128a44939713da8b6958060e152c599e6d771d5db056c398d7574ee706ff8092e0d99ac4f14e7eef8712a8dd923d2323201b9e + source-map-js: ^1.2.0 + checksum: 7e32dd5d6046be56226b8567ba425df48d67d652bb2ca30ca674955dd4ded546cb9bfefe6a3fca6b2e3294b3fcc2025311982293e9f703b18aded642833987f4 languageName: node linkType: hard @@ -3260,41 +3351,30 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-dom@npm:3.2.47": - version: 3.2.47 - resolution: "@vue/compiler-dom@npm:3.2.47" +"@vue/compiler-dom@npm:3.4.27, @vue/compiler-dom@npm:^3.2.45": + version: 3.4.27 + resolution: "@vue/compiler-dom@npm:3.4.27" dependencies: - "@vue/compiler-core": 3.2.47 - "@vue/shared": 3.2.47 - checksum: 1eced735f865e6df0c2d7fa041f9f27996ff4c0d4baf5fad0f67e65e623215f4394c49bba337b78427c6e71f2cc2db12b19ec6b865b4c057c0a15ccedeb20752 + "@vue/compiler-core": 3.4.27 + "@vue/shared": 3.4.27 + checksum: 12fe6bb552fdcc91ec21279a91b1693a98851b0319f5a8b3895a921d648cdcbca98000192aba91f4f63379d2601400cb5ad1b7dd897e8d815621836ff307820a languageName: node linkType: hard -"@vue/compiler-dom@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/compiler-dom@npm:3.3.4" +"@vue/compiler-sfc@npm:3.4.27": + version: 3.4.27 + resolution: "@vue/compiler-sfc@npm:3.4.27" dependencies: - "@vue/compiler-core": 3.3.4 - "@vue/shared": 3.3.4 - checksum: 1c2ac0c89de8eef7be1c568d57504e6245adaaec40c2c4d9717bc231ca10bf682d918a3b358d24c786eeaf8e0d7eb8a65f57d9044775a304783fde1d069a1896 - languageName: node - linkType: hard - -"@vue/compiler-sfc@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/compiler-sfc@npm:3.3.4" - dependencies: - "@babel/parser": ^7.20.15 - "@vue/compiler-core": 3.3.4 - "@vue/compiler-dom": 3.3.4 - "@vue/compiler-ssr": 3.3.4 - "@vue/reactivity-transform": 3.3.4 - "@vue/shared": 3.3.4 + "@babel/parser": ^7.24.4 + "@vue/compiler-core": 3.4.27 + "@vue/compiler-dom": 3.4.27 + "@vue/compiler-ssr": 3.4.27 + "@vue/shared": 3.4.27 estree-walker: ^2.0.2 - magic-string: ^0.30.0 - postcss: ^8.1.10 - source-map-js: ^1.0.2 - checksum: 0a0adfdd3e812f528e25e4b3bbf14b2296b719a8aac609eca42035295527cc253b918a552dc15218e917efef26b7ca94054dc8784a1a18c06c3d4bb4d18ab8b9 + magic-string: ^0.30.10 + postcss: ^8.4.38 + source-map-js: ^1.2.0 + checksum: 9f8a05eb715a4752a51a2715c14e0f5b6175ce967b8851438f4ea3ba392b74edda227a067dc1e85625340f653f43bf69fbb80683a7a6c97c4d7eb4fcd4888013 languageName: node linkType: hard @@ -3316,24 +3396,6 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-sfc@npm:^3.2.47": - version: 3.2.47 - resolution: "@vue/compiler-sfc@npm:3.2.47" - dependencies: - "@babel/parser": ^7.16.4 - "@vue/compiler-core": 3.2.47 - "@vue/compiler-dom": 3.2.47 - "@vue/compiler-ssr": 3.2.47 - "@vue/reactivity-transform": 3.2.47 - "@vue/shared": 3.2.47 - estree-walker: ^2.0.2 - magic-string: ^0.25.7 - postcss: ^8.1.10 - source-map: ^0.6.1 - checksum: 4588a513310b9319a00adfdbe789cfe60d5ec19c51e8f2098152b9e81f54be170e16c40463f6b5e4c7ab79796fc31e2de93587a9dd1af136023fa03712b62e68 - languageName: node - linkType: hard - "@vue/compiler-ssr@npm:3.2.33": version: 3.2.33 resolution: "@vue/compiler-ssr@npm:3.2.33" @@ -3344,23 +3406,13 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-ssr@npm:3.2.47": - version: 3.2.47 - resolution: "@vue/compiler-ssr@npm:3.2.47" - dependencies: - "@vue/compiler-dom": 3.2.47 - "@vue/shared": 3.2.47 - checksum: 91bc6e46744d5405713c08d8e576971aa6d13a0cde84ec592d3221bf6ee228e49ce12233af8c18dc39723455b420df2951f3616ceb99758eb432485475fa7bc2 - languageName: node - linkType: hard - -"@vue/compiler-ssr@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/compiler-ssr@npm:3.3.4" +"@vue/compiler-ssr@npm:3.4.27": + version: 3.4.27 + resolution: "@vue/compiler-ssr@npm:3.4.27" dependencies: - "@vue/compiler-dom": 3.3.4 - "@vue/shared": 3.3.4 - checksum: 5d1875d55ea864080dd90e5d81a29f93308e312faf00163db5b391b38c2fe799fd3eb58955823dc632f2f8bdd271a4534cc0020646b7f82717be1a8d30dc16e7 + "@vue/compiler-dom": 3.4.27 + "@vue/shared": 3.4.27 + checksum: a9a3a2fd2700dcbe7e3ec27c8c41157ca1bca7ca492b15742b12ff2e7276fa9f0940af369686d6d031c08e6a0bb6b9fbef714d5f10333d6cf22c1b739fb7ce64 languageName: node linkType: hard @@ -3404,71 +3456,45 @@ __metadata: languageName: node linkType: hard -"@vue/reactivity-transform@npm:3.2.47": - version: 3.2.47 - resolution: "@vue/reactivity-transform@npm:3.2.47" - dependencies: - "@babel/parser": ^7.16.4 - "@vue/compiler-core": 3.2.47 - "@vue/shared": 3.2.47 - estree-walker: ^2.0.2 - magic-string: ^0.25.7 - checksum: 6fe54374aa8c080c0c421e18134e84e723e2d3e53178cf084c1cd75bc8b1ffaaf07756801f3aa4e1e7ad1ba76356c28bbab4bc1b676159db8fc10f10f2cbd405 - languageName: node - linkType: hard - -"@vue/reactivity-transform@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/reactivity-transform@npm:3.3.4" - dependencies: - "@babel/parser": ^7.20.15 - "@vue/compiler-core": 3.3.4 - "@vue/shared": 3.3.4 - estree-walker: ^2.0.2 - magic-string: ^0.30.0 - checksum: b425e78b2084ac7037887fbe012dcad5e5963ac9714ae15a04fda1c6766ec8c53ef231de1cfdc4d3cf46bd5d84bfec8ebdccf48da4ff5ee2f4b5084e54f0a1b1 - languageName: node - linkType: hard - -"@vue/reactivity@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/reactivity@npm:3.3.4" +"@vue/reactivity@npm:3.4.27": + version: 3.4.27 + resolution: "@vue/reactivity@npm:3.4.27" dependencies: - "@vue/shared": 3.3.4 - checksum: 81c3d0c587d23656a57a7a31afb51357274f6512b51baffc67cda183b2361a7e65e646029c26a8bc28587f26b65bba808dcd93cdd3bacab48d2b99d11ad0ec97 + "@vue/shared": 3.4.27 + checksum: 15904c6c7b0d7c3f974cbcbe9ff4d89db50e7a6a299b255d682824e1deebefc887739c9403360afa99894cd84a272893095fc46edb54cdab47448383e505291d languageName: node linkType: hard -"@vue/runtime-core@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/runtime-core@npm:3.3.4" +"@vue/runtime-core@npm:3.4.27": + version: 3.4.27 + resolution: "@vue/runtime-core@npm:3.4.27" dependencies: - "@vue/reactivity": 3.3.4 - "@vue/shared": 3.3.4 - checksum: d402da51269658cba5d857d65fbe322121160bcb1a6fcf03601d5183705e92505c6e90418f491a331ca3e27628f457a6ca7158b9add25f5b0cf5cf53664b8011 + "@vue/reactivity": 3.4.27 + "@vue/shared": 3.4.27 + checksum: 68321ba71eb467d8ea8a5fb1ff1355d851a159557a64536f5a823f6568c544f63c1f505245a3054c44710417f6b9d0eb155863fe50f6d437dc95daa3b3d1f943 languageName: node linkType: hard -"@vue/runtime-dom@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/runtime-dom@npm:3.3.4" +"@vue/runtime-dom@npm:3.4.27": + version: 3.4.27 + resolution: "@vue/runtime-dom@npm:3.4.27" dependencies: - "@vue/runtime-core": 3.3.4 - "@vue/shared": 3.3.4 - csstype: ^3.1.1 - checksum: dac9ada7f6128bcccc031fe5c25d00db94ffb7c011fcb70bada22fa4d889ff842eeb139ab9304bcc52cb5ae9030911a52cb3510b691bb190bbe5fab680b4411a + "@vue/runtime-core": 3.4.27 + "@vue/shared": 3.4.27 + csstype: ^3.1.3 + checksum: c80d28513b0e66d4be5ee579c05016aab13fb6c36d0b341d8d8d10f6b729bdf04784c217719777f1f03926919d60d9efed2c1569eb32c3bf21d9c745be262e54 languageName: node linkType: hard -"@vue/server-renderer@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/server-renderer@npm:3.3.4" +"@vue/server-renderer@npm:3.4.27": + version: 3.4.27 + resolution: "@vue/server-renderer@npm:3.4.27" dependencies: - "@vue/compiler-ssr": 3.3.4 - "@vue/shared": 3.3.4 + "@vue/compiler-ssr": 3.4.27 + "@vue/shared": 3.4.27 peerDependencies: - vue: 3.3.4 - checksum: e8598ed1a44df70edaea0ad6786aea6443b9b3d9266249eec5690401859d72d45a1e29ba3eef20e37a95f020abd5e763088b79070ee848af436a4390a253a37a + vue: 3.4.27 + checksum: d90d191fdf590ac1e3a89e6b03b74f2dcd3cc4a72f564c58953553518a30bd33baad4d675dabc2eb7a18cfedacdb826ef10bd4eeafce796ba24e535b60e90a00 languageName: node linkType: hard @@ -3479,17 +3505,10 @@ __metadata: languageName: node linkType: hard -"@vue/shared@npm:3.2.47": - version: 3.2.47 - resolution: "@vue/shared@npm:3.2.47" - checksum: 0aa711dc9160fa0e476e6e94eea4e019398adf2211352d0e4a672cfb6b65b104bbd5d234807d1c091107bdc0f5d818d0f12378987eb7861d39be3aa9f6cd6e3e - languageName: node - linkType: hard - -"@vue/shared@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/shared@npm:3.3.4" - checksum: 12fe53ff816bfa29ea53f89212067a86512c626b8d30149ff28b36705820f6150e1fb4e4e46897ad9eddb1d1cfc02d8941053939910eed69a905f7a5509baabe +"@vue/shared@npm:3.4.27": + version: 3.4.27 + resolution: "@vue/shared@npm:3.4.27" + checksum: 1fac455e7d6b627ab38d1f6b9276671449f3a7ce2eef20bcdd5f21ea6906fc7154f0ab7e2a3af7719e0cd6c4230d44cbb4543a446b4a7f081970e0efbc2cba78 languageName: node linkType: hard @@ -5463,10 +5482,10 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^3.1.1": - version: 3.1.2 - resolution: "csstype@npm:3.1.2" - checksum: e1a52e6c25c1314d6beef5168da704ab29c5186b877c07d822bd0806717d9a265e8493a2e35ca7e68d0f5d472d43fac1cdce70fd79fd0853dff81f3028d857b5 +"csstype@npm:^3.1.3": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 languageName: node linkType: hard @@ -5855,6 +5874,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^4.5.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -9254,12 +9280,12 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.0": - version: 0.30.0 - resolution: "magic-string@npm:0.30.0" +"magic-string@npm:^0.30.10": + version: 0.30.10 + resolution: "magic-string@npm:0.30.10" dependencies: - "@jridgewell/sourcemap-codec": ^1.4.13 - checksum: 7bdf22e27334d8a393858a16f5f840af63a7c05848c000fd714da5aa5eefa09a1bc01d8469362f25cc5c4a14ec01b46557b7fff8751365522acddf21e57c488d + "@jridgewell/sourcemap-codec": ^1.4.15 + checksum: 456fd47c39b296c47dff967e1965121ace35417eab7f45a99e681e725b8661b48e1573c366ee67a27715025b3740773c46b088f115421c7365ea4ea6fa10d399 languageName: node linkType: hard @@ -9567,6 +9593,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^9.0.4": + version: 9.0.4 + resolution: "minimatch@npm:9.0.4" + dependencies: + brace-expansion: ^2.0.1 + checksum: cf717f597ec3eed7dabc33153482a2e8d49f4fd3c26e58fd9c71a94c5029a0838728841b93f46bf1263b65a8010e2ee800d0dc9b004ab8ba8b6d1ec07cc115b5 + languageName: node + linkType: hard + "minimist-options@npm:4.1.0": version: 4.1.0 resolution: "minimist-options@npm:4.1.0" @@ -9846,6 +9881,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: d36c427e530713e4ac6567d488b489a36582ef89da1d6d4e3b87eded11eb10d7042a877958c6f104929809b2ab0bafa17652b076cdf84324aa75b30b722204f2 + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -10585,6 +10629,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.38": + version: 8.4.38 + resolution: "postcss@npm:8.4.38" + dependencies: + nanoid: ^3.3.7 + picocolors: ^1.0.0 + source-map-js: ^1.2.0 + checksum: 649f9e60a763ca4b5a7bbec446a069edf07f057f6d780a5a0070576b841538d1ecf7dd888f2fbfd1f76200e26c969e405aeeae66332e6927dbdc8bdcb90b9451 + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -11808,6 +11863,13 @@ __metadata: languageName: node linkType: hard +"source-map-js@npm:^1.2.0": + version: 1.2.0 + resolution: "source-map-js@npm:1.2.0" + checksum: 791a43306d9223792e84293b00458bf102a8946e7188f3db0e4e22d8d530b5f80a4ce468eb5ec0bf585443ad55ebbd630bf379c98db0b1f317fd902500217f97 + languageName: node + linkType: hard + "source-map-support@npm:^0.5.21, source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" @@ -12605,7 +12667,7 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.0.1": +"ts-api-utils@npm:^1.0.1, ts-api-utils@npm:^1.3.0": version: 1.3.0 resolution: "ts-api-utils@npm:1.3.0" peerDependencies: @@ -13191,6 +13253,19 @@ __metadata: languageName: node linkType: hard +"vue-i18n@npm:^9.0.0": + version: 9.13.1 + resolution: "vue-i18n@npm:9.13.1" + dependencies: + "@intlify/core-base": 9.13.1 + "@intlify/shared": 9.13.1 + "@vue/devtools-api": ^6.5.0 + peerDependencies: + vue: ^3.0.0 + checksum: ec62304958cbff5beac8bbe68798b290c31a44dbc7d06ad2f08c978488fc4e7183f44d8b96e46669dd9920d354de0a157b1cd21db3b6c20337ca68a0c12db028 + languageName: node + linkType: hard + "vue-i18n@npm:next": version: 10.0.0-alpha.5 resolution: "vue-i18n@npm:10.0.0-alpha.5" @@ -13285,26 +13360,31 @@ __metadata: languageName: node linkType: hard -"vue3@npm:vue@3.3.4": - version: 3.3.4 - resolution: "vue@npm:3.3.4" - dependencies: - "@vue/compiler-dom": 3.3.4 - "@vue/compiler-sfc": 3.3.4 - "@vue/runtime-dom": 3.3.4 - "@vue/server-renderer": 3.3.4 - "@vue/shared": 3.3.4 - checksum: 58b6c62a66a375ce5df460fcb7ba41b37c8637c635faf06ef472ae4197f412cf9ad83586cd8e3f66c486404fbe8550e694f90ff724a571d1ba78830791099c59 - languageName: node - linkType: hard - -"vue@npm:^2.6.14": +"vue2@npm:vue@^2.6.14": version: 2.6.14 resolution: "vue@npm:2.6.14" checksum: 23524a1bdca094d62cb3491a46317eed75184b5d61d28fa846ea5d2b241c1cc7084fc67ee259d47a50a6d0bbc33ecaceb7bb52bff81312fe7da07263f3419942 languageName: node linkType: hard +"vue@npm:^3.2.25, vue@npm:^3.4": + version: 3.4.27 + resolution: "vue@npm:3.4.27" + dependencies: + "@vue/compiler-dom": 3.4.27 + "@vue/compiler-sfc": 3.4.27 + "@vue/runtime-dom": 3.4.27 + "@vue/server-renderer": 3.4.27 + "@vue/shared": 3.4.27 + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 36d7a965d26af1cce9c309cb15491fd28e09194dd0dec2e4f236bc27165aa41047659e52fcd18a7cd6588d7cf15981f2943fc9420852c28e525f5ecdca771214 + languageName: node + linkType: hard + "w3c-hr-time@npm:^1.0.2": version: 1.0.2 resolution: "w3c-hr-time@npm:1.0.2"