i18nsmith 0.1.7 → 0.1.8

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.
Files changed (158) hide show
  1. package/build.mjs +25 -0
  2. package/dist/index.js +109367 -22
  3. package/dist/index.js.map +7 -1
  4. package/package.json +10 -6
  5. package/dist/commands/audit.d.ts +0 -3
  6. package/dist/commands/audit.d.ts.map +0 -1
  7. package/dist/commands/audit.js +0 -180
  8. package/dist/commands/audit.js.map +0 -1
  9. package/dist/commands/backup.d.ts +0 -6
  10. package/dist/commands/backup.d.ts.map +0 -1
  11. package/dist/commands/backup.js +0 -85
  12. package/dist/commands/backup.js.map +0 -1
  13. package/dist/commands/check.d.ts +0 -3
  14. package/dist/commands/check.d.ts.map +0 -1
  15. package/dist/commands/check.js +0 -151
  16. package/dist/commands/check.js.map +0 -1
  17. package/dist/commands/config.d.ts +0 -3
  18. package/dist/commands/config.d.ts.map +0 -1
  19. package/dist/commands/config.js +0 -235
  20. package/dist/commands/config.js.map +0 -1
  21. package/dist/commands/debug-patterns.d.ts +0 -3
  22. package/dist/commands/debug-patterns.d.ts.map +0 -1
  23. package/dist/commands/debug-patterns.js +0 -192
  24. package/dist/commands/debug-patterns.js.map +0 -1
  25. package/dist/commands/debug-patterns.test.d.ts +0 -2
  26. package/dist/commands/debug-patterns.test.d.ts.map +0 -1
  27. package/dist/commands/debug-patterns.test.js +0 -109
  28. package/dist/commands/debug-patterns.test.js.map +0 -1
  29. package/dist/commands/diagnose.d.ts +0 -3
  30. package/dist/commands/diagnose.d.ts.map +0 -1
  31. package/dist/commands/diagnose.js +0 -117
  32. package/dist/commands/diagnose.js.map +0 -1
  33. package/dist/commands/init.d.ts +0 -8
  34. package/dist/commands/init.d.ts.map +0 -1
  35. package/dist/commands/init.js +0 -450
  36. package/dist/commands/init.js.map +0 -1
  37. package/dist/commands/init.test.d.ts +0 -2
  38. package/dist/commands/init.test.d.ts.map +0 -1
  39. package/dist/commands/init.test.js +0 -74
  40. package/dist/commands/init.test.js.map +0 -1
  41. package/dist/commands/install-hooks.d.ts +0 -3
  42. package/dist/commands/install-hooks.d.ts.map +0 -1
  43. package/dist/commands/install-hooks.js +0 -52
  44. package/dist/commands/install-hooks.js.map +0 -1
  45. package/dist/commands/preflight.d.ts +0 -7
  46. package/dist/commands/preflight.d.ts.map +0 -1
  47. package/dist/commands/preflight.js +0 -417
  48. package/dist/commands/preflight.js.map +0 -1
  49. package/dist/commands/preflight.test.d.ts +0 -5
  50. package/dist/commands/preflight.test.d.ts.map +0 -1
  51. package/dist/commands/preflight.test.js +0 -108
  52. package/dist/commands/preflight.test.js.map +0 -1
  53. package/dist/commands/rename.d.ts +0 -6
  54. package/dist/commands/rename.d.ts.map +0 -1
  55. package/dist/commands/rename.js +0 -204
  56. package/dist/commands/rename.js.map +0 -1
  57. package/dist/commands/scaffold-adapter.d.ts +0 -3
  58. package/dist/commands/scaffold-adapter.d.ts.map +0 -1
  59. package/dist/commands/scaffold-adapter.js +0 -204
  60. package/dist/commands/scaffold-adapter.js.map +0 -1
  61. package/dist/commands/scaffold-adapter.test.d.ts +0 -2
  62. package/dist/commands/scaffold-adapter.test.d.ts.map +0 -1
  63. package/dist/commands/scaffold-adapter.test.js +0 -102
  64. package/dist/commands/scaffold-adapter.test.js.map +0 -1
  65. package/dist/commands/scan.d.ts +0 -3
  66. package/dist/commands/scan.d.ts.map +0 -1
  67. package/dist/commands/scan.js +0 -93
  68. package/dist/commands/scan.js.map +0 -1
  69. package/dist/commands/sync-seed.test.d.ts +0 -2
  70. package/dist/commands/sync-seed.test.d.ts.map +0 -1
  71. package/dist/commands/sync-seed.test.js +0 -86
  72. package/dist/commands/sync-seed.test.js.map +0 -1
  73. package/dist/commands/sync.d.ts +0 -3
  74. package/dist/commands/sync.d.ts.map +0 -1
  75. package/dist/commands/sync.js +0 -590
  76. package/dist/commands/sync.js.map +0 -1
  77. package/dist/commands/transform.d.ts +0 -3
  78. package/dist/commands/transform.d.ts.map +0 -1
  79. package/dist/commands/transform.js +0 -114
  80. package/dist/commands/transform.js.map +0 -1
  81. package/dist/commands/translate/csv-handler.d.ts +0 -21
  82. package/dist/commands/translate/csv-handler.d.ts.map +0 -1
  83. package/dist/commands/translate/csv-handler.js +0 -270
  84. package/dist/commands/translate/csv-handler.js.map +0 -1
  85. package/dist/commands/translate/executor.d.ts +0 -31
  86. package/dist/commands/translate/executor.d.ts.map +0 -1
  87. package/dist/commands/translate/executor.js +0 -117
  88. package/dist/commands/translate/executor.js.map +0 -1
  89. package/dist/commands/translate/index.d.ts +0 -10
  90. package/dist/commands/translate/index.d.ts.map +0 -1
  91. package/dist/commands/translate/index.js +0 -170
  92. package/dist/commands/translate/index.js.map +0 -1
  93. package/dist/commands/translate/reporter.d.ts +0 -29
  94. package/dist/commands/translate/reporter.d.ts.map +0 -1
  95. package/dist/commands/translate/reporter.js +0 -103
  96. package/dist/commands/translate/reporter.js.map +0 -1
  97. package/dist/commands/translate/types.d.ts +0 -50
  98. package/dist/commands/translate/types.d.ts.map +0 -1
  99. package/dist/commands/translate/types.js +0 -5
  100. package/dist/commands/translate/types.js.map +0 -1
  101. package/dist/commands/translate.d.ts +0 -7
  102. package/dist/commands/translate.d.ts.map +0 -1
  103. package/dist/commands/translate.js +0 -7
  104. package/dist/commands/translate.js.map +0 -1
  105. package/dist/commands/translate.test.d.ts +0 -2
  106. package/dist/commands/translate.test.d.ts.map +0 -1
  107. package/dist/commands/translate.test.js +0 -118
  108. package/dist/commands/translate.test.js.map +0 -1
  109. package/dist/e2e.test.d.ts +0 -6
  110. package/dist/e2e.test.d.ts.map +0 -1
  111. package/dist/e2e.test.js +0 -376
  112. package/dist/e2e.test.js.map +0 -1
  113. package/dist/index.d.ts +0 -4
  114. package/dist/index.d.ts.map +0 -1
  115. package/dist/integration.test.d.ts +0 -6
  116. package/dist/integration.test.d.ts.map +0 -1
  117. package/dist/integration.test.js +0 -320
  118. package/dist/integration.test.js.map +0 -1
  119. package/dist/utils/diagnostics-exit.d.ts +0 -12
  120. package/dist/utils/diagnostics-exit.d.ts.map +0 -1
  121. package/dist/utils/diagnostics-exit.js +0 -49
  122. package/dist/utils/diagnostics-exit.js.map +0 -1
  123. package/dist/utils/diagnostics-exit.test.d.ts +0 -2
  124. package/dist/utils/diagnostics-exit.test.d.ts.map +0 -1
  125. package/dist/utils/diagnostics-exit.test.js +0 -40
  126. package/dist/utils/diagnostics-exit.test.js.map +0 -1
  127. package/dist/utils/diff-utils.d.ts +0 -4
  128. package/dist/utils/diff-utils.d.ts.map +0 -1
  129. package/dist/utils/diff-utils.js +0 -30
  130. package/dist/utils/diff-utils.js.map +0 -1
  131. package/dist/utils/diff-utils.test.d.ts +0 -2
  132. package/dist/utils/diff-utils.test.d.ts.map +0 -1
  133. package/dist/utils/diff-utils.test.js +0 -30
  134. package/dist/utils/diff-utils.test.js.map +0 -1
  135. package/dist/utils/exit-codes.d.ts +0 -142
  136. package/dist/utils/exit-codes.d.ts.map +0 -1
  137. package/dist/utils/exit-codes.js +0 -168
  138. package/dist/utils/exit-codes.js.map +0 -1
  139. package/dist/utils/package-manager.d.ts +0 -4
  140. package/dist/utils/package-manager.d.ts.map +0 -1
  141. package/dist/utils/package-manager.js +0 -40
  142. package/dist/utils/package-manager.js.map +0 -1
  143. package/dist/utils/pkg.d.ts +0 -3
  144. package/dist/utils/pkg.d.ts.map +0 -1
  145. package/dist/utils/pkg.js +0 -24
  146. package/dist/utils/pkg.js.map +0 -1
  147. package/dist/utils/provider-injector.d.ts +0 -36
  148. package/dist/utils/provider-injector.d.ts.map +0 -1
  149. package/dist/utils/provider-injector.js +0 -223
  150. package/dist/utils/provider-injector.js.map +0 -1
  151. package/dist/utils/provider-injector.test.d.ts +0 -2
  152. package/dist/utils/provider-injector.test.d.ts.map +0 -1
  153. package/dist/utils/provider-injector.test.js +0 -67
  154. package/dist/utils/provider-injector.test.js.map +0 -1
  155. package/dist/utils/scaffold.d.ts +0 -20
  156. package/dist/utils/scaffold.d.ts.map +0 -1
  157. package/dist/utils/scaffold.js +0 -197
  158. package/dist/utils/scaffold.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "i18nsmith",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "CLI for i18nsmith",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -15,14 +15,11 @@
