@localheroai/cli 0.0.49 → 0.0.50-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,9 @@
1
1
  import { promises as fs } from 'fs';
2
2
  import yaml from 'yaml';
3
3
  import { SPECIAL_CHARS_REGEX, INTERPOLATION, fileExists, tryParseJsonArray } from './common.js';
4
+ import { spliceYamlUpdate, spliceYamlDelete, hasUnsupportedValueShape } from './yaml-splicer.js';
4
5
  const NEEDS_QUOTES_REGEX = /[:,%{}[\]|><!&*?-]/;
5
- const LINE_WIDTH = 0; // Disable line wrapping to preserve original formatting
6
+ const LINE_WIDTH = 0;
6
7
  function detectYamlOptions(content) {
7
8
  const lines = content
8
9
  .split('\n')
@@ -39,8 +40,6 @@ function needsQuotes(str) {
39
40
  function shouldForceQuotes(str) {
40
41
  if (typeof str !== 'string')
41
42
  return false;
42
- // Special case: strings containing quotes but no interpolation
43
- // don't need outer quotes
44
43
  if (str.includes('"') && !str.includes(INTERPOLATION)) {
45
44
  return false;
46
45
  }
@@ -105,7 +104,6 @@ async function updateYamlTranslations(yamlDoc, translations, languageCode) {
105
104
  }
106
105
  const nextNode = current.get(key);
107
106
  if (!yaml.isMap(nextNode)) {
108
- // If the existing node is not a mapping, replace it with an empty mapping
109
107
  const newNode = yamlDoc.createNode({});
110
108
  current.set(key, newNode);
111
109
  current = newNode;
@@ -146,63 +144,58 @@ async function updateYamlTranslations(yamlDoc, translations, languageCode) {
146
144
  }
147
145
  }
148
146
  export async function updateYamlFile(filePath, translations, languageCode) {
149
- const { doc: yamlDoc, created, options } = await createYamlDocument(filePath);
150
- await updateYamlTranslations(yamlDoc, translations, languageCode);
151
- await fs.writeFile(filePath, yamlDoc.toString({
147
+ const exists = await fileExists(filePath);
148
+ if (!exists) {
149
+ const { doc: yamlDoc, created, options } = await createYamlDocument(filePath);
150
+ await updateYamlTranslations(yamlDoc, translations, languageCode);
151
+ await fs.writeFile(filePath, yamlDoc.toString({
152
+ indent: options.indent,
153
+ indentSeq: options.indentSeq,
154
+ lineWidth: LINE_WIDTH
155
+ }));
156
+ return {
157
+ updatedKeys: Object.keys(translations),
158
+ created
159
+ };
160
+ }
161
+ const source = await fs.readFile(filePath, 'utf8');
162
+ const options = detectYamlOptions(source);
163
+ const doc = yaml.parseDocument(source);
164
+ clearDuplicateKeyErrors(doc, filePath);
165
+ if (Object.keys(translations).length === 0) {
166
+ return { updatedKeys: [], created: false };
167
+ }
168
+ const canSplice = !hasUnsupportedValueShape(translations) && doc.contents && yaml.isMap(doc.contents);
169
+ if (canSplice) {
170
+ const { output, applied } = spliceYamlUpdate(source, doc, translations, languageCode, options.indent);
171
+ if (applied) {
172
+ await fs.writeFile(filePath, output);
173
+ return {
174
+ updatedKeys: Object.keys(translations),
175
+ created: false
176
+ };
177
+ }
178
+ }
179
+ await updateYamlTranslations(doc, translations, languageCode);
180
+ await fs.writeFile(filePath, doc.toString({
152
181
  indent: options.indent,
153
182
  indentSeq: options.indentSeq,
154
183
  lineWidth: LINE_WIDTH
155
184
  }));
156
185
  return {
157
186
  updatedKeys: Object.keys(translations),
158
- created
187
+ created: false
159
188
  };
160
189
  }
161
190
  export async function deleteKeysFromYamlFile(filePath, keysToDelete, languageCode) {
162
191
  try {
163
- const content = await fs.readFile(filePath, 'utf8');
164
- const yamlDoc = yaml.parseDocument(content);
165
- clearDuplicateKeyErrors(yamlDoc, filePath);
166
- const contents = yamlDoc.contents;
167
- if (!contents || !contents.has(languageCode)) {
168
- return [];
169
- }
170
- const langNode = contents.get(languageCode);
171
- const deletedKeys = [];
172
- for (const keyPath of keysToDelete) {
173
- const keys = keyPath.split('.');
174
- const lastIndex = keys.length - 1;
175
- let current = langNode;
176
- let parent = null;
177
- let keyInParent = '';
178
- let found = true;
179
- for (let i = 0; i < lastIndex; i++) {
180
- const key = keys[i];
181
- if (!current.has(key)) {
182
- found = false;
183
- break;
184
- }
185
- parent = current;
186
- keyInParent = key;
187
- current = current.get(key);
188
- }
189
- if (found) {
190
- const lastKey = keys[lastIndex];
191
- if (current.has(lastKey)) {
192
- current.delete(lastKey);
193
- deletedKeys.push(keyPath);
194
- if (parent && current.items.length === 0) {
195
- parent.delete(keyInParent);
196
- }
197
- }
198
- }
192
+ const source = await fs.readFile(filePath, 'utf8');
193
+ const doc = yaml.parseDocument(source);
194
+ clearDuplicateKeyErrors(doc, filePath);
195
+ const { output, deletedKeys } = spliceYamlDelete(source, doc, keysToDelete, languageCode);
196
+ if (deletedKeys.length > 0) {
197
+ await fs.writeFile(filePath, output);
199
198
  }
200
- const options = detectYamlOptions(content);
201
- await fs.writeFile(filePath, yamlDoc.toString({
202
- indent: options.indent,
203
- indentSeq: options.indentSeq,
204
- lineWidth: LINE_WIDTH
205
- }));
206
199
  return deletedKeys;
207
200
  }
208
201
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"yaml-handler.js","sourceRoot":"","sources":["../../../src/utils/translation-updater/yaml-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yaml-handler.js","sourceRoot":"","sources":["../../../src/utils/translation-updater/yaml-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,410 @@
1
+ /**
2
+ * Byte-range splice writer for YAML files.
3
+ *
4
+ * Why this exists: `yaml@2.x` does not preserve original line layout on
5
+ * round-trip. Plain scalars written across multiple lines (no `>` / `|`
6
+ * marker) parse with no metadata distinguishing them from single-line plain
7
+ * scalars, and the emitter decides line layout purely from `lineWidth`. The
8
+ * maintainer's position is that lossless round-trip is out of scope for the
9
+ * Document API (eemeli/yaml discussion #510, issue #392 closed as not
10
+ * planned). For our use case we must not reformat scalars we did not touch,
11
+ * so we work around this by computing byte-range patches and splicing them
12
+ * into the original source.
13
+ */
14
+ import yaml from 'yaml';
15
+ import { tryParseJsonArray } from './common.js';
16
+ function getNodeRange(node) {
17
+ if (node && typeof node === 'object' && 'range' in node) {
18
+ const range = node.range;
19
+ if (Array.isArray(range) && range.length === 3) {
20
+ return range;
21
+ }
22
+ }
23
+ return null;
24
+ }
25
+ function columnOfOffset(source, offset) {
26
+ let col = 0;
27
+ for (let i = offset - 1; i >= 0; i--) {
28
+ if (source[i] === '\n')
29
+ break;
30
+ col++;
31
+ }
32
+ return col;
33
+ }
34
+ function lineStartColumnOf(source, offset) {
35
+ let lineStart = offset;
36
+ while (lineStart > 0 && source[lineStart - 1] !== '\n') {
37
+ lineStart--;
38
+ }
39
+ let col = 0;
40
+ while (lineStart + col < source.length && (source[lineStart + col] === ' ' || source[lineStart + col] === '\t')) {
41
+ col++;
42
+ }
43
+ return col;
44
+ }
45
+ const SCALAR_KEY = '__lh_scalar__';
46
+ function emitScalarViaLibrary(value, existingType, indentUnit) {
47
+ const doc = new yaml.Document();
48
+ doc.contents = doc.createNode({});
49
+ const rootMap = doc.contents;
50
+ if (typeof value === 'string' && !value.includes('\n') &&
51
+ (existingType === 'QUOTE_SINGLE' || existingType === 'QUOTE_DOUBLE')) {
52
+ const scalar = new yaml.Scalar(value);
53
+ scalar.type = existingType;
54
+ rootMap.set(SCALAR_KEY, scalar);
55
+ }
56
+ else {
57
+ rootMap.set(SCALAR_KEY, doc.createNode(value));
58
+ }
59
+ return doc.toString({ indent: indentUnit, lineWidth: 0 });
60
+ }
61
+ function indentContinuationLines(text, extraIndent) {
62
+ if (extraIndent === 0)
63
+ return text;
64
+ const pad = ' '.repeat(extraIndent);
65
+ const lines = text.split('\n');
66
+ return lines
67
+ .map((line, idx) => (idx === 0 || line.length === 0) ? line : pad + line)
68
+ .join('\n');
69
+ }
70
+ function indentAllLines(text, extraIndent) {
71
+ if (extraIndent === 0)
72
+ return text;
73
+ const pad = ' '.repeat(extraIndent);
74
+ return text
75
+ .split('\n')
76
+ .map(line => line.length > 0 ? pad + line : line)
77
+ .join('\n');
78
+ }
79
+ function serializeScalarValue(value, existingType, keyColumn, indentUnit) {
80
+ const emitted = emitScalarViaLibrary(value, existingType, indentUnit);
81
+ const prefix = `${SCALAR_KEY}: `;
82
+ const prefixIdx = emitted.indexOf(prefix);
83
+ if (prefixIdx < 0) {
84
+ return JSON.stringify(value);
85
+ }
86
+ const valueText = emitted.slice(prefixIdx + prefix.length).replace(/\n$/, '');
87
+ return indentContinuationLines(valueText, keyColumn);
88
+ }
89
+ function navigatePath(doc, fullPath) {
90
+ if (!doc.contents || !yaml.isMap(doc.contents)) {
91
+ return { found: false };
92
+ }
93
+ let current = doc.contents;
94
+ let lastFoundMap = current;
95
+ let lastFoundRange = getNodeRange(current);
96
+ for (let i = 0; i < fullPath.length; i++) {
97
+ const key = fullPath[i];
98
+ if (!current.has(key)) {
99
+ return {
100
+ found: false,
101
+ insertionParent: lastFoundMap,
102
+ insertionParentRange: lastFoundRange ?? undefined,
103
+ remainingPath: fullPath.slice(i)
104
+ };
105
+ }
106
+ const next = current.get(key, true);
107
+ const isLast = i === fullPath.length - 1;
108
+ if (isLast) {
109
+ if (yaml.isScalar(next)) {
110
+ return { found: true, scalarNode: next };
111
+ }
112
+ return {
113
+ found: false,
114
+ typeCollision: true
115
+ };
116
+ }
117
+ if (!yaml.isMap(next)) {
118
+ return {
119
+ found: false,
120
+ typeCollision: true,
121
+ insertionParent: lastFoundMap,
122
+ insertionParentRange: lastFoundRange ?? undefined,
123
+ remainingPath: fullPath.slice(i)
124
+ };
125
+ }
126
+ current = next;
127
+ lastFoundMap = current;
128
+ lastFoundRange = getNodeRange(current);
129
+ }
130
+ return { found: false };
131
+ }
132
+ function isLeaf(node) {
133
+ return node.__leaf__ === true;
134
+ }
135
+ function insertIntoTree(tree, path, value) {
136
+ if (path.length === 0)
137
+ return;
138
+ let current = tree;
139
+ for (let i = 0; i < path.length - 1; i++) {
140
+ const key = path[i];
141
+ const existing = current.get(key);
142
+ if (!existing || isLeaf(existing)) {
143
+ const next = new Map();
144
+ current.set(key, next);
145
+ current = next;
146
+ }
147
+ else {
148
+ current = existing;
149
+ }
150
+ }
151
+ current.set(path[path.length - 1], { __leaf__: true, value });
152
+ }
153
+ function treeToPlainObject(tree) {
154
+ const out = {};
155
+ for (const [key, node] of tree.entries()) {
156
+ out[key] = isLeaf(node) ? node.value : treeToPlainObject(node);
157
+ }
158
+ return out;
159
+ }
160
+ function buildInsertionTextFromTree(tree, parentColumn, indentUnit) {
161
+ const plain = treeToPlainObject(tree);
162
+ const doc = new yaml.Document();
163
+ doc.contents = doc.createNode(plain);
164
+ const emitted = doc.toString({ indent: indentUnit, lineWidth: 0 });
165
+ return indentAllLines(emitted, parentColumn);
166
+ }
167
+ function ensureAfterNewline(source, offset) {
168
+ if (offset > 0 && source[offset - 1] === '\n')
169
+ return offset;
170
+ let scan = offset;
171
+ while (scan < source.length && source[scan] !== '\n')
172
+ scan++;
173
+ if (scan < source.length)
174
+ return scan + 1;
175
+ return source.length;
176
+ }
177
+ function findInsertionOffset(source, parent, parentRange) {
178
+ const items = parent.items;
179
+ if (items.length > 0) {
180
+ const lastItem = items[items.length - 1];
181
+ const lastValue = lastItem.value;
182
+ const lastValueRange = lastValue ? getNodeRange(lastValue) : null;
183
+ if (lastValueRange)
184
+ return ensureAfterNewline(source, lastValueRange[2]);
185
+ const lastKeyRange = getNodeRange(lastItem.key);
186
+ if (lastKeyRange)
187
+ return ensureAfterNewline(source, lastKeyRange[2]);
188
+ }
189
+ if (parentRange)
190
+ return ensureAfterNewline(source, parentRange[2]);
191
+ return source.length;
192
+ }
193
+ function resolveParentContext(source, parent, parentRange, indentUnit) {
194
+ let column = 0;
195
+ if (parent.items.length > 0) {
196
+ const firstChild = parent.items[0];
197
+ const firstKeyRange = getNodeRange(firstChild.key);
198
+ column = firstKeyRange ? columnOfOffset(source, firstKeyRange[0]) : indentUnit;
199
+ }
200
+ else if (parentRange) {
201
+ column = columnOfOffset(source, parentRange[0]) + indentUnit;
202
+ }
203
+ const insertionOffset = findInsertionOffset(source, parent, parentRange);
204
+ return { column, insertionOffset };
205
+ }
206
+ function applyPatches(source, patches) {
207
+ const sorted = [...patches].sort((a, b) => b.start - a.start);
208
+ let result = source;
209
+ for (const patch of sorted) {
210
+ result = result.slice(0, patch.start) + patch.text + result.slice(patch.end);
211
+ }
212
+ return result;
213
+ }
214
+ export function hasUnsupportedValueShape(translations) {
215
+ for (const value of Object.values(translations)) {
216
+ if (Array.isArray(value))
217
+ return true;
218
+ if (typeof value === 'string' && tryParseJsonArray(value))
219
+ return true;
220
+ }
221
+ return false;
222
+ }
223
+ export function spliceYamlUpdate(source, doc, translations, languageCode, indentUnit) {
224
+ if (!doc.contents || !yaml.isMap(doc.contents)) {
225
+ return { output: source, applied: false };
226
+ }
227
+ const patches = [];
228
+ const insertGroups = new Map();
229
+ for (const [keyPath, value] of Object.entries(translations)) {
230
+ const pathParts = [languageCode, ...keyPath.split('.')];
231
+ const nav = navigatePath(doc, pathParts);
232
+ if (nav.typeCollision) {
233
+ return { output: source, applied: false };
234
+ }
235
+ if (nav.found && nav.scalarNode) {
236
+ const existingType = nav.scalarNode.type ?? null;
237
+ if (existingType === 'BLOCK_LITERAL' || existingType === 'BLOCK_FOLDED') {
238
+ return { output: source, applied: false };
239
+ }
240
+ const range = getNodeRange(nav.scalarNode);
241
+ if (!range) {
242
+ return { output: source, applied: false };
243
+ }
244
+ const keyColumn = lineStartColumnOf(source, range[0]);
245
+ const serialized = serializeScalarValue(value, existingType, keyColumn, indentUnit);
246
+ patches.push({ start: range[0], end: range[1], text: serialized });
247
+ continue;
248
+ }
249
+ if (!nav.insertionParent || !nav.remainingPath || nav.remainingPath.length === 0) {
250
+ return { output: source, applied: false };
251
+ }
252
+ const parentKey = `${(nav.insertionParentRange ?? [0])[0]}`;
253
+ let group = insertGroups.get(parentKey);
254
+ if (!group) {
255
+ group = {
256
+ parent: nav.insertionParent,
257
+ parentRange: nav.insertionParentRange,
258
+ tree: new Map()
259
+ };
260
+ insertGroups.set(parentKey, group);
261
+ }
262
+ insertIntoTree(group.tree, nav.remainingPath, value);
263
+ }
264
+ for (const group of insertGroups.values()) {
265
+ const ctx = resolveParentContext(source, group.parent, group.parentRange, indentUnit);
266
+ const text = buildInsertionTextFromTree(group.tree, ctx.column, indentUnit);
267
+ if (text.length > 0) {
268
+ const insertStart = ctx.insertionOffset;
269
+ const prefix = insertStart > 0 && source[insertStart - 1] !== '\n' ? '\n' : '';
270
+ patches.push({ start: insertStart, end: insertStart, text: prefix + text });
271
+ }
272
+ }
273
+ return { output: applyPatches(source, patches), applied: true };
274
+ }
275
+ function locateDeletionTarget(doc, keyPath, fullPath) {
276
+ if (!doc.contents || !yaml.isMap(doc.contents))
277
+ return null;
278
+ let current = doc.contents;
279
+ const ancestorChain = [];
280
+ for (let i = 0; i < fullPath.length - 1; i++) {
281
+ const key = fullPath[i];
282
+ const itemInParent = current.items.find(it => {
283
+ const k = it.key;
284
+ return k && k.value === key;
285
+ });
286
+ if (!itemInParent)
287
+ return null;
288
+ const next = itemInParent.value;
289
+ if (!yaml.isMap(next))
290
+ return null;
291
+ ancestorChain.push({ map: current, keyName: key, itemInParent });
292
+ current = next;
293
+ }
294
+ const leafKey = fullPath[fullPath.length - 1];
295
+ const leafItem = current.items.find(it => {
296
+ const k = it.key;
297
+ return k && k.value === leafKey;
298
+ });
299
+ if (!leafItem)
300
+ return null;
301
+ return { keyPath, parentMap: current, leafKey, leafItem, ancestorChain };
302
+ }
303
+ function computeDeletionRange(source, keyRange, nodeEnd) {
304
+ let start = keyRange[0];
305
+ while (start > 0 && (source[start - 1] === ' ' || source[start - 1] === '\t')) {
306
+ start--;
307
+ }
308
+ let end = nodeEnd;
309
+ if (end > 0 && source[end - 1] !== '\n') {
310
+ while (end < source.length && (source[end] === ' ' || source[end] === '\t')) {
311
+ end++;
312
+ }
313
+ if (end < source.length && source[end] === '\n') {
314
+ end++;
315
+ }
316
+ }
317
+ return { start, end };
318
+ }
319
+ function patchForItem(source, item) {
320
+ const keyRange = getNodeRange(item.key);
321
+ if (!keyRange)
322
+ return null;
323
+ const valueRange = item.value ? getNodeRange(item.value) : null;
324
+ const nodeEnd = valueRange ? valueRange[2] : keyRange[2];
325
+ const { start, end } = computeDeletionRange(source, keyRange, nodeEnd);
326
+ return { start, end, text: '' };
327
+ }
328
+ export function spliceYamlDelete(source, doc, keysToDelete, languageCode) {
329
+ if (!doc.contents || !yaml.isMap(doc.contents) || !doc.contents.has(languageCode)) {
330
+ return { output: source, deletedKeys: [] };
331
+ }
332
+ const targets = [];
333
+ for (const keyPath of keysToDelete) {
334
+ const fullPath = [languageCode, ...keyPath.split('.')];
335
+ const target = locateDeletionTarget(doc, keyPath, fullPath);
336
+ if (target)
337
+ targets.push(target);
338
+ }
339
+ if (targets.length === 0) {
340
+ return { output: source, deletedKeys: [] };
341
+ }
342
+ const deletionsByParent = new Map();
343
+ for (const target of targets) {
344
+ let set = deletionsByParent.get(target.parentMap);
345
+ if (!set) {
346
+ set = new Set();
347
+ deletionsByParent.set(target.parentMap, set);
348
+ }
349
+ set.add(target.leafKey);
350
+ }
351
+ const collapsedMaps = new Set();
352
+ for (const target of targets) {
353
+ const parentSet = deletionsByParent.get(target.parentMap);
354
+ const parentAllDeleted = target.parentMap.items.every(it => {
355
+ const k = it.key;
356
+ return k && parentSet.has(k.value);
357
+ });
358
+ if (!parentAllDeleted)
359
+ continue;
360
+ collapsedMaps.add(target.parentMap);
361
+ for (let i = target.ancestorChain.length - 1; i >= 0; i--) {
362
+ const ancestor = target.ancestorChain[i];
363
+ const childMap = i === target.ancestorChain.length - 1
364
+ ? target.parentMap
365
+ : target.ancestorChain[i + 1].map;
366
+ if (!collapsedMaps.has(childMap))
367
+ break;
368
+ const ancestorMap = ancestor.map;
369
+ const onlyOneChild = ancestorMap.items.length === 1;
370
+ const matches = ancestorMap.items.every(it => {
371
+ const k = it.key;
372
+ return k && k.value === ancestor.keyName;
373
+ });
374
+ if (onlyOneChild && matches) {
375
+ collapsedMaps.add(ancestorMap);
376
+ }
377
+ else {
378
+ break;
379
+ }
380
+ }
381
+ }
382
+ const patches = [];
383
+ const emittedItems = new Set();
384
+ for (const target of targets) {
385
+ let outermostCollapsedItem = null;
386
+ for (let i = target.ancestorChain.length - 1; i >= 0; i--) {
387
+ const ancestor = target.ancestorChain[i];
388
+ const childMap = i === target.ancestorChain.length - 1
389
+ ? target.parentMap
390
+ : target.ancestorChain[i + 1].map;
391
+ if (collapsedMaps.has(childMap)) {
392
+ outermostCollapsedItem = ancestor.itemInParent;
393
+ }
394
+ else {
395
+ break;
396
+ }
397
+ }
398
+ const itemToEmit = outermostCollapsedItem ?? target.leafItem;
399
+ if (emittedItems.has(itemToEmit))
400
+ continue;
401
+ const patch = patchForItem(source, itemToEmit);
402
+ if (patch) {
403
+ patches.push(patch);
404
+ emittedItems.add(itemToEmit);
405
+ }
406
+ }
407
+ const deletedKeys = targets.map(t => t.keyPath);
408
+ return { output: applyPatches(source, patches), deletedKeys };
409
+ }
410
+ //# sourceMappingURL=yaml-splicer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-splicer.js","sourceRoot":"","sources":["../../../src/utils/translation-updater/yaml-splicer.ts"],"names":[],"mappings":"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"}
@@ -235,7 +235,8 @@ export function batchKeysWithMissing(sourceFiles, missingByLocale) {
235
235
  sourceFile: {
236
236
  path: sourceFile.path,
237
237
  format: sourceFile.format,
238
- content: Buffer.from(JSON.stringify(contentObj)).toString('base64')
238
+ content: Buffer.from(JSON.stringify(contentObj)).toString('base64'),
239
+ ...(sourceFile.multiLanguage === true && { multi_language: true })
239
240
  },
240
241
  localeEntries: data.localeEntries,
241
242
  locales: Array.from(data.locales)