@avalanche-io/c4-node 1.0.10

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 (125) hide show
  1. package/dist/packages/core/src/base58.d.ts +5 -0
  2. package/dist/packages/core/src/base58.d.ts.map +1 -0
  3. package/dist/packages/core/src/base58.js +42 -0
  4. package/dist/packages/core/src/base58.js.map +1 -0
  5. package/dist/packages/core/src/browser/filesystem.d.ts +34 -0
  6. package/dist/packages/core/src/browser/filesystem.d.ts.map +1 -0
  7. package/dist/packages/core/src/browser/filesystem.js +169 -0
  8. package/dist/packages/core/src/browser/filesystem.js.map +1 -0
  9. package/dist/packages/core/src/browser/index.d.ts +4 -0
  10. package/dist/packages/core/src/browser/index.d.ts.map +1 -0
  11. package/dist/packages/core/src/browser/index.js +6 -0
  12. package/dist/packages/core/src/browser/index.js.map +1 -0
  13. package/dist/packages/core/src/browser/store.d.ts +28 -0
  14. package/dist/packages/core/src/browser/store.d.ts.map +1 -0
  15. package/dist/packages/core/src/browser/store.js +142 -0
  16. package/dist/packages/core/src/browser/store.js.map +1 -0
  17. package/dist/packages/core/src/browser/worker.d.ts +34 -0
  18. package/dist/packages/core/src/browser/worker.d.ts.map +1 -0
  19. package/dist/packages/core/src/browser/worker.js +96 -0
  20. package/dist/packages/core/src/browser/worker.js.map +1 -0
  21. package/dist/packages/core/src/decoder.d.ts +23 -0
  22. package/dist/packages/core/src/decoder.d.ts.map +1 -0
  23. package/dist/packages/core/src/decoder.js +431 -0
  24. package/dist/packages/core/src/decoder.js.map +1 -0
  25. package/dist/packages/core/src/diff.d.ts +48 -0
  26. package/dist/packages/core/src/diff.d.ts.map +1 -0
  27. package/dist/packages/core/src/diff.js +169 -0
  28. package/dist/packages/core/src/diff.js.map +1 -0
  29. package/dist/packages/core/src/encoder.d.ts +13 -0
  30. package/dist/packages/core/src/encoder.d.ts.map +1 -0
  31. package/dist/packages/core/src/encoder.js +125 -0
  32. package/dist/packages/core/src/encoder.js.map +1 -0
  33. package/dist/packages/core/src/entry.d.ts +59 -0
  34. package/dist/packages/core/src/entry.d.ts.map +1 -0
  35. package/dist/packages/core/src/entry.js +266 -0
  36. package/dist/packages/core/src/entry.js.map +1 -0
  37. package/dist/packages/core/src/errors.d.ts +29 -0
  38. package/dist/packages/core/src/errors.d.ts.map +1 -0
  39. package/dist/packages/core/src/errors.js +56 -0
  40. package/dist/packages/core/src/errors.js.map +1 -0
  41. package/dist/packages/core/src/filesystem.d.ts +68 -0
  42. package/dist/packages/core/src/filesystem.d.ts.map +1 -0
  43. package/dist/packages/core/src/filesystem.js +62 -0
  44. package/dist/packages/core/src/filesystem.js.map +1 -0
  45. package/dist/packages/core/src/id.d.ts +33 -0
  46. package/dist/packages/core/src/id.d.ts.map +1 -0
  47. package/dist/packages/core/src/id.js +126 -0
  48. package/dist/packages/core/src/id.js.map +1 -0
  49. package/dist/packages/core/src/identify-content.d.ts +17 -0
  50. package/dist/packages/core/src/identify-content.d.ts.map +1 -0
  51. package/dist/packages/core/src/identify-content.js +70 -0
  52. package/dist/packages/core/src/identify-content.js.map +1 -0
  53. package/dist/packages/core/src/index.d.ts +23 -0
  54. package/dist/packages/core/src/index.d.ts.map +1 -0
  55. package/dist/packages/core/src/index.js +41 -0
  56. package/dist/packages/core/src/index.js.map +1 -0
  57. package/dist/packages/core/src/manifest.d.ts +68 -0
  58. package/dist/packages/core/src/manifest.d.ts.map +1 -0
  59. package/dist/packages/core/src/manifest.js +463 -0
  60. package/dist/packages/core/src/manifest.js.map +1 -0
  61. package/dist/packages/core/src/memory-fs.d.ts +33 -0
  62. package/dist/packages/core/src/memory-fs.d.ts.map +1 -0
  63. package/dist/packages/core/src/memory-fs.js +187 -0
  64. package/dist/packages/core/src/memory-fs.js.map +1 -0
  65. package/dist/packages/core/src/memory-store.d.ts +21 -0
  66. package/dist/packages/core/src/memory-store.d.ts.map +1 -0
  67. package/dist/packages/core/src/memory-store.js +57 -0
  68. package/dist/packages/core/src/memory-store.js.map +1 -0
  69. package/dist/packages/core/src/naturalsort.d.ts +2 -0
  70. package/dist/packages/core/src/naturalsort.d.ts.map +1 -0
  71. package/dist/packages/core/src/naturalsort.js +88 -0
  72. package/dist/packages/core/src/naturalsort.js.map +1 -0
  73. package/dist/packages/core/src/observable.d.ts +54 -0
  74. package/dist/packages/core/src/observable.d.ts.map +1 -0
  75. package/dist/packages/core/src/observable.js +150 -0
  76. package/dist/packages/core/src/observable.js.map +1 -0
  77. package/dist/packages/core/src/pool.d.ts +38 -0
  78. package/dist/packages/core/src/pool.d.ts.map +1 -0
  79. package/dist/packages/core/src/pool.js +113 -0
  80. package/dist/packages/core/src/pool.js.map +1 -0
  81. package/dist/packages/core/src/reconcile.d.ts +43 -0
  82. package/dist/packages/core/src/reconcile.d.ts.map +1 -0
  83. package/dist/packages/core/src/reconcile.js +172 -0
  84. package/dist/packages/core/src/reconcile.js.map +1 -0
  85. package/dist/packages/core/src/resolver.d.ts +67 -0
  86. package/dist/packages/core/src/resolver.d.ts.map +1 -0
  87. package/dist/packages/core/src/resolver.js +110 -0
  88. package/dist/packages/core/src/resolver.js.map +1 -0
  89. package/dist/packages/core/src/safename.d.ts +7 -0
  90. package/dist/packages/core/src/safename.d.ts.map +1 -0
  91. package/dist/packages/core/src/safename.js +354 -0
  92. package/dist/packages/core/src/safename.js.map +1 -0
  93. package/dist/packages/core/src/scanner.d.ts +25 -0
  94. package/dist/packages/core/src/scanner.d.ts.map +1 -0
  95. package/dist/packages/core/src/scanner.js +97 -0
  96. package/dist/packages/core/src/scanner.js.map +1 -0
  97. package/dist/packages/core/src/store.d.ts +39 -0
  98. package/dist/packages/core/src/store.d.ts.map +1 -0
  99. package/dist/packages/core/src/store.js +53 -0
  100. package/dist/packages/core/src/store.js.map +1 -0
  101. package/dist/packages/core/src/tree.d.ts +16 -0
  102. package/dist/packages/core/src/tree.d.ts.map +1 -0
  103. package/dist/packages/core/src/tree.js +45 -0
  104. package/dist/packages/core/src/tree.js.map +1 -0
  105. package/dist/packages/core/src/verify.d.ts +29 -0
  106. package/dist/packages/core/src/verify.d.ts.map +1 -0
  107. package/dist/packages/core/src/verify.js +85 -0
  108. package/dist/packages/core/src/verify.js.map +1 -0
  109. package/dist/packages/core/src/workspace.d.ts +72 -0
  110. package/dist/packages/core/src/workspace.d.ts.map +1 -0
  111. package/dist/packages/core/src/workspace.js +135 -0
  112. package/dist/packages/core/src/workspace.js.map +1 -0
  113. package/dist/packages/node/src/index.d.ts +4 -0
  114. package/dist/packages/node/src/index.d.ts.map +1 -0
  115. package/dist/packages/node/src/index.js +6 -0
  116. package/dist/packages/node/src/index.js.map +1 -0
  117. package/dist/packages/node/src/node-fs.d.ts +24 -0
  118. package/dist/packages/node/src/node-fs.d.ts.map +1 -0
  119. package/dist/packages/node/src/node-fs.js +84 -0
  120. package/dist/packages/node/src/node-fs.js.map +1 -0
  121. package/dist/packages/node/src/tree-store.d.ts +22 -0
  122. package/dist/packages/node/src/tree-store.d.ts.map +1 -0
  123. package/dist/packages/node/src/tree-store.js +77 -0
  124. package/dist/packages/node/src/tree-store.js.map +1 -0
  125. package/package.json +44 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../../../../core/src/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAqC,MAAM,SAAS,CAAA;AACjE,OAAO,EACL,KAAK,KAAK,EAMX,MAAM,YAAY,CAAA;AAmXnB;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IACjB,OAAO,EAAE,KAAK,EAAE,CAAA;IAChB,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAA;IACnB,eAAe,EAAE,IAAI,EAAE,CAAA;IACvB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED,2CAA2C;AAC3C,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAsFhE;AAED,iDAAiD;AACjD,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAE/D"}
