@se-studio/contentful-cms 1.0.18 → 1.0.20

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 (81) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +0 -12
  3. package/dist/bin/cms-edit.js +66 -9
  4. package/dist/bin/cms-edit.js.map +1 -1
  5. package/dist/commands/asset.d.ts.map +1 -1
  6. package/dist/commands/asset.js +122 -16
  7. package/dist/commands/asset.js.map +1 -1
  8. package/dist/commands/diff.d.ts.map +1 -1
  9. package/dist/commands/diff.js +119 -26
  10. package/dist/commands/diff.js.map +1 -1
  11. package/dist/commands/discard.d.ts.map +1 -1
  12. package/dist/commands/discard.js +26 -0
  13. package/dist/commands/discard.js.map +1 -1
  14. package/dist/commands/entry-search.d.ts.map +1 -1
  15. package/dist/commands/entry-search.js +10 -1
  16. package/dist/commands/entry-search.js.map +1 -1
  17. package/dist/commands/health.d.ts +4 -0
  18. package/dist/commands/health.d.ts.map +1 -0
  19. package/dist/commands/health.js +167 -0
  20. package/dist/commands/health.js.map +1 -0
  21. package/dist/commands/list.d.ts.map +1 -1
  22. package/dist/commands/list.js +7 -0
  23. package/dist/commands/list.js.map +1 -1
  24. package/dist/commands/peek.d.ts +4 -0
  25. package/dist/commands/peek.d.ts.map +1 -0
  26. package/dist/commands/peek.js +94 -0
  27. package/dist/commands/peek.js.map +1 -0
  28. package/dist/commands/revert.d.ts +4 -0
  29. package/dist/commands/revert.d.ts.map +1 -0
  30. package/dist/commands/revert.js +142 -0
  31. package/dist/commands/revert.js.map +1 -0
  32. package/dist/commands/rtf.d.ts +1 -0
  33. package/dist/commands/rtf.d.ts.map +1 -1
  34. package/dist/commands/rtf.js +308 -14
  35. package/dist/commands/rtf.js.map +1 -1
  36. package/dist/commands/run.d.ts +4 -0
  37. package/dist/commands/run.d.ts.map +1 -0
  38. package/dist/commands/run.js +296 -0
  39. package/dist/commands/run.js.map +1 -0
  40. package/dist/commands/schema.d.ts +4 -0
  41. package/dist/commands/schema.d.ts.map +1 -0
  42. package/dist/commands/schema.js +119 -0
  43. package/dist/commands/schema.js.map +1 -0
  44. package/dist/commands/screenshot.d.ts.map +1 -1
  45. package/dist/commands/screenshot.js +8 -0
  46. package/dist/commands/screenshot.js.map +1 -1
  47. package/dist/commands/sitemap.d.ts +4 -0
  48. package/dist/commands/sitemap.d.ts.map +1 -0
  49. package/dist/commands/sitemap.js +134 -0
  50. package/dist/commands/sitemap.js.map +1 -0
  51. package/dist/contentful/assets.d.ts +14 -1
  52. package/dist/contentful/assets.d.ts.map +1 -1
  53. package/dist/contentful/assets.js +24 -2
  54. package/dist/contentful/assets.js.map +1 -1
  55. package/dist/rtf/replacePlainText.d.ts +52 -9
  56. package/dist/rtf/replacePlainText.d.ts.map +1 -1
  57. package/dist/rtf/replacePlainText.js +169 -63
  58. package/dist/rtf/replacePlainText.js.map +1 -1
  59. package/dist/session/store.d.ts +10 -4
  60. package/dist/session/store.d.ts.map +1 -1
  61. package/dist/session/store.js +46 -11
  62. package/dist/session/store.js.map +1 -1
  63. package/dist/telemetry/index.d.ts +10 -0
  64. package/dist/telemetry/index.d.ts.map +1 -0
  65. package/dist/telemetry/index.js +11 -0
  66. package/dist/telemetry/index.js.map +1 -0
  67. package/dist/telemetry/local.d.ts +9 -0
  68. package/dist/telemetry/local.d.ts.map +1 -0
  69. package/dist/telemetry/local.js +21 -0
  70. package/dist/telemetry/local.js.map +1 -0
  71. package/dist/telemetry/types.d.ts +29 -0
  72. package/dist/telemetry/types.d.ts.map +1 -0
  73. package/dist/telemetry/types.js +2 -0
  74. package/dist/telemetry/types.js.map +1 -0
  75. package/package.json +5 -5
  76. package/skills/core/SKILL.md +82 -0
  77. package/skills/rich-text/SKILL.md +63 -0
  78. package/dist/commands/export-converted.d.ts +0 -8
  79. package/dist/commands/export-converted.d.ts.map +0 -1
  80. package/dist/commands/export-converted.js +0 -62
  81. package/dist/commands/export-converted.js.map +0 -1
