{"version":3,"sources":["../node_modules/picocolors/picocolors.js","../src/utils/defaultGetLocaleFromPath.ts","../src/generation/runtime/merge.ts","../src/generation/runtime/deepMerge.ts","../src/core/config.ts","../src/utils/keys.ts","../src/utils/json.ts","../src/utils/error-formatter.ts","../src/generation/runtime/translateWrapperFunction.ts","../src/generation/runtime/hrmHotUpdate.ts","../src/generation/runtime/createI18nInstance.ts","../src/generation/treeShakeGenerator.ts","../src/generation/generator.ts","../src/utils/hash.ts","../src/utils/file.ts","../src/core/combined-messages.ts","../src/core/file-manager.ts","../src/createConsoleLogger.ts","../src/api.ts"],"names":["path","normalizePath","out","messages","error","deepMerge","createI18n","hrmHotUpdate","fallbackLocales","createI18nInstance","availableLocales","fs","pc","import_picocolors","options"],"mappings":"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","file":"api.cjs","sourcesContent":["let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","import path from \"node:path\";\n\nexport function defaultGetLocaleFromPath(filePath: string): string | null {\n\n  // example path: src/locales/Asdf.vue.en.json -> en\n  // example path: src/locales/en.json -> en\n  const fileName = path.basename(filePath); // Get the file name from the path\n  const parts = fileName.split('.')\n  // last part is json\n  if (parts.length < 2 || parts[parts.length - 1] !== 'json') {\n    return null; // Not a JSON file\n  }\n\n  const regex = /^(?=.*(?:^|\\.)(?<locale>[a-z]{2}(?:-[A-Z]{2})?(?=\\.|$))).*\\.json$/\n  const regexValid = fileName.match(regex);\n  if (!regexValid) {\n    return null; // Filename does not contain a valid locale code\n  }\n  // console.log('defaultGetLocaleFromPath', regexValid?.groups?.locale);\n  if (fileName.startsWith('.')) {\n    return null;\n  }\n  const locale = regexValid.groups?.locale;\n  return locale && locale?.length > 0 ? locale : null\n}\n","\n\nexport const shallowMerge = <T extends Record<string, any>>(a: T, b: T) => Object.assign({}, a, b);\n\nexport const toArray = <T, >(v?: T | T[]) => (Array.isArray(v) ? v : v ? [v] : []);\n\n","function deepMerge<T extends Record<string, any>>(target: T, source: T): T {\n  if (target === source) return target;\n  if (Array.isArray(target) && Array.isArray(source)) return source as T;\n  if (\n    target &&\n    source &&\n    typeof target === \"object\" &&\n    typeof source === \"object\" &&\n    !Array.isArray(target) &&\n    !Array.isArray(source)\n  ) {\n    const out: Record<string, any> = {...target};\n    for (const key of Object.keys(source)) {\n      out[key] = key in target ? deepMerge(target[key], (source as any)[key]) : (source as any)[key];\n    }\n    return out as T;\n  }\n  return source;\n}\n\nexport {deepMerge, deepMerge as default};\n","import type {CustomLogger, GenerationOptions, VirtualKeysDtsOptions} from \"../types\";\n\n\nimport path from \"node:path\";\nimport {normalizePath, type ResolvedConfig} from \"vite\";\nimport {defaultGetLocaleFromPath} from \"../utils/defaultGetLocaleFromPath.ts\";\nimport {shallowMerge} from \"../generation/runtime/merge.ts\";\nimport {deepMerge} from \"../generation/runtime/deepMerge.ts\";\n\nexport const Consts = {\n  //devUrlPath\n  devUrlPath: \"/_virtual_locales.json\",\n  debugUrlPath: \"/__locales_debug__\",\n} as const;\n\n/**\n * Normalize and validate plugin configuration\n */\nexport function normalizeConfig(userOptions: VirtualKeysDtsOptions = {}, logger: CustomLogger, cfg?: {\n  root?: string\n} | ResolvedConfig): GenerationOptions {\n  const baseLocale = userOptions.baseLocale ?? 'de';\n  const root: string = cfg?.root ?? userOptions.root ?? process.cwd();\n\n  function resolvePattern(pattern: string): string {\n    if (!pattern) throw new Error('Invalid pattern: empty string');\n    const isNegated = pattern.startsWith(\"!\");\n    const rawPattern = isNegated ? pattern.slice(1) : pattern;\n    const trimmedPattern = rawPattern.startsWith(\"./\") ? rawPattern.slice(2) : rawPattern;\n    const absolutePattern = path.isAbsolute(rawPattern)\n      ? rawPattern\n      : path.join(root, trimmedPattern);\n    const normalized = normalizePath(absolutePattern);\n    return isNegated ? `!${normalized}` : normalized;\n  }\n\n  const sourceId = userOptions.sourceId ?? 'virtual:vue-i18n-types';\n\n\n  const config: GenerationOptions = {\n    ...userOptions,\n    sourceId,\n    root,\n    fileBatchSize: userOptions.fileBatchSize ?? 100,\n    verbose: userOptions.debug ?? false,\n    typesPath: userOptions.typesPath ?? './src/vite-env-override.d.ts',\n    virtualFilePath: userOptions.virtualFilePath,\n    getLocaleFromPath: userOptions.getLocaleFromPath ?? defaultGetLocaleFromPath,\n    baseLocale,\n    include: (Array.isArray(userOptions.include)\n      ? userOptions.include\n      : userOptions.include\n        ? [userOptions.include]\n        : [\n          \"./**/locales/*.json\",\n          \"./**/*.vue.*.json\",\n          `./**/*${baseLocale}.json`\n        ]).map(resolvePattern),\n    exclude: (Array.isArray(userOptions.exclude)\n      ? userOptions.exclude\n      : userOptions.exclude\n        ? [userOptions.exclude]\n        : [\n          '**/tsconfig.*',\n          '**/node_modules/**',\n          '**/.git/**',\n          '**/dist/**',\n          '**/.output/**',\n          '**/.vercel/**',\n          '**/.next/**',\n          '**/build/**',\n        ]).map((pattern) => {\n      const resolved = resolvePattern(pattern);\n\n      return resolved.startsWith(\"!\") ? resolved : `!${resolved}`;\n    }).map((pattern) => {\n      const resolved = resolvePattern(pattern);\n\n      return resolved.startsWith(\"!\") ? resolved : `!${resolved}`;\n    }),\n    merge: userOptions.merge ?? 'deep',\n    mergeFunction: (userOptions.merge ?? 'deep') === 'deep' ? deepMerge : shallowMerge,\n    banner: userOptions.banner,\n    debug: userOptions.debug ?? false,\n    logger,\n    transformJson: userOptions.transformJson,\n  } as GenerationOptions;\n\n  return config;\n}\n\n\n","/**\n * Default key normalization: unique + ascending lexicographic sort.\n */\nexport function transformKeys(keys: string[]): string[] {\n  const set = new Set<string>()\n  for (const k of keys) {\n    if (typeof k === 'string' && k) set.add(k)\n  }\n  return Array.from(set).sort((a, b) => (a < b ? -1 : a > b ? 1 : 0))\n}\n","import type {JSONArray, JSONObject, JSONValue} from '../types'\nimport {transformKeys} from \"./keys\";\n\n\ntype MessageNode = {\n  type: number\n  loc?: { source?: string }\n  static?: string\n  body?: any\n  cases?: any[]\n  items?: any[]\n};\n\nfunction extractMessage(node: MessageNode): string {\n  // if the compiler preserved the original source string\n  if (node?.loc?.source) {\n    return node.loc.source;\n  }\n\n  // fallback to static text\n  if (node.static) {\n    return node.static;\n  }\n\n  // if it’s a plural/choice\n  if (node.cases) {\n    return node.cases.map(c => extractMessage(c)).join(\" | \");\n  }\n\n  // if it’s a compound message\n  if (node.items) {\n    return node.items.map(extractMessage).join(\"\");\n  }\n\n  return \"\";\n}\n\n/**\n * Structure-normalizing extractor. Removes AST-ish metadata, unwraps translation bodies,\n * and preserves shape while pruning noise. It's defensive and avoids repeated lookups.\n */\nexport function extractJson<T extends Record<string, any>|MessageNode>(obj: T): any {\n  if (Array.isArray(obj)) {\n    return obj.map(extractJson);\n  }\n\n  if (obj && typeof obj === \"object\" && \"type\" in obj) {\n    return extractMessage(obj as MessageNode);\n  }\n\n  if (obj && typeof obj === \"object\") {\n    const result: any = {};\n    for (const [k, v] of Object.entries(obj)) {\n      result[k] = extractJson(v);\n    }\n    return result;\n  }\n\n  return obj;\n}\n\n/**\n * Collect dot-notated leaf paths of an object.\n * - Primitives produce their full path.\n * - Arrays count as leaves (the array path is included) AND their items are traversed,\n *   producing index paths (e.g., \"c\", \"c.0\", \"c.1\").\n * Example:\n *   { a: { b: 1 }, c: ['test', 'asdf'] } => [\"a.b\", \"c\", \"c.0\", \"c.1\"]\n */\nexport function getJsonLeafPaths(obj: Record<string, unknown>): string[] {\n  const paths: string[] = [];\n\n  const isPlainObject = (val: unknown): val is Record<string, unknown> =>\n    Object.prototype.toString.call(val) === \"[object Object]\";\n\n  function walk(value: unknown, currentPath: string): void {\n    // Treat null/undefined as leaf values\n    if (value == null) {\n      if (currentPath) paths.push(currentPath);\n      return;\n    }\n\n    // Arrays: include the array path itself and traverse items\n    if (Array.isArray(value)) {\n      if (currentPath) paths.push(currentPath);\n      for (let i = 0; i < value.length; i++) {\n        const next = currentPath ? `${currentPath}.${i}` : String(i);\n        walk(value[i], next);\n      }\n      return;\n    }\n\n    // Plain objects: traverse properties\n    if (isPlainObject(value)) {\n      const entries = Object.entries(value);\n      if (entries.length === 0) {\n        // Empty object – no leaves to add (even if nested)\n        return;\n      }\n      for (const [k, v] of entries) {\n        const next = currentPath ? `${currentPath}.${k}` : k;\n        walk(v, next);\n      }\n      return;\n    }\n\n    // Primitive or non-plain object (Date, Map, etc.) – treat as leaf\n    if (currentPath) {\n      paths.push(currentPath);\n    }\n  }\n\n  walk(obj, \"\");\n  return paths;\n}\n\n/**\n * Canonicalize JSON by sorting object keys recursively.\n * Arrays are preserved in-place to keep their intended order.\n */\nexport function canonicalize<T extends JSONValue>(value: T | undefined): T {\n  if (value === null || typeof value !== 'object') return value as T\n  if (Array.isArray(value)) {\n    const arr = value as JSONArray\n    const out: JSONArray = new Array(arr.length)\n    for (let i = 0; i < arr.length; i++) out[i] = canonicalize(arr[i])\n    return out as T\n  }\n  const obj = value as JSONObject\n  const keys = Object.keys(obj).sort((a, b) => (a < b ? -1 : a > b ? 1 : 0))\n  const out: JSONObject = {}\n  for (const k of keys) out[k] = canonicalize(obj[k])\n  return out as T\n}\n\n/**\n * Detect conflicting keys across different locales.\n * A conflict occurs when the same key path has different types (e.g., string vs object) across locales.\n * @param messages - Object with locale codes as keys and message objects as values\n * @returns Array of conflict descriptions\n */\nexport function detectKeyConflicts(messages: Record<string, JSONValue>): string[] {\n  const conflicts: string[] = []\n  const keyTypeMap = new Map<string, Map<string, string>>() // key -> locale -> type\n\n  // Helper to get the type of a value\n  const getValueType = (val: unknown): string => {\n    if (val === null) return 'null'\n    if (val === undefined) return 'undefined'\n    if (Array.isArray(val)) return 'array'\n    if (typeof val === 'object') return 'object'\n    return typeof val\n  }\n\n  // Helper to traverse and collect all key paths with their types\n  const collectKeyTypes = (obj: unknown, locale: string, path = ''): void => {\n    if (obj === null || obj === undefined) {\n      if (path) {\n        if (!keyTypeMap.has(path)) keyTypeMap.set(path, new Map())\n        keyTypeMap.get(path)!.set(locale, getValueType(obj))\n      }\n      return\n    }\n\n    if (Array.isArray(obj)) {\n      if (path) {\n        if (!keyTypeMap.has(path)) keyTypeMap.set(path, new Map())\n        keyTypeMap.get(path)!.set(locale, 'array')\n      }\n      // Don't traverse array items for conflict detection\n      return\n    }\n\n    if (typeof obj === 'object') {\n      if (path) {\n        if (!keyTypeMap.has(path)) keyTypeMap.set(path, new Map())\n        keyTypeMap.get(path)!.set(locale, 'object')\n      }\n      for (const [key, value] of Object.entries(obj)) {\n        const newPath = path ? `${path}.${key}` : key\n        collectKeyTypes(value, locale, newPath)\n      }\n      return\n    }\n\n    // Primitive value\n    if (path) {\n      if (!keyTypeMap.has(path)) keyTypeMap.set(path, new Map())\n      keyTypeMap.get(path)!.set(locale, getValueType(obj))\n    }\n  }\n\n  // Collect all key types for each locale\n  for (const [locale, localeMessages] of Object.entries(messages)) {\n    if (locale === 'js-reserved') continue\n    collectKeyTypes(localeMessages, locale)\n  }\n\n  // Check for conflicts\n  for (const [key, localeTypes] of keyTypeMap.entries()) {\n    const types = Array.from(localeTypes.entries())\n    const uniqueTypes = new Set(types.map(([_, type]) => type))\n\n    if (uniqueTypes.size > 1) {\n      // We have a conflict\n      const typeGroups = new Map<string, string[]>()\n      for (const [locale, type] of types) {\n        if (!typeGroups.has(type)) typeGroups.set(type, [])\n        typeGroups.get(type)!.push(locale)\n      }\n\n      const groupDescriptions = Array.from(typeGroups.entries())\n        .map(([type, locales]) => `${type} in [${locales.join(', ')}]`)\n        .join(' vs ')\n\n      conflicts.push(`Key \"${key}\" has conflicting types: ${groupDescriptions}`)\n    }\n  }\n\n  return conflicts\n}\n\nexport function getFinalKeys<TKey extends string | number | symbol>(messages: Record<TKey, JSONValue>, baseLocale: TKey): string[] {\n  const messagesForBaseLocale = (messages?.[baseLocale] ?? Object.values(messages)[0]) as Record<string, JSONValue>;\n  const allKeysRaw = getJsonLeafPaths(messagesForBaseLocale)\n    .map((p) => p.replace(/\\.body\\.cases$/g, ''))\n\n  return transformKeys(allKeysRaw);\n}\n","/**\n * Enhanced error formatting utilities\n */\n\ninterface ErrorLocation {\n  line: number;\n  column: number;\n}\n\n/**\n * Parse JSON and provide enhanced error messages with line/column information\n */\nexport function parseJSONWithLocation(\n  content: string,\n  filePath: string\n): any {\n  try {\n    return JSON.parse(content);\n  } catch (error: any) {\n    const location = extractJSONErrorLocation(error, content);\n    throw createFormattedError(filePath, content, location, error.message);\n  }\n}\n\n/**\n * Extract line and column from JSON parse error\n */\nfunction extractJSONErrorLocation(\n  error: Error,\n  content: string\n): ErrorLocation | null {\n  const message = error.message;\n\n  // Try to extract position from different error formats\n  // Node.js: \"Unexpected token } in JSON at position 123\"\n  const positionMatch = message.match(/at position (\\d+)/);\n  if (positionMatch) {\n    const position = parseInt(positionMatch[1], 10);\n    return getLineAndColumn(content, position);\n  }\n\n  // V8: \"JSON.parse: unexpected character at line 5 column 12\"\n  const lineColMatch = message.match(/line (\\d+) column (\\d+)/);\n  if (lineColMatch) {\n    return {\n      line: parseInt(lineColMatch[1], 10),\n      column: parseInt(lineColMatch[2], 10),\n    };\n  }\n\n  return null;\n}\n\n/**\n * Convert character position to line and column\n */\nfunction getLineAndColumn(content: string, position: number): ErrorLocation {\n  const lines = content.substring(0, position).split('\\n');\n  const line = lines.length;\n  const column = lines[lines.length - 1].length + 1;\n\n  return {line, column};\n}\n\n/**\n * Create a formatted error with context\n */\nfunction createFormattedError(\n  filePath: string,\n  content: string,\n  location: ErrorLocation | null,\n  originalMessage: string\n): Error {\n  if (!location) {\n    // Fallback to simple error if we can't extract location\n    const error = new Error(`Failed to parse JSON in ${filePath}\\n${originalMessage}`);\n    error.name = 'JSONParseError';\n    return error;\n  }\n\n  const lines = content.split('\\n');\n  const {line, column} = location;\n\n  // Get context lines (2 before, the error line, 2 after)\n  const contextStart = Math.max(0, line - 3);\n  const contextEnd = Math.min(lines.length, line + 2);\n  const contextLines = lines.slice(contextStart, contextEnd);\n\n  // Build error message with context\n  const errorLines: string[] = [];\n  errorLines.push(`\\n❌ JSON Parse Error in ${filePath}:${line}:${column}`);\n  errorLines.push('');\n  errorLines.push(originalMessage);\n  errorLines.push('');\n\n  // Show context with line numbers\n  contextLines.forEach((contextLine, index) => {\n    const lineNum = contextStart + index + 1;\n    const isErrorLine = lineNum === line;\n    const prefix = isErrorLine ? '>' : ' ';\n    const lineNumStr = String(lineNum).padStart(4, ' ');\n\n    errorLines.push(`${prefix} ${lineNumStr} | ${contextLine}`);\n\n    // Add pointer to error column\n    if (isErrorLine && column > 0) {\n      const pointer = ' '.repeat(8 + column) + '^';\n      errorLines.push(pointer);\n    }\n  });\n\n  errorLines.push('');\n\n  const error = new Error(errorLines.join('\\n'));\n  error.name = 'JSONParseError';\n  return error;\n}\n\n/**\n * Format a generic file error with location\n */\nexport function formatFileError(\n  filePath: string,\n  message: string,\n  line?: number,\n  column?: number\n): Error {\n  const location = line !== undefined ? `:${line}${column !== undefined ? `:${column}` : ''}` : '';\n  const error = new Error(`\\n❌ Error in ${filePath}${location}\\n${message}\\n`);\n  error.name = 'FileError';\n  return error;\n}\n\n/**\n * Wrap an error with file context\n */\nexport function wrapErrorWithFile(\n  filePath: string,\n  error: Error\n): Error {\n  if (error.name === 'JSONParseError' || error.name === 'FileError') {\n    // Already formatted\n    return error;\n  }\n\n  const wrappedError = new Error(\n    `\\n❌ Error processing ${filePath}\\n${error.message}\\n`\n  );\n  wrappedError.name = 'FileProcessingError';\n  wrappedError.stack = error.stack;\n  return wrappedError;\n}\n","/**\n * A higher-order function that wraps another function to conditionally process its arguments.\n *\n * If the wrapper is called with two or more arguments, and the second argument\n * is a string that can be parsed into a finite number, it will:\n * 1. Convert the second argument to a Number.\n * 2. Ensure the third argument is an object and add 'count' and 'n' properties\n *    to it, with the value of the parsed number. If the third argument is not\n *    an object, a new object will be created.\n *\n * @param {Function} fn The function to wrap.\n * @returns {Function} A new function that wraps the original.\n */\nexport function translateWrapperFunction<TFn extends (...args: any[]) => any>(fn: TFn): TFn {\n  // Return a new function that will be used in place of the original.\n  // We use rest parameters (...args) to capture all arguments into an array.\n  return ((...args: unknown[]) => {\n    // Condition 1: Check if there are at least two arguments.\n    if (args.length >= 2) {\n      const secondArg = args[1];\n      console.log(args, typeof secondArg)\n\n\n      // Condition 2: Check if the second argument is a string that can be parsed into a number.\n      // We use parseFloat and isFinite for a robust check.\n      if (typeof secondArg === 'number' || (typeof secondArg === 'string' && !isNaN(parseFloat(secondArg)))) {\n        const numericValue = parseFloat(secondArg.toString());\n        const originalThirdArg = args[2];\n\n        // Prepare the new third argument.\n        // If the original third arg is a non-array object, merge with it.\n        // Otherwise, create a new object.\n        const newThirdArg = (typeof originalThirdArg === 'object' && originalThirdArg !== null && !Array.isArray(originalThirdArg))\n          ? {...originalThirdArg, count: numericValue, n: numericValue}\n          : {count: numericValue, n: numericValue};\n\n        // Create a new arguments array with the modified values.\n        const newArgs = [\n          args[0],          // First argument\n          //  numericValue,     // Converted second argument\n          newThirdArg      // Modified or created third argument\n\n        ];\n        console.log(newThirdArg);\n        // Call the original function with the modified arguments.\n        // @ts-expect-error TS cannot infer types here\n        return fn.apply(this, newArgs);\n      }\n    }\n\n    // If conditions are not met, call the original function with the original arguments.\n    // @ts-expect-error TS cannot infer types here\n    return fn.apply(this, args);\n  }) as TFn;\n}\n\nexport default translateWrapperFunction;\n","import {CombinedMessages} from \"../../core/combined-messages\";\n\nimport {Composer, DefaultLocaleMessageSchema as MessagesType, useI18n} from \"vue-i18n\";\nimport {JSONObject} from \"../../types\";\n\n\nexport type  I18nGlobalApp = Composer<MessagesType, Record<string, unknown>, Record<string, unknown>, object, false>\nexport type I18nApptype = { global: I18nGlobalApp }\ndeclare type globalThisType = { i18nModule: I18nApptype }\ndeclare const availableLocales: string[];\ndeclare const globalThis: globalThisType;\n\ndeclare function toValue<T>(r: T | { value: T }): T;\n\ndeclare function isReactive<T>(r: T | { value: T }): r is { value: T };\n\nexport type CustomHotFileChangedPayload = {\n  locale: string,\n  messages: null,\n  update: JSONObject,\n  timestamp: number\n}\nexport type CustomHotReplaceI18nPayload = {\n  locale?: undefined,\n  messages: CombinedMessages,\n  timestamp: number,\n  files: string[]\n}\nexport type CustomHotModuleUpdatePayload =\n  CustomHotReplaceI18nPayload\n  | CustomHotFileChangedPayload;\n\n// export function hrmHotUpdate(messages: Record<string, JSONObject>, data: CustomHotModuleUpdatePayload, app: I18nGlobalApp, deepMerge: (a: any, b: any) => any) {\nexport function hrmHotUpdate(messages: Record<string, JSONObject>, data: CustomHotReplaceI18nPayload | CustomHotFileChangedPayload, app: I18nGlobalApp, deepMerge: (a: any, b: any) => any) {\n\n  const i18nModule = app ?? globalThis?.i18nModule?.global;\n  if (!i18nModule) {\n    console.error('[i18n hotUpdate] No i18n module instance found, skipping update.');\n    return;\n  }\n  if (!data?.messages?.languages?.length && !data?.locale) {\n    console.warn('[i18n hotUpdate] No languages found in hot update data, skipping update.', data);\n    return;\n  }\n\n  if (data.messages) {\n\n    console.debug(`[i18n hotUpdate] Received FULL hot update with ${data.messages.contentId}: ${data.messages.languages.join(',')} for files: ${data.files.join(', ')}`);\n    // Update the exported messages\n    const mergedMessages = data.messages.messages;\n\n    // Update the global i18n instance if it exists\n    if (i18nModule) {\n      // Update messages for all locales\n      data.messages.languages.forEach(locale => {\n        i18nModule.setLocaleMessage(locale, mergedMessages[locale]);\n        // console.log('[i18n hotUpdate]' ,locale,mergedMessages[locale])\n      });\n    }\n\n\n  } else {\n    console.trace('[i18n hotUpdate] Received hot update for locale: ' + data.locale);\n    i18nModule.mergeLocaleMessage(data.locale, data.update);\n  }\n\n\n  // Force re-render by updating a reactive property\n  const currentLocale = toValue(i18nModule.locale);\n  if (!currentLocale) {\n    console.warn('[i18n hotUpdate] Current locale is undefined, skipping locale re-assignment.');\n    return\n  }\n  if (isReactive(i18nModule.locale)) {\n    i18nModule.locale.value = currentLocale;\n  } else {\n    // @ts-expect-error fallback for non-reactive locale\n    // globalThis.i18nModule = useI18n({useScope: 'global', locale: currentLocale});\n    i18nModule.locale = data.locale || currentLocale;\n  }\n\n\n  // Access to ensure reactivity\n}\n\nexport default hrmHotUpdate;\n\n","// import type {MessagesType} from \"virtual:vue-i18n-types\";\nimport type {ComposerOptions, DefaultLocaleMessageSchema, I18n, Locale} from \"vue-i18n\"\nimport {createI18n} from \"vue-i18n\"\n\ndeclare global {\n  export const fallbackLocales: string[];\n  export const messages: DefaultLocaleMessageSchema;\n}\n\nexport function createI18nInstance<T extends ComposerOptions>(options?: T): I18n<DefaultLocaleMessageSchema, T[\"datetimeFormats\"] extends Record<string, unknown> ? T[\"datetimeFormats\"] : Record<string, unknown>, T[\"numberFormats\"] extends Record<string, unknown> ? T[\"numberFormats\"] : Record<string, unknown>, T[\"locale\"] extends string ? T[\"locale\"] : Locale, false> {\n\n//I18n<Messages, DateTimeFormats, NumberFormats, OptionLocale, false>\n  const i18nApp = createI18n({\n    fallbackLocale: fallbackLocales,\n    // missingWarn: false,\n    // fallbackWarn: false,\n    locale: navigator?.language,\n    legacy: false,\n    ...options,\n    messages: messages,\n  } as const as any);\n  // @ts-expect-error globalThis not defined\n  globalThis.i18nApp = i18nApp;\n  // i18nApp.global.locale = navigator?.language?.split(\"-\")?.[0] ?? '${config.baseLocale}';\n  return i18nApp as I18n<DefaultLocaleMessageSchema, T[\"datetimeFormats\"] extends Record<string, unknown> ? T[\"datetimeFormats\"] : Record<string, unknown>, T[\"numberFormats\"] extends Record<string, unknown> ? T[\"numberFormats\"] : Record<string, unknown>, T[\"locale\"] extends string ? T[\"locale\"] : Locale, false>;\n}\n\nexport default createI18nInstance;\n\n// export function createI18nInstancePlugin<T extends Partial<ComposerOptions>&I18nOptions >(options?: T): I18n<AllTranslations, T[\"datetimeFormats\"] extends Record<string,unknown> ? T[\"datetimeFormats\"] : Record<string,unknown>, T[\"numberFormats\"] extends Record<string, unknown> ? T[\"numberFormats\"] : Record<string,unknown>, T[\"locale\"] extends string ? T[\"locale\"] : Locale, false> {\n//   const i18n = createI18nInstance(options);\n//   return i18n;\n// }\n\n","// HelperMethods.ts\nimport {CombinedMessages} from \"../core/combined-messages\";\n\nimport translateWrapperFunction from \"./runtime/translateWrapperFunction.ts??inline\";\nimport deepMerge from './runtime/deepMerge.ts??inline';\nimport hotUpdateCallback from \"./runtime/hrmHotUpdate.ts??inline\";\nimport codeCreateI18nInstance from \"./runtime/createI18nInstance??inline\";\nimport {GenerationOptions} from \"../types.ts\";\n\n/** String enum keeps runtime minimal and DX straightforward */\nexport enum SymbolEnum {\n  imports = \"_imports\",\n  messages = \"messages\",\n  hrmHotUpdate = \"_hrmHotUpdate\",\n\n  useI18nApp = \"useI18nApp\",\n  availableLocales = \"availableLocales\",\n  fallbackLocales = \"fallbackLocales\",\n  translationWrapper = \"translationWrapper\",\n  createI18nInstance = \"createI18nInstance\",\n  createI18nInstancePlugin = \"createI18nInstancePlugin\",\n  useI18nTypeSafe = \"useI18nTypeSafe\",\n}\n\n/** Shorthand constants if you prefer named references */\nexport const imports = SymbolEnum.imports;\nexport const messages = SymbolEnum.messages;\nexport const hrmHotUpdate = SymbolEnum.hrmHotUpdate;\nexport const availableLocales = SymbolEnum.availableLocales;\nexport const useI18nApp = SymbolEnum.useI18nApp;\nexport const fallbackLocales = SymbolEnum.fallbackLocales;\nexport const translationWrapper = SymbolEnum.translationWrapper;\nexport const createI18nInstance = SymbolEnum.createI18nInstance;\nexport const createI18nInstancePlugin = SymbolEnum.createI18nInstancePlugin;\nexport const useI18nTypeSafe = SymbolEnum.useI18nTypeSafe;\n\n\n\n\n// HMR handling for live updates\nexport const codeHrmHotUpdate = `\n\nlet cachedMessages = {};\nif (import.meta.hot) {\n${deepMerge}\n${hotUpdateCallback}\n  import.meta.hot.on('i18n-update', (data) => {\n cachedMessages = hrmHotUpdate(cachedMessages,data, globalThis.i18nApp.global,deepMerge);\n\n  });\n}`\n\nexport type HelperMethodsRecord = Record<SymbolEnum, string>;\n// type that has every key of SymbolEnum as ker\n// ys\n// type HelperMethodsOrderKeys = keyof typeof HelperMethodsOrder;\n// type _HelperMethods = Record<HelperMethodsOrderKeys, SymbolEnum>;\n/** Stable order for full-file serialization */\n// export const HelperMethodsOrder: HelperMethodsRecord = {\n//\n//\n//   [SymbolEnum.imports.toString()]: 'imports',\n//   [messages.toString()]: SymbolEnum.messages,\n//   useI18nApp: SymbolEnum.useI18nApp,\n//   fallbackLocales: SymbolEnum.fallbackLocales,\n//   [availableLocales.toString()]: SymbolEnum.availableLocales,\n//\n//   translationWrapper: SymbolEnum.translationWrapper,\n//   createI18nInstance: SymbolEnum.createI18nInstance,\n//   createI18nInstancePlugin: SymbolEnum.createI18nInstancePlugin,\n//   useI18nTypeSafe: SymbolEnum.useI18nTypeSafe,\n// } as HelperMethodsRecord;\n\n/** All sections resolve to strings */\n\n\nexport interface RuntimeGenerationParams {\n  config: GenerationOptions,\n  buildAssetRefId?: string,\n}\n\n/** Builder: produces the enum-keyed record */\nfunction buildRuntimeMethods(messagesCombined: CombinedMessages): HelperMethodsRecord {\n  const config = messagesCombined.config;\n\n  function getMessages() {\n    // When inlineDataInBuild is true, always inline the data directly\n    // This avoids issues with virtual JSON modules in library builds\n    // if (config.emit.buildAssetRefId) {\n    //   config.logger.info(`buildAssetRefId: ${config.emit.buildAssetRefId}`)\n    //   return `\n    //   // export const messages = ${messagesCombined.messagesJsonString}\n    //   import  messagesImported  from '${config.sourceId}/messages';\n    //   export const messages = messagesImported;\n    //   // const messages = import.meta.ROLLUP_FILE_URL_${config.emit.buildAssetRefId}`\n    //\n    // } else if (config.emit.inlineDataInBuild) {\n    //   return `export const messages = ${messagesCombined.messagesJsonString}`\n    // } else {\n    //\n    // config.logger.warn(messagesImportedFromServer)\n    return `export const messages = ${messagesCombined.messagesJsonString};`\n    // }\n  }\n\n  return {\n    [imports]: `\n    import { isReactive, ref, toValue} from \"vue\";\n    import { createI18n, useI18n } from 'vue-i18n';\n    `,\n    [messages]: getMessages(),\n    [availableLocales]: `export const availableLocales = ${messagesCombined.languagesTuple()};`,\n    [fallbackLocales]: `export const fallbackLocales = ${JSON.stringify(messagesCombined.fallbackLocales)};`,\n    [hrmHotUpdate]: codeHrmHotUpdate,\n    [useI18nApp]: \"export const useI18nApp = () => globalThis.i18nApp.global;\",\n\n\n    [translationWrapper]: 'export ' + translateWrapperFunction,\n    [createI18nInstance]: 'export ' + codeCreateI18nInstance,\n    [createI18nInstancePlugin]: 'export const createI18nInstancePlugin = createI18nInstance;',\n    [useI18nTypeSafe]:\n      `export function useI18nTypeSafe(options) {\n  const { t: originalT, d, n, ...rest } = useI18n({\n\n    ...(options ?? {}),\n  });\n  return {\n    ...rest,\n    t: translateWrapperFunction(originalT),\n    d,\n    n,\n  };\n}`,\n  } as const;\n\n}\n\n\n\n/** Typed, compact class with ergonomic helpers */\nexport class RuntimeMethods {\n  private readonly _data: HelperMethodsRecord;\n  private readonly _config: GenerationOptions;\n\n  constructor(messagesCombined: CombinedMessages) {\n    this._data = buildRuntimeMethods(messagesCombined);\n    this._config = messagesCombined.config;\n  }\n\n\n  /** Deterministic full-file content (all sections in HelperMethodsOrder) */\n  toFileContent(defaultExport = 'messages'): string {\n    return Object.values(this._data).join(\"\\n\\n\") + 'export default ' + defaultExport;\n  }\n\n  parseSymbolEnumKey(key: string | SymbolEnum): string | undefined {\n    for (const [keyFound, contentFound] of Object.entries(this._data)) {\n\n\n      if (keyFound.toString() == key.toString()) {\n        return contentFound;\n      }\n\n    }\n    return undefined;\n  }\n\n\n  getFileContentFor(target: string | SymbolEnum, separator = \"\\n\\n\"): string {\n    // remove \"??*\" from target\n\n    const resolvedCode = this.parseSymbolEnumKey(target);//? this._data?.[resolved] : this._data?.[target];\n    if (!resolvedCode) {\n      // throw new Error(`getFileContentFor: No code found for target \"${target}\". Available keys: ${Object.keys(this._data).join(\", \")}`);\n      this._config.logger.error(`getFileContentFor: No code found for target \"${target}\". Available keys: ${Object.entries(this._data).join(\", \")}`);\n      return this.toFileContent(target);\n    }\n\n    // For sub-modules, we only need the specific export, not vue-i18n imports\n    // unless the module needs them (like useI18nTypeSafe)\n    const needsVueI18nImports = ['useI18nTypeSafe', 'createI18nInstance', 'createI18nInstancePlugin'].includes(target);\n    const importsCode = this._data[imports];\n\n// this._config.logger.info(`getFileContentFor: Generating code for target \"${target}\". needsVueI18nImports: ${needsVueI18nImports}`);\n// this._config.logger.debug(`Imports code: ${importsCode}`);\n    // Messages, availableLocales, and fallbackLocales are already exported in resolvedCode\n    // so we don't need to add 'export default'\n    const needsDefaultExport = true;//!['messages', 'availableLocales', 'fallbackLocales', 'useI18nApp', 'translationWrapper', 'useI18nTypeSafe', 'createI18nInstance', 'createI18nInstancePlugin'].includes(target);\n    const defaultExportCode = needsDefaultExport ? `export default ${target}` : '';\n\n    const parts = [importsCode, resolvedCode, defaultExportCode].filter(Boolean);\n    return parts.join(separator);\n  }\n}\n","import type {GenerationOptions, JSONObject} from '../types'\nimport {CombinedMessages} from '../core/combined-messages'\nimport {RuntimeGenerationParams, RuntimeMethods} from \"./treeShakeGenerator\";\n\n\n/**\n * Create .d.ts content for type definitions only\n */\nexport function toTypesContent(params: {\n  combinedMessages: CombinedMessages<string, JSONObject>;\n  config?: GenerationOptions;\n}): string {\n  const {\n    combinedMessages,\n    config,\n  } = params\n  const sourceId = config?.sourceId ?? '@vue-i18n-types'\n  // Use CombinedMessages properties directly\n  const contentId = combinedMessages.keysId\n\n\n  const autogenerated =\n    (config?.banner ?? //// @ts-nocheck\n      `/* eslint-disable */\n       /* prettier-ignore */\n      // @formatter:off\n      // biome-ignore lint: disable\n      // AUTO-GENERATED FILE. DO NOT EDIT.\n      // Content-Hash: ${contentId}\n`.split('\\n').map(l => l.trim()).filter(l => l).join('\\n') + '\\n\\n')\n\n  const NL = '\\n'\n  const baseLocaleMessages = combinedMessages.baseLocaleMessages;\n  const finalKeys = combinedMessages.keys;\n  const availableLocales = combinedMessages.languages;\n\n  // Type definitions only - build with array for better performance\n  const bodyLines = [\n    '// types content',\n\n\n    `\n\ndeclare module '${sourceId}/messages' {\n  import type {ResourceValue,TranslationsPaths,PickupPaths,RemoveIndexSignature,PickupKeys,PickupLocales, ResourcePath, IsEmptyObject,} from \"@intlify/core-base\";\n\n  import type { DefineLocaleMessage, DefaultLocaleMessageSchema,Locale } from 'vue-i18n';\n\n  export type AllMessages = Readonly<${JSON.stringify(combinedMessages.messages)}>;\n  export type MessageSchemeType = AllMessages['en'];\n\n  export type AllTranslationKeys = TranslationsPaths<AllMessages> | '${(finalKeys??[]).join(\"' | '\")}';\n  export type MessageSchemaGen = MessageSchemeType & DefineLocaleMessage;\n  export type I18nMessages = AllMessages;\n  export type AllTranslations = I18nMessages;\n  export type MessagesType = I18nMessages;\n\n  export const messages: MessagesType;\n  export {messages as default };\n}\ndeclare module '${sourceId}/availableLocales' {\n  import type {PickupLocales } from \"@intlify/core-base\";\n\n  export type AvailableLocales =  Readonly<[${availableLocales.map(l => `'${l}'`).join(', ')}]>\n  export type AvailableLocale = PickupLocales<AllMessages>\n  export const availableLocales : AvailableLocales;\n  export default availableLocales;\n}\ndeclare module '${sourceId}' {\n   import {type Plugin, type WritableComputedRef} from 'vue';\n   import { availableLocales } from '${sourceId}/availableLocales';\n   import type {  Composer, Locale, FallbackLocale, ComposerOptions as Options, ComposerOptions, I18n, I18nOptions,DefaultDateTimeFormatSchema,DefaultNumberFormatSchema, NamedValue, TranslateOptions, UseI18nOptions} from \"vue-i18n\";\n   import type { MessagesType,AllMessages, AllTranslations,AllTranslationKeys,I18nMessages,MessageSchemaGen} from '${sourceId}/messages';\n   export type * from '${sourceId}/messages';\n    export type * from '${sourceId}/availableLocales';\n   import type { AvailableLocale,AvailableLocales} from '${sourceId}/availableLocales';\n\n   export interface I18nCustom {\n     (key: AllTranslationKeys, plural: number, options: TranslateOptions): string\n      (key: AllTranslationKeys): string\n      (key: AllTranslationKeys, options?: TranslateOptions): string\n      (key: AllTranslationKeys, defaultMsg?: string): string\n      (key: AllTranslationKeys, defaultMsg: string, options?: TranslateOptions): string\n      (key: AllTranslationKeys, named: NamedValue, defaultMsg?: string): string\n      (key: AllTranslationKeys, named: NamedValue, plural?: number): string\n      (key: AllTranslationKeys, named: NamedValue, options?: TranslateOptions & Record<string,string|number>): string\n      (key: AllTranslationKeys, plural: number| UnwrapRef<number>, named?: NamedValue<TranslateOptions>): string\n      (key: AllTranslationKeys, plural: number, defaultMsg?: string): string\n  };\n\n\ndeclare module 'vue' {\n  import type {NamedValue, TranslateOptions} from \"vue-i18n\";\n  import type {AllTranslationKeys, I18nCustom} from 'virtual:vue-i18n-types';\n\n\n  /**\n   * Component Custom Properties for Vue I18n\n   *\n   * @VueI18nInjection\n   */\n  export interface ComponentCustomProperties {\n\n    // $i18n: VueI18nInstance\n    $t(key: AllTranslationKeys, plural?: number|TranslateOptions|string|NamedValue, options?: TranslateOptions|string|number): string\n\n  }\n}\n\n\n\nexport type DateTimeFormats = Record<AvailableLocale|string, DefaultDateTimeFormatSchema>\nexport type NumberFormats = Record<AvailableLocale|string, DefaultNumberFormatSchema>\n\n export type I18nOptions = Omit<ComposerOptions,'messages'>&\n {\n   messages:AllMessages,locale: ${combinedMessages.config.baseLocale},\n\n };\n export type CreateI18nOptions = Omit<ComposerOptions,'messages'>& I18nOptions &\n {\n\n  lecacy: false,\n  dateTimeFormats?: DateTimeFormats,\n  numberFormats?: NumberFormats\n };\n// export type DateTimeFormats = DefaultDateTimeFormatSchema\n// export type NumberFormats =  DefaultNumberFormatSchema\n\n  export type I18InstanceType<Options extends CreateI18nOptions> = I18n<AllMessages,DateTimeFormats, NumberFormats, AvailableLocale,false>\n  export type UseI18nTypesafeReturn<TOptions extends I18nOptions=I18nOptions> = Omit<Composer<AllMessages, NonNullable<TOptions['datetimeFormats']>, NonNullable<TOptions['numberFormats']>, TOptions['locale'] extends unknown ?AvailableLocale: TOptions['locale']>,'t'> &\n  {\n  availableLocales: AvailableLocales\n   t: I18nCustom\n   tm: <TKey extends string |PickupPaths<MessageSchemaGen>,TResult extends ResourceValue<MessageSchemaGen, TKey>>(t: TKey) =>  TResult\n   locale: WritableComputedRef<AvailableLocale>\n  };\n\n  type I18nInstance<T extends Omit<ComposerOptions,'messages'>> = I18n<\n    MessagesType,\n    T['datetimeFormats'] extends Record<string, unknown> ? T['datetimeFormats'] : object,\n    T['numberFormats'] extends Record<string, unknown> ? T['numberFormats'] : object,\n    T['locale'] extends string ? T['locale'] : Locale,\n    false\n  >\n  export function createI18nInstance<Options extends CreateI18nOptions>(options?: Options): I18InstanceType<Options>;\n  export function createI18nInstancePlugin<T extends  CreateI18nOptions>(options?: T):\n      Plugin<unknown[]>& I18nInstance<T>\n\n  export {fallbackLocales} from '${sourceId}/fallbackLocales'\n  export {availableLocales} from '${sourceId}/availableLocales'\n  export {messages} from '${sourceId}/messages'\n  export const useI18nApp: ()=> UseI18nTypesafeReturn\n  export function useI18nTypeSafe(options?:I18nOptions):UseI18nTypesafeReturn;\n}\n// declare module '@intlify/core-base' {\n//\n//   export type DefineCoreLocaleMessage = _AllMessages;\n// }\n//   import type { Composer, UseI18nOptions,DefaultLocaleMessageSchema, SchemaParams, LocaleParams, VueMessageType } from 'vue-i18n';\n// declare module 'vue-i18n' {\n  // type messageScheme = ${JSON.stringify(baseLocaleMessages)}\n  // export type DefaultLocaleMessageSchema = _MessageSchemeType\n\n  // export type DefineLocaleMessage = _MessageSchemeType\n  // export type Locale =  ${combinedMessages.languagesUnion()};\n//export type ComposerTranslation\n// }\n\n\ndeclare module '${sourceId}/fallbackLocales' {\n  import type { Locale } from \"vue-i18n\";\n  export const fallbackLocales: { [locale in string]: Locale[];}\n  export default fallbackLocales;\n}\ndeclare module '${sourceId}/createI18nInstance' {\n  import type {createI18nInstance as ImportedType} from '${sourceId}';\n  export const createI18nInstance: ImportedType;\n  export default createI18nInstance;\n}\ndeclare module '${sourceId}/createI18nInstancePlugin' {\n  import type {createI18nInstancePlugin as ImportedType} from '${sourceId}';\n  export const createI18nInstancePlugin: ImportedType;\n  export default createI18nInstancePlugin;\n}\ndeclare module '${sourceId}/useI18nTypeSafe' {\n  export  {useI18nTypeSafe} from '${sourceId}'\n  //export const useI18nTypeSafe: ImportedType\n  //export default useI18nTypeSafe;\n}\n\n// export {};\n// declare module '@intlify/core-base' {\n//   export interface DefineCoreLocaleMessage {\n//     title: string\n//     menu: {\n//       login: string\n//     }\n//   }\n// }\n\n// declare module 'vue-i18n' {\n//\n// //  import type { messages } from '${sourceId}/messages'\n//    interface DefineLocaleMessage {\n//    //(typeof messages)['de']\n//    test: string\n//    }\n//    export declare type I18nMode = 'composition'\n//\n//      export = DefineLocaleMessage;\n//      export = x\n// }\n`,\n  ];\n\n  return (autogenerated + bodyLines.join(NL)).replace(/\\r\\n/g, NL).replace(/\\r/g, NL).replace(/\\n*$/, '\\n')\n}\n\n/**\n * Generate virtual module file content for physical file generation\n */\nexport function toVirtualModuleContent( messagesCombined: CombinedMessages): string {\nreturn createVirtualModuleCode(messagesCombined).toFileContent('messages');\n}\n\n\n/**\n * Emit **pure JS** (no TS annotations, no 'as const').\n * Rollup will replace 'import.meta.ROLLUP_FILE_URL_<ref>' in build.\n */\nexport function createVirtualModuleCode( messagesCombined: CombinedMessages): RuntimeMethods {\n\nconst messageMethods = new RuntimeMethods( messagesCombined)\n  return messageMethods\n\n}\n","/**\n * Lightweight FNV-1a 32-bit hash for short, deterministic content IDs.\n */\nexport function fnv1a32(input: string): string {\n  let h = 0x811c9dc5\n  for (let i = 0; i < input.length; i++) {\n    h ^= input.charCodeAt(i)\n    // 32-bit multiply by prime 16777619\n    h = (h + ((h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24))) >>> 0\n  }\n  return ('00000000' + h.toString(16)).slice(-8)\n}","import path from 'node:path'\nimport fs from 'node:fs/promises'\n\n/**\n * Small helper: ensure a directory exists.\n */\nexport async function ensureDir(filePath: string) {\n  const dir = path.dirname(filePath)\n  await fs.mkdir(dir, {recursive: true})\n}\n\n/**\n * Atomic write: write to a temp file in the same folder, then rename.\n */\nexport async function writeFileAtomic(filePath: string, content: string) {\n  try {\n    // const dir = path.dirname(filePath)\n    // const tmp = path.join(dir, `.${path.basename(filePath)}.${randomUUID()}.tmp`)\n    // await fs.writeFile(tmp, content, 'utf8')\n    // await fs.rename(tmp, filePath)\n    //     const dir = path.dirname(filePath)\n    // const tmp = path.join(dir, `.${path.basename(filePath)}.${randomUUID()}.tmp`)\n    await fs.writeFile(filePath, content, {encoding: 'utf8', flush: true})\n\n    // await fs.rename(tmp, filePath)\n  } catch (e) {\n    console.error('writeFileAtomic', e)\n  }\n}\n","import type {GenerationOptions, JSONObject} from \"../types\";\nimport {createVirtualModuleCode, toTypesContent} from \"../generation/generator.ts\";\nimport path from \"node:path\";\nimport {fnv1a32} from \"../utils/hash.ts\";\nimport {detectKeyConflicts, getFinalKeys} from \"../utils/json.ts\";\nimport {ensureDir, writeFileAtomic} from \"../utils/file.ts\";\nimport {RuntimeMethods, SymbolEnum} from \"../generation/treeShakeGenerator.ts\";\nimport pc from \"picocolors\";\n\nexport class CombinedMessages<TLanguages extends string = string, TMessages extends JSONObject = JSONObject> {\n\n\n  public readonly messagesJsonString: string;\n  public readonly keys: string[];\n  public readonly baseLocaleMessages: TMessages;\n  public readonly languages: TLanguages[];\n  public readonly contentId: string;\n  public readonly keysId: string;\n  public readonly fallbackLocales: Record<string, string[]>;\n\n\n  public constructor(public messages: Record<TLanguages | string, TMessages>, public config: GenerationOptions) {\n    this.messagesJsonString = JSON.stringify(messages);\n    const baseLocale = this.config.baseLocale || Object.keys(messages)[0];\n    this.keys = getFinalKeys(messages, baseLocale as TLanguages);\n    this.baseLocaleMessages = messages?.[baseLocale] ?? Object.values(messages)[0] ?? {} as TMessages;\n\n    const languages = Object.keys(messages);\n    this.languages = Array.from(new Set(languages)).sort((a, b) =>\n      a < b ? -1 : a > b ? 1 : 0\n    ) as TLanguages[];\n\n    this.contentId = fnv1a32(this.messagesJsonString);\n    this.keysId = fnv1a32(this.keys.join('|'));\n    this.fallbackLocales = CombinedMessages.getFallBackLocales(this.languages);\n  }\n\n\n  get typesOutpath() {\n    return path.isAbsolute(this.config.typesPath)\n      ? this.config.typesPath\n      : path.join(this.config.root, this.config.typesPath);\n  }\n\n  get virtualOutPath() {\n    return this.config.virtualFilePath\n      ? path.isAbsolute(this.config.virtualFilePath)\n        ? this.config.virtualFilePath\n        : path.join(this.config.root, this.config.virtualFilePath)\n      : undefined;\n  }\n\n  public languagesTuple(): string {\n    return `['${this.languages.join(`', '`)}']`\n  }\n\n  public languagesUnion(): string {\n    return `'${this.languages.join(`' | '`)}'`\n  }\n\n  public async writeTypesFile() {\n    await ensureDir(this.typesOutpath);\n    this.config.logger.info(`Writing types file to: ${this.typesOutpath}`);\n    await writeFileAtomic(this.typesOutpath, this.getTypesContent());\n  }\n\n  public async writeVirtualFile() {\n    // Write types file\n    const filePath = this.virtualOutPath;\n    if (!filePath) return;\n    await ensureDir(filePath);\n    // if (await this.shouldWriteFile(typesPath, typesContent)) {\n    this.config.logger.info(`Writing types file to: ${filePath}`);\n    await writeFileAtomic(filePath, this.getRuntimeContent());\n\n  }\n\n  public static getFallBackLocales(langs: string[]) {\n    return langs.reduce((acc, locale) => {\n      acc[locale] = [locale, locale === 'en' ? undefined : 'en', locale === 'de' ? undefined : 'de'].filter(a => a !== undefined);\n      if (locale === 'en') acc[locale] = [...acc[locale], 'en-US'];\n      return acc;\n    }, {} as Record<string, string[]>);\n  }\n\n  public getRuntimeContent() {\n\n    return this.getRuntimeMethods().toFileContent()\n  }\n\n  private _runtimeMethodsCache: RuntimeMethods | null = null;\n\n  public getRuntimeMethods(): RuntimeMethods {\n    if (this._runtimeMethodsCache) return this._runtimeMethodsCache;\n    this._runtimeMethodsCache = createVirtualModuleCode(this);\n    return this._runtimeMethodsCache;\n  }\n\n  public loadVirtualModuleCode(moduleToResolve: string | SymbolEnum) {\n    const code = this.getRuntimeMethods()\n    if (moduleToResolve === \"\") {\n      this.config.logger.info(`📄 [${pc.green('load')}] Generated dev code for virtual module: ${moduleToResolve}`);\n      return code.toFileContent()\n    }\n\n    const methodCode = code.getFileContentFor(moduleToResolve);\n    this.config.logger.info(`📄 [${pc.green('load')}] Loading virtual sub-module: ${pc.yellow(moduleToResolve)}, length: ${methodCode.length}`);\n    return methodCode;\n\n  }\n\n  public async writeFiles() {\n    const startWrite = performance.now();\n    await Promise.all([this.writeTypesFile(), this.writeVirtualFile()]);\n    const writeDuration = Math.round(performance.now() - startWrite);\n    this.config.logger.debug(`Generation took: ${writeDuration}ms`);\n  }\n\n  public getTypesContent() {\n    const params = Object.assign({}, {\n      combinedMessages: this,\n\n      config: this.config,\n\n    })\n    return toTypesContent(params)\n  }\n\n  /**\n   * Validate messages and log conflicts\n   */\n  public validateMessages(): void {\n    const conflicts = detectKeyConflicts(this.messages);\n    if (conflicts.length > 0) {\n      this.config.logger.error('⚠️  Conflicting translation keys detected:', {\n        timestamp: true,\n      });\n      for (const conflict of conflicts) {\n        this.config.logger.error(`   ${conflict}`, {timestamp: true});\n      }\n    }\n  }\n\n}\n","import path from \"node:path\";\nimport {promises as fs} from \"node:fs\";\n\n\nimport type {GenerationOptions, JSONValue} from \"../types.ts\";\nimport {toArray} from \"../generation/runtime/merge.ts\";\nimport {canonicalize, detectKeyConflicts} from \"../utils/json.ts\";\nimport {parseJSONWithLocation, wrapErrorWithFile} from \"../utils/error-formatter.ts\";\nimport {CombinedMessages} from \"./combined-messages.ts\";\n\ntype FilesProcesedCallback = (files: CombinedMessages, change?: string[]) => void | Promise<void>;\ntype FileUpdatedCallback = (file: ParsedFile) => (void | Promise<void>)\n\nexport interface ParsedFile {\n  localeKey: string;\n  prepared: any;\n}\n\n/**\n * Manages file reading, caching, and incremental updates for locale files\n */\n\nexport class FileManager {\n  private parsedFilesCache = new Map<string, ParsedFile>();\n  // private grouped:Record<string, any> = {};\n  private processedFiles: Set<string> = new Set<string>();\n  public filesToProcess: Set<string> = new Set<string>();\n\n  constructor(public options: GenerationOptions) {\n\n  }\n\n  public async findFiles() {\n    const allfiles = (await this.collectJsonFiles())\n\n\n    this.filesToProcess = new Set(allfiles);\n\n\n  }\n\n  public async processFile(file?: string) {\n    file ??= this.filesToProcess.values().next().value;\n    if (file) {\n\n      await this.readFile(file);\n\n\n      return file;\n    }\n    return null\n\n  }\n\n  private async fastGlob() {\n    const patterns = toArray(this.options.include);\n    // Remove the '!' prefix from exclude patterns since fast-glob's ignore option doesn't use it\n    const ignore = toArray(this.options.exclude).map(p => p.startsWith('!') ? p.slice(1) : p);\n\n    const cwd = this.options.root;\n    const start = performance.now();\n    const {default: fg} = await import(\"fast-glob\");\n    const list: string[] = await fg(patterns, {\n      cwd,\n      ignore,\n      absolute: true,\n      onlyFiles: true,\n      dot: false\n    });\n\n\n    const entries = list.map(p => path.normalize(p));\n    this.options.logger.info(`[FileManager] [findFiles] fast-glob: found ${entries.length} files in ${Math.round(performance.now() - start)}ms`);\n    return entries;\n  }\n\n  /**\n   * Collect JSON files using native Node.js glob or fast-glob fallback\n   */\n  async collectJsonFiles(): Promise<string[]> {\n    const patterns = toArray(this.options.include);\n    // Remove the '!' prefix from exclude patterns since fast-glob's ignore option doesn't use it\n    const ignore = toArray(this.options.exclude).map(p => p.startsWith('!') ? p.slice(1) : p);\n\n    const cwd = this.options.root;\n\n    this.options.logger.debug(`[FileManager] collectJsonFiles: patterns=${patterns.join(', ')}`);\n    this.options.logger.debug(`[FileManager] collectJsonFiles: cwd=${cwd}`);\n    this.options.logger.debug(`[FileManager] collectJsonFiles: ignore=${ignore.join(', ')}`);\n\n    let start = performance.now();\n    // const allImports = await import.meta.glob(this.options.root + '/**/*.json');\n\n    // this.options.logger.debug(`[FileManager] collectJsonFiles: found ${Object.keys(allImports).length} JSON files via import.meta.glob in ${Math.round(performance.now() - start)}ms`);\n    start = performance.now();\n\n\n    const nativeGlobEntriess = [];//nativeGlob();\n\n    const fastGlobEntries = this.fastGlob();\n    const entries = new Set<string>([...(await fastGlobEntries)]);    // Fallbasck: fast-glob\n\n\n    const out = Array.from(entries);\n\n    this.options.logger.debug(`[FileManager] foundFiles:  ${out.slice(0, Math.min(out.length, 10)).join(', ')}`);\n    const filteredFiles = out;\n    this.options.logger.info(`[FileManager] findFiles: total files found: ${out.length}/${filteredFiles.length} after filtering`);\n\n\n    filteredFiles.sort((a, b) => a.localeCompare(b));\n    return filteredFiles;\n  }\n\n\n  /**\n   * Read and group locale files with incremental updates\n   */\n  async readAndGroup() {\n    const startReadGroup = performance.now();\n\n    // Find all locale files first\n    if (this.filesToProcess.size === 0)\n\n      await this.findFiles();\n\n    const files = this.filesToProcess\n    // Check which files need to be re-read (new or modified)\n\n\n    const startFileRead = performance.now();\n    await this.readChangedFiles();\n\n    // Merge all cached files (including unchanged ones)\n\n    const totalDuration = Math.round(performance.now() - startReadGroup);\n\n    this.options.logger.info(`[FileManager] reading ${this.processedFiles.size} files completed in ${totalDuration}ms`);\n    const combinedMessages = await this.buildMessagesAndNotify(files);\n    return {\n      messages: combinedMessages,\n      stats: {\n\n        durations: {\n          stat: totalDuration,\n          read: totalDuration,\n\n          total: totalDuration,\n        },\n      },\n    };\n  }\n\n  private async buildMessagesAndNotify(files: Set<string> | string[]) {\n    const combinedMessages = new CombinedMessages(this.getGrouped(), this.options);\n    await Promise.all(this.callbacks.map(cb => cb(combinedMessages, [...files])));\n    return combinedMessages;\n  }\n\n  public getGrouped(files?: Map<string, ParsedFile>) {\n    const grouped: Record<string, any> = {}\n    files ??= this.parsedFilesCache;\n    for (const [_, {localeKey, prepared}] of files) {\n      if (!(localeKey in grouped)) grouped[localeKey] = {};\n      grouped[localeKey] = this.options.mergeFunction(grouped[localeKey], prepared);\n    }\n    return canonicalize(grouped as JSONValue) as Record<string, any>;\n\n\n  }\n\n  /**\n   * Read and parse changed files\n   */\n  public async readChangedFiles(): Promise<void> {\n    let readFiles = 0;\n    const filesToProcess = new Set([...this.filesToProcess])\n    const totalFiles = filesToProcess.size;\n    const start = performance.now();\n    while (filesToProcess.size > 0) {\n      const readFileBatches = this.options.fileBatchSize ?? 100;\n      const filesToProcessInRound = [...filesToProcess].slice(0, Math.min(readFileBatches, filesToProcess.size));\n      this.options.logger.debug(`[FileManager] readChangedFiles: processing batch of ${readFiles} / ${totalFiles} files. | Elapsed: ${Math.round(performance.now() - start)}ms`);\n      const tasks = filesToProcessInRound\n        .map(a => this.processFile(a))\n      filesToProcessInRound.forEach(a => filesToProcess.delete(a));\n      await Promise.all(tasks);\n      filesToProcessInRound.forEach(file => this.filesToProcess.delete(file))\n      filesToProcessInRound.forEach(file => this.processedFiles.add(file))\n\n      readFiles += filesToProcessInRound.length;\n\n    }\n  }\n\n  private async readFile(abs: string, readFileContent?: () => string | Promise<string>, localeKey: string | null = null) {\n    localeKey ??= this.options.getLocaleFromPath(abs, this.options.root);\n\n\n    if (!localeKey) {\n      this.options.logger?.warn(`Skipping file with invalid locale: ${abs}`);\n      return;\n    }\n\n    if (localeKey.length !== 2 && localeKey.length !== 5) {\n      this.options.logger?.warn(`Uncommon locale: ${abs} -> ${localeKey}`);\n    }\n\n    try {\n      readFileContent ??= () => fs.readFile(abs, \"utf8\");\n      const raw = await readFileContent();\n\n      // Parse JSON with enhanced error messages\n      const parsed = parseJSONWithLocation(raw, abs);\n\n      const prepared = this.options.transformJson\n        ? this.options.transformJson(parsed, abs)\n        : parsed;\n      this.parsedFilesCache.set(abs, {localeKey, prepared});\n      return {localeKey, prepared} as ParsedFile;\n    } catch (err: any) {\n      // Wrap error with file context if not already formatted\n      const formattedError = wrapErrorWithFile(abs, err);\n      this.options.logger?.error(formattedError.message);\n      throw formattedError;\n    }\n  }\n\n  /**\n   * Get list of last processed files\n   */\n  getLastFiles(): string[] {\n    return [...this.processedFiles];\n  }\n\n  /**\n   * Clear all caches\n   */\n  clearCache(): void {\n\n    this.parsedFilesCache.clear();\n    this.processedFiles = new Set<string>();\n    this.filesToProcess = new Set<string>();\n  }\n\n  public async fileUpdated(filePath: string, readFile?: () => string | Promise<string>, locale: string | null = null): Promise<ParsedFile | undefined> {\n    // let newVar = await this.readFile(filePath, readFile, locale);\n    // if (newVar) {\n    //   await Promise.all(this.callbacksFileChanged.map(async a => await a(newVar)));\n    // }\n    // return newVar;\n\n    this.parsedFilesCache.delete(filePath);\n    this.filesToProcess.add(filePath);\n    const newVar = await this.readFile(filePath);\n    if (newVar) {\n      // this.callbacksFileChanged.map(async a => await a(newVar));\n    }\n    await this.buildMessagesAndNotify([filePath]);\n    return newVar;\n\n\n  }\n\n  public fileUpdatedWithLocale(filePath: string, locale: string): Promise<ParsedFile | undefined> {\n    return this.fileUpdated(filePath, undefined, locale);\n\n\n  }\n\n  public validateMessages(): Promise<string[]> {\n    return new Promise((resolve) => {\n\n      const conflicts = detectKeyConflicts(this.getGrouped());\n      if (conflicts.length > 0) {\n        this.options.logger.error('⚠️  Conflicting translation keys detected:', {\n          timestamp: true,\n        });\n        for (const conflict of conflicts) {\n          this.options.logger.error(`   ${conflict}`, {timestamp: true});\n        }\n      }\n      resolve(conflicts);\n\n    })\n  }\n\n  public async fileRemoved(filePath: string) {\n    this.parsedFilesCache.delete(filePath);\n    await this.buildMessagesAndNotify([filePath]);\n  }\n\n  public addNewFile(filePath: string, readFile: () => (string | Promise<string>), mtime: number) {\n    return this.fileUpdated(filePath, readFile);\n\n  }\n\n  public callbacksFileChanged: Array<FileUpdatedCallback> = [];\n  private callbacks: Array<FilesProcesedCallback> = [];\n\n  public addOnAllFilesProcessed(callback: FilesProcesedCallback, _priority: number = 0) {\n    if (_priority > 0) {\n      this.callbacks.unshift(callback);\n      return;\n    } else {\n      this.callbacks.push(callback);\n    }\n  }\n\n  public addOnFileChanged(callback: FileUpdatedCallback) {\n    this.callbacksFileChanged.push(callback);\n  }\n}\n","import type {LogErrorOptions, Logger, LoggerOptions, LogLevel, LogOptions, LogType} from \"vite\";\n\nimport pc from 'picocolors';\n\n/**\n * Create a simple console logger compatible with Vite's Logger interface\n */\nexport function createConsoleLogger(debugEnabled: boolean = false, prefix: string = ` i18n-typescript`): Logger {\n  const warnedMessages = new Set<string>();\n\n\n  return {\n    info: (msg: string) => {\n\n\n      if (debugEnabled) {\n        console.log(`[${pc.dim(prefix)}] ${msg}`);\n      }\n    },\n    warn: (msg: string) => {\n      console.warn(`[${pc.dim(prefix)}] ${msg}`);\n    },\n    error: (msg: string) => {\n      console.error(`[${pc.dim(prefix)}] ${msg}`);\n    },\n    warnOnce: (msg: string) => {\n      if (!warnedMessages.has(msg)) {\n        warnedMessages.add(msg);\n        console.warn(`[${pc.dim(prefix)}] ${msg}`);\n      }\n    },\n    clearScreen: () => {\n    },\n    hasErrorLogged: () => false,\n    hasWarned: false,\n  };\n}\n\n// decorator of Logger with prefix and colored output\nexport function createColoredLogger(level?: LogLevel | 'debug', options?: LoggerOptions) {\n\n  const logger: Logger = options?.customLogger ?? createConsoleLogger(true, options?.prefix)\n  const prefix = options?.prefix ?? `vue-i18n-typescript`;\n\n  return {\n    debug: (msg: string, options?: LogOptions) => {\n      if (level !== 'debug') return\n      logger.info(`${pc.dim(pc.cyanBright(prefix))} ${pc.gray(msg)}`, options);\n    },\n    info: (msg: string, options?: LogOptions) => {\n\n      logger.info(`${pc.dim(pc.blueBright(prefix))} ${msg}`, options);\n\n    },\n    warn: (msg: string, options?: LogOptions) => {\n\n      logger.warn(`${pc.dim(prefix)} ${pc.yellow(msg)}`, options);\n    },\n    error: (msg: string, options?: LogErrorOptions) => {\n      logger.clearScreen(\"info\")\n      logger.error(`${pc.bold(prefix)} ${pc.red(msg)}`, options);\n      // red console color\n    },\n    warnOnce: (msg: string, options?: LogOptions) => {\n      logger.clearScreen(\"info\")\n      logger.warnOnce(`${pc.bold(prefix)} ${pc.yellow(msg)}`, options);\n    },\n    clearScreen: (type: LogType) => {\n      logger.clearScreen(type);\n    },\n    hasErrorLogged: (error: Error) => logger.hasErrorLogged(error),\n    hasWarned: logger.hasWarned,\n  };\n}\n","import path from \"node:path\";\nimport type {GenerateTypesOptions, GenerateTypesResult} from \"./types\";\nimport {normalizeConfig} from \"./core/config\";\nimport {FileManager} from \"./core/file-manager\";\nimport {createColoredLogger, createConsoleLogger} from \"./createConsoleLogger\";\n\nimport {CombinedMessages} from \"./core/combined-messages.ts\";\n\nexport {normalizeConfig, createColoredLogger, createConsoleLogger, CombinedMessages}\n\n\n/**\n * Generate TypeScript definitions from Vue i18n locale files\n *\n * @param options - Configuration options for generation\n * @returns Promise with generation result\n *\n * @example\n * ```typescript\n * import { generateI18nTypes } from 'unplugin- i18n-typescript-generation/api'\n *\n * const result = await generateI18nTypes({\n *   baseLocale: 'en',\n *   include: ['src/locales/*.json'],\n *   typesPath: 'src/i18n/i18n.gen.d.ts',\n *   verbose: true\n * })\n *\n * console.log(`Generated ${result.filesWritten} files for ${result.locales.length} locales`)\n * ```\n */\nexport async function generateI18nTypes(\n  options: GenerateTypesOptions = {}\n): Promise<GenerateTypesResult> {\n  const root = options.root ? path.resolve(options.root) : process.cwd();\n  const debugEnabled = options.debug ?? options.verbose ?? false;\n  const logger = createColoredLogger(options.debug ? \"debug\" : \"info\");\n  const config = normalizeConfig({\n    ...options,\n    debug: debugEnabled\n  }, logger);\n\n  logger.info(`Starting type generation in: ${root}`);\n\n  logger.info(`Base locale: ${config.baseLocale}`);\n  logger.info(`Include patterns: ${config.include.join(\", \")}`);\n  logger.info(`Types output: ${config.typesPath}`);\n\n  // Initialize core managers\n  const fileManager = new FileManager(config);\n\n\n  let lastFiles: string[] = [];\n\n  // Perform generation\n  const startTime = performance.now();\n  const result = await fileManager.readAndGroup();\n\n  lastFiles = fileManager.getLastFiles();\n\n  const locales = result.messages.languages.filter((l: string) => l !== \"js-reserved\");\n\n  // Write the generated files\n  const writeStartTime = performance.now();\n  await result.messages.writeFiles();\n  const writeDuration = Math.round(performance.now() - writeStartTime);\n  const totalDuration = Math.round(performance.now() - startTime);\n\n  logger.info(`✅ Generated types for ${locales.length} locale(s): ${locales.join(\", \")}`);\n  logger.info(`📁 Processed ${lastFiles.length} locale file(s)`);\n\n  // Get generation details\n  const typesPath = path.isAbsolute(config.typesPath)\n    ? config.typesPath\n    : path.join(root, config.typesPath);\n\n  const generatedFiles = [path.relative(root, typesPath).replace(/\\\\/g, '/')];\n  let filesWritten = 1;\n  if (config.virtualFilePath) {\n    const virtualPath = path.isAbsolute(config.virtualFilePath)\n      ? config.virtualFilePath\n      : path.join(root, config.virtualFilePath);\n    generatedFiles.push(path.relative(root, virtualPath).replace(/\\\\/g, '/'));\n    filesWritten = 2;\n  }\n\n  return {\n    filesWritten,\n    totalFiles: generatedFiles.length,\n    generatedFiles,\n    durations: {\n      content: totalDuration - writeDuration,\n      write: writeDuration,\n      total: totalDuration,\n    },\n    locales,\n    localeFilesCount: lastFiles.length,\n    localeFiles: lastFiles,\n  };\n}\n"]}