15
15
  }
16
16
  },
17
17
  "scripts": {
18
- "build": "tsc -b",
18
+ "build": "node build.mjs",
19
+ "typecheck": "tsc --noEmit",
19
20
  "test": "vitest run"
20
21
  },
21
22
  "dependencies": {
22
- "@i18nsmith/core": "workspace:*",
23
- "@i18nsmith/transformer": "workspace:*",
24
- "@i18nsmith/translation": "workspace:*",
25
- "@i18nsmith/translator-mock": "workspace:*",
26
23
  "chalk": "^5.0.0",
27
24
  "commander": "^11.0.0",
28
25
  "diff": "^8.0.2",
@@ -31,5 +28,12 @@
31
28
  "p-limit": "^7.2.0",
32
29
  "p-retry": "^7.1.0",
33
30
  "ts-morph": "^21.0.0"
31
+ },
32
+ "devDependencies": {
33
+ "@i18nsmith/core": "workspace:*",
34
+ "@i18nsmith/transformer": "workspace:*",
35
+ "@i18nsmith/translation": "workspace:*",
36
+ "@i18nsmith/translator-mock": "workspace:*",
37
+ "esbuild": "^0.25.0"
34
38
  }
35
39
  }
@@ -1,3 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerAudit(program: Command): void;
3
- //# sourceMappingURL=audit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0CzC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QA4L7C"}
@@ -1,180 +0,0 @@
1
- import fs from 'fs/promises';
2
- import path from 'path';
3
- import chalk from 'chalk';
4
- import { loadConfig, LocaleStore, KeyValidator, LocaleValidator, SUSPICIOUS_KEY_REASON_DESCRIPTIONS, } from '@i18nsmith/core';
5
- export function registerAudit(program) {
6
- program
7
- .command('audit')
8
- .description('Audit locale files for suspicious keys, key=value patterns, and quality issues')
9
- .option('-c, --config <path>', 'Path to i18nsmith config file', 'i18n.config.json')
10
- .option('-l, --locale <locales...>', 'Specific locale(s) to audit (defaults to all)')
11
- .option('--json', 'Print raw JSON results', false)
12
- .option('--report <path>', 'Write JSON report to a file')
13
- .option('--strict', 'Exit with error code if any issues found', false)
14
- .option('--duplicates', 'Check for duplicate values (consolidation opportunities)', false)
15
- .option('--inconsistent', 'Check for inconsistent key naming patterns', false)
16
- .option('--orphaned', 'Check for orphaned namespaces with few keys', false)
17
- .action(async (options) => {
18
- console.log(chalk.blue('Auditing locale files...'));
19
- try {
20
- const config = await loadConfig(options.config);
21
- const localesDir = path.resolve(process.cwd(), config.localesDir ?? 'locales');
22
- const localeStore = new LocaleStore(localesDir, {
23
- sortKeys: config.locales?.sortKeys ?? 'alphabetical',
24
- });
25
- const keyValidator = new KeyValidator(config.sync?.suspiciousKeyPolicy ?? 'skip');
26
- const localeValidator = new LocaleValidator({
27
- delimiter: config.locales?.delimiter ?? '.',
28
- });
29
- // Determine which locales to audit
30
- let localesToAudit = options.locale ?? [];
31
- if (localesToAudit.length === 0) {
32
- localesToAudit = [config.sourceLanguage ?? 'en', ...(config.targetLanguages ?? [])];
33
- }
34
- // Enable all quality checks if none specified
35
- const runQualityChecks = options.duplicates || options.inconsistent || options.orphaned;
36
- const checkDuplicates = options.duplicates || !runQualityChecks;
37
- const checkInconsistent = options.inconsistent;
38
- const checkOrphaned = options.orphaned;
39
- const results = [];
40
- const allKeys = new Set();
41
- // First pass: collect all keys
42
- for (const locale of localesToAudit) {
43
- const data = await localeStore.get(locale);
44
- for (const key of Object.keys(data)) {
45
- allKeys.add(key);
46
- }
47
- }
48
- // Second pass: run audits
49
- for (const locale of localesToAudit) {
50
- const data = await localeStore.get(locale);
51
- const keys = Object.keys(data);
52
- const issues = [];
53
- const qualityIssues = [];
54
- // Suspicious key detection
55
- for (const key of keys) {
56
- const value = data[key];
57
- const analysis = keyValidator.analyzeWithValue(key, value);
58
- if (analysis.suspicious && analysis.reason) {
59
- issues.push({
60
- key,
61
- value: value.length > 50 ? `${value.slice(0, 47)}...` : value,
62
- reason: analysis.reason,
63
- description: SUSPICIOUS_KEY_REASON_DESCRIPTIONS[analysis.reason] ?? 'Unknown issue',
64
- suggestion: keyValidator.suggestFix(key, analysis.reason),
65
- });
66
- }
67
- }
68
- // Quality checks
69
- if (checkDuplicates) {
70
- const duplicates = localeValidator.detectDuplicateValues(locale, data);
71
- for (const dup of duplicates) {
72
- qualityIssues.push({
73
- type: 'duplicate-value',
74
- description: `Value "${dup.value.slice(0, 40)}${dup.value.length > 40 ? '...' : ''}" used by ${dup.keys.length} keys`,
75
- keys: dup.keys,
76
- suggestion: 'Consider consolidating to a single key',
77
- });
78
- }
79
- }
80
- if (checkInconsistent && locale === localesToAudit[0]) {
81
- // Only check inconsistent keys once (using all keys)
82
- const inconsistent = localeValidator.detectInconsistentKeys(Array.from(allKeys));
83
- for (const inc of inconsistent) {
84
- qualityIssues.push({
85
- type: 'inconsistent-key',
86
- description: inc.pattern,
87
- keys: inc.variants,
88
- suggestion: inc.suggestion,
89
- });
90
- }
91
- }
92
- if (checkOrphaned && locale === localesToAudit[0]) {
93
- // Only check orphaned namespaces once (using all keys)
94
- const orphaned = localeValidator.detectOrphanedNamespaces(Array.from(allKeys));
95
- for (const orph of orphaned) {
96
- qualityIssues.push({
97
- type: 'orphaned-namespace',
98
- description: `Namespace "${orph.namespace}" has only ${orph.keyCount} key(s)`,
99
- keys: orph.keys,
100
- suggestion: 'Consider merging into a related namespace',
101
- });
102
- }
103
- }
104
- results.push({
105
- locale,
106
- totalKeys: keys.length,
107
- issues,
108
- qualityIssues,
109
- });
110
- }
111
- const totalIssues = results.reduce((sum, r) => sum + r.issues.length, 0);
112
- const totalQualityIssues = results.reduce((sum, r) => sum + r.qualityIssues.length, 0);
113
- if (options.report) {
114
- const outputPath = path.resolve(process.cwd(), options.report);
115
- await fs.mkdir(path.dirname(outputPath), { recursive: true });
116
- await fs.writeFile(outputPath, JSON.stringify({ results, totalIssues, totalQualityIssues }, null, 2));
117
- console.log(chalk.green(`Audit report written to ${outputPath}`));
118
- }
119
- if (options.json) {
120
- console.log(JSON.stringify({ results, totalIssues, totalQualityIssues }, null, 2));
121
- }
122
- else {
123
- // Pretty print results
124
- for (const result of results) {
125
- const hasIssues = result.issues.length > 0 || result.qualityIssues.length > 0;
126
- if (!hasIssues) {
127
- console.log(chalk.green(`✓ ${result.locale}.json: ${result.totalKeys} keys, no issues`));
128
- }
129
- else {
130
- console.log(chalk.yellow(`⚠ ${result.locale}.json: ${result.totalKeys} keys`));
131
- // Suspicious keys
132
- if (result.issues.length > 0) {
133
- console.log(chalk.yellow(` Suspicious keys: ${result.issues.length}`));
134
- for (const issue of result.issues) {
135
- console.log(chalk.dim(` - "${issue.key}"`));
136
- console.log(chalk.dim(` ${issue.description}`));
137
- if (issue.suggestion) {
138
- console.log(chalk.dim(` Suggestion: ${issue.suggestion}`));
139
- }
140
- }
141
- }
142
- // Quality issues
143
- if (result.qualityIssues.length > 0) {
144
- console.log(chalk.cyan(` Quality checks: ${result.qualityIssues.length}`));
145
- for (const issue of result.qualityIssues) {
146
- const typeLabel = issue.type === 'duplicate-value' ? '📋' :
147
- issue.type === 'inconsistent-key' ? '🔀' : '📦';
148
- console.log(chalk.dim(` ${typeLabel} ${issue.description}`));
149
- if (issue.suggestion) {
150
- console.log(chalk.dim(` ${issue.suggestion}`));
151
- }
152
- }
153
- }
154
- }
155
- }
156
- console.log();
157
- if (totalIssues === 0 && totalQualityIssues === 0) {
158
- console.log(chalk.green('✓ No issues found in locale files'));
159
- }
160
- else {
161
- if (totalIssues > 0) {
162
- console.log(chalk.yellow(`Found ${totalIssues} suspicious key(s)`));
163
- }
164
- if (totalQualityIssues > 0) {
165
- console.log(chalk.cyan(`Found ${totalQualityIssues} quality issue(s)`));
166
- }
167
- }
168
- }
169
- if (options.strict && totalIssues > 0) {
170
- console.error(chalk.red(`\nAudit failed with ${totalIssues} issue(s). Use --strict=false to allow.`));
171
- process.exitCode = 1;
172
- }
173
- }
174
- catch (error) {
175
- console.error(chalk.red('Audit failed:'), error.message);
176
- process.exitCode = 1;
177
- }
178
- });
179
- }
180
- //# sourceMappingURL=audit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { Command } from 'commander';
2
- /**
3
- * Registers backup-related commands (backup-list, backup-restore)
4
- */
5
- export declare function registerBackup(program: Command): void;
6
- //# sourceMappingURL=backup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuFrD"}
@@ -1,85 +0,0 @@
1
- import chalk from 'chalk';
2
- import inquirer from 'inquirer';
3
- import { listBackups, restoreBackup } from '@i18nsmith/core';
4
- /**
5
- * Registers backup-related commands (backup-list, backup-restore)
6
- */
7
- export function registerBackup(program) {
8
- program
9
- .command('backup-list')
10
- .description('List available locale file backups')
11
- .option('--backup-dir <path>', 'Custom backup directory (default: .i18nsmith-backup)')
12
- .action(async (options) => {
13
- try {
14
- const workspaceRoot = process.cwd();
15
- const backups = await listBackups(workspaceRoot, { backupDir: options.backupDir });
16
- if (backups.length === 0) {
17
- console.log(chalk.yellow('No backups found.'));
18
- console.log(chalk.gray('Backups are created automatically when using --write --prune'));
19
- return;
20
- }
21
- console.log(chalk.blue(`Found ${backups.length} backup(s):\n`));
22
- for (const backup of backups) {
23
- const date = new Date(backup.createdAt);
24
- const formattedDate = date.toLocaleString();
25
- console.log(` ${chalk.cyan(backup.timestamp)} ${formattedDate} (${backup.fileCount} files)`);
26
- }
27
- console.log(chalk.gray(`\nRestore a backup with: i18nsmith backup-restore <timestamp>`));
28
- }
29
- catch (err) {
30
- console.error(chalk.red('Error listing backups:'), err instanceof Error ? err.message : err);
31
- process.exitCode = 1;
32
- }
33
- });
34
- program
35
- .command('backup-restore')
36
- .description('Restore locale files from a previous backup')
37
- .argument('<timestamp>', 'Backup timestamp (from backup-list) or "latest" for most recent')
38
- .option('--backup-dir <path>', 'Custom backup directory (default: .i18nsmith-backup)')
39
- .action(async (timestamp, options) => {
40
- try {
41
- const workspaceRoot = process.cwd();
42
- const backups = await listBackups(workspaceRoot, { backupDir: options.backupDir });
43
- if (backups.length === 0) {
44
- console.error(chalk.red('No backups found.'));
45
- process.exitCode = 1;
46
- return;
47
- }
48
- let targetBackup = timestamp === 'latest'
49
- ? backups[0]
50
- : backups.find((b) => b.timestamp === timestamp);
51
- if (!targetBackup) {
52
- console.error(chalk.red(`Backup not found: ${timestamp}`));
53
- console.log(chalk.gray('Available backups:'));
54
- for (const b of backups.slice(0, 5)) {
55
- console.log(` ${b.timestamp}`);
56
- }
57
- process.exitCode = 1;
58
- return;
59
- }
60
- // Confirm restore
61
- const { confirmed } = await inquirer.prompt([
62
- {
63
- type: 'confirm',
64
- name: 'confirmed',
65
- message: `Restore ${targetBackup.fileCount} locale files from backup ${targetBackup.timestamp}? This will overwrite current locale files.`,
66
- default: false,
67
- },
68
- ]);
69
- if (!confirmed) {
70
- console.log(chalk.yellow('Restore cancelled.'));
71
- return;
72
- }
73
- const result = await restoreBackup(targetBackup.path, workspaceRoot);
74
- console.log(chalk.green(`\n✅ ${result.summary}`));
75
- for (const file of result.restored) {
76
- console.log(chalk.gray(` Restored: ${file}`));
77
- }
78
- }
79
- catch (err) {
80
- console.error(chalk.red('Error restoring backup:'), err instanceof Error ? err.message : err);
81
- process.exitCode = 1;
82
- }
83
- });
84
- }
85
- //# sourceMappingURL=backup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerCheck(program: Command): void;
3
- //# sourceMappingURL=check.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiGzC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QA0F7C"}
@@ -1,151 +0,0 @@
1
- import fs from 'fs/promises';
2
- import path from 'path';
3
- import chalk from 'chalk';
4
- import { loadConfigWithMeta, CheckRunner } from '@i18nsmith/core';
5
- import { printLocaleDiffs } from '../utils/diff-utils.js';
6
- import { getDiagnosisExitSignal } from '../utils/diagnostics-exit.js';
7
- import { CHECK_EXIT_CODES } from '../utils/exit-codes.js';
8
- const collectAssumedKeys = (value, previous) => {
9
- const tokens = value
10
- .split(',')
11
- .map((token) => token.trim())
12
- .filter(Boolean);
13
- return [...previous, ...tokens];
14
- };
15
- const collectTargetPatterns = (value, previous) => {
16
- const list = Array.isArray(value) ? value : [value];
17
- const tokens = list
18
- .flatMap((entry) => entry.split(','))
19
- .map((token) => token.trim())
20
- .filter(Boolean);
21
- return [...previous, ...tokens];
22
- };
23
- function printCheckSummary(summary) {
24
- const report = summary.diagnostics;
25
- console.log(chalk.green(`Locales directory: ${report.localesDir}`));
26
- console.log(chalk.gray(`Detected locales: ${report.detectedLocales.length ? report.detectedLocales.join(', ') : 'none'}`));
27
- console.log(chalk.gray(`Runtime packages: ${report.runtimePackages.length ? report.runtimePackages.map((pkg) => pkg.name).join(', ') : 'none'}`));
28
- console.log(chalk.gray(`Translation references scanned: ${summary.sync.references.length} across ${summary.sync.filesScanned} file${summary.sync.filesScanned === 1 ? '' : 's'}`));
29
- if (summary.actionableItems.length) {
30
- console.log(chalk.blue('\nActionable items'));
31
- summary.actionableItems.slice(0, 25).forEach((item) => {
32
- const label = formatSeverityLabel(item.severity);
33
- console.log(` • [${label}] ${item.message}`);
34
- });
35
- if (summary.actionableItems.length > 25) {
36
- console.log(chalk.gray(` ...and ${summary.actionableItems.length - 25} more.`));
37
- }
38
- }
39
- else {
40
- console.log(chalk.green('\nNo actionable issues detected.'));
41
- }
42
- if (summary.suggestedCommands.length) {
43
- console.log(chalk.blue('\nSuggested commands'));
44
- summary.suggestedCommands.forEach((suggestion) => {
45
- const label = formatSeverityLabel(suggestion.severity);
46
- console.log(` • [${label}] ${suggestion.label}`);
47
- console.log(` ${chalk.cyan(suggestion.command)}`);
48
- console.log(chalk.gray(` ${suggestion.reason}`));
49
- });
50
- }
51
- else {
52
- console.log(chalk.gray('\nNo automated suggestions—review actionable items above.'));
53
- }
54
- }
55
- function formatSeverityLabel(severity) {
56
- if (severity === 'error') {
57
- return chalk.red('ERROR');
58
- }
59
- if (severity === 'warn') {
60
- return chalk.yellow('WARN');
61
- }
62
- return chalk.cyan('INFO');
63
- }
64
- export function registerCheck(program) {
65
- program
66
- .command('check')
67
- .description('Run diagnostics plus a sync dry-run for a consolidated health report')
68
- .option('-c, --config <path>', 'Path to i18nsmith config file', 'i18n.config.json')
69
- .option('--json', 'Print raw JSON results', false)
70
- .option('--report <path>', 'Write JSON summary to a file (for CI or editors)')
71
- .option('--fail-on <level>', 'Failure threshold: none | conflicts | warnings', 'conflicts')
72
- .option('--assume <keys...>', 'List of runtime keys to assume (comma-separated)', collectAssumedKeys, [])
73
- .option('--assume-globs <patterns...>', 'Glob patterns for dynamic key namespaces (e.g., errors.*, navigation.**)', collectTargetPatterns, [])
74
- .option('--validate-interpolations', 'Validate interpolation placeholders across locales', false)
75
- .option('--no-empty-values', 'Treat empty or placeholder locale values as failures')
76
- .option('--diff', 'Include locale diff previews for missing/unused key fixes', false)
77
- .option('--invalidate-cache', 'Ignore cached sync analysis and rescan all source files', false)
78
- .option('--target <pattern...>', 'Limit translation reference scanning to specific files or patterns', collectTargetPatterns, [])
79
- .option('--prefer-diagnostics-exit', 'Prefer diagnostics exit codes when --fail-on=conflicts and blocking conflicts exist', false)
80
- .action(async (options) => {
81
- console.log(chalk.blue('Running guided repository health check...'));
82
- try {
83
- const { config, projectRoot, configPath } = await loadConfigWithMeta(options.config);
84
- // Inform user if config was found in a parent directory
85
- const cwd = process.cwd();
86
- if (projectRoot !== cwd) {
87
- console.log(chalk.gray(`Config found at ${path.relative(cwd, configPath)}`));
88
- console.log(chalk.gray(`Using project root: ${projectRoot}\n`));
89
- }
90
- // Merge --assume-globs with config
91
- if (options.assumeGlobs?.length) {
92
- config.sync = config.sync ?? {};
93
- config.sync.dynamicKeyGlobs = [
94
- ...(config.sync.dynamicKeyGlobs ?? []),
95
- ...options.assumeGlobs,
96
- ];
97
- }
98
- const runner = new CheckRunner(config, { workspaceRoot: projectRoot });
99
- const summary = await runner.run({
100
- assumedKeys: options.assume,
101
- validateInterpolations: options.validateInterpolations,
102
- emptyValuePolicy: options.emptyValues === false ? 'fail' : undefined,
103
- diff: options.diff,
104
- targets: options.target,
105
- invalidateCache: options.invalidateCache,
106
- });
107
- if (options.report) {
108
- const outputPath = path.resolve(process.cwd(), options.report);
109
- await fs.mkdir(path.dirname(outputPath), { recursive: true });
110
- await fs.writeFile(outputPath, JSON.stringify(summary, null, 2));
111
- console.log(chalk.green(`Health report written to ${outputPath}`));
112
- }
113
- if (options.json) {
114
- console.log(JSON.stringify(summary, null, 2));
115
- }
116
- else {
117
- printCheckSummary(summary);
118
- if (options.diff) {
119
- printLocaleDiffs(summary.sync.diffs);
120
- }
121
- }
122
- // If diagnostics discovered blocking conflicts, prefer the diagnostics' exit
123
- // signal so CI can branch on specific failure modes (missing source locale,
124
- // invalid JSON, etc.). This mirrors `i18nsmith diagnose` behavior.
125
- // Only when --prefer-diagnostics-exit is true and --fail-on=conflicts.
126
- const diagExit = getDiagnosisExitSignal(summary.diagnostics);
127
- if (diagExit && options.preferDiagnosticsExit && options.failOn === 'conflicts') {
128
- console.error(chalk.red(`\nBlocking diagnostic conflict detected: ${diagExit.reason}`));
129
- console.error(chalk.red(`Exit code ${diagExit.code}`));
130
- process.exitCode = diagExit.code;
131
- return;
132
- }
133
- const failMode = (options.failOn ?? 'conflicts').toLowerCase();
134
- const hasErrors = summary.actionableItems.some((item) => item.severity === 'error');
135
- const hasWarnings = summary.actionableItems.some((item) => item.severity === 'warn');
136
- if (failMode === 'conflicts' && hasErrors) {
137
- console.error(chalk.red('\nBlocking issues detected. Resolve the actionable errors above.'));
138
- process.exitCode = CHECK_EXIT_CODES.CONFLICTS;
139
- }
140
- else if (failMode === 'warnings' && (hasErrors || hasWarnings)) {
141
- console.error(chalk.red('\nWarnings detected. Use --fail-on conflicts to limit failures to blocking issues.'));
142
- process.exitCode = CHECK_EXIT_CODES.WARNINGS;
143
- }
144
- }
145
- catch (error) {
146
- console.error(chalk.red('Check failed:'), error.message);
147
- process.exitCode = 1;
148
- }
149
- });
150
- }
151
- //# sourceMappingURL=check.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerConfig(program: Command): void;
3
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6GzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QAsJ9C"}