@@ -31,16 +31,15 @@ function resolveReplacementInlines(options) {
31
31
  return markdownToRtfInlines(replaceMarkdown);
32
32
  }
33
33
  // ---------------------------------------------------------------------------
34
- // Quidget span protection (FR-1)
34
+ // Protected span helpers
35
35
  // ---------------------------------------------------------------------------
36
36
  /**
37
- * Returns the [start, end) ranges of all top-level `{*...*}` quidget spans in `str`.
38
- * Only non-nested spans (no inner braces) are matched. Used to prevent search matches
39
- * from landing inside an already-inserted quidget token.
37
+ * Returns the [start, end) ranges of all non-nested spans matching `pattern` in `str`.
38
+ * Used to prevent search matches from landing inside an already-inserted protected token.
40
39
  */
41
- function getQuidgetSpans(str) {
40
+ function getProtectedSpans(str, pattern) {
42
41
  const spans = [];
43
- const re = /\{\*[^{}]*\*\}/g;
42
+ const re = new RegExp(pattern.source, 'g');
44
43
  for (;;) {
45
44
  const m = re.exec(str);
46
45
  if (m === null)
@@ -51,9 +50,9 @@ function getQuidgetSpans(str) {
51
50
  }
52
51
  /**
53
52
  * Returns true if the range [matchStart, matchEnd) is strictly contained inside any protected
54
- * span — i.e. it starts AFTER the span start. This allows searching for a full quidget token
55
- * itself (matchStart === spanStart is not protected) while blocking matches for shorter strings
56
- * that land inside an existing quidget.
53
+ * span — i.e. it starts AFTER the span start. This allows searching for a full protected token
54
+ * itself (matchStart === spanStart is not blocked) while blocking matches for shorter strings
55
+ * that land inside an existing protected span.
57
56
  */
58
57
  function isInsideAnySpan(matchStart, matchEnd, spans) {
59
58
  for (const [s, e] of spans) {
@@ -73,13 +72,13 @@ const HEADING_LEVEL_MAP = {
73
72
  [BLOCKS.HEADING_5]: 5,
74
73
  [BLOCKS.HEADING_6]: 6,
75
74
  };
76
- function isHeadingBlock(block) {
75
+ export function isHeadingBlock(block) {
77
76
  return block.nodeType in HEADING_LEVEL_MAP;
78
77
  }
79
- function getHeadingLevel(block) {
78
+ export function getHeadingLevel(block) {
80
79
  return HEADING_LEVEL_MAP[block.nodeType] ?? 0;
81
80
  }
82
- function extractBlockPlainText(block) {
81
+ export function extractBlockPlainText(block) {
83
82
  const parts = [];
84
83
  walkTextNodes(block.content, (_p, _i, t) => parts.push(t.value));
85
84
  return parts.join('');
@@ -89,17 +88,20 @@ function extractBlockPlainText(block) {
89
88
  * The section starts immediately after the matched heading and ends before the next heading of
90
89
  * equal or higher level (i.e. lower or equal heading number).
91
90
  *
91
+ * Heading text is compared after trimming leading/trailing whitespace.
92
92
  * When multiple headings share the same text, `nth` (1-indexed, default 1) selects which to use.
93
93
  * Throws {@link RichTextReplaceError} if the heading is not found or `nth` exceeds the count.
94
+ * The error message includes a list of available headings to aid diagnosis.
94
95
  */
95
96
  function resolveSectionDoc(clone, section, nth = 1) {
96
97
  const blocks = clone.content;
98
+ const sectionTrimmed = section.trim();
97
99
  let matchCount = 0;
98
100
  for (let i = 0; i < blocks.length; i++) {
99
101
  const block = blocks[i];
100
102
  if (!block || !isHeadingBlock(block))
101
103
  continue;
102
- if (extractBlockPlainText(block) !== section)
104
+ if (extractBlockPlainText(block).trim() !== sectionTrimmed)
103
105
  continue;
104
106
  matchCount++;
105
107
  if (matchCount < nth)
@@ -120,10 +122,18 @@ function resolveSectionDoc(clone, section, nth = 1) {
120
122
  content: blocks.slice(i + 1, end),
121
123
  };
122
124
  }
125
+ // Collect available headings for the error message
126
+ const available = blocks
127
+ .filter((b) => !!b && isHeadingBlock(b))
128
+ .map((b) => `"${extractBlockPlainText(b).trim()}"`)
129
+ .join(', ');
130
+ const availableMsg = available
131
+ ? `\nAvailable headings: [${available}]`
132
+ : '\nNo headings found in document.';
123
133
  if (matchCount === 0) {
124
- throw new RichTextReplaceError(`No heading matching section "${section}" found in document`);
134
+ throw new RichTextReplaceError(`No heading matching section "${section}" found in document.${availableMsg}`);
125
135
  }
126
- throw new RichTextReplaceError(`Section "${section}" has ${String(matchCount)} occurrence(s) but --section-nth ${String(nth)} was requested`);
136
+ throw new RichTextReplaceError(`Section "${section}" has ${String(matchCount)} occurrence(s) but --section-nth ${String(nth)} was requested.${availableMsg}`);
127
137
  }
128
138
  // ---------------------------------------------------------------------------
129
139
  // Public API
@@ -135,55 +145,80 @@ function resolveSectionDoc(clone, section, nth = 1) {
135
145
  * Use `ignoreMarks: true` to match across adjacent sibling text nodes in the same block
136
146
  * (e.g. `**Annual fee: **$95` split by bold).
137
147
  *
138
- * **Quidget protection:** Matches that fall inside an existing `{*...*}` span are always
139
- * skipped this prevents nesting a new quidget inside an already-inserted one.
148
+ * **Protected spans:** Pass `protectPattern` (a regex string) to skip matches that fall inside
149
+ * an existing token matching that pattern. The token itself can still be found/replaced; only
150
+ * shorter matches landing strictly inside it are skipped.
140
151
  *
141
152
  * **Modes:** `all` replaces every non-overlapping occurrence. `exactlyOne` requires exactly
142
- * one occurrence in the entire document or throws {@link RichTextReplaceError}.
153
+ * one occurrence in the entire document or throws {@link RichTextReplaceError} with diagnostics.
143
154
  *
144
- * @returns A deep-cloned document with replacements applied (input is not mutated).
155
+ * **Dry run:** Pass `dryRun: true` to count and locate matches without writing changes.
156
+ *
157
+ * @returns A deep-cloned document with replacements applied (input is not mutated),
158
+ * plus `matchCount` and `matchPositions` (block indices where matches were found).
145
159
  */
146
160
  export function replaceRtfPlainText(document, options) {
147
161
  if (!isRtfDocument(document)) {
148
162
  throw new RichTextReplaceError('Value is not a rich text document');
149
163
  }
150
- const { find, mode, ignoreMarks, section, sectionNth } = options;
164
+ const { find, mode, ignoreMarks, section, sectionNth, dryRun } = options;
151
165
  if (find === '') {
152
166
  throw new RichTextReplaceError('find must be a non-empty string');
153
167
  }
154
- const replacement = resolveReplacementInlines(options);
168
+ // Compile protectPattern once; propagate to all internal calls
169
+ const protectPattern = options.protectPattern !== undefined ? new RegExp(options.protectPattern) : undefined;
170
+ const replacement = dryRun ? plainToInlines('') : resolveReplacementInlines(options);
155
171
  const clone = structuredClone(document);
156
172
  const targetDoc = section !== undefined ? resolveSectionDoc(clone, section, sectionNth) : clone;
173
+ // Resolve inColContaining to a column index. Validate it doesn't conflict with explicit tableCol.
174
+ let resolvedTableCol = options.tableCol;
175
+ if (options.inColContaining !== undefined) {
176
+ const colFromHeader = resolveInColContaining(targetDoc, options.inColContaining);
177
+ if (resolvedTableCol !== undefined && resolvedTableCol !== colFromHeader) {
178
+ throw new RichTextReplaceError(`--in-col-containing resolved to column ${String(colFromHeader)} but --in-table-col ${String(resolvedTableCol)} was also specified (conflict). Remove one.`);
179
+ }
180
+ resolvedTableCol = colFromHeader;
181
+ }
182
+ const tableFilters = {
183
+ tableCol: resolvedTableCol,
184
+ tableRow: options.tableRow,
185
+ inRowContaining: options.inRowContaining,
186
+ };
157
187
  const total = ignoreMarks
158
- ? countOccurrencesIgnoreMarks(targetDoc, find, options.tableCol)
159
- : countOccurrencesInDocument(targetDoc, find, options.tableCol);
188
+ ? countOccurrencesIgnoreMarks(targetDoc, find, tableFilters, protectPattern)
189
+ : countOccurrencesInDocument(targetDoc, find, tableFilters, protectPattern);
160
190
  if (mode === 'exactlyOne' && total !== 1) {
191
+ const positions = findMatchBlockIndices(clone, find, tableFilters, protectPattern);
192
+ const posStr = positions.length > 0 ? `\nMatch positions (block index): [${positions.join(', ')}]` : '';
193
+ const hint = '\nUse --mode all to replace all occurrences, or narrow your --find string.';
161
194
  throw new RichTextReplaceError(total === 0
162
- ? `No occurrence of find string in document`
163
- : `Expected exactly one occurrence of find string, found ${String(total)}`);
195
+ ? `No occurrence of find string in document.`
196
+ : `Expected exactly one occurrence but found ${String(total)}.${posStr}${hint}`);
164
197
  }
165
- if (total === 0) {
166
- return { document: clone, matchCount: 0 };
198
+ const positions = findMatchBlockIndices(clone, find, tableFilters, protectPattern);
199
+ if (total === 0 || dryRun) {
200
+ return { document: clone, matchCount: total, matchPositions: positions };
167
201
  }
168
202
  if (ignoreMarks) {
169
- applyAllReplacementsIgnoreMarks(targetDoc, find, replacement, options.tableCol);
203
+ applyAllReplacementsIgnoreMarks(targetDoc, find, replacement, tableFilters, protectPattern);
170
204
  }
171
205
  else {
172
- applyAllReplacements(targetDoc, find, replacement, options.tableCol);
206
+ applyAllReplacements(targetDoc, find, replacement, tableFilters, protectPattern);
173
207
  }
174
- return { document: clone, matchCount: total };
208
+ return { document: clone, matchCount: total, matchPositions: positions };
175
209
  }
176
210
  // ---------------------------------------------------------------------------
177
- // Block / inline root collection (FR-4: tableCol filtering)
211
+ // Block / inline root collection (table filtering)
178
212
  // ---------------------------------------------------------------------------
179
- function collectInlineRoots(doc, tableCol) {
213
+ function collectInlineRoots(doc, tableFilters = {}) {
180
214
  const roots = [];
181
215
  for (const block of doc.content) {
182
- collectInlineRootsFromBlock(block, roots, tableCol);
216
+ collectInlineRootsFromBlock(block, roots, tableFilters);
183
217
  }
184
218
  return roots;
185
219
  }
186
- function collectInlineRootsFromBlock(block, roots, tableCol) {
220
+ function collectInlineRootsFromBlock(block, roots, tableFilters = {}) {
221
+ const { tableCol, tableRow, inRowContaining } = tableFilters;
187
222
  switch (block.nodeType) {
188
223
  case BLOCKS.PARAGRAPH:
189
224
  case BLOCKS.HEADING_1:
@@ -196,25 +231,36 @@ function collectInlineRootsFromBlock(block, roots, tableCol) {
196
231
  break;
197
232
  case BLOCKS.QUOTE:
198
233
  for (const b of block.content) {
199
- collectInlineRootsFromBlock(b, roots, tableCol);
234
+ collectInlineRootsFromBlock(b, roots, tableFilters);
200
235
  }
201
236
  break;
202
237
  case BLOCKS.UL_LIST:
203
238
  case BLOCKS.OL_LIST:
204
239
  for (const item of block.content) {
205
- collectInlineRootsFromBlock(item, roots, tableCol);
240
+ collectInlineRootsFromBlock(item, roots, tableFilters);
206
241
  }
207
242
  break;
208
243
  case BLOCKS.LIST_ITEM:
209
244
  for (const b of block.content) {
210
- collectInlineRootsFromBlock(b, roots, tableCol);
245
+ collectInlineRootsFromBlock(b, roots, tableFilters);
211
246
  }
212
247
  break;
213
- case BLOCKS.TABLE:
214
- for (const row of block.content) {
215
- if (row.nodeType !== BLOCKS.TABLE_ROW)
248
+ case BLOCKS.TABLE: {
249
+ const rows = block.content;
250
+ for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {
251
+ const row = rows[rowIdx];
252
+ if (!row || row.nodeType !== BLOCKS.TABLE_ROW)
253
+ continue;
254
+ // Apply tableRow filter (1-indexed)
255
+ if (tableRow !== undefined && rowIdx + 1 !== tableRow)
216
256
  continue;
217
257
  const cells = row.content;
258
+ // Apply inRowContaining filter: skip rows where no cell contains the text
259
+ if (inRowContaining !== undefined) {
260
+ const rowText = cells.map((cell) => extractBlockPlainText(cell)).join('');
261
+ if (!rowText.includes(inRowContaining))
262
+ continue;
263
+ }
218
264
  for (let colIdx = 0; colIdx < cells.length; colIdx++) {
219
265
  if (tableCol !== undefined && colIdx + 1 !== tableCol)
220
266
  continue;
@@ -222,15 +268,46 @@ function collectInlineRootsFromBlock(block, roots, tableCol) {
222
268
  if (!cell)
223
269
  continue;
224
270
  for (const inner of cell.content) {
225
- collectInlineRootsFromBlock(inner, roots, tableCol);
271
+ collectInlineRootsFromBlock(inner, roots, tableFilters);
226
272
  }
227
273
  }
228
274
  }
229
275
  break;
276
+ }
230
277
  default:
231
278
  break;
232
279
  }
233
280
  }
281
+ /**
282
+ * Resolves `inColContaining` to a 1-indexed column number by scanning the header row (row 1)
283
+ * of every TABLE block in `doc`. Returns the resolved column index, or throws
284
+ * {@link RichTextReplaceError} with available header texts if no match is found.
285
+ */
286
+ function resolveInColContaining(doc, inColContaining) {
287
+ for (const block of doc.content) {
288
+ if (block.nodeType !== BLOCKS.TABLE)
289
+ continue;
290
+ const tableBlock = block;
291
+ const headerRow = tableBlock.content[0];
292
+ if (!headerRow || headerRow.nodeType !== BLOCKS.TABLE_ROW)
293
+ continue;
294
+ const cells = headerRow.content;
295
+ for (let colIdx = 0; colIdx < cells.length; colIdx++) {
296
+ const cell = cells[colIdx];
297
+ if (!cell)
298
+ continue;
299
+ const cellText = extractBlockPlainText(cell);
300
+ if (cellText.includes(inColContaining))
301
+ return colIdx + 1;
302
+ }
303
+ // Found a table but no matching header — build error with available headers
304
+ const headers = cells
305
+ .map((cell) => `"${extractBlockPlainText(cell).trim()}"`)
306
+ .join(', ');
307
+ throw new RichTextReplaceError(`No header cell containing "${inColContaining}" found in table.\nAvailable headers: [${headers}]`);
308
+ }
309
+ throw new RichTextReplaceError(`No table found in document when resolving --in-col-containing "${inColContaining}".`);
310
+ }
234
311
  // ---------------------------------------------------------------------------
235
312
  // Text node walking
236
313
  // ---------------------------------------------------------------------------
@@ -251,27 +328,26 @@ export function walkTextNodes(inlines, fn) {
251
328
  }
252
329
  }
253
330
  // ---------------------------------------------------------------------------
254
- // Per-text-node count & replace (default mode, FR-1 quidget protection)
331
+ // Per-text-node count & replace (default mode)
255
332
  // ---------------------------------------------------------------------------
256
- function countOccurrencesInDocument(doc, find, tableCol) {
333
+ function countOccurrencesInDocument(doc, find, tableFilters = {}, protectPattern) {
257
334
  let n = 0;
258
- for (const root of collectInlineRoots(doc, tableCol)) {
335
+ for (const root of collectInlineRoots(doc, tableFilters)) {
259
336
  walkTextNodes(root, (_parent, _index, text) => {
260
- n += countNonOverlappingInString(text.value, find);
337
+ n += countNonOverlappingInString(text.value, find, protectPattern);
261
338
  });
262
339
  }
263
340
  return n;
264
341
  }
265
- function countNonOverlappingInString(haystack, needle) {
266
- const spans = getQuidgetSpans(haystack);
342
+ function countNonOverlappingInString(haystack, needle, protectPattern) {
343
+ const spans = protectPattern ? getProtectedSpans(haystack, protectPattern) : [];
267
344
  let count = 0;
268
345
  let pos = 0;
269
346
  while (pos <= haystack.length - needle.length) {
270
347
  const i = haystack.indexOf(needle, pos);
271
348
  if (i === -1)
272
349
  break;
273
- if (isInsideAnySpan(i, i + needle.length, spans)) {
274
- // Advance past the end of the span that contains this match
350
+ if (spans.length > 0 && isInsideAnySpan(i, i + needle.length, spans)) {
275
351
  const containing = spans.find(([s, e]) => i > s && i + needle.length <= e);
276
352
  pos = containing ? containing[1] : i + needle.length;
277
353
  continue;
@@ -281,11 +357,41 @@ function countNonOverlappingInString(haystack, needle) {
281
357
  }
282
358
  return count;
283
359
  }
284
- function applyAllReplacements(doc, find, replacement, tableCol) {
360
+ /**
361
+ * Returns block indices (in `doc.content`) containing at least one match of `find`.
362
+ * Used for dry-run summaries and exactlyOne diagnostics.
363
+ */
364
+ function findMatchBlockIndices(doc, find, tableFilters = {}, protectPattern) {
365
+ const indices = [];
366
+ const blocks = doc.content;
367
+ for (let i = 0; i < blocks.length; i++) {
368
+ const block = blocks[i];
369
+ if (!block)
370
+ continue;
371
+ const roots = [];
372
+ collectInlineRootsFromBlock(block, roots, tableFilters);
373
+ let found = false;
374
+ outer: for (const root of roots) {
375
+ for (let j = 0; j < root.length; j++) {
376
+ const n = root[j];
377
+ if (n && n.nodeType === 'text') {
378
+ if (countNonOverlappingInString(n.value, find, protectPattern) > 0) {
379
+ found = true;
380
+ break outer;
381
+ }
382
+ }
383
+ }
384
+ }
385
+ if (found)
386
+ indices.push(i);
387
+ }
388
+ return indices;
389
+ }
390
+ function applyAllReplacements(doc, find, replacement, tableFilters = {}, protectPattern) {
285
391
  const byParent = new Map();
286
- for (const root of collectInlineRoots(doc, tableCol)) {
392
+ for (const root of collectInlineRoots(doc, tableFilters)) {
287
393
  walkTextNodes(root, (parent, index, text) => {
288
- if (countNonOverlappingInString(text.value, find) === 0)
394
+ if (countNonOverlappingInString(text.value, find, protectPattern) === 0)
289
395
  return;
290
396
  let list = byParent.get(parent);
291
397
  if (!list) {
@@ -298,21 +404,21 @@ function applyAllReplacements(doc, find, replacement, tableCol) {
298
404
  for (const [parent, indices] of byParent) {
299
405
  const uniqueDesc = [...new Set(indices)].sort((a, b) => b - a);
300
406
  for (const idx of uniqueDesc) {
301
- replaceAllInTextNodeAt(parent, idx, find, replacement);
407
+ replaceAllInTextNodeAt(parent, idx, find, replacement, protectPattern);
302
408
  }
303
409
  }
304
410
  }
305
- function replaceAllInTextNodeAt(parent, index, find, replacement) {
411
+ function replaceAllInTextNodeAt(parent, index, find, replacement, protectPattern) {
306
412
  const node = parent[index];
307
413
  const v = node.value;
308
- const spans = getQuidgetSpans(v);
414
+ const spans = protectPattern ? getProtectedSpans(v, protectPattern) : [];
309
415
  const matches = [];
310
416
  let pos = 0;
311
417
  while (pos <= v.length - find.length) {
312
418
  const i = v.indexOf(find, pos);
313
419
  if (i === -1)
314
420
  break;
315
- if (isInsideAnySpan(i, i + find.length, spans)) {
421
+ if (spans.length > 0 && isInsideAnySpan(i, i + find.length, spans)) {
316
422
  const containing = spans.find(([s, e]) => i > s && i + find.length <= e);
317
423
  pos = containing ? containing[1] : i + find.length;
318
424
  continue;
@@ -368,17 +474,17 @@ function collectDirectTextRuns(inlines) {
368
474
  flush();
369
475
  return runs;
370
476
  }
371
- function countOccurrencesIgnoreMarks(doc, find, tableCol) {
477
+ function countOccurrencesIgnoreMarks(doc, find, tableFilters = {}, protectPattern) {
372
478
  let n = 0;
373
- for (const root of collectInlineRoots(doc, tableCol)) {
479
+ for (const root of collectInlineRoots(doc, tableFilters)) {
374
480
  for (const run of collectDirectTextRuns(root)) {
375
- n += countNonOverlappingInString(run.virtualStr, find);
481
+ n += countNonOverlappingInString(run.virtualStr, find, protectPattern);
376
482
  }
377
483
  }
378
484
  return n;
379
485
  }
380
- function applyAllReplacementsIgnoreMarks(doc, find, replacement, tableCol) {
381
- for (const root of collectInlineRoots(doc, tableCol)) {
486
+ function applyAllReplacementsIgnoreMarks(doc, find, replacement, tableFilters = {}, protectPattern) {
487
+ for (const root of collectInlineRoots(doc, tableFilters)) {
382
488
  // Collect runs fresh each pass (splices invalidate indices)
383
489
  // Process one run at a time; within a run process matches in reverse order.
384
490
  const runs = collectDirectTextRuns(root);
@@ -388,14 +494,14 @@ function applyAllReplacementsIgnoreMarks(doc, find, replacement, tableCol) {
388
494
  if (!run)
389
495
  continue;
390
496
  const { virtualStr, textNodes, parent } = run;
391
- const spans = getQuidgetSpans(virtualStr);
497
+ const spans = protectPattern ? getProtectedSpans(virtualStr, protectPattern) : [];
392
498
  const matches = [];
393
499
  let pos = 0;
394
500
  while (pos <= virtualStr.length - find.length) {
395
501
  const i = virtualStr.indexOf(find, pos);
396
502
  if (i === -1)
397
503
  break;
398
- if (isInsideAnySpan(i, i + find.length, spans)) {
504
+ if (spans.length > 0 && isInsideAnySpan(i, i + find.length, spans)) {
399
505
  const containing = spans.find(([s, e]) => i > s && i + find.length <= e);
400
506
  pos = containing ? containing[1] : i + find.length;
401
507
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"replacePlainText.js","sourceRoot":"","sources":["../../src/rtf/replacePlainText.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replacePlainText.js","sourceRoot":"","sources":["../../src/rtf/replacePlainText.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,16 @@
1
1
  import type { SessionState } from './state.js';
2
- export declare function loadSession(spaceId?: string, rootEntryId?: string): SessionState | null;
3
- export declare function saveSession(state: SessionState): void;
4
- export declare function clearSession(spaceId: string, rootEntryId: string): void;
2
+ /**
3
+ * Returns the name of the active session from CLI options or the CONTENTFUL_CMS_SESSION env var.
4
+ * Used by all commands to support named, isolated sessions (--session <name>).
5
+ */
6
+ export declare function resolveSessionName(cliName?: string): string | undefined;
7
+ export declare function loadSession(spaceId?: string, rootEntryId?: string, sessionName?: string): SessionState | null;
8
+ export declare function saveSession(state: SessionState, sessionName?: string): void;
9
+ export declare function clearSession(spaceId: string, rootEntryId: string, sessionName?: string): void;
5
10
  export declare function clearAllSessions(): void;
6
11
  /**
7
12
  * Loads the active session or throws a helpful error if none exists.
13
+ * Pass `sessionName` (or set CONTENTFUL_CMS_SESSION) to target a named session.
8
14
  */
9
- export declare function requireSession(): SessionState;
15
+ export declare function requireSession(sessionName?: string): SessionState;
10
16
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/session/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAoB/C,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CASvF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAIrD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAKvE;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,YAAY,CAQ7C"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/session/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvE;AAmCD,wBAAgB,WAAW,CACzB,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,YAAY,GAAG,IAAI,CAcrB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAK3E;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAM7F;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,CAUjE"}
@@ -2,8 +2,33 @@ import * as fs from 'node:fs';
2
2
  import * as os from 'node:os';
3
3
  import * as path from 'node:path';
4
4
  const SESSIONS_DIR = path.join(os.homedir(), '.contentful-cms', 'sessions');
5
- function getSessionPath(spaceId, rootEntryId) {
6
- return path.join(SESSIONS_DIR, `${spaceId}-${rootEntryId}.json`);
5
+ /**
6
+ * Returns the name of the active session from CLI options or the CONTENTFUL_CMS_SESSION env var.
7
+ * Used by all commands to support named, isolated sessions (--session <name>).
8
+ */
9
+ export function resolveSessionName(cliName) {
10
+ return cliName ?? process.env['CONTENTFUL_CMS_SESSION'] ?? undefined;
11
+ }
12
+ function getSessionPath(spaceId, rootEntryId, sessionName) {
13
+ const suffix = sessionName ? `-${sessionName}` : '';
14
+ return path.join(SESSIONS_DIR, `${spaceId}-${rootEntryId}${suffix}.json`);
15
+ }
16
+ /**
17
+ * Returns the path to the most recently modified session file whose name contains the given
18
+ * session name suffix, if any. Used when only --session is given without spaceId/rootEntryId.
19
+ */
20
+ function findNamedSessionPath(sessionName) {
21
+ if (!fs.existsSync(SESSIONS_DIR))
22
+ return null;
23
+ const suffix = `-${sessionName}.json`;
24
+ const files = fs.readdirSync(SESSIONS_DIR).filter((f) => f.endsWith(suffix));
25
+ if (files.length === 0)
26
+ return null;
27
+ const sorted = files
28
+ .map((f) => ({ file: f, mtime: fs.statSync(path.join(SESSIONS_DIR, f)).mtime }))
29
+ .sort((a, b) => b.mtime.getTime() - a.mtime.getTime());
30
+ const latest = sorted[0];
31
+ return latest ? path.join(SESSIONS_DIR, latest.file) : null;
7
32
  }
8
33
  /** Returns the path to the most recently modified session file, if any. */
9
34
  function findLatestSessionPath() {
@@ -18,8 +43,13 @@ function findLatestSessionPath() {
18
43
  const latest = sorted[0];
19
44
  return latest ? path.join(SESSIONS_DIR, latest.file) : null;
20
45
  }
21
- export function loadSession(spaceId, rootEntryId) {
22
- const sessionPath = spaceId && rootEntryId ? getSessionPath(spaceId, rootEntryId) : findLatestSessionPath();
46
+ export function loadSession(spaceId, rootEntryId, sessionName) {
47
+ const resolvedName = resolveSessionName(sessionName);
48
+ const sessionPath = spaceId && rootEntryId
49
+ ? getSessionPath(spaceId, rootEntryId, resolvedName)
50
+ : resolvedName
51
+ ? findNamedSessionPath(resolvedName)
52
+ : findLatestSessionPath();
23
53
  if (!sessionPath || !fs.existsSync(sessionPath))
24
54
  return null;
25
55
  try {
@@ -29,13 +59,15 @@ export function loadSession(spaceId, rootEntryId) {
29
59
  return null;
30
60
  }
31
61
  }
32
- export function saveSession(state) {
62
+ export function saveSession(state, sessionName) {
33
63
  fs.mkdirSync(SESSIONS_DIR, { recursive: true });
34
- const sessionPath = getSessionPath(state.spaceId, state.rootEntryId);
64
+ const resolvedName = resolveSessionName(sessionName);
65
+ const sessionPath = getSessionPath(state.spaceId, state.rootEntryId, resolvedName);
35
66
  fs.writeFileSync(sessionPath, JSON.stringify(state, null, 2), 'utf-8');
36
67
  }
37
- export function clearSession(spaceId, rootEntryId) {
38
- const sessionPath = getSessionPath(spaceId, rootEntryId);
68
+ export function clearSession(spaceId, rootEntryId, sessionName) {
69
+ const resolvedName = resolveSessionName(sessionName);
70
+ const sessionPath = getSessionPath(spaceId, rootEntryId, resolvedName);
39
71
  if (fs.existsSync(sessionPath)) {
40
72
  fs.unlinkSync(sessionPath);
41
73
  }
@@ -51,11 +83,14 @@ export function clearAllSessions() {
51
83
  }
52
84
  /**
53
85
  * Loads the active session or throws a helpful error if none exists.
86
+ * Pass `sessionName` (or set CONTENTFUL_CMS_SESSION) to target a named session.
54
87
  */
55
- export function requireSession() {
56
- const session = loadSession();
88
+ export function requireSession(sessionName) {
89
+ const session = loadSession(undefined, undefined, sessionName);
57
90
  if (!session) {
58
- throw new Error("No active session. Run 'cms-edit open <slug>' or 'cms-edit open <id> --id' first.");
91
+ const nameHint = resolveSessionName(sessionName);
92
+ const hint = nameHint ? ` (session: ${nameHint})` : '';
93
+ throw new Error(`No active session${hint}. Run 'cms-edit open <slug>' or 'cms-edit open <id> --id' first.`);
59
94
  }
60
95
  return session;
61
96
  }