lingo.dev 0.73.0 → 0.74.0

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.
@@ -103,6 +103,8 @@ var localeMap = {
103
103
  ],
104
104
  // Ukrainian (Ukraine)
105
105
  uk: ["uk-UA"],
106
+ // Belarusian (Belarus)
107
+ be: ["be-BY"],
106
108
  // Hindi (India)
107
109
  hi: ["hi-IN"],
108
110
  // Chinese
@@ -489,4 +491,4 @@ export {
489
491
  parseI18nConfig,
490
492
  defaultConfig
491
493
  };
492
- //# sourceMappingURL=chunk-NF6GBJ2R.mjs.map
494
+ //# sourceMappingURL=chunk-B6KMMXCA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../spec/build/index.mjs"],"sourcesContent":["// src/locales.ts\nimport Z from \"zod\";\nvar localeMap = {\n // Urdu (Pakistan)\n ur: [\"ur-PK\"],\n // Vietnamese (Vietnam)\n vi: [\"vi-VN\"],\n // Turkish (Turkey)\n tr: [\"tr-TR\"],\n // Tamil (India)\n ta: [\"ta-IN\"],\n // Serbian\n sr: [\n \"sr-RS\",\n // Serbian (Latin)\n \"sr-Latn-RS\",\n // Serbian (Latin)\n \"sr-Cyrl-RS\"\n // Serbian (Cyrillic)\n ],\n // Hungarian (Hungary)\n hu: [\"hu-HU\"],\n // Hebrew (Israel)\n he: [\"he-IL\"],\n // Estonian (Estonia)\n et: [\"et-EE\"],\n // Greek (Greece)\n el: [\"el-GR\"],\n // Danish (Denmark)\n da: [\"da-DK\"],\n // Azerbaijani (Azerbaijan)\n az: [\"az-AZ\"],\n // Thai (Thailand)\n th: [\"th-TH\"],\n // Swedish (Sweden)\n sv: [\"sv-SE\"],\n // English\n en: [\n \"en-US\",\n // United States\n \"en-GB\",\n // United Kingdom\n \"en-AU\",\n // Australia\n \"en-CA\"\n // Canada\n ],\n // Spanish\n es: [\n \"es-ES\",\n // Spain\n \"es-419\",\n // Latin America\n \"es-MX\",\n // Mexico\n \"es-AR\"\n // Argentina\n ],\n // French\n fr: [\n \"fr-FR\",\n // France\n \"fr-CA\",\n // Canada\n \"fr-BE\"\n // Belgium\n ],\n // Catalan (Spain)\n ca: [\"ca-ES\"],\n // Japanese (Japan)\n ja: [\"ja-JP\"],\n // German\n de: [\n \"de-DE\",\n // Germany\n \"de-AT\",\n // Austria\n \"de-CH\"\n // Switzerland\n ],\n // Portuguese\n pt: [\n \"pt-PT\",\n // Portugal\n \"pt-BR\"\n // Brazil\n ],\n // Italian\n it: [\n \"it-IT\",\n // Italy\n \"it-CH\"\n // Switzerland\n ],\n // Russian\n ru: [\n \"ru-RU\",\n // Russia\n \"ru-BY\"\n // Belarus\n ],\n // Ukrainian (Ukraine)\n uk: [\"uk-UA\"],\n // Belarusian (Belarus)\n be: [\"be-BY\"],\n // Hindi (India)\n hi: [\"hi-IN\"],\n // Chinese\n zh: [\n \"zh-CN\",\n // Simplified Chinese (China)\n \"zh-TW\",\n // Traditional Chinese (Taiwan)\n \"zh-HK\",\n // Traditional Chinese (Hong Kong)\n \"zh-Hans\",\n // Simplified Chinese\n \"zh-Hant\",\n // Traditional Chinese\n \"zh-Hant-HK\",\n // Traditional Chinese (Hong Kong)\n \"zh-Hant-TW\",\n // Traditional Chinese (Taiwan)\n \"zh-Hant-CN\",\n // Traditional Chinese (China)\n \"zh-Hans-HK\",\n // Simplified Chinese (Hong Kong)\n \"zh-Hans-TW\",\n // Simplified Chinese (China)\n \"zh-Hans-CN\"\n // Simplified Chinese (China)\n ],\n // Korean (South Korea)\n ko: [\"ko-KR\"],\n // Arabic\n ar: [\n \"ar-EG\",\n // Egypt\n \"ar-SA\",\n // Saudi Arabia\n \"ar-AE\",\n // United Arab Emirates\n \"ar-MA\"\n // Morocco\n ],\n // Bulgarian (Bulgaria)\n bg: [\"bg-BG\"],\n // Czech (Czech Republic)\n cs: [\"cs-CZ\"],\n // Dutch\n nl: [\n \"nl-NL\",\n // Netherlands\n \"nl-BE\"\n // Belgium\n ],\n // Polish (Poland)\n pl: [\"pl-PL\"],\n // Indonesian (Indonesia)\n id: [\"id-ID\"],\n // Malay (Malaysia)\n ms: [\"ms-MY\"],\n // Finnish (Finland)\n fi: [\"fi-FI\"],\n // Basque (Spain)\n eu: [\"eu-ES\"],\n // Croatian (Croatia)\n hr: [\"hr-HR\"],\n // Hebrew (Israel) - alternative code\n iw: [\"iw-IL\"],\n // Khmer (Cambodia)\n km: [\"km-KH\"],\n // Latvian (Latvia)\n lv: [\"lv-LV\"],\n // Lithuanian (Lithuania)\n lt: [\"lt-LT\"],\n // Norwegian (Norway)\n no: [\"no-NO\"],\n // Romanian (Romania)\n ro: [\"ro-RO\"],\n // Slovak (Slovakia)\n sk: [\"sk-SK\"],\n // Swahili\n sw: [\n \"sw-TZ\",\n // Tanzania\n \"sw-KE\"\n // Kenya\n ],\n // Persian (Iran)\n fa: [\"fa-IR\"],\n // Filipino (Philippines)\n fil: [\"fil-PH\"],\n // Punjabi\n pa: [\n \"pa-IN\",\n // India\n \"pa-PK\"\n // Pakistan\n ],\n // Bengali\n bn: [\n \"bn-BD\",\n // Bangladesh\n \"bn-IN\"\n // India\n ],\n // Irish (Ireland)\n ga: [\"ga-IE\"],\n // Maltese (Malta)\n mt: [\"mt-MT\"],\n // Slovenian (Slovenia)\n sl: [\"sl-SI\"],\n // Albanian (Albania)\n sq: [\"sq-AL\"],\n // Bavarian (Germany)\n bar: [\"bar-DE\"],\n // Neapolitan (Italy)\n nap: [\"nap-IT\"],\n // Afrikaans (South Africa)\n af: [\"af-ZA\"],\n // Somali (Somalia)\n so: [\"so-SO\"],\n // Tigrinya (Ethiopia)\n ti: [\"ti-ET\"],\n // Standard Moroccan Tamazight (Morocco)\n zgh: [\"zgh-MA\"],\n // Tagalog (Philippines)\n tl: [\"tl-PH\"],\n // Telugu (India)\n te: [\"te-IN\"]\n};\nvar localeCodesShort = Object.keys(localeMap);\nvar localeCodesFull = Object.values(localeMap).flat();\nvar localeCodesFullUnderscore = localeCodesFull.map((value) => value.replace(\"-\", \"_\"));\nvar localeCodesFullExplicitRegion = localeCodesFull.map((value) => {\n const chunks = value.split(\"-\");\n const result = [chunks[0], \"-r\", chunks.slice(1).join(\"-\")].join(\"\");\n return result;\n});\nvar localeCodes = [\n ...localeCodesShort,\n ...localeCodesFull,\n ...localeCodesFullUnderscore,\n ...localeCodesFullExplicitRegion\n];\nvar localeCodeSchema = Z.string().refine((value) => localeCodes.includes(value), {\n message: \"Invalid locale code\"\n});\nvar resolveLocaleCode = (value) => {\n const existingFullLocaleCode = Object.values(localeMap).flat().includes(value);\n if (existingFullLocaleCode) {\n return value;\n }\n const existingShortLocaleCode = Object.keys(localeMap).includes(value);\n if (existingShortLocaleCode) {\n const correspondingFullLocales = localeMap[value];\n const fallbackFullLocale = correspondingFullLocales[0];\n return fallbackFullLocale;\n }\n throw new Error(`Invalid locale code: ${value}`);\n};\nvar getAlternativeLocaleCodes = (locale) => {\n if (locale.includes(\"-\")) {\n return [locale.replace(/-/g, \"_\")];\n } else if (locale.includes(\"_\")) {\n return [locale.replace(/_/g, \"-\")];\n } else {\n return [];\n }\n};\nvar getLocaleCodeDelimiter = (locale) => {\n if (locale.includes(\"_\")) {\n return \"_\";\n } else if (locale.includes(\"-\")) {\n return \"-\";\n } else {\n return null;\n }\n};\nvar resolveOverridenLocale = (locale, delimiter) => {\n if (!delimiter) {\n return locale;\n }\n const currentDelimiter = getLocaleCodeDelimiter(locale);\n if (!currentDelimiter) {\n return locale;\n }\n return locale.replace(currentDelimiter, delimiter);\n};\n\n// src/formats.ts\nimport Z2 from \"zod\";\nvar bucketTypes = [\n \"android\",\n \"csv\",\n \"flutter\",\n \"html\",\n \"json\",\n \"markdown\",\n \"xcode-strings\",\n \"xcode-stringsdict\",\n \"xcode-xcstrings\",\n \"yaml\",\n \"yaml-root-key\",\n \"properties\",\n \"po\",\n \"xliff\",\n \"xml\",\n \"srt\",\n \"dato\",\n \"compiler\",\n \"vtt\"\n];\nvar bucketTypeSchema = Z2.enum(bucketTypes);\n\n// src/config.ts\nimport Z3 from \"zod\";\nvar localeSchema = Z3.object({\n source: localeCodeSchema,\n targets: Z3.array(localeCodeSchema)\n});\nvar createConfigDefinition = (definition) => definition;\nvar extendConfigDefinition = (definition, params) => {\n const schema = params.createSchema(definition.schema);\n const defaultValue = params.createDefaultValue(definition.defaultValue);\n const upgrader = (config) => params.createUpgrader(config, schema, defaultValue);\n return createConfigDefinition({\n schema,\n defaultValue,\n parse: (rawConfig) => {\n const safeResult = schema.safeParse(rawConfig);\n if (safeResult.success) {\n return safeResult.data;\n }\n const localeErrors = safeResult.error.errors.filter((issue) => issue.message.includes(\"Invalid locale code\")).map((issue) => {\n let unsupportedLocale = \"\";\n const path = issue.path;\n const config = rawConfig;\n if (config.locale) {\n unsupportedLocale = path.reduce((acc, key) => {\n if (acc && typeof acc === \"object\" && key in acc) {\n return acc[key];\n }\n return acc;\n }, config.locale);\n }\n return `Unsupported locale: ${unsupportedLocale}`;\n });\n if (localeErrors.length > 0) {\n throw new Error(`\n${localeErrors.join(\"\\n\")}`);\n }\n const baseConfig = definition.parse(rawConfig);\n const result = upgrader(baseConfig);\n return result;\n }\n });\n};\nvar configV0Schema = Z3.object({\n version: Z3.number().default(0)\n});\nvar configV0Definition = createConfigDefinition({\n schema: configV0Schema,\n defaultValue: { version: 0 },\n parse: (rawConfig) => {\n return configV0Schema.parse(rawConfig);\n }\n});\nvar configV1Definition = extendConfigDefinition(configV0Definition, {\n createSchema: (baseSchema) => baseSchema.extend({\n locale: localeSchema,\n buckets: Z3.record(Z3.string(), bucketTypeSchema).default({}).optional()\n }),\n createDefaultValue: () => ({\n version: 1,\n locale: {\n source: \"en\",\n targets: [\"es\"]\n },\n buckets: {}\n }),\n createUpgrader: () => ({\n version: 1,\n locale: {\n source: \"en\",\n targets: [\"es\"]\n },\n buckets: {}\n })\n});\nvar configV1_1Definition = extendConfigDefinition(configV1Definition, {\n createSchema: (baseSchema) => baseSchema.extend({\n buckets: Z3.record(\n bucketTypeSchema,\n Z3.object({\n include: Z3.array(Z3.string()).default([]),\n exclude: Z3.array(Z3.string()).default([]).optional()\n })\n ).default({})\n }),\n createDefaultValue: (baseDefaultValue) => ({\n ...baseDefaultValue,\n version: 1.1,\n buckets: {}\n }),\n createUpgrader: (oldConfig, schema) => {\n const upgradedConfig = {\n ...oldConfig,\n version: 1.1,\n buckets: {}\n };\n if (oldConfig.buckets) {\n for (const [bucketPath, bucketType] of Object.entries(oldConfig.buckets)) {\n if (!upgradedConfig.buckets[bucketType]) {\n upgradedConfig.buckets[bucketType] = {\n include: []\n };\n }\n upgradedConfig.buckets[bucketType]?.include.push(bucketPath);\n }\n }\n return upgradedConfig;\n }\n});\nvar configV1_2Definition = extendConfigDefinition(configV1_1Definition, {\n createSchema: (baseSchema) => baseSchema.extend({\n locale: localeSchema.extend({\n extraSource: localeCodeSchema.optional()\n })\n }),\n createDefaultValue: (baseDefaultValue) => ({\n ...baseDefaultValue,\n version: 1.2\n }),\n createUpgrader: (oldConfig) => ({\n ...oldConfig,\n version: 1.2\n })\n});\nvar bucketItemSchema = Z3.object({\n path: Z3.string(),\n delimiter: Z3.union([Z3.literal(\"-\"), Z3.literal(\"_\"), Z3.literal(null)]).optional()\n});\nvar configV1_3Definition = extendConfigDefinition(configV1_2Definition, {\n createSchema: (baseSchema) => baseSchema.extend({\n buckets: Z3.record(\n bucketTypeSchema,\n Z3.object({\n include: Z3.array(Z3.union([Z3.string(), bucketItemSchema])).default([]),\n exclude: Z3.array(Z3.union([Z3.string(), bucketItemSchema])).default([]).optional()\n })\n ).default({})\n }),\n createDefaultValue: (baseDefaultValue) => ({\n ...baseDefaultValue,\n version: 1.3\n }),\n createUpgrader: (oldConfig) => ({\n ...oldConfig,\n version: 1.3\n })\n});\nvar LATEST_CONFIG_DEFINITION = configV1_3Definition;\nfunction parseI18nConfig(rawConfig) {\n try {\n const result = LATEST_CONFIG_DEFINITION.parse(rawConfig);\n return result;\n } catch (error) {\n throw new Error(`Failed to parse config: ${error.message}`);\n }\n}\nvar defaultConfig = LATEST_CONFIG_DEFINITION.defaultValue;\nexport {\n bucketItemSchema,\n bucketTypeSchema,\n bucketTypes,\n configV0Definition,\n configV1Definition,\n configV1_1Definition,\n configV1_2Definition,\n configV1_3Definition,\n defaultConfig,\n getAlternativeLocaleCodes,\n getLocaleCodeDelimiter,\n localeCodeSchema,\n localeCodes,\n localeCodesFull,\n localeCodesFullExplicitRegion,\n localeCodesFullUnderscore,\n localeCodesShort,\n localeSchema,\n parseI18nConfig,\n resolveLocaleCode,\n resolveOverridenLocale\n};\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  localeCodeSchema
3
- } from "./chunk-NF6GBJ2R.mjs";
3
+ } from "./chunk-B6KMMXCA.mjs";
4
4
 
