@scoutello/i18n-magic 0.15.0 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -87,9 +87,12 @@ Scan for missing translations, get prompted for each, translate it to the other
87
87
 
88
88
  Replace a translation based on the key, and translate it to the other locales and save it to the JSON file.
89
89
 
90
- Optional arguments:
90
+ You can specify the key in two ways:
91
91
 
92
- - `-k, --key <key>`: Specify the translation key to replace directly.
92
+ - As a positional argument: `npx @scoutello/i18n-magic replace your.translation.key`
93
+ - Using the option flag: `npx @scoutello/i18n-magic replace --key your.translation.key`
94
+
95
+ If no key is provided, you will be prompted to enter one.
93
96
 
94
97
  `check-missing`
95
98
 
@@ -1389,12 +1389,12 @@ var _loop = function _loop() {
1389
1389
  var cmd = program.command(command.name).description(command.description);
1390
1390
  // Add key option to replace command
1391
1391
  if (command.name === "replace") {
1392
- cmd.option("-k, --key <key>", "translation key to replace");
1392
+ cmd.option("-k, --key <key>", "translation key to replace").allowExcessArguments(true).argument("[key]", "translation key to replace");
1393
1393
  }
1394
1394
  cmd.action( /*#__PURE__*/function () {
1395
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
1395
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(arg, options) {
1396
1396
  var _config$model;
1397
- var res, config, isGemini, openaiKey, geminiKey, key, keyType, openai;
1397
+ var res, config, isGemini, openaiKey, geminiKey, key, keyType, openai, keyToUse;
1398
1398
  return _regeneratorRuntime().wrap(function _callee$(_context) {
1399
1399
  while (1) switch (_context.prev = _context.next) {
1400
1400
  case 0:
@@ -1420,11 +1420,13 @@ var _loop = function _loop() {
1420
1420
  apiKey: key
1421
1421
  }, isGemini && {
1422
1422
  baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/"
1423
- }));
1424
- if (command.name === "replace" && options.key) {
1423
+ })); // For replace command, check for key in argument or option
1424
+ if (command.name === "replace") {
1425
+ // If key is provided as positional argument, use that first
1426
+ keyToUse = typeof arg === "string" ? arg : options.key;
1425
1427
  command.action(_extends({}, config, {
1426
1428
  openai: openai
1427
- }), options.key);
1429
+ }), keyToUse);
1428
1430
  } else {
1429
1431
  command.action(_extends({}, config, {
1430
1432
  openai: openai
@@ -1436,7 +1438,7 @@ var _loop = function _loop() {
1436
1438
  }
1437
1439
  }, _callee);
1438
1440
  }));
