@localheroai/cli 0.0.74 → 0.0.76-rc.2

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.
@@ -1,4 +1,5 @@
1
1
  import { promises as fs } from 'fs';
2
+ import { glob, escape } from 'glob';
2
3
  import { findFirstExistingPath, findFirstGettextCatalogPath, getDirectoryContents } from './files.js';
3
4
  export const PROJECT_TYPES = {
4
5
  django: {
@@ -20,7 +21,9 @@ export const PROJECT_TYPES = {
20
21
  ]
21
22
  },
22
23
  rails: {
23
- directIndicators: ['config/application.rb', 'Gemfile'],
24
+ // Not Gemfile: React Native and other JS apps ship one for CocoaPods and fastlane.
25
+ // A Ruby project without config/application.rb is still found by the generic scan.
26
+ directIndicators: ['config/application.rb'],
24
27
  defaults: {
25
28
  translationPath: 'config/locales/',
26
29
  filePattern: '**/*.{yml,yaml}'
@@ -63,7 +66,6 @@ export const PROJECT_TYPES = {
63
66
  ]
64
67
  },
65
68
  nextjs: {
66
- directIndicators: ['next.config.js', 'next.config.mjs'],
67
69
  packageCheck: {
68
70
  requires: ['next'],
69
71
  oneOf: ['next-i18next', 'next-translate']
@@ -95,7 +97,7 @@ export const PROJECT_TYPES = {
95
97
  ]
96
98
  },
97
99
  i18next: {
98
- directIndicators: ['i18next.config.js', 'i18n.js', 'i18n/index.js'],
100
+ directIndicators: ['i18next.config.ts', 'i18next.config.js', 'i18n.js', 'i18n/index.js'],
99
101
  packageCheck: {
100
102
  requires: ['i18next']
101
103
  },
@@ -103,8 +105,20 @@ export const PROJECT_TYPES = {
103
105
  translationPath: 'public/locales/',
104
106
  filePattern: '**/*.json'
105
107
  },
108
+ outputConfigFiles: [
109
+ 'i18next.config.ts',
110
+ 'i18next.config.js',
111
+ 'i18next.config.mjs',
112
+ 'i18next-parser.config.js',
113
+ 'i18next-parser.config.mjs',
114
+ 'i18next-parser.config.cjs',
115
+ 'i18next-parser.config.ts'
116
+ ],
106
117
  commonPaths: [
107
118
  'public/locales',
119
+ 'app/i18n/locales',
120
+ 'src/app/i18n/locales',
121
+ 'src/i18n/locales',
108
122
  'src/locales',
109
123
  'locales',
110
124
  'src/i18n',
@@ -248,6 +262,35 @@ async function detectFramework(config) {
248
262
  }
249
263
  return false;
250
264
  }
265
+ const OUTPUT_PATTERN = /\boutput\s*:\s*['"`]([^'"`]+)['"`]/;
266
+ const OUTPUT_PLACEHOLDER = /\{\{|\$[A-Z]/;
267
+ const COMMENTS = /\/\*[\s\S]*?\*\/|^\s*\/\/.*$/gm;
268
+ const PATTERN_SCAN_IGNORE = ['**/node_modules/**', '**/.git/**', '**/vendor/**', '**/dist/**', '**/build/**'];
269
+ // The directory before the first language or namespace placeholder in an
270
+ // i18next-cli (`{{language}}`) or i18next-parser (`$LOCALE`) output template.
271
+ function localeDirFromOutputTemplate(template) {
272
+ const segments = template.replace(/^\.[\\/]/, '').split(/[\\/]/);
273
+ const firstDynamic = segments.findIndex(segment => OUTPUT_PLACEHOLDER.test(segment));
274
+ if (firstDynamic <= 0)
275
+ return null;
276
+ return segments.slice(0, firstDynamic).join('/');
277
+ }
278
+ async function translationPathFromOutputConfig(configFiles) {
279
+ for (const file of configFiles) {
280
+ let content;
281
+ try {
282
+ content = await fs.readFile(file, 'utf8');
283
+ }
284
+ catch {
285
+ continue;
286
+ }
287
+ const template = content.replace(COMMENTS, '').match(OUTPUT_PATTERN)?.[1];
288
+ const localeDir = template ? localeDirFromOutputTemplate(template) : null;
289
+ if (localeDir && await findFirstExistingPath([localeDir]))
290
+ return localeDir;
291
+ }
292
+ return null;
293
+ }
251
294
  export function buildFilePatternFromContents(contents) {
252
295
  const formats = [];
253
296
  if (contents.jsonFiles.length > 0)
@@ -264,6 +307,22 @@ export function buildFilePatternFromContents(contents) {
264
307
  }
265
308
  return `**/*.{${formats.join(',')}}`;
266
309
  }
310
+ // The pattern for a directory the user chose over the detected one, read from the
311
+ // files actually in it. Null when it holds no translation files to go by.
312
+ export async function filePatternForDirectory(dir) {
313
+ const root = dir.replace(/\/+$/, '');
314
+ const files = await glob(`${escape(root)}/**/*.{json,yml,yaml,po,pot}`, { ignore: PATTERN_SCAN_IGNORE });
315
+ if (files.length === 0)
316
+ return null;
317
+ const pattern = buildFilePatternFromContents({
318
+ files,
319
+ jsonFiles: files.filter(f => f.endsWith('.json')),
320
+ yamlFiles: files.filter(f => f.endsWith('.yml') || f.endsWith('.yaml')),
321
+ poFiles: files.filter(f => f.endsWith('.po') || f.endsWith('.pot'))
322
+ });
323
+ const hasPot = files.some(f => f.endsWith('.pot'));
324
+ return hasPot && pattern === '**/*.po' ? '**/*.{po,pot}' : pattern;
325
+ }
267
326
  export async function detectProjectType() {
268
327
  for (const [type, config] of Object.entries(PROJECT_TYPES)) {
269
328
  if (!config.directIndicators?.length && !config.packageCheck)
@@ -271,6 +330,19 @@ export async function detectProjectType() {
271
330
  const isFramework = await detectFramework(config);
272
331
  if (!isFramework)
273
332
  continue;
333
+ const configuredPath = config.outputConfigFiles
334
+ ? await translationPathFromOutputConfig(config.outputConfigFiles)
335
+ : null;
336
+ if (configuredPath) {
337
+ return {
338
+ type,
339
+ defaults: {
340
+ ...config.defaults,
341
+ translationPath: `${configuredPath}/`,
342
+ commonPaths: config.commonPaths
343
+ }
344
+ };
345
+ }
274
346
  if (config.commonPaths) {
275
347
  // For gettext projects the catalog check is authoritative: falling back to a
276
348
  // name-only match would re-propose the directories it just rejected (a Django
@@ -1 +1 @@
1
- {"version":3,"file":"project-detection.js","sourceRoot":"","sources":["../../src/utils/project-detection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-detection.js","sourceRoot":"","sources":["../../src/utils/project-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ import chalk from 'chalk';
2
+ import { createSourceAlignment, SourceAlignmentRequestError } from '../api/source-alignments.js';
3
+ const MAX_ITEMS_PER_REQUEST = 25;
4
+ const NOT_FOUND_STATUS = 404;
5
+ const INVALID_PARAMETERS_STATUS = 422;
6
+ /**
7
+ * Ask the backend to align the translations of reworded source texts, one
8
+ * locale at a time, and write the aligned values into the target files. A
9
+ * locale that fails is left untouched; the rest of the run carries on.
10
+ */
11
+ export async function runSourceAlignment(candidates, request, deps) {
12
+ const result = {
13
+ enabled: false,
14
+ alignedCells: [],
15
+ localeSummaries: {},
16
+ notices: [],
17
+ shortUrl: null
18
+ };
19
+ for (const [locale, localeCandidates] of groupBy(candidates, c => c.locale)) {
20
+ let items = [];
21
+ try {
22
+ for (const chunk of chunked(localeCandidates, MAX_ITEMS_PER_REQUEST)) {
23
+ const response = await createSourceAlignment({
24
+ ...request,
25
+ locale,
26
+ items: chunk.map(toRequestItem)
27
+ });
28
+ if (!response.enabled)
29
+ return result;
30
+ result.enabled = true;
31
+ result.shortUrl = response.job_group?.short_url ?? result.shortUrl;
32
+ addNotices(result, response.notices ?? []);
33
+ items = items.concat(matchedItems(chunk, response.items));
34
+ }
35
+ }
36
+ catch (error) {
37
+ if (error instanceof SourceAlignmentRequestError && error.status === NOT_FOUND_STATUS)
38
+ return result;
39
+ logRequestFailure(deps.console, locale, error);
40
+ continue;
41
+ }
42
+ const { summary, aligned } = classifyItems(localeCandidates, items);
43
+ result.localeSummaries[locale] = summary;
44
+ const written = await writeAlignedCells(aligned, locale, deps);
45
+ summary.aligned = written.length;
46
+ result.alignedCells.push(...written);
47
+ }
48
+ return result;
49
+ }
50
+ export function summarizeAlignedCells(cells) {
51
+ return {
52
+ keysAligned: new Set(cells.map(cell => `${cell.source_path}\0${cell.key}`)).size,
53
+ alignedLanguages: [...new Set(cells.map(cell => cell.locale))]
54
+ };
55
+ }
56
+ export function reportSourceAlignment(result, logger) {
57
+ if (!result.enabled)
58
+ return;
59
+ const lines = Object.entries(result.localeSummaries)
60
+ .map(([locale, summary]) => describeLocale(locale, summary))
61
+ .filter((line) => line !== null);
62
+ if (lines.length > 0) {
63
+ logger.log('» Translations of reworded source texts:');
64
+ for (const line of lines)
65
+ logger.log(` ${line}`);
66
+ }
67
+ for (const notice of result.notices) {
68
+ logger.log(chalk.blue(`ℹ ${notice}`));
69
+ }
70
+ }
71
+ function describeLocale(locale, summary) {
72
+ const parts = [];
73
+ if (summary.aligned > 0)
74
+ parts.push(`${summary.aligned} aligned`);
75
+ if (summary.unchanged > 0)
76
+ parts.push(`${summary.unchanged} already ${summary.unchanged === 1 ? 'fits' : 'fit'}`);
77
+ const reasons = Object.entries(summary.skipped);
78
+ if (reasons.length > 0) {
79
+ const total = reasons.reduce((sum, [, count]) => sum + count, 0);
80
+ const breakdown = reasons.map(([reason, count]) => `${count} ${reason}`).join(', ');
81
+ parts.push(`${total} skipped (${breakdown})`);
82
+ }
83
+ return parts.length > 0 ? `${locale}: ${parts.join(', ')}` : null;
84
+ }
85
+ function classifyItems(candidates, items) {
86
+ const summary = { aligned: 0, unchanged: 0, skipped: {} };
87
+ const aligned = [];
88
+ items.forEach((item, index) => {
89
+ if (item.status === 'aligned' && typeof item.value === 'string') {
90
+ aligned.push({ ...candidates[index], value: item.value });
91
+ }
92
+ else if (item.status === 'unchanged') {
93
+ summary.unchanged += 1;
94
+ }
95
+ else if (item.status === 'skipped') {
96
+ const reason = item.reason || 'unknown';
97
+ summary.skipped[reason] = (summary.skipped[reason] ?? 0) + 1;
98
+ }
99
+ });
100
+ return { summary, aligned };
101
+ }
102
+ async function writeAlignedCells(cells, locale, deps) {
103
+ const written = [];
104
+ for (const [targetPath, fileCells] of groupBy(cells, cell => cell.target_path)) {
105
+ const values = Object.fromEntries(fileCells.map(cell => [cell.key, cell.value]));
106
+ try {
107
+ await deps.updateTranslationFile(targetPath, values, locale, fileCells[0].source_path, undefined, deps.config);
108
+ written.push(...fileCells);
109
+ }
110
+ catch (error) {
111
+ deps.console.log(chalk.yellow(`⚠ Could not write aligned translations to ${targetPath}: ${error.message}`));
112
+ }
113
+ }
114
+ return written;
115
+ }
116
+ function matchedItems(requested, returned) {
117
+ const matches = returned.length === requested.length && returned.every((item, index) => item.key === requested[index].key &&
118
+ item.source_path === requested[index].source_path &&
119
+ item.target_path === requested[index].target_path);
120
+ if (!matches) {
121
+ throw new Error('the response did not match the request');
122
+ }
123
+ return returned;
124
+ }
125
+ function logRequestFailure(logger, locale, error) {
126
+ const message = error.message;
127
+ if (error instanceof SourceAlignmentRequestError && error.status === INVALID_PARAMETERS_STATUS) {
128
+ logger.log(chalk.yellow(`⚠ Alignment request for ${locale} was rejected: ${message}`));
129
+ return;
130
+ }
131
+ logger.log(chalk.yellow(`⚠ Could not align ${locale} translations to the reworded source texts: ${message}. Existing translations were kept.`));
132
+ }
133
+ function addNotices(result, notices) {
134
+ for (const notice of notices) {
135
+ if (!result.notices.includes(notice))
136
+ result.notices.push(notice);
137
+ }
138
+ }
139
+ function toRequestItem(candidate) {
140
+ return {
141
+ source_path: candidate.source_path,
142
+ target_path: candidate.target_path,
143
+ format: candidate.format,
144
+ key: candidate.key,
145
+ previous_source: candidate.previous_source,
146
+ source: candidate.source,
147
+ target_base: candidate.target_base,
148
+ target_current: candidate.target_current
149
+ };
150
+ }
151
+ function groupBy(values, keyOf) {
152
+ const groups = new Map();
153
+ for (const value of values) {
154
+ const key = keyOf(value);
155
+ groups.set(key, [...(groups.get(key) ?? []), value]);
156
+ }
157
+ return groups;
158
+ }
159
+ function chunked(values, size) {
160
+ const chunks = [];
161
+ for (let i = 0; i < values.length; i += size) {
162
+ chunks.push(values.slice(i, i + size));
163
+ }
164
+ return chunks;
165
+ }
166
+ //# sourceMappingURL=source-alignment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-alignment.js","sourceRoot":"","sources":["../../src/utils/source-alignment.ts"],"names":[],"mappings":"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"}
@@ -15,11 +15,12 @@ const PO_FORMATS = new Set(['po', 'pot']);
15
15
  */
16
16
  export function detectTargetChanges(sourceFiles, targetFilesByLocale, config, verbose, ignoreMatcher) {
17
17
  if (!isGitAvailable()) {
18
- return null;
18
+ return skipIngestion('git is not available');
19
19
  }
20
- const resolvedRef = resolveCompareRef(getBaseBranch(config), verbose);
20
+ const baseBranch = getBaseBranch(config);
21
+ const resolvedRef = resolveCompareRef(baseBranch, verbose);
21
22
  if (!resolvedRef) {
22
- return null;
23
+ return skipIngestion(`base branch '${baseBranch}' not found`);
23
24
  }
24
25
  const result = [];
25
26
  let totalChanges = 0;
@@ -38,8 +39,7 @@ export function detectTargetChanges(sourceFiles, targetFilesByLocale, config, ve
38
39
  }
39
40
  totalChanges += changes.length;
40
41
  if (totalChanges > MAX_TOTAL_CHANGES) {
41
- console.log(chalk.yellow(`Skipping translation ingestion: more than ${MAX_TOTAL_CHANGES} changed values`));
42
- return null;
42
+ return skipIngestion(`more than ${MAX_TOTAL_CHANGES} changed values`);
43
43
  }
44
44
  result.push({
45
45
  path: targetFile.path,
@@ -62,8 +62,7 @@ export function detectTargetChanges(sourceFiles, targetFilesByLocale, config, ve
62
62
  continue;
63
63
  totalChanges += updatedChanges.length;
64
64
  if (totalChanges > MAX_TOTAL_CHANGES) {
65
- console.log(chalk.yellow(`Skipping translation ingestion: more than ${MAX_TOTAL_CHANGES} changed values`));
66
- return null;
65
+ return skipIngestion(`more than ${MAX_TOTAL_CHANGES} changed values`);
67
66
  }
68
67
  result.push({
69
68
  path: sourceFile.path,
@@ -77,6 +76,10 @@ export function detectTargetChanges(sourceFiles, targetFilesByLocale, config, ve
77
76
  }
78
77
  return result;
79
78
  }
79
+ function skipIngestion(reason) {
80
+ console.log(chalk.yellow(`Skipping translation ingestion and alignment: ${reason}`));
81
+ return null;
82
+ }
80
83
  function detectFileChanges(targetFile, resolvedRef, verbose) {
81
84
  try {
82
85
  const diff = diffFileKeys(targetFile, resolvedRef, verbose);
@@ -1 +1 @@
1
- {"version":3,"file":"target-changes.js","sourceRoot":"","sources":["../../src/utils/target-changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"target-changes.js","sourceRoot":"","sources":["../../src/utils/target-changes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@localheroai/cli",
3
- "version": "0.0.74",
3
+ "version": "0.0.76-rc.2",
4
4
  "description": "CLI tool for managing translations with LocalHero.ai",
5
5
  "homepage": "https://localhero.ai",
6
6
  "repository": {