@better-i18n/cli 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/analyzer/dynamic-matcher.d.ts +53 -0
  2. package/dist/analyzer/dynamic-matcher.d.ts.map +1 -0
  3. package/dist/analyzer/dynamic-matcher.js +93 -0
  4. package/dist/analyzer/dynamic-matcher.js.map +1 -0
  5. package/dist/analyzer/index.d.ts +13 -4
  6. package/dist/analyzer/index.d.ts.map +1 -1
  7. package/dist/analyzer/index.js +165 -22
  8. package/dist/analyzer/index.js.map +1 -1
  9. package/dist/analyzer/rules/data-structure.d.ts +13 -0
  10. package/dist/analyzer/rules/data-structure.d.ts.map +1 -0
  11. package/dist/analyzer/rules/data-structure.js +264 -0
  12. package/dist/analyzer/rules/data-structure.js.map +1 -0
  13. package/dist/analyzer/rules/index.d.ts +10 -7
  14. package/dist/analyzer/rules/index.d.ts.map +1 -1
  15. package/dist/analyzer/rules/index.js +10 -7
  16. package/dist/analyzer/rules/index.js.map +1 -1
  17. package/dist/analyzer/rules/jsx-text.js +1 -1
  18. package/dist/analyzer/rules/jsx-text.js.map +1 -1
  19. package/dist/analyzer/rules/translation-function.d.ts.map +1 -1
  20. package/dist/analyzer/rules/translation-function.js +94 -6
  21. package/dist/analyzer/rules/translation-function.js.map +1 -1
  22. package/dist/analyzer/types.d.ts +28 -3
  23. package/dist/analyzer/types.d.ts.map +1 -1
  24. package/dist/commands/check.d.ts +14 -0
  25. package/dist/commands/check.d.ts.map +1 -0
  26. package/dist/commands/check.js +70 -0
  27. package/dist/commands/check.js.map +1 -0
  28. package/dist/commands/doctor.d.ts +20 -0
  29. package/dist/commands/doctor.d.ts.map +1 -0
  30. package/dist/commands/doctor.js +77 -0
  31. package/dist/commands/doctor.js.map +1 -0
  32. package/dist/commands/sync.d.ts +1 -0
  33. package/dist/commands/sync.d.ts.map +1 -1
  34. package/dist/commands/sync.js +158 -272
  35. package/dist/commands/sync.js.map +1 -1
  36. package/dist/context/detector.js +1 -1
  37. package/dist/context/detector.js.map +1 -1
  38. package/dist/context/oidc.d.ts +33 -0
  39. package/dist/context/oidc.d.ts.map +1 -0
  40. package/dist/context/oidc.js +63 -0
  41. package/dist/context/oidc.js.map +1 -0
  42. package/dist/doctor/index.d.ts +65 -0
  43. package/dist/doctor/index.d.ts.map +1 -0
  44. package/dist/doctor/index.js +252 -0
  45. package/dist/doctor/index.js.map +1 -0
  46. package/dist/doctor/project-discovery.d.ts +37 -0
  47. package/dist/doctor/project-discovery.d.ts.map +1 -0
  48. package/dist/doctor/project-discovery.js +140 -0
  49. package/dist/doctor/project-discovery.js.map +1 -0
  50. package/dist/doctor/score.d.ts +41 -0
  51. package/dist/doctor/score.d.ts.map +1 -0
  52. package/dist/doctor/score.js +107 -0
  53. package/dist/doctor/score.js.map +1 -0
  54. package/dist/index.js +35 -0
  55. package/dist/index.js.map +1 -1
  56. package/dist/reporters/doctor-eslint.d.ts +17 -0
  57. package/dist/reporters/doctor-eslint.d.ts.map +1 -0
  58. package/dist/reporters/doctor-eslint.js +139 -0
  59. package/dist/reporters/doctor-eslint.js.map +1 -0
  60. package/dist/reporters/doctor-json.d.ts +12 -0
  61. package/dist/reporters/doctor-json.d.ts.map +1 -0
  62. package/dist/reporters/doctor-json.js +21 -0
  63. package/dist/reporters/doctor-json.js.map +1 -0
  64. package/dist/reporters/doctor-report.d.ts +23 -0
  65. package/dist/reporters/doctor-report.d.ts.map +1 -0
  66. package/dist/reporters/doctor-report.js +62 -0
  67. package/dist/reporters/doctor-report.js.map +1 -0
  68. package/dist/reporters/eslint-style.js +4 -4
  69. package/dist/reporters/eslint-style.js.map +1 -1
  70. package/dist/rules/categories.d.ts +36 -0
  71. package/dist/rules/categories.d.ts.map +1 -0
  72. package/dist/rules/categories.js +80 -0
  73. package/dist/rules/categories.js.map +1 -0
  74. package/dist/rules/code/index.d.ts +9 -0
  75. package/dist/rules/code/index.d.ts.map +1 -0
  76. package/dist/rules/code/index.js +9 -0
  77. package/dist/rules/code/index.js.map +1 -0
  78. package/dist/rules/code/jsx-attribute.d.ts +12 -0
  79. package/dist/rules/code/jsx-attribute.d.ts.map +1 -0
  80. package/dist/rules/code/jsx-attribute.js +78 -0
  81. package/dist/rules/code/jsx-attribute.js.map +1 -0
  82. package/dist/rules/code/jsx-text.d.ts +12 -0
  83. package/dist/rules/code/jsx-text.d.ts.map +1 -0
  84. package/dist/rules/code/jsx-text.js +47 -0
  85. package/dist/rules/code/jsx-text.js.map +1 -0
  86. package/dist/rules/code/string-variable.d.ts +13 -0
  87. package/dist/rules/code/string-variable.d.ts.map +1 -0
  88. package/dist/rules/code/string-variable.js +185 -0
  89. package/dist/rules/code/string-variable.js.map +1 -0
  90. package/dist/rules/code/ternary-locale.d.ts +12 -0
  91. package/dist/rules/code/ternary-locale.d.ts.map +1 -0
  92. package/dist/rules/code/ternary-locale.js +53 -0
  93. package/dist/rules/code/ternary-locale.js.map +1 -0
  94. package/dist/rules/code/toast-message.d.ts +13 -0
  95. package/dist/rules/code/toast-message.d.ts.map +1 -0
  96. package/dist/rules/code/toast-message.js +101 -0
  97. package/dist/rules/code/toast-message.js.map +1 -0
  98. package/dist/rules/extraction/data-structure.d.ts +13 -0
  99. package/dist/rules/extraction/data-structure.d.ts.map +1 -0
  100. package/dist/rules/extraction/data-structure.js +212 -0
  101. package/dist/rules/extraction/data-structure.js.map +1 -0
  102. package/dist/rules/extraction/index.d.ts +6 -0
  103. package/dist/rules/extraction/index.d.ts.map +1 -0
  104. package/dist/rules/extraction/index.js +6 -0
  105. package/dist/rules/extraction/index.js.map +1 -0
  106. package/dist/rules/extraction/translation-function.d.ts +12 -0
  107. package/dist/rules/extraction/translation-function.d.ts.map +1 -0
  108. package/dist/rules/extraction/translation-function.js +153 -0
  109. package/dist/rules/extraction/translation-function.js.map +1 -0
  110. package/dist/rules/health/index.d.ts +16 -0
  111. package/dist/rules/health/index.d.ts.map +1 -0
  112. package/dist/rules/health/index.js +22 -0
  113. package/dist/rules/health/index.js.map +1 -0
  114. package/dist/rules/health/missing-translations.d.ts +13 -0
  115. package/dist/rules/health/missing-translations.d.ts.map +1 -0
  116. package/dist/rules/health/missing-translations.js +48 -0
  117. package/dist/rules/health/missing-translations.js.map +1 -0
  118. package/dist/rules/health/orphan-keys.d.ts +16 -0
  119. package/dist/rules/health/orphan-keys.d.ts.map +1 -0
  120. package/dist/rules/health/orphan-keys.js +50 -0
  121. package/dist/rules/health/orphan-keys.js.map +1 -0
  122. package/dist/rules/health/placeholder-mismatch.d.ts +32 -0
  123. package/dist/rules/health/placeholder-mismatch.d.ts.map +1 -0
  124. package/dist/rules/health/placeholder-mismatch.js +120 -0
  125. package/dist/rules/health/placeholder-mismatch.js.map +1 -0
  126. package/dist/rules/registry.d.ts +84 -0
  127. package/dist/rules/registry.d.ts.map +1 -0
  128. package/dist/rules/registry.js +11 -0
  129. package/dist/rules/registry.js.map +1 -0
  130. package/dist/utils/cdn-client.d.ts +30 -0
  131. package/dist/utils/cdn-client.d.ts.map +1 -0
  132. package/dist/utils/cdn-client.js +59 -0
  133. package/dist/utils/cdn-client.js.map +1 -0
  134. package/dist/utils/json-keys.d.ts +60 -0
  135. package/dist/utils/json-keys.d.ts.map +1 -0
  136. package/dist/utils/json-keys.js +103 -0
  137. package/dist/utils/json-keys.js.map +1 -0
  138. package/dist/utils/key-comparison.d.ts +67 -0
  139. package/dist/utils/key-comparison.d.ts.map +1 -0
  140. package/dist/utils/key-comparison.js +299 -0
  141. package/dist/utils/key-comparison.js.map +1 -0
  142. package/package.json +2 -1
