lingo.dev 0.107.2 → 0.107.4

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/build/cli.cjs CHANGED
@@ -22,17 +22,17 @@ function getSettings(explicitApiKey) {
22
22
  _envVarsInfo();
23
23
  return {
24
24
  auth: {
25
- apiKey: explicitApiKey || env.LINGODOTDEV_API_KEY || _optionalChain([systemFile, 'access', _35 => _35.auth, 'optionalAccess', _36 => _36.apiKey]) || defaults2.auth.apiKey,
26
- apiUrl: env.LINGODOTDEV_API_URL || _optionalChain([systemFile, 'access', _37 => _37.auth, 'optionalAccess', _38 => _38.apiUrl]) || defaults2.auth.apiUrl,
27
- webUrl: env.LINGODOTDEV_WEB_URL || _optionalChain([systemFile, 'access', _39 => _39.auth, 'optionalAccess', _40 => _40.webUrl]) || defaults2.auth.webUrl
25
+ apiKey: explicitApiKey || env.LINGODOTDEV_API_KEY || _optionalChain([systemFile, 'access', _36 => _36.auth, 'optionalAccess', _37 => _37.apiKey]) || defaults2.auth.apiKey,
26
+ apiUrl: env.LINGODOTDEV_API_URL || _optionalChain([systemFile, 'access', _38 => _38.auth, 'optionalAccess', _39 => _39.apiUrl]) || defaults2.auth.apiUrl,
27
+ webUrl: env.LINGODOTDEV_WEB_URL || _optionalChain([systemFile, 'access', _40 => _40.auth, 'optionalAccess', _41 => _41.webUrl]) || defaults2.auth.webUrl
28
28
  },
29
29
  llm: {
30
- openaiApiKey: env.OPENAI_API_KEY || _optionalChain([systemFile, 'access', _41 => _41.llm, 'optionalAccess', _42 => _42.openaiApiKey]),
31
- anthropicApiKey: env.ANTHROPIC_API_KEY || _optionalChain([systemFile, 'access', _43 => _43.llm, 'optionalAccess', _44 => _44.anthropicApiKey]),
32
- groqApiKey: env.GROQ_API_KEY || _optionalChain([systemFile, 'access', _45 => _45.llm, 'optionalAccess', _46 => _46.groqApiKey]),
33
- googleApiKey: env.GOOGLE_API_KEY || _optionalChain([systemFile, 'access', _47 => _47.llm, 'optionalAccess', _48 => _48.googleApiKey]),
34
- openrouterApiKey: env.OPENROUTER_API_KEY || _optionalChain([systemFile, 'access', _49 => _49.llm, 'optionalAccess', _50 => _50.openrouterApiKey]),
35
- mistralApiKey: env.MISTRAL_API_KEY || _optionalChain([systemFile, 'access', _51 => _51.llm, 'optionalAccess', _52 => _52.mistralApiKey])
30
+ openaiApiKey: env.OPENAI_API_KEY || _optionalChain([systemFile, 'access', _42 => _42.llm, 'optionalAccess', _43 => _43.openaiApiKey]),
31
+ anthropicApiKey: env.ANTHROPIC_API_KEY || _optionalChain([systemFile, 'access', _44 => _44.llm, 'optionalAccess', _45 => _45.anthropicApiKey]),
32
+ groqApiKey: env.GROQ_API_KEY || _optionalChain([systemFile, 'access', _46 => _46.llm, 'optionalAccess', _47 => _47.groqApiKey]),
33
+ googleApiKey: env.GOOGLE_API_KEY || _optionalChain([systemFile, 'access', _48 => _48.llm, 'optionalAccess', _49 => _49.googleApiKey]),
34
+ openrouterApiKey: env.OPENROUTER_API_KEY || _optionalChain([systemFile, 'access', _50 => _50.llm, 'optionalAccess', _51 => _51.openrouterApiKey]),
35
+ mistralApiKey: env.MISTRAL_API_KEY || _optionalChain([systemFile, 'access', _52 => _52.llm, 'optionalAccess', _53 => _53.mistralApiKey])
36
36
  }
37
37
  };
38
38
  }
