@the-i18n-kit/cli 6.0.0 → 8.0.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 (91) hide show
  1. package/README.md +7 -57
  2. package/dist/bin.js +1 -1
  3. package/dist/{_shared-CkMAydRl.js → cli-BTMcWXGs.js} +157 -27
  4. package/dist/cli-BTMcWXGs.js.map +1 -0
  5. package/dist/config/framework/stubs/{next-intl-routing-lExp4Q3r.d.ts → next-intl-routing-i6Mlxwdt.d.ts} +1 -1
  6. package/dist/config/framework/stubs/{next-intl-routing-lExp4Q3r.d.ts.map → next-intl-routing-i6Mlxwdt.d.ts.map} +1 -1
  7. package/dist/{define-config-BeHvSYBP.d.ts → define-config-BpdVaEVR.d.ts} +1 -1
  8. package/dist/{define-config-DW-rgsU6.d.ts → define-config-ZRZw5PWy.d.ts} +40 -6
  9. package/dist/define-config-ZRZw5PWy.d.ts.map +1 -0
  10. package/dist/define-config.d.ts +1 -1
  11. package/dist/descriptors-Bo5UM031.js +1242 -0
  12. package/dist/descriptors-Bo5UM031.js.map +1 -0
  13. package/dist/detector-B4z_RZde.js +2189 -0
  14. package/dist/detector-B4z_RZde.js.map +1 -0
  15. package/dist/detector-DTfFbwSU.js +5 -0
  16. package/dist/{index-w-EQZEZF.d.ts → index-CWFWYHf5.d.ts} +728 -268
  17. package/dist/index-CWFWYHf5.d.ts.map +1 -0
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +8 -4
  20. package/dist/json-writer-D0b6vEax.js +2 -0
  21. package/dist/json-writer-ek8yEI5R.js +342 -0
  22. package/dist/json-writer-ek8yEI5R.js.map +1 -0
  23. package/dist/operations-CKHEmLNJ.js +8 -0
  24. package/dist/{operations-PfRSTepi.js → operations-Daf2Ommm.js} +1655 -3298
  25. package/dist/operations-Daf2Ommm.js.map +1 -0
  26. package/dist/php-reader-BGx6Ii2d.js +2 -0
  27. package/dist/{php-reader-3Fgw80zK.js → php-reader-DRpcRVzv.js} +6 -3
  28. package/dist/{php-reader-3Fgw80zK.js.map → php-reader-DRpcRVzv.js.map} +1 -1
  29. package/dist/{providers-CAsU_aV1.js → project-config-eLR0J377.js} +24 -209
  30. package/dist/project-config-eLR0J377.js.map +1 -0
  31. package/dist/providers-BbVPelvp.js +406 -0
  32. package/dist/providers-BbVPelvp.js.map +1 -0
  33. package/dist/report-By1-5JtO.js +37 -0
  34. package/dist/report-By1-5JtO.js.map +1 -0
  35. package/dist/report-CHZgH9Wy.js +2 -0
  36. package/package.json +4 -16
  37. package/dist/_shared-CkMAydRl.js.map +0 -1
  38. package/dist/add-BBoVUNEq.js +0 -40
  39. package/dist/add-BBoVUNEq.js.map +0 -1
  40. package/dist/check-IosaN_EM.js +0 -41
  41. package/dist/check-IosaN_EM.js.map +0 -1
  42. package/dist/cli-CnZNGUGu.js +0 -70
  43. package/dist/cli-CnZNGUGu.js.map +0 -1
  44. package/dist/config/framework/stubs/unplugin-vue-i18n-mH7YdYqA.d.ts +0 -25
  45. package/dist/config/framework/stubs/unplugin-vue-i18n-mH7YdYqA.d.ts.map +0 -1
  46. package/dist/config/framework/stubs/unplugin-vue-i18n.js +0 -26
  47. package/dist/config/framework/stubs/unplugin-vue-i18n.js.map +0 -1
  48. package/dist/define-config-DW-rgsU6.d.ts.map +0 -1
  49. package/dist/detect-3jjcQJs1.js +0 -17
  50. package/dist/detect-3jjcQJs1.js.map +0 -1
  51. package/dist/empty-D3La0enO.js +0 -36
  52. package/dist/empty-D3La0enO.js.map +0 -1
  53. package/dist/find-duplicates-BlQoJDgu.js +0 -42
  54. package/dist/find-duplicates-BlQoJDgu.js.map +0 -1
  55. package/dist/get-Cr5O5zJX.js +0 -41
  56. package/dist/get-Cr5O5zJX.js.map +0 -1
  57. package/dist/index-w-EQZEZF.d.ts.map +0 -1
  58. package/dist/init-BRBMkcI0.js +0 -33
  59. package/dist/init-BRBMkcI0.js.map +0 -1
  60. package/dist/list-dirs-BMuByyuX.js +0 -17
  61. package/dist/list-dirs-BMuByyuX.js.map +0 -1
  62. package/dist/missing-CBOk4ZgD.js +0 -51
  63. package/dist/missing-CBOk4ZgD.js.map +0 -1
  64. package/dist/move-DOdPKnOV.js +0 -50
  65. package/dist/move-DOdPKnOV.js.map +0 -1
  66. package/dist/operations-PfRSTepi.js.map +0 -1
  67. package/dist/php-reader-CpnaPSpZ.js +0 -2
  68. package/dist/providers-CAsU_aV1.js.map +0 -1
  69. package/dist/remove-CVBjJV9h.js +0 -41
  70. package/dist/remove-CVBjJV9h.js.map +0 -1
  71. package/dist/remove-orphans-BaKEISxA.js +0 -57
  72. package/dist/remove-orphans-BaKEISxA.js.map +0 -1
  73. package/dist/rename-CN2ajUeb.js +0 -45
  74. package/dist/rename-CN2ajUeb.js.map +0 -1
  75. package/dist/scaffold-CUKUFuEy.js +0 -39
  76. package/dist/scaffold-CUKUFuEy.js.map +0 -1
  77. package/dist/scan-Bhv0Nmy3.js +0 -31
  78. package/dist/scan-Bhv0Nmy3.js.map +0 -1
  79. package/dist/search-CrkLgz3m.js +0 -49
  80. package/dist/search-CrkLgz3m.js.map +0 -1
  81. package/dist/status-DprS-qDC.js +0 -45
  82. package/dist/status-DprS-qDC.js.map +0 -1
  83. package/dist/translate-Cs6EdbzA.js +0 -92
  84. package/dist/translate-Cs6EdbzA.js.map +0 -1
  85. package/dist/translate-key-BBZpYQjL.js +0 -73
  86. package/dist/translate-key-BBZpYQjL.js.map +0 -1
  87. package/dist/update-BQuGxSSy.js +0 -40
  88. package/dist/update-BQuGxSSy.js.map +0 -1
  89. package/dist/write-B8z6I5Vf.js +0 -47
  90. package/dist/write-B8z6I5Vf.js.map +0 -1
  91. /package/dist/{bin-g05vSfAz.d.ts → bin-NyzIHE2F.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CWFWYHf5.d.ts","names":[],"sources":["../src/config/layer-graph.ts","../src/core/types.ts","../src/core/shared.ts","../src/core/translate/targets.ts","../src/core/translate/run.ts","../src/core/ops-read.ts","../src/core/ops-write.ts","../src/core/ops-status.ts","../src/scanner/frontends/types.ts","../src/scanner/frontends/php/patterns.ts","../src/scanner/patterns.ts","../src/scanner/code-scanner.ts","../src/core/ops-orphans.ts","../src/core/ops-duplicates.ts","../src/core/ops-check.ts","../src/core/codequality.ts","../src/surface/types.ts","../src/surface/descriptors.ts","../src/surface/report.ts","../src/config/cache.ts","../src/config/detector.ts","../src/scanner/frontends/patterns.ts","../src/scanner/frontends/php/index.ts","../src/io/locale-data.ts","../src/utils/errors.ts","../src/llm/providers.ts","../src/config/project-config.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from './index-w-EQZEZF.d.ts';
1
+ export * from './index-CWFWYHf5.d.ts';
package/dist/index.js CHANGED
@@ -1,6 +1,10 @@
1
1
  import { t as defineI18nKitConfig } from "./define-config-4ubtfvUy.js";
2
2
  import { i as toErrorMessage, r as ToolError } from "./errors-coI1dhw1.js";
3
- import { A as resolveProtectedLocales, C as detectConfig, D as listLocaleDirs, E as getTranslations, F as serializeLayerGraph, I as clearConfigCache, L as detectI18nConfig, M as translateMissing, N as readLocaleData, O as listNamespaces, P as buildLayerGraph, R as getCachedConfig, S as createOxcFrontend, T as getMissingTranslations, _ as getPatternSet, a as scanCodeUsage, b as LARAVEL_PATTERNS, c as addTranslations, d as renameTranslationKey, f as scaffoldLocaleFiles, g as VUE_NUXT_PATTERNS, h as scanSourceFiles, i as removeOrphanKeys, j as translateKey, k as searchTranslations, l as moveTranslationKey, m as writeTranslations, n as findDuplicateKeys, o as getTranslationStatus, p as updateTranslations, r as findOrphanKeys, t as checkUndefinedKeys, u as removeTranslations, v as createPatternsFrontend, w as findEmptyTranslations, x as createPhpFrontend, y as createBladeFrontend, z as findLocaleImpl } from "./operations-PfRSTepi.js";
4
- import { a as resolveProviderBaseUrl, i as createTranslateFn, n as TranslateProviderError, r as classifyProviderError, s as loadProjectConfig, t as BASE_URL_ENV } from "./providers-CAsU_aV1.js";
5
- import "./php-reader-3Fgw80zK.js";
6
- export { BASE_URL_ENV, LARAVEL_PATTERNS, ToolError, TranslateProviderError, VUE_NUXT_PATTERNS, addTranslations, buildLayerGraph, checkUndefinedKeys, classifyProviderError, clearConfigCache, createBladeFrontend, createOxcFrontend, createPatternsFrontend, createPhpFrontend, createTranslateFn, defineI18nKitConfig, detectConfig, detectI18nConfig, findDuplicateKeys, findEmptyTranslations, findLocaleImpl, findOrphanKeys, getCachedConfig, getMissingTranslations, getPatternSet, getTranslationStatus, getTranslations, listLocaleDirs, listNamespaces, loadProjectConfig, moveTranslationKey, readLocaleData, removeOrphanKeys, removeTranslations, renameTranslationKey, resolveProtectedLocales, resolveProviderBaseUrl, scaffoldLocaleFiles, scanCodeUsage, scanSourceFiles, searchTranslations, serializeLayerGraph, toErrorMessage, translateKey, translateMissing, updateTranslations, writeTranslations };
3
+ import { a as resolveProviderBaseUrl, i as createTranslateFn, n as TranslateProviderError, r as classifyProviderError, s as findLocaleImpl, t as BASE_URL_ENV } from "./providers-BbVPelvp.js";
4
+ import { n as loadProjectConfig } from "./project-config-eLR0J377.js";
5
+ import "./json-writer-ek8yEI5R.js";
6
+ import "./php-reader-DRpcRVzv.js";
7
+ import { n as clearConfigCache, r as getCachedConfig, t as detectI18nConfig } from "./detector-B4z_RZde.js";
8
+ import { C as listNamespaces, D as translateMissing, E as translateKey, F as readLocaleData, O as buildLayerGraph, P as resolveProtectedLocales, S as listLocaleDirs, _ as describeProject, a as scanCodeUsage, b as getMissingTranslations, c as moveTranslationKey, d as scaffoldLocaleFiles, f as writeTranslations, g as createPhpFrontend, h as LARAVEL_PATTERNS, i as removeOrphanKeys, k as serializeLayerGraph, l as removeTranslations, m as createPatternsFrontend, n as findDuplicateKeys, o as getTranslationStatus, p as scanSourceFiles, r as findOrphanKeys, t as checkUndefinedKeys, u as renameTranslationKey, v as detectConfig, w as searchTranslations, x as getTranslations, y as findEmptyTranslations } from "./operations-Daf2Ommm.js";
9
+ import { i as divertToReport, n as descriptorsFor, r as visibleParams, t as descriptors } from "./descriptors-Bo5UM031.js";
10
+ export { BASE_URL_ENV, LARAVEL_PATTERNS, ToolError, TranslateProviderError, buildLayerGraph, checkUndefinedKeys, classifyProviderError, clearConfigCache, createPatternsFrontend, createPhpFrontend, createTranslateFn, defineI18nKitConfig, describeProject, descriptors, descriptorsFor, detectConfig, detectI18nConfig, divertToReport, findDuplicateKeys, findEmptyTranslations, findLocaleImpl, findOrphanKeys, getCachedConfig, getMissingTranslations, getTranslationStatus, getTranslations, listLocaleDirs, listNamespaces, loadProjectConfig, moveTranslationKey, readLocaleData, removeOrphanKeys, removeTranslations, renameTranslationKey, resolveProtectedLocales, resolveProviderBaseUrl, scaffoldLocaleFiles, scanCodeUsage, scanSourceFiles, searchTranslations, serializeLayerGraph, toErrorMessage, translateKey, translateMissing, visibleParams, writeTranslations };
@@ -0,0 +1,2 @@
1
+ import { i as writeReportFile, n as writeCodequalityFile, r as writeLocaleFile, t as mutateLocaleFile } from "./json-writer-ek8yEI5R.js";
2
+ export { mutateLocaleFile, writeCodequalityFile, writeLocaleFile, writeReportFile };
@@ -0,0 +1,342 @@
1
+ import { i as toErrorMessage, n as FileIOError } from "./errors-coI1dhw1.js";
2
+ import { dirname, join } from "node:path";
3
+ import { mkdir, readFile, rename, stat, unlink, writeFile } from "node:fs/promises";
4
+ import { existsSync } from "node:fs";
5
+ import sortKeys from "sort-keys";
6
+ import { randomUUID } from "node:crypto";
7
+ //#region src/io/read-cache.ts
8
+ /**
9
+ * Creates an mtime-based file read cache.
10
+ * Files are re-read only when their modification timestamp changes.
11
+ * Cached data is cloned via structuredClone to prevent mutation.
12
+ *
13
+ * @param parser - Function that parses raw file content into the desired type
14
+ * @param label - Human-readable label for error messages (e.g., 'JSON', 'PHP')
15
+ * @param validate - Optional post-parse validation that throws FileIOError on failure
16
+ */
17
+ function createReadCache(parser, label, validate) {
18
+ const cache = /* @__PURE__ */ new Map();
19
+ async function read(filePath) {
20
+ if (!existsSync(filePath)) throw new FileIOError(`File not found: ${filePath}`, filePath, "FILE_NOT_FOUND");
21
+ try {
22
+ const mtime = (await stat(filePath)).mtimeMs;
23
+ const cached = cache.get(filePath);
24
+ if (cached && cached.mtime === mtime) return structuredClone(cached.data);
25
+ const parsed = parser(await readFile(filePath, "utf-8"));
26
+ validate?.(parsed, filePath);
27
+ cache.set(filePath, {
28
+ data: structuredClone(parsed),
29
+ mtime
30
+ });
31
+ return parsed;
32
+ } catch (error) {
33
+ if (error instanceof FileIOError) throw error;
34
+ throw new FileIOError(`Failed to read ${label} file: ${filePath}: ${toErrorMessage(error)}`, filePath);
35
+ }
36
+ }
37
+ function clear() {
38
+ cache.clear();
39
+ }
40
+ function clearEntry(filePath) {
41
+ cache.delete(filePath);
42
+ }
43
+ return {
44
+ read,
45
+ clear,
46
+ clearEntry
47
+ };
48
+ }
49
+ //#endregion
50
+ //#region src/io/json-reader.ts
51
+ const { read: readLocaleFile, clear: clearFileCache, clearEntry: clearFileCacheEntry } = createReadCache((content) => {
52
+ try {
53
+ return JSON.parse(content);
54
+ } catch {
55
+ throw new SyntaxError("Invalid JSON");
56
+ }
57
+ }, "JSON", (parsed, filePath) => {
58
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) throw new FileIOError(`JSON file must contain an object: ${filePath}`, filePath, "INVALID_JSON");
59
+ });
60
+ /**
61
+ * Detect the indentation style used in a JSON file.
62
+ * Scans the first few indented lines to find the smallest indent unit.
63
+ * Returns the indent string (e.g., '\t', ' ', ' ').
64
+ */
65
+ function detectIndentation(content) {
66
+ const lines = content.split("\n", 10);
67
+ let minSpaces = Infinity;
68
+ let usesTabs = false;
69
+ for (const line of lines) {
70
+ const indent = line.match(/^(\s+)\S/)?.[1];
71
+ if (!indent) continue;
72
+ if (indent.includes(" ")) {
73
+ usesTabs = true;
74
+ break;
75
+ }
76
+ if (indent.length < minSpaces) minSpaces = indent.length;
77
+ }
78
+ if (usesTabs) return " ";
79
+ if (minSpaces === Infinity) return " ";
80
+ return " ".repeat(minSpaces);
81
+ }
82
+ /**
83
+ * Read a locale file and also return the raw content for format detection.
84
+ * This function does NOT use the cache — it always reads fresh data from disk,
85
+ * as it returns raw content and indent info needed for writes.
86
+ */
87
+ async function readLocaleFileWithMeta(filePath) {
88
+ if (!existsSync(filePath)) throw new FileIOError(`File not found: ${filePath}`, filePath, "FILE_NOT_FOUND");
89
+ try {
90
+ const rawContent = await readFile(filePath, "utf-8");
91
+ return {
92
+ data: JSON.parse(rawContent),
93
+ rawContent,
94
+ indent: detectIndentation(rawContent),
95
+ trailingNewline: rawContent.endsWith("\n")
96
+ };
97
+ } catch (error) {
98
+ if (error instanceof FileIOError) throw error;
99
+ if (error instanceof SyntaxError) throw new FileIOError(`Invalid JSON in file: ${filePath}`, filePath, "INVALID_JSON");
100
+ throw new FileIOError(`Failed to read file: ${filePath}: ${toErrorMessage(error)}`, filePath);
101
+ }
102
+ }
103
+ //#endregion
104
+ //#region src/io/key-operations.ts
105
+ /**
106
+ * Get a value from a nested object using a dot-separated path.
107
+ */
108
+ function getNestedValue(obj, path) {
109
+ const parts = path.split(".");
110
+ let current = obj;
111
+ for (const part of parts) {
112
+ if (current === null || current === void 0 || typeof current !== "object") return;
113
+ current = current[part];
114
+ }
115
+ return current;
116
+ }
117
+ /**
118
+ * Set a value in a nested object using a dot-separated path.
119
+ * Creates intermediate objects as needed.
120
+ */
121
+ function setNestedValue(obj, path, value) {
122
+ const parts = path.split(".");
123
+ const lastKey = parts.pop();
124
+ if (lastKey === void 0) return;
125
+ let current = obj;
126
+ for (const part of parts) {
127
+ if (!(part in current) || typeof current[part] !== "object" || current[part] === null) current[part] = {};
128
+ current = current[part];
129
+ }
130
+ current[lastKey] = value;
131
+ }
132
+ /**
133
+ * Remove a value from a nested object using a dot-separated path.
134
+ * Cleans up empty parent objects after removal.
135
+ * Returns true if the key was found and removed.
136
+ */
137
+ function removeNestedValue(obj, path) {
138
+ const parts = path.split(".");
139
+ const lastKey = parts.pop();
140
+ if (lastKey === void 0) return false;
141
+ const parents = [];
142
+ let current = obj;
143
+ for (const part of parts) {
144
+ if (!(part in current) || typeof current[part] !== "object" || current[part] === null) return false;
145
+ parents.push({
146
+ obj: current,
147
+ key: part
148
+ });
149
+ current = current[part];
150
+ }
151
+ if (!(lastKey in current)) return false;
152
+ delete current[lastKey];
153
+ for (const { obj: parentObj, key } of [...parents].reverse()) {
154
+ const child = parentObj[key];
155
+ if (Object.keys(child).length === 0) delete parentObj[key];
156
+ else break;
157
+ }
158
+ return true;
159
+ }
160
+ /**
161
+ * Check if a key exists in a nested object.
162
+ */
163
+ function hasNestedKey(obj, path) {
164
+ return getNestedValue(obj, path) !== void 0;
165
+ }
166
+ /**
167
+ * Get all leaf keys as dot-separated paths.
168
+ * A leaf key is one whose value is not a plain object (i.e., it's a string, number, array, etc.).
169
+ */
170
+ function getLeafKeys(obj, prefix = "", depth = 0) {
171
+ if (depth > 200) return [];
172
+ const keys = [];
173
+ for (const key of Object.keys(obj)) {
174
+ const fullPath = prefix ? `${prefix}.${key}` : key;
175
+ const value = obj[key];
176
+ if (value !== null && typeof value === "object" && !Array.isArray(value)) keys.push(...getLeafKeys(value, fullPath, depth + 1));
177
+ else keys.push(fullPath);
178
+ }
179
+ return keys;
180
+ }
181
+ /**
182
+ * Sort keys alphabetically at every nesting level (deep).
183
+ * Returns a new object — does not mutate the input.
184
+ */
185
+ const sortKeysDeep = (obj) => sortKeys(obj, { deep: true });
186
+ function isPlainObject(value) {
187
+ return typeof value === "object" && value !== null && !Array.isArray(value);
188
+ }
189
+ /**
190
+ * Reorder `data` (deeply) against a `reference` object that carries the
191
+ * authoritative key order (typically the on-disk state before a mutation):
192
+ *
193
+ * - Keys that also exist in `reference` keep the reference's relative order.
194
+ * - Keys new to `data` are inserted in sorted position among their siblings
195
+ * (after the last existing sibling that sorts before them), so additions
196
+ * land alphabetically without re-sorting existing keys.
197
+ * - Without a reference, all keys are sorted (equivalent to sortKeysDeep).
198
+ *
199
+ * Returns a new object — does not mutate the input.
200
+ */
201
+ function orderKeysPreserving(data, reference) {
202
+ const orderedKeys = reference ? Object.keys(reference).filter((k) => k in data) : [];
203
+ const existing = new Set(orderedKeys);
204
+ const newKeys = Object.keys(data).filter((k) => !existing.has(k)).sort();
205
+ for (const key of newKeys) {
206
+ let insertAt = 0;
207
+ for (let i = orderedKeys.length - 1; i >= 0; i--) {
208
+ const existingKey = orderedKeys[i];
209
+ if (existingKey !== void 0 && existingKey <= key) {
210
+ insertAt = i + 1;
211
+ break;
212
+ }
213
+ }
214
+ orderedKeys.splice(insertAt, 0, key);
215
+ }
216
+ const result = {};
217
+ for (const key of orderedKeys) result[key] = orderValuePreserving(data[key], reference?.[key]);
218
+ return result;
219
+ }
220
+ function orderValuePreserving(value, refValue) {
221
+ if (Array.isArray(value)) {
222
+ const refArray = Array.isArray(refValue) ? refValue : void 0;
223
+ return value.map((item, i) => orderValuePreserving(item, refArray?.[i]));
224
+ }
225
+ if (isPlainObject(value)) return orderKeysPreserving(value, isPlainObject(refValue) ? refValue : void 0);
226
+ return value;
227
+ }
228
+ /**
229
+ * Rename a key in a nested object. Preserves the value.
230
+ * Returns true if the old key was found and renamed.
231
+ */
232
+ function renameNestedKey(obj, oldPath, newPath) {
233
+ const value = getNestedValue(obj, oldPath);
234
+ if (value === void 0) return false;
235
+ removeNestedValue(obj, oldPath);
236
+ setNestedValue(obj, newPath, value);
237
+ return true;
238
+ }
239
+ /**
240
+ * Validate a translation value. Returns a warning message if problematic, null if OK.
241
+ * This is soft validation — callers should warn but not block.
242
+ */
243
+ function validateTranslationValue(value) {
244
+ if (typeof value !== "string") return `Value must be a string, got ${typeof value}`;
245
+ const openBraces = (value.match(/\{/g) || []).length;
246
+ const closeBraces = (value.match(/\}/g) || []).length;
247
+ if (openBraces !== closeBraces) return `Unbalanced placeholder braces: ${openBraces} opening vs ${closeBraces} closing in "${value}"`;
248
+ if (value.includes("@:") && /@:\s*$/.test(value)) return `Malformed linked reference: "@:" at end of string with no target`;
249
+ return null;
250
+ }
251
+ //#endregion
252
+ //#region src/io/atomic-write.ts
253
+ /**
254
+ * Atomically write content to a file.
255
+ * Writes to a temp file first, then renames to the target path.
256
+ * Cleans up the temp file on failure.
257
+ *
258
+ * @param filePath - Target file path
259
+ * @param content - String content to write
260
+ * @param onSuccess - Optional callback after successful rename (e.g., to clear a cache entry)
261
+ */
262
+ async function atomicWrite(filePath, content, onSuccess) {
263
+ await mkdir(dirname(filePath), { recursive: true });
264
+ const tmpPath = join(dirname(filePath), `.${randomUUID()}.tmp`);
265
+ try {
266
+ await writeFile(tmpPath, content, "utf-8");
267
+ await rename(tmpPath, filePath);
268
+ onSuccess?.();
269
+ } catch (error) {
270
+ try {
271
+ await unlink(tmpPath);
272
+ } catch {}
273
+ throw error;
274
+ }
275
+ }
276
+ //#endregion
277
+ //#region src/io/json-writer.ts
278
+ async function writeLocaleFile(filePath, data, options = {}) {
279
+ const { indent = " ", trailingNewline = true, sortKeys = true } = options;
280
+ try {
281
+ const outputData = sortKeys ? sortKeysDeep(data) : data;
282
+ let content = JSON.stringify(outputData, null, indent);
283
+ if (trailingNewline) content += "\n";
284
+ await atomicWrite(filePath, content, () => clearFileCacheEntry(filePath));
285
+ } catch (error) {
286
+ if (error instanceof FileIOError) throw error;
287
+ throw new FileIOError(`Failed to write file: ${filePath}: ${toErrorMessage(error)}`, filePath);
288
+ }
289
+ }
290
+ async function writeReportFile(filePath, output, meta) {
291
+ const report = {
292
+ generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
293
+ tool: meta.tool,
294
+ args: meta.args,
295
+ ...output
296
+ };
297
+ const content = JSON.stringify(report, null, 2) + "\n";
298
+ try {
299
+ await atomicWrite(filePath, content);
300
+ } catch (error) {
301
+ if (error instanceof FileIOError) throw error;
302
+ throw new FileIOError(`Failed to write report file: ${filePath}: ${toErrorMessage(error)}`, filePath);
303
+ }
304
+ }
305
+ /**
306
+ * Write a GitLab Code Quality report: a bare JSON array — the format is
307
+ * externally specified, so no metadata wrapper (unlike writeReportFile).
308
+ */
309
+ async function writeCodequalityFile(filePath, issues) {
310
+ const content = JSON.stringify(issues, null, 2) + "\n";
311
+ try {
312
+ await atomicWrite(filePath, content);
313
+ } catch (error) {
314
+ if (error instanceof FileIOError) throw error;
315
+ throw new FileIOError(`Failed to write codequality file: ${filePath}: ${toErrorMessage(error)}`, filePath);
316
+ }
317
+ }
318
+ /**
319
+ * Read, mutate, and write back a single JSON locale file while preserving its
320
+ * existing formatting:
321
+ *
322
+ * - Indentation and trailing newline are detected from the file on disk
323
+ * (readLocaleFileWithMeta bypasses the mtime read cache by design — it needs
324
+ * the raw content; the subsequent write clears the cache entry, so cached
325
+ * readers stay consistent).
326
+ * - Existing keys keep their on-disk order; keys added by the mutation are
327
+ * inserted in sorted position among their siblings.
328
+ */
329
+ async function mutateLocaleFile(filePath, mutate) {
330
+ const { data, indent, trailingNewline } = await readLocaleFileWithMeta(filePath);
331
+ const reference = structuredClone(data);
332
+ mutate(data);
333
+ await writeLocaleFile(filePath, orderKeysPreserving(data, reference), {
334
+ indent,
335
+ trailingNewline,
336
+ sortKeys: false
337
+ });
338
+ }
339
+ //#endregion
340
+ export { readLocaleFile as _, atomicWrite as a, hasNestedKey as c, renameNestedKey as d, setNestedValue as f, clearFileCacheEntry as g, clearFileCache as h, writeReportFile as i, orderKeysPreserving as l, validateTranslationValue as m, writeCodequalityFile as n, getLeafKeys as o, sortKeysDeep as p, writeLocaleFile as r, getNestedValue as s, mutateLocaleFile as t, removeNestedValue as u, createReadCache as v };
341
+
342
+ //# sourceMappingURL=json-writer-ek8yEI5R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-writer-ek8yEI5R.js","names":[],"sources":["../src/io/read-cache.ts","../src/io/json-reader.ts","../src/io/key-operations.ts","../src/io/atomic-write.ts","../src/io/json-writer.ts"],"sourcesContent":["import { readFile, stat } from 'node:fs/promises'\nimport { existsSync } from 'node:fs'\nimport { FileIOError } from '../utils/errors'\nimport { toErrorMessage } from '../utils/errors'\n\n/**\n * Creates an mtime-based file read cache.\n * Files are re-read only when their modification timestamp changes.\n * Cached data is cloned via structuredClone to prevent mutation.\n *\n * @param parser - Function that parses raw file content into the desired type\n * @param label - Human-readable label for error messages (e.g., 'JSON', 'PHP')\n * @param validate - Optional post-parse validation that throws FileIOError on failure\n */\nexport function createReadCache<T>(\n parser: (content: string) => T,\n label: string,\n validate?: (parsed: T, filePath: string) => void,\n) {\n const cache = new Map<string, { data: T; mtime: number }>()\n\n async function read(filePath: string): Promise<T> {\n if (!existsSync(filePath)) {\n throw new FileIOError(`File not found: ${filePath}`, filePath, 'FILE_NOT_FOUND')\n }\n\n try {\n const fileStat = await stat(filePath)\n const mtime = fileStat.mtimeMs\n\n const cached = cache.get(filePath)\n if (cached && cached.mtime === mtime) {\n return structuredClone(cached.data)\n }\n\n const content = await readFile(filePath, 'utf-8')\n const parsed = parser(content)\n\n validate?.(parsed, filePath)\n\n cache.set(filePath, { data: structuredClone(parsed), mtime })\n return parsed\n } catch (error) {\n if (error instanceof FileIOError) throw error\n throw new FileIOError(\n `Failed to read ${label} file: ${filePath}: ${toErrorMessage(error)}`,\n filePath,\n )\n }\n }\n\n function clear(): void {\n cache.clear()\n }\n\n function clearEntry(filePath: string): void {\n cache.delete(filePath)\n }\n\n return { read, clear, clearEntry }\n}\n","import { existsSync } from 'node:fs'\nimport { readFile } from 'node:fs/promises'\nimport { FileIOError } from '../utils/errors'\nimport { toErrorMessage } from '../utils/errors'\nimport { createReadCache } from './read-cache'\n\nconst { read: readLocaleFile, clear: clearFileCache, clearEntry: clearFileCacheEntry } = createReadCache<Record<string, unknown>>(\n (content) => {\n try {\n return JSON.parse(content) as Record<string, unknown>\n } catch {\n throw new SyntaxError('Invalid JSON')\n }\n },\n 'JSON',\n (parsed, filePath) => {\n if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new FileIOError(`JSON file must contain an object: ${filePath}`, filePath, 'INVALID_JSON')\n }\n },\n)\n\nexport { readLocaleFile, clearFileCache, clearFileCacheEntry }\n\n/**\n * Detect the indentation style used in a JSON file.\n * Scans the first few indented lines to find the smallest indent unit.\n * Returns the indent string (e.g., '\\t', ' ', ' ').\n */\nexport function detectIndentation(content: string): string {\n const lines = content.split('\\n', 10)\n let minSpaces = Infinity\n let usesTabs = false\n\n for (const line of lines) {\n const indent = line.match(/^(\\s+)\\S/)?.[1]\n if (!indent) continue\n\n if (indent.includes('\\t')) {\n usesTabs = true\n break\n }\n\n if (indent.length < minSpaces) {\n minSpaces = indent.length\n }\n }\n\n if (usesTabs) return '\\t'\n if (minSpaces === Infinity) return '\\t' // no indentation found\n return ' '.repeat(minSpaces)\n}\n\n/**\n * Read a locale file and also return the raw content for format detection.\n * This function does NOT use the cache — it always reads fresh data from disk,\n * as it returns raw content and indent info needed for writes.\n */\nexport async function readLocaleFileWithMeta(filePath: string): Promise<{\n data: Record<string, unknown>\n rawContent: string\n indent: string\n trailingNewline: boolean\n}> {\n if (!existsSync(filePath)) {\n throw new FileIOError(`File not found: ${filePath}`, filePath, 'FILE_NOT_FOUND')\n }\n\n try {\n const rawContent = await readFile(filePath, 'utf-8')\n const data = JSON.parse(rawContent) as Record<string, unknown>\n const indent = detectIndentation(rawContent)\n const trailingNewline = rawContent.endsWith('\\n')\n\n return { data, rawContent, indent, trailingNewline }\n } catch (error) {\n if (error instanceof FileIOError) throw error\n if (error instanceof SyntaxError) {\n throw new FileIOError(`Invalid JSON in file: ${filePath}`, filePath, 'INVALID_JSON')\n }\n throw new FileIOError(\n `Failed to read file: ${filePath}: ${toErrorMessage(error)}`,\n filePath,\n )\n }\n}\n","import sortKeys from 'sort-keys'\n\n/**\n * Get a value from a nested object using a dot-separated path.\n */\nexport function getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n const parts = path.split('.')\n let current: unknown = obj\n for (const part of parts) {\n if (current === null || current === undefined || typeof current !== 'object') {\n return undefined\n }\n current = (current as Record<string, unknown>)[part]\n }\n return current\n}\n\n/**\n * Set a value in a nested object using a dot-separated path.\n * Creates intermediate objects as needed.\n */\nexport function setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): void {\n const parts = path.split('.')\n const lastKey = parts.pop()\n if (lastKey === undefined) return\n let current: Record<string, unknown> = obj\n for (const part of parts) {\n if (!(part in current) || typeof current[part] !== 'object' || current[part] === null) {\n current[part] = {}\n }\n current = current[part] as Record<string, unknown>\n }\n current[lastKey] = value\n}\n\n/**\n * Remove a value from a nested object using a dot-separated path.\n * Cleans up empty parent objects after removal.\n * Returns true if the key was found and removed.\n */\nexport function removeNestedValue(obj: Record<string, unknown>, path: string): boolean {\n const parts = path.split('.')\n const lastKey = parts.pop()\n if (lastKey === undefined) return false\n const parents: Array<{ obj: Record<string, unknown>; key: string }> = []\n let current: Record<string, unknown> = obj\n\n for (const part of parts) {\n if (!(part in current) || typeof current[part] !== 'object' || current[part] === null) {\n return false\n }\n parents.push({ obj: current, key: part })\n current = current[part] as Record<string, unknown>\n }\n\n if (!(lastKey in current)) {\n return false\n }\n\n delete current[lastKey]\n\n for (const { obj: parentObj, key } of [...parents].reverse()) {\n const child = parentObj[key] as Record<string, unknown>\n if (Object.keys(child).length === 0) {\n delete parentObj[key]\n } else {\n break\n }\n }\n\n return true\n}\n\n/**\n * Check if a key exists in a nested object.\n */\nexport function hasNestedKey(obj: Record<string, unknown>, path: string): boolean {\n return getNestedValue(obj, path) !== undefined\n}\n\n/**\n * Get all leaf keys as dot-separated paths.\n * A leaf key is one whose value is not a plain object (i.e., it's a string, number, array, etc.).\n */\nexport function getLeafKeys(obj: Record<string, unknown>, prefix = '', depth = 0): string[] {\n if (depth > 200) return [] // guard against deeply nested objects\n const keys: string[] = []\n for (const key of Object.keys(obj)) {\n const fullPath = prefix ? `${prefix}.${key}` : key\n const value = obj[key]\n if (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n keys.push(...getLeafKeys(value as Record<string, unknown>, fullPath, depth + 1))\n } else {\n keys.push(fullPath)\n }\n }\n return keys\n}\n\n/**\n * Sort keys alphabetically at every nesting level (deep).\n * Returns a new object — does not mutate the input.\n */\nexport const sortKeysDeep = (obj: Record<string, unknown>): Record<string, unknown> =>\n sortKeys(obj, { deep: true }) as Record<string, unknown>\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\n/**\n * Reorder `data` (deeply) against a `reference` object that carries the\n * authoritative key order (typically the on-disk state before a mutation):\n *\n * - Keys that also exist in `reference` keep the reference's relative order.\n * - Keys new to `data` are inserted in sorted position among their siblings\n * (after the last existing sibling that sorts before them), so additions\n * land alphabetically without re-sorting existing keys.\n * - Without a reference, all keys are sorted (equivalent to sortKeysDeep).\n *\n * Returns a new object — does not mutate the input.\n */\nexport function orderKeysPreserving(\n data: Record<string, unknown>,\n reference?: Record<string, unknown>,\n): Record<string, unknown> {\n const orderedKeys = reference ? Object.keys(reference).filter(k => k in data) : []\n const existing = new Set(orderedKeys)\n const newKeys = Object.keys(data).filter(k => !existing.has(k)).sort()\n\n for (const key of newKeys) {\n let insertAt = 0\n for (let i = orderedKeys.length - 1; i >= 0; i--) {\n const existingKey = orderedKeys[i]\n if (existingKey !== undefined && existingKey <= key) {\n insertAt = i + 1\n break\n }\n }\n orderedKeys.splice(insertAt, 0, key)\n }\n\n const result: Record<string, unknown> = {}\n for (const key of orderedKeys) {\n result[key] = orderValuePreserving(data[key], reference?.[key])\n }\n return result\n}\n\nfunction orderValuePreserving(value: unknown, refValue: unknown): unknown {\n if (Array.isArray(value)) {\n const refArray = Array.isArray(refValue) ? refValue : undefined\n return value.map((item, i) => orderValuePreserving(item, refArray?.[i]))\n }\n if (isPlainObject(value)) {\n return orderKeysPreserving(value, isPlainObject(refValue) ? refValue : undefined)\n }\n return value\n}\n\n/**\n * Rename a key in a nested object. Preserves the value.\n * Returns true if the old key was found and renamed.\n */\nexport function renameNestedKey(\n obj: Record<string, unknown>,\n oldPath: string,\n newPath: string,\n): boolean {\n const value = getNestedValue(obj, oldPath)\n if (value === undefined) {\n return false\n }\n removeNestedValue(obj, oldPath)\n setNestedValue(obj, newPath, value)\n return true\n}\n\n/**\n * Validate a translation value. Returns a warning message if problematic, null if OK.\n * This is soft validation — callers should warn but not block.\n */\nexport function validateTranslationValue(value: unknown): string | null {\n if (typeof value !== 'string') {\n return `Value must be a string, got ${typeof value}`\n }\n\n const openBraces = (value.match(/\\{/g) || []).length\n const closeBraces = (value.match(/\\}/g) || []).length\n if (openBraces !== closeBraces) {\n return `Unbalanced placeholder braces: ${openBraces} opening vs ${closeBraces} closing in \"${value}\"`\n }\n\n if (value.includes('@:') && /@:\\s*$/.test(value)) {\n return `Malformed linked reference: \"@:\" at end of string with no target`\n }\n\n return null\n}\n","import { writeFile, rename, mkdir, unlink } from 'node:fs/promises'\nimport { dirname, join } from 'node:path'\nimport { randomUUID } from 'node:crypto'\n\n/**\n * Atomically write content to a file.\n * Writes to a temp file first, then renames to the target path.\n * Cleans up the temp file on failure.\n *\n * @param filePath - Target file path\n * @param content - String content to write\n * @param onSuccess - Optional callback after successful rename (e.g., to clear a cache entry)\n */\nexport async function atomicWrite(\n filePath: string,\n content: string,\n onSuccess?: () => void,\n): Promise<void> {\n await mkdir(dirname(filePath), { recursive: true })\n const tmpPath = join(dirname(filePath), `.${randomUUID()}.tmp`)\n\n try {\n await writeFile(tmpPath, content, 'utf-8')\n await rename(tmpPath, filePath)\n onSuccess?.()\n } catch (error) {\n try {\n await unlink(tmpPath)\n } catch {\n // Ignore cleanup errors\n }\n throw error\n }\n}\n","import { FileIOError } from '../utils/errors'\nimport { toErrorMessage } from '../utils/errors'\nimport { sortKeysDeep, orderKeysPreserving } from './key-operations'\nimport { clearFileCacheEntry, readLocaleFileWithMeta } from './json-reader'\nimport { atomicWrite } from './atomic-write'\n\nexport interface WriteOptions {\n indent?: string\n trailingNewline?: boolean\n sortKeys?: boolean\n}\n\nexport async function writeLocaleFile(\n filePath: string,\n data: Record<string, unknown>,\n options: WriteOptions = {},\n): Promise<void> {\n const {\n indent = '\\t',\n trailingNewline = true,\n sortKeys = true,\n } = options\n\n try {\n const outputData = sortKeys ? sortKeysDeep(data) : data\n let content = JSON.stringify(outputData, null, indent)\n if (trailingNewline) {\n content += '\\n'\n }\n\n await atomicWrite(filePath, content, () => clearFileCacheEntry(filePath))\n } catch (error) {\n if (error instanceof FileIOError) throw error\n throw new FileIOError(\n `Failed to write file: ${filePath}: ${toErrorMessage(error)}`,\n filePath,\n )\n }\n}\n\nexport async function writeReportFile(\n filePath: string,\n output: object,\n meta: { tool: string; args: Record<string, unknown> },\n): Promise<void> {\n const report = {\n generatedAt: new Date().toISOString(),\n tool: meta.tool,\n args: meta.args,\n ...output,\n }\n\n const content = JSON.stringify(report, null, 2) + '\\n'\n\n try {\n await atomicWrite(filePath, content)\n } catch (error) {\n if (error instanceof FileIOError) throw error\n throw new FileIOError(\n `Failed to write report file: ${filePath}: ${toErrorMessage(error)}`,\n filePath,\n )\n }\n}\n\n/**\n * Write a GitLab Code Quality report: a bare JSON array — the format is\n * externally specified, so no metadata wrapper (unlike writeReportFile).\n */\nexport async function writeCodequalityFile(\n filePath: string,\n issues: unknown[],\n): Promise<void> {\n const content = JSON.stringify(issues, null, 2) + '\\n'\n\n try {\n await atomicWrite(filePath, content)\n } catch (error) {\n if (error instanceof FileIOError) throw error\n throw new FileIOError(\n `Failed to write codequality file: ${filePath}: ${toErrorMessage(error)}`,\n filePath,\n )\n }\n}\n\n/**\n * Read, mutate, and write back a single JSON locale file while preserving its\n * existing formatting:\n *\n * - Indentation and trailing newline are detected from the file on disk\n * (readLocaleFileWithMeta bypasses the mtime read cache by design — it needs\n * the raw content; the subsequent write clears the cache entry, so cached\n * readers stay consistent).\n * - Existing keys keep their on-disk order; keys added by the mutation are\n * inserted in sorted position among their siblings.\n */\nexport async function mutateLocaleFile(\n filePath: string,\n mutate: (data: Record<string, unknown>) => void,\n): Promise<void> {\n const { data, indent, trailingNewline } = await readLocaleFileWithMeta(filePath)\n // Snapshot the on-disk key order before the mutation runs so existing keys\n // keep their positions even if the mutation rebuilds objects.\n const reference = structuredClone(data)\n mutate(data)\n const ordered = orderKeysPreserving(data, reference)\n await writeLocaleFile(filePath, ordered, { indent, trailingNewline, sortKeys: false })\n}\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { s as findLocaleImpl } from "./providers-BbVPelvp.js";
2
+ import { r as validateReportPath } from "./report-By1-5JtO.js";
3
+ import "./project-config-eLR0J377.js";
4
+ import "./json-writer-ek8yEI5R.js";
5
+ import "./php-reader-DRpcRVzv.js";
6
+ import "./detector-B4z_RZde.js";
7
+ import { A as extractJsonFromResponse, C as listNamespaces, D as translateMissing, E as translateKey, M as buildTranslationUserMessage, N as validatePlaceholders, P as resolveProtectedLocales, S as listLocaleDirs, T as computeProgressTotal, _ as describeProject, a as scanCodeUsage, b as getMissingTranslations, c as moveTranslationKey, d as scaffoldLocaleFiles, f as writeTranslations, i as removeOrphanKeys, j as buildTranslationSystemPrompt, l as removeTranslations, n as findDuplicateKeys, o as getTranslationStatus, r as findOrphanKeys, s as initProjectConfig, t as checkUndefinedKeys, u as renameTranslationKey, v as detectConfig, w as searchTranslations, x as getTranslations, y as findEmptyTranslations } from "./operations-Daf2Ommm.js";
8
+ export { buildTranslationSystemPrompt, buildTranslationUserMessage, checkUndefinedKeys, computeProgressTotal, describeProject, detectConfig, extractJsonFromResponse, findDuplicateKeys, findEmptyTranslations, findLocaleImpl, findOrphanKeys, getMissingTranslations, getTranslationStatus, getTranslations, initProjectConfig, listLocaleDirs, listNamespaces, moveTranslationKey, removeOrphanKeys, removeTranslations, renameTranslationKey, resolveProtectedLocales, scaffoldLocaleFiles, scanCodeUsage, searchTranslations, translateKey, translateMissing, validatePlaceholders, validateReportPath, writeTranslations };