i18nsmith 0.1.0 → 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.
- package/build.mjs +25 -0
- package/dist/index.js +109367 -22
- package/dist/index.js.map +7 -1
- package/package.json +10 -6
- package/dist/commands/audit.d.ts +0 -3
- package/dist/commands/audit.d.ts.map +0 -1
- package/dist/commands/audit.js +0 -180
- package/dist/commands/audit.js.map +0 -1
- package/dist/commands/backup.d.ts +0 -6
- package/dist/commands/backup.d.ts.map +0 -1
- package/dist/commands/backup.js +0 -85
- package/dist/commands/backup.js.map +0 -1
- package/dist/commands/check.d.ts +0 -3
- package/dist/commands/check.d.ts.map +0 -1
- package/dist/commands/check.js +0 -151
- package/dist/commands/check.js.map +0 -1
- package/dist/commands/config.d.ts +0 -3
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -235
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/debug-patterns.d.ts +0 -3
- package/dist/commands/debug-patterns.d.ts.map +0 -1
- package/dist/commands/debug-patterns.js +0 -192
- package/dist/commands/debug-patterns.js.map +0 -1
- package/dist/commands/debug-patterns.test.d.ts +0 -2
- package/dist/commands/debug-patterns.test.d.ts.map +0 -1
- package/dist/commands/debug-patterns.test.js +0 -109
- package/dist/commands/debug-patterns.test.js.map +0 -1
- package/dist/commands/diagnose.d.ts +0 -3
- package/dist/commands/diagnose.d.ts.map +0 -1
- package/dist/commands/diagnose.js +0 -117
- package/dist/commands/diagnose.js.map +0 -1
- package/dist/commands/init.d.ts +0 -8
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -450
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/init.test.d.ts +0 -2
- package/dist/commands/init.test.d.ts.map +0 -1
- package/dist/commands/init.test.js +0 -74
- package/dist/commands/init.test.js.map +0 -1
- package/dist/commands/install-hooks.d.ts +0 -3
- package/dist/commands/install-hooks.d.ts.map +0 -1
- package/dist/commands/install-hooks.js +0 -52
- package/dist/commands/install-hooks.js.map +0 -1
- package/dist/commands/preflight.d.ts +0 -7
- package/dist/commands/preflight.d.ts.map +0 -1
- package/dist/commands/preflight.js +0 -417
- package/dist/commands/preflight.js.map +0 -1
- package/dist/commands/preflight.test.d.ts +0 -5
- package/dist/commands/preflight.test.d.ts.map +0 -1
- package/dist/commands/preflight.test.js +0 -108
- package/dist/commands/preflight.test.js.map +0 -1
- package/dist/commands/rename.d.ts +0 -6
- package/dist/commands/rename.d.ts.map +0 -1
- package/dist/commands/rename.js +0 -204
- package/dist/commands/rename.js.map +0 -1
- package/dist/commands/scaffold-adapter.d.ts +0 -3
- package/dist/commands/scaffold-adapter.d.ts.map +0 -1
- package/dist/commands/scaffold-adapter.js +0 -204
- package/dist/commands/scaffold-adapter.js.map +0 -1
- package/dist/commands/scaffold-adapter.test.d.ts +0 -2
- package/dist/commands/scaffold-adapter.test.d.ts.map +0 -1
- package/dist/commands/scaffold-adapter.test.js +0 -102
- package/dist/commands/scaffold-adapter.test.js.map +0 -1
- package/dist/commands/scan.d.ts +0 -3
- package/dist/commands/scan.d.ts.map +0 -1
- package/dist/commands/scan.js +0 -93
- package/dist/commands/scan.js.map +0 -1
- package/dist/commands/sync-seed.test.d.ts +0 -2
- package/dist/commands/sync-seed.test.d.ts.map +0 -1
- package/dist/commands/sync-seed.test.js +0 -86
- package/dist/commands/sync-seed.test.js.map +0 -1
- package/dist/commands/sync.d.ts +0 -3
- package/dist/commands/sync.d.ts.map +0 -1
- package/dist/commands/sync.js +0 -590
- package/dist/commands/sync.js.map +0 -1
- package/dist/commands/transform.d.ts +0 -3
- package/dist/commands/transform.d.ts.map +0 -1
- package/dist/commands/transform.js +0 -114
- package/dist/commands/transform.js.map +0 -1
- package/dist/commands/translate/csv-handler.d.ts +0 -21
- package/dist/commands/translate/csv-handler.d.ts.map +0 -1
- package/dist/commands/translate/csv-handler.js +0 -270
- package/dist/commands/translate/csv-handler.js.map +0 -1
- package/dist/commands/translate/executor.d.ts +0 -31
- package/dist/commands/translate/executor.d.ts.map +0 -1
- package/dist/commands/translate/executor.js +0 -117
- package/dist/commands/translate/executor.js.map +0 -1
- package/dist/commands/translate/index.d.ts +0 -10
- package/dist/commands/translate/index.d.ts.map +0 -1
- package/dist/commands/translate/index.js +0 -170
- package/dist/commands/translate/index.js.map +0 -1
- package/dist/commands/translate/reporter.d.ts +0 -29
- package/dist/commands/translate/reporter.d.ts.map +0 -1
- package/dist/commands/translate/reporter.js +0 -103
- package/dist/commands/translate/reporter.js.map +0 -1
- package/dist/commands/translate/types.d.ts +0 -50
- package/dist/commands/translate/types.d.ts.map +0 -1
- package/dist/commands/translate/types.js +0 -5
- package/dist/commands/translate/types.js.map +0 -1
- package/dist/commands/translate.d.ts +0 -7
- package/dist/commands/translate.d.ts.map +0 -1
- package/dist/commands/translate.js +0 -7
- package/dist/commands/translate.js.map +0 -1
- package/dist/commands/translate.test.d.ts +0 -2
- package/dist/commands/translate.test.d.ts.map +0 -1
- package/dist/commands/translate.test.js +0 -118
- package/dist/commands/translate.test.js.map +0 -1
- package/dist/e2e.test.d.ts +0 -6
- package/dist/e2e.test.d.ts.map +0 -1
- package/dist/e2e.test.js +0 -376
- package/dist/e2e.test.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/integration.test.d.ts +0 -6
- package/dist/integration.test.d.ts.map +0 -1
- package/dist/integration.test.js +0 -320
- package/dist/integration.test.js.map +0 -1
- package/dist/utils/diagnostics-exit.d.ts +0 -12
- package/dist/utils/diagnostics-exit.d.ts.map +0 -1
- package/dist/utils/diagnostics-exit.js +0 -49
- package/dist/utils/diagnostics-exit.js.map +0 -1
- package/dist/utils/diagnostics-exit.test.d.ts +0 -2
- package/dist/utils/diagnostics-exit.test.d.ts.map +0 -1
- package/dist/utils/diagnostics-exit.test.js +0 -40
- package/dist/utils/diagnostics-exit.test.js.map +0 -1
- package/dist/utils/diff-utils.d.ts +0 -4
- package/dist/utils/diff-utils.d.ts.map +0 -1
- package/dist/utils/diff-utils.js +0 -30
- package/dist/utils/diff-utils.js.map +0 -1
- package/dist/utils/diff-utils.test.d.ts +0 -2
- package/dist/utils/diff-utils.test.d.ts.map +0 -1
- package/dist/utils/diff-utils.test.js +0 -30
- package/dist/utils/diff-utils.test.js.map +0 -1
- package/dist/utils/exit-codes.d.ts +0 -142
- package/dist/utils/exit-codes.d.ts.map +0 -1
- package/dist/utils/exit-codes.js +0 -168
- package/dist/utils/exit-codes.js.map +0 -1
- package/dist/utils/package-manager.d.ts +0 -4
- package/dist/utils/package-manager.d.ts.map +0 -1
- package/dist/utils/package-manager.js +0 -40
- package/dist/utils/package-manager.js.map +0 -1
- package/dist/utils/pkg.d.ts +0 -3
- package/dist/utils/pkg.d.ts.map +0 -1
- package/dist/utils/pkg.js +0 -24
- package/dist/utils/pkg.js.map +0 -1
- package/dist/utils/provider-injector.d.ts +0 -36
- package/dist/utils/provider-injector.d.ts.map +0 -1
- package/dist/utils/provider-injector.js +0 -223
- package/dist/utils/provider-injector.js.map +0 -1
- package/dist/utils/provider-injector.test.d.ts +0 -2
- package/dist/utils/provider-injector.test.d.ts.map +0 -1
- package/dist/utils/provider-injector.test.js +0 -67
- package/dist/utils/provider-injector.test.js.map +0 -1
- package/dist/utils/scaffold.d.ts +0 -20
- package/dist/utils/scaffold.d.ts.map +0 -1
- package/dist/utils/scaffold.js +0 -197
- 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.
|
|
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": "
|
|
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
|
}
|
package/dist/commands/audit.d.ts
DELETED
|
@@ -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"}
|
package/dist/commands/audit.js
DELETED
|
@@ -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 +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"}
|
package/dist/commands/backup.js
DELETED
|
@@ -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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"}
|
package/dist/commands/check.d.ts
DELETED
|
@@ -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"}
|
package/dist/commands/check.js
DELETED
|
@@ -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 +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"}
|