@@ -141,43 +141,43 @@ Please use LINGODOTDEV_API_KEY instead.
141
141
  function _envVarsInfo() {
142
142
  const env = _loadEnv();
143
143
  const systemFile = _loadSystemFile();
144
- if (env.LINGODOTDEV_API_KEY && _optionalChain([systemFile, 'access', _53 => _53.auth, 'optionalAccess', _54 => _54.apiKey])) {
144
+ if (env.LINGODOTDEV_API_KEY && _optionalChain([systemFile, 'access', _54 => _54.auth, 'optionalAccess', _55 => _55.apiKey])) {
145
145
  console.info(
146
146
  "\x1B[36m%s\x1B[0m",
147
147
  `\u2139\uFE0F Using LINGODOTDEV_API_KEY env var instead of credentials from user config`
148
148
  );
149
149
  }
150
- if (env.OPENAI_API_KEY && _optionalChain([systemFile, 'access', _55 => _55.llm, 'optionalAccess', _56 => _56.openaiApiKey])) {
150
+ if (env.OPENAI_API_KEY && _optionalChain([systemFile, 'access', _56 => _56.llm, 'optionalAccess', _57 => _57.openaiApiKey])) {
151
151
  console.info(
152
152
  "\x1B[36m%s\x1B[0m",
153
153
  `\u2139\uFE0F Using OPENAI_API_KEY env var instead of key from user config.`
154
154
  );
155
155
  }
156
- if (env.ANTHROPIC_API_KEY && _optionalChain([systemFile, 'access', _57 => _57.llm, 'optionalAccess', _58 => _58.anthropicApiKey])) {
156
+ if (env.ANTHROPIC_API_KEY && _optionalChain([systemFile, 'access', _58 => _58.llm, 'optionalAccess', _59 => _59.anthropicApiKey])) {
157
157
  console.info(
158
158
  "\x1B[36m%s\x1B[0m",
159
159
  `\u2139\uFE0F Using ANTHROPIC_API_KEY env var instead of key from user config`
160
160
  );
161
161
  }
162
- if (env.GROQ_API_KEY && _optionalChain([systemFile, 'access', _59 => _59.llm, 'optionalAccess', _60 => _60.groqApiKey])) {
162
+ if (env.GROQ_API_KEY && _optionalChain([systemFile, 'access', _60 => _60.llm, 'optionalAccess', _61 => _61.groqApiKey])) {
163
163
  console.info(
164
164
  "\x1B[36m%s\x1B[0m",
165
165
  `\u2139\uFE0F Using GROQ_API_KEY env var instead of key from user config`
166
166
  );
167
167
  }
168
- if (env.GOOGLE_API_KEY && _optionalChain([systemFile, 'access', _61 => _61.llm, 'optionalAccess', _62 => _62.googleApiKey])) {
168
+ if (env.GOOGLE_API_KEY && _optionalChain([systemFile, 'access', _62 => _62.llm, 'optionalAccess', _63 => _63.googleApiKey])) {
169
169
  console.info(
170
170
  "\x1B[36m%s\x1B[0m",
171
171
  `\u2139\uFE0F Using GOOGLE_API_KEY env var instead of key from user config`
172
172
  );
173
173
  }
174
- if (env.OPENROUTER_API_KEY && _optionalChain([systemFile, 'access', _63 => _63.llm, 'optionalAccess', _64 => _64.openrouterApiKey])) {
174
+ if (env.OPENROUTER_API_KEY && _optionalChain([systemFile, 'access', _64 => _64.llm, 'optionalAccess', _65 => _65.openrouterApiKey])) {
175
175
  console.info(
176
176
  "\x1B[36m%s\x1B[0m",
177
177
  `\u2139\uFE0F Using OPENROUTER_API_KEY env var instead of key from user config`
178
178
  );
179
179
  }
180
- if (env.MISTRAL_API_KEY && _optionalChain([systemFile, 'access', _65 => _65.llm, 'optionalAccess', _66 => _66.mistralApiKey])) {
180
+ if (env.MISTRAL_API_KEY && _optionalChain([systemFile, 'access', _66 => _66.llm, 'optionalAccess', _67 => _67.mistralApiKey])) {
181
181
  console.info(
182
182
  "\x1B[36m%s\x1B[0m",
183
183
  `\u2139\uFE0F Using MISTRAL_API_KEY env var instead of key from user config`
@@ -261,7 +261,7 @@ function createAuthenticator(params) {
261
261
  });
262
262
  if (res.ok) {
263
263
  const payload = await res.json();
264
- if (!_optionalChain([payload, 'optionalAccess', _67 => _67.email])) {
264
+ if (!_optionalChain([payload, 'optionalAccess', _68 => _68.email])) {
265
265
  return null;
266
266
  }
267
267
  return {
@@ -510,7 +510,7 @@ async function waitForApiKey(cb) {
510
510
  // src/cli/cmd/logout.ts
511
511
 
512
512
 
513
- var logout_default = new (0, _interactivecommander.Command)().command("logout").description("Sign out from Lingo.dev API").helpOption("-h, --help", "Show help").action(async () => {
513
+ var logout_default = new (0, _interactivecommander.Command)().command("logout").description("Log out from Lingo.dev API").helpOption("-h, --help", "Show help").action(async () => {
514
514
  try {
515
515
  await renderClear();
516
516
  await renderSpacer();
@@ -1076,7 +1076,7 @@ var init_default = new (0, _interactivecommander.InteractiveCommand)().command("
1076
1076
  });
1077
1077
  const auth2 = await newAuthenticator.whoami();
1078
1078
  if (auth2) {
1079
- _ora2.default.call(void 0, ).succeed(`Authenticated as ${_optionalChain([auth2, 'optionalAccess', _68 => _68.email])}`);
1079
+ _ora2.default.call(void 0, ).succeed(`Authenticated as ${_optionalChain([auth2, 'optionalAccess', _69 => _69.email])}`);
1080
1080
  } else {
1081
1081
  _ora2.default.call(void 0, ).fail("Authentication failed.");
1082
1082
  }
@@ -1163,7 +1163,7 @@ function getBuckets(i18nConfig) {
1163
1163
  const includeItems = bucketEntry.include.map(
1164
1164
  (item) => resolveBucketItem(item)
1165
1165
  );
1166
- const excludeItems = _optionalChain([bucketEntry, 'access', _69 => _69.exclude, 'optionalAccess', _70 => _70.map, 'call', _71 => _71(
1166
+ const excludeItems = _optionalChain([bucketEntry, 'access', _70 => _70.exclude, 'optionalAccess', _71 => _71.map, 'call', _72 => _72(
1167
1167
  (item) => resolveBucketItem(item)
1168
1168
  )]);
1169
1169
  const config = {
@@ -1201,7 +1201,7 @@ function extractPathPatterns(sourceLocale, include, exclude) {
1201
1201
  delimiter: pattern.delimiter
1202
1202
  }))
1203
1203
  );
1204
- const excludedPatterns = _optionalChain([exclude, 'optionalAccess', _72 => _72.flatMap, 'call', _73 => _73(
1204
+ const excludedPatterns = _optionalChain([exclude, 'optionalAccess', _73 => _73.flatMap, 'call', _74 => _74(
1205
1205
  (pattern) => expandPlaceholderedGlob(
1206
1206
  pattern.path,
1207
1207
  __spec.resolveOverriddenLocale.call(void 0, sourceLocale, pattern.delimiter)
@@ -1491,12 +1491,12 @@ function composeLoaders(...loaders) {
1491
1491
  return {
1492
1492
  init: async () => {
1493
1493
  for (const loader of loaders) {
1494
- await _optionalChain([loader, 'access', _74 => _74.init, 'optionalCall', _75 => _75()]);
1494
+ await _optionalChain([loader, 'access', _75 => _75.init, 'optionalCall', _76 => _76()]);
1495
1495
  }
1496
1496
  },
1497
1497
  setDefaultLocale(locale) {
1498
1498
  for (const loader of loaders) {
1499
- _optionalChain([loader, 'access', _76 => _76.setDefaultLocale, 'optionalCall', _77 => _77(locale)]);
1499
+ _optionalChain([loader, 'access', _77 => _77.setDefaultLocale, 'optionalCall', _78 => _78(locale)]);
1500
1500
  }
1501
1501
  return this;
1502
1502
  },
@@ -1529,7 +1529,7 @@ function createLoader(lDefinition) {
1529
1529
  if (state.initCtx) {
1530
1530
  return state.initCtx;
1531
1531
  }
1532
- state.initCtx = await _optionalChain([lDefinition, 'access', _78 => _78.init, 'optionalCall', _79 => _79()]);
1532
+ state.initCtx = await _optionalChain([lDefinition, 'access', _79 => _79.init, 'optionalCall', _80 => _80()]);
1533
1533
  return state.initCtx;
1534
1534
  },
1535
1535
  setDefaultLocale(locale) {
@@ -1634,7 +1634,7 @@ function createNormalizeLoader() {
1634
1634
  return normalized;
1635
1635
  },
1636
1636
  push: async (locale, data, originalInput) => {
1637
- const keysMap = _nullishCoalesce(_optionalChain([originalInput, 'optionalAccess', _80 => _80.keysMap]), () => ( {}));
1637
+ const keysMap = _nullishCoalesce(_optionalChain([originalInput, 'optionalAccess', _81 => _81.keysMap]), () => ( {}));
1638
1638
  const input2 = mapDenormalizedKeys(data, keysMap);
1639
1639
  const denormalized = _flat.unflatten.call(void 0, input2, {
1640
1640
  delimiter: "/",
@@ -1708,7 +1708,7 @@ function createTextFileLoader(pathPattern) {
1708
1708
  const trimmedResult = result.trim();
1709
1709
  return trimmedResult;
1710
1710
  },
1711
- async push(locale, data, _34, originalLocale) {
1711
+ async push(locale, data, _35, originalLocale) {
1712
1712
  const draftPath = pathPattern.replaceAll("[locale]", locale);
1713
1713
  const finalPath = path13.default.resolve(draftPath);
1714
1714
  const dirPath = path13.default.dirname(finalPath);
@@ -1741,8 +1741,8 @@ async function getTrailingNewLine(pathPattern, locale, originalLocale) {
1741
1741
  if (!templateData) {
1742
1742
  templateData = await readFileForLocale(pathPattern, originalLocale);
1743
1743
  }
1744
- if (_optionalChain([templateData, 'optionalAccess', _81 => _81.match, 'call', _82 => _82(/[\r\n]$/)])) {
1745
- const ending = _optionalChain([templateData, 'optionalAccess', _83 => _83.includes, 'call', _84 => _84("\r\n")]) ? "\r\n" : _optionalChain([templateData, 'optionalAccess', _85 => _85.includes, 'call', _86 => _86("\r")]) ? "\r" : "\n";
1744
+ if (_optionalChain([templateData, 'optionalAccess', _82 => _82.match, 'call', _83 => _83(/[\r\n]$/)])) {
1745
+ const ending = _optionalChain([templateData, 'optionalAccess', _84 => _84.includes, 'call', _85 => _85("\r\n")]) ? "\r\n" : _optionalChain([templateData, 'optionalAccess', _86 => _86.includes, 'call', _87 => _87("\r")]) ? "\r" : "\n";
1746
1746
  return ending;
1747
1747
  }
1748
1748
  return "";
@@ -2013,7 +2013,7 @@ var _sync3 = require('csv-stringify/sync');
2013
2013
 
2014
2014
  function detectKeyColumnName(csvString) {
2015
2015
  const row = _sync.parse.call(void 0, csvString)[0];
2016
- const firstColumn = _optionalChain([row, 'optionalAccess', _87 => _87[0], 'optionalAccess', _88 => _88.trim, 'call', _89 => _89()]);
2016
+ const firstColumn = _optionalChain([row, 'optionalAccess', _88 => _88[0], 'optionalAccess', _89 => _89.trim, 'call', _90 => _90()]);
2017
2017
  return firstColumn || "KEY";
2018
2018
  }
2019
2019
  function createCsvLoader() {
@@ -2115,7 +2115,7 @@ function createHtmlLoader() {
2115
2115
  break;
2116
2116
  }
2117
2117
  const siblings = Array.from(parent.childNodes).filter(
2118
- (n) => n.nodeType === 1 || n.nodeType === 3 && _optionalChain([n, 'access', _90 => _90.textContent, 'optionalAccess', _91 => _91.trim, 'call', _92 => _92()])
2118
+ (n) => n.nodeType === 1 || n.nodeType === 3 && _optionalChain([n, 'access', _91 => _91.textContent, 'optionalAccess', _92 => _92.trim, 'call', _93 => _93()])
2119
2119
  );
2120
2120
  const index = siblings.indexOf(current);
2121
2121
  if (index !== -1) {
@@ -2151,15 +2151,15 @@ function createHtmlLoader() {
2151
2151
  }
2152
2152
  });
2153
2153
  Array.from(element.childNodes).filter(
2154
- (n) => n.nodeType === 1 || n.nodeType === 3 && _optionalChain([n, 'access', _93 => _93.textContent, 'optionalAccess', _94 => _94.trim, 'call', _95 => _95()])
2154
+ (n) => n.nodeType === 1 || n.nodeType === 3 && _optionalChain([n, 'access', _94 => _94.textContent, 'optionalAccess', _95 => _95.trim, 'call', _96 => _96()])
2155
2155
  ).forEach(processNode);
2156
2156
  }
2157
2157
  };
2158
2158
  Array.from(document.head.childNodes).filter(
2159
- (n) => n.nodeType === 1 || n.nodeType === 3 && _optionalChain([n, 'access', _96 => _96.textContent, 'optionalAccess', _97 => _97.trim, 'call', _98 => _98()])
2159
+ (n) => n.nodeType === 1 || n.nodeType === 3 && _optionalChain([n, 'access', _97 => _97.textContent, 'optionalAccess', _98 => _98.trim, 'call', _99 => _99()])
2160
2160
  ).forEach(processNode);
2161
2161
  Array.from(document.body.childNodes).filter(
2162
- (n) => n.nodeType === 1 || n.nodeType === 3 && _optionalChain([n, 'access', _99 => _99.textContent, 'optionalAccess', _100 => _100.trim, 'call', _101 => _101()])
2162
+ (n) => n.nodeType === 1 || n.nodeType === 3 && _optionalChain([n, 'access', _100 => _100.textContent, 'optionalAccess', _101 => _101.trim, 'call', _102 => _102()])
2163
2163
  ).forEach(processNode);
2164
2164
  return result;
2165
2165
  },
@@ -2184,7 +2184,7 @@ function createHtmlLoader() {
2184
2184
  for (let i = 0; i < indices.length; i++) {
2185
2185
  const index = parseInt(indices[i]);
2186
2186
  const siblings = Array.from(parent.childNodes).filter(
2187
- (n) => n.nodeType === 1 || n.nodeType === 3 && _optionalChain([n, 'access', _102 => _102.textContent, 'optionalAccess', _103 => _103.trim, 'call', _104 => _104()])
2187
+ (n) => n.nodeType === 1 || n.nodeType === 3 && _optionalChain([n, 'access', _103 => _103.textContent, 'optionalAccess', _104 => _104.trim, 'call', _105 => _105()])
2188
2188
  );
2189
2189
  if (index >= siblings.length) {
2190
2190
  if (i === indices.length - 1) {
@@ -2235,7 +2235,7 @@ function createMarkdownLoader() {
2235
2235
  yaml: yamlEngine
2236
2236
  }
2237
2237
  });
2238
- const sections = content.split(SECTION_REGEX).map((section) => _nullishCoalesce(_optionalChain([section, 'optionalAccess', _105 => _105.trim, 'call', _106 => _106()]), () => ( ""))).filter(Boolean);
2238
+ const sections = content.split(SECTION_REGEX).map((section) => _nullishCoalesce(_optionalChain([section, 'optionalAccess', _106 => _106.trim, 'call', _107 => _107()]), () => ( ""))).filter(Boolean);
2239
2239
  return {
2240
2240
  ...Object.fromEntries(
2241
2241
  sections.map((section, index) => [`${MD_SECTION_PREFIX}${index}`, section]).filter(([, section]) => Boolean(section))
@@ -2254,7 +2254,7 @@ function createMarkdownLoader() {
2254
2254
  );
2255
2255
  let content = Object.entries(data).filter(([key]) => key.startsWith(MD_SECTION_PREFIX)).sort(
2256
2256
  ([a], [b]) => Number(a.split("-").pop()) - Number(b.split("-").pop())
2257
- ).map(([, value]) => _nullishCoalesce(_optionalChain([value, 'optionalAccess', _107 => _107.trim, 'call', _108 => _108()]), () => ( ""))).filter(Boolean).join("\n\n");
2257
+ ).map(([, value]) => _nullishCoalesce(_optionalChain([value, 'optionalAccess', _108 => _108.trim, 'call', _109 => _109()]), () => ( ""))).filter(Boolean).join("\n\n");
2258
2258
  if (Object.keys(frontmatter).length > 0) {
2259
2259
  content = `
2260
2260
  ${content}`;
@@ -2287,7 +2287,7 @@ function createPropertiesLoader() {
2287
2287
  return result;
2288
2288
  },
2289
2289
  async push(locale, payload) {
2290
- const result = Object.entries(payload).filter(([_34, value]) => value != null).map(([key, value]) => `${key}=${value}`).join("\n");
2290
+ const result = Object.entries(payload).filter(([_35, value]) => value != null).map(([key, value]) => `${key}=${value}`).join("\n");
2291
2291
  return result;
2292
2292
  }
2293
2293
  });
@@ -2298,7 +2298,7 @@ function isSkippableLine(line) {
2298
2298
  function parsePropertyLine(line) {
2299
2299
  const [key, ...valueParts] = line.split("=");
2300
2300
  return {
2301
- key: _optionalChain([key, 'optionalAccess', _109 => _109.trim, 'call', _110 => _110()]) || "",
2301
+ key: _optionalChain([key, 'optionalAccess', _110 => _110.trim, 'call', _111 => _111()]) || "",
2302
2302
  value: valueParts.join("=").trim()
2303
2303
  };
2304
2304
  }
@@ -2386,7 +2386,7 @@ function createXcodeXcstringsLoader(defaultLocale) {
2386
2386
  if (rootTranslationEntity.shouldTranslate === false) {
2387
2387
  continue;
2388
2388
  }
2389
- const langTranslationEntity = _optionalChain([rootTranslationEntity, 'optionalAccess', _111 => _111.localizations, 'optionalAccess', _112 => _112[locale]]);
2389
+ const langTranslationEntity = _optionalChain([rootTranslationEntity, 'optionalAccess', _112 => _112.localizations, 'optionalAccess', _113 => _113[locale]]);
2390
2390
  if (langTranslationEntity) {
2391
2391
  if ("stringUnit" in langTranslationEntity) {
2392
2392
  resultData[translationKey] = langTranslationEntity.stringUnit.value;
@@ -2395,7 +2395,7 @@ function createXcodeXcstringsLoader(defaultLocale) {
2395
2395
  resultData[translationKey] = {};
2396
2396
  const pluralForms = langTranslationEntity.variations.plural;
2397
2397
  for (const form in pluralForms) {
2398
- if (_optionalChain([pluralForms, 'access', _113 => _113[form], 'optionalAccess', _114 => _114.stringUnit, 'optionalAccess', _115 => _115.value])) {
2398
+ if (_optionalChain([pluralForms, 'access', _114 => _114[form], 'optionalAccess', _115 => _115.stringUnit, 'optionalAccess', _116 => _116.value])) {
2399
2399
  resultData[translationKey][form] = pluralForms[form].stringUnit.value;
2400
2400
  }
2401
2401
  }
@@ -2421,7 +2421,7 @@ function createXcodeXcstringsLoader(defaultLocale) {
2421
2421
  const hasDoNotTranslateFlag = originalInput && originalInput.strings && originalInput.strings[key] && originalInput.strings[key].shouldTranslate === false;
2422
2422
  if (typeof value === "string") {
2423
2423
  langDataToMerge.strings[key] = {
2424
- extractionState: _optionalChain([originalInput, 'optionalAccess', _116 => _116.strings, 'optionalAccess', _117 => _117[key], 'optionalAccess', _118 => _118.extractionState]),
2424
+ extractionState: _optionalChain([originalInput, 'optionalAccess', _117 => _117.strings, 'optionalAccess', _118 => _118[key], 'optionalAccess', _119 => _119.extractionState]),
2425
2425
  localizations: {
2426
2426
  [locale]: {
2427
2427
  stringUnit: {
@@ -2469,7 +2469,7 @@ function _removeLocale(input2, locale) {
2469
2469
  const { strings } = input2;
2470
2470
  const newStrings = _lodash2.default.cloneDeep(strings);
2471
2471
  for (const [key, value] of Object.entries(newStrings)) {
2472
- if (_optionalChain([value, 'access', _119 => _119.localizations, 'optionalAccess', _120 => _120[locale]])) {
2472
+ if (_optionalChain([value, 'access', _120 => _120.localizations, 'optionalAccess', _121 => _121[locale]])) {
2473
2473
  delete value.localizations[locale];
2474
2474
  }
2475
2475
  }
@@ -2558,12 +2558,12 @@ function createUnlocalizableLoader(returnUnlocalizedKeys = false) {
2558
2558
  const unlocalizableKeys = _getUnlocalizableKeys(input2);
2559
2559
  const result = _lodash2.default.omitBy(
2560
2560
  input2,
2561
- (_34, key) => unlocalizableKeys.includes(key)
2561
+ (_35, key) => unlocalizableKeys.includes(key)
2562
2562
  );
2563
2563
  if (returnUnlocalizedKeys) {
2564
2564
  result.unlocalizable = _lodash2.default.omitBy(
2565
2565
  input2,
2566
- (_34, key) => !unlocalizableKeys.includes(key)
2566
+ (_35, key) => !unlocalizableKeys.includes(key)
2567
2567
  );
2568
2568
  }
2569
2569
  return result;
@@ -2573,7 +2573,7 @@ function createUnlocalizableLoader(returnUnlocalizedKeys = false) {
2573
2573
  const result = _lodash2.default.merge(
2574
2574
  {},
2575
2575
  data,
2576
- _lodash2.default.omitBy(originalInput, (_34, key) => !unlocalizableKeys.includes(key))
2576
+ _lodash2.default.omitBy(originalInput, (_35, key) => !unlocalizableKeys.includes(key))
2577
2577
  );
2578
2578
  return result;
2579
2579
  }
@@ -2604,7 +2604,7 @@ function _getUnlocalizableKeys(input2) {
2604
2604
  }
2605
2605
  }
2606
2606
  return false;
2607
- }).map(([key, _34]) => key);
2607
+ }).map(([key, _35]) => key);
2608
2608
  }
2609
2609
 
2610
2610
  // src/cli/loaders/po/index.ts
@@ -2629,7 +2629,7 @@ function createPoDataLoader(params) {
2629
2629
  Object.entries(entries).forEach(([msgid, entry]) => {
2630
2630
  if (msgid && entry.msgid) {
2631
2631
  const context = entry.msgctxt || "";
2632
- const fullEntry = _optionalChain([parsedPo, 'access', _121 => _121.translations, 'access', _122 => _122[context], 'optionalAccess', _123 => _123[msgid]]);
2632
+ const fullEntry = _optionalChain([parsedPo, 'access', _122 => _122.translations, 'access', _123 => _123[context], 'optionalAccess', _124 => _124[msgid]]);
2633
2633
  if (fullEntry) {
2634
2634
  result[msgid] = fullEntry;
2635
2635
  }
@@ -2639,8 +2639,8 @@ function createPoDataLoader(params) {
2639
2639
  return result;
2640
2640
  },
2641
2641
  async push(locale, data, originalInput, originalLocale, pullInput) {
2642
- const currentSections = _optionalChain([pullInput, 'optionalAccess', _124 => _124.split, 'call', _125 => _125("\n\n"), 'access', _126 => _126.filter, 'call', _127 => _127(Boolean)]) || [];
2643
- const originalSections = _optionalChain([originalInput, 'optionalAccess', _128 => _128.split, 'call', _129 => _129("\n\n"), 'access', _130 => _130.filter, 'call', _131 => _131(Boolean)]) || [];
2642
+ const currentSections = _optionalChain([pullInput, 'optionalAccess', _125 => _125.split, 'call', _126 => _126("\n\n"), 'access', _127 => _127.filter, 'call', _128 => _128(Boolean)]) || [];
2643
+ const originalSections = _optionalChain([originalInput, 'optionalAccess', _129 => _129.split, 'call', _130 => _130("\n\n"), 'access', _131 => _131.filter, 'call', _132 => _132(Boolean)]) || [];
2644
2644
  const result = originalSections.map((section) => {
2645
2645
  const sectionPo = _gettextparser2.default.po.parse(section);
2646
2646
  if (Object.keys(sectionPo.translations).length === 0) {
@@ -2709,8 +2709,8 @@ function createPoContentLoader() {
2709
2709
  {
2710
2710
  ...entry,
2711
2711
  msgstr: [
2712
- _optionalChain([data, 'access', _132 => _132[entry.msgid], 'optionalAccess', _133 => _133.singular]),
2713
- _optionalChain([data, 'access', _134 => _134[entry.msgid], 'optionalAccess', _135 => _135.plural]) || null
2712
+ _optionalChain([data, 'access', _133 => _133[entry.msgid], 'optionalAccess', _134 => _134.singular]),
2713
+ _optionalChain([data, 'access', _135 => _135[entry.msgid], 'optionalAccess', _136 => _136.plural]) || null
2714
2714
  ].filter(Boolean)
2715
2715
  }
2716
2716
  ]).fromPairs().value();
@@ -2832,7 +2832,7 @@ function pullV1(xliffElement, locale, originalLocale) {
2832
2832
  let key = getTransUnitKey(unit);
2833
2833
  if (!key) return;
2834
2834
  if (seenKeys.has(key)) {
2835
- const id = _optionalChain([unit, 'access', _136 => _136.getAttribute, 'call', _137 => _137("id"), 'optionalAccess', _138 => _138.trim, 'call', _139 => _139()]);
2835
+ const id = _optionalChain([unit, 'access', _137 => _137.getAttribute, 'call', _138 => _138("id"), 'optionalAccess', _139 => _139.trim, 'call', _140 => _140()]);
2836
2836
  if (id) {
2837
2837
  key = `${key}#${id}`;
2838
2838
  } else {
@@ -2880,7 +2880,7 @@ function pushV1(dom, xliffElement, locale, translations, originalLocale, origina
2880
2880
  let key = getTransUnitKey(unit);
2881
2881
  if (!key) return;
2882
2882
  if (seenKeys.has(key)) {
2883
- const id = _optionalChain([unit, 'access', _140 => _140.getAttribute, 'call', _141 => _141("id"), 'optionalAccess', _142 => _142.trim, 'call', _143 => _143()]);
2883
+ const id = _optionalChain([unit, 'access', _141 => _141.getAttribute, 'call', _142 => _142("id"), 'optionalAccess', _143 => _143.trim, 'call', _144 => _144()]);
2884
2884
  if (id) {
2885
2885
  key = `${key}#${id}`;
2886
2886
  } else {
@@ -2922,7 +2922,7 @@ function pushV1(dom, xliffElement, locale, translations, originalLocale, origina
2922
2922
  const translationKeys = new Set(Object.keys(translations));
2923
2923
  existingUnits.forEach((unit, key) => {
2924
2924
  if (!translationKeys.has(key)) {
2925
- _optionalChain([unit, 'access', _144 => _144.parentNode, 'optionalAccess', _145 => _145.removeChild, 'call', _146 => _146(unit)]);
2925
+ _optionalChain([unit, 'access', _145 => _145.parentNode, 'optionalAccess', _146 => _146.removeChild, 'call', _147 => _147(unit)]);
2926
2926
  }
2927
2927
  });
2928
2928
  return serializeWithDeclaration(
@@ -2965,18 +2965,18 @@ function traverseUnitsV2(container, fileId, currentPath, result) {
2965
2965
  Array.from(container.children).forEach((child) => {
2966
2966
  const tagName = child.tagName;
2967
2967
  if (tagName === "unit") {
2968
- const unitId = _optionalChain([child, 'access', _147 => _147.getAttribute, 'call', _148 => _148("id"), 'optionalAccess', _149 => _149.trim, 'call', _150 => _150()]);
2968
+ const unitId = _optionalChain([child, 'access', _148 => _148.getAttribute, 'call', _149 => _149("id"), 'optionalAccess', _150 => _150.trim, 'call', _151 => _151()]);
2969
2969
  if (!unitId) return;
2970
2970
  const key = `resources/${fileId}/${currentPath}${unitId}/source`;
2971
2971
  const segment = child.querySelector("segment");
2972
- const source = _optionalChain([segment, 'optionalAccess', _151 => _151.querySelector, 'call', _152 => _152("source")]);
2972
+ const source = _optionalChain([segment, 'optionalAccess', _152 => _152.querySelector, 'call', _153 => _153("source")]);
2973
2973
  if (source) {
2974
2974
  result[key] = extractTextContent(source);
2975
2975
  } else {
2976
2976
  result[key] = unitId;
2977
2977
  }
2978
2978
  } else if (tagName === "group") {
2979
- const groupId = _optionalChain([child, 'access', _153 => _153.getAttribute, 'call', _154 => _154("id"), 'optionalAccess', _155 => _155.trim, 'call', _156 => _156()]);
2979
+ const groupId = _optionalChain([child, 'access', _154 => _154.getAttribute, 'call', _155 => _155("id"), 'optionalAccess', _156 => _156.trim, 'call', _157 => _157()]);
2980
2980
  const newPath = groupId ? `${currentPath}${groupId}/groupUnits/` : currentPath;
2981
2981
  traverseUnitsV2(child, fileId, newPath, result);
2982
2982
  }
@@ -3012,12 +3012,12 @@ function indexUnitsV2(container, fileId, currentPath, index) {
3012
3012
  Array.from(container.children).forEach((child) => {
3013
3013
  const tagName = child.tagName;
3014
3014
  if (tagName === "unit") {
3015
- const unitId = _optionalChain([child, 'access', _157 => _157.getAttribute, 'call', _158 => _158("id"), 'optionalAccess', _159 => _159.trim, 'call', _160 => _160()]);
3015
+ const unitId = _optionalChain([child, 'access', _158 => _158.getAttribute, 'call', _159 => _159("id"), 'optionalAccess', _160 => _160.trim, 'call', _161 => _161()]);
3016
3016
  if (!unitId) return;
3017
3017
  const key = `resources/${fileId}/${currentPath}${unitId}/source`;
3018
3018
  index.set(key, child);
3019
3019
  } else if (tagName === "group") {
3020
- const groupId = _optionalChain([child, 'access', _161 => _161.getAttribute, 'call', _162 => _162("id"), 'optionalAccess', _163 => _163.trim, 'call', _164 => _164()]);
3020
+ const groupId = _optionalChain([child, 'access', _162 => _162.getAttribute, 'call', _163 => _163("id"), 'optionalAccess', _164 => _164.trim, 'call', _165 => _165()]);
3021
3021
  const newPath = groupId ? `${currentPath}${groupId}/groupUnits/` : currentPath;
3022
3022
  indexUnitsV2(child, fileId, newPath, index);
3023
3023
  }
@@ -3038,9 +3038,9 @@ function updateUnitV2(unit, value) {
3038
3038
  setTextContent(source, value);
3039
3039
  }
3040
3040
  function getTransUnitKey(transUnit) {
3041
- const resname = _optionalChain([transUnit, 'access', _165 => _165.getAttribute, 'call', _166 => _166("resname"), 'optionalAccess', _167 => _167.trim, 'call', _168 => _168()]);
3041
+ const resname = _optionalChain([transUnit, 'access', _166 => _166.getAttribute, 'call', _167 => _167("resname"), 'optionalAccess', _168 => _168.trim, 'call', _169 => _169()]);
3042
3042
  if (resname) return resname;
3043
- const id = _optionalChain([transUnit, 'access', _169 => _169.getAttribute, 'call', _170 => _170("id"), 'optionalAccess', _171 => _171.trim, 'call', _172 => _172()]);
3043
+ const id = _optionalChain([transUnit, 'access', _170 => _170.getAttribute, 'call', _171 => _171("id"), 'optionalAccess', _172 => _172.trim, 'call', _173 => _173()]);
3044
3044
  if (id) return id;
3045
3045
  const sourceElement = transUnit.querySelector("source");
3046
3046
  if (sourceElement) {
@@ -3097,7 +3097,7 @@ function formatXml(xml) {
3097
3097
  if (cdataNode) {
3098
3098
  return `${indent2}${openTag}<![CDATA[${cdataNode.nodeValue}]]></${tagName}>`;
3099
3099
  }
3100
- const textContent = _optionalChain([element, 'access', _173 => _173.textContent, 'optionalAccess', _174 => _174.trim, 'call', _175 => _175()]) || "";
3100
+ const textContent = _optionalChain([element, 'access', _174 => _174.textContent, 'optionalAccess', _175 => _175.trim, 'call', _176 => _176()]) || "";
3101
3101
  const hasOnlyText = element.childNodes.length === 1 && element.childNodes[0].nodeType === 3;
3102
3102
  if (hasOnlyText && textContent) {
3103
3103
  return `${indent2}${openTag}${textContent}</${tagName}>`;
@@ -3390,7 +3390,7 @@ function createDatoClient(params) {
3390
3390
  ids: !records.length ? void 0 : records.join(",")
3391
3391
  }
3392
3392
  }).catch(
3393
- (error) => Promise.reject(_optionalChain([error, 'optionalAccess', _176 => _176.response, 'optionalAccess', _177 => _177.body, 'optionalAccess', _178 => _178.data, 'optionalAccess', _179 => _179[0]]) || error)
3393
+ (error) => Promise.reject(_optionalChain([error, 'optionalAccess', _177 => _177.response, 'optionalAccess', _178 => _178.body, 'optionalAccess', _179 => _179.data, 'optionalAccess', _180 => _180[0]]) || error)
3394
3394
  );
3395
3395
  },
3396
3396
  findRecordsForModel: async (modelId, records) => {
@@ -3401,10 +3401,10 @@ function createDatoClient(params) {
3401
3401
  filter: {
3402
3402
  type: modelId,
3403
3403
  only_valid: "true",
3404
- ids: !_optionalChain([records, 'optionalAccess', _180 => _180.length]) ? void 0 : records.join(",")
3404
+ ids: !_optionalChain([records, 'optionalAccess', _181 => _181.length]) ? void 0 : records.join(",")
3405
3405
  }
3406
3406
  }).catch(
3407
- (error) => Promise.reject(_optionalChain([error, 'optionalAccess', _181 => _181.response, 'optionalAccess', _182 => _182.body, 'optionalAccess', _183 => _183.data, 'optionalAccess', _184 => _184[0]]) || error)
3407
+ (error) => Promise.reject(_optionalChain([error, 'optionalAccess', _182 => _182.response, 'optionalAccess', _183 => _183.body, 'optionalAccess', _184 => _184.data, 'optionalAccess', _185 => _185[0]]) || error)
3408
3408
  );
3409
3409
  return result;
3410
3410
  } catch (_error) {
@@ -3420,10 +3420,10 @@ function createDatoClient(params) {
3420
3420
  updateRecord: async (id, payload) => {
3421
3421
  try {
3422
3422
  await dato.items.update(id, payload).catch(
3423
- (error) => Promise.reject(_optionalChain([error, 'optionalAccess', _185 => _185.response, 'optionalAccess', _186 => _186.body, 'optionalAccess', _187 => _187.data, 'optionalAccess', _188 => _188[0]]) || error)
3423
+ (error) => Promise.reject(_optionalChain([error, 'optionalAccess', _186 => _186.response, 'optionalAccess', _187 => _187.body, 'optionalAccess', _188 => _188.data, 'optionalAccess', _189 => _189[0]]) || error)
3424
3424
  );
3425
3425
  } catch (_error) {
3426
- if (_optionalChain([_error, 'optionalAccess', _189 => _189.attributes, 'optionalAccess', _190 => _190.details, 'optionalAccess', _191 => _191.message])) {
3426
+ if (_optionalChain([_error, 'optionalAccess', _190 => _190.attributes, 'optionalAccess', _191 => _191.details, 'optionalAccess', _192 => _192.message])) {
3427
3427
  throw new Error(
3428
3428
  [
3429
3429
  `${_error.attributes.details.message}`,
@@ -3445,10 +3445,10 @@ function createDatoClient(params) {
3445
3445
  enableFieldLocalization: async (args) => {
3446
3446
  try {
3447
3447
  await dato.fields.update(`${args.modelId}::${args.fieldId}`, { localized: true }).catch(
3448
- (error) => Promise.reject(_optionalChain([error, 'optionalAccess', _192 => _192.response, 'optionalAccess', _193 => _193.body, 'optionalAccess', _194 => _194.data, 'optionalAccess', _195 => _195[0]]) || error)
3448
+ (error) => Promise.reject(_optionalChain([error, 'optionalAccess', _193 => _193.response, 'optionalAccess', _194 => _194.body, 'optionalAccess', _195 => _195.data, 'optionalAccess', _196 => _196[0]]) || error)
3449
3449
  );
3450
3450
  } catch (_error) {
3451
- if (_optionalChain([_error, 'optionalAccess', _196 => _196.attributes, 'optionalAccess', _197 => _197.code]) === "NOT_FOUND") {
3451
+ if (_optionalChain([_error, 'optionalAccess', _197 => _197.attributes, 'optionalAccess', _198 => _198.code]) === "NOT_FOUND") {
3452
3452
  throw new Error(
3453
3453
  [
3454
3454
  `Field "${args.fieldId}" not found in model "${args.modelId}".`,
@@ -3456,7 +3456,7 @@ function createDatoClient(params) {
3456
3456
  ].join("\n\n")
3457
3457
  );
3458
3458
  }
3459
- if (_optionalChain([_error, 'optionalAccess', _198 => _198.attributes, 'optionalAccess', _199 => _199.details, 'optionalAccess', _200 => _200.message])) {
3459
+ if (_optionalChain([_error, 'optionalAccess', _199 => _199.attributes, 'optionalAccess', _200 => _200.details, 'optionalAccess', _201 => _201.message])) {
3460
3460
  throw new Error(
3461
3461
  [
3462
3462
  `${_error.attributes.details.message}`,
@@ -3534,7 +3534,7 @@ function createDatoApiLoader(config, onConfigUpdate) {
3534
3534
  const records = await dato.findRecordsForModel(modelId);
3535
3535
  const recordChoices = createRecordChoices(
3536
3536
  records,
3537
- _optionalChain([config, 'access', _201 => _201.models, 'access', _202 => _202[modelId], 'optionalAccess', _203 => _203.records]) || [],
3537
+ _optionalChain([config, 'access', _202 => _202.models, 'access', _203 => _203[modelId], 'optionalAccess', _204 => _204.records]) || [],
3538
3538
  project
3539
3539
  );
3540
3540
  const selectedRecords = await promptRecordSelection(
@@ -3553,14 +3553,14 @@ function createDatoApiLoader(config, onConfigUpdate) {
3553
3553
  },
3554
3554
  async pull(locale, input2, initCtx) {
3555
3555
  const result = {};
3556
- for (const modelId of _lodash2.default.keys(_optionalChain([initCtx, 'optionalAccess', _204 => _204.models]) || {})) {
3557
- let records = _optionalChain([initCtx, 'optionalAccess', _205 => _205.models, 'access', _206 => _206[modelId], 'access', _207 => _207.records]) || [];
3556
+ for (const modelId of _lodash2.default.keys(_optionalChain([initCtx, 'optionalAccess', _205 => _205.models]) || {})) {
3557
+ let records = _optionalChain([initCtx, 'optionalAccess', _206 => _206.models, 'access', _207 => _207[modelId], 'access', _208 => _208.records]) || [];
3558
3558
  const recordIds = records.map((record) => record.id);
3559
3559
  records = await dato.findRecords(recordIds);
3560
3560
  console.log(`Fetched ${records.length} records for model ${modelId}`);
3561
3561
  if (records.length > 0) {
3562
3562
  result[modelId] = {
3563
- fields: _optionalChain([initCtx, 'optionalAccess', _208 => _208.models, 'optionalAccess', _209 => _209[modelId], 'optionalAccess', _210 => _210.fields]) || [],
3563
+ fields: _optionalChain([initCtx, 'optionalAccess', _209 => _209.models, 'optionalAccess', _210 => _210[modelId], 'optionalAccess', _211 => _211.fields]) || [],
3564
3564
  records
3565
3565
  };
3566
3566
  }
@@ -3623,7 +3623,7 @@ function createRecordChoices(records, selectedIds = [], project) {
3623
3623
  return records.map((record) => ({
3624
3624
  name: `${record.id} - https://${project.internal_domain}/editor/item_types/${record.item_type.id}/items/${record.id}`,
3625
3625
  value: record.id,
3626
- checked: _optionalChain([selectedIds, 'optionalAccess', _211 => _211.includes, 'call', _212 => _212(record.id)])
3626
+ checked: _optionalChain([selectedIds, 'optionalAccess', _212 => _212.includes, 'call', _213 => _213(record.id)])
3627
3627
  }));
3628
3628
  }
3629
3629
  async function promptRecordSelection(modelName, choices) {
@@ -3942,7 +3942,7 @@ function createVttLoader() {
3942
3942
  if (!input2) {
3943
3943
  return "";
3944
3944
  }
3945
- const vtt = _optionalChain([_nodewebvtt2.default, 'access', _213 => _213.parse, 'call', _214 => _214(input2), 'optionalAccess', _215 => _215.cues]);
3945
+ const vtt = _optionalChain([_nodewebvtt2.default, 'access', _214 => _214.parse, 'call', _215 => _215(input2), 'optionalAccess', _216 => _216.cues]);
3946
3946
  if (Object.keys(vtt).length === 0) {
3947
3947
  return {};
3948
3948
  } else {
@@ -3996,7 +3996,7 @@ function variableExtractLoader(params) {
3996
3996
  for (let i = 0; i < matches.length; i++) {
3997
3997
  const match2 = matches[i];
3998
3998
  const currentValue = result[key].value;
3999
- const newValue = _optionalChain([currentValue, 'optionalAccess', _216 => _216.replace, 'call', _217 => _217(match2, `{variable:${i}}`)]);
3999
+ const newValue = _optionalChain([currentValue, 'optionalAccess', _217 => _217.replace, 'call', _218 => _218(match2, `{variable:${i}}`)]);
4000
4000
  result[key].value = newValue;
4001
4001
  result[key].variables[i] = match2;
4002
4002
  }
@@ -4010,7 +4010,7 @@ function variableExtractLoader(params) {
4010
4010
  for (let i = 0; i < valueObj.variables.length; i++) {
4011
4011
  const variable = valueObj.variables[i];
4012
4012
  const currentValue = result[key];
4013
- const newValue = _optionalChain([currentValue, 'optionalAccess', _218 => _218.replace, 'call', _219 => _219(`{variable:${i}}`, variable)]);
4013
+ const newValue = _optionalChain([currentValue, 'optionalAccess', _219 => _219.replace, 'call', _220 => _220(`{variable:${i}}`, variable)]);
4014
4014
  result[key] = newValue;
4015
4015
  }
4016
4016
  }
@@ -4210,7 +4210,7 @@ function createVueJsonLoader() {
4210
4210
  return createLoader({
4211
4211
  pull: async (locale, input2, ctx) => {
4212
4212
  const parsed = parseVueFile(input2);
4213
- return _nullishCoalesce(_optionalChain([parsed, 'optionalAccess', _220 => _220.i18n, 'optionalAccess', _221 => _221[locale]]), () => ( {}));
4213
+ return _nullishCoalesce(_optionalChain([parsed, 'optionalAccess', _221 => _221.i18n, 'optionalAccess', _222 => _222[locale]]), () => ( {}));
4214
4214
  },
4215
4215
  push: async (locale, data, originalInput) => {
4216
4216
  const parsed = parseVueFile(_nullishCoalesce(originalInput, () => ( "")));
@@ -4395,7 +4395,7 @@ function updateStringsInObjectExpression(objectExpression, data) {
4395
4395
  objectExpression.properties.forEach((prop) => {
4396
4396
  if (!t.isObjectProperty(prop)) return;
4397
4397
  const key = getPropertyKey(prop);
4398
- const incomingVal = _optionalChain([data, 'optionalAccess', _222 => _222[key]]);
4398
+ const incomingVal = _optionalChain([data, 'optionalAccess', _223 => _223[key]]);
4399
4399
  if (incomingVal === void 0) {
4400
4400
  return;
4401
4401
  }
@@ -4431,7 +4431,7 @@ function updateStringsInArrayExpression(arrayExpression, incoming) {
4431
4431
  let modified = false;
4432
4432
  arrayExpression.elements.forEach((element, index) => {
4433
4433
  if (!element) return;
4434
- const incomingVal = _optionalChain([incoming, 'optionalAccess', _223 => _223[index]]);
4434
+ const incomingVal = _optionalChain([incoming, 'optionalAccess', _224 => _224[index]]);
4435
4435
  if (incomingVal === void 0) return;
4436
4436
  if (t.isStringLiteral(element) && typeof incomingVal === "string") {
4437
4437
  if (element.value !== incomingVal) {
@@ -4922,7 +4922,7 @@ var AST = class _AST {
4922
4922
  const ret = this.type === null ? this.#parts.slice().map((p) => typeof p === "string" ? p : p.toJSON()) : [this.type, ...this.#parts.map((p) => p.toJSON())];
4923
4923
  if (this.isStart() && !this.type)
4924
4924
  ret.unshift([]);
4925
- if (this.isEnd() && (this === this.#root || this.#root.#filledNegs && _optionalChain([this, 'access', _224 => _224.#parent, 'optionalAccess', _225 => _225.type]) === "!")) {
4925
+ if (this.isEnd() && (this === this.#root || this.#root.#filledNegs && _optionalChain([this, 'access', _225 => _225.#parent, 'optionalAccess', _226 => _226.type]) === "!")) {
4926
4926
  ret.push({});
4927
4927
  }
4928
4928
  return ret;
@@ -4930,7 +4930,7 @@ var AST = class _AST {
4930
4930
  isStart() {
4931
4931
  if (this.#root === this)
4932
4932
  return true;
4933
- if (!_optionalChain([this, 'access', _226 => _226.#parent, 'optionalAccess', _227 => _227.isStart, 'call', _228 => _228()]))
4933
+ if (!_optionalChain([this, 'access', _227 => _227.#parent, 'optionalAccess', _228 => _228.isStart, 'call', _229 => _229()]))
4934
4934
  return false;
4935
4935
  if (this.#parentIndex === 0)
4936
4936
  return true;
@@ -4946,12 +4946,12 @@ var AST = class _AST {
4946
4946
  isEnd() {
4947
4947
  if (this.#root === this)
4948
4948
  return true;
4949
- if (_optionalChain([this, 'access', _229 => _229.#parent, 'optionalAccess', _230 => _230.type]) === "!")
4949
+ if (_optionalChain([this, 'access', _230 => _230.#parent, 'optionalAccess', _231 => _231.type]) === "!")
4950
4950
  return true;
4951
- if (!_optionalChain([this, 'access', _231 => _231.#parent, 'optionalAccess', _232 => _232.isEnd, 'call', _233 => _233()]))
4951
+ if (!_optionalChain([this, 'access', _232 => _232.#parent, 'optionalAccess', _233 => _233.isEnd, 'call', _234 => _234()]))
4952
4952
  return false;
4953
4953
  if (!this.type)
4954
- return _optionalChain([this, 'access', _234 => _234.#parent, 'optionalAccess', _235 => _235.isEnd, 'call', _236 => _236()]);
4954
+ return _optionalChain([this, 'access', _235 => _235.#parent, 'optionalAccess', _236 => _236.isEnd, 'call', _237 => _237()]);
4955
4955
  const pl = this.#parent ? this.#parent.#parts.length : 0;
4956
4956
  return this.#parentIndex === pl - 1;
4957
4957
  }
@@ -5173,7 +5173,7 @@ var AST = class _AST {
5173
5173
  if (!this.type) {
5174
5174
  const noEmpty = this.isStart() && this.isEnd();
5175
5175
  const src = this.#parts.map((p) => {
5176
- const [re, _34, hasMagic, uflag] = typeof p === "string" ? _AST.#parseGlob(p, this.#hasMagic, noEmpty) : p.toRegExpSource(allowDot);
5176
+ const [re, _35, hasMagic, uflag] = typeof p === "string" ? _AST.#parseGlob(p, this.#hasMagic, noEmpty) : p.toRegExpSource(allowDot);
5177
5177
  this.#hasMagic = this.#hasMagic || hasMagic;
5178
5178
  this.#uflag = this.#uflag || uflag;
5179
5179
  return re;
@@ -5196,7 +5196,7 @@ var AST = class _AST {
5196
5196
  }
5197
5197
  }
5198
5198
  let end = "";
5199
- if (this.isEnd() && this.#root.#filledNegs && _optionalChain([this, 'access', _237 => _237.#parent, 'optionalAccess', _238 => _238.type]) === "!") {
5199
+ if (this.isEnd() && this.#root.#filledNegs && _optionalChain([this, 'access', _238 => _238.#parent, 'optionalAccess', _239 => _239.type]) === "!") {
5200
5200
  end = "(?:$|\\/)";
5201
5201
  }
5202
5202
  const final2 = start2 + src + end;
@@ -5246,7 +5246,7 @@ var AST = class _AST {
5246
5246
  if (typeof p === "string") {
5247
5247
  throw new Error("string type in extglob ast??");
5248
5248
  }
5249
- const [re, _34, _hasMagic, uflag] = p.toRegExpSource(dot);
5249
+ const [re, _35, _hasMagic, uflag] = p.toRegExpSource(dot);
5250
5250
  this.#uflag = this.#uflag || uflag;
5251
5251
  return re;
5252
5252
  }).filter((p) => !(this.isStart() && this.isEnd()) || !!p).join("|");
@@ -5491,7 +5491,7 @@ var Minimatch = class {
5491
5491
  }
5492
5492
  return false;
5493
5493
  }
5494
- debug(..._34) {
5494
+ debug(..._35) {
5495
5495
  }
5496
5496
  make() {
5497
5497
  const pattern = this.pattern;
@@ -5513,7 +5513,7 @@ var Minimatch = class {
5513
5513
  const rawGlobParts = this.globSet.map((s) => this.slashSplit(s));
5514
5514
  this.globParts = this.preprocess(rawGlobParts);
5515
5515
  this.debug(this.pattern, this.globParts);
5516
- let set = this.globParts.map((s, _34, __) => {
5516
+ let set = this.globParts.map((s, _35, __) => {
5517
5517
  if (this.isWindows && this.windowsNoMagicRoot) {
5518
5518
  const isUNC = s[0] === "" && s[1] === "" && (s[2] === "?" || !globMagic.test(s[2])) && !globMagic.test(s[3]);
5519
5519
  const isDrive = /^[a-z]:/i.test(s[0]);
@@ -6269,7 +6269,7 @@ function createMdxSectionsSplit2Loader() {
6269
6269
  const content = _lodash2.default.chain(data.sections).values().join("\n\n").value();
6270
6270
  const result = {
6271
6271
  frontmatter: data.frontmatter,
6272
- codePlaceholders: _optionalChain([pullInput, 'optionalAccess', _239 => _239.codePlaceholders]) || {},
6272
+ codePlaceholders: _optionalChain([pullInput, 'optionalAccess', _240 => _240.codePlaceholders]) || {},
6273
6273
  content
6274
6274
  };
6275
6275
  return result;
@@ -6540,11 +6540,102 @@ function createTxtLoader() {
6540
6540
  const sortedEntries = Object.entries(payload).sort(
6541
6541
  ([a], [b]) => parseInt(a) - parseInt(b)
6542
6542
  );
6543
- return sortedEntries.map(([_34, value]) => value).join("\n");
6543
+ return sortedEntries.map(([_35, value]) => value).join("\n");
6544
6544
  }
6545
6545
  });
6546
6546
  }
6547
6547
 
6548
+ // src/cli/loaders/json-dictionary.ts
6549
+
6550
+ var TOP_LEVEL_KEY = "--content--";
6551
+ function createJsonDictionaryLoader() {
6552
+ return createLoader({
6553
+ pull: async (locale, input2) => {
6554
+ const result = extractTranslatables(input2, locale);
6555
+ if (typeof result === "string") {
6556
+ return { [TOP_LEVEL_KEY]: result };
6557
+ }
6558
+ return result;
6559
+ },
6560
+ push: async (locale, data, originalInput, originalLocale) => {
6561
+ if (!originalInput) {
6562
+ throw new Error("Error while parsing json-dictionary bucket");
6563
+ }
6564
+ const input2 = _lodash2.default.cloneDeep(originalInput);
6565
+ if (Object.keys(data).length === 1 && Object.keys(data)[0] === TOP_LEVEL_KEY) {
6566
+ setNestedLocale(
6567
+ { [TOP_LEVEL_KEY]: input2 },
6568
+ [TOP_LEVEL_KEY],
6569
+ locale,
6570
+ data[TOP_LEVEL_KEY],
6571
+ originalLocale
6572
+ );
6573
+ return input2;
6574
+ }
6575
+ function walk(obj, dataNode, path17 = []) {
6576
+ if (Array.isArray(obj) && Array.isArray(dataNode)) {
6577
+ obj.forEach(
6578
+ (item, idx) => walk(item, dataNode[idx], [...path17, String(idx)])
6579
+ );
6580
+ } else if (obj && typeof obj === "object" && dataNode && typeof dataNode === "object" && !Array.isArray(dataNode)) {
6581
+ for (const key of Object.keys(obj)) {
6582
+ if (dataNode.hasOwnProperty(key)) {
6583
+ walk(obj[key], dataNode[key], [...path17, key]);
6584
+ }
6585
+ }
6586
+ } else if (obj && typeof obj === "object" && !Array.isArray(obj) && typeof dataNode === "string") {
6587
+ setNestedLocale(input2, path17, locale, dataNode, originalLocale);
6588
+ }
6589
+ }
6590
+ walk(input2, data);
6591
+ return input2;
6592
+ }
6593
+ });
6594
+ }
6595
+ function extractTranslatables(obj, locale) {
6596
+ if (Array.isArray(obj)) {
6597
+ return obj.map((item) => extractTranslatables(item, locale));
6598
+ } else if (isTranslatableObject(obj, locale)) {
6599
+ return obj[locale];
6600
+ } else if (obj && typeof obj === "object") {
6601
+ const result = {};
6602
+ for (const key of Object.keys(obj)) {
6603
+ const value = extractTranslatables(obj[key], locale);
6604
+ if (typeof value === "object" && value !== null && Object.keys(value).length > 0 || Array.isArray(value) && value.length > 0 || typeof value === "string" && value.length > 0) {
6605
+ result[key] = value;
6606
+ }
6607
+ }
6608
+ return result;
6609
+ }
6610
+ return void 0;
6611
+ }
6612
+ function isTranslatableObject(obj, locale) {
6613
+ return obj && typeof obj === "object" && !Array.isArray(obj) && Object.prototype.hasOwnProperty.call(obj, locale);
6614
+ }
6615
+ function setNestedLocale(obj, path17, locale, value, originalLocale) {
6616
+ let curr = obj;
6617
+ for (let i = 0; i < path17.length - 1; i++) {
6618
+ const key = path17[i];
6619
+ if (!(key in curr)) curr[key] = {};
6620
+ curr = curr[key];
6621
+ }
6622
+ const last = path17[path17.length - 1];
6623
+ if (curr[last] && typeof curr[last] === "object") {
6624
+ curr[last][locale] = value;
6625
+ if (originalLocale && curr[last][originalLocale]) {
6626
+ const entries = Object.entries(curr[last]);
6627
+ const first = entries.filter(([k]) => k === originalLocale);
6628
+ const rest = entries.filter(([k]) => k !== originalLocale).sort(([a], [b]) => a.localeCompare(b));
6629
+ const ordered = [...first, ...rest];
6630
+ const reordered = {};
6631
+ for (const [k, v] of ordered) {
6632
+ reordered[k] = v;
6633
+ }
6634
+ curr[last] = reordered;
6635
+ }
6636
+ }
6637
+ }
6638
+
6548
6639
  // src/cli/loaders/index.ts
6549
6640
  function createBucketLoader(bucketType, bucketPathPattern, options, lockedKeys, lockedPatterns, ignoredKeys) {
6550
6641
  switch (bucketType) {
@@ -6776,6 +6867,19 @@ function createBucketLoader(bucketType, bucketPathPattern, options, lockedKeys,
6776
6867
  createSyncLoader(),
6777
6868
  createUnlocalizableLoader(options.returnUnlocalizedKeys)
6778
6869
  );
6870
+ case "json-dictionary":
6871
+ return composeLoaders(
6872
+ createTextFileLoader(bucketPathPattern),
6873
+ createPrettierLoader({ parser: "json", bucketPathPattern }),
6874
+ createJsonLoader(),
6875
+ createJsonDictionaryLoader(),
6876
+ createEnsureKeyOrderLoader(),
6877
+ createFlatLoader(),
6878
+ createInjectLocaleLoader(options.injectLocale),
6879
+ createLockedKeysLoader(lockedKeys || []),
6880
+ createSyncLoader(),
6881
+ createUnlocalizableLoader(options.returnUnlocalizedKeys)
6882
+ );
6779
6883
  }
6780
6884
  }
6781
6885
 
@@ -6880,7 +6984,7 @@ function createBasicTranslator(model, systemPrompt) {
6880
6984
  ]
6881
6985
  });
6882
6986
  const result = JSON.parse(response.text);
6883
- return _optionalChain([result, 'optionalAccess', _240 => _240.data]) || {};
6987
+ return _optionalChain([result, 'optionalAccess', _241 => _241.data]) || {};
6884
6988
  }
6885
6989
  }
6886
6990
  function extractPayloadChunks(payload) {
@@ -6962,7 +7066,7 @@ function getPureModelProvider(provider) {
6962
7066
 
6963
7067
  ${_chalk2.default.hex(colors.blue)("Docs: https://lingo.dev/go/docs")}
6964
7068
  `;
6965
- switch (_optionalChain([provider, 'optionalAccess', _241 => _241.id])) {
7069
+ switch (_optionalChain([provider, 'optionalAccess', _242 => _242.id])) {
6966
7070
  case "openai": {
6967
7071
  if (!process.env.OPENAI_API_KEY) {
6968
7072
  throw new Error(
@@ -7020,7 +7124,7 @@ function getPureModelProvider(provider) {
7020
7124
  })(provider.model);
7021
7125
  }
7022
7126
  default: {
7023
- throw new Error(createUnsupportedProviderErrorMessage(_optionalChain([provider, 'optionalAccess', _242 => _242.id])));
7127
+ throw new Error(createUnsupportedProviderErrorMessage(_optionalChain([provider, 'optionalAccess', _243 => _243.id])));
7024
7128
  }
7025
7129
  }
7026
7130
  }
@@ -7260,7 +7364,7 @@ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").desc
7260
7364
  validateParams(i18nConfig, flags);
7261
7365
  ora.succeed("Localization configuration is valid");
7262
7366
  ora.start("Connecting to Lingo.dev Localization Engine...");
7263
- const isByokMode = !!_optionalChain([i18nConfig, 'optionalAccess', _243 => _243.provider]);
7367
+ const isByokMode = !!_optionalChain([i18nConfig, 'optionalAccess', _244 => _244.provider]);
7264
7368
  if (isByokMode) {
7265
7369
  authId = null;
7266
7370
  ora.succeed("Using external provider (BYOK mode)");
@@ -7274,16 +7378,16 @@ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").desc
7274
7378
  flags
7275
7379
  });
7276
7380
  let buckets = getBuckets(i18nConfig);
7277
- if (_optionalChain([flags, 'access', _244 => _244.bucket, 'optionalAccess', _245 => _245.length])) {
7381
+ if (_optionalChain([flags, 'access', _245 => _245.bucket, 'optionalAccess', _246 => _246.length])) {
7278
7382
  buckets = buckets.filter(
7279
7383
  (bucket) => flags.bucket.includes(bucket.type)
7280
7384
  );
7281
7385
  }
7282
7386
  ora.succeed("Buckets retrieved");
7283
- if (_optionalChain([flags, 'access', _246 => _246.file, 'optionalAccess', _247 => _247.length])) {
7387
+ if (_optionalChain([flags, 'access', _247 => _247.file, 'optionalAccess', _248 => _248.length])) {
7284
7388
  buckets = buckets.map((bucket) => {
7285
7389
  const paths = bucket.paths.filter(
7286
- (path17) => flags.file.find((file) => _optionalChain([path17, 'access', _248 => _248.pathPattern, 'optionalAccess', _249 => _249.includes, 'call', _250 => _250(file)]))
7390
+ (path17) => flags.file.find((file) => _optionalChain([path17, 'access', _249 => _249.pathPattern, 'optionalAccess', _250 => _250.includes, 'call', _251 => _251(file)]))
7287
7391
  );
7288
7392
  return { ...bucket, paths };
7289
7393
  }).filter((bucket) => bucket.paths.length > 0);
@@ -7302,7 +7406,7 @@ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").desc
7302
7406
  });
7303
7407
  }
7304
7408
  }
7305
- const targetLocales = _optionalChain([flags, 'access', _251 => _251.locale, 'optionalAccess', _252 => _252.length]) ? flags.locale : i18nConfig.locale.targets;
7409
+ const targetLocales = _optionalChain([flags, 'access', _252 => _252.locale, 'optionalAccess', _253 => _253.length]) ? flags.locale : i18nConfig.locale.targets;
7306
7410
  ora.start("Setting up localization cache...");
7307
7411
  const checkLockfileProcessor = createDeltaProcessor("");
7308
7412
  const lockfileExists = await checkLockfileProcessor.checkIfLockExists();
@@ -7473,7 +7577,7 @@ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").desc
7473
7577
  if (flags.key) {
7474
7578
  processableData = _lodash2.default.pickBy(
7475
7579
  processableData,
7476
- (_34, key) => key === flags.key
7580
+ (_35, key) => key === flags.key
7477
7581
  );
7478
7582
  }
7479
7583
  if (flags.verbose) {
@@ -7561,7 +7665,7 @@ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").desc
7561
7665
  }
7562
7666
  const deltaProcessor = createDeltaProcessor(bucketPath.pathPattern);
7563
7667
  const checksums = await deltaProcessor.createChecksums(sourceData);
7564
- if (!_optionalChain([flags, 'access', _253 => _253.locale, 'optionalAccess', _254 => _254.length])) {
7668
+ if (!_optionalChain([flags, 'access', _254 => _254.locale, 'optionalAccess', _255 => _255.length])) {
7565
7669
  await deltaProcessor.saveChecksums(checksums);
7566
7670
  }
7567
7671
  }
@@ -7645,12 +7749,12 @@ function validateParams(i18nConfig, flags) {
7645
7749
  message: "No buckets found in i18n.json. Please add at least one bucket containing i18n content.",
7646
7750
  docUrl: "bucketNotFound"
7647
7751
  });
7648
- } else if (_optionalChain([flags, 'access', _255 => _255.locale, 'optionalAccess', _256 => _256.some, 'call', _257 => _257((locale) => !i18nConfig.locale.targets.includes(locale))])) {
7752
+ } else if (_optionalChain([flags, 'access', _256 => _256.locale, 'optionalAccess', _257 => _257.some, 'call', _258 => _258((locale) => !i18nConfig.locale.targets.includes(locale))])) {
7649
7753
  throw new CLIError({
7650
7754
  message: `One or more specified locales do not exist in i18n.json locale.targets. Please add them to the list and try again.`,
7651
7755
  docUrl: "localeTargetNotFound"
7652
7756
  });
7653
- } else if (_optionalChain([flags, 'access', _258 => _258.bucket, 'optionalAccess', _259 => _259.some, 'call', _260 => _260(
7757
+ } else if (_optionalChain([flags, 'access', _259 => _259.bucket, 'optionalAccess', _260 => _260.some, 'call', _261 => _261(
7654
7758
  (bucket) => !i18nConfig.buckets[bucket]
7655
7759
  )])) {
7656
7760
  throw new CLIError({
@@ -8030,7 +8134,7 @@ var _stdiojs = require('@modelcontextprotocol/sdk/server/stdio.js');
8030
8134
  var _mcpjs = require('@modelcontextprotocol/sdk/server/mcp.js');
8031
8135
 
8032
8136
 
8033
- var mcp_default = new (0, _interactivecommander.Command)().command("mcp").description("Use Lingo.dev model context provider with your AI agent").helpOption("-h, --help", "Show help").action(async (_34, program) => {
8137
+ var mcp_default = new (0, _interactivecommander.Command)().command("mcp").description("Use Lingo.dev model context provider with your AI agent").helpOption("-h, --help", "Show help").action(async (_35, program) => {
8034
8138
  const apiKey = program.args[0];
8035
8139
  const settings = getSettings(apiKey);
8036
8140
  if (!settings.auth.apiKey) {
@@ -8154,7 +8258,7 @@ function createLingoDotDevLocalizer(explicitApiKey) {
8154
8258
  const response = await engine.whoami();
8155
8259
  return {
8156
8260
  authenticated: !!response,
8157
- username: _optionalChain([response, 'optionalAccess', _261 => _261.email])
8261
+ username: _optionalChain([response, 'optionalAccess', _262 => _262.email])
8158
8262
  };
8159
8263
  } catch (e2) {
8160
8264
  return { authenticated: false };
@@ -8261,7 +8365,7 @@ function createExplicitLocalizer(provider) {
8261
8365
  }
8262
8366
  function createAiSdkLocalizer(params) {
8263
8367
  const skipAuth = params.skipAuth === true;
8264
- const apiKey = process.env[_nullishCoalesce(_optionalChain([params, 'optionalAccess', _262 => _262.apiKeyName]), () => ( ""))];
8368
+ const apiKey = process.env[_nullishCoalesce(_optionalChain([params, 'optionalAccess', _263 => _263.apiKeyName]), () => ( ""))];
8265
8369
  if (!skipAuth && !apiKey || !params.apiKeyName) {
8266
8370
  throw new Error(
8267
8371
  _dedent2.default`
@@ -8386,8 +8490,8 @@ async function setup(input2) {
8386
8490
  throw new Error(
8387
8491
  "No buckets found in i18n.json. Please add at least one bucket containing i18n content."
8388
8492
  );
8389
- } else if (_optionalChain([ctx, 'access', _263 => _263.flags, 'access', _264 => _264.bucket, 'optionalAccess', _265 => _265.some, 'call', _266 => _266(
8390
- (bucket) => !_optionalChain([ctx, 'access', _267 => _267.config, 'optionalAccess', _268 => _268.buckets, 'access', _269 => _269[bucket]])
8493
+ } else if (_optionalChain([ctx, 'access', _264 => _264.flags, 'access', _265 => _265.bucket, 'optionalAccess', _266 => _266.some, 'call', _267 => _267(
8494
+ (bucket) => !_optionalChain([ctx, 'access', _268 => _268.config, 'optionalAccess', _269 => _269.buckets, 'access', _270 => _270[bucket]])
8391
8495
  )])) {
8392
8496
  throw new Error(
8393
8497
  `One or more specified buckets do not exist in i18n.json. Please add them to the list first and try again.`
@@ -8400,7 +8504,7 @@ async function setup(input2) {
8400
8504
  title: "Selecting localization provider",
8401
8505
  task: async (ctx, task) => {
8402
8506
  ctx.localizer = createLocalizer(
8403
- _optionalChain([ctx, 'access', _270 => _270.config, 'optionalAccess', _271 => _271.provider]),
8507
+ _optionalChain([ctx, 'access', _271 => _271.config, 'optionalAccess', _272 => _272.provider]),
8404
8508
  ctx.flags.apiKey
8405
8509
  );
8406
8510
  if (!ctx.localizer) {
@@ -8615,7 +8719,7 @@ async function execute(input2) {
8615
8719
  const workerTasks = [];
8616
8720
  for (let i = 0; i < workersCount; i++) {
8617
8721
  const assignedTasks = ctx.tasks.filter(
8618
- (_34, idx) => idx % workersCount === i
8722
+ (_35, idx) => idx % workersCount === i
8619
8723
  );
8620
8724
  workerTasks.push(
8621
8725
  createWorkerTask({
@@ -8718,7 +8822,7 @@ function createWorkerTask(args) {
8718
8822
  const processableData = _lodash2.default.chain(sourceData).entries().filter(
8719
8823
  ([key, value]) => delta.added.includes(key) || delta.updated.includes(key) || !!args.ctx.flags.force
8720
8824
  ).filter(
8721
- ([key]) => !assignedTask.onlyKeys.length || _optionalChain([assignedTask, 'access', _272 => _272.onlyKeys, 'optionalAccess', _273 => _273.some, 'call', _274 => _274(
8825
+ ([key]) => !assignedTask.onlyKeys.length || _optionalChain([assignedTask, 'access', _273 => _273.onlyKeys, 'optionalAccess', _274 => _274.some, 'call', _275 => _275(
8722
8826
  (pattern) => minimatch(key, pattern)
8723
8827
  )])
8724
8828
  ).fromPairs().value();
@@ -8779,7 +8883,7 @@ function createWorkerTask(args) {
8779
8883
  finalRenamedTargetData
8780
8884
  );
8781
8885
  const checksums2 = await deltaProcessor.createChecksums(sourceData);
8782
- if (!_optionalChain([args, 'access', _275 => _275.ctx, 'access', _276 => _276.flags, 'access', _277 => _277.targetLocale, 'optionalAccess', _278 => _278.length])) {
8886
+ if (!_optionalChain([args, 'access', _276 => _276.ctx, 'access', _277 => _277.flags, 'access', _278 => _278.targetLocale, 'optionalAccess', _279 => _279.length])) {
8783
8887
  await deltaProcessor.saveChecksums(checksums2);
8784
8888
  }
8785
8889
  });
@@ -8969,13 +9073,13 @@ var flagsSchema2 = _zod.z.object({
8969
9073
 
8970
9074
  // src/cli/cmd/run/_utils.ts
8971
9075
  async function determineAuthId(ctx) {
8972
- const isByokMode = !!_optionalChain([ctx, 'access', _279 => _279.config, 'optionalAccess', _280 => _280.provider]);
9076
+ const isByokMode = !!_optionalChain([ctx, 'access', _280 => _280.config, 'optionalAccess', _281 => _281.provider]);
8973
9077
  if (isByokMode) {
8974
9078
  return null;
8975
9079
  } else {
8976
9080
  try {
8977
- const authStatus = await _optionalChain([ctx, 'access', _281 => _281.localizer, 'optionalAccess', _282 => _282.checkAuth, 'call', _283 => _283()]);
8978
- return _optionalChain([authStatus, 'optionalAccess', _284 => _284.username]) || null;
9081
+ const authStatus = await _optionalChain([ctx, 'access', _282 => _282.localizer, 'optionalAccess', _283 => _283.checkAuth, 'call', _284 => _284()]);
9082
+ return _optionalChain([authStatus, 'optionalAccess', _285 => _285.username]) || null;
8979
9083
  } catch (e3) {
8980
9084
  return null;
8981
9085
  }
@@ -9135,7 +9239,7 @@ var InBranchFlow = class extends IntegrationFlow {
9135
9239
  _child_process.execSync.call(void 0, `git config --global safe.directory ${process.cwd()}`);
9136
9240
  _child_process.execSync.call(void 0, `git config user.name "${gitConfig.userName}"`);
9137
9241
  _child_process.execSync.call(void 0, `git config user.email "${gitConfig.userEmail}"`);
9138
- _optionalChain([this, 'access', _285 => _285.platformKit, 'optionalAccess', _286 => _286.gitConfig, 'call', _287 => _287()]);
9242
+ _optionalChain([this, 'access', _286 => _286.platformKit, 'optionalAccess', _287 => _287.gitConfig, 'call', _288 => _288()]);
9139
9243
  _child_process.execSync.call(void 0, `git fetch origin ${baseBranchName}`, { stdio: "inherit" });
9140
9244
  _child_process.execSync.call(void 0, `git checkout ${baseBranchName} --`, { stdio: "inherit" });
9141
9245
  if (!processOwnCommits) {
@@ -9167,7 +9271,7 @@ var InBranchFlow = class extends IntegrationFlow {
9167
9271
  // src/cli/cmd/ci/flows/pull-request.ts
9168
9272
  var PullRequestFlow = class extends InBranchFlow {
9169
9273
  async preRun() {
9170
- const canContinue = await _optionalChain([super.preRun.bind(this), 'optionalCall', _288 => _288()]);
9274
+ const canContinue = await _optionalChain([super.preRun.bind(this), 'optionalCall', _289 => _289()]);
9171
9275
  if (!canContinue) {
9172
9276
  return false;
9173
9277
  }
@@ -9430,10 +9534,10 @@ var BitbucketPlatformKit = class extends PlatformKit {
9430
9534
  repo_slug: this.platformConfig.repositoryName,
9431
9535
  state: "OPEN"
9432
9536
  }).then(({ data: { values } }) => {
9433
- return _optionalChain([values, 'optionalAccess', _289 => _289.find, 'call', _290 => _290(
9434
- ({ source, destination }) => _optionalChain([source, 'optionalAccess', _291 => _291.branch, 'optionalAccess', _292 => _292.name]) === branch && _optionalChain([destination, 'optionalAccess', _293 => _293.branch, 'optionalAccess', _294 => _294.name]) === this.platformConfig.baseBranchName
9537
+ return _optionalChain([values, 'optionalAccess', _290 => _290.find, 'call', _291 => _291(
9538
+ ({ source, destination }) => _optionalChain([source, 'optionalAccess', _292 => _292.branch, 'optionalAccess', _293 => _293.name]) === branch && _optionalChain([destination, 'optionalAccess', _294 => _294.branch, 'optionalAccess', _295 => _295.name]) === this.platformConfig.baseBranchName
9435
9539
  )]);
9436
- }).then((pr) => _optionalChain([pr, 'optionalAccess', _295 => _295.id]));
9540
+ }).then((pr) => _optionalChain([pr, 'optionalAccess', _296 => _296.id]));
9437
9541
  }
9438
9542
  async closePullRequest({ pullRequestNumber }) {
9439
9543
  await this.bb.repositories.declinePullRequest({
@@ -9529,7 +9633,7 @@ var GitHubPlatformKit = class extends PlatformKit {
9529
9633
  repo: this.platformConfig.repositoryName,
9530
9634
  base: this.platformConfig.baseBranchName,
9531
9635
  state: "open"
9532
- }).then(({ data }) => data[0]).then((pr) => _optionalChain([pr, 'optionalAccess', _296 => _296.number]));
9636
+ }).then(({ data }) => data[0]).then((pr) => _optionalChain([pr, 'optionalAccess', _297 => _297.number]));
9533
9637
  }
9534
9638
  async closePullRequest({ pullRequestNumber }) {
9535
9639
  await this.octokit.rest.pulls.update({
@@ -9656,7 +9760,7 @@ var GitlabPlatformKit = class extends PlatformKit {
9656
9760
  sourceBranch: branch,
9657
9761
  state: "opened"
9658
9762
  });
9659
- return _optionalChain([mergeRequests, 'access', _297 => _297[0], 'optionalAccess', _298 => _298.iid]);
9763
+ return _optionalChain([mergeRequests, 'access', _298 => _298[0], 'optionalAccess', _299 => _299.iid]);
9660
9764
  }
9661
9765
  async closePullRequest({
9662
9766
  pullRequestNumber
@@ -9746,7 +9850,7 @@ var ci_default = new (0, _interactivecommander.Command)().command("ci").descript
9746
9850
  }
9747
9851
  const env = {
9748
9852
  LINGODOTDEV_API_KEY: settings.auth.apiKey,
9749
- LINGODOTDEV_PULL_REQUEST: _optionalChain([options, 'access', _299 => _299.pullRequest, 'optionalAccess', _300 => _300.toString, 'call', _301 => _301()]) || "false",
9853
+ LINGODOTDEV_PULL_REQUEST: _optionalChain([options, 'access', _300 => _300.pullRequest, 'optionalAccess', _301 => _301.toString, 'call', _302 => _302()]) || "false",
9750
9854
  ...options.commitMessage && {
9751
9855
  LINGODOTDEV_COMMIT_MESSAGE: options.commitMessage
9752
9856
  },
@@ -9766,7 +9870,7 @@ var ci_default = new (0, _interactivecommander.Command)().command("ci").descript
9766
9870
  const { isPullRequestMode } = platformKit.config;
9767
9871
  ora.info(`Pull request mode: ${isPullRequestMode ? "on" : "off"}`);
9768
9872
  const flow = isPullRequestMode ? new PullRequestFlow(ora, platformKit) : new InBranchFlow(ora, platformKit);
9769
- const canRun = await _optionalChain([flow, 'access', _302 => _302.preRun, 'optionalCall', _303 => _303()]);
9873
+ const canRun = await _optionalChain([flow, 'access', _303 => _303.preRun, 'optionalCall', _304 => _304()]);
9770
9874
  if (canRun === false) {
9771
9875
  return;
9772
9876
  }
@@ -9776,7 +9880,7 @@ var ci_default = new (0, _interactivecommander.Command)().command("ci").descript
9776
9880
  if (!hasChanges) {
9777
9881
  return;
9778
9882
  }
9779
- await _optionalChain([flow, 'access', _304 => _304.postRun, 'optionalCall', _305 => _305()]);
9883
+ await _optionalChain([flow, 'access', _305 => _305.postRun, 'optionalCall', _306 => _306()]);
9780
9884
  });
9781
9885
  function parseBooleanArg(val) {
9782
9886
  if (val === true) return true;
@@ -9845,17 +9949,17 @@ var status_default = new (0, _interactivecommander.Command)().command("status").
9845
9949
  flags
9846
9950
  });
9847
9951
  let buckets = getBuckets(i18nConfig);
9848
- if (_optionalChain([flags, 'access', _306 => _306.bucket, 'optionalAccess', _307 => _307.length])) {
9952
+ if (_optionalChain([flags, 'access', _307 => _307.bucket, 'optionalAccess', _308 => _308.length])) {
9849
9953
  buckets = buckets.filter(
9850
9954
  (bucket) => flags.bucket.includes(bucket.type)
9851
9955
  );
9852
9956
  }
9853
9957
  ora.succeed("Buckets retrieved");
9854
- if (_optionalChain([flags, 'access', _308 => _308.file, 'optionalAccess', _309 => _309.length])) {
9958
+ if (_optionalChain([flags, 'access', _309 => _309.file, 'optionalAccess', _310 => _310.length])) {
9855
9959
  buckets = buckets.map((bucket) => {
9856
9960
  const paths = bucket.paths.filter(
9857
9961
  (path17) => flags.file.find(
9858
- (file) => _optionalChain([path17, 'access', _310 => _310.pathPattern, 'optionalAccess', _311 => _311.includes, 'call', _312 => _312(file)]) || _optionalChain([path17, 'access', _313 => _313.pathPattern, 'optionalAccess', _314 => _314.match, 'call', _315 => _315(file)]) || minimatch(path17.pathPattern, file)
9962
+ (file) => _optionalChain([path17, 'access', _311 => _311.pathPattern, 'optionalAccess', _312 => _312.includes, 'call', _313 => _313(file)]) || _optionalChain([path17, 'access', _314 => _314.pathPattern, 'optionalAccess', _315 => _315.match, 'call', _316 => _316(file)]) || minimatch(path17.pathPattern, file)
9859
9963
  )
9860
9964
  );
9861
9965
  return { ...bucket, paths };
@@ -9875,7 +9979,7 @@ var status_default = new (0, _interactivecommander.Command)().command("status").
9875
9979
  });
9876
9980
  }
9877
9981
  }
9878
- const targetLocales = _optionalChain([flags, 'access', _316 => _316.locale, 'optionalAccess', _317 => _317.length]) ? flags.locale : i18nConfig.locale.targets;
9982
+ const targetLocales = _optionalChain([flags, 'access', _317 => _317.locale, 'optionalAccess', _318 => _318.length]) ? flags.locale : i18nConfig.locale.targets;
9879
9983
  let totalSourceKeyCount = 0;
9880
9984
  let uniqueKeysToTranslate = 0;
9881
9985
  let totalExistingTranslations = 0;
@@ -10279,12 +10383,12 @@ function validateParams2(i18nConfig, flags) {
10279
10383
  message: "No buckets found in i18n.json. Please add at least one bucket containing i18n content.",
10280
10384
  docUrl: "bucketNotFound"
10281
10385
  });
10282
- } else if (_optionalChain([flags, 'access', _318 => _318.locale, 'optionalAccess', _319 => _319.some, 'call', _320 => _320((locale) => !i18nConfig.locale.targets.includes(locale))])) {
10386
+ } else if (_optionalChain([flags, 'access', _319 => _319.locale, 'optionalAccess', _320 => _320.some, 'call', _321 => _321((locale) => !i18nConfig.locale.targets.includes(locale))])) {
10283
10387
  throw new CLIError({
10284
10388
  message: `One or more specified locales do not exist in i18n.json locale.targets. Please add them to the list and try again.`,
10285
10389
  docUrl: "localeTargetNotFound"
10286
10390
  });
10287
- } else if (_optionalChain([flags, 'access', _321 => _321.bucket, 'optionalAccess', _322 => _322.some, 'call', _323 => _323(
10391
+ } else if (_optionalChain([flags, 'access', _322 => _322.bucket, 'optionalAccess', _323 => _323.some, 'call', _324 => _324(
10288
10392
  (bucket) => !i18nConfig.buckets[bucket]
10289
10393
  )])) {
10290
10394
  throw new CLIError({
@@ -10373,7 +10477,7 @@ async function renderHero2() {
10373
10477
  // package.json
10374
10478
  var package_default = {
10375
10479
  name: "lingo.dev",
10376
- version: "0.107.2",
10480
+ version: "0.107.4",
10377
10481
  description: "Lingo.dev CLI",
10378
10482
  private: false,
10379
10483
  publishConfig: {
@@ -10648,7 +10752,7 @@ var purge_default = new (0, _interactivecommander.Command)().command("purge").de
10648
10752
  if (options.file && options.file.length) {
10649
10753
  buckets = buckets.map((bucket) => {
10650
10754
  const paths = bucket.paths.filter(
10651
- (bucketPath) => _optionalChain([options, 'access', _324 => _324.file, 'optionalAccess', _325 => _325.some, 'call', _326 => _326((f) => bucketPath.pathPattern.includes(f))])
10755
+ (bucketPath) => _optionalChain([options, 'access', _325 => _325.file, 'optionalAccess', _326 => _326.some, 'call', _327 => _327((f) => bucketPath.pathPattern.includes(f))])
10652
10756
  );
10653
10757
  return { ...bucket, paths };
10654
10758
  }).filter((bucket) => bucket.paths.length > 0);