@@ -0,0 +1,431 @@
1
+ import { parse as parseC4ID, identifyBytes } from './id.js';
2
+ import { createEntry, parseMode, parseTimestamp, } from './entry.js';
3
+ import { unsafeName } from './safename.js';
4
+ import { InvalidEntryError, EmptyPatchError, } from './errors.js';
5
+ const C4_ID_PATTERN = /^c4[1-9A-HJ-NP-Za-km-z]{88}$/;
6
+ const SEQUENCE_PATTERN = /\[[\d,:-]+\]/;
7
+ /** Check if a line is exactly a bare C4 ID (90 chars starting with "c4"). */
8
+ function isBareC4ID(s) {
9
+ return s.length === 90 && s[0] === 'c' && s[1] === '4';
10
+ }
11
+ /** Check if a line is an inline ID list (>90 chars, multiple of 90, all valid IDs). */
12
+ function isInlineIDList(s) {
13
+ const n = s.length;
14
+ if (n <= 90 || n % 90 !== 0 || s[0] !== 'c' || s[1] !== '4')
15
+ return false;
16
+ for (let i = 0; i < n; i += 90) {
17
+ if (!C4_ID_PATTERN.test(s.substring(i, i + 90)))
18
+ return false;
19
+ }
20
+ return true;
21
+ }
22
+ /** Check if text at position matches a flow target pattern (name:...). */
23
+ function isFlowTarget(s) {
24
+ if (s.length === 0)
25
+ return false;
26
+ const ch = s[0];
27
+ if (!((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')))
28
+ return false;
29
+ for (let i = 1; i < s.length; i++) {
30
+ const c = s[i];
31
+ if (c === ':')
32
+ return true;
33
+ if (c === ' ')
34
+ return false;
35
+ if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c === '_' || c === '-')) {
36
+ return false;
37
+ }
38
+ }
39
+ return false;
40
+ }
41
+ /** Check if raw text contains unescaped sequence notation. */
42
+ function hasUnescapedSequenceNotation(raw) {
43
+ let buf = '';
44
+ for (let i = 0; i < raw.length; i++) {
45
+ if (raw[i] === '\\' && i + 1 < raw.length) {
46
+ buf += '__';
47
+ i++;
48
+ continue;
49
+ }
50
+ buf += raw[i];
51
+ }
52
+ return SEQUENCE_PATTERN.test(buf);
53
+ }
54
+ /**
55
+ * Parse a name or target from a line, handling backslash escapes.
56
+ * Returns [parsed, newPos, hasUnescapedBrackets].
57
+ */
58
+ function parseNameOrTarget(line, pos) {
59
+ const n = line.length;
60
+ let buf = '';
61
+ let hasUnescapedBrackets = false;
62
+ while (pos < n) {
63
+ const ch = line[pos];
64
+ // c4m field-boundary escapes
65
+ if (ch === '\\' && pos + 1 < n) {
66
+ const next = line[pos + 1];
67
+ if (next === ' ' || next === '"' || next === '[' || next === ']') {
68
+ buf += next;
69
+ pos += 2;
70
+ continue;
71
+ }
72
+ }
73
+ if (ch === '[' || ch === ']') {
74
+ hasUnescapedBrackets = true;
75
+ }
76
+ // Directory name ends at / (inclusive)
77
+ if (ch === '/') {
78
+ buf += '/';
79
+ pos++;
80
+ return [buf, pos, hasUnescapedBrackets];
81
+ }
82
+ // Check for boundary: space followed by link operator, c4 prefix, or null
83
+ if (ch === ' ') {
84
+ const rest = line.substring(pos);
85
+ if (rest.startsWith(' -> ') || rest.startsWith(' <- ') || rest.startsWith(' <> ')) {
86
+ return [buf, pos, hasUnescapedBrackets];
87
+ }
88
+ // Hard link group: " ->N"
89
+ if (rest.length >= 4 && rest[1] === '-' && rest[2] === '>' && rest[3] >= '1' && rest[3] <= '9') {
90
+ return [buf, pos, hasUnescapedBrackets];
91
+ }
92
+ if (rest.length > 2 && rest[1] === 'c' && rest[2] === '4') {
93
+ return [buf, pos, hasUnescapedBrackets];
94
+ }
95
+ if (rest.length >= 2 && rest[1] === '-' && (rest.length === 2 || rest[2] === ' ')) {
96
+ return [buf, pos, hasUnescapedBrackets];
97
+ }
98
+ }
99
+ buf += ch;
100
+ pos++;
101
+ }
102
+ return [buf, pos, hasUnescapedBrackets];
103
+ }
104
+ /**
105
+ * Parse a symlink target — unlike names, `/` is not a boundary.
106
+ */
107
+ function parseTarget(line, pos) {
108
+ const n = line.length;
109
+ let buf = '';
110
+ while (pos < n) {
111
+ const ch = line[pos];
112
+ if (ch === '\\' && pos + 1 < n) {
113
+ const next = line[pos + 1];
114
+ if (next === ' ' || next === '"') {
115
+ buf += next;
116
+ pos += 2;
117
+ continue;
118
+ }
119
+ }
120
+ if (ch === ' ') {
121
+ const rest = line.substring(pos);
122
+ if (rest.length > 2 && rest[1] === 'c' && rest[2] === '4') {
123
+ return [buf, pos];
124
+ }
125
+ if (rest.length >= 2 && rest[1] === '-' && (rest.length === 2 || rest[2] === ' ')) {
126
+ return [buf, pos];
127
+ }
128
+ }
129
+ buf += ch;
130
+ pos++;
131
+ }
132
+ return [buf, pos];
133
+ }
134
+ /** Parse a flow target (location:path). */
135
+ function parseFlowTarget(line, pos) {
136
+ const n = line.length;
137
+ const start = pos;
138
+ while (pos < n) {
139
+ const ch = line[pos];
140
+ if (ch === ' ') {
141
+ const rest = line.substring(pos);
142
+ if (rest.length > 2 && rest[1] === 'c' && rest[2] === '4') {
143
+ return [line.substring(start, pos), pos];
144
+ }
145
+ if (rest.length >= 2 && rest[1] === '-' && (rest.length === 2 || rest[2] === ' ')) {
146
+ return [line.substring(start, pos), pos];
147
+ }
148
+ }
149
+ pos++;
150
+ }
151
+ return [line.substring(start, pos), pos];
152
+ }
153
+ /** Parse the fields after timestamp: size, name, link ops, c4id. */
154
+ function parseEntryFields(line, mode, modeType) {
155
+ let pos = 0;
156
+ const n = line.length;
157
+ // Skip leading whitespace
158
+ while (pos < n && line[pos] === ' ')
159
+ pos++;
160
+ // 1. Parse size
161
+ let size;
162
+ if (line[pos] === '-') {
163
+ size = -1;
164
+ pos++;
165
+ }
166
+ else {
167
+ const sizeStart = pos;
168
+ while (pos < n && ((line[pos] >= '0' && line[pos] <= '9') || line[pos] === ','))
169
+ pos++;
170
+ const sizeStr = line.substring(sizeStart, pos).replace(/,/g, '');
171
+ size = parseInt(sizeStr, 10);
172
+ if (isNaN(size))
173
+ throw new InvalidEntryError(`invalid size "${line.substring(sizeStart, pos)}"`);
174
+ }
175
+ // Skip whitespace
176
+ while (pos < n && line[pos] === ' ')
177
+ pos++;
178
+ // 2. Parse name
179
+ const nameStart = pos;
180
+ let hasUnescapedBrackets;
181
+ let name;
182
+ [name, pos, hasUnescapedBrackets] = parseNameOrTarget(line, pos);
183
+ const rawName = line.substring(nameStart, pos);
184
+ // Skip whitespace
185
+ while (pos < n && line[pos] === ' ')
186
+ pos++;
187
+ // 3. Check for link operators
188
+ let target = '';
189
+ let hardLink = 0;
190
+ let flowDir = 0 /* FlowDirection.None */;
191
+ let flowTarget = '';
192
+ let c4id = null;
193
+ const isSymlinkMode = modeType === 'l';
194
+ if (pos + 1 < n && line[pos] === '-' && line[pos + 1] === '>') {
195
+ pos += 2;
196
+ if (isSymlinkMode) {
197
+ while (pos < n && line[pos] === ' ')
198
+ pos++;
199
+ if (pos < n) {
200
+ ;
201
+ [target, pos] = parseTarget(line, pos);
202
+ while (pos < n && line[pos] === ' ')
203
+ pos++;
204
+ }
205
+ }
206
+ else if (pos < n && line[pos] >= '1' && line[pos] <= '9') {
207
+ const groupStart = pos;
208
+ while (pos < n && line[pos] >= '0' && line[pos] <= '9')
209
+ pos++;
210
+ hardLink = parseInt(line.substring(groupStart, pos), 10);
211
+ while (pos < n && line[pos] === ' ')
212
+ pos++;
213
+ }
214
+ else {
215
+ while (pos < n && line[pos] === ' ')
216
+ pos++;
217
+ if (pos < n && isFlowTarget(line.substring(pos))) {
218
+ flowDir = 1 /* FlowDirection.Outbound */;
219
+ [flowTarget, pos] = parseFlowTarget(line, pos);
220
+ while (pos < n && line[pos] === ' ')
221
+ pos++;
222
+ }
223
+ else {
224
+ const remaining = line.substring(pos).trim();
225
+ if (remaining === '-' || remaining.startsWith('c4')) {
226
+ hardLink = -1;
227
+ }
228
+ else if (pos < n) {
229
+ ;
230
+ [target, pos] = parseTarget(line, pos);
231
+ while (pos < n && line[pos] === ' ')
232
+ pos++;
233
+ }
234
+ }
235
+ }
236
+ }
237
+ else if (pos + 1 < n && line[pos] === '<' && line[pos + 1] === '-') {
238
+ pos += 2;
239
+ while (pos < n && line[pos] === ' ')
240
+ pos++;
241
+ flowDir = 2 /* FlowDirection.Inbound */;
242
+ [flowTarget, pos] = parseFlowTarget(line, pos);
243
+ while (pos < n && line[pos] === ' ')
244
+ pos++;
245
+ }
246
+ else if (pos + 1 < n && line[pos] === '<' && line[pos + 1] === '>') {
247
+ pos += 2;
248
+ while (pos < n && line[pos] === ' ')
249
+ pos++;
250
+ flowDir = 3 /* FlowDirection.Bidirectional */;
251
+ [flowTarget, pos] = parseFlowTarget(line, pos);
252
+ while (pos < n && line[pos] === ' ')
253
+ pos++;
254
+ }
255
+ // 4. Parse C4 ID
256
+ if (pos < n) {
257
+ const remaining = line.substring(pos).trim();
258
+ if (remaining === '-') {
259
+ c4id = null;
260
+ }
261
+ else if (remaining.startsWith('c4')) {
262
+ c4id = parseC4ID(remaining);
263
+ }
264
+ }
265
+ return { size, name, rawName, target, c4id, hardLink, flowDir, flowTarget };
266
+ }
267
+ /** Parse a single entry from a line of c4m text. */
268
+ function parseEntryFromLine(line, indentWidth, lineNum) {
269
+ // Detect indentation
270
+ let indent = 0;
271
+ while (indent < line.length && line[indent] === ' ')
272
+ indent++;
273
+ if (indentWidth.value === -1 && indent > 0) {
274
+ indentWidth.value = indent;
275
+ }
276
+ const depth = indentWidth.value > 0 ? Math.floor(indent / indentWidth.value) : 0;
277
+ let content = line.substring(indent);
278
+ // Parse mode
279
+ let modeStr;
280
+ if (content.startsWith('- ')) {
281
+ modeStr = '-';
282
+ content = content.substring(2);
283
+ }
284
+ else if (content.length >= 11) {
285
+ modeStr = content.substring(0, 10);
286
+ content = content.substring(11);
287
+ }
288
+ else {
289
+ throw new InvalidEntryError(`line ${lineNum}: line too short`);
290
+ }
291
+ let modeType = '-';
292
+ let mode = 0;
293
+ if (modeStr === '-' || modeStr === '----------') {
294
+ modeType = '-';
295
+ mode = 0;
296
+ }
297
+ else {
298
+ ;
299
+ [modeType, mode] = parseMode(modeStr);
300
+ }
301
+ // Parse timestamp
302
+ let timestampStr;
303
+ let remaining;
304
+ if (content.startsWith('- ') || content.startsWith('0 ')) {
305
+ timestampStr = '-';
306
+ remaining = content.substring(2);
307
+ }
308
+ else if (content.length >= 20 && content[4] === '-' && content[10] === 'T') {
309
+ let endIdx = 20;
310
+ if (content.length >= 25 && (content[19] === '-' || content[19] === '+')) {
311
+ endIdx = 25;
312
+ }
313
+ timestampStr = content.substring(0, endIdx);
314
+ remaining = content.length > endIdx ? content.substring(endIdx + 1) : '';
315
+ }
316
+ else {
317
+ // Try pretty format
318
+ const parts = content.split(/\s+/);
319
+ if (parts.length >= 5) {
320
+ timestampStr = parts.slice(0, 5).join(' ');
321
+ remaining = parts.slice(5).join(' ');
322
+ }
323
+ else {
324
+ throw new InvalidEntryError(`line ${lineNum}: cannot parse timestamp from "${content}"`);
325
+ }
326
+ }
327
+ const timestamp = parseTimestamp(timestampStr);
328
+ // Parse remaining fields
329
+ const fields = parseEntryFields(remaining, mode, modeType);
330
+ const entry = createEntry({
331
+ depth,
332
+ mode,
333
+ modeType,
334
+ timestamp,
335
+ size: fields.size,
336
+ name: unsafeName(fields.name),
337
+ target: unsafeName(fields.target),
338
+ c4id: fields.c4id,
339
+ hardLink: fields.hardLink,
340
+ flowDirection: fields.flowDir,
341
+ flowTarget: fields.flowTarget,
342
+ });
343
+ // Check for sequence notation
344
+ if (hasUnescapedSequenceNotation(fields.rawName)) {
345
+ entry.isSequence = true;
346
+ entry.pattern = entry.name;
347
+ }
348
+ return entry;
349
+ }
350
+ /** Decode c4m text into a DecodeResult. */
351
+ export async function decode(text) {
352
+ const lines = text.split('\n');
353
+ const result = {
354
+ version: '1.0',
355
+ base: null,
356
+ entries: [],
357
+ sections: [],
358
+ patchBoundaries: [],
359
+ rangeData: new Map(),
360
+ };
361
+ const indentWidth = { value: -1 };
362
+ let lineNum = 0;
363
+ let section = [];
364
+ let firstLine = true;
365
+ let patchMode = false;
366
+ for (const rawLine of lines) {
367
+ lineNum++;
368
+ const trimmed = rawLine.trim();
369
+ if (trimmed === '')
370
+ continue;
371
+ // Reject CR
372
+ if (rawLine.includes('\r')) {
373
+ throw new InvalidEntryError(`line ${lineNum}: CR (0x0D) not allowed`);
374
+ }
375
+ // Check for inline ID list
376
+ if (isInlineIDList(trimmed)) {
377
+ const encoder = new TextEncoder();
378
+ const bytes = encoder.encode(trimmed);
379
+ const id = await identifyBytes(bytes);
380
+ result.rangeData.set(id.toString(), trimmed);
381
+ continue;
382
+ }
383
+ // Check for bare C4 ID
384
+ if (isBareC4ID(trimmed)) {
385
+ const id = parseC4ID(trimmed);
386
+ if (firstLine && section.length === 0) {
387
+ result.base = id;
388
+ }
389
+ else {
390
+ if (patchMode && section.length === 0) {
391
+ throw new EmptyPatchError(`line ${lineNum}`);
392
+ }
393
+ // Save the current section and the boundary ID
394
+ result.sections.push(section);
395
+ result.patchBoundaries.push(id);
396
+ section = [];
397
+ patchMode = true;
398
+ }
399
+ firstLine = false;
400
+ continue;
401
+ }
402
+ // Reject directives
403
+ if (trimmed.startsWith('@')) {
404
+ throw new InvalidEntryError(`directives not supported (line ${lineNum})`);
405
+ }
406
+ // Parse entry
407
+ const entry = parseEntryFromLine(rawLine, indentWidth, lineNum);
408
+ section.push(entry);
409
+ firstLine = false;
410
+ }
411
+ // Flush remaining section
412
+ if (patchMode && section.length === 0) {
413
+ throw new EmptyPatchError('at end of input');
414
+ }
415
+ if (section.length > 0) {
416
+ result.sections.push(section);
417
+ }
418
+ // For non-patch mode, entries is just the flat list from all sections.
419
+ // For patch mode, entries is populated by Manifest.parse() after applying patches.
420
+ if (!patchMode) {
421
+ for (const s of result.sections) {
422
+ result.entries.push(...s);
423
+ }
424
+ }
425
+ return result;
426
+ }
427
+ /** Parse c4m text into entries (convenience). */
428
+ export async function loads(text) {
429
+ return decode(text);
430
+ }
431
+ //# sourceMappingURL=decoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../../../../core/src/decoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { type Entry } from './entry.js';
2
+ import { Manifest } from './manifest.js';
3
+ /** Result of diffing two manifests. */
4
+ export interface DiffResult {
5
+ added: Array<{
6
+ path: string;
7
+ entry: Entry;
8
+ }>;
9
+ removed: Array<{
10
+ path: string;
11
+ entry: Entry;
12
+ }>;
13
+ modified: Array<{
14
+ path: string;
15
+ oldEntry: Entry;
16
+ newEntry: Entry;
17
+ }>;
18
+ }
19
+ /** Compute the diff between two manifests. */
20
+ export declare function diff(oldManifest: Manifest, newManifest: Manifest): DiffResult;
21
+ /** Merge result. */
22
+ export interface MergeResult {
23
+ merged: Manifest;
24
+ conflicts: MergeConflict[];
25
+ }
26
+ /** A merge conflict. */
27
+ export interface MergeConflict {
28
+ path: string;
29
+ base: Entry | undefined;
30
+ local: Entry;
31
+ remote: Entry;
32
+ }
33
+ /** Three-way merge of manifests. */
34
+ export declare function merge(base: Manifest, local: Manifest, remote: Manifest): MergeResult;
35
+ /** Apply a patch manifest to a base manifest.
36
+ * Patch semantics:
37
+ * - Entry exists only in patch: addition
38
+ * - Entry exists in both, any field differs: modification (patch replaces)
39
+ * - Entry exists in both, all fields identical: removal
40
+ */
41
+ export declare function applyPatch(base: Manifest, patch: Manifest): Manifest;
42
+ /** Compute the patch between old and new manifests. */
43
+ export interface PatchResult {
44
+ oldID: string;
45
+ patch: Manifest;
46
+ }
47
+ export declare function patchDiff(oldManifest: Manifest, newManifest: Manifest): Promise<PatchResult>;
48
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../core/src/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAyB,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,uCAAuC;AACvC,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAAA;IAC5C,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAAA;IAC9C,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAA;KAAE,CAAC,CAAA;CACpE;AAED,8CAA8C;AAC9C,wBAAgB,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,GAAG,UAAU,CAgC7E;AAOD,oBAAoB;AACpB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,QAAQ,CAAA;IAChB,SAAS,EAAE,aAAa,EAAE,CAAA;CAC3B;AAED,wBAAwB;AACxB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,KAAK,GAAG,SAAS,CAAA;IACvB,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,KAAK,CAAA;CACd;AAED,oCAAoC;AACpC,wBAAgB,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,WAAW,CAqEpF;AAWD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,CA4BpE;AAED,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,QAAQ,CAAA;CAChB;AAED,wBAAsB,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAYlG"}