1439
- return function (_x) {
1441
+ return function (_x, _x2) {
1440
1442
  return _ref.apply(this, arguments);
1441
1443
  };
1442
1444
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"i18n-magic.cjs.development.js","sources":["../src/lib/languges.ts","../src/lib/utils.ts","../src/commands/check-missing.ts","../src/commands/replace.ts","../src/commands/scan.ts","../src/commands/sync-locales.ts","../src/index.ts"],"sourcesContent":["export const languages = [\n {\n label: \"Deutsch\",\n name: \"German\",\n value: \"de\",\n },\n {\n label: \"English\",\n name: \"English\",\n value: \"en\",\n },\n {\n label: \"Español\",\n name: \"Spanish\",\n value: \"es\",\n },\n {\n label: \"Français\",\n name: \"French\",\n value: \"fr\",\n },\n {\n label: \"Dansk\",\n name: \"Danish\",\n value: \"dk\",\n },\n {\n label: \"中文\",\n name: \"Chinese\",\n value: \"cn\",\n },\n {\n label: \"Русский\",\n name: \"Russian\",\n value: \"ru\",\n },\n {\n label: \"Italiano\",\n name: \"Italian\",\n value: \"it\",\n },\n {\n label: \"Nederlands\",\n name: \"Dutch\",\n value: \"nl\",\n },\n {\n label: \"Português\",\n name: \"Portuguese\",\n value: \"pt\",\n },\n {\n label: \"Türkçe\",\n name: \"Turkish\",\n value: \"tr\",\n },\n {\n label: \"Polski\",\n name: \"Polish\",\n value: \"pl\",\n },\n {\n label: \"Українська\",\n name: \"Ukrainian\",\n value: \"ua\",\n },\n {\n label: \"Suomi\",\n name: \"Finnish\",\n value: \"fi\",\n },\n {\n label: \"Norsk\",\n name: \"Norwegian\",\n value: \"no\",\n },\n {\n label: \"Svenska\",\n name: \"Swedish\",\n value: \"sv\",\n },\n {\n label: \"Čeština\",\n name: \"Czech\",\n value: \"cz\",\n },\n {\n label: \"Ελληνικά\",\n name: \"Greek\",\n value: \"gr\",\n },\n {\n label: \"日本語\",\n name: \"Japanese\",\n value: \"jp\",\n },\n {\n label: \"한국어\",\n name: \"Korean\",\n value: \"kr\",\n },\n {\n label: \"Română\",\n name: \"Romanian\",\n value: \"ro\",\n },\n {\n label: \"Hrvatski\",\n name: \"Croatian\",\n value: \"hr\",\n },\n {\n label: \"Magyar\",\n name: \"Hungarian\",\n value: \"hu\",\n },\n {\n label: \"Slovensky\",\n name: \"Slovak\",\n value: \"sk\",\n },\n {\n label: \"हिन्दी\",\n name: \"Hindi\",\n value: \"hi\",\n },\n {\n label: \"தமிழ்\",\n name: \"Tamil\",\n value: \"ta\",\n },\n {\n label: \"Bahasa Indonesia\",\n name: \"Indonesian\",\n value: \"id\",\n },\n {\n label: \"Tiếng Việt\",\n name: \"Vietnamese\",\n value: \"vn\",\n },\n]\n","import glob from \"fast-glob\"\nimport { Parser } from \"i18next-scanner\"\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport type OpenAI from \"openai\"\nimport prompts from \"prompts\"\nimport { languages } from \"./languges\"\nimport type { Configuration } from \"./types\"\n\nexport const loadConfig = ({\n configPath = \"i18n-magic.js\",\n}: { configPath: string }) => {\n const filePath = path.join(process.cwd(), configPath)\n\n if (!fs.existsSync(filePath)) {\n console.error(\"Config file does not exist:\", filePath)\n process.exit(1)\n }\n\n try {\n const config = require(filePath)\n // Validate config if needed\n return config\n } catch (error) {\n console.error(\"Error while loading config:\", error)\n process.exit(1)\n }\n}\n\nexport function removeDuplicatesFromArray<T>(arr: T[]): T[] {\n return arr.filter((item, index) => arr.indexOf(item) === index)\n}\n\nexport const translateKey = async ({\n inputLanguage,\n context,\n object,\n openai,\n outputLanguage,\n model,\n}: {\n object: Record<string, string>\n context: string\n inputLanguage: string\n outputLanguage: string\n model: string\n openai: OpenAI\n}) => {\n // Split object into chunks of 100 keys\n const entries = Object.entries(object)\n const chunks: Array<[string, string][]> = []\n\n for (let i = 0; i < entries.length; i += 100) {\n chunks.push(entries.slice(i, i + 100))\n }\n\n let result: Record<string, string> = {}\n\n const existingInput = languages.find((l) => l.value === inputLanguage)\n const existingOutput = languages.find((l) => l.value === outputLanguage)\n\n const input = existingInput?.label || inputLanguage\n const output = existingOutput?.label || outputLanguage\n\n // Translate each chunk\n for (const chunk of chunks) {\n const chunkObject = Object.fromEntries(chunk)\n const completion = await openai.beta.chat.completions.parse({\n model,\n messages: [\n {\n content: `You are a bot that translates the values of a locales JSON. ${\n context\n ? `The user provided some additional context or guidelines about what to fill in the blanks: \\\"${context}\\\". `\n : \"\"\n }The user provides you a JSON with a field named \"inputLanguage\", which defines the language the values of the JSON are defined in. It also has a field named \"outputLanguage\", which defines the language you should translate the values to. The last field is named \"data\", which includes the object with the values to translate. The keys of the values should never be changed. You output only a JSON, which has the same keys as the input, but with translated values. I give you an example input: {\"inputLanguage\": \"English\", outputLanguage: \"German\", \"keys\": {\"hello\": \"Hello\", \"world\": \"World\"}}. The output should be {\"hello\": \"Hallo\", \"world\": \"Welt\"}.`,\n role: \"system\",\n },\n {\n content: JSON.stringify({\n inputLanguage: input,\n outputLanguage: output,\n data: chunkObject,\n }),\n role: \"user\",\n },\n ],\n response_format: {\n type: \"json_object\",\n },\n })\n\n const translatedChunk = JSON.parse(\n completion.choices[0].message.content,\n ) as Record<string, string>\n\n // Merge translated chunk with result\n result = { ...result, ...translatedChunk }\n\n // Optional: Add a small delay between chunks to avoid rate limiting\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n\n return result\n}\n\nexport const loadLocalesFile = async (\n loadPath:\n | string\n | ((locale: string, namespace: string) => Promise<Record<string, string>>),\n locale: string,\n namespace: string,\n) => {\n if (typeof loadPath === \"string\") {\n const resolvedPath = loadPath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n const content = fs.readFileSync(resolvedPath, \"utf-8\")\n const json = JSON.parse(content)\n\n return json as Record<string, string>\n }\n\n return loadPath(locale, namespace)\n}\n\nexport const writeLocalesFile = async (\n savePath:\n | string\n | ((\n locale: string,\n namespace: string,\n data: Record<string, string>,\n ) => Promise<void>),\n locale: string,\n namespace: string,\n data: Record<string, string>,\n) => {\n if (typeof savePath === \"string\") {\n const resolvedSavePath = savePath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n fs.writeFileSync(resolvedSavePath, JSON.stringify(data, null, 2))\n\n return\n }\n\n await savePath(locale, namespace, data)\n}\n\nexport const getPureKey = (\n key: string,\n namespace?: string,\n isDefault?: boolean,\n) => {\n const splitted = key.split(\":\")\n\n if (splitted.length === 1) {\n if (isDefault) {\n return key\n }\n\n return null\n }\n\n if (splitted[0] === namespace) {\n return splitted[1]\n }\n\n return null\n}\n\nexport const getMissingKeys = async ({\n globPatterns,\n namespaces,\n defaultNamespace,\n defaultLocale,\n loadPath,\n}: Configuration) => {\n const parser = new Parser({\n nsSeparator: false,\n keySeparator: false,\n })\n\n const files = await glob([...globPatterns, \"!**/node_modules/**\"])\n\n const keys = []\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\")\n parser.parseFuncFromString(content, { list: [\"t\"] }, (key: string) => {\n keys.push(key)\n })\n }\n\n const uniqueKeys = removeDuplicatesFromArray(keys)\n\n const newKeys = []\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n console.log(Object.keys(existingKeys).length, \"existing keys\")\n\n for (const key of uniqueKeys) {\n const pureKey = getPureKey(key, namespace, namespace === defaultNamespace)\n\n if (!pureKey) {\n continue\n }\n\n if (!existingKeys[pureKey]) {\n newKeys.push({ key: pureKey, namespace })\n }\n }\n }\n\n return newKeys\n}\n\nexport const getTextInput = async (prompt: string) => {\n const input = await prompts({\n name: \"value\",\n type: \"text\",\n message: prompt,\n onState: (state) => {\n if (state.aborted) {\n process.nextTick(() => {\n process.exit(0)\n })\n }\n },\n })\n\n return input.value as string\n}\n\nexport const checkAllKeysExist = async ({\n namespaces,\n defaultLocale,\n loadPath,\n locales,\n context,\n openai,\n savePath,\n disableTranslation,\n model,\n}: Configuration) => {\n if (disableTranslation) {\n return\n }\n\n for (const namespace of namespaces) {\n const defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n const localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n const translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model,\n })\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n // Save the updated translations\n writeLocalesFile(savePath, locale, namespace, updatedLocaleKeys)\n console.log(\n `✓ Translated and saved missing keys for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n}\n\nexport class TranslationError extends Error {\n constructor(\n message: string,\n public locale?: string,\n public namespace?: string,\n public cause?: Error,\n ) {\n super(message)\n this.name = \"TranslationError\"\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport { getMissingKeys } from \"../lib/utils\"\n\nexport const checkMissing = async (config: Configuration) => {\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length > 0) {\n console.error(\"Error: Missing translations found!\")\n process.exit(1)\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nconst getKeyToReplace = async (keys: Record<string, string>) => {\n const keyToReplace = await getTextInput(\n \"Enter the key to replace the translation for: \",\n )\n\n if (!keys[keyToReplace]) {\n console.log(`The key \"${keyToReplace}\" does not exist.`)\n return await getKeyToReplace(keys)\n }\n\n console.log(`The key \"${keyToReplace}\" exists.`)\n return keyToReplace\n}\n\nexport const replaceTranslation = async (\n config: Configuration,\n key?: string,\n) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n defaultNamespace,\n namespaces,\n locales,\n globPatterns,\n context,\n openai,\n } = config\n\n const keys = await loadLocalesFile(\n config.loadPath,\n config.defaultLocale,\n config.defaultNamespace,\n )\n\n let keyToReplace: string\n\n if (key) {\n if (keys[key]) {\n keyToReplace = key\n console.log(`The key \"${keyToReplace}\" exists.`)\n } else {\n console.log(`The key \"${key}\" does not exist.`)\n keyToReplace = await getKeyToReplace(keys)\n }\n } else {\n keyToReplace = await getKeyToReplace(keys)\n }\n\n console.log(\n `The current translation in ${defaultLocale} for \"${keyToReplace}\" is \"${keys[keyToReplace]}\".`,\n )\n\n const newTranslation = await getTextInput(\"Enter the new translation: \")\n\n for (const locale of locales) {\n let newValue = \"\"\n if (locale === defaultLocale) {\n newValue = newTranslation\n } else {\n const translation = await translateKey({\n context,\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n object: {\n [keyToReplace]: newTranslation,\n },\n openai,\n model: config.model,\n })\n\n newValue = translation[keyToReplace]\n }\n\n const existingKeys = await loadLocalesFile(\n loadPath,\n locale,\n defaultNamespace,\n )\n\n existingKeys[keyToReplace] = newValue\n\n writeLocalesFile(savePath, locale, defaultNamespace, existingKeys)\n\n console.log(\n `The new translation for \"${keyToReplace}\" in ${locale} is \"${newValue}\".`,\n )\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n checkAllKeysExist,\n getMissingKeys,\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const translateMissing = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n disableTranslation,\n } = config\n\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length === 0) {\n console.log(\"No new keys found.\")\n\n await checkAllKeysExist(config)\n\n return\n }\n\n console.log(\n `${newKeys.length} keys are missing. Please provide the values for the following keys in ${defaultLocale}:`,\n )\n\n const newKeysWithDefaultLocale = []\n\n for (const newKey of newKeys) {\n const answer = await getTextInput(newKey.key)\n\n newKeysWithDefaultLocale.push({\n key: newKey.key,\n namespace: newKey.namespace,\n value: answer,\n })\n }\n\n const newKeysObject = newKeysWithDefaultLocale.reduce((prev, next) => {\n prev[next.key] = next.value\n\n return prev\n }, {})\n\n const allLocales = disableTranslation ? [defaultLocale] : locales\n\n for (const locale of allLocales) {\n let translatedValues = {}\n\n if (locale === defaultLocale) {\n translatedValues = newKeysObject\n } else {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: newKeysObject,\n openai,\n model: config.model,\n })\n }\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(loadPath, locale, namespace)\n\n const relevantKeys = newKeysWithDefaultLocale.filter(\n (key) => key.namespace === namespace,\n )\n\n if (relevantKeys.length === 0) {\n continue\n }\n\n for (const key of relevantKeys) {\n existingKeys[key.key] = translatedValues[key.key]\n }\n\n writeLocalesFile(savePath, locale, namespace, existingKeys)\n }\n }\n\n await checkAllKeysExist(config)\n\n console.log(`Successfully translated ${newKeys.length} keys.`)\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n TranslationError,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const syncLocales = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n } = config\n\n try {\n for (const namespace of namespaces) {\n let defaultLocaleKeys: Record<string, string>\n\n try {\n defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to load default locale file for namespace \"${namespace}\"`,\n defaultLocale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n let localeKeys: Record<string, string>\n try {\n localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n } catch (error) {\n console.warn(\n `Warning: Could not load locale file for ${locale} (namespace: ${namespace}). Creating new file.`,\n )\n localeKeys = {}\n }\n\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n let translatedValues: Record<string, string>\n try {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model: config.model,\n })\n } catch (error) {\n throw new TranslationError(\n `Failed to translate keys for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n try {\n await writeLocalesFile(\n savePath,\n locale,\n namespace,\n updatedLocaleKeys,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to save translations for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n console.log(\n `Successfully translated and saved ${Object.keys(missingKeys).length} keys for ${locale} (namespace: ${namespace})`,\n )\n } else {\n console.log(\n `No missing keys found for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n } catch (error) {\n if (error instanceof TranslationError) {\n throw error\n }\n throw new TranslationError(\n \"An unexpected error occurred during translation\",\n undefined,\n undefined,\n error instanceof Error ? error : undefined,\n )\n }\n}\n","import { Command } from \"commander\"\nimport dotenv from \"dotenv\"\nimport OpenAI from \"openai\"\nimport { checkMissing } from \"./commands/check-missing\"\nimport { replaceTranslation } from \"./commands/replace\"\nimport { translateMissing } from \"./commands/scan\"\nimport { syncLocales } from \"./commands/sync-locales\"\nimport type { CommandType, Configuration } from \"./lib/types\"\nimport { loadConfig } from \"./lib/utils\"\n\n// Only run CLI initialization when this file is executed directly\n\nconst program = new Command()\n\nprogram\n .name(\"i18n-magic\")\n .description(\n \"CLI to help you manage your locales JSON with translations, replacements, etc. with OpenAI.\",\n )\n .version(\"0.2.0\")\n .option(\"-c, --config <path>\", \"path to config file\")\n .option(\"-e, --env <path>\", \"path to .env file\")\n\nconst commands: CommandType[] = [\n {\n name: \"scan\",\n description:\n \"Scan for missing translations, get prompted for each, translate it to the other locales and save it to the JSON file.\",\n action: translateMissing,\n },\n {\n name: \"replace\",\n description:\n \"Replace a translation based on the key, and translate it to the other locales and save it to the JSON file.\",\n action: replaceTranslation,\n },\n {\n name: \"check-missing\",\n description:\n \"Check if there are any missing translations. Useful for a CI/CD pipeline or husky hook.\",\n action: checkMissing,\n },\n {\n name: \"sync\",\n description:\n \"Sync the translations from the default locale to the other locales. Useful for a CI/CD pipeline or husky hook.\",\n action: syncLocales,\n },\n]\n\nfor (const command of commands) {\n const cmd = program.command(command.name).description(command.description)\n\n // Add key option to replace command\n if (command.name === \"replace\") {\n cmd.option(\"-k, --key <key>\", \"translation key to replace\")\n }\n\n cmd.action(async (options) => {\n const res = dotenv.config({\n path: program.opts().env || \".env\",\n })\n\n const config: Configuration = await loadConfig({\n configPath: program.opts().config,\n })\n\n const isGemini = (config.model as string)?.includes(\"gemini\")\n\n // Get API key from environment or config\n const openaiKey = res.parsed.OPENAI_API_KEY || config.OPENAI_API_KEY\n const geminiKey = res.parsed.GEMINI_API_KEY || config.GEMINI_API_KEY\n\n // Select appropriate key based on model type\n const key = isGemini ? geminiKey : openaiKey\n\n if (!key) {\n const keyType = isGemini ? \"GEMINI_API_KEY\" : \"OPENAI_API_KEY\"\n console.error(\n `Please provide a${isGemini ? \" Gemini\" : \"n OpenAI\"} API key in your .env file or config, called ${keyType}.`,\n )\n process.exit(1)\n }\n\n const openai = new OpenAI({\n apiKey: key,\n ...(isGemini && {\n baseURL: \"https://generativelanguage.googleapis.com/v1beta/openai/\",\n }),\n })\n\n if (command.name === \"replace\" && options.key) {\n command.action({ ...config, openai }, options.key)\n } else {\n command.action({ ...config, openai })\n }\n })\n}\n\nprogram.parse(process.argv)\n"],"names":["languages","label","name","value","loadConfig","_ref","_ref$configPath","configPath","filePath","path","join","process","cwd","fs","existsSync","console","error","exit","config","require","removeDuplicatesFromArray","arr","filter","item","index","indexOf","translateKey","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","inputLanguage","context","object","openai","outputLanguage","model","entries","chunks","i","result","existingInput","existingOutput","input","output","_i","_chunks","chunk","chunkObject","completion","translatedChunk","wrap","_callee$","_context","prev","next","Object","length","push","slice","find","l","fromEntries","beta","chat","completions","parse","messages","content","role","JSON","stringify","data","response_format","type","sent","choices","message","_extends","Promise","resolve","setTimeout","abrupt","stop","_x","apply","arguments","loadLocalesFile","_ref4","_callee2","loadPath","locale","namespace","resolvedPath","json","_callee2$","_context2","replace","readFileSync","_x2","_x3","_x4","writeLocalesFile","_ref5","_callee3","savePath","resolvedSavePath","_callee3$","_context3","writeFileSync","_x5","_x6","_x7","_x8","getPureKey","key","isDefault","splitted","split","getMissingKeys","_ref7","_callee4","_ref6","globPatterns","namespaces","defaultNamespace","defaultLocale","parser","files","keys","_iterator","_step","file","uniqueKeys","newKeys","_iterator2","_step2","existingKeys","_iterator3","_step3","pureKey","_callee4$","_context4","Parser","nsSeparator","keySeparator","glob","concat","_createForOfIteratorHelperLoose","done","parseFuncFromString","list","log","_x9","getTextInput","_ref8","_callee5","prompt","_callee5$","_context5","prompts","onState","state","aborted","nextTick","_x10","checkAllKeysExist","_ref10","_callee6","_ref9","locales","disableTranslation","_iterator4","_step4","defaultLocaleKeys","_iterator5","_step5","localeKeys","missingKeys","_i2","_Object$entries","_Object$entries$_i","translatedValues","updatedLocaleKeys","_callee6$","_context6","_x11","TranslationError","_Error","cause","_this","call","_inheritsLoose","_wrapNativeSuper","Error","checkMissing","getKeyToReplace","keyToReplace","replaceTranslation","newTranslation","newValue","_object","translation","translateMissing","newKeysWithDefaultLocale","newKey","answer","newKeysObject","allLocales","_loop","reduce","relevantKeys","_loop$","delegateYield","t0","syncLocales","undefined","t1","warn","t2","t3","t4","program","Command","description","version","option","commands","action","command","_commands","cmd","options","_config$model","res","isGemini","openaiKey","geminiKey","keyType","dotenv","opts","env","includes","parsed","OPENAI_API_KEY","GEMINI_API_KEY","OpenAI","apiKey","baseURL","argv"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAMA,SAAS,GAAG,CACvB;AACEC,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,IAAI;AACXC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,WAAW;AAClBC,EAAAA,IAAI,EAAE,YAAY;AAClBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,IAAI,EAAE,UAAU;AAChBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,UAAU;AAChBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,IAAI,EAAE,UAAU;AAChBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,WAAW;AAClBC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,kBAAkB;AACzBC,EAAAA,IAAI,EAAE,YAAY;AAClBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,YAAY;AAClBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,CACF;;ACpIM,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAAC,IAAA,EAEM;AAAA,EAAA,IAAAC,eAAA,GAAAD,IAAA,CAD3BE,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,eAAe,GAAAA,eAAA,CAAA;AAE5B,EAAA,IAAME,QAAQ,GAAGC,IAAI,CAACC,IAAI,CAACC,OAAO,CAACC,GAAG,EAAE,EAAEL,UAAU,CAAC,CAAA;AAErD,EAAA,IAAI,CAACM,EAAE,CAACC,UAAU,CAACN,QAAQ,CAAC,EAAE;AAC5BO,IAAAA,OAAO,CAACC,KAAK,CAAC,6BAA6B,EAAER,QAAQ,CAAC,CAAA;AACtDG,IAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,GAAA;EAEA,IAAI;AACF,IAAA,IAAMC,MAAM,GAAGC,OAAO,CAACX,QAAQ,CAAC,CAAA;AAChC;AACA,IAAA,OAAOU,MAAM,CAAA;GACd,CAAC,OAAOF,KAAK,EAAE;AACdD,IAAAA,OAAO,CAACC,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC,CAAA;AACnDL,IAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,GAAA;AACF,CAAC,CAAA;AAEK,SAAUG,yBAAyBA,CAAIC,GAAQ,EAAA;AACnD,EAAA,OAAOA,GAAG,CAACC,MAAM,CAAC,UAACC,IAAI,EAAEC,KAAK,EAAA;AAAA,IAAA,OAAKH,GAAG,CAACI,OAAO,CAACF,IAAI,CAAC,KAAKC,KAAK,CAAA;GAAC,CAAA,CAAA;AACjE,CAAA;AAEO,IAAME,YAAY,gBAAA,YAAA;EAAA,IAAAC,KAAA,gBAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAAC,KAAA,EAAA;AAAA,IAAA,IAAAC,aAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,MAAA,EAAAC,cAAA,EAAAC,KAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,CAAA,EAAAC,MAAA,EAAAC,aAAA,EAAAC,cAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,EAAA,EAAAC,OAAA,EAAAC,KAAA,EAAAC,WAAA,EAAAC,UAAA,EAAAC,eAAA,CAAA;AAAA,IAAA,OAAAvB,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAC1BxB,UAAAA,aAAa,GAAAD,KAAA,CAAbC,aAAa,EACbC,OAAO,GAAAF,KAAA,CAAPE,OAAO,EACPC,MAAM,GAAAH,KAAA,CAANG,MAAM,EACNC,MAAM,GAAAJ,KAAA,CAANI,MAAM,EACNC,cAAc,GAAAL,KAAA,CAAdK,cAAc,EACdC,KAAK,GAAAN,KAAA,CAALM,KAAK,CAAA;AASL;AACMC,UAAAA,OAAO,GAAGmB,MAAM,CAACnB,OAAO,CAACJ,MAAM,CAAC,CAAA;AAChCK,UAAAA,MAAM,GAA8B,EAAE,CAAA;AAE5C,UAAA,KAASC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,OAAO,CAACoB,MAAM,EAAElB,CAAC,IAAI,GAAG,EAAE;AAC5CD,YAAAA,MAAM,CAACoB,IAAI,CAACrB,OAAO,CAACsB,KAAK,CAACpB,CAAC,EAAEA,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;AACxC,WAAA;UAEIC,MAAM,GAA2B,EAAE,CAAA;AAEjCC,UAAAA,aAAa,GAAG3C,SAAS,CAAC8D,IAAI,CAAC,UAACC,CAAC,EAAA;AAAA,YAAA,OAAKA,CAAC,CAAC5D,KAAK,KAAK8B,aAAa,CAAA;WAAC,CAAA,CAAA;AAChEW,UAAAA,cAAc,GAAG5C,SAAS,CAAC8D,IAAI,CAAC,UAACC,CAAC,EAAA;AAAA,YAAA,OAAKA,CAAC,CAAC5D,KAAK,KAAKkC,cAAc,CAAA;WAAC,CAAA,CAAA;UAElEQ,KAAK,GAAG,CAAAF,aAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAbA,aAAa,CAAE1C,KAAK,KAAIgC,aAAa,CAAA;UAC7Ca,MAAM,GAAG,CAAAF,cAAc,IAAA,IAAA,GAAA,KAAA,CAAA,GAAdA,cAAc,CAAE3C,KAAK,KAAIoC,cAAc,CAEtD;UAAAU,EAAA,GAAA,CAAA,EAAAC,OAAA,GACoBR,MAAM,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,EAAAO,EAAA,GAAAC,OAAA,CAAAW,MAAA,CAAA,EAAA;AAAAJ,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAfR,KAAK,GAAAD,OAAA,CAAAD,EAAA,CAAA,CAAA;AACRG,UAAAA,WAAW,GAAGQ,MAAM,CAACM,WAAW,CAACf,KAAK,CAAC,CAAA;AAAAM,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;UAAA,OACpBrB,MAAM,CAAC6B,IAAI,CAACC,IAAI,CAACC,WAAW,CAACC,KAAK,CAAC;AAC1D9B,YAAAA,KAAK,EAALA,KAAK;AACL+B,YAAAA,QAAQ,EAAE,CACR;AACEC,cAAAA,OAAO,oEACLpC,OAAO,GAAA,8FAAA,GAC4FA,OAAO,GAAA,MAAA,GACtG,EACN,CAA8oB,GAAA,4qBAAA;AAC9oBqC,cAAAA,IAAI,EAAE,QAAA;AACP,aAAA,EACD;AACED,cAAAA,OAAO,EAAEE,IAAI,CAACC,SAAS,CAAC;AACtBxC,gBAAAA,aAAa,EAAEY,KAAK;AACpBR,gBAAAA,cAAc,EAAES,MAAM;AACtB4B,gBAAAA,IAAI,EAAExB,WAAAA;eACP,CAAC;AACFqB,cAAAA,IAAI,EAAE,MAAA;AACP,aAAA,CACF;AACDI,YAAAA,eAAe,EAAE;AACfC,cAAAA,IAAI,EAAE,aAAA;AACP,aAAA;AACF,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAvBIzB,UAAU,GAAAI,QAAA,CAAAsB,IAAA,CAAA;AAyBVzB,UAAAA,eAAe,GAAGoB,IAAI,CAACJ,KAAK,CAChCjB,UAAU,CAAC2B,OAAO,CAAC,CAAC,CAAC,CAACC,OAAO,CAACT,OAAO,CACZ,CAE3B;AACA5B,UAAAA,MAAM,GAAAsC,QAAA,CAAA,EAAA,EAAQtC,MAAM,EAAKU,eAAe,CAAE,CAAA;AAE1C;AAAAG,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OACM,IAAIwB,OAAO,CAAC,UAACC,OAAO,EAAA;AAAA,YAAA,OAAKC,UAAU,CAACD,OAAO,EAAE,GAAG,CAAC,CAAA;WAAC,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAAAnC,EAAA,EAAA,CAAA;AAAAQ,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,OAAAF,QAAA,CAAA6B,MAAA,CAAA,QAAA,EAGnD1C,MAAM,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAa,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GACd,CAAA,CAAA,CAAA;EAAA,OAvEYL,SAAAA,YAAYA,CAAA4D,EAAA,EAAA;AAAA,IAAA,OAAA3D,KAAA,CAAA4D,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAuExB,EAAA,CAAA;AAEM,IAAMC,eAAe,gBAAA,YAAA;AAAA,EAAA,IAAAC,KAAA,gBAAA9D,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAG,SAAA6D,QAC7BC,CAAAA,QAE4E,EAC5EC,MAAc,EACdC,SAAiB,EAAA;AAAA,IAAA,IAAAC,YAAA,EAAAzB,OAAA,EAAA0B,IAAA,CAAA;AAAA,IAAA,OAAAnE,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA4C,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1C,IAAA,GAAA0C,SAAA,CAAAzC,IAAA;AAAA,QAAA,KAAA,CAAA;UAAA,IAEb,EAAA,OAAOmC,QAAQ,KAAK,QAAQ,CAAA,EAAA;AAAAM,YAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACxBsC,UAAAA,YAAY,GAAGH,QAAQ,CAC1BO,OAAO,CAAC,SAAS,EAAEN,MAAM,CAAC,CAC1BM,OAAO,CAAC,QAAQ,EAAEL,SAAS,CAAC,CAAA;UAEzBxB,OAAO,GAAGzD,EAAE,CAACuF,YAAY,CAACL,YAAY,EAAE,OAAO,CAAC,CAAA;AAChDC,UAAAA,IAAI,GAAGxB,IAAI,CAACJ,KAAK,CAACE,OAAO,CAAC,CAAA;AAAA,UAAA,OAAA4B,SAAA,CAAAd,MAAA,CAAA,QAAA,EAEzBY,IAA8B,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;UAAA,OAAAE,SAAA,CAAAd,MAAA,CAAA,QAAA,EAGhCQ,QAAQ,CAACC,MAAM,EAAEC,SAAS,CAAC,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAI,SAAA,CAAAb,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAM,QAAA,CAAA,CAAA;GACnC,CAAA,CAAA,CAAA;AAAA,EAAA,OAAA,SAnBYF,eAAeA,CAAAY,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,IAAA,OAAAb,KAAA,CAAAH,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAmB3B,EAAA,CAAA;AAEM,IAAMgB,gBAAgB,gBAAA,YAAA;AAAA,EAAA,IAAAC,KAAA,gBAAA7E,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA4E,QAAAA,CAC9BC,QAMuB,EACvBd,MAAc,EACdC,SAAiB,EACjBpB,IAA4B,EAAA;AAAA,IAAA,IAAAkC,gBAAA,CAAA;AAAA,IAAA,OAAA/E,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAwD,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAtD,IAAA,GAAAsD,SAAA,CAAArD,IAAA;AAAA,QAAA,KAAA,CAAA;UAAA,IAExB,EAAA,OAAOkD,QAAQ,KAAK,QAAQ,CAAA,EAAA;AAAAG,YAAAA,SAAA,CAAArD,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACxBmD,UAAAA,gBAAgB,GAAGD,QAAQ,CAC9BR,OAAO,CAAC,SAAS,EAAEN,MAAM,CAAC,CAC1BM,OAAO,CAAC,QAAQ,EAAEL,SAAS,CAAC,CAAA;AAE/BjF,UAAAA,EAAE,CAACkG,aAAa,CAACH,gBAAgB,EAAEpC,IAAI,CAACC,SAAS,CAACC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;UAAA,OAAAoC,SAAA,CAAA1B,MAAA,CAAA,QAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA0B,UAAAA,SAAA,CAAArD,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OAK7DkD,QAAQ,CAACd,MAAM,EAAEC,SAAS,EAAEpB,IAAI,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAoC,SAAA,CAAAzB,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAqB,QAAA,CAAA,CAAA;GACxC,CAAA,CAAA,CAAA;EAAA,OAvBYF,SAAAA,gBAAgBA,CAAAQ,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,IAAA,OAAAV,KAAA,CAAAlB,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAuB5B,EAAA,CAAA;AAEM,IAAM4B,UAAU,GAAG,SAAbA,UAAUA,CACrBC,GAAW,EACXvB,SAAkB,EAClBwB,SAAmB,EACjB;AACF,EAAA,IAAMC,QAAQ,GAAGF,GAAG,CAACG,KAAK,CAAC,GAAG,CAAC,CAAA;AAE/B,EAAA,IAAID,QAAQ,CAAC5D,MAAM,KAAK,CAAC,EAAE;AACzB,IAAA,IAAI2D,SAAS,EAAE;AACb,MAAA,OAAOD,GAAG,CAAA;AACZ,KAAA;AAEA,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,IAAIE,QAAQ,CAAC,CAAC,CAAC,KAAKzB,SAAS,EAAE;IAC7B,OAAOyB,QAAQ,CAAC,CAAC,CAAC,CAAA;AACpB,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAEM,IAAME,cAAc,gBAAA,YAAA;EAAA,IAAAC,KAAA,gBAAA9F,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA6F,QAAAA,CAAAC,KAAA,EAAA;AAAA,IAAA,IAAAC,YAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAAC,aAAA,EAAApC,QAAA,EAAAqC,MAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAhE,OAAA,EAAAiE,UAAA,EAAAC,OAAA,EAAAC,UAAA,EAAAC,MAAA,EAAA5C,SAAA,EAAA6C,YAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAxB,GAAA,EAAAyB,OAAA,CAAA;AAAA,IAAA,OAAAjH,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA0F,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAxF,IAAA,GAAAwF,SAAA,CAAAvF,IAAA;AAAA,QAAA,KAAA,CAAA;UAC5BoE,YAAY,GAAAD,KAAA,CAAZC,YAAY,EACZC,UAAU,GAAAF,KAAA,CAAVE,UAAU,EACVC,gBAAgB,GAAAH,KAAA,CAAhBG,gBAAgB,EAChBC,aAAa,GAAAJ,KAAA,CAAbI,aAAa,EACbpC,QAAQ,GAAAgC,KAAA,CAARhC,QAAQ,CAAA;UAEFqC,MAAM,GAAG,IAAIgB,qBAAM,CAAC;AACxBC,YAAAA,WAAW,EAAE,KAAK;AAClBC,YAAAA,YAAY,EAAE,KAAA;AACf,WAAA,CAAC,CAAA;AAAAH,UAAAA,SAAA,CAAAvF,IAAA,GAAA,CAAA,CAAA;UAAA,OAEkB2F,IAAI,IAAAC,MAAA,CAAKxB,YAAY,EAAE,CAAA,qBAAqB,EAAC,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAA5DK,KAAK,GAAAc,SAAA,CAAAnE,IAAA,CAAA;AAELsD,UAAAA,IAAI,GAAG,EAAE,CAAA;UAEf,KAAAC,SAAA,GAAAkB,+BAAA,CAAmBpB,KAAK,CAAAG,EAAAA,CAAAA,CAAAA,KAAA,GAAAD,SAAA,EAAAmB,EAAAA,IAAA,GAAE;YAAfjB,IAAI,GAAAD,KAAA,CAAAlI,KAAA,CAAA;YACPmE,OAAO,GAAGzD,EAAE,CAACuF,YAAY,CAACkC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC9CL,YAAAA,MAAM,CAACuB,mBAAmB,CAAClF,OAAO,EAAE;cAAEmF,IAAI,EAAE,CAAC,GAAG,CAAA;aAAG,EAAE,UAACpC,GAAW,EAAI;AACnEc,cAAAA,IAAI,CAACvE,IAAI,CAACyD,GAAG,CAAC,CAAA;AAChB,aAAC,CAAC,CAAA;AACJ,WAAA;AAEMkB,UAAAA,UAAU,GAAGnH,yBAAyB,CAAC+G,IAAI,CAAC,CAAA;AAE5CK,UAAAA,OAAO,GAAG,EAAE,CAAA;UAAAC,UAAA,GAAAa,+BAAA,CAEMxB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAY,MAAA,GAAAD,UAAA,EAAA,EAAAc,IAAA,EAAA;AAAAP,YAAAA,SAAA,CAAAvF,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAvBqC,SAAS,GAAA4C,MAAA,CAAAvI,KAAA,CAAA;AAAA6I,UAAAA,SAAA,CAAAvF,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OACSgC,eAAe,CACxCG,QAAQ,EACRoC,aAAa,EACblC,SAAS,CACV,CAAA;AAAA,QAAA,KAAA,EAAA;UAJK6C,YAAY,GAAAK,SAAA,CAAAnE,IAAA,CAAA;AAMlB9D,UAAAA,OAAO,CAAC2I,GAAG,CAAChG,MAAM,CAACyE,IAAI,CAACQ,YAAY,CAAC,CAAChF,MAAM,EAAE,eAAe,CAAC,CAAA;UAAAiF,UAAA,GAAAU,+BAAA,CAE5Cf,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAM,MAAA,GAAAD,UAAA,EAAA,EAAAW,IAAA,EAAA;AAAAP,YAAAA,SAAA,CAAAvF,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjB4D,GAAG,GAAAwB,MAAA,CAAA1I,KAAA,CAAA;UACN2I,OAAO,GAAG1B,UAAU,CAACC,GAAG,EAAEvB,SAAS,EAAEA,SAAS,KAAKiC,gBAAgB,CAAC,CAAA;AAAA,UAAA,IAErEe,OAAO,EAAA;AAAAE,YAAAA,SAAA,CAAAvF,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAuF,SAAA,CAAA5D,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAIZ,UAAA,IAAI,CAACuD,YAAY,CAACG,OAAO,CAAC,EAAE;YAC1BN,OAAO,CAAC5E,IAAI,CAAC;AAAEyD,cAAAA,GAAG,EAAEyB,OAAO;AAAEhD,cAAAA,SAAS,EAATA,SAAAA;AAAW,aAAA,CAAC,CAAA;AAC3C,WAAA;AAAC,QAAA,KAAA,EAAA;AAAAkD,UAAAA,SAAA,CAAAvF,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAuF,UAAAA,SAAA,CAAAvF,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,OAAAuF,SAAA,CAAA5D,MAAA,CAAA,QAAA,EAIEoD,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAQ,SAAA,CAAA3D,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAsC,QAAA,CAAA,CAAA;GACf,CAAA,CAAA,CAAA;EAAA,OAlDYF,SAAAA,cAAcA,CAAAkC,GAAA,EAAA;AAAA,IAAA,OAAAjC,KAAA,CAAAnC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAkD1B,EAAA,CAAA;AAEM,IAAMoE,YAAY,gBAAA,YAAA;EAAA,IAAAC,KAAA,gBAAAjI,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAgI,QAAAA,CAAOC,MAAc,EAAA;AAAA,IAAA,IAAAlH,KAAA,CAAA;AAAA,IAAA,OAAAhB,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA2G,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAzG,IAAA,GAAAyG,SAAA,CAAAxG,IAAA;AAAA,QAAA,KAAA,CAAA;AAAAwG,UAAAA,SAAA,CAAAxG,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OAC3ByG,OAAO,CAAC;AAC1BhK,YAAAA,IAAI,EAAE,OAAO;AACb0E,YAAAA,IAAI,EAAE,MAAM;AACZG,YAAAA,OAAO,EAAEgF,MAAM;AACfI,YAAAA,OAAO,EAAE,SAAAA,OAACC,CAAAA,KAAK,EAAI;cACjB,IAAIA,KAAK,CAACC,OAAO,EAAE;gBACjB1J,OAAO,CAAC2J,QAAQ,CAAC,YAAK;AACpB3J,kBAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,iBAAC,CAAC,CAAA;AACJ,eAAA;AACF,aAAA;AACD,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAXI4B,KAAK,GAAAoH,SAAA,CAAApF,IAAA,CAAA;AAAA,UAAA,OAAAoF,SAAA,CAAA7E,MAAA,CAaJvC,QAAAA,EAAAA,KAAK,CAAC1C,KAAe,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAA8J,SAAA,CAAA5E,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAyE,QAAA,CAAA,CAAA;GAC7B,CAAA,CAAA,CAAA;EAAA,OAfYF,SAAAA,YAAYA,CAAAW,IAAA,EAAA;AAAA,IAAA,OAAAV,KAAA,CAAAtE,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAexB,EAAA,CAAA;AAEM,IAAMgF,iBAAiB,gBAAA,YAAA;EAAA,IAAAC,MAAA,gBAAA7I,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA4I,QAAAA,CAAAC,KAAA,EAAA;IAAA,IAAA7C,UAAA,EAAAE,aAAA,EAAApC,QAAA,EAAAgF,OAAA,EAAA1I,OAAA,EAAAE,MAAA,EAAAuE,QAAA,EAAAkE,kBAAA,EAAAvI,KAAA,EAAAwI,UAAA,EAAAC,MAAA,EAAAjF,SAAA,EAAAkF,iBAAA,EAAAC,UAAA,EAAAC,MAAA,EAAArF,MAAA,EAAAsF,UAAA,EAAAC,WAAA,EAAAC,GAAA,EAAAC,eAAA,EAAAC,kBAAA,EAAAlE,GAAA,EAAAlH,KAAA,EAAAqL,gBAAA,EAAAC,iBAAA,CAAA;AAAA,IAAA,OAAA5J,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAqI,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAnI,IAAA,GAAAmI,SAAA,CAAAlI,IAAA;AAAA,QAAA,KAAA,CAAA;UAC/BqE,UAAU,GAAA6C,KAAA,CAAV7C,UAAU,EACVE,aAAa,GAAA2C,KAAA,CAAb3C,aAAa,EACbpC,QAAQ,GAAA+E,KAAA,CAAR/E,QAAQ,EACRgF,OAAO,GAAAD,KAAA,CAAPC,OAAO,EACP1I,OAAO,GAAAyI,KAAA,CAAPzI,OAAO,EACPE,MAAM,GAAAuI,KAAA,CAANvI,MAAM,EACNuE,QAAQ,GAAAgE,KAAA,CAARhE,QAAQ,EACRkE,kBAAkB,GAAAF,KAAA,CAAlBE,kBAAkB,EAClBvI,KAAK,GAAAqI,KAAA,CAALrI,KAAK,CAAA;AAAA,UAAA,IAAA,CAEDuI,kBAAkB,EAAA;AAAAc,YAAAA,SAAA,CAAAlI,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAkI,SAAA,CAAAvG,MAAA,CAAA,QAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;UAAA0F,UAAA,GAAAxB,+BAAA,CAIExB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,IAAA,CAAAiD,MAAA,GAAAD,UAAA,EAAA,EAAAvB,IAAA,EAAA;AAAAoC,YAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAvBqC,SAAS,GAAAiF,MAAA,CAAA5K,KAAA,CAAA;AAAAwL,UAAAA,SAAA,CAAAlI,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OACcgC,eAAe,CAC7CG,QAAQ,EACRoC,aAAa,EACblC,SAAS,CACV,CAAA;AAAA,QAAA,KAAA,CAAA;UAJKkF,iBAAiB,GAAAW,SAAA,CAAA9G,IAAA,CAAA;UAAAoG,UAAA,GAAA3B,+BAAA,CAMFsB,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAM,MAAA,GAAAD,UAAA,EAAA,EAAA1B,IAAA,EAAA;AAAAoC,YAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBoC,MAAM,GAAAqF,MAAA,CAAA/K,KAAA,CAAA;UAAA,IACX0F,EAAAA,MAAM,KAAKmC,aAAa,CAAA,EAAA;AAAA2D,YAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAkI,SAAA,CAAAvG,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAuG,UAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEHgC,eAAe,CAACG,QAAQ,EAAEC,MAAM,EAAEC,SAAS,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAA/DqF,UAAU,GAAAQ,SAAA,CAAA9G,IAAA,CAAA;UACVuG,WAAW,GAA2B,EAAE,CAE9C;AACA,UAAA,KAAAC,GAAA,GAAAC,CAAAA,EAAAA,eAAA,GAA2B5H,MAAM,CAACnB,OAAO,CAACyI,iBAAiB,CAAC,EAAAK,GAAA,GAAAC,eAAA,CAAA3H,MAAA,EAAA0H,GAAA,EAAE,EAAA;YAAAE,kBAAA,GAAAD,eAAA,CAAAD,GAAA,CAAA,EAAlDhE,GAAG,GAAAkE,kBAAA,CAAA,CAAA,CAAA,EAAEpL,KAAK,GAAAoL,kBAAA,CAAA,CAAA,CAAA,CAAA;AACpB,YAAA,IAAI,CAACJ,UAAU,CAAC9D,GAAG,CAAC,EAAE;AACpB+D,cAAAA,WAAW,CAAC/D,GAAG,CAAC,GAAGlH,KAAK,CAAA;AAC1B,aAAA;AACF,WAAA;AAEA;UAAA,IACIuD,EAAAA,MAAM,CAACyE,IAAI,CAACiD,WAAW,CAAC,CAACzH,MAAM,GAAG,CAAC,CAAA,EAAA;AAAAgI,YAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACrC1C,UAAAA,OAAO,CAAC2I,GAAG,CAAA,QAAA,GACAhG,MAAM,CAACyE,IAAI,CAACiD,WAAW,CAAC,CAACzH,MAAM,GAAoBkC,mBAAAA,GAAAA,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CAC/F,CAAA;AAAA6F,UAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAE8B/B,YAAY,CAAC;AAC1CO,YAAAA,aAAa,EAAE+F,aAAa;AAC5B3F,YAAAA,cAAc,EAAEwD,MAAM;AACtB3D,YAAAA,OAAO,EAAPA,OAAO;AACPC,YAAAA,MAAM,EAAEiJ,WAAW;AACnBhJ,YAAAA,MAAM,EAANA,MAAM;AACNE,YAAAA,KAAK,EAALA,KAAAA;AACD,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAPIkJ,gBAAgB,GAAAG,SAAA,CAAA9G,IAAA,CAAA;AAStB;AACM4G,UAAAA,iBAAiB,GAAAzG,QAAA,CAAA,EAAA,EAClBmG,UAAU,EACVK,gBAAgB,CAGrB,CAAA;UACAhF,gBAAgB,CAACG,QAAQ,EAAEd,MAAM,EAAEC,SAAS,EAAE2F,iBAAiB,CAAC,CAAA;AAChE1K,UAAAA,OAAO,CAAC2I,GAAG,CAAA,+CAAA,GACkC7D,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CAC9E,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA6F,UAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAkI,UAAAA,SAAA,CAAAlI,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAkI,SAAA,CAAAtG,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAqF,QAAA,CAAA,CAAA;GAIR,CAAA,CAAA,CAAA;EAAA,OAhEYF,SAAAA,iBAAiBA,CAAAoB,IAAA,EAAA;AAAA,IAAA,OAAAnB,MAAA,CAAAlF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAgE7B,EAAA,CAAA;AAEYqG,IAAAA,gBAAiB,0BAAAC,MAAA,EAAA;EAC5B,SAAAD,gBAAAA,CACE9G,OAAe,EACRc,MAAe,EACfC,SAAkB,EAClBiG,KAAa,EAAA;AAAA,IAAA,IAAAC,KAAA,CAAA;AAEpBA,IAAAA,KAAA,GAAAF,MAAA,CAAAG,IAAA,CAAA,IAAA,EAAMlH,OAAO,CAAC,IAAA,IAAA,CAAA;AAAAiH,IAAAA,KAAA,CAJPnG,MAAA,GAAA,KAAA,CAAA,CAAA;AAAAmG,IAAAA,KAAA,CACAlG,SAAA,GAAA,KAAA,CAAA,CAAA;AAAAkG,IAAAA,KAAA,CACAD,KAAA,GAAA,KAAA,CAAA,CAAA;IAFAC,KAAA,CAAMnG,MAAA,GAANA,MAAM,CAAA;IACNmG,KAAA,CAASlG,SAAA,GAATA,SAAS,CAAA;IACTkG,KAAA,CAAKD,KAAA,GAALA,KAAK,CAAA;IAGZC,KAAA,CAAK9L,IAAI,GAAG,kBAAkB,CAAA;AAAA,IAAA,OAAA8L,KAAA,CAAA;AAChC,GAAA;EAACE,cAAA,CAAAL,gBAAA,EAAAC,MAAA,CAAA,CAAA;AAAA,EAAA,OAAAD,gBAAA,CAAA;AAAA,CAAAM,eAAAA,gBAAA,CATmCC,KAAK,CAAA,CAAA;;AClTpC,IAAMC,YAAY,gBAAA,YAAA;EAAA,IAAAhM,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOb,MAAqB,EAAA;AAAA,IAAA,IAAAsH,OAAA,CAAA;AAAA,IAAA,OAAA3G,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAChCgE,cAAc,CAACvG,MAAM,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAAtCsH,OAAO,GAAAjF,QAAA,CAAAsB,IAAA,CAAA;AAEb,UAAA,IAAI2D,OAAO,CAAC7E,MAAM,GAAG,CAAC,EAAE;AACtB5C,YAAAA,OAAO,CAACC,KAAK,CAAC,oCAAoC,CAAC,CAAA;AACnDL,YAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,WAAA;AAAC,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAsC,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GACF,CAAA,CAAA,CAAA;EAAA,OAPYsK,SAAAA,YAAYA,CAAA/G,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAOxB,EAAA;;ACFD,IAAM8G,eAAe,gBAAA,YAAA;EAAA,IAAAjM,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOoG,IAA4B,EAAA;AAAA,IAAA,IAAAoE,YAAA,CAAA;AAAA,IAAA,OAAA1K,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAC9BmG,YAAY,CACrC,gDAAgD,CACjD,CAAA;AAAA,QAAA,KAAA,CAAA;UAFK2C,YAAY,GAAAhJ,QAAA,CAAAsB,IAAA,CAAA;UAAA,IAIbsD,IAAI,CAACoE,YAAY,CAAC,EAAA;AAAAhJ,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACrB1C,UAAAA,OAAO,CAAC2I,GAAG,CAAa6C,YAAAA,GAAAA,YAAY,uBAAmB,CAAC,CAAA;AAAAhJ,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAC3C6I,eAAe,CAACnE,IAAI,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,OAAA5E,QAAA,CAAA6B,MAAA,CAAA7B,QAAAA,EAAAA,QAAA,CAAAsB,IAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAGpC9D,UAAAA,OAAO,CAAC2I,GAAG,CAAa6C,YAAAA,GAAAA,YAAY,eAAW,CAAC,CAAA;AAAA,UAAA,OAAAhJ,QAAA,CAAA6B,MAAA,CAAA,QAAA,EACzCmH,YAAY,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAhJ,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GACpB,CAAA,CAAA,CAAA;EAAA,OAZKuK,SAAAA,eAAeA,CAAAhH,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAYpB,EAAA,CAAA;AAEM,IAAMgH,kBAAkB,gBAAA,YAAA;AAAA,EAAA,IAAAxK,KAAA,gBAAAJ,iBAAA,eAAAC,mBAAA,EAAA,CAAAC,IAAA,CAAG,SAAA6D,QAAAA,CAChCzE,MAAqB,EACrBmG,GAAY,EAAA;AAAA,IAAA,IAAAzB,QAAA,CAAAe,CAAAA,QAAA,CAAAqB,CAAAA,aAAA,EAAAD,gBAAA,CAAA,CAAA6C,OAAA,CAAA/C,CAAA3F,OAAA,EAAAE,MAAA,CAAA,CAAA+F,IAAA,CAAA,CAAAoE,YAAA,CAAAE,CAAAA,cAAA,CAAArE,CAAAA,SAAA,EAAAC,KAAA,CAAA,CAAAxC,MAAA,CAAA,CAAA6G,QAAA,CAAAC,CAAAA,OAAA,CAAAC,CAAAA,WAAA,EAAAjE,aAAA;AAAA,IAAA,OAAA9G,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA4C,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1C,IAAA,GAAA0C,SAAA,CAAAzC,IAAA;AAAA,QAAA,KAAA,CAAA;UAGVmC,QAAQ,GASN1E,MAAM,CATR0E,QAAQ,EACRe,QAAQ,GAQNzF,MAAM,CARRyF,QAAQ,EACRqB,aAAa,GAOX9G,MAAM,CAPR8G,aAAa,EACbD,gBAAgB,GAMd7G,MAAM,CANR6G,gBAAgB,EAEhB6C,OAAO,GAIL1J,MAAM,CAJR0J,OAAO,EAEP1I,OAAO,GAELhB,MAAM,CAFRgB,OAAO,EACPE,MAAM,GACJlB,MAAM,CADRkB,MAAM,CAAA;AAAA8D,UAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OAGWgC,eAAe,CAChCvE,MAAM,CAAC0E,QAAQ,EACf1E,MAAM,CAAC8G,aAAa,EACpB9G,MAAM,CAAC6G,gBAAgB,CACxB,CAAA;AAAA,QAAA,KAAA,CAAA;UAJKI,IAAI,GAAAjC,SAAA,CAAArB,IAAA,CAAA;AAAA,UAAA,IAAA,CAQNwC,GAAG,EAAA;AAAAnB,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,IACD0E,CAAAA,IAAI,CAACd,GAAG,CAAC,EAAA;AAAAnB,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACX8I,UAAAA,YAAY,GAAGlF,GAAG,CAAA;AAClBtG,UAAAA,OAAO,CAAC2I,GAAG,CAAa6C,YAAAA,GAAAA,YAAY,eAAW,CAAC,CAAA;AAAArG,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAEhD1C,UAAAA,OAAO,CAAC2I,GAAG,CAAarC,YAAAA,GAAAA,GAAG,uBAAmB,CAAC,CAAA;AAAAnB,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;UAAA,OAC1B6I,eAAe,CAACnE,IAAI,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAA1CoE,YAAY,GAAArG,SAAA,CAAArB,IAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAqB,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;UAAA,OAGO6I,eAAe,CAACnE,IAAI,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAA1CoE,YAAY,GAAArG,SAAA,CAAArB,IAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAGd9D,UAAAA,OAAO,CAAC2I,GAAG,CACqB1B,6BAAAA,GAAAA,aAAa,GAASuE,SAAAA,GAAAA,YAAY,GAASpE,UAAAA,GAAAA,IAAI,CAACoE,YAAY,CAAC,GAAA,KAAI,CAChG,CAAA;AAAArG,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;UAAA,OAE4BmG,YAAY,CAAC,6BAA6B,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAAlE6C,cAAc,GAAAvG,SAAA,CAAArB,IAAA,CAAA;UAAAuD,SAAA,GAAAkB,+BAAA,CAECsB,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAvC,KAAA,GAAAD,SAAA,EAAA,EAAAmB,IAAA,EAAA;AAAArD,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBoC,MAAM,GAAAwC,KAAA,CAAAlI,KAAA,CAAA;AACXuM,UAAAA,QAAQ,GAAG,EAAE,CAAA;UAAA,IACb7G,EAAAA,MAAM,KAAKmC,aAAa,CAAA,EAAA;AAAA9B,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AAC1BiJ,UAAAA,QAAQ,GAAGD,cAAc,CAAA;AAAAvG,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEC/B,YAAY,CAAC;AACrCQ,YAAAA,OAAO,EAAPA,OAAO;AACPD,YAAAA,aAAa,EAAE+F,aAAa;AAC5B3F,YAAAA,cAAc,EAAEwD,MAAM;YACtB1D,MAAM,GAAAwK,OAAA,GAAA,EAAA,EAAAA,OAAA,CACHJ,YAAY,CAAGE,GAAAA,cAAc,EAAAE,OAAA,CAC/B;AACDvK,YAAAA,MAAM,EAANA,MAAM;YACNE,KAAK,EAAEpB,MAAM,CAACoB,KAAAA;AACf,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UATIsK,WAAW,GAAA1G,SAAA,CAAArB,IAAA,CAAA;AAWjB6H,UAAAA,QAAQ,GAAGE,WAAW,CAACL,YAAY,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAAArG,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAGXgC,eAAe,CACxCG,QAAQ,EACRC,MAAM,EACNkC,gBAAgB,CACjB,CAAA;AAAA,QAAA,KAAA,EAAA;UAJKY,YAAY,GAAAzC,SAAA,CAAArB,IAAA,CAAA;AAMlB8D,UAAAA,YAAY,CAAC4D,YAAY,CAAC,GAAGG,QAAQ,CAAA;UAErClG,gBAAgB,CAACG,QAAQ,EAAEd,MAAM,EAAEkC,gBAAgB,EAAEY,YAAY,CAAC,CAAA;UAElE5H,OAAO,CAAC2I,GAAG,CACmB6C,4BAAAA,GAAAA,YAAY,cAAQ1G,MAAM,GAAA,QAAA,GAAQ6G,QAAQ,GAAA,KAAI,CAC3E,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAxG,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAyC,SAAA,CAAAb,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAM,QAAA,CAAA,CAAA;GAEJ,CAAA,CAAA,CAAA;AAAA,EAAA,OAAA,SA3EY6G,kBAAkBA,CAAAnG,GAAA,EAAAC,GAAA,EAAA;AAAA,IAAA,OAAAtE,KAAA,CAAAuD,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CA2E9B,EAAA;;ACvFM,IAAMqH,gBAAgB,gBAAA,YAAA;EAAA,IAAAxM,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOb,MAAqB,EAAA;IAAA,IAAA0E,QAAA,EAAAe,QAAA,EAAAqB,aAAA,EAAAF,UAAA,EAAA8C,OAAA,EAAA1I,OAAA,EAAAE,MAAA,EAAAyI,kBAAA,EAAArC,OAAA,EAAAsE,wBAAA,EAAA1E,SAAA,EAAAC,KAAA,EAAA0E,MAAA,EAAAC,MAAA,EAAAC,aAAA,EAAAC,UAAA,EAAAzE,UAAA,EAAAC,MAAA,EAAA7C,MAAA,EAAA2F,gBAAA,EAAA2B,KAAA,EAAAvE,UAAA,EAAAC,MAAA,CAAA;AAAA,IAAA,OAAAhH,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAA4C,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1C,IAAA,GAAA0C,SAAA,CAAAzC,IAAA;AAAA,QAAA,KAAA,CAAA;UAExDmC,QAAQ,GAQN1E,MAAM,CARR0E,QAAQ,EACRe,QAAQ,GAONzF,MAAM,CAPRyF,QAAQ,EACRqB,aAAa,GAMX9G,MAAM,CANR8G,aAAa,EACbF,UAAU,GAKR5G,MAAM,CALR4G,UAAU,EACV8C,OAAO,GAIL1J,MAAM,CAJR0J,OAAO,EACP1I,OAAO,GAGLhB,MAAM,CAHRgB,OAAO,EACPE,MAAM,GAEJlB,MAAM,CAFRkB,MAAM,EACNyI,kBAAkB,GAChB3J,MAAM,CADR2J,kBAAkB,CAAA;AAAA3E,UAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;UAAA,OAGEgE,cAAc,CAACvG,MAAM,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAAtCsH,OAAO,GAAAtC,SAAA,CAAArB,IAAA,CAAA;AAAA,UAAA,IAAA,EAET2D,OAAO,CAAC7E,MAAM,KAAK,CAAC,CAAA,EAAA;AAAAuC,YAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACtB1C,UAAAA,OAAO,CAAC2I,GAAG,CAAC,oBAAoB,CAAC,CAAA;AAAAxD,UAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;UAAA,OAE3B+G,iBAAiB,CAACtJ,MAAM,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAAA,OAAAgF,SAAA,CAAAd,MAAA,CAAA,QAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;UAKjCrE,OAAO,CAAC2I,GAAG,CACNlB,OAAO,CAAC7E,MAAM,GAAA,yEAAA,GAA0EqE,aAAa,GAAA,GAAG,CAC5G,CAAA;AAEK8E,UAAAA,wBAAwB,GAAG,EAAE,CAAA;UAAA1E,SAAA,GAAAkB,+BAAA,CAEdd,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAH,KAAA,GAAAD,SAAA,EAAA,EAAAmB,IAAA,EAAA;AAAArD,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBsJ,MAAM,GAAA1E,KAAA,CAAAlI,KAAA,CAAA;AAAA+F,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OACMmG,YAAY,CAACmD,MAAM,CAAC1F,GAAG,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAAvC2F,MAAM,GAAA9G,SAAA,CAAArB,IAAA,CAAA;UAEZiI,wBAAwB,CAAClJ,IAAI,CAAC;YAC5ByD,GAAG,EAAE0F,MAAM,CAAC1F,GAAG;YACfvB,SAAS,EAAEiH,MAAM,CAACjH,SAAS;AAC3B3F,YAAAA,KAAK,EAAE6M,MAAAA;AACR,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA9G,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;UAGEwJ,aAAa,GAAGH,wBAAwB,CAACM,MAAM,CAAC,UAAC5J,IAAI,EAAEC,IAAI,EAAI;YACnED,IAAI,CAACC,IAAI,CAAC4D,GAAG,CAAC,GAAG5D,IAAI,CAACtD,KAAK,CAAA;AAE3B,YAAA,OAAOqD,IAAI,CAAA;WACZ,EAAE,EAAE,CAAC,CAAA;AAEA0J,UAAAA,UAAU,GAAGrC,kBAAkB,GAAG,CAAC7C,aAAa,CAAC,GAAG4C,OAAO,CAAA;UAAAnC,UAAA,GAAAa,+BAAA,CAE5C4D,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAxE,MAAA,GAAAD,UAAA,EAAA,EAAAc,IAAA,EAAA;AAAArD,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAApBoC,MAAM,GAAA6C,MAAA,CAAAvI,KAAA,CAAA;UACXqL,gBAAgB,GAAG,EAAE,CAAA;UAAA,IAErB3F,EAAAA,MAAM,KAAKmC,aAAa,CAAA,EAAA;AAAA9B,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AAC1B+H,UAAAA,gBAAgB,GAAGyB,aAAa,CAAA;AAAA/G,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEP/B,YAAY,CAAC;AACpCO,YAAAA,aAAa,EAAE+F,aAAa;AAC5B3F,YAAAA,cAAc,EAAEwD,MAAM;AACtB3D,YAAAA,OAAO,EAAPA,OAAO;AACPC,YAAAA,MAAM,EAAE8K,aAAa;AACrB7K,YAAAA,MAAM,EAANA,MAAM;YACNE,KAAK,EAAEpB,MAAM,CAACoB,KAAAA;AACf,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAPFkJ,gBAAgB,GAAAtF,SAAA,CAAArB,IAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAsI,UAAAA,KAAA,gBAAAtL,mBAAA,EAAAC,CAAAA,IAAA,UAAAqL,KAAA,GAAA;YAAA,IAAArH,SAAA,EAAA6C,YAAA,EAAA0E,YAAA,EAAAvC,UAAA,EAAAC,MAAA,EAAA1D,GAAA,CAAA;AAAA,YAAA,OAAAxF,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAiK,OAAA/J,QAAA,EAAA;AAAA,cAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,gBAAA,KAAA,CAAA;kBAUPqC,SAAS,GAAA+C,MAAA,CAAA1I,KAAA,CAAA;AAAAoD,kBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,kBAAA,OACSgC,eAAe,CAACG,QAAQ,EAAEC,MAAM,EAAEC,SAAS,CAAC,CAAA;AAAA,gBAAA,KAAA,CAAA;kBAAjE6C,YAAY,GAAApF,QAAA,CAAAsB,IAAA,CAAA;AAEZwI,kBAAAA,YAAY,GAAGP,wBAAwB,CAACxL,MAAM,CAClD,UAAC+F,GAAG,EAAA;AAAA,oBAAA,OAAKA,GAAG,CAACvB,SAAS,KAAKA,SAAS,CAAA;mBACrC,CAAA,CAAA;AAAA,kBAAA,IAAA,EAEGuH,YAAY,CAAC1J,MAAM,KAAK,CAAC,CAAA,EAAA;AAAAJ,oBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,oBAAA,MAAA;AAAA,mBAAA;kBAAA,OAAAF,QAAA,CAAA6B,MAAA,CAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAAA,gBAAA,KAAA,CAAA;kBAI7B,KAAA0F,UAAA,GAAAxB,+BAAA,CAAkB+D,YAAY,CAAAtC,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,EAAAvB,EAAAA,IAAA,GAAE;oBAArBlC,GAAG,GAAA0D,MAAA,CAAA5K,KAAA,CAAA;oBACZwI,YAAY,CAACtB,GAAG,CAACA,GAAG,CAAC,GAAGmE,gBAAgB,CAACnE,GAAG,CAACA,GAAG,CAAC,CAAA;AACnD,mBAAA;kBAEAb,gBAAgB,CAACG,QAAQ,EAAEd,MAAM,EAAEC,SAAS,EAAE6C,YAAY,CAAC,CAAA;AAAA,gBAAA,KAAA,CAAA,CAAA;AAAA,gBAAA,KAAA,KAAA;kBAAA,OAAApF,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,eAAA;AAAA,aAAA,EAAA8H,KAAA,CAAA,CAAA;AAAA,WAAA,CAAA,CAAA;UAAAvE,UAAA,GAAAU,+BAAA,CAfrCxB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAe,MAAA,GAAAD,UAAA,EAAA,EAAAW,IAAA,EAAA;AAAArD,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AAAA,UAAA,OAAAyC,SAAA,CAAAqH,aAAA,CAAAJ,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAAA,IAAAjH,CAAAA,SAAA,CAAAsH,EAAA,EAAA;AAAAtH,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAyC,SAAA,CAAAd,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAc,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;UAAA,OAmB9B+G,iBAAiB,CAACtJ,MAAM,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAE/BH,UAAAA,OAAO,CAAC2I,GAAG,CAAA,0BAAA,GAA4BlB,OAAO,CAAC7E,MAAM,WAAQ,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAuC,SAAA,CAAAb,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GAC/D,CAAA,CAAA,CAAA;EAAA,OApFY8K,SAAAA,gBAAgBA,CAAAvH,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAoF5B,EAAA;;ACtFM,IAAMiI,WAAW,gBAAA,YAAA;EAAA,IAAApN,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOb,MAAqB,EAAA;IAAA,IAAA0E,QAAA,EAAAe,QAAA,EAAAqB,aAAA,EAAAF,UAAA,EAAA8C,OAAA,EAAA1I,OAAA,EAAAE,MAAA,EAAAgG,SAAA,EAAAC,KAAA,EAAAvC,SAAA,EAAAkF,iBAAA,EAAAvC,UAAA,EAAAC,MAAA,EAAA7C,MAAA,EAAAsF,UAAA,EAAAC,WAAA,EAAArI,EAAA,EAAAuI,eAAA,EAAAC,kBAAA,EAAAlE,GAAA,EAAAlH,KAAA,EAAAqL,gBAAA,EAAAC,iBAAA,CAAA;AAAA,IAAA,OAAA5J,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAEnDmC,UAAAA,QAAQ,GAON1E,MAAM,CAPR0E,QAAQ,EACRe,QAAQ,GAMNzF,MAAM,CANRyF,QAAQ,EACRqB,aAAa,GAKX9G,MAAM,CALR8G,aAAa,EACbF,UAAU,GAIR5G,MAAM,CAJR4G,UAAU,EACV8C,OAAO,GAGL1J,MAAM,CAHR0J,OAAO,EACP1I,OAAO,GAELhB,MAAM,CAFRgB,OAAO,EACPE,MAAM,GACJlB,MAAM,CADRkB,MAAM,CAAA;AAAAmB,UAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;UAAA4E,SAAA,GAAAkB,+BAAA,CAIkBxB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,IAAA,CAAAO,KAAA,GAAAD,SAAA,EAAA,EAAAmB,IAAA,EAAA;AAAAhG,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAvBqC,SAAS,GAAAuC,KAAA,CAAAlI,KAAA,CAAA;UACd6K,iBAAyC,GAAA,KAAA,CAAA,CAAA;AAAAzH,UAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OAGjBgC,eAAe,CACvCG,QAAQ,EACRoC,aAAa,EACblC,SAAS,CACV,CAAA;AAAA,QAAA,KAAA,CAAA;UAJDkF,iBAAiB,GAAAzH,QAAA,CAAAsB,IAAA,CAAA;AAAAtB,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAiK,EAAA,GAAAjK,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;UAAA,MAMX,IAAIsI,gBAAgB,CAC6B/F,qDAAAA,GAAAA,SAAS,SAC9DkC,aAAa,EACblC,SAAS,EACTvC,QAAA,CAAAiK,EAAA,YAAiBpB,KAAK,GAAA7I,QAAA,CAAAiK,EAAA,GAAWE,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA;UAAAjF,UAAA,GAAAa,+BAAA,CAGkBsB,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAlC,MAAA,GAAAD,UAAA,EAAA,EAAAc,IAAA,EAAA;AAAAhG,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBoC,MAAM,GAAA6C,MAAA,CAAAvI,KAAA,CAAA;UAAA,IACX0F,EAAAA,MAAM,KAAKmC,aAAa,CAAA,EAAA;AAAAzE,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAF,QAAA,CAAA6B,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAExB+F,UAAkC,GAAA,KAAA,CAAA,CAAA;AAAA5H,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEjBgC,eAAe,CAACG,QAAQ,EAAEC,MAAM,EAAEC,SAAS,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAA/DqF,UAAU,GAAA5H,QAAA,CAAAsB,IAAA,CAAA;AAAAtB,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAoK,EAAA,GAAApK,QAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAEVxC,UAAAA,OAAO,CAAC6M,IAAI,CAAA,0CAAA,GACiC/H,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,0BAAuB,CAClG,CAAA;UACDqF,UAAU,GAAG,EAAE,CAAA;AAAA,QAAA,KAAA,EAAA;UAGXC,WAAW,GAA2B,EAAE,CAE9C;AACA,UAAA,KAAArI,EAAA,GAAAuI,CAAAA,EAAAA,eAAA,GAA2B5H,MAAM,CAACnB,OAAO,CAACyI,iBAAiB,CAAC,EAAAjI,EAAA,GAAAuI,eAAA,CAAA3H,MAAA,EAAAZ,EAAA,EAAE,EAAA;YAAAwI,kBAAA,GAAAD,eAAA,CAAAvI,EAAA,CAAA,EAAlDsE,GAAG,GAAAkE,kBAAA,CAAA,CAAA,CAAA,EAAEpL,KAAK,GAAAoL,kBAAA,CAAA,CAAA,CAAA,CAAA;AACpB,YAAA,IAAI,CAACJ,UAAU,CAAC9D,GAAG,CAAC,EAAE;AACpB+D,cAAAA,WAAW,CAAC/D,GAAG,CAAC,GAAGlH,KAAK,CAAA;AAC1B,aAAA;AACF,WAAA;AAEA;UAAA,IACIuD,EAAAA,MAAM,CAACyE,IAAI,CAACiD,WAAW,CAAC,CAACzH,MAAM,GAAG,CAAC,CAAA,EAAA;AAAAJ,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACrC1C,UAAAA,OAAO,CAAC2I,GAAG,CAAA,QAAA,GACAhG,MAAM,CAACyE,IAAI,CAACiD,WAAW,CAAC,CAACzH,MAAM,GAAoBkC,mBAAAA,GAAAA,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CAC/F,CAAA;UAEG0F,gBAAwC,GAAA,KAAA,CAAA,CAAA;AAAAjI,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEjB/B,YAAY,CAAC;AACpCO,YAAAA,aAAa,EAAE+F,aAAa;AAC5B3F,YAAAA,cAAc,EAAEwD,MAAM;AACtB3D,YAAAA,OAAO,EAAPA,OAAO;AACPC,YAAAA,MAAM,EAAEiJ,WAAW;AACnBhJ,YAAAA,MAAM,EAANA,MAAM;YACNE,KAAK,EAAEpB,MAAM,CAACoB,KAAAA;AACf,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAPFkJ,gBAAgB,GAAAjI,QAAA,CAAAsB,IAAA,CAAA;AAAAtB,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAsK,EAAA,GAAAtK,QAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA;UAAA,MASV,IAAIsI,gBAAgB,CACgBhG,wCAAAA,GAAAA,MAAM,uBAAiBC,SAAS,GAAA,GAAA,EACxED,MAAM,EACNC,SAAS,EACTvC,QAAA,CAAAsK,EAAA,YAAiBzB,KAAK,GAAA7I,QAAA,CAAAsK,EAAA,GAAWH,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA;AAGH;AACMjC,UAAAA,iBAAiB,GAAAzG,QAAA,CAClBmG,EAAAA,EAAAA,UAAU,EACVK,gBAAgB,CAAA,CAAA;AAAAjI,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;UAAA,OAIb+C,gBAAgB,CACpBG,QAAQ,EACRd,MAAM,EACNC,SAAS,EACT2F,iBAAiB,CAClB,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAlI,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAuK,EAAA,GAAAvK,QAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA;UAAA,MAEK,IAAIsI,gBAAgB,CACmBhG,2CAAAA,GAAAA,MAAM,uBAAiBC,SAAS,GAAA,GAAA,EAC3ED,MAAM,EACNC,SAAS,EACTvC,QAAA,CAAAuK,EAAA,YAAiB1B,KAAK,GAAA7I,QAAA,CAAAuK,EAAA,GAAWJ,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA;AAGH3M,UAAAA,OAAO,CAAC2I,GAAG,CAAA,oCAAA,GAC4BhG,MAAM,CAACyE,IAAI,CAACiD,WAAW,CAAC,CAACzH,MAAM,GAAakC,YAAAA,GAAAA,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CACpH,CAAA;AAAAvC,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAED1C,UAAAA,OAAO,CAAC2I,GAAG,CAAA,4BAAA,GACoB7D,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CAChE,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAvC,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAwK,EAAA,GAAAxK,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,UAAA,IAAA,EAKHA,QAAA,CAAAwK,EAAA,YAAiBlC,gBAAgB,CAAA,EAAA;AAAAtI,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,MAAAF,QAAA,CAAAwK,EAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAAA,MAG/B,IAAIlC,gBAAgB,CACxB,iDAAiD,EACjD6B,SAAS,EACTA,SAAS,EACTnK,QAAA,CAAAwK,EAAA,YAAiB3B,KAAK,GAAA7I,QAAA,CAAAwK,EAAA,GAAWL,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAnK,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;GAEJ,CAAA,CAAA,CAAA;EAAA,OAxHY0L,SAAAA,WAAWA,CAAAnI,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAwHvB,EAAA;;ACtHD;AAEA,IAAMwI,OAAO,gBAAG,IAAIC,iBAAO,EAAE,CAAA;AAE7BD,OAAO,CACJ9N,IAAI,CAAC,YAAY,CAAC,CAClBgO,WAAW,CACV,6FAA6F,CAC9F,CACAC,OAAO,CAAC,OAAO,CAAC,CAChBC,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CACpDA,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAElD,IAAMC,QAAQ,GAAkB,CAC9B;AACEnO,EAAAA,IAAI,EAAE,MAAM;AACZgO,EAAAA,WAAW,EACT,uHAAuH;AACzHI,EAAAA,MAAM,EAAEzB,gBAAAA;AACT,CAAA,EACD;AACE3M,EAAAA,IAAI,EAAE,SAAS;AACfgO,EAAAA,WAAW,EACT,6GAA6G;AAC/GI,EAAAA,MAAM,EAAE9B,kBAAAA;AACT,CAAA,EACD;AACEtM,EAAAA,IAAI,EAAE,eAAe;AACrBgO,EAAAA,WAAW,EACT,yFAAyF;AAC3FI,EAAAA,MAAM,EAAEjC,YAAAA;AACT,CAAA,EACD;AACEnM,EAAAA,IAAI,EAAE,MAAM;AACZgO,EAAAA,WAAW,EACT,gHAAgH;AAClHI,EAAAA,MAAM,EAAEb,WAAAA;AACT,CAAA,CACF,CAAA;AAAA,IAAAN,KAAA,GAAAA,SAAAA,KAAAA,GAE+B;AAA3B,EAAA,IAAMoB,OAAO,GAAAC,SAAA,CAAAzL,EAAA,CAAA,CAAA;AAChB,EAAA,IAAM0L,GAAG,GAAGT,OAAO,CAACO,OAAO,CAACA,OAAO,CAACrO,IAAI,CAAC,CAACgO,WAAW,CAACK,OAAO,CAACL,WAAW,CAAC,CAAA;AAE1E;AACA,EAAA,IAAIK,OAAO,CAACrO,IAAI,KAAK,SAAS,EAAE;AAC9BuO,IAAAA,GAAG,CAACL,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC,CAAA;AAC7D,GAAA;AAEAK,EAAAA,GAAG,CAACH,MAAM,eAAA,YAAA;IAAA,IAAAjO,IAAA,GAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAAC,OAAAA,CAAO2M,OAAO,EAAA;AAAA,MAAA,IAAAC,aAAA,CAAA;AAAA,MAAA,IAAAC,GAAA,EAAA1N,MAAA,EAAA2N,QAAA,EAAAC,SAAA,EAAAC,SAAA,EAAA1H,GAAA,EAAA2H,OAAA,EAAA5M,MAAA,CAAA;AAAA,MAAA,OAAAP,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,UAAA,KAAA,CAAA;AACjBmL,YAAAA,GAAG,GAAGK,MAAM,CAAC/N,MAAM,CAAC;cACxBT,IAAI,EAAEuN,OAAO,CAACkB,IAAI,EAAE,CAACC,GAAG,IAAI,MAAA;AAC7B,aAAA,CAAC,CAAA;AAAA5L,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAEkCrD,UAAU,CAAC;AAC7CG,cAAAA,UAAU,EAAEyN,OAAO,CAACkB,IAAI,EAAE,CAAChO,MAAAA;AAC5B,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;YAFIA,MAAM,GAAAqC,QAAA,CAAAsB,IAAA,CAAA;AAINgK,YAAAA,QAAQ,GAAAF,CAAAA,aAAA,GAAIzN,MAAM,CAACoB,KAAgB,KAAvBqM,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAA,CAAyBS,QAAQ,CAAC,QAAQ,CAAC,CAE7D;YACMN,SAAS,GAAGF,GAAG,CAACS,MAAM,CAACC,cAAc,IAAIpO,MAAM,CAACoO,cAAc,CAAA;YAC9DP,SAAS,GAAGH,GAAG,CAACS,MAAM,CAACE,cAAc,IAAIrO,MAAM,CAACqO,cAAc,CAEpE;AACMlI,YAAAA,GAAG,GAAGwH,QAAQ,GAAGE,SAAS,GAAGD,SAAS,CAAA;YAE5C,IAAI,CAACzH,GAAG,EAAE;AACF2H,cAAAA,OAAO,GAAGH,QAAQ,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;cAC9D9N,OAAO,CAACC,KAAK,CAAA,kBAAA,IACQ6N,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAA,GAAA,+CAAA,GAAgDG,OAAO,GAAA,GAAG,CAC/G,CAAA;AACDrO,cAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,aAAA;AAEMmB,YAAAA,MAAM,GAAG,IAAIoN,MAAM,CAAAxK,QAAA,CAAA;AACvByK,cAAAA,MAAM,EAAEpI,GAAAA;AAAG,aAAA,EACPwH,QAAQ,IAAI;AACda,cAAAA,OAAO,EAAE,0DAAA;aACV,CACF,CAAC,CAAA;YAEF,IAAInB,OAAO,CAACrO,IAAI,KAAK,SAAS,IAAIwO,OAAO,CAACrH,GAAG,EAAE;AAC7CkH,cAAAA,OAAO,CAACD,MAAM,CAAAtJ,QAAA,KAAM9D,MAAM,EAAA;AAAEkB,gBAAAA,MAAM,EAANA,MAAAA;eAAUsM,CAAAA,EAAAA,OAAO,CAACrH,GAAG,CAAC,CAAA;AACpD,aAAC,MAAM;AACLkH,cAAAA,OAAO,CAACD,MAAM,CAAAtJ,QAAA,KAAM9D,MAAM,EAAA;AAAEkB,gBAAAA,MAAM,EAANA,MAAAA;AAAM,eAAA,CAAE,CAAC,CAAA;AACvC,aAAA;AAAC,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAmB,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAtD,OAAA,CAAA,CAAA;KACF,CAAA,CAAA,CAAA;AAAA,IAAA,OAAA,UAAAuD,EAAA,EAAA;AAAA,MAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA,CAAA;GAAC,EAAA,CAAA,CAAA;AACJ,CAAC,CAAA;AA/CD,KAAA,IAAAzC,EAAA,GAAA,CAAA,EAAAyL,SAAA,GAAsBH,QAAQ,EAAAtL,EAAA,GAAAyL,SAAA,CAAA7K,MAAA,EAAAZ,EAAA,EAAA,EAAA;EAAAoK,KAAA,EAAA,CAAA;AAAA,CAAA;AAiD9Ba,OAAO,CAAC5J,KAAK,CAACzD,OAAO,CAACgP,IAAI,CAAC;;"}
1
+ {"version":3,"file":"i18n-magic.cjs.development.js","sources":["../src/lib/languges.ts","../src/lib/utils.ts","../src/commands/check-missing.ts","../src/commands/replace.ts","../src/commands/scan.ts","../src/commands/sync-locales.ts","../src/index.ts"],"sourcesContent":["export const languages = [\n {\n label: \"Deutsch\",\n name: \"German\",\n value: \"de\",\n },\n {\n label: \"English\",\n name: \"English\",\n value: \"en\",\n },\n {\n label: \"Español\",\n name: \"Spanish\",\n value: \"es\",\n },\n {\n label: \"Français\",\n name: \"French\",\n value: \"fr\",\n },\n {\n label: \"Dansk\",\n name: \"Danish\",\n value: \"dk\",\n },\n {\n label: \"中文\",\n name: \"Chinese\",\n value: \"cn\",\n },\n {\n label: \"Русский\",\n name: \"Russian\",\n value: \"ru\",\n },\n {\n label: \"Italiano\",\n name: \"Italian\",\n value: \"it\",\n },\n {\n label: \"Nederlands\",\n name: \"Dutch\",\n value: \"nl\",\n },\n {\n label: \"Português\",\n name: \"Portuguese\",\n value: \"pt\",\n },\n {\n label: \"Türkçe\",\n name: \"Turkish\",\n value: \"tr\",\n },\n {\n label: \"Polski\",\n name: \"Polish\",\n value: \"pl\",\n },\n {\n label: \"Українська\",\n name: \"Ukrainian\",\n value: \"ua\",\n },\n {\n label: \"Suomi\",\n name: \"Finnish\",\n value: \"fi\",\n },\n {\n label: \"Norsk\",\n name: \"Norwegian\",\n value: \"no\",\n },\n {\n label: \"Svenska\",\n name: \"Swedish\",\n value: \"sv\",\n },\n {\n label: \"Čeština\",\n name: \"Czech\",\n value: \"cz\",\n },\n {\n label: \"Ελληνικά\",\n name: \"Greek\",\n value: \"gr\",\n },\n {\n label: \"日本語\",\n name: \"Japanese\",\n value: \"jp\",\n },\n {\n label: \"한국어\",\n name: \"Korean\",\n value: \"kr\",\n },\n {\n label: \"Română\",\n name: \"Romanian\",\n value: \"ro\",\n },\n {\n label: \"Hrvatski\",\n name: \"Croatian\",\n value: \"hr\",\n },\n {\n label: \"Magyar\",\n name: \"Hungarian\",\n value: \"hu\",\n },\n {\n label: \"Slovensky\",\n name: \"Slovak\",\n value: \"sk\",\n },\n {\n label: \"हिन्दी\",\n name: \"Hindi\",\n value: \"hi\",\n },\n {\n label: \"தமிழ்\",\n name: \"Tamil\",\n value: \"ta\",\n },\n {\n label: \"Bahasa Indonesia\",\n name: \"Indonesian\",\n value: \"id\",\n },\n {\n label: \"Tiếng Việt\",\n name: \"Vietnamese\",\n value: \"vn\",\n },\n]\n","import glob from \"fast-glob\"\nimport { Parser } from \"i18next-scanner\"\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport type OpenAI from \"openai\"\nimport prompts from \"prompts\"\nimport { languages } from \"./languges\"\nimport type { Configuration } from \"./types\"\n\nexport const loadConfig = ({\n configPath = \"i18n-magic.js\",\n}: { configPath: string }) => {\n const filePath = path.join(process.cwd(), configPath)\n\n if (!fs.existsSync(filePath)) {\n console.error(\"Config file does not exist:\", filePath)\n process.exit(1)\n }\n\n try {\n const config = require(filePath)\n // Validate config if needed\n return config\n } catch (error) {\n console.error(\"Error while loading config:\", error)\n process.exit(1)\n }\n}\n\nexport function removeDuplicatesFromArray<T>(arr: T[]): T[] {\n return arr.filter((item, index) => arr.indexOf(item) === index)\n}\n\nexport const translateKey = async ({\n inputLanguage,\n context,\n object,\n openai,\n outputLanguage,\n model,\n}: {\n object: Record<string, string>\n context: string\n inputLanguage: string\n outputLanguage: string\n model: string\n openai: OpenAI\n}) => {\n // Split object into chunks of 100 keys\n const entries = Object.entries(object)\n const chunks: Array<[string, string][]> = []\n\n for (let i = 0; i < entries.length; i += 100) {\n chunks.push(entries.slice(i, i + 100))\n }\n\n let result: Record<string, string> = {}\n\n const existingInput = languages.find((l) => l.value === inputLanguage)\n const existingOutput = languages.find((l) => l.value === outputLanguage)\n\n const input = existingInput?.label || inputLanguage\n const output = existingOutput?.label || outputLanguage\n\n // Translate each chunk\n for (const chunk of chunks) {\n const chunkObject = Object.fromEntries(chunk)\n const completion = await openai.beta.chat.completions.parse({\n model,\n messages: [\n {\n content: `You are a bot that translates the values of a locales JSON. ${\n context\n ? `The user provided some additional context or guidelines about what to fill in the blanks: \\\"${context}\\\". `\n : \"\"\n }The user provides you a JSON with a field named \"inputLanguage\", which defines the language the values of the JSON are defined in. It also has a field named \"outputLanguage\", which defines the language you should translate the values to. The last field is named \"data\", which includes the object with the values to translate. The keys of the values should never be changed. You output only a JSON, which has the same keys as the input, but with translated values. I give you an example input: {\"inputLanguage\": \"English\", outputLanguage: \"German\", \"keys\": {\"hello\": \"Hello\", \"world\": \"World\"}}. The output should be {\"hello\": \"Hallo\", \"world\": \"Welt\"}.`,\n role: \"system\",\n },\n {\n content: JSON.stringify({\n inputLanguage: input,\n outputLanguage: output,\n data: chunkObject,\n }),\n role: \"user\",\n },\n ],\n response_format: {\n type: \"json_object\",\n },\n })\n\n const translatedChunk = JSON.parse(\n completion.choices[0].message.content,\n ) as Record<string, string>\n\n // Merge translated chunk with result\n result = { ...result, ...translatedChunk }\n\n // Optional: Add a small delay between chunks to avoid rate limiting\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n\n return result\n}\n\nexport const loadLocalesFile = async (\n loadPath:\n | string\n | ((locale: string, namespace: string) => Promise<Record<string, string>>),\n locale: string,\n namespace: string,\n) => {\n if (typeof loadPath === \"string\") {\n const resolvedPath = loadPath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n const content = fs.readFileSync(resolvedPath, \"utf-8\")\n const json = JSON.parse(content)\n\n return json as Record<string, string>\n }\n\n return loadPath(locale, namespace)\n}\n\nexport const writeLocalesFile = async (\n savePath:\n | string\n | ((\n locale: string,\n namespace: string,\n data: Record<string, string>,\n ) => Promise<void>),\n locale: string,\n namespace: string,\n data: Record<string, string>,\n) => {\n if (typeof savePath === \"string\") {\n const resolvedSavePath = savePath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n fs.writeFileSync(resolvedSavePath, JSON.stringify(data, null, 2))\n\n return\n }\n\n await savePath(locale, namespace, data)\n}\n\nexport const getPureKey = (\n key: string,\n namespace?: string,\n isDefault?: boolean,\n) => {\n const splitted = key.split(\":\")\n\n if (splitted.length === 1) {\n if (isDefault) {\n return key\n }\n\n return null\n }\n\n if (splitted[0] === namespace) {\n return splitted[1]\n }\n\n return null\n}\n\nexport const getMissingKeys = async ({\n globPatterns,\n namespaces,\n defaultNamespace,\n defaultLocale,\n loadPath,\n}: Configuration) => {\n const parser = new Parser({\n nsSeparator: false,\n keySeparator: false,\n })\n\n const files = await glob([...globPatterns, \"!**/node_modules/**\"])\n\n const keys = []\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\")\n parser.parseFuncFromString(content, { list: [\"t\"] }, (key: string) => {\n keys.push(key)\n })\n }\n\n const uniqueKeys = removeDuplicatesFromArray(keys)\n\n const newKeys = []\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n console.log(Object.keys(existingKeys).length, \"existing keys\")\n\n for (const key of uniqueKeys) {\n const pureKey = getPureKey(key, namespace, namespace === defaultNamespace)\n\n if (!pureKey) {\n continue\n }\n\n if (!existingKeys[pureKey]) {\n newKeys.push({ key: pureKey, namespace })\n }\n }\n }\n\n return newKeys\n}\n\nexport const getTextInput = async (prompt: string) => {\n const input = await prompts({\n name: \"value\",\n type: \"text\",\n message: prompt,\n onState: (state) => {\n if (state.aborted) {\n process.nextTick(() => {\n process.exit(0)\n })\n }\n },\n })\n\n return input.value as string\n}\n\nexport const checkAllKeysExist = async ({\n namespaces,\n defaultLocale,\n loadPath,\n locales,\n context,\n openai,\n savePath,\n disableTranslation,\n model,\n}: Configuration) => {\n if (disableTranslation) {\n return\n }\n\n for (const namespace of namespaces) {\n const defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n const localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n const translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model,\n })\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n // Save the updated translations\n writeLocalesFile(savePath, locale, namespace, updatedLocaleKeys)\n console.log(\n `✓ Translated and saved missing keys for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n}\n\nexport class TranslationError extends Error {\n constructor(\n message: string,\n public locale?: string,\n public namespace?: string,\n public cause?: Error,\n ) {\n super(message)\n this.name = \"TranslationError\"\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport { getMissingKeys } from \"../lib/utils\"\n\nexport const checkMissing = async (config: Configuration) => {\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length > 0) {\n console.error(\"Error: Missing translations found!\")\n process.exit(1)\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nconst getKeyToReplace = async (keys: Record<string, string>) => {\n const keyToReplace = await getTextInput(\n \"Enter the key to replace the translation for: \",\n )\n\n if (!keys[keyToReplace]) {\n console.log(`The key \"${keyToReplace}\" does not exist.`)\n return await getKeyToReplace(keys)\n }\n\n console.log(`The key \"${keyToReplace}\" exists.`)\n return keyToReplace\n}\n\nexport const replaceTranslation = async (\n config: Configuration,\n key?: string,\n) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n defaultNamespace,\n namespaces,\n locales,\n globPatterns,\n context,\n openai,\n } = config\n\n const keys = await loadLocalesFile(\n config.loadPath,\n config.defaultLocale,\n config.defaultNamespace,\n )\n\n let keyToReplace: string\n\n if (key) {\n if (keys[key]) {\n keyToReplace = key\n console.log(`The key \"${keyToReplace}\" exists.`)\n } else {\n console.log(`The key \"${key}\" does not exist.`)\n keyToReplace = await getKeyToReplace(keys)\n }\n } else {\n keyToReplace = await getKeyToReplace(keys)\n }\n\n console.log(\n `The current translation in ${defaultLocale} for \"${keyToReplace}\" is \"${keys[keyToReplace]}\".`,\n )\n\n const newTranslation = await getTextInput(\"Enter the new translation: \")\n\n for (const locale of locales) {\n let newValue = \"\"\n if (locale === defaultLocale) {\n newValue = newTranslation\n } else {\n const translation = await translateKey({\n context,\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n object: {\n [keyToReplace]: newTranslation,\n },\n openai,\n model: config.model,\n })\n\n newValue = translation[keyToReplace]\n }\n\n const existingKeys = await loadLocalesFile(\n loadPath,\n locale,\n defaultNamespace,\n )\n\n existingKeys[keyToReplace] = newValue\n\n writeLocalesFile(savePath, locale, defaultNamespace, existingKeys)\n\n console.log(\n `The new translation for \"${keyToReplace}\" in ${locale} is \"${newValue}\".`,\n )\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n checkAllKeysExist,\n getMissingKeys,\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const translateMissing = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n disableTranslation,\n } = config\n\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length === 0) {\n console.log(\"No new keys found.\")\n\n await checkAllKeysExist(config)\n\n return\n }\n\n console.log(\n `${newKeys.length} keys are missing. Please provide the values for the following keys in ${defaultLocale}:`,\n )\n\n const newKeysWithDefaultLocale = []\n\n for (const newKey of newKeys) {\n const answer = await getTextInput(newKey.key)\n\n newKeysWithDefaultLocale.push({\n key: newKey.key,\n namespace: newKey.namespace,\n value: answer,\n })\n }\n\n const newKeysObject = newKeysWithDefaultLocale.reduce((prev, next) => {\n prev[next.key] = next.value\n\n return prev\n }, {})\n\n const allLocales = disableTranslation ? [defaultLocale] : locales\n\n for (const locale of allLocales) {\n let translatedValues = {}\n\n if (locale === defaultLocale) {\n translatedValues = newKeysObject\n } else {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: newKeysObject,\n openai,\n model: config.model,\n })\n }\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(loadPath, locale, namespace)\n\n const relevantKeys = newKeysWithDefaultLocale.filter(\n (key) => key.namespace === namespace,\n )\n\n if (relevantKeys.length === 0) {\n continue\n }\n\n for (const key of relevantKeys) {\n existingKeys[key.key] = translatedValues[key.key]\n }\n\n writeLocalesFile(savePath, locale, namespace, existingKeys)\n }\n }\n\n await checkAllKeysExist(config)\n\n console.log(`Successfully translated ${newKeys.length} keys.`)\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n TranslationError,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const syncLocales = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n } = config\n\n try {\n for (const namespace of namespaces) {\n let defaultLocaleKeys: Record<string, string>\n\n try {\n defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to load default locale file for namespace \"${namespace}\"`,\n defaultLocale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n let localeKeys: Record<string, string>\n try {\n localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n } catch (error) {\n console.warn(\n `Warning: Could not load locale file for ${locale} (namespace: ${namespace}). Creating new file.`,\n )\n localeKeys = {}\n }\n\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n let translatedValues: Record<string, string>\n try {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model: config.model,\n })\n } catch (error) {\n throw new TranslationError(\n `Failed to translate keys for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n try {\n await writeLocalesFile(\n savePath,\n locale,\n namespace,\n updatedLocaleKeys,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to save translations for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n console.log(\n `Successfully translated and saved ${Object.keys(missingKeys).length} keys for ${locale} (namespace: ${namespace})`,\n )\n } else {\n console.log(\n `No missing keys found for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n } catch (error) {\n if (error instanceof TranslationError) {\n throw error\n }\n throw new TranslationError(\n \"An unexpected error occurred during translation\",\n undefined,\n undefined,\n error instanceof Error ? error : undefined,\n )\n }\n}\n","import { Command } from \"commander\"\nimport dotenv from \"dotenv\"\nimport OpenAI from \"openai\"\nimport { checkMissing } from \"./commands/check-missing\"\nimport { replaceTranslation } from \"./commands/replace\"\nimport { translateMissing } from \"./commands/scan\"\nimport { syncLocales } from \"./commands/sync-locales\"\nimport type { CommandType, Configuration } from \"./lib/types\"\nimport { loadConfig } from \"./lib/utils\"\n\n// Only run CLI initialization when this file is executed directly\n\nconst program = new Command()\n\nprogram\n .name(\"i18n-magic\")\n .description(\n \"CLI to help you manage your locales JSON with translations, replacements, etc. with OpenAI.\",\n )\n .version(\"0.2.0\")\n .option(\"-c, --config <path>\", \"path to config file\")\n .option(\"-e, --env <path>\", \"path to .env file\")\n\nconst commands: CommandType[] = [\n {\n name: \"scan\",\n description:\n \"Scan for missing translations, get prompted for each, translate it to the other locales and save it to the JSON file.\",\n action: translateMissing,\n },\n {\n name: \"replace\",\n description:\n \"Replace a translation based on the key, and translate it to the other locales and save it to the JSON file.\",\n action: replaceTranslation,\n },\n {\n name: \"check-missing\",\n description:\n \"Check if there are any missing translations. Useful for a CI/CD pipeline or husky hook.\",\n action: checkMissing,\n },\n {\n name: \"sync\",\n description:\n \"Sync the translations from the default locale to the other locales. Useful for a CI/CD pipeline or husky hook.\",\n action: syncLocales,\n },\n]\n\nfor (const command of commands) {\n const cmd = program.command(command.name).description(command.description)\n\n // Add key option to replace command\n if (command.name === \"replace\") {\n cmd\n .option(\"-k, --key <key>\", \"translation key to replace\")\n .allowExcessArguments(true)\n .argument(\"[key]\", \"translation key to replace\")\n }\n\n cmd.action(async (arg, options) => {\n const res = dotenv.config({\n path: program.opts().env || \".env\",\n })\n\n const config: Configuration = await loadConfig({\n configPath: program.opts().config,\n })\n\n const isGemini = (config.model as string)?.includes(\"gemini\")\n\n // Get API key from environment or config\n const openaiKey = res.parsed.OPENAI_API_KEY || config.OPENAI_API_KEY\n const geminiKey = res.parsed.GEMINI_API_KEY || config.GEMINI_API_KEY\n\n // Select appropriate key based on model type\n const key = isGemini ? geminiKey : openaiKey\n\n if (!key) {\n const keyType = isGemini ? \"GEMINI_API_KEY\" : \"OPENAI_API_KEY\"\n console.error(\n `Please provide a${isGemini ? \" Gemini\" : \"n OpenAI\"} API key in your .env file or config, called ${keyType}.`,\n )\n process.exit(1)\n }\n\n const openai = new OpenAI({\n apiKey: key,\n ...(isGemini && {\n baseURL: \"https://generativelanguage.googleapis.com/v1beta/openai/\",\n }),\n })\n\n // For replace command, check for key in argument or option\n if (command.name === \"replace\") {\n // If key is provided as positional argument, use that first\n const keyToUse = typeof arg === \"string\" ? arg : options.key\n command.action({ ...config, openai }, keyToUse)\n } else {\n command.action({ ...config, openai })\n }\n })\n}\n\nprogram.parse(process.argv)\n"],"names":["languages","label","name","value","loadConfig","_ref","_ref$configPath","configPath","filePath","path","join","process","cwd","fs","existsSync","console","error","exit","config","require","removeDuplicatesFromArray","arr","filter","item","index","indexOf","translateKey","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","inputLanguage","context","object","openai","outputLanguage","model","entries","chunks","i","result","existingInput","existingOutput","input","output","_i","_chunks","chunk","chunkObject","completion","translatedChunk","wrap","_callee$","_context","prev","next","Object","length","push","slice","find","l","fromEntries","beta","chat","completions","parse","messages","content","role","JSON","stringify","data","response_format","type","sent","choices","message","_extends","Promise","resolve","setTimeout","abrupt","stop","_x","apply","arguments","loadLocalesFile","_ref4","_callee2","loadPath","locale","namespace","resolvedPath","json","_callee2$","_context2","replace","readFileSync","_x2","_x3","_x4","writeLocalesFile","_ref5","_callee3","savePath","resolvedSavePath","_callee3$","_context3","writeFileSync","_x5","_x6","_x7","_x8","getPureKey","key","isDefault","splitted","split","getMissingKeys","_ref7","_callee4","_ref6","globPatterns","namespaces","defaultNamespace","defaultLocale","parser","files","keys","_iterator","_step","file","uniqueKeys","newKeys","_iterator2","_step2","existingKeys","_iterator3","_step3","pureKey","_callee4$","_context4","Parser","nsSeparator","keySeparator","glob","concat","_createForOfIteratorHelperLoose","done","parseFuncFromString","list","log","_x9","getTextInput","_ref8","_callee5","prompt","_callee5$","_context5","prompts","onState","state","aborted","nextTick","_x10","checkAllKeysExist","_ref10","_callee6","_ref9","locales","disableTranslation","_iterator4","_step4","defaultLocaleKeys","_iterator5","_step5","localeKeys","missingKeys","_i2","_Object$entries","_Object$entries$_i","translatedValues","updatedLocaleKeys","_callee6$","_context6","_x11","TranslationError","_Error","cause","_this","call","_inheritsLoose","_wrapNativeSuper","Error","checkMissing","getKeyToReplace","keyToReplace","replaceTranslation","newTranslation","newValue","_object","translation","translateMissing","newKeysWithDefaultLocale","newKey","answer","newKeysObject","allLocales","_loop","reduce","relevantKeys","_loop$","delegateYield","t0","syncLocales","undefined","t1","warn","t2","t3","t4","program","Command","description","version","option","commands","action","command","_commands","cmd","allowExcessArguments","argument","arg","options","_config$model","res","isGemini","openaiKey","geminiKey","keyType","keyToUse","dotenv","opts","env","includes","parsed","OPENAI_API_KEY","GEMINI_API_KEY","OpenAI","apiKey","baseURL","argv"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("commander"),t=require("dotenv"),n=require("openai"),r=require("fast-glob"),a=require("i18next-scanner"),o=require("node:fs"),i=require("node:path"),c=require("prompts");function s(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(s=function(){return!!e})()}function u(){u=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function f(e,t,n,r){var o=Object.create((t&&t.prototype instanceof m?t:m).prototype),i=new N(r||[]);return a(o,"_invoke",{value:P(e,n,i)}),o}function p(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=f;var h="suspendedStart",v="suspendedYield",d="executing",y="completed",g={};function m(){}function b(){}function x(){}var k={};l(k,i,(function(){return this}));var w=Object.getPrototypeOf,O=w&&w(w(T([])));O&&O!==n&&r.call(O,i)&&(k=O);var E=x.prototype=m.prototype=Object.create(k);function L(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function j(e,t){function n(a,o,i,c){var s=p(e[a],e,o);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&r.call(l,"__await")?t.resolve(l.__await).then((function(e){n("next",e,i,c)}),(function(e){n("throw",e,i,c)})):t.resolve(l).then((function(e){u.value=e,i(u)}),(function(e){return n("throw",e,i,c)}))}c(s.arg)}var o;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return o=o?o.then(a,a):a()}})}function P(t,n,r){var a=h;return function(o,i){if(a===d)throw Error("Generator is already running");if(a===y){if("throw"===o)throw i;return{value:e,done:!0}}for(r.method=o,r.arg=i;;){var c=r.delegate;if(c){var s=S(c,r);if(s){if(s===g)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===h)throw a=y,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=d;var u=p(t,n,r);if("normal"===u.type){if(a=r.done?y:v,u.arg===g)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(a=y,r.method="throw",r.arg=u.arg)}}}function S(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,S(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),g;var o=p(a,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,g;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function _(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function I(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(_,this),this.reset(!0)}function T(t){if(t||""===t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return o.next=o}}throw new TypeError(typeof t+" is not iterable")}return b.prototype=x,a(E,"constructor",{value:x,configurable:!0}),a(x,"constructor",{value:b,configurable:!0}),b.displayName=l(x,s,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===b||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,x):(e.__proto__=x,l(e,s,"GeneratorFunction")),e.prototype=Object.create(E),e},t.awrap=function(e){return{__await:e}},L(j.prototype),l(j.prototype,c,(function(){return this})),t.AsyncIterator=j,t.async=function(e,n,r,a,o){void 0===o&&(o=Promise);var i=new j(f(e,n,r,a),o);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},L(E),l(E,s,"Generator"),l(E,i,(function(){return this})),l(E,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=T,N.prototype={constructor:N,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(I),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],c=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(s&&u){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,g):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),I(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;I(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:T(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),g}},t}function l(e,t,n,r,a,o,i){try{var c=e[o](i),s=c.value}catch(e){return void n(e)}c.done?t(s):Promise.resolve(s).then(r,a)}function f(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){l(o,r,a,i,c,"next",e)}function c(e){l(o,r,a,i,c,"throw",e)}i(void 0)}))}}function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},h(e)}function v(e,t){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},v(e,t)}function d(e){var t="function"==typeof Map?new Map:void 0;return d=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(s())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var a=new(e.bind.apply(e,r));return n&&v(a,n.prototype),a}(e,arguments,h(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),v(n,e)},d(e)}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function g(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var m=[{label:"Deutsch",name:"German",value:"de"},{label:"English",name:"English",value:"en"},{label:"Español",name:"Spanish",value:"es"},{label:"Français",name:"French",value:"fr"},{label:"Dansk",name:"Danish",value:"dk"},{label:"中文",name:"Chinese",value:"cn"},{label:"Русский",name:"Russian",value:"ru"},{label:"Italiano",name:"Italian",value:"it"},{label:"Nederlands",name:"Dutch",value:"nl"},{label:"Português",name:"Portuguese",value:"pt"},{label:"Türkçe",name:"Turkish",value:"tr"},{label:"Polski",name:"Polish",value:"pl"},{label:"Українська",name:"Ukrainian",value:"ua"},{label:"Suomi",name:"Finnish",value:"fi"},{label:"Norsk",name:"Norwegian",value:"no"},{label:"Svenska",name:"Swedish",value:"sv"},{label:"Čeština",name:"Czech",value:"cz"},{label:"Ελληνικά",name:"Greek",value:"gr"},{label:"日本語",name:"Japanese",value:"jp"},{label:"한국어",name:"Korean",value:"kr"},{label:"Română",name:"Romanian",value:"ro"},{label:"Hrvatski",name:"Croatian",value:"hr"},{label:"Magyar",name:"Hungarian",value:"hu"},{label:"Slovensky",name:"Slovak",value:"sk"},{label:"हिन्दी",name:"Hindi",value:"hi"},{label:"தமிழ்",name:"Tamil",value:"ta"},{label:"Bahasa Indonesia",name:"Indonesian",value:"id"},{label:"Tiếng Việt",name:"Vietnamese",value:"vn"}],b=function(e){var t=e.configPath,n=void 0===t?"i18n-magic.js":t,r=i.join(process.cwd(),n);o.existsSync(r)||(console.error("Config file does not exist:",r),process.exit(1));try{return require(r)}catch(e){console.error("Error while loading config:",e),process.exit(1)}};function x(e){return e.filter((function(t,n){return e.indexOf(t)===n}))}var k=function(){var e=f(u().mark((function e(t){var n,r,a,o,i,c,s,l,f,h,v,d,y,g,b,x,k;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(n=t.inputLanguage,r=t.context,a=t.openai,o=t.outputLanguage,i=t.model,c=Object.entries(t.object),s=[],l=0;l<c.length;l+=100)s.push(c.slice(l,l+100));f={},h=m.find((function(e){return e.value===n})),v=m.find((function(e){return e.value===o})),d=(null==h?void 0:h.label)||n,y=(null==v?void 0:v.label)||o,g=0,b=s;case 10:if(!(g<b.length)){e.next=23;break}return x=Object.fromEntries(b[g]),e.next=15,a.beta.chat.completions.parse({model:i,messages:[{content:"You are a bot that translates the values of a locales JSON. "+(r?'The user provided some additional context or guidelines about what to fill in the blanks: "'+r+'". ':"")+'The user provides you a JSON with a field named "inputLanguage", which defines the language the values of the JSON are defined in. It also has a field named "outputLanguage", which defines the language you should translate the values to. The last field is named "data", which includes the object with the values to translate. The keys of the values should never be changed. You output only a JSON, which has the same keys as the input, but with translated values. I give you an example input: {"inputLanguage": "English", outputLanguage: "German", "keys": {"hello": "Hello", "world": "World"}}. The output should be {"hello": "Hallo", "world": "Welt"}.',role:"system"},{content:JSON.stringify({inputLanguage:d,outputLanguage:y,data:x}),role:"user"}],response_format:{type:"json_object"}});case 15:return k=JSON.parse(e.sent.choices[0].message.content),f=p({},f,k),e.next=20,new Promise((function(e){return setTimeout(e,100)}));case 20:g++,e.next=10;break;case 23:return e.abrupt("return",f);case 24:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),w=function(){var e=f(u().mark((function e(t,n,r){var a,i,c;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("string"!=typeof t){e.next=5;break}return a=t.replace("{{lng}}",n).replace("{{ns}}",r),i=o.readFileSync(a,"utf-8"),c=JSON.parse(i),e.abrupt("return",c);case 5:return e.abrupt("return",t(n,r));case 6:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}(),O=function(){var e=f(u().mark((function e(t,n,r,a){var i;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("string"!=typeof t){e.next=4;break}return i=t.replace("{{lng}}",n).replace("{{ns}}",r),o.writeFileSync(i,JSON.stringify(a,null,2)),e.abrupt("return");case 4:return e.next=6,t(n,r,a);case 6:case"end":return e.stop()}}),e)})));return function(t,n,r,a){return e.apply(this,arguments)}}(),E=function(e,t,n){var r=e.split(":");return 1===r.length?n?e:null:r[0]===t?r[1]:null},L=function(){var e=f(u().mark((function e(t){var n,i,c,s,l,f,p,h,v,d,y,m,b,k,O,L,j,P,S;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.globPatterns,i=t.namespaces,c=t.defaultNamespace,s=t.defaultLocale,l=t.loadPath,f=new a.Parser({nsSeparator:!1,keySeparator:!1}),e.next=4,r([].concat(n,["!**/node_modules/**"]));case 4:for(p=[],h=g(e.sent);!(v=h()).done;)d=o.readFileSync(v.value,"utf-8"),f.parseFuncFromString(d,{list:["t"]},(function(e){p.push(e)}));y=x(p),m=[],b=g(i);case 10:if((k=b()).done){e.next=27;break}return O=k.value,e.next=14,w(l,s,O);case 14:L=e.sent,console.log(Object.keys(L).length,"existing keys"),j=g(y);case 17:if((P=j()).done){e.next=25;break}if(S=E(P.value,O,O===c)){e.next=22;break}return e.abrupt("continue",23);case 22:L[S]||m.push({key:S,namespace:O});case 23:e.next=17;break;case 25:e.next=10;break;case 27:return e.abrupt("return",m);case 28:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),j=function(){var e=f(u().mark((function e(t){return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c({name:"value",type:"text",message:t,onState:function(e){e.aborted&&process.nextTick((function(){process.exit(0)}))}});case 2:return e.abrupt("return",e.sent.value);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),P=function(){var e=f(u().mark((function e(t){var n,r,a,o,i,c,s,l,f,h,v,d,y,m,b,x,E,L,j,P,S,_,I;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.namespaces,r=t.defaultLocale,a=t.loadPath,o=t.locales,i=t.context,c=t.openai,s=t.savePath,l=t.model,!t.disableTranslation){e.next=3;break}return e.abrupt("return");case 3:f=g(n);case 4:if((h=f()).done){e.next=31;break}return v=h.value,e.next=8,w(a,r,v);case 8:d=e.sent,y=g(o);case 10:if((m=y()).done){e.next=29;break}if((b=m.value)!==r){e.next=14;break}return e.abrupt("continue",27);case 14:return e.next=16,w(a,b,v);case 16:for(x=e.sent,E={},L=0,j=Object.entries(d);L<j.length;L++)_=(P=j[L])[1],x[S=P[0]]||(E[S]=_);if(!(Object.keys(E).length>0)){e.next=27;break}return console.log("Found "+Object.keys(E).length+" missing keys in "+b+" (namespace: "+v+")"),e.next=23,k({inputLanguage:r,outputLanguage:b,context:i,object:E,openai:c,model:l});case 23:I=p({},x,e.sent),O(s,b,v,I),console.log("✓ Translated and saved missing keys for "+b+" (namespace: "+v+")");case 27:e.next=10;break;case 29:e.next=4;break;case 31:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),S=function(e){function t(t,n,r,a){var o;return(o=e.call(this,t)||this).locale=void 0,o.namespace=void 0,o.cause=void 0,o.locale=n,o.namespace=r,o.cause=a,o.name="TranslationError",o}var n,r;return r=e,(n=t).prototype=Object.create(r.prototype),n.prototype.constructor=n,v(n,r),t}(d(Error)),_=function(){var e=f(u().mark((function e(t){return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,L(t);case 2:e.sent.length>0&&(console.error("Error: Missing translations found!"),process.exit(1));case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),I=function(){var e=f(u().mark((function e(t){var n;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,j("Enter the key to replace the translation for: ");case 2:if(t[n=e.sent]){e.next=8;break}return console.log('The key "'+n+'" does not exist.'),e.next=7,I(t);case 7:return e.abrupt("return",e.sent);case 8:return console.log('The key "'+n+'" exists.'),e.abrupt("return",n);case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),N=function(){var e=f(u().mark((function e(t,n){var r,a,o,i,c,s,l,f,p,h,v,d,y,m,b,x;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.loadPath,a=t.savePath,o=t.defaultLocale,i=t.defaultNamespace,c=t.locales,s=t.context,l=t.openai,e.next=3,w(t.loadPath,t.defaultLocale,t.defaultNamespace);case 3:if(f=e.sent,!n){e.next=16;break}if(!f[n]){e.next=10;break}p=n,console.log('The key "'+p+'" exists.'),e.next=14;break;case 10:return console.log('The key "'+n+'" does not exist.'),e.next=13,I(f);case 13:p=e.sent;case 14:e.next=19;break;case 16:return e.next=18,I(f);case 18:p=e.sent;case 19:return console.log("The current translation in "+o+' for "'+p+'" is "'+f[p]+'".'),e.next=22,j("Enter the new translation: ");case 22:h=e.sent,v=g(c);case 24:if((d=v()).done){e.next=43;break}if(m="",(y=d.value)!==o){e.next=31;break}m=h,e.next=35;break;case 31:return e.next=33,k({context:s,inputLanguage:o,outputLanguage:y,object:(b={},b[p]=h,b),openai:l,model:t.model});case 33:m=e.sent[p];case 35:return e.next=37,w(r,y,i);case 37:(x=e.sent)[p]=m,O(a,y,i,x),console.log('The new translation for "'+p+'" in '+y+' is "'+m+'".');case 41:e.next=24;break;case 43:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),T=function(){var e=f(u().mark((function e(t){var n,r,a,o,i,c,s,l,f,p,h,v,d,y,m,b,x,E,S,_,I;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.loadPath,r=t.savePath,a=t.defaultLocale,o=t.namespaces,i=t.locales,c=t.context,s=t.openai,l=t.disableTranslation,e.next=3,L(t);case 3:if(0!==(f=e.sent).length){e.next=9;break}return console.log("No new keys found."),e.next=8,P(t);case 8:return e.abrupt("return");case 9:console.log(f.length+" keys are missing. Please provide the values for the following keys in "+a+":"),p=[],h=g(f);case 12:if((v=h()).done){e.next=20;break}return d=v.value,e.next=16,j(d.key);case 16:p.push({key:d.key,namespace:d.namespace,value:e.sent});case 18:e.next=12;break;case 20:y=p.reduce((function(e,t){return e[t.key]=t.value,e}),{}),m=g(l?[a]:i);case 23:if((b=m()).done){e.next=43;break}if(E={},(x=b.value)!==a){e.next=30;break}E=y,e.next=33;break;case 30:return e.next=32,k({inputLanguage:a,outputLanguage:x,context:c,object:y,openai:s,model:t.model});case 32:E=e.sent;case 33:S=u().mark((function e(){var t,a,o,i,c,s;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=I.value,e.next=3,w(n,x,t);case 3:if(a=e.sent,o=p.filter((function(e){return e.namespace===t})),0!==o.length){e.next=7;break}return e.abrupt("return",1);case 7:for(i=g(o);!(c=i()).done;)a[(s=c.value).key]=E[s.key];O(r,x,t,a);case 9:case"end":return e.stop()}}),e)})),_=g(o);case 35:if((I=_()).done){e.next=41;break}return e.delegateYield(S(),"t0",37);case 37:if(!e.t0){e.next=39;break}return e.abrupt("continue",39);case 39:e.next=35;break;case 41:e.next=23;break;case 43:return e.next=45,P(t);case 45:console.log("Successfully translated "+f.length+" keys.");case 46:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),A=function(){var e=f(u().mark((function e(t){var n,r,a,o,i,c,s,l,f,h,v,d,y,m,b,x,E,L,j,P,_,I,N;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.loadPath,r=t.savePath,a=t.defaultLocale,o=t.namespaces,i=t.locales,c=t.context,s=t.openai,e.prev=1,l=g(o);case 3:if((f=l()).done){e.next=62;break}return h=f.value,v=void 0,e.prev=6,e.next=9,w(n,a,h);case 9:v=e.sent,e.next=15;break;case 12:throw e.prev=12,e.t0=e.catch(6),new S('Failed to load default locale file for namespace "'+h+'"',a,h,e.t0 instanceof Error?e.t0:void 0);case 15:d=g(i);case 16:if((y=d()).done){e.next=60;break}if((m=y.value)!==a){e.next=20;break}return e.abrupt("continue",58);case 20:return b=void 0,e.prev=21,e.next=24,w(n,m,h);case 24:b=e.sent,e.next=31;break;case 27:e.prev=27,e.t1=e.catch(21),console.warn("Warning: Could not load locale file for "+m+" (namespace: "+h+"). Creating new file."),b={};case 31:for(x={},E=0,L=Object.entries(v);E<L.length;E++)_=(j=L[E])[1],b[P=j[0]]||(x[P]=_);if(!(Object.keys(x).length>0)){e.next=57;break}return console.log("Found "+Object.keys(x).length+" missing keys in "+m+" (namespace: "+h+")"),I=void 0,e.prev=36,e.next=39,k({inputLanguage:a,outputLanguage:m,context:c,object:x,openai:s,model:t.model});case 39:I=e.sent,e.next=45;break;case 42:throw e.prev=42,e.t2=e.catch(36),new S('Failed to translate keys for locale "'+m+'" (namespace: '+h+")",m,h,e.t2 instanceof Error?e.t2:void 0);case 45:return N=p({},b,I),e.prev=46,e.next=49,O(r,m,h,N);case 49:e.next=54;break;case 51:throw e.prev=51,e.t3=e.catch(46),new S('Failed to save translations for locale "'+m+'" (namespace: '+h+")",m,h,e.t3 instanceof Error?e.t3:void 0);case 54:console.log("Successfully translated and saved "+Object.keys(x).length+" keys for "+m+" (namespace: "+h+")"),e.next=58;break;case 57:console.log("No missing keys found for "+m+" (namespace: "+h+")");case 58:e.next=16;break;case 60:e.next=3;break;case 62:e.next=69;break;case 64:if(e.prev=64,e.t4=e.catch(1),!(e.t4 instanceof S)){e.next=68;break}throw e.t4;case 68:throw new S("An unexpected error occurred during translation",void 0,void 0,e.t4 instanceof Error?e.t4:void 0);case 69:case"end":return e.stop()}}),e,null,[[1,64],[6,12],[21,27],[36,42],[46,51]])})));return function(t){return e.apply(this,arguments)}}(),F=new e.Command;F.name("i18n-magic").description("CLI to help you manage your locales JSON with translations, replacements, etc. with OpenAI.").version("0.2.0").option("-c, --config <path>","path to config file").option("-e, --env <path>","path to .env file");for(var G=function(){var e=J[C],r=F.command(e.name).description(e.description);"replace"===e.name&&r.option("-k, --key <key>","translation key to replace"),r.action(function(){var r=f(u().mark((function r(a){var o,i,c,s,l,f,h,v;return u().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return i=t.config({path:F.opts().env||".env"}),r.next=3,b({configPath:F.opts().config});case 3:s=null==(o=(c=r.sent).model)?void 0:o.includes("gemini"),l=i.parsed.OPENAI_API_KEY||c.OPENAI_API_KEY,f=i.parsed.GEMINI_API_KEY||c.GEMINI_API_KEY,(h=s?f:l)||(console.error("Please provide a"+(s?" Gemini":"n OpenAI")+" API key in your .env file or config, called "+(s?"GEMINI_API_KEY":"OPENAI_API_KEY")+"."),process.exit(1)),v=new n(p({apiKey:h},s&&{baseURL:"https://generativelanguage.googleapis.com/v1beta/openai/"})),"replace"===e.name&&a.key?e.action(p({},c,{openai:v}),a.key):e.action(p({},c,{openai:v}));case 11:case"end":return r.stop()}}),r)})));return function(e){return r.apply(this,arguments)}}())},C=0,J=[{name:"scan",description:"Scan for missing translations, get prompted for each, translate it to the other locales and save it to the JSON file.",action:T},{name:"replace",description:"Replace a translation based on the key, and translate it to the other locales and save it to the JSON file.",action:N},{name:"check-missing",description:"Check if there are any missing translations. Useful for a CI/CD pipeline or husky hook.",action:_},{name:"sync",description:"Sync the translations from the default locale to the other locales. Useful for a CI/CD pipeline or husky hook.",action:A}];C<J.length;C++)G();F.parse(process.argv);
1
+ "use strict";var e=require("commander"),t=require("dotenv"),n=require("openai"),r=require("fast-glob"),a=require("i18next-scanner"),o=require("node:fs"),i=require("node:path"),c=require("prompts");function s(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(s=function(){return!!e})()}function u(){u=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function f(e,t,n,r){var o=Object.create((t&&t.prototype instanceof m?t:m).prototype),i=new N(r||[]);return a(o,"_invoke",{value:P(e,n,i)}),o}function p(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=f;var h="suspendedStart",v="suspendedYield",d="executing",g="completed",y={};function m(){}function b(){}function x(){}var k={};l(k,i,(function(){return this}));var w=Object.getPrototypeOf,O=w&&w(w(T([])));O&&O!==n&&r.call(O,i)&&(k=O);var E=x.prototype=m.prototype=Object.create(k);function L(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function j(e,t){function n(a,o,i,c){var s=p(e[a],e,o);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&r.call(l,"__await")?t.resolve(l.__await).then((function(e){n("next",e,i,c)}),(function(e){n("throw",e,i,c)})):t.resolve(l).then((function(e){u.value=e,i(u)}),(function(e){return n("throw",e,i,c)}))}c(s.arg)}var o;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return o=o?o.then(a,a):a()}})}function P(t,n,r){var a=h;return function(o,i){if(a===d)throw Error("Generator is already running");if(a===g){if("throw"===o)throw i;return{value:e,done:!0}}for(r.method=o,r.arg=i;;){var c=r.delegate;if(c){var s=S(c,r);if(s){if(s===y)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===h)throw a=g,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=d;var u=p(t,n,r);if("normal"===u.type){if(a=r.done?g:v,u.arg===y)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(a=g,r.method="throw",r.arg=u.arg)}}}function S(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,S(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),y;var o=p(a,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,y;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,y):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,y)}function _(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function I(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(_,this),this.reset(!0)}function T(t){if(t||""===t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return o.next=o}}throw new TypeError(typeof t+" is not iterable")}return b.prototype=x,a(E,"constructor",{value:x,configurable:!0}),a(x,"constructor",{value:b,configurable:!0}),b.displayName=l(x,s,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===b||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,x):(e.__proto__=x,l(e,s,"GeneratorFunction")),e.prototype=Object.create(E),e},t.awrap=function(e){return{__await:e}},L(j.prototype),l(j.prototype,c,(function(){return this})),t.AsyncIterator=j,t.async=function(e,n,r,a,o){void 0===o&&(o=Promise);var i=new j(f(e,n,r,a),o);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},L(E),l(E,s,"Generator"),l(E,i,(function(){return this})),l(E,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=T,N.prototype={constructor:N,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(I),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],c=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(s&&u){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,y):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),y},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),I(n),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;I(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:T(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),y}},t}function l(e,t,n,r,a,o,i){try{var c=e[o](i),s=c.value}catch(e){return void n(e)}c.done?t(s):Promise.resolve(s).then(r,a)}function f(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){l(o,r,a,i,c,"next",e)}function c(e){l(o,r,a,i,c,"throw",e)}i(void 0)}))}}function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},h(e)}function v(e,t){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},v(e,t)}function d(e){var t="function"==typeof Map?new Map:void 0;return d=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(s())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var a=new(e.bind.apply(e,r));return n&&v(a,n.prototype),a}(e,arguments,h(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),v(n,e)},d(e)}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function y(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return g(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var m=[{label:"Deutsch",name:"German",value:"de"},{label:"English",name:"English",value:"en"},{label:"Español",name:"Spanish",value:"es"},{label:"Français",name:"French",value:"fr"},{label:"Dansk",name:"Danish",value:"dk"},{label:"中文",name:"Chinese",value:"cn"},{label:"Русский",name:"Russian",value:"ru"},{label:"Italiano",name:"Italian",value:"it"},{label:"Nederlands",name:"Dutch",value:"nl"},{label:"Português",name:"Portuguese",value:"pt"},{label:"Türkçe",name:"Turkish",value:"tr"},{label:"Polski",name:"Polish",value:"pl"},{label:"Українська",name:"Ukrainian",value:"ua"},{label:"Suomi",name:"Finnish",value:"fi"},{label:"Norsk",name:"Norwegian",value:"no"},{label:"Svenska",name:"Swedish",value:"sv"},{label:"Čeština",name:"Czech",value:"cz"},{label:"Ελληνικά",name:"Greek",value:"gr"},{label:"日本語",name:"Japanese",value:"jp"},{label:"한국어",name:"Korean",value:"kr"},{label:"Română",name:"Romanian",value:"ro"},{label:"Hrvatski",name:"Croatian",value:"hr"},{label:"Magyar",name:"Hungarian",value:"hu"},{label:"Slovensky",name:"Slovak",value:"sk"},{label:"हिन्दी",name:"Hindi",value:"hi"},{label:"தமிழ்",name:"Tamil",value:"ta"},{label:"Bahasa Indonesia",name:"Indonesian",value:"id"},{label:"Tiếng Việt",name:"Vietnamese",value:"vn"}],b=function(e){var t=e.configPath,n=void 0===t?"i18n-magic.js":t,r=i.join(process.cwd(),n);o.existsSync(r)||(console.error("Config file does not exist:",r),process.exit(1));try{return require(r)}catch(e){console.error("Error while loading config:",e),process.exit(1)}};function x(e){return e.filter((function(t,n){return e.indexOf(t)===n}))}var k=function(){var e=f(u().mark((function e(t){var n,r,a,o,i,c,s,l,f,h,v,d,g,y,b,x,k;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(n=t.inputLanguage,r=t.context,a=t.openai,o=t.outputLanguage,i=t.model,c=Object.entries(t.object),s=[],l=0;l<c.length;l+=100)s.push(c.slice(l,l+100));f={},h=m.find((function(e){return e.value===n})),v=m.find((function(e){return e.value===o})),d=(null==h?void 0:h.label)||n,g=(null==v?void 0:v.label)||o,y=0,b=s;case 10:if(!(y<b.length)){e.next=23;break}return x=Object.fromEntries(b[y]),e.next=15,a.beta.chat.completions.parse({model:i,messages:[{content:"You are a bot that translates the values of a locales JSON. "+(r?'The user provided some additional context or guidelines about what to fill in the blanks: "'+r+'". ':"")+'The user provides you a JSON with a field named "inputLanguage", which defines the language the values of the JSON are defined in. It also has a field named "outputLanguage", which defines the language you should translate the values to. The last field is named "data", which includes the object with the values to translate. The keys of the values should never be changed. You output only a JSON, which has the same keys as the input, but with translated values. I give you an example input: {"inputLanguage": "English", outputLanguage: "German", "keys": {"hello": "Hello", "world": "World"}}. The output should be {"hello": "Hallo", "world": "Welt"}.',role:"system"},{content:JSON.stringify({inputLanguage:d,outputLanguage:g,data:x}),role:"user"}],response_format:{type:"json_object"}});case 15:return k=JSON.parse(e.sent.choices[0].message.content),f=p({},f,k),e.next=20,new Promise((function(e){return setTimeout(e,100)}));case 20:y++,e.next=10;break;case 23:return e.abrupt("return",f);case 24:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),w=function(){var e=f(u().mark((function e(t,n,r){var a,i,c;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("string"!=typeof t){e.next=5;break}return a=t.replace("{{lng}}",n).replace("{{ns}}",r),i=o.readFileSync(a,"utf-8"),c=JSON.parse(i),e.abrupt("return",c);case 5:return e.abrupt("return",t(n,r));case 6:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}(),O=function(){var e=f(u().mark((function e(t,n,r,a){var i;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("string"!=typeof t){e.next=4;break}return i=t.replace("{{lng}}",n).replace("{{ns}}",r),o.writeFileSync(i,JSON.stringify(a,null,2)),e.abrupt("return");case 4:return e.next=6,t(n,r,a);case 6:case"end":return e.stop()}}),e)})));return function(t,n,r,a){return e.apply(this,arguments)}}(),E=function(e,t,n){var r=e.split(":");return 1===r.length?n?e:null:r[0]===t?r[1]:null},L=function(){var e=f(u().mark((function e(t){var n,i,c,s,l,f,p,h,v,d,g,m,b,k,O,L,j,P,S;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.globPatterns,i=t.namespaces,c=t.defaultNamespace,s=t.defaultLocale,l=t.loadPath,f=new a.Parser({nsSeparator:!1,keySeparator:!1}),e.next=4,r([].concat(n,["!**/node_modules/**"]));case 4:for(p=[],h=y(e.sent);!(v=h()).done;)d=o.readFileSync(v.value,"utf-8"),f.parseFuncFromString(d,{list:["t"]},(function(e){p.push(e)}));g=x(p),m=[],b=y(i);case 10:if((k=b()).done){e.next=27;break}return O=k.value,e.next=14,w(l,s,O);case 14:L=e.sent,console.log(Object.keys(L).length,"existing keys"),j=y(g);case 17:if((P=j()).done){e.next=25;break}if(S=E(P.value,O,O===c)){e.next=22;break}return e.abrupt("continue",23);case 22:L[S]||m.push({key:S,namespace:O});case 23:e.next=17;break;case 25:e.next=10;break;case 27:return e.abrupt("return",m);case 28:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),j=function(){var e=f(u().mark((function e(t){return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c({name:"value",type:"text",message:t,onState:function(e){e.aborted&&process.nextTick((function(){process.exit(0)}))}});case 2:return e.abrupt("return",e.sent.value);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),P=function(){var e=f(u().mark((function e(t){var n,r,a,o,i,c,s,l,f,h,v,d,g,m,b,x,E,L,j,P,S,_,I;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.namespaces,r=t.defaultLocale,a=t.loadPath,o=t.locales,i=t.context,c=t.openai,s=t.savePath,l=t.model,!t.disableTranslation){e.next=3;break}return e.abrupt("return");case 3:f=y(n);case 4:if((h=f()).done){e.next=31;break}return v=h.value,e.next=8,w(a,r,v);case 8:d=e.sent,g=y(o);case 10:if((m=g()).done){e.next=29;break}if((b=m.value)!==r){e.next=14;break}return e.abrupt("continue",27);case 14:return e.next=16,w(a,b,v);case 16:for(x=e.sent,E={},L=0,j=Object.entries(d);L<j.length;L++)_=(P=j[L])[1],x[S=P[0]]||(E[S]=_);if(!(Object.keys(E).length>0)){e.next=27;break}return console.log("Found "+Object.keys(E).length+" missing keys in "+b+" (namespace: "+v+")"),e.next=23,k({inputLanguage:r,outputLanguage:b,context:i,object:E,openai:c,model:l});case 23:I=p({},x,e.sent),O(s,b,v,I),console.log("✓ Translated and saved missing keys for "+b+" (namespace: "+v+")");case 27:e.next=10;break;case 29:e.next=4;break;case 31:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),S=function(e){function t(t,n,r,a){var o;return(o=e.call(this,t)||this).locale=void 0,o.namespace=void 0,o.cause=void 0,o.locale=n,o.namespace=r,o.cause=a,o.name="TranslationError",o}var n,r;return r=e,(n=t).prototype=Object.create(r.prototype),n.prototype.constructor=n,v(n,r),t}(d(Error)),_=function(){var e=f(u().mark((function e(t){return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,L(t);case 2:e.sent.length>0&&(console.error("Error: Missing translations found!"),process.exit(1));case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),I=function(){var e=f(u().mark((function e(t){var n;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,j("Enter the key to replace the translation for: ");case 2:if(t[n=e.sent]){e.next=8;break}return console.log('The key "'+n+'" does not exist.'),e.next=7,I(t);case 7:return e.abrupt("return",e.sent);case 8:return console.log('The key "'+n+'" exists.'),e.abrupt("return",n);case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),N=function(){var e=f(u().mark((function e(t,n){var r,a,o,i,c,s,l,f,p,h,v,d,g,m,b,x;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.loadPath,a=t.savePath,o=t.defaultLocale,i=t.defaultNamespace,c=t.locales,s=t.context,l=t.openai,e.next=3,w(t.loadPath,t.defaultLocale,t.defaultNamespace);case 3:if(f=e.sent,!n){e.next=16;break}if(!f[n]){e.next=10;break}p=n,console.log('The key "'+p+'" exists.'),e.next=14;break;case 10:return console.log('The key "'+n+'" does not exist.'),e.next=13,I(f);case 13:p=e.sent;case 14:e.next=19;break;case 16:return e.next=18,I(f);case 18:p=e.sent;case 19:return console.log("The current translation in "+o+' for "'+p+'" is "'+f[p]+'".'),e.next=22,j("Enter the new translation: ");case 22:h=e.sent,v=y(c);case 24:if((d=v()).done){e.next=43;break}if(m="",(g=d.value)!==o){e.next=31;break}m=h,e.next=35;break;case 31:return e.next=33,k({context:s,inputLanguage:o,outputLanguage:g,object:(b={},b[p]=h,b),openai:l,model:t.model});case 33:m=e.sent[p];case 35:return e.next=37,w(r,g,i);case 37:(x=e.sent)[p]=m,O(a,g,i,x),console.log('The new translation for "'+p+'" in '+g+' is "'+m+'".');case 41:e.next=24;break;case 43:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),T=function(){var e=f(u().mark((function e(t){var n,r,a,o,i,c,s,l,f,p,h,v,d,g,m,b,x,E,S,_,I;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.loadPath,r=t.savePath,a=t.defaultLocale,o=t.namespaces,i=t.locales,c=t.context,s=t.openai,l=t.disableTranslation,e.next=3,L(t);case 3:if(0!==(f=e.sent).length){e.next=9;break}return console.log("No new keys found."),e.next=8,P(t);case 8:return e.abrupt("return");case 9:console.log(f.length+" keys are missing. Please provide the values for the following keys in "+a+":"),p=[],h=y(f);case 12:if((v=h()).done){e.next=20;break}return d=v.value,e.next=16,j(d.key);case 16:p.push({key:d.key,namespace:d.namespace,value:e.sent});case 18:e.next=12;break;case 20:g=p.reduce((function(e,t){return e[t.key]=t.value,e}),{}),m=y(l?[a]:i);case 23:if((b=m()).done){e.next=43;break}if(E={},(x=b.value)!==a){e.next=30;break}E=g,e.next=33;break;case 30:return e.next=32,k({inputLanguage:a,outputLanguage:x,context:c,object:g,openai:s,model:t.model});case 32:E=e.sent;case 33:S=u().mark((function e(){var t,a,o,i,c,s;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=I.value,e.next=3,w(n,x,t);case 3:if(a=e.sent,o=p.filter((function(e){return e.namespace===t})),0!==o.length){e.next=7;break}return e.abrupt("return",1);case 7:for(i=y(o);!(c=i()).done;)a[(s=c.value).key]=E[s.key];O(r,x,t,a);case 9:case"end":return e.stop()}}),e)})),_=y(o);case 35:if((I=_()).done){e.next=41;break}return e.delegateYield(S(),"t0",37);case 37:if(!e.t0){e.next=39;break}return e.abrupt("continue",39);case 39:e.next=35;break;case 41:e.next=23;break;case 43:return e.next=45,P(t);case 45:console.log("Successfully translated "+f.length+" keys.");case 46:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),A=function(){var e=f(u().mark((function e(t){var n,r,a,o,i,c,s,l,f,h,v,d,g,m,b,x,E,L,j,P,_,I,N;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.loadPath,r=t.savePath,a=t.defaultLocale,o=t.namespaces,i=t.locales,c=t.context,s=t.openai,e.prev=1,l=y(o);case 3:if((f=l()).done){e.next=62;break}return h=f.value,v=void 0,e.prev=6,e.next=9,w(n,a,h);case 9:v=e.sent,e.next=15;break;case 12:throw e.prev=12,e.t0=e.catch(6),new S('Failed to load default locale file for namespace "'+h+'"',a,h,e.t0 instanceof Error?e.t0:void 0);case 15:d=y(i);case 16:if((g=d()).done){e.next=60;break}if((m=g.value)!==a){e.next=20;break}return e.abrupt("continue",58);case 20:return b=void 0,e.prev=21,e.next=24,w(n,m,h);case 24:b=e.sent,e.next=31;break;case 27:e.prev=27,e.t1=e.catch(21),console.warn("Warning: Could not load locale file for "+m+" (namespace: "+h+"). Creating new file."),b={};case 31:for(x={},E=0,L=Object.entries(v);E<L.length;E++)_=(j=L[E])[1],b[P=j[0]]||(x[P]=_);if(!(Object.keys(x).length>0)){e.next=57;break}return console.log("Found "+Object.keys(x).length+" missing keys in "+m+" (namespace: "+h+")"),I=void 0,e.prev=36,e.next=39,k({inputLanguage:a,outputLanguage:m,context:c,object:x,openai:s,model:t.model});case 39:I=e.sent,e.next=45;break;case 42:throw e.prev=42,e.t2=e.catch(36),new S('Failed to translate keys for locale "'+m+'" (namespace: '+h+")",m,h,e.t2 instanceof Error?e.t2:void 0);case 45:return N=p({},b,I),e.prev=46,e.next=49,O(r,m,h,N);case 49:e.next=54;break;case 51:throw e.prev=51,e.t3=e.catch(46),new S('Failed to save translations for locale "'+m+'" (namespace: '+h+")",m,h,e.t3 instanceof Error?e.t3:void 0);case 54:console.log("Successfully translated and saved "+Object.keys(x).length+" keys for "+m+" (namespace: "+h+")"),e.next=58;break;case 57:console.log("No missing keys found for "+m+" (namespace: "+h+")");case 58:e.next=16;break;case 60:e.next=3;break;case 62:e.next=69;break;case 64:if(e.prev=64,e.t4=e.catch(1),!(e.t4 instanceof S)){e.next=68;break}throw e.t4;case 68:throw new S("An unexpected error occurred during translation",void 0,void 0,e.t4 instanceof Error?e.t4:void 0);case 69:case"end":return e.stop()}}),e,null,[[1,64],[6,12],[21,27],[36,42],[46,51]])})));return function(t){return e.apply(this,arguments)}}(),F=new e.Command;F.name("i18n-magic").description("CLI to help you manage your locales JSON with translations, replacements, etc. with OpenAI.").version("0.2.0").option("-c, --config <path>","path to config file").option("-e, --env <path>","path to .env file");for(var G=function(){var e=J[C],r=F.command(e.name).description(e.description);"replace"===e.name&&r.option("-k, --key <key>","translation key to replace").allowExcessArguments(!0).argument("[key]","translation key to replace"),r.action(function(){var r=f(u().mark((function r(a,o){var i,c,s,l,f,h,v,d,g;return u().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return c=t.config({path:F.opts().env||".env"}),r.next=3,b({configPath:F.opts().config});case 3:l=null==(i=(s=r.sent).model)?void 0:i.includes("gemini"),f=c.parsed.OPENAI_API_KEY||s.OPENAI_API_KEY,h=c.parsed.GEMINI_API_KEY||s.GEMINI_API_KEY,(v=l?h:f)||(console.error("Please provide a"+(l?" Gemini":"n OpenAI")+" API key in your .env file or config, called "+(l?"GEMINI_API_KEY":"OPENAI_API_KEY")+"."),process.exit(1)),d=new n(p({apiKey:v},l&&{baseURL:"https://generativelanguage.googleapis.com/v1beta/openai/"})),"replace"===e.name?(g="string"==typeof a?a:o.key,e.action(p({},s,{openai:d}),g)):e.action(p({},s,{openai:d}));case 11:case"end":return r.stop()}}),r)})));return function(e,t){return r.apply(this,arguments)}}())},C=0,J=[{name:"scan",description:"Scan for missing translations, get prompted for each, translate it to the other locales and save it to the JSON file.",action:T},{name:"replace",description:"Replace a translation based on the key, and translate it to the other locales and save it to the JSON file.",action:N},{name:"check-missing",description:"Check if there are any missing translations. Useful for a CI/CD pipeline or husky hook.",action:_},{name:"sync",description:"Sync the translations from the default locale to the other locales. Useful for a CI/CD pipeline or husky hook.",action:A}];C<J.length;C++)G();F.parse(process.argv);
2
2
  //# sourceMappingURL=i18n-magic.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"i18n-magic.cjs.production.min.js","sources":["../src/lib/languges.ts","../src/lib/utils.ts","../src/commands/check-missing.ts","../src/commands/replace.ts","../src/commands/scan.ts","../src/commands/sync-locales.ts","../src/index.ts"],"sourcesContent":["export const languages = [\n {\n label: \"Deutsch\",\n name: \"German\",\n value: \"de\",\n },\n {\n label: \"English\",\n name: \"English\",\n value: \"en\",\n },\n {\n label: \"Español\",\n name: \"Spanish\",\n value: \"es\",\n },\n {\n label: \"Français\",\n name: \"French\",\n value: \"fr\",\n },\n {\n label: \"Dansk\",\n name: \"Danish\",\n value: \"dk\",\n },\n {\n label: \"中文\",\n name: \"Chinese\",\n value: \"cn\",\n },\n {\n label: \"Русский\",\n name: \"Russian\",\n value: \"ru\",\n },\n {\n label: \"Italiano\",\n name: \"Italian\",\n value: \"it\",\n },\n {\n label: \"Nederlands\",\n name: \"Dutch\",\n value: \"nl\",\n },\n {\n label: \"Português\",\n name: \"Portuguese\",\n value: \"pt\",\n },\n {\n label: \"Türkçe\",\n name: \"Turkish\",\n value: \"tr\",\n },\n {\n label: \"Polski\",\n name: \"Polish\",\n value: \"pl\",\n },\n {\n label: \"Українська\",\n name: \"Ukrainian\",\n value: \"ua\",\n },\n {\n label: \"Suomi\",\n name: \"Finnish\",\n value: \"fi\",\n },\n {\n label: \"Norsk\",\n name: \"Norwegian\",\n value: \"no\",\n },\n {\n label: \"Svenska\",\n name: \"Swedish\",\n value: \"sv\",\n },\n {\n label: \"Čeština\",\n name: \"Czech\",\n value: \"cz\",\n },\n {\n label: \"Ελληνικά\",\n name: \"Greek\",\n value: \"gr\",\n },\n {\n label: \"日本語\",\n name: \"Japanese\",\n value: \"jp\",\n },\n {\n label: \"한국어\",\n name: \"Korean\",\n value: \"kr\",\n },\n {\n label: \"Română\",\n name: \"Romanian\",\n value: \"ro\",\n },\n {\n label: \"Hrvatski\",\n name: \"Croatian\",\n value: \"hr\",\n },\n {\n label: \"Magyar\",\n name: \"Hungarian\",\n value: \"hu\",\n },\n {\n label: \"Slovensky\",\n name: \"Slovak\",\n value: \"sk\",\n },\n {\n label: \"हिन्दी\",\n name: \"Hindi\",\n value: \"hi\",\n },\n {\n label: \"தமிழ்\",\n name: \"Tamil\",\n value: \"ta\",\n },\n {\n label: \"Bahasa Indonesia\",\n name: \"Indonesian\",\n value: \"id\",\n },\n {\n label: \"Tiếng Việt\",\n name: \"Vietnamese\",\n value: \"vn\",\n },\n]\n","import glob from \"fast-glob\"\nimport { Parser } from \"i18next-scanner\"\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport type OpenAI from \"openai\"\nimport prompts from \"prompts\"\nimport { languages } from \"./languges\"\nimport type { Configuration } from \"./types\"\n\nexport const loadConfig = ({\n configPath = \"i18n-magic.js\",\n}: { configPath: string }) => {\n const filePath = path.join(process.cwd(), configPath)\n\n if (!fs.existsSync(filePath)) {\n console.error(\"Config file does not exist:\", filePath)\n process.exit(1)\n }\n\n try {\n const config = require(filePath)\n // Validate config if needed\n return config\n } catch (error) {\n console.error(\"Error while loading config:\", error)\n process.exit(1)\n }\n}\n\nexport function removeDuplicatesFromArray<T>(arr: T[]): T[] {\n return arr.filter((item, index) => arr.indexOf(item) === index)\n}\n\nexport const translateKey = async ({\n inputLanguage,\n context,\n object,\n openai,\n outputLanguage,\n model,\n}: {\n object: Record<string, string>\n context: string\n inputLanguage: string\n outputLanguage: string\n model: string\n openai: OpenAI\n}) => {\n // Split object into chunks of 100 keys\n const entries = Object.entries(object)\n const chunks: Array<[string, string][]> = []\n\n for (let i = 0; i < entries.length; i += 100) {\n chunks.push(entries.slice(i, i + 100))\n }\n\n let result: Record<string, string> = {}\n\n const existingInput = languages.find((l) => l.value === inputLanguage)\n const existingOutput = languages.find((l) => l.value === outputLanguage)\n\n const input = existingInput?.label || inputLanguage\n const output = existingOutput?.label || outputLanguage\n\n // Translate each chunk\n for (const chunk of chunks) {\n const chunkObject = Object.fromEntries(chunk)\n const completion = await openai.beta.chat.completions.parse({\n model,\n messages: [\n {\n content: `You are a bot that translates the values of a locales JSON. ${\n context\n ? `The user provided some additional context or guidelines about what to fill in the blanks: \\\"${context}\\\". `\n : \"\"\n }The user provides you a JSON with a field named \"inputLanguage\", which defines the language the values of the JSON are defined in. It also has a field named \"outputLanguage\", which defines the language you should translate the values to. The last field is named \"data\", which includes the object with the values to translate. The keys of the values should never be changed. You output only a JSON, which has the same keys as the input, but with translated values. I give you an example input: {\"inputLanguage\": \"English\", outputLanguage: \"German\", \"keys\": {\"hello\": \"Hello\", \"world\": \"World\"}}. The output should be {\"hello\": \"Hallo\", \"world\": \"Welt\"}.`,\n role: \"system\",\n },\n {\n content: JSON.stringify({\n inputLanguage: input,\n outputLanguage: output,\n data: chunkObject,\n }),\n role: \"user\",\n },\n ],\n response_format: {\n type: \"json_object\",\n },\n })\n\n const translatedChunk = JSON.parse(\n completion.choices[0].message.content,\n ) as Record<string, string>\n\n // Merge translated chunk with result\n result = { ...result, ...translatedChunk }\n\n // Optional: Add a small delay between chunks to avoid rate limiting\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n\n return result\n}\n\nexport const loadLocalesFile = async (\n loadPath:\n | string\n | ((locale: string, namespace: string) => Promise<Record<string, string>>),\n locale: string,\n namespace: string,\n) => {\n if (typeof loadPath === \"string\") {\n const resolvedPath = loadPath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n const content = fs.readFileSync(resolvedPath, \"utf-8\")\n const json = JSON.parse(content)\n\n return json as Record<string, string>\n }\n\n return loadPath(locale, namespace)\n}\n\nexport const writeLocalesFile = async (\n savePath:\n | string\n | ((\n locale: string,\n namespace: string,\n data: Record<string, string>,\n ) => Promise<void>),\n locale: string,\n namespace: string,\n data: Record<string, string>,\n) => {\n if (typeof savePath === \"string\") {\n const resolvedSavePath = savePath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n fs.writeFileSync(resolvedSavePath, JSON.stringify(data, null, 2))\n\n return\n }\n\n await savePath(locale, namespace, data)\n}\n\nexport const getPureKey = (\n key: string,\n namespace?: string,\n isDefault?: boolean,\n) => {\n const splitted = key.split(\":\")\n\n if (splitted.length === 1) {\n if (isDefault) {\n return key\n }\n\n return null\n }\n\n if (splitted[0] === namespace) {\n return splitted[1]\n }\n\n return null\n}\n\nexport const getMissingKeys = async ({\n globPatterns,\n namespaces,\n defaultNamespace,\n defaultLocale,\n loadPath,\n}: Configuration) => {\n const parser = new Parser({\n nsSeparator: false,\n keySeparator: false,\n })\n\n const files = await glob([...globPatterns, \"!**/node_modules/**\"])\n\n const keys = []\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\")\n parser.parseFuncFromString(content, { list: [\"t\"] }, (key: string) => {\n keys.push(key)\n })\n }\n\n const uniqueKeys = removeDuplicatesFromArray(keys)\n\n const newKeys = []\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n console.log(Object.keys(existingKeys).length, \"existing keys\")\n\n for (const key of uniqueKeys) {\n const pureKey = getPureKey(key, namespace, namespace === defaultNamespace)\n\n if (!pureKey) {\n continue\n }\n\n if (!existingKeys[pureKey]) {\n newKeys.push({ key: pureKey, namespace })\n }\n }\n }\n\n return newKeys\n}\n\nexport const getTextInput = async (prompt: string) => {\n const input = await prompts({\n name: \"value\",\n type: \"text\",\n message: prompt,\n onState: (state) => {\n if (state.aborted) {\n process.nextTick(() => {\n process.exit(0)\n })\n }\n },\n })\n\n return input.value as string\n}\n\nexport const checkAllKeysExist = async ({\n namespaces,\n defaultLocale,\n loadPath,\n locales,\n context,\n openai,\n savePath,\n disableTranslation,\n model,\n}: Configuration) => {\n if (disableTranslation) {\n return\n }\n\n for (const namespace of namespaces) {\n const defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n const localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n const translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model,\n })\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n // Save the updated translations\n writeLocalesFile(savePath, locale, namespace, updatedLocaleKeys)\n console.log(\n `✓ Translated and saved missing keys for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n}\n\nexport class TranslationError extends Error {\n constructor(\n message: string,\n public locale?: string,\n public namespace?: string,\n public cause?: Error,\n ) {\n super(message)\n this.name = \"TranslationError\"\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport { getMissingKeys } from \"../lib/utils\"\n\nexport const checkMissing = async (config: Configuration) => {\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length > 0) {\n console.error(\"Error: Missing translations found!\")\n process.exit(1)\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nconst getKeyToReplace = async (keys: Record<string, string>) => {\n const keyToReplace = await getTextInput(\n \"Enter the key to replace the translation for: \",\n )\n\n if (!keys[keyToReplace]) {\n console.log(`The key \"${keyToReplace}\" does not exist.`)\n return await getKeyToReplace(keys)\n }\n\n console.log(`The key \"${keyToReplace}\" exists.`)\n return keyToReplace\n}\n\nexport const replaceTranslation = async (\n config: Configuration,\n key?: string,\n) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n defaultNamespace,\n namespaces,\n locales,\n globPatterns,\n context,\n openai,\n } = config\n\n const keys = await loadLocalesFile(\n config.loadPath,\n config.defaultLocale,\n config.defaultNamespace,\n )\n\n let keyToReplace: string\n\n if (key) {\n if (keys[key]) {\n keyToReplace = key\n console.log(`The key \"${keyToReplace}\" exists.`)\n } else {\n console.log(`The key \"${key}\" does not exist.`)\n keyToReplace = await getKeyToReplace(keys)\n }\n } else {\n keyToReplace = await getKeyToReplace(keys)\n }\n\n console.log(\n `The current translation in ${defaultLocale} for \"${keyToReplace}\" is \"${keys[keyToReplace]}\".`,\n )\n\n const newTranslation = await getTextInput(\"Enter the new translation: \")\n\n for (const locale of locales) {\n let newValue = \"\"\n if (locale === defaultLocale) {\n newValue = newTranslation\n } else {\n const translation = await translateKey({\n context,\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n object: {\n [keyToReplace]: newTranslation,\n },\n openai,\n model: config.model,\n })\n\n newValue = translation[keyToReplace]\n }\n\n const existingKeys = await loadLocalesFile(\n loadPath,\n locale,\n defaultNamespace,\n )\n\n existingKeys[keyToReplace] = newValue\n\n writeLocalesFile(savePath, locale, defaultNamespace, existingKeys)\n\n console.log(\n `The new translation for \"${keyToReplace}\" in ${locale} is \"${newValue}\".`,\n )\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n checkAllKeysExist,\n getMissingKeys,\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const translateMissing = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n disableTranslation,\n } = config\n\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length === 0) {\n console.log(\"No new keys found.\")\n\n await checkAllKeysExist(config)\n\n return\n }\n\n console.log(\n `${newKeys.length} keys are missing. Please provide the values for the following keys in ${defaultLocale}:`,\n )\n\n const newKeysWithDefaultLocale = []\n\n for (const newKey of newKeys) {\n const answer = await getTextInput(newKey.key)\n\n newKeysWithDefaultLocale.push({\n key: newKey.key,\n namespace: newKey.namespace,\n value: answer,\n })\n }\n\n const newKeysObject = newKeysWithDefaultLocale.reduce((prev, next) => {\n prev[next.key] = next.value\n\n return prev\n }, {})\n\n const allLocales = disableTranslation ? [defaultLocale] : locales\n\n for (const locale of allLocales) {\n let translatedValues = {}\n\n if (locale === defaultLocale) {\n translatedValues = newKeysObject\n } else {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: newKeysObject,\n openai,\n model: config.model,\n })\n }\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(loadPath, locale, namespace)\n\n const relevantKeys = newKeysWithDefaultLocale.filter(\n (key) => key.namespace === namespace,\n )\n\n if (relevantKeys.length === 0) {\n continue\n }\n\n for (const key of relevantKeys) {\n existingKeys[key.key] = translatedValues[key.key]\n }\n\n writeLocalesFile(savePath, locale, namespace, existingKeys)\n }\n }\n\n await checkAllKeysExist(config)\n\n console.log(`Successfully translated ${newKeys.length} keys.`)\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n TranslationError,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const syncLocales = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n } = config\n\n try {\n for (const namespace of namespaces) {\n let defaultLocaleKeys: Record<string, string>\n\n try {\n defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to load default locale file for namespace \"${namespace}\"`,\n defaultLocale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n let localeKeys: Record<string, string>\n try {\n localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n } catch (error) {\n console.warn(\n `Warning: Could not load locale file for ${locale} (namespace: ${namespace}). Creating new file.`,\n )\n localeKeys = {}\n }\n\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n let translatedValues: Record<string, string>\n try {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model: config.model,\n })\n } catch (error) {\n throw new TranslationError(\n `Failed to translate keys for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n try {\n await writeLocalesFile(\n savePath,\n locale,\n namespace,\n updatedLocaleKeys,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to save translations for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n console.log(\n `Successfully translated and saved ${Object.keys(missingKeys).length} keys for ${locale} (namespace: ${namespace})`,\n )\n } else {\n console.log(\n `No missing keys found for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n } catch (error) {\n if (error instanceof TranslationError) {\n throw error\n }\n throw new TranslationError(\n \"An unexpected error occurred during translation\",\n undefined,\n undefined,\n error instanceof Error ? error : undefined,\n )\n }\n}\n","import { Command } from \"commander\"\nimport dotenv from \"dotenv\"\nimport OpenAI from \"openai\"\nimport { checkMissing } from \"./commands/check-missing\"\nimport { replaceTranslation } from \"./commands/replace\"\nimport { translateMissing } from \"./commands/scan\"\nimport { syncLocales } from \"./commands/sync-locales\"\nimport type { CommandType, Configuration } from \"./lib/types\"\nimport { loadConfig } from \"./lib/utils\"\n\n// Only run CLI initialization when this file is executed directly\n\nconst program = new Command()\n\nprogram\n .name(\"i18n-magic\")\n .description(\n \"CLI to help you manage your locales JSON with translations, replacements, etc. with OpenAI.\",\n )\n .version(\"0.2.0\")\n .option(\"-c, --config <path>\", \"path to config file\")\n .option(\"-e, --env <path>\", \"path to .env file\")\n\nconst commands: CommandType[] = [\n {\n name: \"scan\",\n description:\n \"Scan for missing translations, get prompted for each, translate it to the other locales and save it to the JSON file.\",\n action: translateMissing,\n },\n {\n name: \"replace\",\n description:\n \"Replace a translation based on the key, and translate it to the other locales and save it to the JSON file.\",\n action: replaceTranslation,\n },\n {\n name: \"check-missing\",\n description:\n \"Check if there are any missing translations. Useful for a CI/CD pipeline or husky hook.\",\n action: checkMissing,\n },\n {\n name: \"sync\",\n description:\n \"Sync the translations from the default locale to the other locales. Useful for a CI/CD pipeline or husky hook.\",\n action: syncLocales,\n },\n]\n\nfor (const command of commands) {\n const cmd = program.command(command.name).description(command.description)\n\n // Add key option to replace command\n if (command.name === \"replace\") {\n cmd.option(\"-k, --key <key>\", \"translation key to replace\")\n }\n\n cmd.action(async (options) => {\n const res = dotenv.config({\n path: program.opts().env || \".env\",\n })\n\n const config: Configuration = await loadConfig({\n configPath: program.opts().config,\n })\n\n const isGemini = (config.model as string)?.includes(\"gemini\")\n\n // Get API key from environment or config\n const openaiKey = res.parsed.OPENAI_API_KEY || config.OPENAI_API_KEY\n const geminiKey = res.parsed.GEMINI_API_KEY || config.GEMINI_API_KEY\n\n // Select appropriate key based on model type\n const key = isGemini ? geminiKey : openaiKey\n\n if (!key) {\n const keyType = isGemini ? \"GEMINI_API_KEY\" : \"OPENAI_API_KEY\"\n console.error(\n `Please provide a${isGemini ? \" Gemini\" : \"n OpenAI\"} API key in your .env file or config, called ${keyType}.`,\n )\n process.exit(1)\n }\n\n const openai = new OpenAI({\n apiKey: key,\n ...(isGemini && {\n baseURL: \"https://generativelanguage.googleapis.com/v1beta/openai/\",\n }),\n })\n\n if (command.name === \"replace\" && options.key) {\n command.action({ ...config, openai }, options.key)\n } else {\n command.action({ ...config, openai })\n }\n })\n}\n\nprogram.parse(process.argv)\n"],"names":["languages","label","name","value","loadConfig","_ref","_ref$configPath","configPath","filePath","path","join","process","cwd","fs","existsSync","console","error","exit","require","removeDuplicatesFromArray","arr","filter","item","index","indexOf","translateKey","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","inputLanguage","context","openai","outputLanguage","model","entries","chunks","i","result","existingInput","existingOutput","input","output","_i","_chunks","chunkObject","translatedChunk","wrap","_context","prev","next","Object","object","length","push","slice","find","l","fromEntries","beta","chat","completions","parse","messages","content","role","JSON","stringify","data","response_format","type","sent","choices","message","_extends","Promise","resolve","setTimeout","abrupt","stop","_x","apply","this","arguments","loadLocalesFile","_ref4","_callee2","loadPath","locale","namespace","resolvedPath","json","_context2","replace","readFileSync","_x2","_x3","_x4","writeLocalesFile","_ref5","_callee3","savePath","resolvedSavePath","_context3","writeFileSync","_x5","_x6","_x7","_x8","getPureKey","key","isDefault","splitted","split","getMissingKeys","_ref7","_callee4","_ref6","globPatterns","namespaces","defaultNamespace","defaultLocale","parser","keys","_iterator","_step","uniqueKeys","newKeys","_iterator2","_step2","existingKeys","_iterator3","_step3","pureKey","_context4","Parser","nsSeparator","keySeparator","glob","concat","_createForOfIteratorHelperLoose","done","parseFuncFromString","list","log","_x9","getTextInput","_ref8","_callee5","prompt","_context5","prompts","onState","state","aborted","nextTick","_x10","checkAllKeysExist","_ref10","_callee6","_ref9","locales","_iterator4","_step4","defaultLocaleKeys","_iterator5","_step5","localeKeys","missingKeys","_i2","_Object$entries","_Object$entries$_i","updatedLocaleKeys","_context6","disableTranslation","_x11","TranslationError","_Error","cause","_this","call","_wrapNativeSuper","Error","checkMissing","config","getKeyToReplace","keyToReplace","replaceTranslation","newTranslation","newValue","_object","translateMissing","newKeysWithDefaultLocale","newKey","newKeysObject","translatedValues","_loop","reduce","relevantKeys","delegateYield","t0","syncLocales","undefined","t1","warn","t2","t3","t4","program","Command","description","version","option","command","_commands","cmd","action","options","_config$model","res","isGemini","openaiKey","geminiKey","dotenv","opts","env","includes","parsed","OPENAI_API_KEY","GEMINI_API_KEY","OpenAI","apiKey","baseURL","argv"],"mappings":"y9RAAO,IAAMA,EAAY,CACvB,CACEC,MAAO,UACPC,KAAM,SACNC,MAAO,MAET,CACEF,MAAO,UACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,UACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,WACPC,KAAM,SACNC,MAAO,MAET,CACEF,MAAO,QACPC,KAAM,SACNC,MAAO,MAET,CACEF,MAAO,KACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,UACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,WACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,aACPC,KAAM,QACNC,MAAO,MAET,CACEF,MAAO,YACPC,KAAM,aACNC,MAAO,MAET,CACEF,MAAO,SACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,SACPC,KAAM,SACNC,MAAO,MAET,CACEF,MAAO,aACPC,KAAM,YACNC,MAAO,MAET,CACEF,MAAO,QACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,QACPC,KAAM,YACNC,MAAO,MAET,CACEF,MAAO,UACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,UACPC,KAAM,QACNC,MAAO,MAET,CACEF,MAAO,WACPC,KAAM,QACNC,MAAO,MAET,CACEF,MAAO,MACPC,KAAM,WACNC,MAAO,MAET,CACEF,MAAO,MACPC,KAAM,SACNC,MAAO,MAET,CACEF,MAAO,SACPC,KAAM,WACNC,MAAO,MAET,CACEF,MAAO,WACPC,KAAM,WACNC,MAAO,MAET,CACEF,MAAO,SACPC,KAAM,YACNC,MAAO,MAET,CACEF,MAAO,YACPC,KAAM,SACNC,MAAO,MAET,CACEF,MAAO,SACPC,KAAM,QACNC,MAAO,MAET,CACEF,MAAO,QACPC,KAAM,QACNC,MAAO,MAET,CACEF,MAAO,mBACPC,KAAM,aACNC,MAAO,MAET,CACEF,MAAO,aACPC,KAAM,aACNC,MAAO,OClIEC,EAAa,SAAHC,GAEM,IAAAC,EAAAD,EAD3BE,WAAAA,OAAa,IAAHD,EAAG,gBAAeA,EAEtBE,EAAWC,EAAKC,KAAKC,QAAQC,MAAOL,GAErCM,E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"}
1
+ {"version":3,"file":"i18n-magic.cjs.production.min.js","sources":["../src/lib/languges.ts","../src/lib/utils.ts","../src/commands/check-missing.ts","../src/commands/replace.ts","../src/commands/scan.ts","../src/commands/sync-locales.ts","../src/index.ts"],"sourcesContent":["export const languages = [\n {\n label: \"Deutsch\",\n name: \"German\",\n value: \"de\",\n },\n {\n label: \"English\",\n name: \"English\",\n value: \"en\",\n },\n {\n label: \"Español\",\n name: \"Spanish\",\n value: \"es\",\n },\n {\n label: \"Français\",\n name: \"French\",\n value: \"fr\",\n },\n {\n label: \"Dansk\",\n name: \"Danish\",\n value: \"dk\",\n },\n {\n label: \"中文\",\n name: \"Chinese\",\n value: \"cn\",\n },\n {\n label: \"Русский\",\n name: \"Russian\",\n value: \"ru\",\n },\n {\n label: \"Italiano\",\n name: \"Italian\",\n value: \"it\",\n },\n {\n label: \"Nederlands\",\n name: \"Dutch\",\n value: \"nl\",\n },\n {\n label: \"Português\",\n name: \"Portuguese\",\n value: \"pt\",\n },\n {\n label: \"Türkçe\",\n name: \"Turkish\",\n value: \"tr\",\n },\n {\n label: \"Polski\",\n name: \"Polish\",\n value: \"pl\",\n },\n {\n label: \"Українська\",\n name: \"Ukrainian\",\n value: \"ua\",\n },\n {\n label: \"Suomi\",\n name: \"Finnish\",\n value: \"fi\",\n },\n {\n label: \"Norsk\",\n name: \"Norwegian\",\n value: \"no\",\n },\n {\n label: \"Svenska\",\n name: \"Swedish\",\n value: \"sv\",\n },\n {\n label: \"Čeština\",\n name: \"Czech\",\n value: \"cz\",\n },\n {\n label: \"Ελληνικά\",\n name: \"Greek\",\n value: \"gr\",\n },\n {\n label: \"日本語\",\n name: \"Japanese\",\n value: \"jp\",\n },\n {\n label: \"한국어\",\n name: \"Korean\",\n value: \"kr\",\n },\n {\n label: \"Română\",\n name: \"Romanian\",\n value: \"ro\",\n },\n {\n label: \"Hrvatski\",\n name: \"Croatian\",\n value: \"hr\",\n },\n {\n label: \"Magyar\",\n name: \"Hungarian\",\n value: \"hu\",\n },\n {\n label: \"Slovensky\",\n name: \"Slovak\",\n value: \"sk\",\n },\n {\n label: \"हिन्दी\",\n name: \"Hindi\",\n value: \"hi\",\n },\n {\n label: \"தமிழ்\",\n name: \"Tamil\",\n value: \"ta\",\n },\n {\n label: \"Bahasa Indonesia\",\n name: \"Indonesian\",\n value: \"id\",\n },\n {\n label: \"Tiếng Việt\",\n name: \"Vietnamese\",\n value: \"vn\",\n },\n]\n","import glob from \"fast-glob\"\nimport { Parser } from \"i18next-scanner\"\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport type OpenAI from \"openai\"\nimport prompts from \"prompts\"\nimport { languages } from \"./languges\"\nimport type { Configuration } from \"./types\"\n\nexport const loadConfig = ({\n configPath = \"i18n-magic.js\",\n}: { configPath: string }) => {\n const filePath = path.join(process.cwd(), configPath)\n\n if (!fs.existsSync(filePath)) {\n console.error(\"Config file does not exist:\", filePath)\n process.exit(1)\n }\n\n try {\n const config = require(filePath)\n // Validate config if needed\n return config\n } catch (error) {\n console.error(\"Error while loading config:\", error)\n process.exit(1)\n }\n}\n\nexport function removeDuplicatesFromArray<T>(arr: T[]): T[] {\n return arr.filter((item, index) => arr.indexOf(item) === index)\n}\n\nexport const translateKey = async ({\n inputLanguage,\n context,\n object,\n openai,\n outputLanguage,\n model,\n}: {\n object: Record<string, string>\n context: string\n inputLanguage: string\n outputLanguage: string\n model: string\n openai: OpenAI\n}) => {\n // Split object into chunks of 100 keys\n const entries = Object.entries(object)\n const chunks: Array<[string, string][]> = []\n\n for (let i = 0; i < entries.length; i += 100) {\n chunks.push(entries.slice(i, i + 100))\n }\n\n let result: Record<string, string> = {}\n\n const existingInput = languages.find((l) => l.value === inputLanguage)\n const existingOutput = languages.find((l) => l.value === outputLanguage)\n\n const input = existingInput?.label || inputLanguage\n const output = existingOutput?.label || outputLanguage\n\n // Translate each chunk\n for (const chunk of chunks) {\n const chunkObject = Object.fromEntries(chunk)\n const completion = await openai.beta.chat.completions.parse({\n model,\n messages: [\n {\n content: `You are a bot that translates the values of a locales JSON. ${\n context\n ? `The user provided some additional context or guidelines about what to fill in the blanks: \\\"${context}\\\". `\n : \"\"\n }The user provides you a JSON with a field named \"inputLanguage\", which defines the language the values of the JSON are defined in. It also has a field named \"outputLanguage\", which defines the language you should translate the values to. The last field is named \"data\", which includes the object with the values to translate. The keys of the values should never be changed. You output only a JSON, which has the same keys as the input, but with translated values. I give you an example input: {\"inputLanguage\": \"English\", outputLanguage: \"German\", \"keys\": {\"hello\": \"Hello\", \"world\": \"World\"}}. The output should be {\"hello\": \"Hallo\", \"world\": \"Welt\"}.`,\n role: \"system\",\n },\n {\n content: JSON.stringify({\n inputLanguage: input,\n outputLanguage: output,\n data: chunkObject,\n }),\n role: \"user\",\n },\n ],\n response_format: {\n type: \"json_object\",\n },\n })\n\n const translatedChunk = JSON.parse(\n completion.choices[0].message.content,\n ) as Record<string, string>\n\n // Merge translated chunk with result\n result = { ...result, ...translatedChunk }\n\n // Optional: Add a small delay between chunks to avoid rate limiting\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n\n return result\n}\n\nexport const loadLocalesFile = async (\n loadPath:\n | string\n | ((locale: string, namespace: string) => Promise<Record<string, string>>),\n locale: string,\n namespace: string,\n) => {\n if (typeof loadPath === \"string\") {\n const resolvedPath = loadPath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n const content = fs.readFileSync(resolvedPath, \"utf-8\")\n const json = JSON.parse(content)\n\n return json as Record<string, string>\n }\n\n return loadPath(locale, namespace)\n}\n\nexport const writeLocalesFile = async (\n savePath:\n | string\n | ((\n locale: string,\n namespace: string,\n data: Record<string, string>,\n ) => Promise<void>),\n locale: string,\n namespace: string,\n data: Record<string, string>,\n) => {\n if (typeof savePath === \"string\") {\n const resolvedSavePath = savePath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n fs.writeFileSync(resolvedSavePath, JSON.stringify(data, null, 2))\n\n return\n }\n\n await savePath(locale, namespace, data)\n}\n\nexport const getPureKey = (\n key: string,\n namespace?: string,\n isDefault?: boolean,\n) => {\n const splitted = key.split(\":\")\n\n if (splitted.length === 1) {\n if (isDefault) {\n return key\n }\n\n return null\n }\n\n if (splitted[0] === namespace) {\n return splitted[1]\n }\n\n return null\n}\n\nexport const getMissingKeys = async ({\n globPatterns,\n namespaces,\n defaultNamespace,\n defaultLocale,\n loadPath,\n}: Configuration) => {\n const parser = new Parser({\n nsSeparator: false,\n keySeparator: false,\n })\n\n const files = await glob([...globPatterns, \"!**/node_modules/**\"])\n\n const keys = []\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\")\n parser.parseFuncFromString(content, { list: [\"t\"] }, (key: string) => {\n keys.push(key)\n })\n }\n\n const uniqueKeys = removeDuplicatesFromArray(keys)\n\n const newKeys = []\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n console.log(Object.keys(existingKeys).length, \"existing keys\")\n\n for (const key of uniqueKeys) {\n const pureKey = getPureKey(key, namespace, namespace === defaultNamespace)\n\n if (!pureKey) {\n continue\n }\n\n if (!existingKeys[pureKey]) {\n newKeys.push({ key: pureKey, namespace })\n }\n }\n }\n\n return newKeys\n}\n\nexport const getTextInput = async (prompt: string) => {\n const input = await prompts({\n name: \"value\",\n type: \"text\",\n message: prompt,\n onState: (state) => {\n if (state.aborted) {\n process.nextTick(() => {\n process.exit(0)\n })\n }\n },\n })\n\n return input.value as string\n}\n\nexport const checkAllKeysExist = async ({\n namespaces,\n defaultLocale,\n loadPath,\n locales,\n context,\n openai,\n savePath,\n disableTranslation,\n model,\n}: Configuration) => {\n if (disableTranslation) {\n return\n }\n\n for (const namespace of namespaces) {\n const defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n const localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n const translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model,\n })\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n // Save the updated translations\n writeLocalesFile(savePath, locale, namespace, updatedLocaleKeys)\n console.log(\n `✓ Translated and saved missing keys for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n}\n\nexport class TranslationError extends Error {\n constructor(\n message: string,\n public locale?: string,\n public namespace?: string,\n public cause?: Error,\n ) {\n super(message)\n this.name = \"TranslationError\"\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport { getMissingKeys } from \"../lib/utils\"\n\nexport const checkMissing = async (config: Configuration) => {\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length > 0) {\n console.error(\"Error: Missing translations found!\")\n process.exit(1)\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nconst getKeyToReplace = async (keys: Record<string, string>) => {\n const keyToReplace = await getTextInput(\n \"Enter the key to replace the translation for: \",\n )\n\n if (!keys[keyToReplace]) {\n console.log(`The key \"${keyToReplace}\" does not exist.`)\n return await getKeyToReplace(keys)\n }\n\n console.log(`The key \"${keyToReplace}\" exists.`)\n return keyToReplace\n}\n\nexport const replaceTranslation = async (\n config: Configuration,\n key?: string,\n) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n defaultNamespace,\n namespaces,\n locales,\n globPatterns,\n context,\n openai,\n } = config\n\n const keys = await loadLocalesFile(\n config.loadPath,\n config.defaultLocale,\n config.defaultNamespace,\n )\n\n let keyToReplace: string\n\n if (key) {\n if (keys[key]) {\n keyToReplace = key\n console.log(`The key \"${keyToReplace}\" exists.`)\n } else {\n console.log(`The key \"${key}\" does not exist.`)\n keyToReplace = await getKeyToReplace(keys)\n }\n } else {\n keyToReplace = await getKeyToReplace(keys)\n }\n\n console.log(\n `The current translation in ${defaultLocale} for \"${keyToReplace}\" is \"${keys[keyToReplace]}\".`,\n )\n\n const newTranslation = await getTextInput(\"Enter the new translation: \")\n\n for (const locale of locales) {\n let newValue = \"\"\n if (locale === defaultLocale) {\n newValue = newTranslation\n } else {\n const translation = await translateKey({\n context,\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n object: {\n [keyToReplace]: newTranslation,\n },\n openai,\n model: config.model,\n })\n\n newValue = translation[keyToReplace]\n }\n\n const existingKeys = await loadLocalesFile(\n loadPath,\n locale,\n defaultNamespace,\n )\n\n existingKeys[keyToReplace] = newValue\n\n writeLocalesFile(savePath, locale, defaultNamespace, existingKeys)\n\n console.log(\n `The new translation for \"${keyToReplace}\" in ${locale} is \"${newValue}\".`,\n )\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n checkAllKeysExist,\n getMissingKeys,\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const translateMissing = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n disableTranslation,\n } = config\n\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length === 0) {\n console.log(\"No new keys found.\")\n\n await checkAllKeysExist(config)\n\n return\n }\n\n console.log(\n `${newKeys.length} keys are missing. Please provide the values for the following keys in ${defaultLocale}:`,\n )\n\n const newKeysWithDefaultLocale = []\n\n for (const newKey of newKeys) {\n const answer = await getTextInput(newKey.key)\n\n newKeysWithDefaultLocale.push({\n key: newKey.key,\n namespace: newKey.namespace,\n value: answer,\n })\n }\n\n const newKeysObject = newKeysWithDefaultLocale.reduce((prev, next) => {\n prev[next.key] = next.value\n\n return prev\n }, {})\n\n const allLocales = disableTranslation ? [defaultLocale] : locales\n\n for (const locale of allLocales) {\n let translatedValues = {}\n\n if (locale === defaultLocale) {\n translatedValues = newKeysObject\n } else {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: newKeysObject,\n openai,\n model: config.model,\n })\n }\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(loadPath, locale, namespace)\n\n const relevantKeys = newKeysWithDefaultLocale.filter(\n (key) => key.namespace === namespace,\n )\n\n if (relevantKeys.length === 0) {\n continue\n }\n\n for (const key of relevantKeys) {\n existingKeys[key.key] = translatedValues[key.key]\n }\n\n writeLocalesFile(savePath, locale, namespace, existingKeys)\n }\n }\n\n await checkAllKeysExist(config)\n\n console.log(`Successfully translated ${newKeys.length} keys.`)\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n TranslationError,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const syncLocales = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n } = config\n\n try {\n for (const namespace of namespaces) {\n let defaultLocaleKeys: Record<string, string>\n\n try {\n defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to load default locale file for namespace \"${namespace}\"`,\n defaultLocale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n let localeKeys: Record<string, string>\n try {\n localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n } catch (error) {\n console.warn(\n `Warning: Could not load locale file for ${locale} (namespace: ${namespace}). Creating new file.`,\n )\n localeKeys = {}\n }\n\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n let translatedValues: Record<string, string>\n try {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model: config.model,\n })\n } catch (error) {\n throw new TranslationError(\n `Failed to translate keys for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n try {\n await writeLocalesFile(\n savePath,\n locale,\n namespace,\n updatedLocaleKeys,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to save translations for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n console.log(\n `Successfully translated and saved ${Object.keys(missingKeys).length} keys for ${locale} (namespace: ${namespace})`,\n )\n } else {\n console.log(\n `No missing keys found for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n } catch (error) {\n if (error instanceof TranslationError) {\n throw error\n }\n throw new TranslationError(\n \"An unexpected error occurred during translation\",\n undefined,\n undefined,\n error instanceof Error ? error : undefined,\n )\n }\n}\n","import { Command } from \"commander\"\nimport dotenv from \"dotenv\"\nimport OpenAI from \"openai\"\nimport { checkMissing } from \"./commands/check-missing\"\nimport { replaceTranslation } from \"./commands/replace\"\nimport { translateMissing } from \"./commands/scan\"\nimport { syncLocales } from \"./commands/sync-locales\"\nimport type { CommandType, Configuration } from \"./lib/types\"\nimport { loadConfig } from \"./lib/utils\"\n\n// Only run CLI initialization when this file is executed directly\n\nconst program = new Command()\n\nprogram\n .name(\"i18n-magic\")\n .description(\n \"CLI to help you manage your locales JSON with translations, replacements, etc. with OpenAI.\",\n )\n .version(\"0.2.0\")\n .option(\"-c, --config <path>\", \"path to config file\")\n .option(\"-e, --env <path>\", \"path to .env file\")\n\nconst commands: CommandType[] = [\n {\n name: \"scan\",\n description:\n \"Scan for missing translations, get prompted for each, translate it to the other locales and save it to the JSON file.\",\n action: translateMissing,\n },\n {\n name: \"replace\",\n description:\n \"Replace a translation based on the key, and translate it to the other locales and save it to the JSON file.\",\n action: replaceTranslation,\n },\n {\n name: \"check-missing\",\n description:\n \"Check if there are any missing translations. Useful for a CI/CD pipeline or husky hook.\",\n action: checkMissing,\n },\n {\n name: \"sync\",\n description:\n \"Sync the translations from the default locale to the other locales. Useful for a CI/CD pipeline or husky hook.\",\n action: syncLocales,\n },\n]\n\nfor (const command of commands) {\n const cmd = program.command(command.name).description(command.description)\n\n // Add key option to replace command\n if (command.name === \"replace\") {\n cmd\n .option(\"-k, --key <key>\", \"translation key to replace\")\n .allowExcessArguments(true)\n .argument(\"[key]\", \"translation key to replace\")\n }\n\n cmd.action(async (arg, options) => {\n const res = dotenv.config({\n path: program.opts().env || \".env\",\n })\n\n const config: Configuration = await loadConfig({\n configPath: program.opts().config,\n })\n\n const isGemini = (config.model as string)?.includes(\"gemini\")\n\n // Get API key from environment or config\n const openaiKey = res.parsed.OPENAI_API_KEY || config.OPENAI_API_KEY\n const geminiKey = res.parsed.GEMINI_API_KEY || config.GEMINI_API_KEY\n\n // Select appropriate key based on model type\n const key = isGemini ? geminiKey : openaiKey\n\n if (!key) {\n const keyType = isGemini ? \"GEMINI_API_KEY\" : \"OPENAI_API_KEY\"\n console.error(\n `Please provide a${isGemini ? \" Gemini\" : \"n OpenAI\"} API key in your .env file or config, called ${keyType}.`,\n )\n process.exit(1)\n }\n\n const openai = new OpenAI({\n apiKey: key,\n ...(isGemini && {\n baseURL: \"https://generativelanguage.googleapis.com/v1beta/openai/\",\n }),\n })\n\n // For replace command, check for key in argument or option\n if (command.name === \"replace\") {\n // If key is provided as positional argument, use that first\n const keyToUse = typeof arg === \"string\" ? arg : options.key\n command.action({ ...config, openai }, keyToUse)\n } else {\n command.action({ ...config, openai })\n }\n })\n}\n\nprogram.parse(process.argv)\n"],"names":["languages","label","name","value","loadConfig","_ref","_ref$configPath","configPath","filePath","path","join","process","cwd","fs","existsSync","console","error","exit","require","removeDuplicatesFromArray","arr","filter","item","index","indexOf","translateKey","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","inputLanguage","context","openai","outputLanguage","model","entries","chunks","i","result","existingInput","existingOutput","input","output","_i","_chunks","chunkObject","translatedChunk","wrap","_context","prev","next","Object","object","length","push","slice","find","l","fromEntries","beta","chat","completions","parse","messages","content","role","JSON","stringify","data","response_format","type","sent","choices","message","_extends","Promise","resolve","setTimeout","abrupt","stop","_x","apply","this","arguments","loadLocalesFile","_ref4","_callee2","loadPath","locale","namespace","resolvedPath","json","_context2","replace","readFileSync","_x2","_x3","_x4","writeLocalesFile","_ref5","_callee3","savePath","resolvedSavePath","_context3","writeFileSync","_x5","_x6","_x7","_x8","getPureKey","key","isDefault","splitted","split","getMissingKeys","_ref7","_callee4","_ref6","globPatterns","namespaces","defaultNamespace","defaultLocale","parser","keys","_iterator","_step","uniqueKeys","newKeys","_iterator2","_step2","existingKeys","_iterator3","_step3","pureKey","_context4","Parser","nsSeparator","keySeparator","glob","concat","_createForOfIteratorHelperLoose","done","parseFuncFromString","list","log","_x9","getTextInput","_ref8","_callee5","prompt","_context5","prompts","onState","state","aborted","nextTick","_x10","checkAllKeysExist","_ref10","_callee6","_ref9","locales","_iterator4","_step4","defaultLocaleKeys","_iterator5","_step5","localeKeys","missingKeys","_i2","_Object$entries","_Object$entries$_i","updatedLocaleKeys","_context6","disableTranslation","_x11","TranslationError","_Error","cause","_this","call","_wrapNativeSuper","Error","checkMissing","config","getKeyToReplace","keyToReplace","replaceTranslation","newTranslation","newValue","_object","translateMissing","newKeysWithDefaultLocale","newKey","newKeysObject","translatedValues","_loop","reduce","relevantKeys","delegateYield","t0","syncLocales","undefined","t1","warn","t2","t3","t4","program","Command","description","version","option","command","_commands","cmd","allowExcessArguments","argument","action","arg","options","_config$model","res","isGemini","openaiKey","geminiKey","keyToUse","dotenv","opts","env","includes","parsed","OPENAI_API_KEY","GEMINI_API_KEY","OpenAI","apiKey","baseURL","argv"],"mappings":"y9RAAO,IAAMA,EAAY,CACvB,CACEC,MAAO,UACPC,KAAM,SACNC,MAAO,MAET,CACEF,MAAO,UACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,UACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,WACPC,KAAM,SACNC,MAAO,MAET,CACEF,MAAO,QACPC,KAAM,SACNC,MAAO,MAET,CACEF,MAAO,KACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,UACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,WACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,aACPC,KAAM,QACNC,MAAO,MAET,CACEF,MAAO,YACPC,KAAM,aACNC,MAAO,MAET,CACEF,MAAO,SACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,SACPC,KAAM,SACNC,MAAO,MAET,CACEF,MAAO,aACPC,KAAM,YACNC,MAAO,MAET,CACEF,MAAO,QACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,QACPC,KAAM,YACNC,MAAO,MAET,CACEF,MAAO,UACPC,KAAM,UACNC,MAAO,MAET,CACEF,MAAO,UACPC,KAAM,QACNC,MAAO,MAET,CACEF,MAAO,WACPC,KAAM,QACNC,MAAO,MAET,CACEF,MAAO,MACPC,KAAM,WACNC,MAAO,MAET,CACEF,MAAO,MACPC,KAAM,SACNC,MAAO,MAET,CACEF,MAAO,SACPC,KAAM,WACNC,MAAO,MAET,CACEF,MAAO,WACPC,KAAM,WACNC,MAAO,MAET,CACEF,MAAO,SACPC,KAAM,YACNC,MAAO,MAET,CACEF,MAAO,YACPC,KAAM,SACNC,MAAO,MAET,CACEF,MAAO,SACPC,KAAM,QACNC,MAAO,MAET,CACEF,MAAO,QACPC,KAAM,QACNC,MAAO,MAET,CACEF,MAAO,mBACPC,KAAM,aACNC,MAAO,MAET,CACEF,MAAO,aACPC,KAAM,aACNC,MAAO,OClIEC,EAAa,SAAHC,GAEM,IAAAC,EAAAD,EAD3BE,WAAAA,OAAa,IAAHD,EAAG,gBAAeA,EAEtBE,EAAWC,EAAKC,KAAKC,QAAQC,MAAOL,GAErCM,E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"}
@@ -1387,12 +1387,12 @@ var _loop = function _loop() {
1387
1387
  var cmd = program.command(command.name).description(command.description);
1388
1388
  // Add key option to replace command
1389
1389
  if (command.name === "replace") {
1390
- cmd.option("-k, --key <key>", "translation key to replace");
1390
+ cmd.option("-k, --key <key>", "translation key to replace").allowExcessArguments(true).argument("[key]", "translation key to replace");
1391
1391
  }
1392
1392
  cmd.action( /*#__PURE__*/function () {
1393
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
1393
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(arg, options) {
1394
1394
  var _config$model;
1395
- var res, config, isGemini, openaiKey, geminiKey, key, keyType, openai;
1395
+ var res, config, isGemini, openaiKey, geminiKey, key, keyType, openai, keyToUse;
1396
1396
  return _regeneratorRuntime().wrap(function _callee$(_context) {
1397
1397
  while (1) switch (_context.prev = _context.next) {
1398
1398
  case 0:
@@ -1418,11 +1418,13 @@ var _loop = function _loop() {
1418
1418
  apiKey: key
1419
1419
  }, isGemini && {
1420
1420
  baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/"
1421
- }));
1422
- if (command.name === "replace" && options.key) {
1421
+ })); // For replace command, check for key in argument or option
1422
+ if (command.name === "replace") {
1423
+ // If key is provided as positional argument, use that first
1424
+ keyToUse = typeof arg === "string" ? arg : options.key;
1423
1425
  command.action(_extends({}, config, {
1424
1426
  openai: openai
1425
- }), options.key);
1427
+ }), keyToUse);
1426
1428
  } else {
1427
1429
  command.action(_extends({}, config, {
1428
1430
  openai: openai
@@ -1434,7 +1436,7 @@ var _loop = function _loop() {
1434
1436
  }
1435
1437
  }, _callee);
1436
1438
  }));
1437
- return function (_x) {
1439
+ return function (_x, _x2) {
1438
1440
  return _ref.apply(this, arguments);
1439
1441
  };
1440
1442
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"i18n-magic.esm.js","sources":["../src/lib/languges.ts","../src/lib/utils.ts","../src/commands/check-missing.ts","../src/commands/replace.ts","../src/commands/scan.ts","../src/commands/sync-locales.ts","../src/index.ts"],"sourcesContent":["export const languages = [\n {\n label: \"Deutsch\",\n name: \"German\",\n value: \"de\",\n },\n {\n label: \"English\",\n name: \"English\",\n value: \"en\",\n },\n {\n label: \"Español\",\n name: \"Spanish\",\n value: \"es\",\n },\n {\n label: \"Français\",\n name: \"French\",\n value: \"fr\",\n },\n {\n label: \"Dansk\",\n name: \"Danish\",\n value: \"dk\",\n },\n {\n label: \"中文\",\n name: \"Chinese\",\n value: \"cn\",\n },\n {\n label: \"Русский\",\n name: \"Russian\",\n value: \"ru\",\n },\n {\n label: \"Italiano\",\n name: \"Italian\",\n value: \"it\",\n },\n {\n label: \"Nederlands\",\n name: \"Dutch\",\n value: \"nl\",\n },\n {\n label: \"Português\",\n name: \"Portuguese\",\n value: \"pt\",\n },\n {\n label: \"Türkçe\",\n name: \"Turkish\",\n value: \"tr\",\n },\n {\n label: \"Polski\",\n name: \"Polish\",\n value: \"pl\",\n },\n {\n label: \"Українська\",\n name: \"Ukrainian\",\n value: \"ua\",\n },\n {\n label: \"Suomi\",\n name: \"Finnish\",\n value: \"fi\",\n },\n {\n label: \"Norsk\",\n name: \"Norwegian\",\n value: \"no\",\n },\n {\n label: \"Svenska\",\n name: \"Swedish\",\n value: \"sv\",\n },\n {\n label: \"Čeština\",\n name: \"Czech\",\n value: \"cz\",\n },\n {\n label: \"Ελληνικά\",\n name: \"Greek\",\n value: \"gr\",\n },\n {\n label: \"日本語\",\n name: \"Japanese\",\n value: \"jp\",\n },\n {\n label: \"한국어\",\n name: \"Korean\",\n value: \"kr\",\n },\n {\n label: \"Română\",\n name: \"Romanian\",\n value: \"ro\",\n },\n {\n label: \"Hrvatski\",\n name: \"Croatian\",\n value: \"hr\",\n },\n {\n label: \"Magyar\",\n name: \"Hungarian\",\n value: \"hu\",\n },\n {\n label: \"Slovensky\",\n name: \"Slovak\",\n value: \"sk\",\n },\n {\n label: \"हिन्दी\",\n name: \"Hindi\",\n value: \"hi\",\n },\n {\n label: \"தமிழ்\",\n name: \"Tamil\",\n value: \"ta\",\n },\n {\n label: \"Bahasa Indonesia\",\n name: \"Indonesian\",\n value: \"id\",\n },\n {\n label: \"Tiếng Việt\",\n name: \"Vietnamese\",\n value: \"vn\",\n },\n]\n","import glob from \"fast-glob\"\nimport { Parser } from \"i18next-scanner\"\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport type OpenAI from \"openai\"\nimport prompts from \"prompts\"\nimport { languages } from \"./languges\"\nimport type { Configuration } from \"./types\"\n\nexport const loadConfig = ({\n configPath = \"i18n-magic.js\",\n}: { configPath: string }) => {\n const filePath = path.join(process.cwd(), configPath)\n\n if (!fs.existsSync(filePath)) {\n console.error(\"Config file does not exist:\", filePath)\n process.exit(1)\n }\n\n try {\n const config = require(filePath)\n // Validate config if needed\n return config\n } catch (error) {\n console.error(\"Error while loading config:\", error)\n process.exit(1)\n }\n}\n\nexport function removeDuplicatesFromArray<T>(arr: T[]): T[] {\n return arr.filter((item, index) => arr.indexOf(item) === index)\n}\n\nexport const translateKey = async ({\n inputLanguage,\n context,\n object,\n openai,\n outputLanguage,\n model,\n}: {\n object: Record<string, string>\n context: string\n inputLanguage: string\n outputLanguage: string\n model: string\n openai: OpenAI\n}) => {\n // Split object into chunks of 100 keys\n const entries = Object.entries(object)\n const chunks: Array<[string, string][]> = []\n\n for (let i = 0; i < entries.length; i += 100) {\n chunks.push(entries.slice(i, i + 100))\n }\n\n let result: Record<string, string> = {}\n\n const existingInput = languages.find((l) => l.value === inputLanguage)\n const existingOutput = languages.find((l) => l.value === outputLanguage)\n\n const input = existingInput?.label || inputLanguage\n const output = existingOutput?.label || outputLanguage\n\n // Translate each chunk\n for (const chunk of chunks) {\n const chunkObject = Object.fromEntries(chunk)\n const completion = await openai.beta.chat.completions.parse({\n model,\n messages: [\n {\n content: `You are a bot that translates the values of a locales JSON. ${\n context\n ? `The user provided some additional context or guidelines about what to fill in the blanks: \\\"${context}\\\". `\n : \"\"\n }The user provides you a JSON with a field named \"inputLanguage\", which defines the language the values of the JSON are defined in. It also has a field named \"outputLanguage\", which defines the language you should translate the values to. The last field is named \"data\", which includes the object with the values to translate. The keys of the values should never be changed. You output only a JSON, which has the same keys as the input, but with translated values. I give you an example input: {\"inputLanguage\": \"English\", outputLanguage: \"German\", \"keys\": {\"hello\": \"Hello\", \"world\": \"World\"}}. The output should be {\"hello\": \"Hallo\", \"world\": \"Welt\"}.`,\n role: \"system\",\n },\n {\n content: JSON.stringify({\n inputLanguage: input,\n outputLanguage: output,\n data: chunkObject,\n }),\n role: \"user\",\n },\n ],\n response_format: {\n type: \"json_object\",\n },\n })\n\n const translatedChunk = JSON.parse(\n completion.choices[0].message.content,\n ) as Record<string, string>\n\n // Merge translated chunk with result\n result = { ...result, ...translatedChunk }\n\n // Optional: Add a small delay between chunks to avoid rate limiting\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n\n return result\n}\n\nexport const loadLocalesFile = async (\n loadPath:\n | string\n | ((locale: string, namespace: string) => Promise<Record<string, string>>),\n locale: string,\n namespace: string,\n) => {\n if (typeof loadPath === \"string\") {\n const resolvedPath = loadPath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n const content = fs.readFileSync(resolvedPath, \"utf-8\")\n const json = JSON.parse(content)\n\n return json as Record<string, string>\n }\n\n return loadPath(locale, namespace)\n}\n\nexport const writeLocalesFile = async (\n savePath:\n | string\n | ((\n locale: string,\n namespace: string,\n data: Record<string, string>,\n ) => Promise<void>),\n locale: string,\n namespace: string,\n data: Record<string, string>,\n) => {\n if (typeof savePath === \"string\") {\n const resolvedSavePath = savePath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n fs.writeFileSync(resolvedSavePath, JSON.stringify(data, null, 2))\n\n return\n }\n\n await savePath(locale, namespace, data)\n}\n\nexport const getPureKey = (\n key: string,\n namespace?: string,\n isDefault?: boolean,\n) => {\n const splitted = key.split(\":\")\n\n if (splitted.length === 1) {\n if (isDefault) {\n return key\n }\n\n return null\n }\n\n if (splitted[0] === namespace) {\n return splitted[1]\n }\n\n return null\n}\n\nexport const getMissingKeys = async ({\n globPatterns,\n namespaces,\n defaultNamespace,\n defaultLocale,\n loadPath,\n}: Configuration) => {\n const parser = new Parser({\n nsSeparator: false,\n keySeparator: false,\n })\n\n const files = await glob([...globPatterns, \"!**/node_modules/**\"])\n\n const keys = []\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\")\n parser.parseFuncFromString(content, { list: [\"t\"] }, (key: string) => {\n keys.push(key)\n })\n }\n\n const uniqueKeys = removeDuplicatesFromArray(keys)\n\n const newKeys = []\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n console.log(Object.keys(existingKeys).length, \"existing keys\")\n\n for (const key of uniqueKeys) {\n const pureKey = getPureKey(key, namespace, namespace === defaultNamespace)\n\n if (!pureKey) {\n continue\n }\n\n if (!existingKeys[pureKey]) {\n newKeys.push({ key: pureKey, namespace })\n }\n }\n }\n\n return newKeys\n}\n\nexport const getTextInput = async (prompt: string) => {\n const input = await prompts({\n name: \"value\",\n type: \"text\",\n message: prompt,\n onState: (state) => {\n if (state.aborted) {\n process.nextTick(() => {\n process.exit(0)\n })\n }\n },\n })\n\n return input.value as string\n}\n\nexport const checkAllKeysExist = async ({\n namespaces,\n defaultLocale,\n loadPath,\n locales,\n context,\n openai,\n savePath,\n disableTranslation,\n model,\n}: Configuration) => {\n if (disableTranslation) {\n return\n }\n\n for (const namespace of namespaces) {\n const defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n const localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n const translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model,\n })\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n // Save the updated translations\n writeLocalesFile(savePath, locale, namespace, updatedLocaleKeys)\n console.log(\n `✓ Translated and saved missing keys for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n}\n\nexport class TranslationError extends Error {\n constructor(\n message: string,\n public locale?: string,\n public namespace?: string,\n public cause?: Error,\n ) {\n super(message)\n this.name = \"TranslationError\"\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport { getMissingKeys } from \"../lib/utils\"\n\nexport const checkMissing = async (config: Configuration) => {\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length > 0) {\n console.error(\"Error: Missing translations found!\")\n process.exit(1)\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nconst getKeyToReplace = async (keys: Record<string, string>) => {\n const keyToReplace = await getTextInput(\n \"Enter the key to replace the translation for: \",\n )\n\n if (!keys[keyToReplace]) {\n console.log(`The key \"${keyToReplace}\" does not exist.`)\n return await getKeyToReplace(keys)\n }\n\n console.log(`The key \"${keyToReplace}\" exists.`)\n return keyToReplace\n}\n\nexport const replaceTranslation = async (\n config: Configuration,\n key?: string,\n) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n defaultNamespace,\n namespaces,\n locales,\n globPatterns,\n context,\n openai,\n } = config\n\n const keys = await loadLocalesFile(\n config.loadPath,\n config.defaultLocale,\n config.defaultNamespace,\n )\n\n let keyToReplace: string\n\n if (key) {\n if (keys[key]) {\n keyToReplace = key\n console.log(`The key \"${keyToReplace}\" exists.`)\n } else {\n console.log(`The key \"${key}\" does not exist.`)\n keyToReplace = await getKeyToReplace(keys)\n }\n } else {\n keyToReplace = await getKeyToReplace(keys)\n }\n\n console.log(\n `The current translation in ${defaultLocale} for \"${keyToReplace}\" is \"${keys[keyToReplace]}\".`,\n )\n\n const newTranslation = await getTextInput(\"Enter the new translation: \")\n\n for (const locale of locales) {\n let newValue = \"\"\n if (locale === defaultLocale) {\n newValue = newTranslation\n } else {\n const translation = await translateKey({\n context,\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n object: {\n [keyToReplace]: newTranslation,\n },\n openai,\n model: config.model,\n })\n\n newValue = translation[keyToReplace]\n }\n\n const existingKeys = await loadLocalesFile(\n loadPath,\n locale,\n defaultNamespace,\n )\n\n existingKeys[keyToReplace] = newValue\n\n writeLocalesFile(savePath, locale, defaultNamespace, existingKeys)\n\n console.log(\n `The new translation for \"${keyToReplace}\" in ${locale} is \"${newValue}\".`,\n )\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n checkAllKeysExist,\n getMissingKeys,\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const translateMissing = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n disableTranslation,\n } = config\n\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length === 0) {\n console.log(\"No new keys found.\")\n\n await checkAllKeysExist(config)\n\n return\n }\n\n console.log(\n `${newKeys.length} keys are missing. Please provide the values for the following keys in ${defaultLocale}:`,\n )\n\n const newKeysWithDefaultLocale = []\n\n for (const newKey of newKeys) {\n const answer = await getTextInput(newKey.key)\n\n newKeysWithDefaultLocale.push({\n key: newKey.key,\n namespace: newKey.namespace,\n value: answer,\n })\n }\n\n const newKeysObject = newKeysWithDefaultLocale.reduce((prev, next) => {\n prev[next.key] = next.value\n\n return prev\n }, {})\n\n const allLocales = disableTranslation ? [defaultLocale] : locales\n\n for (const locale of allLocales) {\n let translatedValues = {}\n\n if (locale === defaultLocale) {\n translatedValues = newKeysObject\n } else {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: newKeysObject,\n openai,\n model: config.model,\n })\n }\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(loadPath, locale, namespace)\n\n const relevantKeys = newKeysWithDefaultLocale.filter(\n (key) => key.namespace === namespace,\n )\n\n if (relevantKeys.length === 0) {\n continue\n }\n\n for (const key of relevantKeys) {\n existingKeys[key.key] = translatedValues[key.key]\n }\n\n writeLocalesFile(savePath, locale, namespace, existingKeys)\n }\n }\n\n await checkAllKeysExist(config)\n\n console.log(`Successfully translated ${newKeys.length} keys.`)\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n TranslationError,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const syncLocales = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n } = config\n\n try {\n for (const namespace of namespaces) {\n let defaultLocaleKeys: Record<string, string>\n\n try {\n defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to load default locale file for namespace \"${namespace}\"`,\n defaultLocale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n let localeKeys: Record<string, string>\n try {\n localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n } catch (error) {\n console.warn(\n `Warning: Could not load locale file for ${locale} (namespace: ${namespace}). Creating new file.`,\n )\n localeKeys = {}\n }\n\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n let translatedValues: Record<string, string>\n try {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model: config.model,\n })\n } catch (error) {\n throw new TranslationError(\n `Failed to translate keys for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n try {\n await writeLocalesFile(\n savePath,\n locale,\n namespace,\n updatedLocaleKeys,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to save translations for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n console.log(\n `Successfully translated and saved ${Object.keys(missingKeys).length} keys for ${locale} (namespace: ${namespace})`,\n )\n } else {\n console.log(\n `No missing keys found for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n } catch (error) {\n if (error instanceof TranslationError) {\n throw error\n }\n throw new TranslationError(\n \"An unexpected error occurred during translation\",\n undefined,\n undefined,\n error instanceof Error ? error : undefined,\n )\n }\n}\n","import { Command } from \"commander\"\nimport dotenv from \"dotenv\"\nimport OpenAI from \"openai\"\nimport { checkMissing } from \"./commands/check-missing\"\nimport { replaceTranslation } from \"./commands/replace\"\nimport { translateMissing } from \"./commands/scan\"\nimport { syncLocales } from \"./commands/sync-locales\"\nimport type { CommandType, Configuration } from \"./lib/types\"\nimport { loadConfig } from \"./lib/utils\"\n\n// Only run CLI initialization when this file is executed directly\n\nconst program = new Command()\n\nprogram\n .name(\"i18n-magic\")\n .description(\n \"CLI to help you manage your locales JSON with translations, replacements, etc. with OpenAI.\",\n )\n .version(\"0.2.0\")\n .option(\"-c, --config <path>\", \"path to config file\")\n .option(\"-e, --env <path>\", \"path to .env file\")\n\nconst commands: CommandType[] = [\n {\n name: \"scan\",\n description:\n \"Scan for missing translations, get prompted for each, translate it to the other locales and save it to the JSON file.\",\n action: translateMissing,\n },\n {\n name: \"replace\",\n description:\n \"Replace a translation based on the key, and translate it to the other locales and save it to the JSON file.\",\n action: replaceTranslation,\n },\n {\n name: \"check-missing\",\n description:\n \"Check if there are any missing translations. Useful for a CI/CD pipeline or husky hook.\",\n action: checkMissing,\n },\n {\n name: \"sync\",\n description:\n \"Sync the translations from the default locale to the other locales. Useful for a CI/CD pipeline or husky hook.\",\n action: syncLocales,\n },\n]\n\nfor (const command of commands) {\n const cmd = program.command(command.name).description(command.description)\n\n // Add key option to replace command\n if (command.name === \"replace\") {\n cmd.option(\"-k, --key <key>\", \"translation key to replace\")\n }\n\n cmd.action(async (options) => {\n const res = dotenv.config({\n path: program.opts().env || \".env\",\n })\n\n const config: Configuration = await loadConfig({\n configPath: program.opts().config,\n })\n\n const isGemini = (config.model as string)?.includes(\"gemini\")\n\n // Get API key from environment or config\n const openaiKey = res.parsed.OPENAI_API_KEY || config.OPENAI_API_KEY\n const geminiKey = res.parsed.GEMINI_API_KEY || config.GEMINI_API_KEY\n\n // Select appropriate key based on model type\n const key = isGemini ? geminiKey : openaiKey\n\n if (!key) {\n const keyType = isGemini ? \"GEMINI_API_KEY\" : \"OPENAI_API_KEY\"\n console.error(\n `Please provide a${isGemini ? \" Gemini\" : \"n OpenAI\"} API key in your .env file or config, called ${keyType}.`,\n )\n process.exit(1)\n }\n\n const openai = new OpenAI({\n apiKey: key,\n ...(isGemini && {\n baseURL: \"https://generativelanguage.googleapis.com/v1beta/openai/\",\n }),\n })\n\n if (command.name === \"replace\" && options.key) {\n command.action({ ...config, openai }, options.key)\n } else {\n command.action({ ...config, openai })\n }\n })\n}\n\nprogram.parse(process.argv)\n"],"names":["languages","label","name","value","loadConfig","_ref","_ref$configPath","configPath","filePath","path","join","process","cwd","fs","existsSync","console","error","exit","config","require","removeDuplicatesFromArray","arr","filter","item","index","indexOf","translateKey","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","inputLanguage","context","object","openai","outputLanguage","model","entries","chunks","i","result","existingInput","existingOutput","input","output","_i","_chunks","chunk","chunkObject","completion","translatedChunk","wrap","_callee$","_context","prev","next","Object","length","push","slice","find","l","fromEntries","beta","chat","completions","parse","messages","content","role","JSON","stringify","data","response_format","type","sent","choices","message","_extends","Promise","resolve","setTimeout","abrupt","stop","_x","apply","arguments","loadLocalesFile","_ref4","_callee2","loadPath","locale","namespace","resolvedPath","json","_callee2$","_context2","replace","readFileSync","_x2","_x3","_x4","writeLocalesFile","_ref5","_callee3","savePath","resolvedSavePath","_callee3$","_context3","writeFileSync","_x5","_x6","_x7","_x8","getPureKey","key","isDefault","splitted","split","getMissingKeys","_ref7","_callee4","_ref6","globPatterns","namespaces","defaultNamespace","defaultLocale","parser","files","keys","_iterator","_step","file","uniqueKeys","newKeys","_iterator2","_step2","existingKeys","_iterator3","_step3","pureKey","_callee4$","_context4","Parser","nsSeparator","keySeparator","glob","concat","_createForOfIteratorHelperLoose","done","parseFuncFromString","list","log","_x9","getTextInput","_ref8","_callee5","prompt","_callee5$","_context5","prompts","onState","state","aborted","nextTick","_x10","checkAllKeysExist","_ref10","_callee6","_ref9","locales","disableTranslation","_iterator4","_step4","defaultLocaleKeys","_iterator5","_step5","localeKeys","missingKeys","_i2","_Object$entries","_Object$entries$_i","translatedValues","updatedLocaleKeys","_callee6$","_context6","_x11","TranslationError","_Error","cause","_this","call","_inheritsLoose","_wrapNativeSuper","Error","checkMissing","getKeyToReplace","keyToReplace","replaceTranslation","newTranslation","newValue","_object","translation","translateMissing","newKeysWithDefaultLocale","newKey","answer","newKeysObject","allLocales","_loop","reduce","relevantKeys","_loop$","delegateYield","t0","syncLocales","undefined","t1","warn","t2","t3","t4","program","Command","description","version","option","commands","action","command","_commands","cmd","options","_config$model","res","isGemini","openaiKey","geminiKey","keyType","dotenv","opts","env","includes","parsed","OPENAI_API_KEY","GEMINI_API_KEY","OpenAI","apiKey","baseURL","argv"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAMA,SAAS,GAAG,CACvB;AACEC,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,IAAI;AACXC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,WAAW;AAClBC,EAAAA,IAAI,EAAE,YAAY;AAClBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,IAAI,EAAE,UAAU;AAChBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,UAAU;AAChBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,IAAI,EAAE,UAAU;AAChBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,WAAW;AAClBC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,kBAAkB;AACzBC,EAAAA,IAAI,EAAE,YAAY;AAClBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,YAAY;AAClBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,CACF;;ACpIM,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAAC,IAAA,EAEM;AAAA,EAAA,IAAAC,eAAA,GAAAD,IAAA,CAD3BE,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,eAAe,GAAAA,eAAA,CAAA;AAE5B,EAAA,IAAME,QAAQ,GAAGC,IAAI,CAACC,IAAI,CAACC,OAAO,CAACC,GAAG,EAAE,EAAEL,UAAU,CAAC,CAAA;AAErD,EAAA,IAAI,CAACM,EAAE,CAACC,UAAU,CAACN,QAAQ,CAAC,EAAE;AAC5BO,IAAAA,OAAO,CAACC,KAAK,CAAC,6BAA6B,EAAER,QAAQ,CAAC,CAAA;AACtDG,IAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,GAAA;EAEA,IAAI;AACF,IAAA,IAAMC,MAAM,GAAGC,OAAO,CAACX,QAAQ,CAAC,CAAA;AAChC;AACA,IAAA,OAAOU,MAAM,CAAA;GACd,CAAC,OAAOF,KAAK,EAAE;AACdD,IAAAA,OAAO,CAACC,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC,CAAA;AACnDL,IAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,GAAA;AACF,CAAC,CAAA;AAEK,SAAUG,yBAAyBA,CAAIC,GAAQ,EAAA;AACnD,EAAA,OAAOA,GAAG,CAACC,MAAM,CAAC,UAACC,IAAI,EAAEC,KAAK,EAAA;AAAA,IAAA,OAAKH,GAAG,CAACI,OAAO,CAACF,IAAI,CAAC,KAAKC,KAAK,CAAA;GAAC,CAAA,CAAA;AACjE,CAAA;AAEO,IAAME,YAAY,gBAAA,YAAA;EAAA,IAAAC,KAAA,gBAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAAC,KAAA,EAAA;AAAA,IAAA,IAAAC,aAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,MAAA,EAAAC,cAAA,EAAAC,KAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,CAAA,EAAAC,MAAA,EAAAC,aAAA,EAAAC,cAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,EAAA,EAAAC,OAAA,EAAAC,KAAA,EAAAC,WAAA,EAAAC,UAAA,EAAAC,eAAA,CAAA;AAAA,IAAA,OAAAvB,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAC1BxB,UAAAA,aAAa,GAAAD,KAAA,CAAbC,aAAa,EACbC,OAAO,GAAAF,KAAA,CAAPE,OAAO,EACPC,MAAM,GAAAH,KAAA,CAANG,MAAM,EACNC,MAAM,GAAAJ,KAAA,CAANI,MAAM,EACNC,cAAc,GAAAL,KAAA,CAAdK,cAAc,EACdC,KAAK,GAAAN,KAAA,CAALM,KAAK,CAAA;AASL;AACMC,UAAAA,OAAO,GAAGmB,MAAM,CAACnB,OAAO,CAACJ,MAAM,CAAC,CAAA;AAChCK,UAAAA,MAAM,GAA8B,EAAE,CAAA;AAE5C,UAAA,KAASC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,OAAO,CAACoB,MAAM,EAAElB,CAAC,IAAI,GAAG,EAAE;AAC5CD,YAAAA,MAAM,CAACoB,IAAI,CAACrB,OAAO,CAACsB,KAAK,CAACpB,CAAC,EAAEA,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;AACxC,WAAA;UAEIC,MAAM,GAA2B,EAAE,CAAA;AAEjCC,UAAAA,aAAa,GAAG3C,SAAS,CAAC8D,IAAI,CAAC,UAACC,CAAC,EAAA;AAAA,YAAA,OAAKA,CAAC,CAAC5D,KAAK,KAAK8B,aAAa,CAAA;WAAC,CAAA,CAAA;AAChEW,UAAAA,cAAc,GAAG5C,SAAS,CAAC8D,IAAI,CAAC,UAACC,CAAC,EAAA;AAAA,YAAA,OAAKA,CAAC,CAAC5D,KAAK,KAAKkC,cAAc,CAAA;WAAC,CAAA,CAAA;UAElEQ,KAAK,GAAG,CAAAF,aAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAbA,aAAa,CAAE1C,KAAK,KAAIgC,aAAa,CAAA;UAC7Ca,MAAM,GAAG,CAAAF,cAAc,IAAA,IAAA,GAAA,KAAA,CAAA,GAAdA,cAAc,CAAE3C,KAAK,KAAIoC,cAAc,CAEtD;UAAAU,EAAA,GAAA,CAAA,EAAAC,OAAA,GACoBR,MAAM,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,EAAAO,EAAA,GAAAC,OAAA,CAAAW,MAAA,CAAA,EAAA;AAAAJ,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAfR,KAAK,GAAAD,OAAA,CAAAD,EAAA,CAAA,CAAA;AACRG,UAAAA,WAAW,GAAGQ,MAAM,CAACM,WAAW,CAACf,KAAK,CAAC,CAAA;AAAAM,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;UAAA,OACpBrB,MAAM,CAAC6B,IAAI,CAACC,IAAI,CAACC,WAAW,CAACC,KAAK,CAAC;AAC1D9B,YAAAA,KAAK,EAALA,KAAK;AACL+B,YAAAA,QAAQ,EAAE,CACR;AACEC,cAAAA,OAAO,oEACLpC,OAAO,GAAA,8FAAA,GAC4FA,OAAO,GAAA,MAAA,GACtG,EACN,CAA8oB,GAAA,4qBAAA;AAC9oBqC,cAAAA,IAAI,EAAE,QAAA;AACP,aAAA,EACD;AACED,cAAAA,OAAO,EAAEE,IAAI,CAACC,SAAS,CAAC;AACtBxC,gBAAAA,aAAa,EAAEY,KAAK;AACpBR,gBAAAA,cAAc,EAAES,MAAM;AACtB4B,gBAAAA,IAAI,EAAExB,WAAAA;eACP,CAAC;AACFqB,cAAAA,IAAI,EAAE,MAAA;AACP,aAAA,CACF;AACDI,YAAAA,eAAe,EAAE;AACfC,cAAAA,IAAI,EAAE,aAAA;AACP,aAAA;AACF,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAvBIzB,UAAU,GAAAI,QAAA,CAAAsB,IAAA,CAAA;AAyBVzB,UAAAA,eAAe,GAAGoB,IAAI,CAACJ,KAAK,CAChCjB,UAAU,CAAC2B,OAAO,CAAC,CAAC,CAAC,CAACC,OAAO,CAACT,OAAO,CACZ,CAE3B;AACA5B,UAAAA,MAAM,GAAAsC,QAAA,CAAA,EAAA,EAAQtC,MAAM,EAAKU,eAAe,CAAE,CAAA;AAE1C;AAAAG,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OACM,IAAIwB,OAAO,CAAC,UAACC,OAAO,EAAA;AAAA,YAAA,OAAKC,UAAU,CAACD,OAAO,EAAE,GAAG,CAAC,CAAA;WAAC,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAAAnC,EAAA,EAAA,CAAA;AAAAQ,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,OAAAF,QAAA,CAAA6B,MAAA,CAAA,QAAA,EAGnD1C,MAAM,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAa,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GACd,CAAA,CAAA,CAAA;EAAA,OAvEYL,SAAAA,YAAYA,CAAA4D,EAAA,EAAA;AAAA,IAAA,OAAA3D,KAAA,CAAA4D,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAuExB,EAAA,CAAA;AAEM,IAAMC,eAAe,gBAAA,YAAA;AAAA,EAAA,IAAAC,KAAA,gBAAA9D,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAG,SAAA6D,QAC7BC,CAAAA,QAE4E,EAC5EC,MAAc,EACdC,SAAiB,EAAA;AAAA,IAAA,IAAAC,YAAA,EAAAzB,OAAA,EAAA0B,IAAA,CAAA;AAAA,IAAA,OAAAnE,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA4C,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1C,IAAA,GAAA0C,SAAA,CAAAzC,IAAA;AAAA,QAAA,KAAA,CAAA;UAAA,IAEb,EAAA,OAAOmC,QAAQ,KAAK,QAAQ,CAAA,EAAA;AAAAM,YAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACxBsC,UAAAA,YAAY,GAAGH,QAAQ,CAC1BO,OAAO,CAAC,SAAS,EAAEN,MAAM,CAAC,CAC1BM,OAAO,CAAC,QAAQ,EAAEL,SAAS,CAAC,CAAA;UAEzBxB,OAAO,GAAGzD,EAAE,CAACuF,YAAY,CAACL,YAAY,EAAE,OAAO,CAAC,CAAA;AAChDC,UAAAA,IAAI,GAAGxB,IAAI,CAACJ,KAAK,CAACE,OAAO,CAAC,CAAA;AAAA,UAAA,OAAA4B,SAAA,CAAAd,MAAA,CAAA,QAAA,EAEzBY,IAA8B,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;UAAA,OAAAE,SAAA,CAAAd,MAAA,CAAA,QAAA,EAGhCQ,QAAQ,CAACC,MAAM,EAAEC,SAAS,CAAC,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAI,SAAA,CAAAb,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAM,QAAA,CAAA,CAAA;GACnC,CAAA,CAAA,CAAA;AAAA,EAAA,OAAA,SAnBYF,eAAeA,CAAAY,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,IAAA,OAAAb,KAAA,CAAAH,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAmB3B,EAAA,CAAA;AAEM,IAAMgB,gBAAgB,gBAAA,YAAA;AAAA,EAAA,IAAAC,KAAA,gBAAA7E,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA4E,QAAAA,CAC9BC,QAMuB,EACvBd,MAAc,EACdC,SAAiB,EACjBpB,IAA4B,EAAA;AAAA,IAAA,IAAAkC,gBAAA,CAAA;AAAA,IAAA,OAAA/E,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAwD,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAtD,IAAA,GAAAsD,SAAA,CAAArD,IAAA;AAAA,QAAA,KAAA,CAAA;UAAA,IAExB,EAAA,OAAOkD,QAAQ,KAAK,QAAQ,CAAA,EAAA;AAAAG,YAAAA,SAAA,CAAArD,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACxBmD,UAAAA,gBAAgB,GAAGD,QAAQ,CAC9BR,OAAO,CAAC,SAAS,EAAEN,MAAM,CAAC,CAC1BM,OAAO,CAAC,QAAQ,EAAEL,SAAS,CAAC,CAAA;AAE/BjF,UAAAA,EAAE,CAACkG,aAAa,CAACH,gBAAgB,EAAEpC,IAAI,CAACC,SAAS,CAACC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;UAAA,OAAAoC,SAAA,CAAA1B,MAAA,CAAA,QAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA0B,UAAAA,SAAA,CAAArD,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OAK7DkD,QAAQ,CAACd,MAAM,EAAEC,SAAS,EAAEpB,IAAI,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAoC,SAAA,CAAAzB,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAqB,QAAA,CAAA,CAAA;GACxC,CAAA,CAAA,CAAA;EAAA,OAvBYF,SAAAA,gBAAgBA,CAAAQ,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,IAAA,OAAAV,KAAA,CAAAlB,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAuB5B,EAAA,CAAA;AAEM,IAAM4B,UAAU,GAAG,SAAbA,UAAUA,CACrBC,GAAW,EACXvB,SAAkB,EAClBwB,SAAmB,EACjB;AACF,EAAA,IAAMC,QAAQ,GAAGF,GAAG,CAACG,KAAK,CAAC,GAAG,CAAC,CAAA;AAE/B,EAAA,IAAID,QAAQ,CAAC5D,MAAM,KAAK,CAAC,EAAE;AACzB,IAAA,IAAI2D,SAAS,EAAE;AACb,MAAA,OAAOD,GAAG,CAAA;AACZ,KAAA;AAEA,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,IAAIE,QAAQ,CAAC,CAAC,CAAC,KAAKzB,SAAS,EAAE;IAC7B,OAAOyB,QAAQ,CAAC,CAAC,CAAC,CAAA;AACpB,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAEM,IAAME,cAAc,gBAAA,YAAA;EAAA,IAAAC,KAAA,gBAAA9F,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA6F,QAAAA,CAAAC,KAAA,EAAA;AAAA,IAAA,IAAAC,YAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAAC,aAAA,EAAApC,QAAA,EAAAqC,MAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAhE,OAAA,EAAAiE,UAAA,EAAAC,OAAA,EAAAC,UAAA,EAAAC,MAAA,EAAA5C,SAAA,EAAA6C,YAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAxB,GAAA,EAAAyB,OAAA,CAAA;AAAA,IAAA,OAAAjH,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA0F,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAxF,IAAA,GAAAwF,SAAA,CAAAvF,IAAA;AAAA,QAAA,KAAA,CAAA;UAC5BoE,YAAY,GAAAD,KAAA,CAAZC,YAAY,EACZC,UAAU,GAAAF,KAAA,CAAVE,UAAU,EACVC,gBAAgB,GAAAH,KAAA,CAAhBG,gBAAgB,EAChBC,aAAa,GAAAJ,KAAA,CAAbI,aAAa,EACbpC,QAAQ,GAAAgC,KAAA,CAARhC,QAAQ,CAAA;UAEFqC,MAAM,GAAG,IAAIgB,MAAM,CAAC;AACxBC,YAAAA,WAAW,EAAE,KAAK;AAClBC,YAAAA,YAAY,EAAE,KAAA;AACf,WAAA,CAAC,CAAA;AAAAH,UAAAA,SAAA,CAAAvF,IAAA,GAAA,CAAA,CAAA;UAAA,OAEkB2F,IAAI,IAAAC,MAAA,CAAKxB,YAAY,EAAE,CAAA,qBAAqB,EAAC,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAA5DK,KAAK,GAAAc,SAAA,CAAAnE,IAAA,CAAA;AAELsD,UAAAA,IAAI,GAAG,EAAE,CAAA;UAEf,KAAAC,SAAA,GAAAkB,+BAAA,CAAmBpB,KAAK,CAAAG,EAAAA,CAAAA,CAAAA,KAAA,GAAAD,SAAA,EAAAmB,EAAAA,IAAA,GAAE;YAAfjB,IAAI,GAAAD,KAAA,CAAAlI,KAAA,CAAA;YACPmE,OAAO,GAAGzD,EAAE,CAACuF,YAAY,CAACkC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC9CL,YAAAA,MAAM,CAACuB,mBAAmB,CAAClF,OAAO,EAAE;cAAEmF,IAAI,EAAE,CAAC,GAAG,CAAA;aAAG,EAAE,UAACpC,GAAW,EAAI;AACnEc,cAAAA,IAAI,CAACvE,IAAI,CAACyD,GAAG,CAAC,CAAA;AAChB,aAAC,CAAC,CAAA;AACJ,WAAA;AAEMkB,UAAAA,UAAU,GAAGnH,yBAAyB,CAAC+G,IAAI,CAAC,CAAA;AAE5CK,UAAAA,OAAO,GAAG,EAAE,CAAA;UAAAC,UAAA,GAAAa,+BAAA,CAEMxB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAY,MAAA,GAAAD,UAAA,EAAA,EAAAc,IAAA,EAAA;AAAAP,YAAAA,SAAA,CAAAvF,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAvBqC,SAAS,GAAA4C,MAAA,CAAAvI,KAAA,CAAA;AAAA6I,UAAAA,SAAA,CAAAvF,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OACSgC,eAAe,CACxCG,QAAQ,EACRoC,aAAa,EACblC,SAAS,CACV,CAAA;AAAA,QAAA,KAAA,EAAA;UAJK6C,YAAY,GAAAK,SAAA,CAAAnE,IAAA,CAAA;AAMlB9D,UAAAA,OAAO,CAAC2I,GAAG,CAAChG,MAAM,CAACyE,IAAI,CAACQ,YAAY,CAAC,CAAChF,MAAM,EAAE,eAAe,CAAC,CAAA;UAAAiF,UAAA,GAAAU,+BAAA,CAE5Cf,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAM,MAAA,GAAAD,UAAA,EAAA,EAAAW,IAAA,EAAA;AAAAP,YAAAA,SAAA,CAAAvF,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjB4D,GAAG,GAAAwB,MAAA,CAAA1I,KAAA,CAAA;UACN2I,OAAO,GAAG1B,UAAU,CAACC,GAAG,EAAEvB,SAAS,EAAEA,SAAS,KAAKiC,gBAAgB,CAAC,CAAA;AAAA,UAAA,IAErEe,OAAO,EAAA;AAAAE,YAAAA,SAAA,CAAAvF,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAuF,SAAA,CAAA5D,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAIZ,UAAA,IAAI,CAACuD,YAAY,CAACG,OAAO,CAAC,EAAE;YAC1BN,OAAO,CAAC5E,IAAI,CAAC;AAAEyD,cAAAA,GAAG,EAAEyB,OAAO;AAAEhD,cAAAA,SAAS,EAATA,SAAAA;AAAW,aAAA,CAAC,CAAA;AAC3C,WAAA;AAAC,QAAA,KAAA,EAAA;AAAAkD,UAAAA,SAAA,CAAAvF,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAuF,UAAAA,SAAA,CAAAvF,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,OAAAuF,SAAA,CAAA5D,MAAA,CAAA,QAAA,EAIEoD,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAQ,SAAA,CAAA3D,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAsC,QAAA,CAAA,CAAA;GACf,CAAA,CAAA,CAAA;EAAA,OAlDYF,SAAAA,cAAcA,CAAAkC,GAAA,EAAA;AAAA,IAAA,OAAAjC,KAAA,CAAAnC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAkD1B,EAAA,CAAA;AAEM,IAAMoE,YAAY,gBAAA,YAAA;EAAA,IAAAC,KAAA,gBAAAjI,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAgI,QAAAA,CAAOC,MAAc,EAAA;AAAA,IAAA,IAAAlH,KAAA,CAAA;AAAA,IAAA,OAAAhB,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA2G,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAzG,IAAA,GAAAyG,SAAA,CAAAxG,IAAA;AAAA,QAAA,KAAA,CAAA;AAAAwG,UAAAA,SAAA,CAAAxG,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OAC3ByG,OAAO,CAAC;AAC1BhK,YAAAA,IAAI,EAAE,OAAO;AACb0E,YAAAA,IAAI,EAAE,MAAM;AACZG,YAAAA,OAAO,EAAEgF,MAAM;AACfI,YAAAA,OAAO,EAAE,SAAAA,OAACC,CAAAA,KAAK,EAAI;cACjB,IAAIA,KAAK,CAACC,OAAO,EAAE;gBACjB1J,OAAO,CAAC2J,QAAQ,CAAC,YAAK;AACpB3J,kBAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,iBAAC,CAAC,CAAA;AACJ,eAAA;AACF,aAAA;AACD,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAXI4B,KAAK,GAAAoH,SAAA,CAAApF,IAAA,CAAA;AAAA,UAAA,OAAAoF,SAAA,CAAA7E,MAAA,CAaJvC,QAAAA,EAAAA,KAAK,CAAC1C,KAAe,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAA8J,SAAA,CAAA5E,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAyE,QAAA,CAAA,CAAA;GAC7B,CAAA,CAAA,CAAA;EAAA,OAfYF,SAAAA,YAAYA,CAAAW,IAAA,EAAA;AAAA,IAAA,OAAAV,KAAA,CAAAtE,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAexB,EAAA,CAAA;AAEM,IAAMgF,iBAAiB,gBAAA,YAAA;EAAA,IAAAC,MAAA,gBAAA7I,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA4I,QAAAA,CAAAC,KAAA,EAAA;IAAA,IAAA7C,UAAA,EAAAE,aAAA,EAAApC,QAAA,EAAAgF,OAAA,EAAA1I,OAAA,EAAAE,MAAA,EAAAuE,QAAA,EAAAkE,kBAAA,EAAAvI,KAAA,EAAAwI,UAAA,EAAAC,MAAA,EAAAjF,SAAA,EAAAkF,iBAAA,EAAAC,UAAA,EAAAC,MAAA,EAAArF,MAAA,EAAAsF,UAAA,EAAAC,WAAA,EAAAC,GAAA,EAAAC,eAAA,EAAAC,kBAAA,EAAAlE,GAAA,EAAAlH,KAAA,EAAAqL,gBAAA,EAAAC,iBAAA,CAAA;AAAA,IAAA,OAAA5J,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAqI,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAnI,IAAA,GAAAmI,SAAA,CAAAlI,IAAA;AAAA,QAAA,KAAA,CAAA;UAC/BqE,UAAU,GAAA6C,KAAA,CAAV7C,UAAU,EACVE,aAAa,GAAA2C,KAAA,CAAb3C,aAAa,EACbpC,QAAQ,GAAA+E,KAAA,CAAR/E,QAAQ,EACRgF,OAAO,GAAAD,KAAA,CAAPC,OAAO,EACP1I,OAAO,GAAAyI,KAAA,CAAPzI,OAAO,EACPE,MAAM,GAAAuI,KAAA,CAANvI,MAAM,EACNuE,QAAQ,GAAAgE,KAAA,CAARhE,QAAQ,EACRkE,kBAAkB,GAAAF,KAAA,CAAlBE,kBAAkB,EAClBvI,KAAK,GAAAqI,KAAA,CAALrI,KAAK,CAAA;AAAA,UAAA,IAAA,CAEDuI,kBAAkB,EAAA;AAAAc,YAAAA,SAAA,CAAAlI,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAkI,SAAA,CAAAvG,MAAA,CAAA,QAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;UAAA0F,UAAA,GAAAxB,+BAAA,CAIExB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,IAAA,CAAAiD,MAAA,GAAAD,UAAA,EAAA,EAAAvB,IAAA,EAAA;AAAAoC,YAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAvBqC,SAAS,GAAAiF,MAAA,CAAA5K,KAAA,CAAA;AAAAwL,UAAAA,SAAA,CAAAlI,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OACcgC,eAAe,CAC7CG,QAAQ,EACRoC,aAAa,EACblC,SAAS,CACV,CAAA;AAAA,QAAA,KAAA,CAAA;UAJKkF,iBAAiB,GAAAW,SAAA,CAAA9G,IAAA,CAAA;UAAAoG,UAAA,GAAA3B,+BAAA,CAMFsB,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAM,MAAA,GAAAD,UAAA,EAAA,EAAA1B,IAAA,EAAA;AAAAoC,YAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBoC,MAAM,GAAAqF,MAAA,CAAA/K,KAAA,CAAA;UAAA,IACX0F,EAAAA,MAAM,KAAKmC,aAAa,CAAA,EAAA;AAAA2D,YAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAkI,SAAA,CAAAvG,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAuG,UAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEHgC,eAAe,CAACG,QAAQ,EAAEC,MAAM,EAAEC,SAAS,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAA/DqF,UAAU,GAAAQ,SAAA,CAAA9G,IAAA,CAAA;UACVuG,WAAW,GAA2B,EAAE,CAE9C;AACA,UAAA,KAAAC,GAAA,GAAAC,CAAAA,EAAAA,eAAA,GAA2B5H,MAAM,CAACnB,OAAO,CAACyI,iBAAiB,CAAC,EAAAK,GAAA,GAAAC,eAAA,CAAA3H,MAAA,EAAA0H,GAAA,EAAE,EAAA;YAAAE,kBAAA,GAAAD,eAAA,CAAAD,GAAA,CAAA,EAAlDhE,GAAG,GAAAkE,kBAAA,CAAA,CAAA,CAAA,EAAEpL,KAAK,GAAAoL,kBAAA,CAAA,CAAA,CAAA,CAAA;AACpB,YAAA,IAAI,CAACJ,UAAU,CAAC9D,GAAG,CAAC,EAAE;AACpB+D,cAAAA,WAAW,CAAC/D,GAAG,CAAC,GAAGlH,KAAK,CAAA;AAC1B,aAAA;AACF,WAAA;AAEA;UAAA,IACIuD,EAAAA,MAAM,CAACyE,IAAI,CAACiD,WAAW,CAAC,CAACzH,MAAM,GAAG,CAAC,CAAA,EAAA;AAAAgI,YAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACrC1C,UAAAA,OAAO,CAAC2I,GAAG,CAAA,QAAA,GACAhG,MAAM,CAACyE,IAAI,CAACiD,WAAW,CAAC,CAACzH,MAAM,GAAoBkC,mBAAAA,GAAAA,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CAC/F,CAAA;AAAA6F,UAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAE8B/B,YAAY,CAAC;AAC1CO,YAAAA,aAAa,EAAE+F,aAAa;AAC5B3F,YAAAA,cAAc,EAAEwD,MAAM;AACtB3D,YAAAA,OAAO,EAAPA,OAAO;AACPC,YAAAA,MAAM,EAAEiJ,WAAW;AACnBhJ,YAAAA,MAAM,EAANA,MAAM;AACNE,YAAAA,KAAK,EAALA,KAAAA;AACD,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAPIkJ,gBAAgB,GAAAG,SAAA,CAAA9G,IAAA,CAAA;AAStB;AACM4G,UAAAA,iBAAiB,GAAAzG,QAAA,CAAA,EAAA,EAClBmG,UAAU,EACVK,gBAAgB,CAGrB,CAAA;UACAhF,gBAAgB,CAACG,QAAQ,EAAEd,MAAM,EAAEC,SAAS,EAAE2F,iBAAiB,CAAC,CAAA;AAChE1K,UAAAA,OAAO,CAAC2I,GAAG,CAAA,+CAAA,GACkC7D,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CAC9E,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA6F,UAAAA,SAAA,CAAAlI,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAkI,UAAAA,SAAA,CAAAlI,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAkI,SAAA,CAAAtG,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAqF,QAAA,CAAA,CAAA;GAIR,CAAA,CAAA,CAAA;EAAA,OAhEYF,SAAAA,iBAAiBA,CAAAoB,IAAA,EAAA;AAAA,IAAA,OAAAnB,MAAA,CAAAlF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAgE7B,EAAA,CAAA;AAEYqG,IAAAA,gBAAiB,0BAAAC,MAAA,EAAA;EAC5B,SAAAD,gBAAAA,CACE9G,OAAe,EACRc,MAAe,EACfC,SAAkB,EAClBiG,KAAa,EAAA;AAAA,IAAA,IAAAC,KAAA,CAAA;AAEpBA,IAAAA,KAAA,GAAAF,MAAA,CAAAG,IAAA,CAAA,IAAA,EAAMlH,OAAO,CAAC,IAAA,IAAA,CAAA;AAAAiH,IAAAA,KAAA,CAJPnG,MAAA,GAAA,KAAA,CAAA,CAAA;AAAAmG,IAAAA,KAAA,CACAlG,SAAA,GAAA,KAAA,CAAA,CAAA;AAAAkG,IAAAA,KAAA,CACAD,KAAA,GAAA,KAAA,CAAA,CAAA;IAFAC,KAAA,CAAMnG,MAAA,GAANA,MAAM,CAAA;IACNmG,KAAA,CAASlG,SAAA,GAATA,SAAS,CAAA;IACTkG,KAAA,CAAKD,KAAA,GAALA,KAAK,CAAA;IAGZC,KAAA,CAAK9L,IAAI,GAAG,kBAAkB,CAAA;AAAA,IAAA,OAAA8L,KAAA,CAAA;AAChC,GAAA;EAACE,cAAA,CAAAL,gBAAA,EAAAC,MAAA,CAAA,CAAA;AAAA,EAAA,OAAAD,gBAAA,CAAA;AAAA,CAAAM,eAAAA,gBAAA,CATmCC,KAAK,CAAA,CAAA;;AClTpC,IAAMC,YAAY,gBAAA,YAAA;EAAA,IAAAhM,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOb,MAAqB,EAAA;AAAA,IAAA,IAAAsH,OAAA,CAAA;AAAA,IAAA,OAAA3G,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAChCgE,cAAc,CAACvG,MAAM,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAAtCsH,OAAO,GAAAjF,QAAA,CAAAsB,IAAA,CAAA;AAEb,UAAA,IAAI2D,OAAO,CAAC7E,MAAM,GAAG,CAAC,EAAE;AACtB5C,YAAAA,OAAO,CAACC,KAAK,CAAC,oCAAoC,CAAC,CAAA;AACnDL,YAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,WAAA;AAAC,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAsC,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GACF,CAAA,CAAA,CAAA;EAAA,OAPYsK,SAAAA,YAAYA,CAAA/G,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAOxB,EAAA;;ACFD,IAAM8G,eAAe,gBAAA,YAAA;EAAA,IAAAjM,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOoG,IAA4B,EAAA;AAAA,IAAA,IAAAoE,YAAA,CAAA;AAAA,IAAA,OAAA1K,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAC9BmG,YAAY,CACrC,gDAAgD,CACjD,CAAA;AAAA,QAAA,KAAA,CAAA;UAFK2C,YAAY,GAAAhJ,QAAA,CAAAsB,IAAA,CAAA;UAAA,IAIbsD,IAAI,CAACoE,YAAY,CAAC,EAAA;AAAAhJ,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACrB1C,UAAAA,OAAO,CAAC2I,GAAG,CAAa6C,YAAAA,GAAAA,YAAY,uBAAmB,CAAC,CAAA;AAAAhJ,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAC3C6I,eAAe,CAACnE,IAAI,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,OAAA5E,QAAA,CAAA6B,MAAA,CAAA7B,QAAAA,EAAAA,QAAA,CAAAsB,IAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAGpC9D,UAAAA,OAAO,CAAC2I,GAAG,CAAa6C,YAAAA,GAAAA,YAAY,eAAW,CAAC,CAAA;AAAA,UAAA,OAAAhJ,QAAA,CAAA6B,MAAA,CAAA,QAAA,EACzCmH,YAAY,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAhJ,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GACpB,CAAA,CAAA,CAAA;EAAA,OAZKuK,SAAAA,eAAeA,CAAAhH,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAYpB,EAAA,CAAA;AAEM,IAAMgH,kBAAkB,gBAAA,YAAA;AAAA,EAAA,IAAAxK,KAAA,gBAAAJ,iBAAA,eAAAC,mBAAA,EAAA,CAAAC,IAAA,CAAG,SAAA6D,QAAAA,CAChCzE,MAAqB,EACrBmG,GAAY,EAAA;AAAA,IAAA,IAAAzB,QAAA,CAAAe,CAAAA,QAAA,CAAAqB,CAAAA,aAAA,EAAAD,gBAAA,CAAA,CAAA6C,OAAA,CAAA/C,CAAA3F,OAAA,EAAAE,MAAA,CAAA,CAAA+F,IAAA,CAAA,CAAAoE,YAAA,CAAAE,CAAAA,cAAA,CAAArE,CAAAA,SAAA,EAAAC,KAAA,CAAA,CAAAxC,MAAA,CAAA,CAAA6G,QAAA,CAAAC,CAAAA,OAAA,CAAAC,CAAAA,WAAA,EAAAjE,aAAA;AAAA,IAAA,OAAA9G,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA4C,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1C,IAAA,GAAA0C,SAAA,CAAAzC,IAAA;AAAA,QAAA,KAAA,CAAA;UAGVmC,QAAQ,GASN1E,MAAM,CATR0E,QAAQ,EACRe,QAAQ,GAQNzF,MAAM,CARRyF,QAAQ,EACRqB,aAAa,GAOX9G,MAAM,CAPR8G,aAAa,EACbD,gBAAgB,GAMd7G,MAAM,CANR6G,gBAAgB,EAEhB6C,OAAO,GAIL1J,MAAM,CAJR0J,OAAO,EAEP1I,OAAO,GAELhB,MAAM,CAFRgB,OAAO,EACPE,MAAM,GACJlB,MAAM,CADRkB,MAAM,CAAA;AAAA8D,UAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OAGWgC,eAAe,CAChCvE,MAAM,CAAC0E,QAAQ,EACf1E,MAAM,CAAC8G,aAAa,EACpB9G,MAAM,CAAC6G,gBAAgB,CACxB,CAAA;AAAA,QAAA,KAAA,CAAA;UAJKI,IAAI,GAAAjC,SAAA,CAAArB,IAAA,CAAA;AAAA,UAAA,IAAA,CAQNwC,GAAG,EAAA;AAAAnB,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,IACD0E,CAAAA,IAAI,CAACd,GAAG,CAAC,EAAA;AAAAnB,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACX8I,UAAAA,YAAY,GAAGlF,GAAG,CAAA;AAClBtG,UAAAA,OAAO,CAAC2I,GAAG,CAAa6C,YAAAA,GAAAA,YAAY,eAAW,CAAC,CAAA;AAAArG,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAEhD1C,UAAAA,OAAO,CAAC2I,GAAG,CAAarC,YAAAA,GAAAA,GAAG,uBAAmB,CAAC,CAAA;AAAAnB,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;UAAA,OAC1B6I,eAAe,CAACnE,IAAI,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAA1CoE,YAAY,GAAArG,SAAA,CAAArB,IAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAqB,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;UAAA,OAGO6I,eAAe,CAACnE,IAAI,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAA1CoE,YAAY,GAAArG,SAAA,CAAArB,IAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAGd9D,UAAAA,OAAO,CAAC2I,GAAG,CACqB1B,6BAAAA,GAAAA,aAAa,GAASuE,SAAAA,GAAAA,YAAY,GAASpE,UAAAA,GAAAA,IAAI,CAACoE,YAAY,CAAC,GAAA,KAAI,CAChG,CAAA;AAAArG,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;UAAA,OAE4BmG,YAAY,CAAC,6BAA6B,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAAlE6C,cAAc,GAAAvG,SAAA,CAAArB,IAAA,CAAA;UAAAuD,SAAA,GAAAkB,+BAAA,CAECsB,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAvC,KAAA,GAAAD,SAAA,EAAA,EAAAmB,IAAA,EAAA;AAAArD,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBoC,MAAM,GAAAwC,KAAA,CAAAlI,KAAA,CAAA;AACXuM,UAAAA,QAAQ,GAAG,EAAE,CAAA;UAAA,IACb7G,EAAAA,MAAM,KAAKmC,aAAa,CAAA,EAAA;AAAA9B,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AAC1BiJ,UAAAA,QAAQ,GAAGD,cAAc,CAAA;AAAAvG,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEC/B,YAAY,CAAC;AACrCQ,YAAAA,OAAO,EAAPA,OAAO;AACPD,YAAAA,aAAa,EAAE+F,aAAa;AAC5B3F,YAAAA,cAAc,EAAEwD,MAAM;YACtB1D,MAAM,GAAAwK,OAAA,GAAA,EAAA,EAAAA,OAAA,CACHJ,YAAY,CAAGE,GAAAA,cAAc,EAAAE,OAAA,CAC/B;AACDvK,YAAAA,MAAM,EAANA,MAAM;YACNE,KAAK,EAAEpB,MAAM,CAACoB,KAAAA;AACf,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UATIsK,WAAW,GAAA1G,SAAA,CAAArB,IAAA,CAAA;AAWjB6H,UAAAA,QAAQ,GAAGE,WAAW,CAACL,YAAY,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAAArG,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAGXgC,eAAe,CACxCG,QAAQ,EACRC,MAAM,EACNkC,gBAAgB,CACjB,CAAA;AAAA,QAAA,KAAA,EAAA;UAJKY,YAAY,GAAAzC,SAAA,CAAArB,IAAA,CAAA;AAMlB8D,UAAAA,YAAY,CAAC4D,YAAY,CAAC,GAAGG,QAAQ,CAAA;UAErClG,gBAAgB,CAACG,QAAQ,EAAEd,MAAM,EAAEkC,gBAAgB,EAAEY,YAAY,CAAC,CAAA;UAElE5H,OAAO,CAAC2I,GAAG,CACmB6C,4BAAAA,GAAAA,YAAY,cAAQ1G,MAAM,GAAA,QAAA,GAAQ6G,QAAQ,GAAA,KAAI,CAC3E,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAxG,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAyC,SAAA,CAAAb,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAM,QAAA,CAAA,CAAA;GAEJ,CAAA,CAAA,CAAA;AAAA,EAAA,OAAA,SA3EY6G,kBAAkBA,CAAAnG,GAAA,EAAAC,GAAA,EAAA;AAAA,IAAA,OAAAtE,KAAA,CAAAuD,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CA2E9B,EAAA;;ACvFM,IAAMqH,gBAAgB,gBAAA,YAAA;EAAA,IAAAxM,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOb,MAAqB,EAAA;IAAA,IAAA0E,QAAA,EAAAe,QAAA,EAAAqB,aAAA,EAAAF,UAAA,EAAA8C,OAAA,EAAA1I,OAAA,EAAAE,MAAA,EAAAyI,kBAAA,EAAArC,OAAA,EAAAsE,wBAAA,EAAA1E,SAAA,EAAAC,KAAA,EAAA0E,MAAA,EAAAC,MAAA,EAAAC,aAAA,EAAAC,UAAA,EAAAzE,UAAA,EAAAC,MAAA,EAAA7C,MAAA,EAAA2F,gBAAA,EAAA2B,KAAA,EAAAvE,UAAA,EAAAC,MAAA,CAAA;AAAA,IAAA,OAAAhH,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAA4C,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1C,IAAA,GAAA0C,SAAA,CAAAzC,IAAA;AAAA,QAAA,KAAA,CAAA;UAExDmC,QAAQ,GAQN1E,MAAM,CARR0E,QAAQ,EACRe,QAAQ,GAONzF,MAAM,CAPRyF,QAAQ,EACRqB,aAAa,GAMX9G,MAAM,CANR8G,aAAa,EACbF,UAAU,GAKR5G,MAAM,CALR4G,UAAU,EACV8C,OAAO,GAIL1J,MAAM,CAJR0J,OAAO,EACP1I,OAAO,GAGLhB,MAAM,CAHRgB,OAAO,EACPE,MAAM,GAEJlB,MAAM,CAFRkB,MAAM,EACNyI,kBAAkB,GAChB3J,MAAM,CADR2J,kBAAkB,CAAA;AAAA3E,UAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;UAAA,OAGEgE,cAAc,CAACvG,MAAM,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAAtCsH,OAAO,GAAAtC,SAAA,CAAArB,IAAA,CAAA;AAAA,UAAA,IAAA,EAET2D,OAAO,CAAC7E,MAAM,KAAK,CAAC,CAAA,EAAA;AAAAuC,YAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACtB1C,UAAAA,OAAO,CAAC2I,GAAG,CAAC,oBAAoB,CAAC,CAAA;AAAAxD,UAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;UAAA,OAE3B+G,iBAAiB,CAACtJ,MAAM,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAAA,OAAAgF,SAAA,CAAAd,MAAA,CAAA,QAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;UAKjCrE,OAAO,CAAC2I,GAAG,CACNlB,OAAO,CAAC7E,MAAM,GAAA,yEAAA,GAA0EqE,aAAa,GAAA,GAAG,CAC5G,CAAA;AAEK8E,UAAAA,wBAAwB,GAAG,EAAE,CAAA;UAAA1E,SAAA,GAAAkB,+BAAA,CAEdd,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAH,KAAA,GAAAD,SAAA,EAAA,EAAAmB,IAAA,EAAA;AAAArD,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBsJ,MAAM,GAAA1E,KAAA,CAAAlI,KAAA,CAAA;AAAA+F,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OACMmG,YAAY,CAACmD,MAAM,CAAC1F,GAAG,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAAvC2F,MAAM,GAAA9G,SAAA,CAAArB,IAAA,CAAA;UAEZiI,wBAAwB,CAAClJ,IAAI,CAAC;YAC5ByD,GAAG,EAAE0F,MAAM,CAAC1F,GAAG;YACfvB,SAAS,EAAEiH,MAAM,CAACjH,SAAS;AAC3B3F,YAAAA,KAAK,EAAE6M,MAAAA;AACR,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA9G,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;UAGEwJ,aAAa,GAAGH,wBAAwB,CAACM,MAAM,CAAC,UAAC5J,IAAI,EAAEC,IAAI,EAAI;YACnED,IAAI,CAACC,IAAI,CAAC4D,GAAG,CAAC,GAAG5D,IAAI,CAACtD,KAAK,CAAA;AAE3B,YAAA,OAAOqD,IAAI,CAAA;WACZ,EAAE,EAAE,CAAC,CAAA;AAEA0J,UAAAA,UAAU,GAAGrC,kBAAkB,GAAG,CAAC7C,aAAa,CAAC,GAAG4C,OAAO,CAAA;UAAAnC,UAAA,GAAAa,+BAAA,CAE5C4D,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAxE,MAAA,GAAAD,UAAA,EAAA,EAAAc,IAAA,EAAA;AAAArD,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAApBoC,MAAM,GAAA6C,MAAA,CAAAvI,KAAA,CAAA;UACXqL,gBAAgB,GAAG,EAAE,CAAA;UAAA,IAErB3F,EAAAA,MAAM,KAAKmC,aAAa,CAAA,EAAA;AAAA9B,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AAC1B+H,UAAAA,gBAAgB,GAAGyB,aAAa,CAAA;AAAA/G,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEP/B,YAAY,CAAC;AACpCO,YAAAA,aAAa,EAAE+F,aAAa;AAC5B3F,YAAAA,cAAc,EAAEwD,MAAM;AACtB3D,YAAAA,OAAO,EAAPA,OAAO;AACPC,YAAAA,MAAM,EAAE8K,aAAa;AACrB7K,YAAAA,MAAM,EAANA,MAAM;YACNE,KAAK,EAAEpB,MAAM,CAACoB,KAAAA;AACf,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAPFkJ,gBAAgB,GAAAtF,SAAA,CAAArB,IAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAsI,UAAAA,KAAA,gBAAAtL,mBAAA,EAAAC,CAAAA,IAAA,UAAAqL,KAAA,GAAA;YAAA,IAAArH,SAAA,EAAA6C,YAAA,EAAA0E,YAAA,EAAAvC,UAAA,EAAAC,MAAA,EAAA1D,GAAA,CAAA;AAAA,YAAA,OAAAxF,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAiK,OAAA/J,QAAA,EAAA;AAAA,cAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,gBAAA,KAAA,CAAA;kBAUPqC,SAAS,GAAA+C,MAAA,CAAA1I,KAAA,CAAA;AAAAoD,kBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,kBAAA,OACSgC,eAAe,CAACG,QAAQ,EAAEC,MAAM,EAAEC,SAAS,CAAC,CAAA;AAAA,gBAAA,KAAA,CAAA;kBAAjE6C,YAAY,GAAApF,QAAA,CAAAsB,IAAA,CAAA;AAEZwI,kBAAAA,YAAY,GAAGP,wBAAwB,CAACxL,MAAM,CAClD,UAAC+F,GAAG,EAAA;AAAA,oBAAA,OAAKA,GAAG,CAACvB,SAAS,KAAKA,SAAS,CAAA;mBACrC,CAAA,CAAA;AAAA,kBAAA,IAAA,EAEGuH,YAAY,CAAC1J,MAAM,KAAK,CAAC,CAAA,EAAA;AAAAJ,oBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,oBAAA,MAAA;AAAA,mBAAA;kBAAA,OAAAF,QAAA,CAAA6B,MAAA,CAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAAA,gBAAA,KAAA,CAAA;kBAI7B,KAAA0F,UAAA,GAAAxB,+BAAA,CAAkB+D,YAAY,CAAAtC,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,EAAAvB,EAAAA,IAAA,GAAE;oBAArBlC,GAAG,GAAA0D,MAAA,CAAA5K,KAAA,CAAA;oBACZwI,YAAY,CAACtB,GAAG,CAACA,GAAG,CAAC,GAAGmE,gBAAgB,CAACnE,GAAG,CAACA,GAAG,CAAC,CAAA;AACnD,mBAAA;kBAEAb,gBAAgB,CAACG,QAAQ,EAAEd,MAAM,EAAEC,SAAS,EAAE6C,YAAY,CAAC,CAAA;AAAA,gBAAA,KAAA,CAAA,CAAA;AAAA,gBAAA,KAAA,KAAA;kBAAA,OAAApF,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,eAAA;AAAA,aAAA,EAAA8H,KAAA,CAAA,CAAA;AAAA,WAAA,CAAA,CAAA;UAAAvE,UAAA,GAAAU,+BAAA,CAfrCxB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAe,MAAA,GAAAD,UAAA,EAAA,EAAAW,IAAA,EAAA;AAAArD,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AAAA,UAAA,OAAAyC,SAAA,CAAAqH,aAAA,CAAAJ,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAAA,IAAAjH,CAAAA,SAAA,CAAAsH,EAAA,EAAA;AAAAtH,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAyC,SAAA,CAAAd,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAc,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;UAAA,OAmB9B+G,iBAAiB,CAACtJ,MAAM,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAE/BH,UAAAA,OAAO,CAAC2I,GAAG,CAAA,0BAAA,GAA4BlB,OAAO,CAAC7E,MAAM,WAAQ,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAuC,SAAA,CAAAb,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GAC/D,CAAA,CAAA,CAAA;EAAA,OApFY8K,SAAAA,gBAAgBA,CAAAvH,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAoF5B,EAAA;;ACtFM,IAAMiI,WAAW,gBAAA,YAAA;EAAA,IAAApN,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOb,MAAqB,EAAA;IAAA,IAAA0E,QAAA,EAAAe,QAAA,EAAAqB,aAAA,EAAAF,UAAA,EAAA8C,OAAA,EAAA1I,OAAA,EAAAE,MAAA,EAAAgG,SAAA,EAAAC,KAAA,EAAAvC,SAAA,EAAAkF,iBAAA,EAAAvC,UAAA,EAAAC,MAAA,EAAA7C,MAAA,EAAAsF,UAAA,EAAAC,WAAA,EAAArI,EAAA,EAAAuI,eAAA,EAAAC,kBAAA,EAAAlE,GAAA,EAAAlH,KAAA,EAAAqL,gBAAA,EAAAC,iBAAA,CAAA;AAAA,IAAA,OAAA5J,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAEnDmC,UAAAA,QAAQ,GAON1E,MAAM,CAPR0E,QAAQ,EACRe,QAAQ,GAMNzF,MAAM,CANRyF,QAAQ,EACRqB,aAAa,GAKX9G,MAAM,CALR8G,aAAa,EACbF,UAAU,GAIR5G,MAAM,CAJR4G,UAAU,EACV8C,OAAO,GAGL1J,MAAM,CAHR0J,OAAO,EACP1I,OAAO,GAELhB,MAAM,CAFRgB,OAAO,EACPE,MAAM,GACJlB,MAAM,CADRkB,MAAM,CAAA;AAAAmB,UAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;UAAA4E,SAAA,GAAAkB,+BAAA,CAIkBxB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,IAAA,CAAAO,KAAA,GAAAD,SAAA,EAAA,EAAAmB,IAAA,EAAA;AAAAhG,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAvBqC,SAAS,GAAAuC,KAAA,CAAAlI,KAAA,CAAA;UACd6K,iBAAyC,GAAA,KAAA,CAAA,CAAA;AAAAzH,UAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OAGjBgC,eAAe,CACvCG,QAAQ,EACRoC,aAAa,EACblC,SAAS,CACV,CAAA;AAAA,QAAA,KAAA,CAAA;UAJDkF,iBAAiB,GAAAzH,QAAA,CAAAsB,IAAA,CAAA;AAAAtB,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAiK,EAAA,GAAAjK,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;UAAA,MAMX,IAAIsI,gBAAgB,CAC6B/F,qDAAAA,GAAAA,SAAS,SAC9DkC,aAAa,EACblC,SAAS,EACTvC,QAAA,CAAAiK,EAAA,YAAiBpB,KAAK,GAAA7I,QAAA,CAAAiK,EAAA,GAAWE,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA;UAAAjF,UAAA,GAAAa,+BAAA,CAGkBsB,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAlC,MAAA,GAAAD,UAAA,EAAA,EAAAc,IAAA,EAAA;AAAAhG,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBoC,MAAM,GAAA6C,MAAA,CAAAvI,KAAA,CAAA;UAAA,IACX0F,EAAAA,MAAM,KAAKmC,aAAa,CAAA,EAAA;AAAAzE,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAF,QAAA,CAAA6B,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAExB+F,UAAkC,GAAA,KAAA,CAAA,CAAA;AAAA5H,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEjBgC,eAAe,CAACG,QAAQ,EAAEC,MAAM,EAAEC,SAAS,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAA/DqF,UAAU,GAAA5H,QAAA,CAAAsB,IAAA,CAAA;AAAAtB,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAoK,EAAA,GAAApK,QAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAEVxC,UAAAA,OAAO,CAAC6M,IAAI,CAAA,0CAAA,GACiC/H,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,0BAAuB,CAClG,CAAA;UACDqF,UAAU,GAAG,EAAE,CAAA;AAAA,QAAA,KAAA,EAAA;UAGXC,WAAW,GAA2B,EAAE,CAE9C;AACA,UAAA,KAAArI,EAAA,GAAAuI,CAAAA,EAAAA,eAAA,GAA2B5H,MAAM,CAACnB,OAAO,CAACyI,iBAAiB,CAAC,EAAAjI,EAAA,GAAAuI,eAAA,CAAA3H,MAAA,EAAAZ,EAAA,EAAE,EAAA;YAAAwI,kBAAA,GAAAD,eAAA,CAAAvI,EAAA,CAAA,EAAlDsE,GAAG,GAAAkE,kBAAA,CAAA,CAAA,CAAA,EAAEpL,KAAK,GAAAoL,kBAAA,CAAA,CAAA,CAAA,CAAA;AACpB,YAAA,IAAI,CAACJ,UAAU,CAAC9D,GAAG,CAAC,EAAE;AACpB+D,cAAAA,WAAW,CAAC/D,GAAG,CAAC,GAAGlH,KAAK,CAAA;AAC1B,aAAA;AACF,WAAA;AAEA;UAAA,IACIuD,EAAAA,MAAM,CAACyE,IAAI,CAACiD,WAAW,CAAC,CAACzH,MAAM,GAAG,CAAC,CAAA,EAAA;AAAAJ,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACrC1C,UAAAA,OAAO,CAAC2I,GAAG,CAAA,QAAA,GACAhG,MAAM,CAACyE,IAAI,CAACiD,WAAW,CAAC,CAACzH,MAAM,GAAoBkC,mBAAAA,GAAAA,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CAC/F,CAAA;UAEG0F,gBAAwC,GAAA,KAAA,CAAA,CAAA;AAAAjI,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEjB/B,YAAY,CAAC;AACpCO,YAAAA,aAAa,EAAE+F,aAAa;AAC5B3F,YAAAA,cAAc,EAAEwD,MAAM;AACtB3D,YAAAA,OAAO,EAAPA,OAAO;AACPC,YAAAA,MAAM,EAAEiJ,WAAW;AACnBhJ,YAAAA,MAAM,EAANA,MAAM;YACNE,KAAK,EAAEpB,MAAM,CAACoB,KAAAA;AACf,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAPFkJ,gBAAgB,GAAAjI,QAAA,CAAAsB,IAAA,CAAA;AAAAtB,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAsK,EAAA,GAAAtK,QAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA;UAAA,MASV,IAAIsI,gBAAgB,CACgBhG,wCAAAA,GAAAA,MAAM,uBAAiBC,SAAS,GAAA,GAAA,EACxED,MAAM,EACNC,SAAS,EACTvC,QAAA,CAAAsK,EAAA,YAAiBzB,KAAK,GAAA7I,QAAA,CAAAsK,EAAA,GAAWH,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA;AAGH;AACMjC,UAAAA,iBAAiB,GAAAzG,QAAA,CAClBmG,EAAAA,EAAAA,UAAU,EACVK,gBAAgB,CAAA,CAAA;AAAAjI,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;UAAA,OAIb+C,gBAAgB,CACpBG,QAAQ,EACRd,MAAM,EACNC,SAAS,EACT2F,iBAAiB,CAClB,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAlI,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAuK,EAAA,GAAAvK,QAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA;UAAA,MAEK,IAAIsI,gBAAgB,CACmBhG,2CAAAA,GAAAA,MAAM,uBAAiBC,SAAS,GAAA,GAAA,EAC3ED,MAAM,EACNC,SAAS,EACTvC,QAAA,CAAAuK,EAAA,YAAiB1B,KAAK,GAAA7I,QAAA,CAAAuK,EAAA,GAAWJ,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA;AAGH3M,UAAAA,OAAO,CAAC2I,GAAG,CAAA,oCAAA,GAC4BhG,MAAM,CAACyE,IAAI,CAACiD,WAAW,CAAC,CAACzH,MAAM,GAAakC,YAAAA,GAAAA,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CACpH,CAAA;AAAAvC,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAED1C,UAAAA,OAAO,CAAC2I,GAAG,CAAA,4BAAA,GACoB7D,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CAChE,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAvC,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAwK,EAAA,GAAAxK,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,UAAA,IAAA,EAKHA,QAAA,CAAAwK,EAAA,YAAiBlC,gBAAgB,CAAA,EAAA;AAAAtI,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,MAAAF,QAAA,CAAAwK,EAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAAA,MAG/B,IAAIlC,gBAAgB,CACxB,iDAAiD,EACjD6B,SAAS,EACTA,SAAS,EACTnK,QAAA,CAAAwK,EAAA,YAAiB3B,KAAK,GAAA7I,QAAA,CAAAwK,EAAA,GAAWL,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAnK,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;GAEJ,CAAA,CAAA,CAAA;EAAA,OAxHY0L,SAAAA,WAAWA,CAAAnI,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAwHvB,EAAA;;ACtHD;AAEA,IAAMwI,OAAO,gBAAG,IAAIC,OAAO,EAAE,CAAA;AAE7BD,OAAO,CACJ9N,IAAI,CAAC,YAAY,CAAC,CAClBgO,WAAW,CACV,6FAA6F,CAC9F,CACAC,OAAO,CAAC,OAAO,CAAC,CAChBC,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CACpDA,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAElD,IAAMC,QAAQ,GAAkB,CAC9B;AACEnO,EAAAA,IAAI,EAAE,MAAM;AACZgO,EAAAA,WAAW,EACT,uHAAuH;AACzHI,EAAAA,MAAM,EAAEzB,gBAAAA;AACT,CAAA,EACD;AACE3M,EAAAA,IAAI,EAAE,SAAS;AACfgO,EAAAA,WAAW,EACT,6GAA6G;AAC/GI,EAAAA,MAAM,EAAE9B,kBAAAA;AACT,CAAA,EACD;AACEtM,EAAAA,IAAI,EAAE,eAAe;AACrBgO,EAAAA,WAAW,EACT,yFAAyF;AAC3FI,EAAAA,MAAM,EAAEjC,YAAAA;AACT,CAAA,EACD;AACEnM,EAAAA,IAAI,EAAE,MAAM;AACZgO,EAAAA,WAAW,EACT,gHAAgH;AAClHI,EAAAA,MAAM,EAAEb,WAAAA;AACT,CAAA,CACF,CAAA;AAAA,IAAAN,KAAA,GAAAA,SAAAA,KAAAA,GAE+B;AAA3B,EAAA,IAAMoB,OAAO,GAAAC,SAAA,CAAAzL,EAAA,CAAA,CAAA;AAChB,EAAA,IAAM0L,GAAG,GAAGT,OAAO,CAACO,OAAO,CAACA,OAAO,CAACrO,IAAI,CAAC,CAACgO,WAAW,CAACK,OAAO,CAACL,WAAW,CAAC,CAAA;AAE1E;AACA,EAAA,IAAIK,OAAO,CAACrO,IAAI,KAAK,SAAS,EAAE;AAC9BuO,IAAAA,GAAG,CAACL,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC,CAAA;AAC7D,GAAA;AAEAK,EAAAA,GAAG,CAACH,MAAM,eAAA,YAAA;IAAA,IAAAjO,IAAA,GAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAAC,OAAAA,CAAO2M,OAAO,EAAA;AAAA,MAAA,IAAAC,aAAA,CAAA;AAAA,MAAA,IAAAC,GAAA,EAAA1N,MAAA,EAAA2N,QAAA,EAAAC,SAAA,EAAAC,SAAA,EAAA1H,GAAA,EAAA2H,OAAA,EAAA5M,MAAA,CAAA;AAAA,MAAA,OAAAP,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,UAAA,KAAA,CAAA;AACjBmL,YAAAA,GAAG,GAAGK,MAAM,CAAC/N,MAAM,CAAC;cACxBT,IAAI,EAAEuN,OAAO,CAACkB,IAAI,EAAE,CAACC,GAAG,IAAI,MAAA;AAC7B,aAAA,CAAC,CAAA;AAAA5L,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAEkCrD,UAAU,CAAC;AAC7CG,cAAAA,UAAU,EAAEyN,OAAO,CAACkB,IAAI,EAAE,CAAChO,MAAAA;AAC5B,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;YAFIA,MAAM,GAAAqC,QAAA,CAAAsB,IAAA,CAAA;AAINgK,YAAAA,QAAQ,GAAAF,CAAAA,aAAA,GAAIzN,MAAM,CAACoB,KAAgB,KAAvBqM,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAA,CAAyBS,QAAQ,CAAC,QAAQ,CAAC,CAE7D;YACMN,SAAS,GAAGF,GAAG,CAACS,MAAM,CAACC,cAAc,IAAIpO,MAAM,CAACoO,cAAc,CAAA;YAC9DP,SAAS,GAAGH,GAAG,CAACS,MAAM,CAACE,cAAc,IAAIrO,MAAM,CAACqO,cAAc,CAEpE;AACMlI,YAAAA,GAAG,GAAGwH,QAAQ,GAAGE,SAAS,GAAGD,SAAS,CAAA;YAE5C,IAAI,CAACzH,GAAG,EAAE;AACF2H,cAAAA,OAAO,GAAGH,QAAQ,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;cAC9D9N,OAAO,CAACC,KAAK,CAAA,kBAAA,IACQ6N,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAA,GAAA,+CAAA,GAAgDG,OAAO,GAAA,GAAG,CAC/G,CAAA;AACDrO,cAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,aAAA;AAEMmB,YAAAA,MAAM,GAAG,IAAIoN,MAAM,CAAAxK,QAAA,CAAA;AACvByK,cAAAA,MAAM,EAAEpI,GAAAA;AAAG,aAAA,EACPwH,QAAQ,IAAI;AACda,cAAAA,OAAO,EAAE,0DAAA;aACV,CACF,CAAC,CAAA;YAEF,IAAInB,OAAO,CAACrO,IAAI,KAAK,SAAS,IAAIwO,OAAO,CAACrH,GAAG,EAAE;AAC7CkH,cAAAA,OAAO,CAACD,MAAM,CAAAtJ,QAAA,KAAM9D,MAAM,EAAA;AAAEkB,gBAAAA,MAAM,EAANA,MAAAA;eAAUsM,CAAAA,EAAAA,OAAO,CAACrH,GAAG,CAAC,CAAA;AACpD,aAAC,MAAM;AACLkH,cAAAA,OAAO,CAACD,MAAM,CAAAtJ,QAAA,KAAM9D,MAAM,EAAA;AAAEkB,gBAAAA,MAAM,EAANA,MAAAA;AAAM,eAAA,CAAE,CAAC,CAAA;AACvC,aAAA;AAAC,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAmB,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAtD,OAAA,CAAA,CAAA;KACF,CAAA,CAAA,CAAA;AAAA,IAAA,OAAA,UAAAuD,EAAA,EAAA;AAAA,MAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA,CAAA;GAAC,EAAA,CAAA,CAAA;AACJ,CAAC,CAAA;AA/CD,KAAA,IAAAzC,EAAA,GAAA,CAAA,EAAAyL,SAAA,GAAsBH,QAAQ,EAAAtL,EAAA,GAAAyL,SAAA,CAAA7K,MAAA,EAAAZ,EAAA,EAAA,EAAA;EAAAoK,KAAA,EAAA,CAAA;AAAA,CAAA;AAiD9Ba,OAAO,CAAC5J,KAAK,CAACzD,OAAO,CAACgP,IAAI,CAAC"}
1
+ {"version":3,"file":"i18n-magic.esm.js","sources":["../src/lib/languges.ts","../src/lib/utils.ts","../src/commands/check-missing.ts","../src/commands/replace.ts","../src/commands/scan.ts","../src/commands/sync-locales.ts","../src/index.ts"],"sourcesContent":["export const languages = [\n {\n label: \"Deutsch\",\n name: \"German\",\n value: \"de\",\n },\n {\n label: \"English\",\n name: \"English\",\n value: \"en\",\n },\n {\n label: \"Español\",\n name: \"Spanish\",\n value: \"es\",\n },\n {\n label: \"Français\",\n name: \"French\",\n value: \"fr\",\n },\n {\n label: \"Dansk\",\n name: \"Danish\",\n value: \"dk\",\n },\n {\n label: \"中文\",\n name: \"Chinese\",\n value: \"cn\",\n },\n {\n label: \"Русский\",\n name: \"Russian\",\n value: \"ru\",\n },\n {\n label: \"Italiano\",\n name: \"Italian\",\n value: \"it\",\n },\n {\n label: \"Nederlands\",\n name: \"Dutch\",\n value: \"nl\",\n },\n {\n label: \"Português\",\n name: \"Portuguese\",\n value: \"pt\",\n },\n {\n label: \"Türkçe\",\n name: \"Turkish\",\n value: \"tr\",\n },\n {\n label: \"Polski\",\n name: \"Polish\",\n value: \"pl\",\n },\n {\n label: \"Українська\",\n name: \"Ukrainian\",\n value: \"ua\",\n },\n {\n label: \"Suomi\",\n name: \"Finnish\",\n value: \"fi\",\n },\n {\n label: \"Norsk\",\n name: \"Norwegian\",\n value: \"no\",\n },\n {\n label: \"Svenska\",\n name: \"Swedish\",\n value: \"sv\",\n },\n {\n label: \"Čeština\",\n name: \"Czech\",\n value: \"cz\",\n },\n {\n label: \"Ελληνικά\",\n name: \"Greek\",\n value: \"gr\",\n },\n {\n label: \"日本語\",\n name: \"Japanese\",\n value: \"jp\",\n },\n {\n label: \"한국어\",\n name: \"Korean\",\n value: \"kr\",\n },\n {\n label: \"Română\",\n name: \"Romanian\",\n value: \"ro\",\n },\n {\n label: \"Hrvatski\",\n name: \"Croatian\",\n value: \"hr\",\n },\n {\n label: \"Magyar\",\n name: \"Hungarian\",\n value: \"hu\",\n },\n {\n label: \"Slovensky\",\n name: \"Slovak\",\n value: \"sk\",\n },\n {\n label: \"हिन्दी\",\n name: \"Hindi\",\n value: \"hi\",\n },\n {\n label: \"தமிழ்\",\n name: \"Tamil\",\n value: \"ta\",\n },\n {\n label: \"Bahasa Indonesia\",\n name: \"Indonesian\",\n value: \"id\",\n },\n {\n label: \"Tiếng Việt\",\n name: \"Vietnamese\",\n value: \"vn\",\n },\n]\n","import glob from \"fast-glob\"\nimport { Parser } from \"i18next-scanner\"\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport type OpenAI from \"openai\"\nimport prompts from \"prompts\"\nimport { languages } from \"./languges\"\nimport type { Configuration } from \"./types\"\n\nexport const loadConfig = ({\n configPath = \"i18n-magic.js\",\n}: { configPath: string }) => {\n const filePath = path.join(process.cwd(), configPath)\n\n if (!fs.existsSync(filePath)) {\n console.error(\"Config file does not exist:\", filePath)\n process.exit(1)\n }\n\n try {\n const config = require(filePath)\n // Validate config if needed\n return config\n } catch (error) {\n console.error(\"Error while loading config:\", error)\n process.exit(1)\n }\n}\n\nexport function removeDuplicatesFromArray<T>(arr: T[]): T[] {\n return arr.filter((item, index) => arr.indexOf(item) === index)\n}\n\nexport const translateKey = async ({\n inputLanguage,\n context,\n object,\n openai,\n outputLanguage,\n model,\n}: {\n object: Record<string, string>\n context: string\n inputLanguage: string\n outputLanguage: string\n model: string\n openai: OpenAI\n}) => {\n // Split object into chunks of 100 keys\n const entries = Object.entries(object)\n const chunks: Array<[string, string][]> = []\n\n for (let i = 0; i < entries.length; i += 100) {\n chunks.push(entries.slice(i, i + 100))\n }\n\n let result: Record<string, string> = {}\n\n const existingInput = languages.find((l) => l.value === inputLanguage)\n const existingOutput = languages.find((l) => l.value === outputLanguage)\n\n const input = existingInput?.label || inputLanguage\n const output = existingOutput?.label || outputLanguage\n\n // Translate each chunk\n for (const chunk of chunks) {\n const chunkObject = Object.fromEntries(chunk)\n const completion = await openai.beta.chat.completions.parse({\n model,\n messages: [\n {\n content: `You are a bot that translates the values of a locales JSON. ${\n context\n ? `The user provided some additional context or guidelines about what to fill in the blanks: \\\"${context}\\\". `\n : \"\"\n }The user provides you a JSON with a field named \"inputLanguage\", which defines the language the values of the JSON are defined in. It also has a field named \"outputLanguage\", which defines the language you should translate the values to. The last field is named \"data\", which includes the object with the values to translate. The keys of the values should never be changed. You output only a JSON, which has the same keys as the input, but with translated values. I give you an example input: {\"inputLanguage\": \"English\", outputLanguage: \"German\", \"keys\": {\"hello\": \"Hello\", \"world\": \"World\"}}. The output should be {\"hello\": \"Hallo\", \"world\": \"Welt\"}.`,\n role: \"system\",\n },\n {\n content: JSON.stringify({\n inputLanguage: input,\n outputLanguage: output,\n data: chunkObject,\n }),\n role: \"user\",\n },\n ],\n response_format: {\n type: \"json_object\",\n },\n })\n\n const translatedChunk = JSON.parse(\n completion.choices[0].message.content,\n ) as Record<string, string>\n\n // Merge translated chunk with result\n result = { ...result, ...translatedChunk }\n\n // Optional: Add a small delay between chunks to avoid rate limiting\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n\n return result\n}\n\nexport const loadLocalesFile = async (\n loadPath:\n | string\n | ((locale: string, namespace: string) => Promise<Record<string, string>>),\n locale: string,\n namespace: string,\n) => {\n if (typeof loadPath === \"string\") {\n const resolvedPath = loadPath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n const content = fs.readFileSync(resolvedPath, \"utf-8\")\n const json = JSON.parse(content)\n\n return json as Record<string, string>\n }\n\n return loadPath(locale, namespace)\n}\n\nexport const writeLocalesFile = async (\n savePath:\n | string\n | ((\n locale: string,\n namespace: string,\n data: Record<string, string>,\n ) => Promise<void>),\n locale: string,\n namespace: string,\n data: Record<string, string>,\n) => {\n if (typeof savePath === \"string\") {\n const resolvedSavePath = savePath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n fs.writeFileSync(resolvedSavePath, JSON.stringify(data, null, 2))\n\n return\n }\n\n await savePath(locale, namespace, data)\n}\n\nexport const getPureKey = (\n key: string,\n namespace?: string,\n isDefault?: boolean,\n) => {\n const splitted = key.split(\":\")\n\n if (splitted.length === 1) {\n if (isDefault) {\n return key\n }\n\n return null\n }\n\n if (splitted[0] === namespace) {\n return splitted[1]\n }\n\n return null\n}\n\nexport const getMissingKeys = async ({\n globPatterns,\n namespaces,\n defaultNamespace,\n defaultLocale,\n loadPath,\n}: Configuration) => {\n const parser = new Parser({\n nsSeparator: false,\n keySeparator: false,\n })\n\n const files = await glob([...globPatterns, \"!**/node_modules/**\"])\n\n const keys = []\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\")\n parser.parseFuncFromString(content, { list: [\"t\"] }, (key: string) => {\n keys.push(key)\n })\n }\n\n const uniqueKeys = removeDuplicatesFromArray(keys)\n\n const newKeys = []\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n console.log(Object.keys(existingKeys).length, \"existing keys\")\n\n for (const key of uniqueKeys) {\n const pureKey = getPureKey(key, namespace, namespace === defaultNamespace)\n\n if (!pureKey) {\n continue\n }\n\n if (!existingKeys[pureKey]) {\n newKeys.push({ key: pureKey, namespace })\n }\n }\n }\n\n return newKeys\n}\n\nexport const getTextInput = async (prompt: string) => {\n const input = await prompts({\n name: \"value\",\n type: \"text\",\n message: prompt,\n onState: (state) => {\n if (state.aborted) {\n process.nextTick(() => {\n process.exit(0)\n })\n }\n },\n })\n\n return input.value as string\n}\n\nexport const checkAllKeysExist = async ({\n namespaces,\n defaultLocale,\n loadPath,\n locales,\n context,\n openai,\n savePath,\n disableTranslation,\n model,\n}: Configuration) => {\n if (disableTranslation) {\n return\n }\n\n for (const namespace of namespaces) {\n const defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n const localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n const translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model,\n })\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n // Save the updated translations\n writeLocalesFile(savePath, locale, namespace, updatedLocaleKeys)\n console.log(\n `✓ Translated and saved missing keys for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n}\n\nexport class TranslationError extends Error {\n constructor(\n message: string,\n public locale?: string,\n public namespace?: string,\n public cause?: Error,\n ) {\n super(message)\n this.name = \"TranslationError\"\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport { getMissingKeys } from \"../lib/utils\"\n\nexport const checkMissing = async (config: Configuration) => {\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length > 0) {\n console.error(\"Error: Missing translations found!\")\n process.exit(1)\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nconst getKeyToReplace = async (keys: Record<string, string>) => {\n const keyToReplace = await getTextInput(\n \"Enter the key to replace the translation for: \",\n )\n\n if (!keys[keyToReplace]) {\n console.log(`The key \"${keyToReplace}\" does not exist.`)\n return await getKeyToReplace(keys)\n }\n\n console.log(`The key \"${keyToReplace}\" exists.`)\n return keyToReplace\n}\n\nexport const replaceTranslation = async (\n config: Configuration,\n key?: string,\n) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n defaultNamespace,\n namespaces,\n locales,\n globPatterns,\n context,\n openai,\n } = config\n\n const keys = await loadLocalesFile(\n config.loadPath,\n config.defaultLocale,\n config.defaultNamespace,\n )\n\n let keyToReplace: string\n\n if (key) {\n if (keys[key]) {\n keyToReplace = key\n console.log(`The key \"${keyToReplace}\" exists.`)\n } else {\n console.log(`The key \"${key}\" does not exist.`)\n keyToReplace = await getKeyToReplace(keys)\n }\n } else {\n keyToReplace = await getKeyToReplace(keys)\n }\n\n console.log(\n `The current translation in ${defaultLocale} for \"${keyToReplace}\" is \"${keys[keyToReplace]}\".`,\n )\n\n const newTranslation = await getTextInput(\"Enter the new translation: \")\n\n for (const locale of locales) {\n let newValue = \"\"\n if (locale === defaultLocale) {\n newValue = newTranslation\n } else {\n const translation = await translateKey({\n context,\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n object: {\n [keyToReplace]: newTranslation,\n },\n openai,\n model: config.model,\n })\n\n newValue = translation[keyToReplace]\n }\n\n const existingKeys = await loadLocalesFile(\n loadPath,\n locale,\n defaultNamespace,\n )\n\n existingKeys[keyToReplace] = newValue\n\n writeLocalesFile(savePath, locale, defaultNamespace, existingKeys)\n\n console.log(\n `The new translation for \"${keyToReplace}\" in ${locale} is \"${newValue}\".`,\n )\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n checkAllKeysExist,\n getMissingKeys,\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const translateMissing = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n disableTranslation,\n } = config\n\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length === 0) {\n console.log(\"No new keys found.\")\n\n await checkAllKeysExist(config)\n\n return\n }\n\n console.log(\n `${newKeys.length} keys are missing. Please provide the values for the following keys in ${defaultLocale}:`,\n )\n\n const newKeysWithDefaultLocale = []\n\n for (const newKey of newKeys) {\n const answer = await getTextInput(newKey.key)\n\n newKeysWithDefaultLocale.push({\n key: newKey.key,\n namespace: newKey.namespace,\n value: answer,\n })\n }\n\n const newKeysObject = newKeysWithDefaultLocale.reduce((prev, next) => {\n prev[next.key] = next.value\n\n return prev\n }, {})\n\n const allLocales = disableTranslation ? [defaultLocale] : locales\n\n for (const locale of allLocales) {\n let translatedValues = {}\n\n if (locale === defaultLocale) {\n translatedValues = newKeysObject\n } else {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: newKeysObject,\n openai,\n model: config.model,\n })\n }\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(loadPath, locale, namespace)\n\n const relevantKeys = newKeysWithDefaultLocale.filter(\n (key) => key.namespace === namespace,\n )\n\n if (relevantKeys.length === 0) {\n continue\n }\n\n for (const key of relevantKeys) {\n existingKeys[key.key] = translatedValues[key.key]\n }\n\n writeLocalesFile(savePath, locale, namespace, existingKeys)\n }\n }\n\n await checkAllKeysExist(config)\n\n console.log(`Successfully translated ${newKeys.length} keys.`)\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n TranslationError,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const syncLocales = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n } = config\n\n try {\n for (const namespace of namespaces) {\n let defaultLocaleKeys: Record<string, string>\n\n try {\n defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to load default locale file for namespace \"${namespace}\"`,\n defaultLocale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n let localeKeys: Record<string, string>\n try {\n localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n } catch (error) {\n console.warn(\n `Warning: Could not load locale file for ${locale} (namespace: ${namespace}). Creating new file.`,\n )\n localeKeys = {}\n }\n\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n let translatedValues: Record<string, string>\n try {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model: config.model,\n })\n } catch (error) {\n throw new TranslationError(\n `Failed to translate keys for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n try {\n await writeLocalesFile(\n savePath,\n locale,\n namespace,\n updatedLocaleKeys,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to save translations for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n console.log(\n `Successfully translated and saved ${Object.keys(missingKeys).length} keys for ${locale} (namespace: ${namespace})`,\n )\n } else {\n console.log(\n `No missing keys found for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n } catch (error) {\n if (error instanceof TranslationError) {\n throw error\n }\n throw new TranslationError(\n \"An unexpected error occurred during translation\",\n undefined,\n undefined,\n error instanceof Error ? error : undefined,\n )\n }\n}\n","import { Command } from \"commander\"\nimport dotenv from \"dotenv\"\nimport OpenAI from \"openai\"\nimport { checkMissing } from \"./commands/check-missing\"\nimport { replaceTranslation } from \"./commands/replace\"\nimport { translateMissing } from \"./commands/scan\"\nimport { syncLocales } from \"./commands/sync-locales\"\nimport type { CommandType, Configuration } from \"./lib/types\"\nimport { loadConfig } from \"./lib/utils\"\n\n// Only run CLI initialization when this file is executed directly\n\nconst program = new Command()\n\nprogram\n .name(\"i18n-magic\")\n .description(\n \"CLI to help you manage your locales JSON with translations, replacements, etc. with OpenAI.\",\n )\n .version(\"0.2.0\")\n .option(\"-c, --config <path>\", \"path to config file\")\n .option(\"-e, --env <path>\", \"path to .env file\")\n\nconst commands: CommandType[] = [\n {\n name: \"scan\",\n description:\n \"Scan for missing translations, get prompted for each, translate it to the other locales and save it to the JSON file.\",\n action: translateMissing,\n },\n {\n name: \"replace\",\n description:\n \"Replace a translation based on the key, and translate it to the other locales and save it to the JSON file.\",\n action: replaceTranslation,\n },\n {\n name: \"check-missing\",\n description:\n \"Check if there are any missing translations. Useful for a CI/CD pipeline or husky hook.\",\n action: checkMissing,\n },\n {\n name: \"sync\",\n description:\n \"Sync the translations from the default locale to the other locales. Useful for a CI/CD pipeline or husky hook.\",\n action: syncLocales,\n },\n]\n\nfor (const command of commands) {\n const cmd = program.command(command.name).description(command.description)\n\n // Add key option to replace command\n if (command.name === \"replace\") {\n cmd\n .option(\"-k, --key <key>\", \"translation key to replace\")\n .allowExcessArguments(true)\n .argument(\"[key]\", \"translation key to replace\")\n }\n\n cmd.action(async (arg, options) => {\n const res = dotenv.config({\n path: program.opts().env || \".env\",\n })\n\n const config: Configuration = await loadConfig({\n configPath: program.opts().config,\n })\n\n const isGemini = (config.model as string)?.includes(\"gemini\")\n\n // Get API key from environment or config\n const openaiKey = res.parsed.OPENAI_API_KEY || config.OPENAI_API_KEY\n const geminiKey = res.parsed.GEMINI_API_KEY || config.GEMINI_API_KEY\n\n // Select appropriate key based on model type\n const key = isGemini ? geminiKey : openaiKey\n\n if (!key) {\n const keyType = isGemini ? \"GEMINI_API_KEY\" : \"OPENAI_API_KEY\"\n console.error(\n `Please provide a${isGemini ? \" Gemini\" : \"n OpenAI\"} API key in your .env file or config, called ${keyType}.`,\n )\n process.exit(1)\n }\n\n const openai = new OpenAI({\n apiKey: key,\n ...(isGemini && {\n baseURL: \"https://generativelanguage.googleapis.com/v1beta/openai/\",\n }),\n })\n\n // For replace command, check for key in argument or option\n if (command.name === \"replace\") {\n // If key is provided as positional argument, use that first\n const keyToUse = typeof arg === \"string\" ? arg : options.key\n command.action({ ...config, openai }, keyToUse)\n } else {\n command.action({ ...config, openai })\n }\n })\n}\n\nprogram.parse(process.argv)\n"],"names":["languages","label","name","value","loadConfig","_ref","_ref$configPath","configPath","filePath","path","join","process","cwd","fs","existsSync","console","error","exit","config","require","removeDuplicatesFromArray","arr","filter","item","index","indexOf","translateKey","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","inputLanguage","context","object","openai","outputLanguage","model","entries","chunks","i","result","existingInput","existingOutput","input","output","_i","_chunks","chunk","chunkObject","completion","translatedChunk","wrap","_callee$","_context","prev","next","Object","length","push","slice","find","l","fromEntries","beta","chat","completions","parse","messages","content","role","JSON","stringify","data","response_format","type","sent","choices","message","_extends","Promise","resolve","setTimeout","abrupt","stop","_x","apply","arguments","loadLocalesFile","_ref4","_callee2","loadPath","locale","namespace","resolvedPath","json","_callee2$","_context2","replace","readFileSync","_x2","_x3","_x4","writeLocalesFile","_ref5","_callee3","savePath","resolvedSavePath","_callee3$","_context3","writeFileSync","_x5","_x6","_x7","_x8","getPureKey","key","isDefault","splitted","split","getMissingKeys","_ref7","_callee4","_ref6","globPatterns","namespaces","defaultNamespace","defaultLocale","parser","files","keys","_iterator","_step","file","uniqueKeys","newKeys","_iterator2","_step2","existingKeys","_iterator3","_step3","pureKey","_callee4$","_context4","Parser","nsSeparator","keySeparator","glob","concat","_createForOfIteratorHelperLoose","done","parseFuncFromString","list","log","_x9","getTextInput","_ref8","_callee5","prompt","_callee5$","_context5","prompts","onState","state","aborted","nextTick","_x10","checkAllKeysExist","_ref10","_callee6","_ref9","locales","disableTranslation","_iterator4","_step4","defaultLocaleKeys","_iterator5","_step5","localeKeys","missingKeys","_i2","_Object$entries","_Object$entries$_i","translatedValues","updatedLocaleKeys","_callee6$","_context6","_x11","TranslationError","_Error","cause","_this","call","_inheritsLoose","_wrapNativeSuper","Error","checkMissing","getKeyToReplace","keyToReplace","replaceTranslation","newTranslation","newValue","_object","translation","translateMissing","newKeysWithDefaultLocale","newKey","answer","newKeysObject","allLocales","_loop","reduce","relevantKeys","_loop$","delegateYield","t0","syncLocales","undefined","t1","warn","t2","t3","t4","program","Command","description","version","option","commands","action","command","_commands","cmd","allowExcessArguments","argument","arg","options","_config$model","res","isGemini","openaiKey","geminiKey","keyType","keyToUse","dotenv","opts","env","includes","parsed","OPENAI_API_KEY","GEMINI_API_KEY","OpenAI","apiKey","baseURL","argv"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scoutello/i18n-magic",
3
- "version": "0.15.0",
3
+ "version": "0.15.1",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "CLI to help you manage your locales JSON with translations, replacements, etc. with OpenAI or Gemini",
package/src/index.ts CHANGED
@@ -53,10 +53,13 @@ for (const command of commands) {
53
53
 
54
54
  // Add key option to replace command
55
55
  if (command.name === "replace") {
56
- cmd.option("-k, --key <key>", "translation key to replace")
56
+ cmd
57
+ .option("-k, --key <key>", "translation key to replace")
58
+ .allowExcessArguments(true)
59
+ .argument("[key]", "translation key to replace")
57
60
  }
58
61
 
59
- cmd.action(async (options) => {
62
+ cmd.action(async (arg, options) => {
60
63
  const res = dotenv.config({
61
64
  path: program.opts().env || ".env",
62
65
  })
@@ -89,8 +92,11 @@ for (const command of commands) {
89
92
  }),
90
93
  })
91
94
 
92
- if (command.name === "replace" && options.key) {
93
- command.action({ ...config, openai }, options.key)
95
+ // For replace command, check for key in argument or option
96
+ if (command.name === "replace") {
97
+ // If key is provided as positional argument, use that first
98
+ const keyToUse = typeof arg === "string" ? arg : options.key
99
+ command.action({ ...config, openai }, keyToUse)
94
100
  } else {
95
101
  command.action({ ...config, openai })
96
102
  }