5
5
  // ../sdk/build/index.mjs
6
6
  import Z from "zod";
@@ -328,4 +328,4 @@ var ReplexicaEngine = class {
328
328
  export {
329
329
  ReplexicaEngine
330
330
  };
331
- //# sourceMappingURL=chunk-NUMPOGXY.mjs.map
331
+ //# sourceMappingURL=chunk-D7CRCYTW.mjs.map
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkBCCNAFJBcjs = require('./chunk-BCCNAFJB.cjs');
3
+ var _chunkU3YIG2HScjs = require('./chunk-U3YIG2HS.cjs');
4
4
 
5
5
  // ../sdk/build/index.mjs
6
6
  var _zod = require('zod'); var _zod2 = _interopRequireDefault(_zod);
@@ -13,11 +13,11 @@ var engineParamsSchema = _zod2.default.object({
13
13
  }).passthrough();
14
14
  var payloadSchema = _zod2.default.record(_zod2.default.string(), _zod2.default.any());
15
15
  var localizationParamsSchema = _zod2.default.object({
16
- sourceLocale: _chunkBCCNAFJBcjs.localeCodeSchema,
17
- targetLocale: _chunkBCCNAFJBcjs.localeCodeSchema,
16
+ sourceLocale: _chunkU3YIG2HScjs.localeCodeSchema,
17
+ targetLocale: _chunkU3YIG2HScjs.localeCodeSchema,
18
18
  fast: _zod2.default.boolean().optional()
19
19
  });
20
- var referenceSchema = _zod2.default.record(_chunkBCCNAFJBcjs.localeCodeSchema, payloadSchema);
20
+ var referenceSchema = _zod2.default.record(_chunkU3YIG2HScjs.localeCodeSchema, payloadSchema);
21
21
  var ReplexicaEngine = class {
22
22
 
23
23
  /**
@@ -328,4 +328,4 @@ var ReplexicaEngine = class {
328
328
 
329
329
 
330
330
  exports.ReplexicaEngine = ReplexicaEngine;
331
- //# sourceMappingURL=chunk-HODTYTE5.cjs.map
331
+ //# sourceMappingURL=chunk-MZS2TO4G.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/lingo.dev/lingo.dev/packages/cli/build/chunk-HODTYTE5.cjs","../../sdk/build/index.mjs"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACHA,oEAAc;AAEd,6CAAyB;AACzB,IAAI,mBAAA,EAAqB,aAAA,CAAE,MAAA,CAAO;AAAA,EAChC,MAAA,EAAQ,aAAA,CAAE,MAAA,CAAO,CAAA;AAAA,EACjB,MAAA,EAAQ,aAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAA,CAAE,OAAA,CAAQ,0BAA0B,CAAA;AAAA,EAC3D,SAAA,EAAW,aAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAA,CAAE,EAAA,CAAG,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EACrD,kBAAA,EAAoB,aAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAA,CAAE,EAAA,CAAG,CAAC,CAAA,CAAE,GAAA,CAAI,IAAI,CAAA,CAAE,OAAA,CAAQ,GAAG;AAClE,CAAC,CAAA,CAAE,WAAA,CAAY,CAAA;AACf,IAAI,cAAA,EAAgB,aAAA,CAAE,MAAA,CAAO,aAAA,CAAE,MAAA,CAAO,CAAA,EAAG,aAAA,CAAE,GAAA,CAAI,CAAC,CAAA;AAChD,IAAI,yBAAA,EAA2B,aAAA,CAAE,MAAA,CAAO;AAAA,EACtC,YAAA,EAAc,kCAAA;AAAA,EACd,YAAA,EAAc,kCAAA;AAAA,EACd,IAAA,EAAM,aAAA,CAAE,OAAA,CAAQ,CAAA,CAAE,QAAA,CAAS;AAC7B,CAAC,CAAA;AACD,IAAI,gBAAA,EAAkB,aAAA,CAAE,MAAA,CAAO,kCAAA,EAAkB,aAAa,CAAA;AAC9D,IAAI,gBAAA,EAAkB,MAAM;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAA,CAAY,MAAA,EAAQ;AAClB,IAAA,IAAA,CAAK,OAAA,EAAS,kBAAA,CAAmB,KAAA,CAAM,MAAM,CAAA;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,YAAA,CAAa,OAAA,EAAS,MAAA,EAAQ,SAAA,EAAW,gBAAA,EAAkB;AAC/D,IAAA,MAAM,aAAA,EAAe,aAAA,CAAc,KAAA,CAAM,OAAO,CAAA;AAChD,IAAA,MAAM,YAAA,EAAc,wBAAA,CAAyB,KAAA,CAAM,MAAM,CAAA;AACzD,IAAA,MAAM,eAAA,EAAiB,IAAA,CAAK,oBAAA,CAAqB,YAAY,CAAA;AAC7D,IAAA,MAAM,uBAAA,EAAyB,CAAC,CAAA;AAChC,IAAA,MAAM,WAAA,EAAa,6BAAA,CAAS;AAC5B,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,cAAA,CAAe,MAAA,EAAQ,CAAA,EAAA,EAAK;AAC9C,MAAA,MAAM,MAAA,EAAQ,cAAA,CAAe,CAAC,CAAA;AAC9B,MAAA,MAAM,oBAAA,EAAsB,IAAA,CAAK,KAAA,CAAA,CAAO,EAAA,EAAI,CAAA,EAAA,EAAK,cAAA,CAAe,OAAA,EAAS,GAAG,CAAA;AAC5E,MAAA,MAAM,sBAAA,EAAwB,MAAM,IAAA,CAAK,aAAA;AAAA,QACvC,WAAA,CAAY,YAAA;AAAA,QACZ,WAAA,CAAY,YAAA;AAAA,QACZ,EAAE,IAAA,EAAM,KAAA,EAAO,UAAU,CAAA;AAAA,QACzB,UAAA;AAAA,QACA,MAAA,CAAO,KAAA,GAAQ;AAAA,MACjB,CAAA;AACA,MAAA,GAAA,CAAI,gBAAA,EAAkB;AACpB,QAAA,gBAAA,CAAiB,mBAAA,EAAqB,KAAA,EAAO,qBAAqB,CAAA;AAAA,MACpE;AACA,MAAA,sBAAA,CAAuB,IAAA,CAAK,qBAAqB,CAAA;AAAA,IACnD;AACA,IAAA,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,EAAG,GAAG,sBAAsB,CAAA;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,aAAA,CAAc,YAAA,EAAc,YAAA,EAAc,OAAA,EAAS,UAAA,EAAY,IAAA,EAAM;AACzE,IAAA,MAAM,IAAA,EAAM,MAAM,KAAA,CAAM,CAAA,EAAA;AACd,MAAA;AACC,MAAA;AACS,QAAA;AACD,QAAA;AACjB,MAAA;AACW,MAAA;AACT,QAAA;AACY,UAAA;AACF,UAAA;AACE,YAAA;AACA,YAAA;AACV,UAAA;AACc,UAAA;AACK,UAAA;AACrB,QAAA;AACA,QAAA;AACA,QAAA;AACF,MAAA;AACD,IAAA;AACY,IAAA;AACQ,MAAA;AACD,QAAA;AACX,MAAA;AACa,QAAA;AACF,QAAA;AAClB,MAAA;AACF,IAAA;AACqB,IAAA;AACD,IAAA;AACtB,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMqB,EAAA;AACH,IAAA;AACI,IAAA;AAChB,IAAA;AACmB,IAAA;AACH,IAAA;AACG,MAAA;AACD,MAAA;AACpB,MAAA;AACM,MAAA;AACiB,MAAA;AACT,QAAA;AACI,QAAA;AAChB,QAAA;AACF,MAAA;AACF,IAAA;AACO,IAAA;AACT,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMmB,EAAA;AACQ,IAAA;AACA,MAAA;AACP,IAAA;AACK,MAAA;AACL,IAAA;AACM,MAAA;AACjB,IAAA;AACE,MAAA;AACT,IAAA;AACF,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW0B,EAAA;AACC,IAAA;AAC3B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWyB,EAAA;AACA,IAAA;AACC,IAAA;AAC1B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUwB,EAAA;AACE,IAAA;AACD,MAAA;AACD,QAAA;AACF,UAAA;AACd,UAAA;AACa,UAAA;AACd,QAAA;AACH,MAAA;AACF,IAAA;AACO,IAAA;AACT,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWyB,EAAA;AACC,IAAA;AACF,IAAA;AACA,MAAA;AACd,MAAA;AACN,IAAA;AACJ,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYyB,EAAA;AACF,IAAA;AACH,IAAA;AACI,IAAA;AACD,IAAA;AACf,IAAA;AACY,MAAA;AACL,MAAA;AACU,MAAA;AACV,MAAA;AACb,IAAA;AACM,IAAA;AACmB,IAAA;AACF,IAAA;AACJ,MAAA;AACH,MAAA;AACG,MAAA;AACD,MAAA;AACC,QAAA;AACF,QAAA;AACE,QAAA;AACA,UAAA;AACb,UAAA;AACF,QAAA;AACiB,QAAA;AACN,UAAA;AACX,QAAA;AACc,QAAA;AACI,QAAA;AACA,UAAA;AAClB,QAAA;AACU,QAAA;AACZ,MAAA;AACiB,MAAA;AACK,MAAA;AACxB,IAAA;AACqB,IAAA;AACD,MAAA;AACH,MAAA;AACT,QAAA;AACF,UAAA;AACF,QAAA;AACgB,QAAA;AAClB,MAAA;AACsB,MAAA;AACF,QAAA;AACR,QAAA;AACS,UAAA;AACnB,QAAA;AACc,MAAA;AACE,QAAA;AACA,QAAA;AACG,QAAA;AACC,QAAA;AACJ,UAAA;AACH,UAAA;AACQ,YAAA;AACnB,UAAA;AACD,QAAA;AACkB,QAAA;AACrB,MAAA;AACF,IAAA;AACyB,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACV,IAAA;AACI,MAAA;AACE,MAAA;AACN,MAAA;AACC,MAAA;AACM,MAAA;AACD,QAAA;AACN,UAAA;AACX,QAAA;AACmB,QAAA;AACN,QAAA;AACF,UAAA;AACX,QAAA;AACF,MAAA;AACa,MAAA;AACI,QAAA;AACL,UAAA;AACH,QAAA;AACG,UAAA;AACV,QAAA;AACF,MAAA;AACD,IAAA;AACoB,IAAA;AACvB,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMsB,EAAA;AACG,IAAA;AACb,MAAA;AACC,MAAA;AACS,QAAA;AACD,QAAA;AACjB,MAAA;AACuB,MAAA;AACxB,IAAA;AACiB,IAAA;AACA,MAAA;AAClB,IAAA;AACqB,IAAA;AACD,IAAA;AACtB,EAAA;AACF;ADI6B;AACA;AACA;AACA","file":"/home/runner/work/lingo.dev/lingo.dev/packages/cli/build/chunk-HODTYTE5.cjs","sourcesContent":[null,"// src/index.ts\nimport Z from \"zod\";\nimport { localeCodeSchema } from \"@lingo.dev/spec\";\nimport { createId } from \"@paralleldrive/cuid2\";\nvar engineParamsSchema = Z.object({\n apiKey: Z.string(),\n apiUrl: Z.string().url().default(\"https://engine.lingo.dev\"),\n batchSize: Z.number().int().gt(0).lte(250).default(25),\n idealBatchItemSize: Z.number().int().gt(0).lte(2500).default(250)\n}).passthrough();\nvar payloadSchema = Z.record(Z.string(), Z.any());\nvar localizationParamsSchema = Z.object({\n sourceLocale: localeCodeSchema,\n targetLocale: localeCodeSchema,\n fast: Z.boolean().optional()\n});\nvar referenceSchema = Z.record(localeCodeSchema, payloadSchema);\nvar ReplexicaEngine = class {\n config;\n /**\n * Create a new ReplexicaEngine instance\n * @param config - Configuration options for the Engine\n */\n constructor(config) {\n this.config = engineParamsSchema.parse(config);\n }\n /**\n * Localize content using the Lingo.dev API\n * @param payload - The content to be localized\n * @param params - Localization parameters including source/target locales and fast mode option\n * @param reference - Optional reference translations to maintain consistency\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns Localized content\n * @internal\n */\n async _localizeRaw(payload, params, reference, progressCallback) {\n const finalPayload = payloadSchema.parse(payload);\n const finalParams = localizationParamsSchema.parse(params);\n const chunkedPayload = this.extractPayloadChunks(finalPayload);\n const processedPayloadChunks = [];\n const workflowId = createId();\n for (let i = 0; i < chunkedPayload.length; i++) {\n const chunk = chunkedPayload[i];\n const percentageCompleted = Math.round((i + 1) / chunkedPayload.length * 100);\n const processedPayloadChunk = await this.localizeChunk(\n finalParams.sourceLocale,\n finalParams.targetLocale,\n { data: chunk, reference },\n workflowId,\n params.fast || false\n );\n if (progressCallback) {\n progressCallback(percentageCompleted, chunk, processedPayloadChunk);\n }\n processedPayloadChunks.push(processedPayloadChunk);\n }\n return Object.assign({}, ...processedPayloadChunks);\n }\n /**\n * Localize a single chunk of content\n * @param sourceLocale - Source locale\n * @param targetLocale - Target locale\n * @param payload - Payload containing the chunk to be localized\n * @returns Localized chunk\n */\n async localizeChunk(sourceLocale, targetLocale, payload, workflowId, fast) {\n const res = await fetch(`${this.config.apiUrl}/i18n`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.config.apiKey}`\n },\n body: JSON.stringify(\n {\n params: { workflowId, fast },\n locale: {\n source: sourceLocale,\n target: targetLocale\n },\n data: payload.data,\n reference: payload.reference\n },\n null,\n 2\n )\n });\n if (!res.ok) {\n if (res.status === 400) {\n throw new Error(`Invalid request: ${res.statusText}`);\n } else {\n const errorText = await res.text();\n throw new Error(errorText);\n }\n }\n const jsonResponse = await res.json();\n return jsonResponse.data || {};\n }\n /**\n * Extract payload chunks based on the ideal chunk size\n * @param payload - The payload to be chunked\n * @returns An array of payload chunks\n */\n extractPayloadChunks(payload) {\n const result = [];\n let currentChunk = {};\n let currentChunkItemCount = 0;\n const payloadEntries = Object.entries(payload);\n for (let i = 0; i < payloadEntries.length; i++) {\n const [key, value] = payloadEntries[i];\n currentChunk[key] = value;\n currentChunkItemCount++;\n const currentChunkSize = this.countWordsInRecord(currentChunk);\n if (currentChunkSize > this.config.idealBatchItemSize || currentChunkItemCount >= this.config.batchSize || i === payloadEntries.length - 1) {\n result.push(currentChunk);\n currentChunk = {};\n currentChunkItemCount = 0;\n }\n }\n return result;\n }\n /**\n * Count words in a record or array\n * @param payload - The payload to count words in\n * @returns The total number of words\n */\n countWordsInRecord(payload) {\n if (Array.isArray(payload)) {\n return payload.reduce((acc, item) => acc + this.countWordsInRecord(item), 0);\n } else if (typeof payload === \"object\" && payload !== null) {\n return Object.values(payload).reduce((acc, item) => acc + this.countWordsInRecord(item), 0);\n } else if (typeof payload === \"string\") {\n return payload.trim().split(/\\s+/).filter(Boolean).length;\n } else {\n return 0;\n }\n }\n /**\n * Localize a typical JavaScript object\n * @param obj - The object to be localized (strings will be extracted and translated)\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster but potentially lower quality)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns A new object with the same structure but localized string values\n */\n async localizeObject(obj, params, progressCallback) {\n return this._localizeRaw(obj, params, void 0, progressCallback);\n }\n /**\n * Localize a single text string\n * @param text - The text string to be localized\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster for bigger batches)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns The localized text string\n */\n async localizeText(text, params, progressCallback) {\n const response = await this._localizeRaw({ text }, params, void 0, progressCallback);\n return response.text || \"\";\n }\n /**\n * Localize a text string to multiple target locales\n * @param text - The text string to be localized\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocales: An array of target language codes (e.g., ['es', 'fr'])\n * - fast: Optional boolean to enable fast mode (for bigger batches)\n * @returns An array of localized text strings\n */\n async batchLocalizeText(text, params) {\n const responses = await Promise.all(\n params.targetLocales.map(\n (targetLocale) => this.localizeText(text, {\n sourceLocale: params.sourceLocale,\n targetLocale,\n fast: params.fast\n })\n )\n );\n return responses;\n }\n /**\n * Localize a chat sequence while preserving speaker names\n * @param chat - Array of chat messages, each with 'name' and 'text' properties\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster but potentially lower quality)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns Array of localized chat messages with preserved structure\n */\n async localizeChat(chat, params, progressCallback) {\n const localized = await this._localizeRaw({ chat }, params, void 0, progressCallback);\n return Object.entries(localized).map(([key, value]) => ({\n name: chat[parseInt(key.split(\"_\")[1])].name,\n text: value\n }));\n }\n /**\n * Localize an HTML document while preserving structure and formatting\n * Handles both text content and localizable attributes (alt, title, placeholder, meta content)\n * @param html - The HTML document string to be localized\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster but potentially lower quality)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns The localized HTML document as a string, with updated lang attribute\n */\n async localizeHtml(html, params, progressCallback) {\n const jsdomPackage = await import(\"jsdom\");\n const { JSDOM } = jsdomPackage;\n const dom = new JSDOM(html);\n const document = dom.window.document;\n const LOCALIZABLE_ATTRIBUTES = {\n meta: [\"content\"],\n img: [\"alt\"],\n input: [\"placeholder\"],\n a: [\"title\"]\n };\n const UNLOCALIZABLE_TAGS = [\"script\", \"style\"];\n const extractedContent = {};\n const getPath = (node, attribute) => {\n const indices = [];\n let current = node;\n let rootParent = \"\";\n while (current) {\n const parent = current.parentElement;\n if (!parent) break;\n if (parent === document.documentElement) {\n rootParent = current.nodeName.toLowerCase();\n break;\n }\n const siblings = Array.from(parent.childNodes).filter(\n (n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()\n );\n const index = siblings.indexOf(current);\n if (index !== -1) {\n indices.unshift(index);\n }\n current = parent;\n }\n const basePath = rootParent ? `${rootParent}/${indices.join(\"/\")}` : indices.join(\"/\");\n return attribute ? `${basePath}#${attribute}` : basePath;\n };\n const processNode = (node) => {\n let parent = node.parentElement;\n while (parent) {\n if (UNLOCALIZABLE_TAGS.includes(parent.tagName.toLowerCase())) {\n return;\n }\n parent = parent.parentElement;\n }\n if (node.nodeType === 3) {\n const text = node.textContent?.trim() || \"\";\n if (text) {\n extractedContent[getPath(node)] = text;\n }\n } else if (node.nodeType === 1) {\n const element = node;\n const tagName = element.tagName.toLowerCase();\n const attributes = LOCALIZABLE_ATTRIBUTES[tagName] || [];\n attributes.forEach((attr) => {\n const value = element.getAttribute(attr);\n if (value) {\n extractedContent[getPath(element, attr)] = value;\n }\n });\n Array.from(element.childNodes).filter((n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()).forEach(processNode);\n }\n };\n Array.from(document.head.childNodes).filter((n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()).forEach(processNode);\n Array.from(document.body.childNodes).filter((n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()).forEach(processNode);\n const localizedContent = await this._localizeRaw(extractedContent, params, void 0, progressCallback);\n document.documentElement.setAttribute(\"lang\", params.targetLocale);\n Object.entries(localizedContent).forEach(([path, value]) => {\n const [nodePath, attribute] = path.split(\"#\");\n const [rootTag, ...indices] = nodePath.split(\"/\");\n let parent = rootTag === \"head\" ? document.head : document.body;\n let current = parent;\n for (const index of indices) {\n const siblings = Array.from(parent.childNodes).filter(\n (n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()\n );\n current = siblings[parseInt(index)] || null;\n if (current?.nodeType === 1) {\n parent = current;\n }\n }\n if (current) {\n if (attribute) {\n current.setAttribute(attribute, value);\n } else {\n current.textContent = value;\n }\n }\n });\n return dom.serialize();\n }\n /**\n * Detect the language of a given text\n * @param text - The text to analyze\n * @returns Promise resolving to a locale code (e.g., 'en', 'es', 'fr')\n */\n async recognizeLocale(text) {\n const response = await fetch(`${this.config.apiUrl}/recognize`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.config.apiKey}`\n },\n body: JSON.stringify({ text })\n });\n if (!response.ok) {\n throw new Error(`Error recognizing locale: ${response.statusText}`);\n }\n const jsonResponse = await response.json();\n return jsonResponse.locale;\n }\n};\nexport {\n ReplexicaEngine\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/lingo.dev/lingo.dev/packages/cli/build/chunk-MZS2TO4G.cjs","../../sdk/build/index.mjs"],"names":[],"mappings":"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ACD,MAAA;AACC,QAAA;AACF,QAAA;AACE,QAAA;AACA,UAAA;AACb,UAAA;AACF,QAAA;AACiB,QAAA;AACN,UAAA;AACX,QAAA;AACc,QAAA;AACI,QAAA;AACA,UAAA;AAClB,QAAA;AACU,QAAA;AACZ,MAAA;AACiB,MAAA;AACK,MAAA;AACxB,IAAA;AACqB,IAAA;AACD,MAAA;AACH,MAAA;AACT,QAAA;AACF,UAAA;AACF,QAAA;AACgB,QAAA;AAClB,MAAA;AACsB,MAAA;AACF,QAAA;AACR,QAAA;AACS,UAAA;AACnB,QAAA;AACc,MAAA;AACE,QAAA;AACA,QAAA;AACG,QAAA;AACC,QAAA;AACJ,UAAA;AACH,UAAA;AACQ,YAAA;AACnB,UAAA;AACD,QAAA;AACkB,QAAA;AACrB,MAAA;AACF,IAAA;AACyB,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACV,IAAA;AACI,MAAA;AACE,MAAA;AACN,MAAA;AACC,MAAA;AACM,MAAA;AACD,QAAA;AACN,UAAA;AACX,QAAA;AACmB,QAAA;AACN,QAAA;AACF,UAAA;AACX,QAAA;AACF,MAAA;AACa,MAAA;AACI,QAAA;AACL,UAAA;AACH,QAAA;AACG,UAAA;AACV,QAAA;AACF,MAAA;AACD,IAAA;AACoB,IAAA;AACvB,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMsB,EAAA;AACG,IAAA;AACb,MAAA;AACC,MAAA;AACS,QAAA;AACD,QAAA;AACjB,MAAA;AACuB,MAAA;AACxB,IAAA;AACiB,IAAA;AACA,MAAA;AAClB,IAAA;AACqB,IAAA;AACD,IAAA;AACtB,EAAA;AACF;ADI6B;AACA;AACA;AACA","file":"/home/runner/work/lingo.dev/lingo.dev/packages/cli/build/chunk-MZS2TO4G.cjs","sourcesContent":[null,"// src/index.ts\nimport Z from \"zod\";\nimport { localeCodeSchema } from \"@lingo.dev/spec\";\nimport { createId } from \"@paralleldrive/cuid2\";\nvar engineParamsSchema = Z.object({\n apiKey: Z.string(),\n apiUrl: Z.string().url().default(\"https://engine.lingo.dev\"),\n batchSize: Z.number().int().gt(0).lte(250).default(25),\n idealBatchItemSize: Z.number().int().gt(0).lte(2500).default(250)\n}).passthrough();\nvar payloadSchema = Z.record(Z.string(), Z.any());\nvar localizationParamsSchema = Z.object({\n sourceLocale: localeCodeSchema,\n targetLocale: localeCodeSchema,\n fast: Z.boolean().optional()\n});\nvar referenceSchema = Z.record(localeCodeSchema, payloadSchema);\nvar ReplexicaEngine = class {\n config;\n /**\n * Create a new ReplexicaEngine instance\n * @param config - Configuration options for the Engine\n */\n constructor(config) {\n this.config = engineParamsSchema.parse(config);\n }\n /**\n * Localize content using the Lingo.dev API\n * @param payload - The content to be localized\n * @param params - Localization parameters including source/target locales and fast mode option\n * @param reference - Optional reference translations to maintain consistency\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns Localized content\n * @internal\n */\n async _localizeRaw(payload, params, reference, progressCallback) {\n const finalPayload = payloadSchema.parse(payload);\n const finalParams = localizationParamsSchema.parse(params);\n const chunkedPayload = this.extractPayloadChunks(finalPayload);\n const processedPayloadChunks = [];\n const workflowId = createId();\n for (let i = 0; i < chunkedPayload.length; i++) {\n const chunk = chunkedPayload[i];\n const percentageCompleted = Math.round((i + 1) / chunkedPayload.length * 100);\n const processedPayloadChunk = await this.localizeChunk(\n finalParams.sourceLocale,\n finalParams.targetLocale,\n { data: chunk, reference },\n workflowId,\n params.fast || false\n );\n if (progressCallback) {\n progressCallback(percentageCompleted, chunk, processedPayloadChunk);\n }\n processedPayloadChunks.push(processedPayloadChunk);\n }\n return Object.assign({}, ...processedPayloadChunks);\n }\n /**\n * Localize a single chunk of content\n * @param sourceLocale - Source locale\n * @param targetLocale - Target locale\n * @param payload - Payload containing the chunk to be localized\n * @returns Localized chunk\n */\n async localizeChunk(sourceLocale, targetLocale, payload, workflowId, fast) {\n const res = await fetch(`${this.config.apiUrl}/i18n`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.config.apiKey}`\n },\n body: JSON.stringify(\n {\n params: { workflowId, fast },\n locale: {\n source: sourceLocale,\n target: targetLocale\n },\n data: payload.data,\n reference: payload.reference\n },\n null,\n 2\n )\n });\n if (!res.ok) {\n if (res.status === 400) {\n throw new Error(`Invalid request: ${res.statusText}`);\n } else {\n const errorText = await res.text();\n throw new Error(errorText);\n }\n }\n const jsonResponse = await res.json();\n return jsonResponse.data || {};\n }\n /**\n * Extract payload chunks based on the ideal chunk size\n * @param payload - The payload to be chunked\n * @returns An array of payload chunks\n */\n extractPayloadChunks(payload) {\n const result = [];\n let currentChunk = {};\n let currentChunkItemCount = 0;\n const payloadEntries = Object.entries(payload);\n for (let i = 0; i < payloadEntries.length; i++) {\n const [key, value] = payloadEntries[i];\n currentChunk[key] = value;\n currentChunkItemCount++;\n const currentChunkSize = this.countWordsInRecord(currentChunk);\n if (currentChunkSize > this.config.idealBatchItemSize || currentChunkItemCount >= this.config.batchSize || i === payloadEntries.length - 1) {\n result.push(currentChunk);\n currentChunk = {};\n currentChunkItemCount = 0;\n }\n }\n return result;\n }\n /**\n * Count words in a record or array\n * @param payload - The payload to count words in\n * @returns The total number of words\n */\n countWordsInRecord(payload) {\n if (Array.isArray(payload)) {\n return payload.reduce((acc, item) => acc + this.countWordsInRecord(item), 0);\n } else if (typeof payload === \"object\" && payload !== null) {\n return Object.values(payload).reduce((acc, item) => acc + this.countWordsInRecord(item), 0);\n } else if (typeof payload === \"string\") {\n return payload.trim().split(/\\s+/).filter(Boolean).length;\n } else {\n return 0;\n }\n }\n /**\n * Localize a typical JavaScript object\n * @param obj - The object to be localized (strings will be extracted and translated)\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster but potentially lower quality)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns A new object with the same structure but localized string values\n */\n async localizeObject(obj, params, progressCallback) {\n return this._localizeRaw(obj, params, void 0, progressCallback);\n }\n /**\n * Localize a single text string\n * @param text - The text string to be localized\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster for bigger batches)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns The localized text string\n */\n async localizeText(text, params, progressCallback) {\n const response = await this._localizeRaw({ text }, params, void 0, progressCallback);\n return response.text || \"\";\n }\n /**\n * Localize a text string to multiple target locales\n * @param text - The text string to be localized\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocales: An array of target language codes (e.g., ['es', 'fr'])\n * - fast: Optional boolean to enable fast mode (for bigger batches)\n * @returns An array of localized text strings\n */\n async batchLocalizeText(text, params) {\n const responses = await Promise.all(\n params.targetLocales.map(\n (targetLocale) => this.localizeText(text, {\n sourceLocale: params.sourceLocale,\n targetLocale,\n fast: params.fast\n })\n )\n );\n return responses;\n }\n /**\n * Localize a chat sequence while preserving speaker names\n * @param chat - Array of chat messages, each with 'name' and 'text' properties\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster but potentially lower quality)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns Array of localized chat messages with preserved structure\n */\n async localizeChat(chat, params, progressCallback) {\n const localized = await this._localizeRaw({ chat }, params, void 0, progressCallback);\n return Object.entries(localized).map(([key, value]) => ({\n name: chat[parseInt(key.split(\"_\")[1])].name,\n text: value\n }));\n }\n /**\n * Localize an HTML document while preserving structure and formatting\n * Handles both text content and localizable attributes (alt, title, placeholder, meta content)\n * @param html - The HTML document string to be localized\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster but potentially lower quality)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns The localized HTML document as a string, with updated lang attribute\n */\n async localizeHtml(html, params, progressCallback) {\n const jsdomPackage = await import(\"jsdom\");\n const { JSDOM } = jsdomPackage;\n const dom = new JSDOM(html);\n const document = dom.window.document;\n const LOCALIZABLE_ATTRIBUTES = {\n meta: [\"content\"],\n img: [\"alt\"],\n input: [\"placeholder\"],\n a: [\"title\"]\n };\n const UNLOCALIZABLE_TAGS = [\"script\", \"style\"];\n const extractedContent = {};\n const getPath = (node, attribute) => {\n const indices = [];\n let current = node;\n let rootParent = \"\";\n while (current) {\n const parent = current.parentElement;\n if (!parent) break;\n if (parent === document.documentElement) {\n rootParent = current.nodeName.toLowerCase();\n break;\n }\n const siblings = Array.from(parent.childNodes).filter(\n (n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()\n );\n const index = siblings.indexOf(current);\n if (index !== -1) {\n indices.unshift(index);\n }\n current = parent;\n }\n const basePath = rootParent ? `${rootParent}/${indices.join(\"/\")}` : indices.join(\"/\");\n return attribute ? `${basePath}#${attribute}` : basePath;\n };\n const processNode = (node) => {\n let parent = node.parentElement;\n while (parent) {\n if (UNLOCALIZABLE_TAGS.includes(parent.tagName.toLowerCase())) {\n return;\n }\n parent = parent.parentElement;\n }\n if (node.nodeType === 3) {\n const text = node.textContent?.trim() || \"\";\n if (text) {\n extractedContent[getPath(node)] = text;\n }\n } else if (node.nodeType === 1) {\n const element = node;\n const tagName = element.tagName.toLowerCase();\n const attributes = LOCALIZABLE_ATTRIBUTES[tagName] || [];\n attributes.forEach((attr) => {\n const value = element.getAttribute(attr);\n if (value) {\n extractedContent[getPath(element, attr)] = value;\n }\n });\n Array.from(element.childNodes).filter((n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()).forEach(processNode);\n }\n };\n Array.from(document.head.childNodes).filter((n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()).forEach(processNode);\n Array.from(document.body.childNodes).filter((n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()).forEach(processNode);\n const localizedContent = await this._localizeRaw(extractedContent, params, void 0, progressCallback);\n document.documentElement.setAttribute(\"lang\", params.targetLocale);\n Object.entries(localizedContent).forEach(([path, value]) => {\n const [nodePath, attribute] = path.split(\"#\");\n const [rootTag, ...indices] = nodePath.split(\"/\");\n let parent = rootTag === \"head\" ? document.head : document.body;\n let current = parent;\n for (const index of indices) {\n const siblings = Array.from(parent.childNodes).filter(\n (n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()\n );\n current = siblings[parseInt(index)] || null;\n if (current?.nodeType === 1) {\n parent = current;\n }\n }\n if (current) {\n if (attribute) {\n current.setAttribute(attribute, value);\n } else {\n current.textContent = value;\n }\n }\n });\n return dom.serialize();\n }\n /**\n * Detect the language of a given text\n * @param text - The text to analyze\n * @returns Promise resolving to a locale code (e.g., 'en', 'es', 'fr')\n */\n async recognizeLocale(text) {\n const response = await fetch(`${this.config.apiUrl}/recognize`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.config.apiKey}`\n },\n body: JSON.stringify({ text })\n });\n if (!response.ok) {\n throw new Error(`Error recognizing locale: ${response.statusText}`);\n }\n const jsonResponse = await response.json();\n return jsonResponse.locale;\n }\n};\nexport {\n ReplexicaEngine\n};\n"]}
@@ -103,6 +103,8 @@ var localeMap = {
103
103
  ],
104
104
  // Ukrainian (Ukraine)
105
105
  uk: ["uk-UA"],
106
+ // Belarusian (Belarus)
107
+ be: ["be-BY"],
106
108
  // Hindi (India)
107
109
  hi: ["hi-IN"],
108
110
  // Chinese
@@ -489,4 +491,4 @@ var defaultConfig = LATEST_CONFIG_DEFINITION.defaultValue;
489
491
 
490
492
 
491
493
  exports.localeCodesShort = localeCodesShort; exports.localeCodesFull = localeCodesFull; exports.localeCodesFullUnderscore = localeCodesFullUnderscore; exports.localeCodesFullExplicitRegion = localeCodesFullExplicitRegion; exports.localeCodes = localeCodes; exports.localeCodeSchema = localeCodeSchema; exports.resolveLocaleCode = resolveLocaleCode; exports.getAlternativeLocaleCodes = getAlternativeLocaleCodes; exports.getLocaleCodeDelimiter = getLocaleCodeDelimiter; exports.resolveOverridenLocale = resolveOverridenLocale; exports.bucketTypes = bucketTypes; exports.bucketTypeSchema = bucketTypeSchema; exports.localeSchema = localeSchema; exports.configV0Definition = configV0Definition; exports.configV1Definition = configV1Definition; exports.configV1_1Definition = configV1_1Definition; exports.configV1_2Definition = configV1_2Definition; exports.bucketItemSchema = bucketItemSchema; exports.configV1_3Definition = configV1_3Definition; exports.parseI18nConfig = parseI18nConfig; exports.defaultConfig = defaultConfig;
492
- //# sourceMappingURL=chunk-BCCNAFJB.cjs.map
494
+ //# sourceMappingURL=chunk-U3YIG2HS.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/lingo.dev/lingo.dev/packages/cli/build/chunk-U3YIG2HS.cjs","../../spec/build/index.mjs"],"names":[],"mappings":"AAAA;ACCA,oEAAc;AAmSd;AAyBA;AA3TA,IAAI,UAAA,EAAY;AAAA;AAAA,EAEd,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA,YAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA,OAAA;AAAA;AAAA,IAEA,OAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA,QAAA;AAAA;AAAA,IAEA,OAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA,OAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA,OAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA,OAAA;AAAA;AAAA,IAEA,OAAA;AAAA;AAAA,IAEA,SAAA;AAAA;AAAA,IAEA,SAAA;AAAA;AAAA,IAEA,YAAA;AAAA;AAAA,IAEA,YAAA;AAAA;AAAA,IAEA,YAAA;AAAA;AAAA,IAEA,YAAA;AAAA;AAAA,IAEA,YAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA,OAAA;AAAA;AAAA,IAEA,OAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,GAAA,EAAK,CAAC,QAAQ,CAAA;AAAA;AAAA,EAEd,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI;AAAA,IACF,OAAA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,CAAA;AAAA;AAAA,EAEA,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,GAAA,EAAK,CAAC,QAAQ,CAAA;AAAA;AAAA,EAEd,GAAA,EAAK,CAAC,QAAQ,CAAA;AAAA;AAAA,EAEd,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,GAAA,EAAK,CAAC,QAAQ,CAAA;AAAA;AAAA,EAEd,EAAA,EAAI,CAAC,OAAO,CAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,CAAC,OAAO;AACd,CAAA;AACA,IAAI,iBAAA,EAAmB,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA;AAC5C,IAAI,gBAAA,EAAkB,MAAA,CAAO,MAAA,CAAO,SAAS,CAAA,CAAE,IAAA,CAAK,CAAA;AACpD,IAAI,0BAAA,EAA4B,eAAA,CAAgB,GAAA,CAAI,CAAC,KAAA,EAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAC,CAAA;AACtF,IAAI,8BAAA,EAAgC,eAAA,CAAgB,GAAA,CAAI,CAAC,KAAA,EAAA,GAAU;AACjE,EAAA,MAAM,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA;AAC9B,EAAA,MAAM,OAAA,EAAS,CAAC,MAAA,CAAO,CAAC,CAAA,EAAG,IAAA,EAAM,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AACnE,EAAA,OAAO,MAAA;AACT,CAAC,CAAA;AACD,IAAI,YAAA,EAAc;AAAA,EAChB,GAAG,gBAAA;AAAA,EACH,GAAG,eAAA;AAAA,EACH,GAAG,yBAAA;AAAA,EACH,GAAG;AACL,CAAA;AACA,IAAI,iBAAA,EAAmB,aAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,CAAO,CAAC,KAAA,EAAA,GAAU,WAAA,CAAY,QAAA,CAAS,KAAK,CAAA,EAAG;AAAA,EAC/E,OAAA,EAAS;AACX,CAAC,CAAA;AACD,IAAI,kBAAA,EAAoB,CAAC,KAAA,EAAA,GAAU;AACjC,EAAA,MAAM,uBAAA,EAAyB,MAAA,CAAO,MAAA,CAAO,SAAS,CAAA,CAAE,IAAA,CAAK,CAAA,CAAE,QAAA,CAAS,KAAK,CAAA;AAC7E,EAAA,GAAA,CAAI,sBAAA,EAAwB;AAC1B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,wBAAA,EAA0B,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE,QAAA,CAAS,KAAK,CAAA;AACrE,EAAA,GAAA,CAAI,uBAAA,EAAyB;AAC3B,IAAA,MAAM,yBAAA,EAA2B,SAAA,CAAU,KAAK,CAAA;AAChD,IAAA,MAAM,mBAAA,EAAqB,wBAAA,CAAyB,CAAC,CAAA;AACrD,IAAA,OAAO,kBAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,KAAK,CAAA,CAAA;AAC/C;AAC4C;AAChB,EAAA;AACS,IAAA;AACF,EAAA;AACE,IAAA;AAC5B,EAAA;AACG,IAAA;AACV,EAAA;AACF;AACyC;AACb,EAAA;AACjB,IAAA;AACwB,EAAA;AACxB,IAAA;AACF,EAAA;AACE,IAAA;AACT,EAAA;AACF;AACsC;AACpB,EAAA;AACP,IAAA;AACT,EAAA;AACyB,EAAA;AACF,EAAA;AACd,IAAA;AACT,EAAA;AACwC,EAAA;AAC1C;AAIkB;AAChB,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACF;AAC0C;AAIb;AACnB,EAAA;AAC0B,EAAA;AACnC;AAC4C;AACH;AACM,EAAA;AAClB,EAAA;AACQ,EAAA;AACN,EAAA;AAC5B,IAAA;AACA,IAAA;AACsB,IAAA;AACgB,MAAA;AACZ,MAAA;AACJ,QAAA;AACpB,MAAA;AACsC,MAAA;AACZ,QAAA;AACL,QAAA;AACJ,QAAA;AACI,QAAA;AACqB,UAAA;AACV,YAAA;AACV,cAAA;AAChB,YAAA;AACO,YAAA;AACO,UAAA;AAClB,QAAA;AAC8B,QAAA;AAC/B,MAAA;AAC4B,MAAA;AACX,QAAA;AACG;AACrB,MAAA;AACoC,MAAA;AACF,MAAA;AAC3B,MAAA;AACT,IAAA;AACD,EAAA;AACH;AAC+B;AACC,EAAA;AAC/B;AAC+C;AACtC,EAAA;AACmB,EAAA;AACL,EAAA;AACiB,IAAA;AACvC,EAAA;AACD;AAC+C;AACL,EAAA;AAC/B,IAAA;AACwB,IAAA;AACjC,EAAA;AAC0B,EAAA;AAChB,IAAA;AACD,IAAA;AACE,MAAA;AACM,MAAA;AAChB,IAAA;AACU,IAAA;AACZ,EAAA;AACuB,EAAA;AACZ,IAAA;AACD,IAAA;AACE,MAAA;AACM,MAAA;AAChB,IAAA;AACU,IAAA;AACZ,EAAA;AACD;AAC0B;AACgB,EAAA;AAC3B,IAAA;AACV,MAAA;AACU,MAAA;AACgC,QAAA;AACA,QAAA;AACzC,MAAA;AACS,IAAA;AACb,EAAA;AAC0C,EAAA;AACtC,IAAA;AACM,IAAA;AACC,IAAA;AACZ,EAAA;AACuC,EAAA;AACd,IAAA;AAClB,MAAA;AACM,MAAA;AACC,MAAA;AACZ,IAAA;AACuB,IAAA;AACkB,MAAA;AACC,QAAA;AACC,UAAA;AACzB,YAAA;AACZ,UAAA;AACF,QAAA;AACoC,wBAAA;AACtC,MAAA;AACF,IAAA;AACO,IAAA;AACT,EAAA;AACD;AAC0B;AACgB,EAAA;AACX,IAAA;AACa,MAAA;AACxC,IAAA;AACF,EAAA;AAC0C,EAAA;AACtC,IAAA;AACM,IAAA;AACX,EAAA;AACgC,EAAA;AAC3B,IAAA;AACM,IAAA;AACX,EAAA;AACD;AACgC;AACf,EAAA;AACyB,EAAA;AAC1C;AAC0B;AACgB,EAAA;AAC3B,IAAA;AACV,MAAA;AACU,MAAA;AAC8B,QAAA;AACA,QAAA;AACvC,MAAA;AACS,IAAA;AACb,EAAA;AAC0C,EAAA;AACtC,IAAA;AACM,IAAA;AACX,EAAA;AACgC,EAAA;AAC3B,IAAA;AACM,IAAA;AACX,EAAA;AACD;AAC8B;AACK;AAC9B,EAAA;AACsC,IAAA;AACjC,IAAA;AACO,EAAA;AAC6B,IAAA;AAC7C,EAAA;AACF;AAC6C;ADHG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/lingo.dev/lingo.dev/packages/cli/build/chunk-U3YIG2HS.cjs","sourcesContent":[null,"// src/locales.ts\nimport Z from \"zod\";\nvar localeMap = {\n // Urdu (Pakistan)\n ur: [\"ur-PK\"],\n // Vietnamese (Vietnam)\n vi: [\"vi-VN\"],\n // Turkish (Turkey)\n tr: [\"tr-TR\"],\n // Tamil (India)\n ta: [\"ta-IN\"],\n // Serbian\n sr: [\n \"sr-RS\",\n // Serbian (Latin)\n \"sr-Latn-RS\",\n // Serbian (Latin)\n \"sr-Cyrl-RS\"\n // Serbian (Cyrillic)\n ],\n // Hungarian (Hungary)\n hu: [\"hu-HU\"],\n // Hebrew (Israel)\n he: [\"he-IL\"],\n // Estonian (Estonia)\n et: [\"et-EE\"],\n // Greek (Greece)\n el: [\"el-GR\"],\n // Danish (Denmark)\n da: [\"da-DK\"],\n // Azerbaijani (Azerbaijan)\n az: [\"az-AZ\"],\n // Thai (Thailand)\n th: [\"th-TH\"],\n // Swedish (Sweden)\n sv: [\"sv-SE\"],\n // English\n en: [\n \"en-US\",\n // United States\n \"en-GB\",\n // United Kingdom\n \"en-AU\",\n // Australia\n \"en-CA\"\n // Canada\n ],\n // Spanish\n es: [\n \"es-ES\",\n // Spain\n \"es-419\",\n // Latin America\n \"es-MX\",\n // Mexico\n \"es-AR\"\n // Argentina\n ],\n // French\n fr: [\n \"fr-FR\",\n // France\n \"fr-CA\",\n // Canada\n \"fr-BE\"\n // Belgium\n ],\n // Catalan (Spain)\n ca: [\"ca-ES\"],\n // Japanese (Japan)\n ja: [\"ja-JP\"],\n // German\n de: [\n \"de-DE\",\n // Germany\n \"de-AT\",\n // Austria\n \"de-CH\"\n // Switzerland\n ],\n // Portuguese\n pt: [\n \"pt-PT\",\n // Portugal\n \"pt-BR\"\n // Brazil\n ],\n // Italian\n it: [\n \"it-IT\",\n // Italy\n \"it-CH\"\n // Switzerland\n ],\n // Russian\n ru: [\n \"ru-RU\",\n // Russia\n \"ru-BY\"\n // Belarus\n ],\n // Ukrainian (Ukraine)\n uk: [\"uk-UA\"],\n // Belarusian (Belarus)\n be: [\"be-BY\"],\n // Hindi (India)\n hi: [\"hi-IN\"],\n // Chinese\n zh: [\n \"zh-CN\",\n // Simplified Chinese (China)\n \"zh-TW\",\n // Traditional Chinese (Taiwan)\n \"zh-HK\",\n // Traditional Chinese (Hong Kong)\n \"zh-Hans\",\n // Simplified Chinese\n \"zh-Hant\",\n // Traditional Chinese\n \"zh-Hant-HK\",\n // Traditional Chinese (Hong Kong)\n \"zh-Hant-TW\",\n // Traditional Chinese (Taiwan)\n \"zh-Hant-CN\",\n // Traditional Chinese (China)\n \"zh-Hans-HK\",\n // Simplified Chinese (Hong Kong)\n \"zh-Hans-TW\",\n // Simplified Chinese (China)\n \"zh-Hans-CN\"\n // Simplified Chinese (China)\n ],\n // Korean (South Korea)\n ko: [\"ko-KR\"],\n // Arabic\n ar: [\n \"ar-EG\",\n // Egypt\n \"ar-SA\",\n // Saudi Arabia\n \"ar-AE\",\n // United Arab Emirates\n \"ar-MA\"\n // Morocco\n ],\n // Bulgarian (Bulgaria)\n bg: [\"bg-BG\"],\n // Czech (Czech Republic)\n cs: [\"cs-CZ\"],\n // Dutch\n nl: [\n \"nl-NL\",\n // Netherlands\n \"nl-BE\"\n // Belgium\n ],\n // Polish (Poland)\n pl: [\"pl-PL\"],\n // Indonesian (Indonesia)\n id: [\"id-ID\"],\n // Malay (Malaysia)\n ms: [\"ms-MY\"],\n // Finnish (Finland)\n fi: [\"fi-FI\"],\n // Basque (Spain)\n eu: [\"eu-ES\"],\n // Croatian (Croatia)\n hr: [\"hr-HR\"],\n // Hebrew (Israel) - alternative code\n iw: [\"iw-IL\"],\n // Khmer (Cambodia)\n km: [\"km-KH\"],\n // Latvian (Latvia)\n lv: [\"lv-LV\"],\n // Lithuanian (Lithuania)\n lt: [\"lt-LT\"],\n // Norwegian (Norway)\n no: [\"no-NO\"],\n // Romanian (Romania)\n ro: [\"ro-RO\"],\n // Slovak (Slovakia)\n sk: [\"sk-SK\"],\n // Swahili\n sw: [\n \"sw-TZ\",\n // Tanzania\n \"sw-KE\"\n // Kenya\n ],\n // Persian (Iran)\n fa: [\"fa-IR\"],\n // Filipino (Philippines)\n fil: [\"fil-PH\"],\n // Punjabi\n pa: [\n \"pa-IN\",\n // India\n \"pa-PK\"\n // Pakistan\n ],\n // Bengali\n bn: [\n \"bn-BD\",\n // Bangladesh\n \"bn-IN\"\n // India\n ],\n // Irish (Ireland)\n ga: [\"ga-IE\"],\n // Maltese (Malta)\n mt: [\"mt-MT\"],\n // Slovenian (Slovenia)\n sl: [\"sl-SI\"],\n // Albanian (Albania)\n sq: [\"sq-AL\"],\n // Bavarian (Germany)\n bar: [\"bar-DE\"],\n // Neapolitan (Italy)\n nap: [\"nap-IT\"],\n // Afrikaans (South Africa)\n af: [\"af-ZA\"],\n // Somali (Somalia)\n so: [\"so-SO\"],\n // Tigrinya (Ethiopia)\n ti: [\"ti-ET\"],\n // Standard Moroccan Tamazight (Morocco)\n zgh: [\"zgh-MA\"],\n // Tagalog (Philippines)\n tl: [\"tl-PH\"],\n // Telugu (India)\n te: [\"te-IN\"]\n};\nvar localeCodesShort = Object.keys(localeMap);\nvar localeCodesFull = Object.values(localeMap).flat();\nvar localeCodesFullUnderscore = localeCodesFull.map((value) => value.replace(\"-\", \"_\"));\nvar localeCodesFullExplicitRegion = localeCodesFull.map((value) => {\n const chunks = value.split(\"-\");\n const result = [chunks[0], \"-r\", chunks.slice(1).join(\"-\")].join(\"\");\n return result;\n});\nvar localeCodes = [\n ...localeCodesShort,\n ...localeCodesFull,\n ...localeCodesFullUnderscore,\n ...localeCodesFullExplicitRegion\n];\nvar localeCodeSchema = Z.string().refine((value) => localeCodes.includes(value), {\n message: \"Invalid locale code\"\n});\nvar resolveLocaleCode = (value) => {\n const existingFullLocaleCode = Object.values(localeMap).flat().includes(value);\n if (existingFullLocaleCode) {\n return value;\n }\n const existingShortLocaleCode = Object.keys(localeMap).includes(value);\n if (existingShortLocaleCode) {\n const correspondingFullLocales = localeMap[value];\n const fallbackFullLocale = correspondingFullLocales[0];\n return fallbackFullLocale;\n }\n throw new Error(`Invalid locale code: ${value}`);\n};\nvar getAlternativeLocaleCodes = (locale) => {\n if (locale.includes(\"-\")) {\n return [locale.replace(/-/g, \"_\")];\n } else if (locale.includes(\"_\")) {\n return [locale.replace(/_/g, \"-\")];\n } else {\n return [];\n }\n};\nvar getLocaleCodeDelimiter = (locale) => {\n if (locale.includes(\"_\")) {\n return \"_\";\n } else if (locale.includes(\"-\")) {\n return \"-\";\n } else {\n return null;\n }\n};\nvar resolveOverridenLocale = (locale, delimiter) => {\n if (!delimiter) {\n return locale;\n }\n const currentDelimiter = getLocaleCodeDelimiter(locale);\n if (!currentDelimiter) {\n return locale;\n }\n return locale.replace(currentDelimiter, delimiter);\n};\n\n// src/formats.ts\nimport Z2 from \"zod\";\nvar bucketTypes = [\n \"android\",\n \"csv\",\n \"flutter\",\n \"html\",\n \"json\",\n \"markdown\",\n \"xcode-strings\",\n \"xcode-stringsdict\",\n \"xcode-xcstrings\",\n \"yaml\",\n \"yaml-root-key\",\n \"properties\",\n \"po\",\n \"xliff\",\n \"xml\",\n \"srt\",\n \"dato\",\n \"compiler\",\n \"vtt\"\n];\nvar bucketTypeSchema = Z2.enum(bucketTypes);\n\n// src/config.ts\nimport Z3 from \"zod\";\nvar localeSchema = Z3.object({\n source: localeCodeSchema,\n targets: Z3.array(localeCodeSchema)\n});\nvar createConfigDefinition = (definition) => definition;\nvar extendConfigDefinition = (definition, params) => {\n const schema = params.createSchema(definition.schema);\n const defaultValue = params.createDefaultValue(definition.defaultValue);\n const upgrader = (config) => params.createUpgrader(config, schema, defaultValue);\n return createConfigDefinition({\n schema,\n defaultValue,\n parse: (rawConfig) => {\n const safeResult = schema.safeParse(rawConfig);\n if (safeResult.success) {\n return safeResult.data;\n }\n const localeErrors = safeResult.error.errors.filter((issue) => issue.message.includes(\"Invalid locale code\")).map((issue) => {\n let unsupportedLocale = \"\";\n const path = issue.path;\n const config = rawConfig;\n if (config.locale) {\n unsupportedLocale = path.reduce((acc, key) => {\n if (acc && typeof acc === \"object\" && key in acc) {\n return acc[key];\n }\n return acc;\n }, config.locale);\n }\n return `Unsupported locale: ${unsupportedLocale}`;\n });\n if (localeErrors.length > 0) {\n throw new Error(`\n${localeErrors.join(\"\\n\")}`);\n }\n const baseConfig = definition.parse(rawConfig);\n const result = upgrader(baseConfig);\n return result;\n }\n });\n};\nvar configV0Schema = Z3.object({\n version: Z3.number().default(0)\n});\nvar configV0Definition = createConfigDefinition({\n schema: configV0Schema,\n defaultValue: { version: 0 },\n parse: (rawConfig) => {\n return configV0Schema.parse(rawConfig);\n }\n});\nvar configV1Definition = extendConfigDefinition(configV0Definition, {\n createSchema: (baseSchema) => baseSchema.extend({\n locale: localeSchema,\n buckets: Z3.record(Z3.string(), bucketTypeSchema).default({}).optional()\n }),\n createDefaultValue: () => ({\n version: 1,\n locale: {\n source: \"en\",\n targets: [\"es\"]\n },\n buckets: {}\n }),\n createUpgrader: () => ({\n version: 1,\n locale: {\n source: \"en\",\n targets: [\"es\"]\n },\n buckets: {}\n })\n});\nvar configV1_1Definition = extendConfigDefinition(configV1Definition, {\n createSchema: (baseSchema) => baseSchema.extend({\n buckets: Z3.record(\n bucketTypeSchema,\n Z3.object({\n include: Z3.array(Z3.string()).default([]),\n exclude: Z3.array(Z3.string()).default([]).optional()\n })\n ).default({})\n }),\n createDefaultValue: (baseDefaultValue) => ({\n ...baseDefaultValue,\n version: 1.1,\n buckets: {}\n }),\n createUpgrader: (oldConfig, schema) => {\n const upgradedConfig = {\n ...oldConfig,\n version: 1.1,\n buckets: {}\n };\n if (oldConfig.buckets) {\n for (const [bucketPath, bucketType] of Object.entries(oldConfig.buckets)) {\n if (!upgradedConfig.buckets[bucketType]) {\n upgradedConfig.buckets[bucketType] = {\n include: []\n };\n }\n upgradedConfig.buckets[bucketType]?.include.push(bucketPath);\n }\n }\n return upgradedConfig;\n }\n});\nvar configV1_2Definition = extendConfigDefinition(configV1_1Definition, {\n createSchema: (baseSchema) => baseSchema.extend({\n locale: localeSchema.extend({\n extraSource: localeCodeSchema.optional()\n })\n }),\n createDefaultValue: (baseDefaultValue) => ({\n ...baseDefaultValue,\n version: 1.2\n }),\n createUpgrader: (oldConfig) => ({\n ...oldConfig,\n version: 1.2\n })\n});\nvar bucketItemSchema = Z3.object({\n path: Z3.string(),\n delimiter: Z3.union([Z3.literal(\"-\"), Z3.literal(\"_\"), Z3.literal(null)]).optional()\n});\nvar configV1_3Definition = extendConfigDefinition(configV1_2Definition, {\n createSchema: (baseSchema) => baseSchema.extend({\n buckets: Z3.record(\n bucketTypeSchema,\n Z3.object({\n include: Z3.array(Z3.union([Z3.string(), bucketItemSchema])).default([]),\n exclude: Z3.array(Z3.union([Z3.string(), bucketItemSchema])).default([]).optional()\n })\n ).default({})\n }),\n createDefaultValue: (baseDefaultValue) => ({\n ...baseDefaultValue,\n version: 1.3\n }),\n createUpgrader: (oldConfig) => ({\n ...oldConfig,\n version: 1.3\n })\n});\nvar LATEST_CONFIG_DEFINITION = configV1_3Definition;\nfunction parseI18nConfig(rawConfig) {\n try {\n const result = LATEST_CONFIG_DEFINITION.parse(rawConfig);\n return result;\n } catch (error) {\n throw new Error(`Failed to parse config: ${error.message}`);\n }\n}\nvar defaultConfig = LATEST_CONFIG_DEFINITION.defaultValue;\nexport {\n bucketItemSchema,\n bucketTypeSchema,\n bucketTypes,\n configV0Definition,\n configV1Definition,\n configV1_1Definition,\n configV1_2Definition,\n configV1_3Definition,\n defaultConfig,\n getAlternativeLocaleCodes,\n getLocaleCodeDelimiter,\n localeCodeSchema,\n localeCodes,\n localeCodesFull,\n localeCodesFullExplicitRegion,\n localeCodesFullUnderscore,\n localeCodesShort,\n localeSchema,\n parseI18nConfig,\n resolveLocaleCode,\n resolveOverridenLocale\n};\n"]}
package/build/cli.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkHODTYTE5cjs = require('./chunk-HODTYTE5.cjs');
3
+ var _chunkMZS2TO4Gcjs = require('./chunk-MZS2TO4G.cjs');
4
4
 
5
5
 
6
6
 
@@ -10,7 +10,7 @@ var _chunkHODTYTE5cjs = require('./chunk-HODTYTE5.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunkBCCNAFJBcjs = require('./chunk-BCCNAFJB.cjs');
13
+ var _chunkU3YIG2HScjs = require('./chunk-U3YIG2HS.cjs');
14
14
 
15
15
  // src/cli/index.ts
16
16
  var _dotenv = require('dotenv'); var _dotenv2 = _interopRequireDefault(_dotenv);
@@ -258,7 +258,7 @@ function getConfig(resave = true) {
258
258
  }
259
259
  const fileContents = _fs2.default.readFileSync(configFilePath, "utf8");
260
260
  const rawConfig = JSON.parse(fileContents);
261
- const result = _chunkBCCNAFJBcjs.parseI18nConfig.call(void 0, rawConfig);
261
+ const result = _chunkU3YIG2HScjs.parseI18nConfig.call(void 0, rawConfig);
262
262
  const didConfigChange = !_lodash2.default.isEqual(rawConfig, result);
263
263
  if (resave && didConfigChange) {
264
264
  saveConfig(result);
@@ -297,7 +297,7 @@ Do you need support for ${value} ${option}? Type "help" and we will.`
297
297
  var init_default = new (0, _interactivecommander.InteractiveCommand)().command("init").description("Initialize Lingo.dev project").helpOption("-h, --help", "Show help").addOption(new (0, _interactivecommander.InteractiveOption)("-f --force", "Overwrite existing config").prompt(void 0).default(false)).addOption(
298
298
  new (0, _interactivecommander.InteractiveOption)("-s --source <locale>", "Source locale").argParser((value) => {
299
299
  try {
300
- _chunkBCCNAFJBcjs.resolveLocaleCode.call(void 0, value);
300
+ _chunkU3YIG2HScjs.resolveLocaleCode.call(void 0, value);
301
301
  } catch (e) {
302
302
  throwHelpError("locale", value);
303
303
  }
@@ -308,7 +308,7 @@ var init_default = new (0, _interactivecommander.InteractiveCommand)().command("
308
308
  const values = value.includes(",") ? value.split(",") : value.split(" ");
309
309
  values.forEach((value2) => {
310
310
  try {
311
- _chunkBCCNAFJBcjs.resolveLocaleCode.call(void 0, value2);
311
+ _chunkU3YIG2HScjs.resolveLocaleCode.call(void 0, value2);
312
312
  } catch (e) {
313
313
  throwHelpError("locale", value2);
314
314
  }
@@ -317,7 +317,7 @@ var init_default = new (0, _interactivecommander.InteractiveCommand)().command("
317
317
  }).default("es")
318
318
  ).addOption(
319
319
  new (0, _interactivecommander.InteractiveOption)("-b, --bucket <type>", "Type of bucket").argParser((value) => {
320
- if (!_chunkBCCNAFJBcjs.bucketTypes.includes(value)) {
320
+ if (!_chunkU3YIG2HScjs.bucketTypes.includes(value)) {
321
321
  throwHelpError("bucket format", value);
322
322
  }
323
323
  return value;
@@ -345,7 +345,7 @@ var init_default = new (0, _interactivecommander.InteractiveCommand)().command("
345
345
  spinner.fail("Lingo.dev project already initialized");
346
346
  return process.exit(1);
347
347
  }
348
- const newConfig = _lodash2.default.cloneDeep(_chunkBCCNAFJBcjs.defaultConfig);
348
+ const newConfig = _lodash2.default.cloneDeep(_chunkU3YIG2HScjs.defaultConfig);
349
349
  newConfig.locale.source = options.source;
350
350
  newConfig.locale.targets = options.targets;
351
351
  newConfig.buckets = {
@@ -406,7 +406,7 @@ var init_default = new (0, _interactivecommander.InteractiveCommand)().command("
406
406
 
407
407
  var config_default = new (0, _interactivecommander.Command)().command("config").description("Print out the current configuration").helpOption("-h, --help", "Show help").action(async (options) => {
408
408
  const fileConfig = loadReplexicaFileConfig();
409
- const config = _lodash2.default.merge({}, _chunkBCCNAFJBcjs.defaultConfig, fileConfig);
409
+ const config = _lodash2.default.merge({}, _chunkU3YIG2HScjs.defaultConfig, fileConfig);
410
410
  console.log(JSON.stringify(config, null, 2));
411
411
  });
412
412
  function loadReplexicaFileConfig() {
@@ -433,10 +433,10 @@ var locale_default = new (0, _interactivecommander.Command)().command("locale").
433
433
  docUrl: "invalidType"
434
434
  });
435
435
  case "sources":
436
- _chunkBCCNAFJBcjs.localeCodes.forEach((locale) => console.log(locale));
436
+ _chunkU3YIG2HScjs.localeCodes.forEach((locale) => console.log(locale));
437
437
  break;
438
438
  case "targets":
439
- _chunkBCCNAFJBcjs.localeCodes.forEach((locale) => console.log(locale));
439
+ _chunkU3YIG2HScjs.localeCodes.forEach((locale) => console.log(locale));
440
440
  break;
441
441
  }
442
442
  } catch (error) {
@@ -466,7 +466,7 @@ function getBuckets(i18nConfig) {
466
466
  }
467
467
  function extractPathPatterns(sourceLocale, include, exclude) {
468
468
  const includedPatterns = include.flatMap(
469
- (pattern) => expandPlaceholderedGlob(pattern.path, _chunkBCCNAFJBcjs.resolveOverridenLocale.call(void 0, sourceLocale, pattern.delimiter)).map(
469
+ (pattern) => expandPlaceholderedGlob(pattern.path, _chunkU3YIG2HScjs.resolveOverridenLocale.call(void 0, sourceLocale, pattern.delimiter)).map(
470
470
  (pathPattern) => ({
471
471
  pathPattern,
472
472
  delimiter: pattern.delimiter
@@ -474,7 +474,7 @@ function extractPathPatterns(sourceLocale, include, exclude) {
474
474
  )
475
475
  );
476
476
  const excludedPatterns = _optionalChain([exclude, 'optionalAccess', _31 => _31.flatMap, 'call', _32 => _32(
477
- (pattern) => expandPlaceholderedGlob(pattern.path, _chunkBCCNAFJBcjs.resolveOverridenLocale.call(void 0, sourceLocale, pattern.delimiter)).map(
477
+ (pattern) => expandPlaceholderedGlob(pattern.path, _chunkU3YIG2HScjs.resolveOverridenLocale.call(void 0, sourceLocale, pattern.delimiter)).map(
478
478
  (pathPattern) => ({
479
479
  pathPattern,
480
480
  delimiter: pattern.delimiter
@@ -544,10 +544,10 @@ var files_default = new (0, _interactivecommander.Command)().command("files").de
544
544
  const buckets = getBuckets(i18nConfig);
545
545
  for (const bucket of buckets) {
546
546
  for (const bucketConfig of bucket.config) {
547
- const sourceLocale = _chunkBCCNAFJBcjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
547
+ const sourceLocale = _chunkU3YIG2HScjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
548
548
  const sourcePath = bucketConfig.pathPattern.replace(/\[locale\]/g, sourceLocale);
549
549
  const targetPaths = i18nConfig.locale.targets.map((_targetLocale) => {
550
- const targetLocale = _chunkBCCNAFJBcjs.resolveOverridenLocale.call(void 0, _targetLocale, bucketConfig.delimiter);
550
+ const targetLocale = _chunkU3YIG2HScjs.resolveOverridenLocale.call(void 0, _targetLocale, bucketConfig.delimiter);
551
551
  return bucketConfig.pathPattern.replace(/\[locale\]/g, targetLocale);
552
552
  });
553
553
  const result = [];
@@ -1298,17 +1298,23 @@ async function loadPrettierConfig() {
1298
1298
  var _isurl = require('is-url'); var _isurl2 = _interopRequireDefault(_isurl);
1299
1299
  var _datefns = require('date-fns');
1300
1300
  function createUnlocalizableLoader() {
1301
+ const rules = {
1302
+ isEmpty: (v) => _lodash2.default.isEmpty(v),
1303
+ isNumber: (v) => !_lodash2.default.isNaN(_lodash2.default.toNumber(v)),
1304
+ isBoolean: (v) => _lodash2.default.isBoolean(v),
1305
+ isIsoDate: (v) => _lodash2.default.isString(v) && _isIsoDate(v),
1306
+ isSystemId: (v) => _lodash2.default.isString(v) && _isSystemId(v),
1307
+ isUrl: (v) => _lodash2.default.isString(v) && _isurl2.default.call(void 0, v)
1308
+ };
1301
1309
  return createLoader({
1302
1310
  async pull(locale, input) {
1303
1311
  const passthroughKeys = Object.entries(input).filter(([key, value]) => {
1304
- return [
1305
- (v) => _lodash2.default.isEmpty(v),
1306
- (v) => _lodash2.default.isString(v) && _isIsoDate(v),
1307
- (v) => !_lodash2.default.isNaN(_lodash2.default.toNumber(v)),
1308
- (v) => _lodash2.default.isBoolean(v),
1309
- (v) => _lodash2.default.isString(v) && _isSystemId(v),
1310
- (v) => _lodash2.default.isString(v) && _isurl2.default.call(void 0, v)
1311
- ].some((fn) => fn(value));
1312
+ for (const [ruleName, rule] of Object.entries(rules)) {
1313
+ if (rule(value)) {
1314
+ return true;
1315
+ }
1316
+ }
1317
+ return false;
1312
1318
  }).map(([key, _19]) => key);
1313
1319
  const result = _lodash2.default.omitBy(input, (_19, key) => passthroughKeys.includes(key));
1314
1320
  return result;
@@ -2257,7 +2263,14 @@ ${currentIndent}]`;
2257
2263
 
2258
2264
  ${currentIndent}}`;
2259
2265
  }
2260
- const items = keys.map((key) => {
2266
+ const sortedKeys = keys.sort((a, b) => {
2267
+ const aIsWhitespace = /^\s*$/.test(a);
2268
+ const bIsWhitespace = /^\s*$/.test(b);
2269
+ if (aIsWhitespace && !bIsWhitespace) return -1;
2270
+ if (!aIsWhitespace && bIsWhitespace) return 1;
2271
+ return a.localeCompare(b, void 0, { numeric: false });
2272
+ });
2273
+ const items = sortedKeys.map((key) => {
2261
2274
  const value = data[key];
2262
2275
  return `${nextIndent}${JSON.stringify(key)} : ${format(value, level + 1)}`;
2263
2276
  });
@@ -2265,7 +2278,8 @@ ${currentIndent}}`;
2265
2278
  ${items.join(",\n")}
2266
2279
  ${currentIndent}}`;
2267
2280
  }
2268
- return format(jsonData);
2281
+ const result = format(jsonData);
2282
+ return result;
2269
2283
  }
2270
2284
  function detectIndentation(jsonStr) {
2271
2285
  const match = jsonStr.match(/\n(\s+)/);
@@ -2281,7 +2295,6 @@ function createPlutilJsonTextLoader() {
2281
2295
  async push(locale, data, originalInput) {
2282
2296
  const jsonData = JSON.parse(data);
2283
2297
  const result = formatPlutilStyle(jsonData, originalInput || "");
2284
- console.log(result[result.length - 1]);
2285
2298
  return result;
2286
2299
  }
2287
2300
  });
@@ -2305,30 +2318,6 @@ function createNewLineLoader() {
2305
2318
  });
2306
2319
  }
2307
2320
 
2308
- // src/cli/loaders/json-sorting.ts
2309
- function createJsonSortingLoader() {
2310
- return createLoader({
2311
- async pull(locale, input) {
2312
- return input;
2313
- },
2314
- async push(locale, data, originalInput) {
2315
- return sortObjectDeep(data);
2316
- }
2317
- });
2318
- }
2319
- function sortObjectDeep(obj) {
2320
- if (Array.isArray(obj)) {
2321
- return obj.map(sortObjectDeep);
2322
- }
2323
- if (obj !== null && typeof obj === "object") {
2324
- return Object.keys(obj).sort().reduce((result, key) => {
2325
- result[key] = sortObjectDeep(obj[key]);
2326
- return result;
2327
- }, {});
2328
- }
2329
- return obj;
2330
- }
2331
-
2332
2321
  // src/cli/loaders/index.ts
2333
2322
  function createBucketLoader(bucketType, bucketPathPattern) {
2334
2323
  switch (bucketType) {
@@ -2421,7 +2410,6 @@ function createBucketLoader(bucketType, bucketPathPattern) {
2421
2410
  createNewLineLoader(),
2422
2411
  createPlutilJsonTextLoader(),
2423
2412
  createJsonLoader(),
2424
- createJsonSortingLoader(),
2425
2413
  createXcodeXcstringsLoader(),
2426
2414
  createFlatLoader(),
2427
2415
  createSyncLoader(),
@@ -2684,7 +2672,7 @@ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").desc
2684
2672
  ora.start("Creating i18n.lock...");
2685
2673
  for (const bucket of buckets) {
2686
2674
  for (const bucketConfig of bucket.config) {
2687
- const sourceLocale = _chunkBCCNAFJBcjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
2675
+ const sourceLocale = _chunkU3YIG2HScjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
2688
2676
  const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern);
2689
2677
  bucketLoader.setDefaultLocale(sourceLocale);
2690
2678
  await bucketLoader.init();
@@ -2705,7 +2693,7 @@ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").desc
2705
2693
  cacheOra.info(`Processing bucket: ${bucket.type}`);
2706
2694
  for (const bucketConfig of bucket.config) {
2707
2695
  const bucketOra = ora.info(`Processing path: ${bucketConfig.pathPattern}`);
2708
- const sourceLocale = _chunkBCCNAFJBcjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
2696
+ const sourceLocale = _chunkU3YIG2HScjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
2709
2697
  const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern);
2710
2698
  bucketLoader.setDefaultLocale(sourceLocale);
2711
2699
  await bucketLoader.init();
@@ -2740,7 +2728,7 @@ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").desc
2740
2728
  let requiresUpdate = false;
2741
2729
  for (const bucket of buckets) {
2742
2730
  for (const bucketConfig of bucket.config) {
2743
- const sourceLocale = _chunkBCCNAFJBcjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
2731
+ const sourceLocale = _chunkU3YIG2HScjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
2744
2732
  const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern);
2745
2733
  bucketLoader.setDefaultLocale(sourceLocale);
2746
2734
  await bucketLoader.init();
@@ -2766,13 +2754,13 @@ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").desc
2766
2754
  ora.info(`Processing bucket: ${bucket.type}`);
2767
2755
  for (const bucketConfig of bucket.config) {
2768
2756
  const bucketOra = _ora2.default.call(void 0, { indent: 2 }).info(`Processing path: ${bucketConfig.pathPattern}`);
2769
- const sourceLocale = _chunkBCCNAFJBcjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
2757
+ const sourceLocale = _chunkU3YIG2HScjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
2770
2758
  const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern);
2771
2759
  bucketLoader.setDefaultLocale(sourceLocale);
2772
2760
  await bucketLoader.init();
2773
2761
  let sourceData = await bucketLoader.pull(sourceLocale);
2774
2762
  for (const _targetLocale of targetLocales) {
2775
- const targetLocale = _chunkBCCNAFJBcjs.resolveOverridenLocale.call(void 0, _targetLocale, bucketConfig.delimiter);
2763
+ const targetLocale = _chunkU3YIG2HScjs.resolveOverridenLocale.call(void 0, _targetLocale, bucketConfig.delimiter);
2776
2764
  try {
2777
2765
  bucketOra.start(`[${sourceLocale} -> ${targetLocale}] (0%) Localization in progress...`);
2778
2766
  sourceData = await bucketLoader.pull(sourceLocale);
@@ -2897,7 +2885,7 @@ async function retryWithExponentialBackoff(operation, maxAttempts, baseDelay = 1
2897
2885
  throw new Error("Unreachable code");
2898
2886
  }
2899
2887
  function createLocalizationEngineConnection(params) {
2900
- const replexicaEngine = new (0, _chunkHODTYTE5cjs.ReplexicaEngine)({
2888
+ const replexicaEngine = new (0, _chunkMZS2TO4Gcjs.ReplexicaEngine)({
2901
2889
  apiKey: params.apiKey,
2902
2890
  apiUrl: params.apiUrl
2903
2891
  });
@@ -2920,8 +2908,8 @@ function createLocalizationEngineConnection(params) {
2920
2908
  function parseFlags(options) {
2921
2909
  return _zod2.default.object({
2922
2910
  apiKey: _zod2.default.string().optional(),
2923
- locale: _zod2.default.array(_chunkBCCNAFJBcjs.localeCodeSchema).optional(),
2924
- bucket: _zod2.default.array(_chunkBCCNAFJBcjs.bucketTypeSchema).optional(),
2911
+ locale: _zod2.default.array(_chunkU3YIG2HScjs.localeCodeSchema).optional(),
2912
+ bucket: _zod2.default.array(_chunkU3YIG2HScjs.bucketTypeSchema).optional(),
2925
2913
  force: _zod2.default.boolean().optional(),
2926
2914
  frozen: _zod2.default.boolean().optional(),
2927
2915
  verbose: _zod2.default.boolean().optional(),
@@ -3085,7 +3073,7 @@ var lockfile_default = new (0, _interactivecommander.Command)().command("lockfil
3085
3073
  const buckets = getBuckets(i18nConfig);
3086
3074
  for (const bucket of buckets) {
3087
3075
  for (const bucketConfig of bucket.config) {
3088
- const sourceLocale = _chunkBCCNAFJBcjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
3076
+ const sourceLocale = _chunkU3YIG2HScjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
3089
3077
  const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern);
3090
3078
  bucketLoader.setDefaultLocale(sourceLocale);
3091
3079
  const sourceData = await bucketLoader.pull(sourceLocale);
@@ -3120,14 +3108,14 @@ var cleanup_default = new (0, _interactivecommander.Command)().command("cleanup"
3120
3108
  console.log();
3121
3109
  ora.info(`Processing bucket: ${bucket.type}`);
3122
3110
  for (const bucketConfig of bucket.config) {
3123
- const sourceLocale = _chunkBCCNAFJBcjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
3111
+ const sourceLocale = _chunkU3YIG2HScjs.resolveOverridenLocale.call(void 0, i18nConfig.locale.source, bucketConfig.delimiter);
3124
3112
  const bucketOra = _ora2.default.call(void 0, { indent: 2 }).info(`Processing path: ${bucketConfig.pathPattern}`);
3125
3113
  const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern);
3126
3114
  bucketLoader.setDefaultLocale(sourceLocale);
3127
3115
  const sourceData = await bucketLoader.pull(sourceLocale);
3128
3116
  const sourceKeys = Object.keys(sourceData);
3129
3117
  for (const _targetLocale of targetLocales) {
3130
- const targetLocale = _chunkBCCNAFJBcjs.resolveOverridenLocale.call(void 0, _targetLocale, bucketConfig.delimiter);
3118
+ const targetLocale = _chunkU3YIG2HScjs.resolveOverridenLocale.call(void 0, _targetLocale, bucketConfig.delimiter);
3131
3119
  try {
3132
3120
  const targetData = await bucketLoader.pull(targetLocale);
3133
3121
  const targetKeys = Object.keys(targetData);
@@ -3192,7 +3180,7 @@ function displaySummary(results) {
3192
3180
  // package.json
3193
3181
  var package_default = {
3194
3182
  name: "lingo.dev",
3195
- version: "0.73.0",
3183
+ version: "0.74.0",
3196
3184
  description: "Lingo.dev CLI",
3197
3185
  private: false,
3198
3186
  type: "module",
@@ -3252,7 +3240,7 @@ var package_default = {
3252
3240
  "gradient-string": "^3.0.0",
3253
3241
  "gray-matter": "^4.0.3",
3254
3242
  ini: "^5.0.0",
3255
- inquirer: "^12.3.0",
3243
+ inquirer: "^12.3.2",
3256
3244
  "interactive-commander": "^0.5.194",
3257
3245
  "is-url": "^1.2.4",
3258
3246
  jsdom: "^25.0.1",
@@ -3261,7 +3249,7 @@ var package_default = {
3261
3249
  lodash: "^4.17.21",
3262
3250
  "markdown-it": "^14.1.0",
3263
3251
  "markdown-it-front-matter": "^0.2.4",
3264
- marked: "^15.0.4",
3252
+ marked: "^15.0.6",
3265
3253
  "node-webvtt": "^1.9.4",
3266
3254
  "object-hash": "^3.0.0",
3267
3255
  open: "^10.1.0",
@@ -3278,14 +3266,14 @@ var package_default = {
3278
3266
  xml2js: "^0.6.2",
3279
3267
  xmldom: "^0.6.0",
3280
3268
  xpath: "^0.0.34",
3281
- yaml: "^2.6.1",
3269
+ yaml: "^2.7.0",
3282
3270
  zod: "^3.24.1"
3283
3271
  },
3284
3272
  devDependencies: {
3285
3273
  "@lingo.dev/sdk": "workspace:*",
3286
3274
  "@lingo.dev/spec": "workspace:*",
3287
3275
  "@types/cors": "^2.8.17",
3288
- "@types/diff": "^6.0.0",
3276
+ "@types/diff": "^7.0.0",
3289
3277
  "@types/express": "^5.0.0",
3290
3278
  "@types/figlet": "^1.7.0",
3291
3279
  "@types/gettext-parser": "^4.0.4",