@@ -9,6 +9,9 @@ import { collectFiles } from "../analyzer/file-collector.js";
9
9
  import { analyzeFile } from "../analyzer/index.js";
10
10
  import { detectProjectContext } from "../context/detector.js";
11
11
  import { bold, cyan, dim, green, red, yellow } from "../utils/colors.js";
12
+ import { countMissingKeys, countMissingKeysFromEntries, flattenKeys, countTotalKeys, } from "../utils/json-keys.js";
13
+ import { fetchManifest, fetchRemoteKeys } from "../utils/cdn-client.js";
14
+ import { getSummary, groupKeysByNamespace, } from "../utils/key-comparison.js";
12
15
  export async function syncCommand(options) {
13
16
  const startTime = Date.now();
14
17
  const isJson = options.format === "json";
@@ -85,9 +88,10 @@ export async function syncCommand(options) {
85
88
  spinner.start(`Extracting keys... (${processedFiles}/${files.length})`);
86
89
  }
87
90
  try {
88
- const { issues, stats } = await analyzeFile(file, context?.lint);
89
- // Filter only translation function calls
90
- const translationKeys = issues.filter((i) => i.type === "string-variable");
91
+ const { issues, stats } = await analyzeFile(file, context?.lint, options.verbose);
92
+ // Filter only translation function calls (exclude hardcoded strings)
93
+ // Translation keys have severity "info", hardcoded strings have "warning"
94
+ const translationKeys = issues.filter((i) => i.type === "string-variable" && i.severity === "info");
91
95
  allIssues.push(...translationKeys);
92
96
  // Aggregate stats
93
97
  aggregatedStats.dynamicKeys += stats.dynamicKeys || 0;
@@ -120,7 +124,7 @@ export async function syncCommand(options) {
120
124
  const remoteKeys = await fetchRemoteKeys(cdnBaseUrl, context.workspaceId, context.projectSlug, sourceLocale, manifest);
121
125
  spinner.succeed(`Fetched ${countTotalKeys(remoteKeys)} keys from remote`);
122
126
  // Unified comparison logic
123
- const metrics = getSummary(allIssues, remoteKeys);
127
+ const metrics = getSummary(allIssues, remoteKeys, options.verbose);
124
128
  // Attach stats to metrics for reporting
125
129
  metrics.scanStats = aggregatedStats;
126
130
  const duration = Date.now() - startTime;
@@ -130,7 +134,6 @@ export async function syncCommand(options) {
130
134
  console.log(bold("🔍 [DEBUG] Sync Audit Log (Verbose)"));
131
135
  console.log(dim("Checking key normalization and matching..."));
132
136
  const localSample = Array.from(new Set(Object.values(localKeys.namespaces).flat())).slice(0, 15);
133
- const remoteSample = Array.from(new Set(Object.values(metrics.unused).flat().concat(Object.values(metrics.missing).flat().map(m => m.key)))).slice(0, 15);
134
137
  console.log(cyan("\n--- LOCAL KEYS SAMPLE ---"));
135
138
  localSample.forEach(k => console.log(` ${k}`));
136
139
  console.log(cyan("\n--- REMOTE KEYS SAMPLE ---"));
@@ -166,9 +169,17 @@ export async function syncCommand(options) {
166
169
  },
167
170
  comparison: {
168
171
  missingInRemote: metrics.missing,
169
- unusedInCode: metrics.unused,
170
- missingCount: countMissingKeys(metrics.missing),
171
- unusedCount: countMissingKeys(metrics.unused),
172
+ missingCount: countMissingKeysFromEntries(metrics.missing),
173
+ usedViaDynamicPatterns: metrics.dynamicPatternMatches?.map(p => ({
174
+ pattern: p.pattern,
175
+ file: p.file,
176
+ line: p.line,
177
+ matchCount: p.matchedKeys.length,
178
+ examples: p.matchedKeys.slice(0, 5),
179
+ })),
180
+ dynamicMatchCount: metrics.dynamicPatternMatches?.reduce((sum, p) => sum + p.matchedKeys.length, 0) || 0,
181
+ possiblyUnused: metrics.unused,
182
+ possiblyUnusedCount: countMissingKeys(metrics.unused),
172
183
  },
173
184
  coverage: {
174
185
  local: metrics.localCoverage,
@@ -186,7 +197,8 @@ export async function syncCommand(options) {
186
197
  verificationResults = await verifyUnusedKeys(metrics.unused, rootDir);
187
198
  }
188
199
  reportComparisonReport(localKeys, // Still pass for meta info
189
- metrics, duration, sourceLocale, options.summary, verificationResults);
200
+ metrics, duration, sourceLocale, options.summary, verificationResults, options.checkType // Pass checkType to filter report
201
+ );
190
202
  }
191
203
  }
192
204
  catch (error) {
@@ -210,219 +222,9 @@ export async function syncCommand(options) {
210
222
  }
211
223
  }
212
224
  }
213
- /**
214
- * Fetch manifest from CDN
215
- */
216
- async function fetchManifest(cdnBaseUrl, workspaceId, projectSlug) {
217
- const url = `${cdnBaseUrl}/${workspaceId}/${projectSlug}/manifest.json`;
218
- const response = await fetch(url);
219
- if (!response.ok) {
220
- throw new Error(`Manifest fetch failed (${response.status})`);
221
- }
222
- return response.json();
223
- }
224
- /**
225
- * Group keys by namespace
226
- */
227
- function groupKeysByNamespace(issues) {
228
- const result = {};
229
- for (const issue of issues) {
230
- if (!issue.key)
231
- continue;
232
- const parts = issue.key.split(".");
233
- const namespace = parts.length > 1 ? parts[0] : "default";
234
- const fullKey = issue.key;
235
- if (!result[namespace]) {
236
- result[namespace] = new Set();
237
- }
238
- result[namespace].add(fullKey);
239
- }
240
- // Convert Sets to arrays
241
- const output = {};
242
- for (const [namespace, keys] of Object.entries(result)) {
243
- output[namespace] = Array.from(keys).sort();
244
- }
245
- return output;
246
- }
247
- /**
248
- * Fetch remote keys from CDN
249
- */
250
- async function fetchRemoteKeys(cdnBaseUrl, workspaceId, projectSlug, locale, manifest) {
251
- // Use manifest URL if available, otherwise construct URL
252
- let url;
253
- if (manifest?.files[locale]?.url) {
254
- url = manifest.files[locale].url;
255
- }
256
- else {
257
- url = `${cdnBaseUrl}/${workspaceId}/${projectSlug}/translations/${locale}.json`;
258
- }
259
- const response = await fetch(url);
260
- if (!response.ok) {
261
- throw new Error(`CDN fetch failed (${response.status})`);
262
- }
263
- return response.json();
264
- }
265
- /**
266
- * Unify all comparison logic to ensure consistent metrics
267
- */
268
- function getSummary(allIssues, remoteKeys) {
269
- const remoteFlattened = flattenKeys(remoteKeys);
270
- // Use unique key sets for all calculations
271
- const allLocal = new Set();
272
- const classification = {
273
- "bound-scoped": 0,
274
- "root-scoped": 0,
275
- "unknown-scoped": 0,
276
- "unbound": 0,
277
- };
278
- // Create a fast lookup for all remote keys (including paths)
279
- // This helps us identify if a local key is actually an object/container
280
- const remoteKeyPaths = new Set();
281
- function buildPathSet(obj, prefix = "") {
282
- if (typeof obj !== "object" || obj === null)
283
- return;
284
- for (const [key, value] of Object.entries(obj)) {
285
- const fullPath = prefix ? `${prefix}.${key}` : key;
286
- remoteKeyPaths.add(fullPath);
287
- if (typeof value === "object" && value !== null && !Array.isArray(value)) {
288
- buildPathSet(value, fullPath);
289
- }
290
- }
291
- }
292
- buildPathSet(remoteKeys);
293
- // Flatten all remote leaves for intersection
294
- const allRemoteLeaves = new Set();
295
- for (const keys of Object.values(remoteFlattened)) {
296
- for (const k of keys)
297
- allRemoteLeaves.add(k);
298
- }
299
- // Filter local keys: strictly skip if they refer to a container object in remote
300
- // OR if we have strong reason to believe they are containers in code
301
- const rawLocalKeys = Array.from(new Set(allIssues.map(i => i.key).filter(Boolean)));
302
- for (const issue of allIssues) {
303
- if (!issue.key)
304
- continue;
305
- // 1. Skip if this key is UNAMBIGUOUSLY a container in remote
306
- const isRemoteContainer = remoteKeyPaths.has(issue.key) && !allRemoteLeaves.has(issue.key);
307
- if (isRemoteContainer)
308
- continue;
309
- // 2. Heuristic: Skip if it's a prefix of ANOTHER local key in the same run
310
- // e.g. if we have "hero.features" and "hero.features.practiceSpeaking", "hero.features" is likely a container
311
- const isLocalContainer = rawLocalKeys.some(other => other !== issue.key && other.startsWith(issue.key + '.'));
312
- if (isLocalContainer)
313
- continue;
314
- allLocal.add(issue.key);
315
- if (issue.bindingType) {
316
- classification[issue.bindingType] = (classification[issue.bindingType] || 0) + 1;
317
- }
318
- }
319
- // Calculate intersection once
320
- const intersection = new Set();
321
- for (const k of allLocal) {
322
- if (allRemoteLeaves.has(k))
323
- intersection.add(k);
324
- }
325
- // Missing: In Local Set but not in Remote Set
326
- const missing = {};
327
- for (const issue of allIssues) {
328
- if (!issue.key || !allLocal.has(issue.key))
329
- continue;
330
- if (!allRemoteLeaves.has(issue.key)) {
331
- const ns = issue.key.split(".")[0] || "default";
332
- if (!missing[ns])
333
- missing[ns] = [];
334
- // Only add if not already in missing for this namespace (dedupe)
335
- if (!missing[ns].some((m) => m.key === issue.key)) {
336
- missing[ns].push({
337
- key: issue.key,
338
- value: issue.text || "",
339
- });
340
- }
341
- }
342
- }
343
- // Unused: In Remote Set but not in Local Set (simple string array for now)
344
- const unused = {};
345
- for (const k of allRemoteLeaves) {
346
- if (!allLocal.has(k)) {
347
- const ns = k.split(".")[0] || "default";
348
- if (!unused[ns])
349
- unused[ns] = [];
350
- unused[ns].push(k);
351
- }
352
- }
353
- const localTotal = allLocal.size;
354
- const remoteTotal = allRemoteLeaves.size;
355
- const intersectionCount = intersection.size;
356
- return {
357
- localTotal,
358
- remoteTotal,
359
- intersectionCount,
360
- allLocal, // Pass these for probe check
361
- allRemoteLeaves,
362
- missing,
363
- unused,
364
- classification,
365
- localCoverage: localTotal > 0 ? Math.round((intersectionCount / localTotal) * 100) : 100,
366
- remoteCoverage: remoteTotal > 0
367
- ? Math.round((intersectionCount / remoteTotal) * 100)
368
- : 100,
369
- invariants: {
370
- local: localTotal === intersectionCount + countMissingKeys(missing),
371
- remote: remoteTotal === intersectionCount + countMissingKeys(unused),
372
- },
373
- };
374
- }
375
- /**
376
- * Flatten remote keys to get all namespaces
377
- */
378
- function flattenKeys(remoteKeys) {
379
- const result = {};
380
- function traverse(obj, prefix = "") {
381
- if (typeof obj !== "object" || obj === null)
382
- return;
383
- for (const [key, value] of Object.entries(obj)) {
384
- const fullKey = prefix ? `${prefix}.${key}` : key;
385
- if (typeof value === "object" &&
386
- value !== null &&
387
- !Array.isArray(value)) {
388
- traverse(value, fullKey);
389
- }
390
- else {
391
- // Leaf (string, number, array, boolean, or null)
392
- const namespace = fullKey.split(".")[0] || "default";
393
- if (!result[namespace])
394
- result[namespace] = [];
395
- result[namespace].push(fullKey);
396
- }
397
- }
398
- }
399
- traverse(remoteKeys);
400
- return result;
401
- }
402
- /**
403
- * Count total keys in nested structure
404
- */
405
- function countTotalKeys(remoteKeys) {
406
- let count = 0;
407
- function traverse(obj) {
408
- for (const value of Object.values(obj)) {
409
- if (typeof value === "string") {
410
- count++;
411
- }
412
- else if (typeof value === "object" && value !== null) {
413
- traverse(value);
414
- }
415
- }
416
- }
417
- traverse(remoteKeys);
418
- return count;
419
- }
420
- /**
421
- * Count missing keys total
422
- */
423
- function countMissingKeys(keys) {
424
- return Object.values(keys).reduce((sum, arr) => sum + arr.length, 0);
425
- }
225
+ // fetchManifest, groupKeysByNamespace, fetchRemoteKeys → imported from utils/
226
+ // getSummary imported from utils/key-comparison.js
227
+ // flattenKeys, countTotalKeys, countMissingKeys, countMissingKeysFromEntries → imported from utils/json-keys.js
426
228
  /**
427
229
  * Report local keys (human-readable) - simplified summary
428
230
  */
@@ -443,14 +245,21 @@ function reportLocalKeys(localKeys, _issueCount, duration) {
443
245
  /**
444
246
  * Report comparison (human-readable)
445
247
  */
446
- function reportComparisonReport(localKeys, metrics, duration, sourceLocale, onlySummary, verificationResults) {
248
+ function reportComparisonReport(localKeys, metrics, duration, sourceLocale, onlySummary, verificationResults, checkType) {
249
+ // Default to 'both' if not specified (backward compatibility)
250
+ const effectiveCheckType = checkType || "both";
447
251
  console.log();
448
252
  console.log(bold("📊 Translation Keys Comparison"));
449
253
  console.log(dim(`Source locale: ${sourceLocale}`));
450
254
  console.log();
255
+ // Show coverage based on check type
451
256
  console.log(`${dim("Coverage:")}`);
452
- console.log(` Local Remote: ${cyan(metrics.localCoverage + "%")}`);
453
- console.log(` Remote Used: ${cyan(metrics.remoteCoverage + "%")}`);
257
+ if (effectiveCheckType === "missing" || effectiveCheckType === "both") {
258
+ console.log(` Local → Remote: ${cyan(metrics.localCoverage + "%")} ${dim("(keys in code that exist in remote)")}`);
259
+ }
260
+ if (effectiveCheckType === "unused" || effectiveCheckType === "both") {
261
+ console.log(` Remote Used: ${cyan(metrics.remoteCoverage + "%")} ${dim("(remote keys detected in code)")}`);
262
+ }
454
263
  console.log();
455
264
  // Audit Invariants (Verbose)
456
265
  if (process.env.DEBUG || localKeys.verbose) {
@@ -470,6 +279,17 @@ function reportComparisonReport(localKeys, metrics, duration, sourceLocale, only
470
279
  console.log(` - Dynamic namespaces skipped: ${metrics.scanStats.dynamicNamespaces}`);
471
280
  console.log(` - Dynamic keys skipped: ${metrics.scanStats.dynamicKeys}`);
472
281
  }
282
+ if (metrics.filteredKeys && metrics.filteredKeys.length > 0) {
283
+ console.log(dim("\n📦 Filtered Keys (Not Added to Local):"));
284
+ const displayLimit = 10;
285
+ const filtered = metrics.filteredKeys.slice(0, displayLimit);
286
+ for (const { key, reason } of filtered) {
287
+ console.log(` - ${key} (${reason})`);
288
+ }
289
+ if (metrics.filteredKeys.length > displayLimit) {
290
+ console.log(` ... and ${metrics.filteredKeys.length - displayLimit} more`);
291
+ }
292
+ }
473
293
  console.log(dim("\n🎯 Key Probes:"));
474
294
  const probes = [
475
295
  "hero.features.practiceSpeaking",
@@ -503,59 +323,118 @@ function reportComparisonReport(localKeys, metrics, duration, sourceLocale, only
503
323
  return;
504
324
  }
505
325
  // Missing keys (in code but not in remote) - Tree format
506
- const totalMissing = countMissingKeys(metrics.missing);
507
- if (totalMissing > 0) {
508
- console.log(red(bold(`⊕ Missing in Remote (${totalMissing} keys)`)));
509
- console.log(dim(" Keys used in code but not uploaded to Better i18n"));
510
- console.log();
511
- renderTree(metrics.missing, true);
512
- console.log();
513
- }
514
- else {
515
- console.log(green(bold("✓ All local keys exist in remote!")));
516
- console.log();
326
+ // Only show if checking for missing keys or both
327
+ if (effectiveCheckType === "missing" || effectiveCheckType === "both") {
328
+ const totalMissing = countMissingKeysFromEntries(metrics.missing);
329
+ if (totalMissing > 0) {
330
+ console.log(red(bold(`⊕ Missing in Remote (${totalMissing} keys)`)));
331
+ console.log(dim(" Keys used in code but not uploaded to Better i18n"));
332
+ console.log();
333
+ renderTree(metrics.missing, true, false);
334
+ console.log();
335
+ }
336
+ else {
337
+ console.log(green(bold("✓ All local keys exist in remote!")));
338
+ console.log();
339
+ }
517
340
  }
518
- // Unused keys (in remote but not in code) - Tree format
519
- const totalUnused = countMissingKeys(metrics.unused);
520
- if (totalUnused > 0) {
521
- console.log(yellow(bold(`⊖ Unused in Code (${totalUnused} keys)`)));
522
- console.log(dim(" Keys in Better i18n but not detected in code usage"));
341
+ // Dynamic pattern matches (MOVED UP - positive evidence comes before negative)
342
+ // Only show if checking for unused keys or both (relevant when analyzing unused)
343
+ if ((effectiveCheckType === "unused" || effectiveCheckType === "both") &&
344
+ metrics.dynamicPatternMatches &&
345
+ metrics.dynamicPatternMatches.length > 0) {
346
+ const totalMatched = metrics.dynamicPatternMatches.reduce((sum, p) => sum + p.matchedKeys.length, 0);
347
+ console.log(cyan(bold(`🔍 Used via Dynamic Patterns (${totalMatched} keys)`)));
348
+ console.log(dim(" These keys are accessed through template literals like t(`plans.${x}.name`)"));
349
+ console.log(dim(" Detected patterns:"));
523
350
  console.log();
524
- renderTree(metrics.unused, false);
351
+ // Group by pattern
352
+ for (const match of metrics.dynamicPatternMatches) {
353
+ const { pattern, file, line, matchedKeys } = match;
354
+ const fileName = file.split('/').pop() || file;
355
+ console.log(` ${bold(pattern)} ${dim(`(${matchedKeys.length} keys)`)}`);
356
+ console.log(` ${dim(`└─ ${fileName}:${line}`)}`);
357
+ // Show a few example matched keys
358
+ const examples = matchedKeys.slice(0, 5);
359
+ examples.forEach((key) => {
360
+ console.log(` ${dim('→')} ${key}`);
361
+ });
362
+ if (matchedKeys.length > 5) {
363
+ console.log(` ${dim(`... and ${matchedKeys.length - 5} more`)}`);
364
+ }
365
+ console.log();
366
+ }
367
+ console.log(yellow(bold(" ⚠️ WARNING: Do NOT delete these keys without manual verification!")));
368
+ console.log(dim(" The CLI detected these keys through pattern matching, but cannot guarantee"));
369
+ console.log(dim(" 100% accuracy. Review the source code before deleting any keys."));
525
370
  console.log();
526
371
  }
372
+ // Static unused keys (in remote but not detected in code) - Tree format (MOVED DOWN)
373
+ // Only show if checking for unused keys or both
374
+ if (effectiveCheckType === "unused" || effectiveCheckType === "both") {
375
+ const totalUnused = countMissingKeys(metrics.unused);
376
+ if (totalUnused > 0) {
377
+ console.log(yellow(bold(`⊖ Possibly Unused (${totalUnused} keys)`)));
378
+ console.log(dim(" Static keys not detected in code - safe to review for deletion"));
379
+ console.log();
380
+ renderTree(metrics.unused, false, true); // Use showFullPaths=true for clarity
381
+ console.log();
382
+ }
383
+ else {
384
+ console.log(green(bold("✓ No obviously unused keys detected!")));
385
+ console.log();
386
+ }
387
+ }
527
388
  // Summary
528
389
  console.log(dim(`Scanned ${localKeys.filesScanned} files in ${(duration / 1000).toFixed(2)}s`));
529
390
  console.log(green(bold(`✓ Comparison complete`)));
530
391
  }
531
392
  /**
532
393
  * Render key groupings as a 2-level compact tree
394
+ * @param groups - Either Record<string, MissingKeyEntry[]> when isMissing=true, or Record<string, string[]> otherwise
533
395
  */
534
- function renderTree(groups, isMissing = false) {
396
+ function renderTree(groups, isMissing = false, showFullPaths = false) {
535
397
  // Sort namespaces by total key count descending
536
398
  const sortedNamespaces = Object.entries(groups).sort((a, b) => b[1].length - a[1].length);
537
399
  for (const [ns, items] of sortedNamespaces) {
538
400
  console.log(`${bold(ns)} (${items.length})`);
539
- // Group keys by the next segment (level 2)
540
- const level2 = {};
541
- for (const item of items) {
542
- const key = isMissing ? item.key : item;
543
- const parts = key.split(".");
544
- // If ns is "pages.affordable", parts[0] is pages, parts[1] is affordable
545
- const nsPartsCount = ns.split(".").length;
546
- const subGroup = parts[nsPartsCount] || "root";
547
- if (!level2[subGroup])
548
- level2[subGroup] = [];
549
- // Keep only the suffix for display if it's deeper, otherwise the full key segment
550
- const suffix = parts.slice(nsPartsCount + 1).join(".") || parts[nsPartsCount] || "";
551
- if (suffix)
552
- level2[subGroup].push(suffix);
401
+ if (showFullPaths) {
402
+ // Show full key paths for clarity (used for "Possibly Unused" section)
403
+ const keys = items.map((item) => isMissing ? item.key : item);
404
+ // Sort keys and show up to 15 per namespace
405
+ const sortedKeys = keys.sort();
406
+ const displayKeys = sortedKeys.slice(0, 15);
407
+ const more = sortedKeys.length > 15 ? sortedKeys.length - 15 : 0;
408
+ displayKeys.forEach((key) => {
409
+ console.log(` ${dim(key)}`);
410
+ });
411
+ if (more > 0) {
412
+ console.log(` ${dim(`... and ${more} more`)}`);
413
+ }
553
414
  }
554
- const subGroupEntries = Object.entries(level2).sort((a, b) => b[1].length - a[1].length);
555
- for (const [sub, leaves] of subGroupEntries) {
556
- const displayLeaves = leaves.slice(0, 8);
557
- const more = leaves.length > 8 ? `, ...+${leaves.length - 8}` : "";
558
- console.log(` ${dim(sub)} (${displayLeaves.join(", ")}${more})`);
415
+ else {
416
+ // Original compact tree format (used for "Missing in Remote" section)
417
+ // Group keys by the next segment (level 2)
418
+ const level2 = {};
419
+ for (const item of items) {
420
+ const key = isMissing ? item.key : item;
421
+ const parts = key.split(".");
422
+ // If ns is "pages.affordable", parts[0] is pages, parts[1] is affordable
423
+ const nsPartsCount = ns.split(".").length;
424
+ const subGroup = parts[nsPartsCount] || "root";
425
+ if (!level2[subGroup])
426
+ level2[subGroup] = [];
427
+ // Keep only the suffix for display if it's deeper, otherwise the full key segment
428
+ const suffix = parts.slice(nsPartsCount + 1).join(".") || parts[nsPartsCount] || "";
429
+ if (suffix)
430
+ level2[subGroup].push(suffix);
431
+ }
432
+ const subGroupEntries = Object.entries(level2).sort((a, b) => b[1].length - a[1].length);
433
+ for (const [sub, leaves] of subGroupEntries) {
434
+ const displayLeaves = leaves.slice(0, 40);
435
+ const more = leaves.length > 40 ? `, ...+${leaves.length - 40}` : "";
436
+ console.log(` ${dim(sub)} (${displayLeaves.join(", ")}${more})`);
437
+ }
559
438
  }
560
439
  console.log();
561
440
  }
@@ -570,17 +449,24 @@ async function verifyUnusedKeys(unused, rootDir) {
570
449
  // Pick 10 random keys to sample
571
450
  const sample = allUnused.sort(() => 0.5 - Math.random()).slice(0, 10);
572
451
  const results = [];
573
- // In a real CLI environment with Node, we'd spawn ripgrep or use fast-glob + re2
574
- // For this implementation, we return the sample with instructions for the user
575
- // or use an internal pattern matching if accessible.
576
452
  for (const key of sample) {
577
- // We search for the full key string in the codebase
578
- // This is a "plain grep" fallback
579
- results.push({
580
- key,
581
- found: false, // Default to false, let the user audit
582
- count: 0
583
- });
453
+ // Extract the last part after the final dot for grep search
454
+ // e.g., "user_dropdown.student_view_only_available_in_class_dashboard"
455
+ // → search for "student_view_only_available_in_class_dashboard"
456
+ const searchTerm = key.split('.').pop() || key;
457
+ try {
458
+ // Dynamic import to avoid issues in different environments
459
+ const { execSync } = await import('node:child_process');
460
+ // Use grep to search in rootDir
461
+ // Search in .tsx, .jsx, .ts, .js files
462
+ const result = execSync(`grep -r --include="*.tsx" --include="*.jsx" --include="*.ts" --include="*.js" "${searchTerm}" "${rootDir}"`, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
463
+ const lines = result.trim().split('\n').filter(Boolean);
464
+ results.push({ key, found: lines.length > 0, count: lines.length });
465
+ }
466
+ catch {
467
+ // Grep returns exit code 1 when no matches found
468
+ results.push({ key, found: false, count: 0 });
469
+ }
584
470
  }
585
471
  return results;
586
472
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ export async function detectProjectContext(startDir = process.cwd(), searchUpTre
30
30
  }
31
31
  }
32
32
  }
33
- catch (error) {
33
+ catch {
34
34
  // Silently fail - will use defaults
35
35
  }
36
36
  return null;