@sanbus/galley-core 0.0.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.
Files changed (48) hide show
  1. package/README.md +15 -0
  2. package/build/builder.mjs +276 -0
  3. package/build/fixture.mjs +85 -0
  4. package/build/shim.mjs +216 -0
  5. package/dist/artifact.d.ts +38 -0
  6. package/dist/artifact.js +45 -0
  7. package/dist/artifact.js.map +1 -0
  8. package/dist/constants.d.ts +34 -0
  9. package/dist/constants.js +41 -0
  10. package/dist/constants.js.map +1 -0
  11. package/dist/diagnostic.d.ts +34 -0
  12. package/dist/diagnostic.js +28 -0
  13. package/dist/diagnostic.js.map +1 -0
  14. package/dist/errors.d.ts +22 -0
  15. package/dist/errors.js +38 -0
  16. package/dist/errors.js.map +1 -0
  17. package/dist/index.d.ts +21 -0
  18. package/dist/index.js +16 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/names.d.ts +20 -0
  21. package/dist/names.js +29 -0
  22. package/dist/names.js.map +1 -0
  23. package/dist/node.d.ts +45 -0
  24. package/dist/node.js +137 -0
  25. package/dist/node.js.map +1 -0
  26. package/dist/port.d.ts +193 -0
  27. package/dist/port.js +14 -0
  28. package/dist/port.js.map +1 -0
  29. package/dist/procedures.d.ts +62 -0
  30. package/dist/procedures.js +154 -0
  31. package/dist/procedures.js.map +1 -0
  32. package/dist/session.d.ts +123 -0
  33. package/dist/session.js +599 -0
  34. package/dist/session.js.map +1 -0
  35. package/dist/text.d.ts +7 -0
  36. package/dist/text.js +16 -0
  37. package/dist/text.js.map +1 -0
  38. package/package.json +31 -0
  39. package/src/artifact.ts +62 -0
  40. package/src/constants.ts +47 -0
  41. package/src/diagnostic.ts +48 -0
  42. package/src/errors.ts +49 -0
  43. package/src/index.ts +53 -0
  44. package/src/node.ts +154 -0
  45. package/src/port.ts +213 -0
  46. package/src/procedures.ts +169 -0
  47. package/src/session.ts +747 -0
  48. package/src/text.ts +19 -0
@@ -0,0 +1,599 @@
1
+ /**
2
+ * Parsing session bound to this library's parser.
3
+ * Mirrors Python/Rust/Go sessions over `bindings/c/galley.h`.
4
+ *
5
+ * Runtime-neutral: all native calls go through the injected {@link FfiPort}.
6
+ * Each adapter (`bindings/js/node`, `../bun`, `../deno`) subclasses `Session`
7
+ * to supply its port from `SessionOptions.libraryPath`.
8
+ */
9
+ import { INVALID_NODE } from "./constants.js";
10
+ import { GalleyError } from "./errors.js";
11
+ import { decodeUtf8, encodeUtf8 } from "./text.js";
12
+ import { Node } from "./node.js";
13
+ import { listProcedures, setParsingSession } from "./procedures.js";
14
+ function defaultOptions() {
15
+ return {
16
+ maxErrors: 10,
17
+ recoveryWindow: 500,
18
+ stackOverflowRecovery: false,
19
+ syntaxErrorStackDepth: 0,
20
+ verbosity: 0,
21
+ astPreallocationRatio: -1.0,
22
+ astPreallocationCap: 0,
23
+ messageOverrides: {},
24
+ };
25
+ }
26
+ function toNodeAddress(node) {
27
+ if (typeof node === "bigint")
28
+ return node;
29
+ if (typeof node === "number")
30
+ return BigInt(node);
31
+ return node.address;
32
+ }
33
+ function isInvalid(addr) {
34
+ return addr === INVALID_NODE;
35
+ }
36
+ function optNode(session, addr) {
37
+ if (isInvalid(addr))
38
+ return null;
39
+ return new Node(session, addr);
40
+ }
41
+ export class Session {
42
+ #handle = null;
43
+ #port;
44
+ #closed = false;
45
+ constructor(port, options = {}) {
46
+ const merged = { ...defaultOptions(), ...options };
47
+ const overrides = options.messageOverrides ?? merged.messageOverrides;
48
+ this.#port = port;
49
+ const hasNonDefault = options.maxErrors !== undefined ||
50
+ options.recoveryWindow !== undefined ||
51
+ options.stackOverflowRecovery !== undefined ||
52
+ options.syntaxErrorStackDepth !== undefined ||
53
+ options.verbosity !== undefined ||
54
+ options.astPreallocationRatio !== undefined ||
55
+ options.astPreallocationCap !== undefined;
56
+ let cOptions = null;
57
+ if (hasNonDefault) {
58
+ cOptions = {
59
+ maxErrors: merged.maxErrors,
60
+ recoveryWindow: merged.recoveryWindow,
61
+ stackOverflowRecovery: merged.stackOverflowRecovery ? 1 : 0,
62
+ syntaxErrorStackDepth: merged.syntaxErrorStackDepth,
63
+ verbosity: merged.verbosity,
64
+ astPreallocationRatio: merged.astPreallocationRatio,
65
+ astPreallocationCap: typeof merged.astPreallocationCap === "bigint"
66
+ ? merged.astPreallocationCap
67
+ : BigInt(merged.astPreallocationCap),
68
+ };
69
+ }
70
+ const handle = this.#port.createSession(cOptions);
71
+ if (handle === null || handle === undefined) {
72
+ throw new GalleyError("out of memory", -7, null);
73
+ }
74
+ this.#handle = handle;
75
+ for (const [name, message] of Object.entries(overrides)) {
76
+ const st = this.#port.setMessageOverride(this.#handle, encodeUtf8(name), encodeUtf8(message));
77
+ if (st < 0) {
78
+ const err = this.#errorFromStatus(st, "failed to register message override");
79
+ this.close();
80
+ throw err;
81
+ }
82
+ }
83
+ }
84
+ get isClosed() {
85
+ return this.#closed || this.#handle === null;
86
+ }
87
+ #requireHandle() {
88
+ if (this.#closed || this.#handle === null)
89
+ throw new Error("session is closed");
90
+ return this.#handle;
91
+ }
92
+ #statusMessage(status) {
93
+ const s = this.#port.statusString(status);
94
+ return s ?? "unknown galley error";
95
+ }
96
+ #errorFromStatus(status, fallback) {
97
+ let diag = null;
98
+ try {
99
+ if (this.#handle !== null && this.#port.hasDiagnostic(this.#handle)) {
100
+ diag = this.#buildDiagnosticSingular();
101
+ }
102
+ }
103
+ catch {
104
+ // ignore
105
+ }
106
+ const message = fallback ?? diag?.message ?? this.#statusMessage(status);
107
+ return new GalleyError(message, status, diag);
108
+ }
109
+ #checkStatus(status, fallback) {
110
+ if (status < 0)
111
+ throw this.#errorFromStatus(status, fallback);
112
+ }
113
+ // -- parser metadata (mirror galley.h; bound to this session's artifact) --
114
+ version() {
115
+ return this.#port.version();
116
+ }
117
+ parserType() {
118
+ return this.#port.parserType();
119
+ }
120
+ errorRecoveryMode() {
121
+ return this.#port.errorRecoveryMode();
122
+ }
123
+ hasAst() {
124
+ return this.#port.hasAst();
125
+ }
126
+ hasProcedures() {
127
+ return this.#port.hasProcedures();
128
+ }
129
+ allowsNoAstTreeProcedures() {
130
+ return this.#port.allowsNoAstTreeProcedures();
131
+ }
132
+ sourceRetentionEnabled() {
133
+ return this.#port.sourceRetentionEnabled();
134
+ }
135
+ hasPositionTracking() {
136
+ return this.#port.hasPositionTracking();
137
+ }
138
+ hasInputStreaming() {
139
+ return this.#port.hasInputStreaming();
140
+ }
141
+ usesVerbatim() {
142
+ return this.#port.usesVerbatim();
143
+ }
144
+ stackOverflowRecoveryAvailable() {
145
+ return this.#port.stackOverflowRecoveryAvailable();
146
+ }
147
+ symbolCount() {
148
+ return this.#port.symbolCount();
149
+ }
150
+ variableCount() {
151
+ return this.#port.variableCount();
152
+ }
153
+ statusString(status) {
154
+ return this.#port.statusString(status);
155
+ }
156
+ // -- lifecycle -------------------------------------------------------
157
+ close() {
158
+ if (this.#handle !== null) {
159
+ this.#port.destroySession(this.#handle);
160
+ this.#handle = null;
161
+ }
162
+ this.#closed = true;
163
+ }
164
+ /** For `using session = new Session()` (Explicit Resource Management). */
165
+ [Symbol.dispose]() {
166
+ this.close();
167
+ }
168
+ // -- parsing ---------------------------------------------------------
169
+ parse(input) {
170
+ const handle = this.#requireHandle();
171
+ const buf = typeof input === "string" ? encodeUtf8(input) : input;
172
+ this.#port.syncProcedures(listProcedures());
173
+ const previous = setParsingSession(this);
174
+ let status;
175
+ try {
176
+ status = this.#port.parse(handle, buf);
177
+ }
178
+ finally {
179
+ setParsingSession(previous);
180
+ }
181
+ if (status < 0) {
182
+ throw this.#errorFromStatus(status);
183
+ }
184
+ return status;
185
+ }
186
+ parseSentinel(input) {
187
+ return this.parse(input);
188
+ }
189
+ parseFile(filePath) {
190
+ const handle = this.#requireHandle();
191
+ this.#port.syncProcedures(listProcedures());
192
+ const previous = setParsingSession(this);
193
+ let status;
194
+ try {
195
+ status = this.#port.parseFile(handle, filePath);
196
+ }
197
+ finally {
198
+ setParsingSession(previous);
199
+ }
200
+ if (status < 0) {
201
+ throw this.#errorFromStatus(status);
202
+ }
203
+ return status;
204
+ }
205
+ // -- arena -----------------------------------------------------------
206
+ nodeCount() {
207
+ return this.#port.nodeCount(this.#requireHandle());
208
+ }
209
+ reserveNodes(capacity) {
210
+ const h = this.#requireHandle();
211
+ const st = this.#port.reserveNodes(h, typeof capacity === "bigint" ? capacity : BigInt(capacity));
212
+ this.#checkStatus(st);
213
+ }
214
+ nodeCapacity() {
215
+ return this.#port.nodeCapacity(this.#requireHandle());
216
+ }
217
+ // -- navigation ------------------------------------------------------
218
+ rootNode() {
219
+ const h = this.#requireHandle();
220
+ return optNode(this, this.#port.rootNode(h));
221
+ }
222
+ nodeValid(node) {
223
+ const h = this.#requireHandle();
224
+ return this.#port.nodeValid(h, toNodeAddress(node));
225
+ }
226
+ childCount(node) {
227
+ const h = this.#requireHandle();
228
+ return this.#port.childCount(h, toNodeAddress(node));
229
+ }
230
+ children(node) {
231
+ const h = this.#requireHandle();
232
+ const addr = toNodeAddress(node);
233
+ const count = this.childCount(addr);
234
+ const out = [];
235
+ let child = this.#port.firstChild(h, addr);
236
+ for (let i = 0; i < count; i++) {
237
+ if (isInvalid(child))
238
+ throw new Error("child count changed during iteration");
239
+ out.push(new Node(this, child));
240
+ child = this.#port.nextSibling(h, child);
241
+ }
242
+ return out;
243
+ }
244
+ firstChild(node) {
245
+ const h = this.#requireHandle();
246
+ return optNode(this, this.#port.firstChild(h, toNodeAddress(node)));
247
+ }
248
+ lastChild(node) {
249
+ const h = this.#requireHandle();
250
+ return optNode(this, this.#port.lastChild(h, toNodeAddress(node)));
251
+ }
252
+ nextSibling(node) {
253
+ const h = this.#requireHandle();
254
+ return optNode(this, this.#port.nextSibling(h, toNodeAddress(node)));
255
+ }
256
+ priorSibling(node) {
257
+ const h = this.#requireHandle();
258
+ return optNode(this, this.#port.priorSibling(h, toNodeAddress(node)));
259
+ }
260
+ parent(node) {
261
+ const h = this.#requireHandle();
262
+ return optNode(this, this.#port.parent(h, toNodeAddress(node)));
263
+ }
264
+ /**
265
+ * Flat bulk read of the most recent successful parse in a single FFI
266
+ * crossing: one array slot per node address. Walk `parent`/`firstChild`/
267
+ * `next` directly instead of one call per node.
268
+ */
269
+ snapshot() {
270
+ return this.#port.treeSnapshot(this.#requireHandle());
271
+ }
272
+ /**
273
+ * Pre-order walker over the subtree rooted at `root`, with the root at
274
+ * depth 0. Pass true to prune subtrees rooted at semantic-error nodes.
275
+ * Returns null for invalid roots and builds without AST construction.
276
+ * Close the walker (or use `using`) before closing the session or
277
+ * parsing again.
278
+ */
279
+ walk(root, skipSemanticErrors = false) {
280
+ const h = this.#requireHandle();
281
+ const handle = this.#port.walkerCreate(h, toNodeAddress(root), skipSemanticErrors);
282
+ if (handle === null || handle === undefined)
283
+ return null;
284
+ return new Walker(this, this.#port, handle);
285
+ }
286
+ symbolNameBytes(node) {
287
+ const h = this.#requireHandle();
288
+ return this.#port.nodeSymbolName(h, toNodeAddress(node));
289
+ }
290
+ symbolName(node) {
291
+ const bytes = this.symbolNameBytes(node);
292
+ if (bytes === null)
293
+ return null;
294
+ return decodeUtf8(bytes);
295
+ }
296
+ text(node) {
297
+ const h = this.#requireHandle();
298
+ return this.#port.nodeText(h, toNodeAddress(node));
299
+ }
300
+ span(node) {
301
+ const h = this.#requireHandle();
302
+ return this.#port.nodeSpan(h, toNodeAddress(node));
303
+ }
304
+ lineColumn(node) {
305
+ const h = this.#requireHandle();
306
+ return this.#port.nodeLineColumn(h, toNodeAddress(node));
307
+ }
308
+ variableIndex(node) {
309
+ const h = this.#requireHandle();
310
+ const idx = this.#port.nodeVariableIndex(h, toNodeAddress(node));
311
+ if (idx === -1)
312
+ return null;
313
+ if (idx < 0)
314
+ throw this.#errorFromStatus(idx);
315
+ return idx;
316
+ }
317
+ lastPosition() {
318
+ const h = this.#requireHandle();
319
+ return this.#port.lastPosition(h);
320
+ }
321
+ hasDiagnostic() {
322
+ const h = this.#requireHandle();
323
+ return this.#port.hasDiagnostic(h);
324
+ }
325
+ setMessageOverride(name, message) {
326
+ const h = this.#requireHandle();
327
+ const st = this.#port.setMessageOverride(h, encodeUtf8(name), encodeUtf8(message));
328
+ this.#checkStatus(st);
329
+ }
330
+ // -- diagnostics -----------------------------------------------------
331
+ #buildDiagnosticSingular() {
332
+ const h = this.#requireHandle();
333
+ const kind = this.#port.diagnosticKind(h);
334
+ const pos = this.#port.diagnosticPosition(h);
335
+ const line = pos ? pos[0] : 0;
336
+ const col = pos ? pos[1] : 0;
337
+ const message = this.#port.diagnosticMessage(h) ?? "";
338
+ const messageAnsi = this.#port.diagnosticMessageAnsi(h) ?? "";
339
+ const unexpected = this.#port.diagnosticUnexpectedToken(h);
340
+ const expectedTokens = [];
341
+ const expCount = this.#port.diagnosticExpectedCount(h);
342
+ if (expCount > 0) {
343
+ for (let i = 0; i < expCount; i++) {
344
+ const b = this.#port.diagnosticExpectedAt(h, i);
345
+ if (b)
346
+ expectedTokens.push(b);
347
+ }
348
+ }
349
+ const context = [];
350
+ const ctxCount = this.#port.diagnosticContextCount(h);
351
+ if (ctxCount > 0) {
352
+ for (let i = 0; i < ctxCount; i++) {
353
+ const b = this.#port.diagnosticContextAt(h, i);
354
+ if (b)
355
+ context.push(decodeUtf8(b));
356
+ }
357
+ }
358
+ const syntaxErrorCount = this.#port.syntaxErrorCount(h);
359
+ const semanticErrorCount = this.#port.semanticErrorCount(h);
360
+ const semantic = this.#port.diagnosticSemantic(h);
361
+ const indentation = this.#port.diagnosticIndentation(h);
362
+ const recovery = this.#readRecoverySingular(h);
363
+ return {
364
+ kind,
365
+ line,
366
+ column: col,
367
+ message,
368
+ messageAnsi,
369
+ unexpectedToken: unexpected,
370
+ expectedTokens,
371
+ context,
372
+ syntaxErrorCount: syntaxErrorCount < 0 ? 0 : syntaxErrorCount,
373
+ semanticErrorCount: semanticErrorCount < 0 ? 0 : semanticErrorCount,
374
+ semantic,
375
+ indentation,
376
+ ...recovery,
377
+ };
378
+ }
379
+ diagnostic() {
380
+ const h = this.#requireHandle();
381
+ if (!this.#port.hasDiagnostic(h))
382
+ return null;
383
+ return this.#buildDiagnosticSingular();
384
+ }
385
+ diagnostics() {
386
+ const h = this.#requireHandle();
387
+ const count = this.#port.recordedDiagnosticCount(h);
388
+ if (count <= 0)
389
+ return [];
390
+ const out = [];
391
+ for (let i = 0; i < count; i++) {
392
+ const d = this.#buildRecordedDiagnostic(i);
393
+ if (d)
394
+ out.push(d);
395
+ }
396
+ return out;
397
+ }
398
+ #buildRecordedDiagnostic(index) {
399
+ const h = this.#requireHandle();
400
+ const pos = this.#port.recordedDiagnosticPosition(h, index);
401
+ if (pos === null)
402
+ return null;
403
+ const kind = this.#port.recordedDiagnosticKind(h, index);
404
+ const [line, col] = pos;
405
+ const message = this.#port.recordedDiagnosticMessage(h, index) ?? "";
406
+ const unexpected = this.#port.recordedUnexpectedToken(h, index);
407
+ const expectedTokens = [];
408
+ const expCount = this.#port.recordedExpectedCount(h, index);
409
+ if (expCount > 0) {
410
+ for (let j = 0; j < expCount; j++) {
411
+ const b = this.#port.recordedExpectedToken(h, index, j);
412
+ if (b)
413
+ expectedTokens.push(b);
414
+ }
415
+ }
416
+ const context = [];
417
+ const ctxCount = this.#port.recordedContextCount(h, index);
418
+ if (ctxCount > 0) {
419
+ for (let j = 0; j < ctxCount; j++) {
420
+ const b = this.#port.recordedContextName(h, index, j);
421
+ if (b)
422
+ context.push(decodeUtf8(b));
423
+ }
424
+ }
425
+ const indentation = this.#port.recordedIndentation(h, index);
426
+ const semantic = this.#port.recordedSemantic(h, index);
427
+ const recovery = this.#readRecoveryRecorded(h, index);
428
+ return {
429
+ kind,
430
+ line,
431
+ column: col,
432
+ message,
433
+ messageAnsi: message,
434
+ unexpectedToken: unexpected,
435
+ expectedTokens,
436
+ context,
437
+ syntaxErrorCount: 0,
438
+ semanticErrorCount: 0,
439
+ semantic,
440
+ indentation,
441
+ ...recovery,
442
+ };
443
+ }
444
+ // -- recovery ---------------------------------------------------------
445
+ #readRecoverySingular(handle) {
446
+ const h = handle;
447
+ const kindVal = this.#port.diagnosticRecoveryKind(h);
448
+ const recoveryKind = kindVal === 0 ? null : kindVal;
449
+ const terminal = this.#port.diagnosticRecoveryTerminal(h);
450
+ const resume = this.#port.diagnosticRecoveryResume(h);
451
+ const lhs = this.#port.diagnosticRecoveryLhsVariable(h);
452
+ const production = this.#port.diagnosticRecoveryProduction(h);
453
+ const occurrence = this.#port.diagnosticRecoveryOccurrence(h);
454
+ return {
455
+ recoveryKind,
456
+ recoveryTerminal: terminal,
457
+ recoveryResume: resume,
458
+ recoveryLhsVariable: lhs,
459
+ recoveryProduction: production,
460
+ recoveryOccurrence: occurrence,
461
+ };
462
+ }
463
+ #readRecoveryRecorded(handle, idx) {
464
+ const h = handle;
465
+ const kindVal = this.#port.recordedRecoveryKind(h, idx);
466
+ const recoveryKind = kindVal === 0 ? null : kindVal;
467
+ const terminal = this.#port.recordedRecoveryTerminal(h, idx);
468
+ const resume = this.#port.recordedRecoveryResume(h, idx);
469
+ const lhs = this.#port.recordedRecoveryLhsVariable(h, idx);
470
+ const production = this.#port.recordedRecoveryProduction(h, idx);
471
+ const occurrence = this.#port.recordedRecoveryOccurrence(h, idx);
472
+ return {
473
+ recoveryKind,
474
+ recoveryTerminal: terminal,
475
+ recoveryResume: resume,
476
+ recoveryLhsVariable: lhs,
477
+ recoveryProduction: production,
478
+ recoveryOccurrence: occurrence,
479
+ };
480
+ }
481
+ // -- tree editing ----------------------------------------------------
482
+ appendChildren(parent, chain) {
483
+ const h = this.#requireHandle();
484
+ this.#checkStatus(this.#port.treeAppendChildren(h, toNodeAddress(parent), toNodeAddress(chain)));
485
+ }
486
+ insertBefore(target, chain) {
487
+ const h = this.#requireHandle();
488
+ this.#checkStatus(this.#port.treeInsertBefore(h, toNodeAddress(target), toNodeAddress(chain)));
489
+ }
490
+ insertAfter(target, chain) {
491
+ const h = this.#requireHandle();
492
+ this.#checkStatus(this.#port.treeInsertAfter(h, toNodeAddress(target), toNodeAddress(chain)));
493
+ }
494
+ removeSiblings(node, count) {
495
+ const h = this.#requireHandle();
496
+ const { status, head } = this.#port.treeRemoveSiblings(h, toNodeAddress(node), count);
497
+ this.#checkStatus(status);
498
+ return optNode(this, head);
499
+ }
500
+ removeSelf(node) {
501
+ const h = this.#requireHandle();
502
+ const { status, head } = this.#port.treeRemoveSelf(h, toNodeAddress(node));
503
+ this.#checkStatus(status);
504
+ return optNode(this, head);
505
+ }
506
+ promoteChildrenOverWrapper(wrapper) {
507
+ const h = this.#requireHandle();
508
+ const { status, head } = this.#port.treePromoteChildrenOverWrapper(h, toNodeAddress(wrapper));
509
+ this.#checkStatus(status);
510
+ return optNode(this, head);
511
+ }
512
+ cleanChildren(node) {
513
+ const h = this.#requireHandle();
514
+ const { status, head } = this.#port.treeCleanChildren(h, toNodeAddress(node));
515
+ this.#checkStatus(status);
516
+ return optNode(this, head);
517
+ }
518
+ unlinkWrapper(wrapper) {
519
+ const h = this.#requireHandle();
520
+ this.#checkStatus(this.#port.treeUnlinkWrapper(h, toNodeAddress(wrapper)));
521
+ }
522
+ insertChildrenAt(parent, index, chain) {
523
+ const h = this.#requireHandle();
524
+ this.#checkStatus(this.#port.treeInsertChildrenAt(h, toNodeAddress(parent), index, toNodeAddress(chain)));
525
+ }
526
+ removeChildrenAt(parent, index, count) {
527
+ const h = this.#requireHandle();
528
+ const { status, head } = this.#port.treeRemoveChildrenAt(h, toNodeAddress(parent), index, count);
529
+ this.#checkStatus(status);
530
+ return optNode(this, head);
531
+ }
532
+ // -- symbol table ----------------------------------------------------
533
+ symbolNameAt(index) {
534
+ const h = this.#requireHandle();
535
+ return this.#port.symbolNameAt(h, index);
536
+ }
537
+ symbolIsTerminal(index) {
538
+ const h = this.#requireHandle();
539
+ return this.#port.symbolIsTerminal(h, index);
540
+ }
541
+ variableNameAt(index) {
542
+ const h = this.#requireHandle();
543
+ return this.#port.variableNameAt(h, index);
544
+ }
545
+ }
546
+ /**
547
+ * Pre-order tree walker over the last successful parse, yielding one
548
+ * {@link WalkStep} per node. Shares the session's node storage: close the
549
+ * walker (or use `using`) before closing the session or parsing again.
550
+ * Created by {@link Session.walk}.
551
+ */
552
+ export class Walker {
553
+ #session;
554
+ #port;
555
+ #handle;
556
+ constructor(session, port, handle) {
557
+ this.#session = session;
558
+ this.#port = port;
559
+ this.#handle = handle;
560
+ }
561
+ next() {
562
+ if (this.#handle === null)
563
+ return { done: true, value: undefined };
564
+ const step = this.#port.walkerNext(this.#handle);
565
+ if (step === null)
566
+ return { done: true, value: undefined };
567
+ return {
568
+ done: false,
569
+ value: {
570
+ node: new Node(this.#session, step.node),
571
+ depth: step.depth,
572
+ isSemanticError: step.isSemanticError,
573
+ },
574
+ };
575
+ }
576
+ [Symbol.iterator]() {
577
+ return this;
578
+ }
579
+ /**
580
+ * Prunes the children of the last yielded step; iteration continues with
581
+ * its next sibling. No effect without a last step.
582
+ */
583
+ skipChildren() {
584
+ if (this.#handle === null)
585
+ return;
586
+ this.#port.walkerSkipChildren(this.#handle);
587
+ }
588
+ close() {
589
+ if (this.#handle !== null) {
590
+ this.#port.walkerDestroy(this.#handle);
591
+ this.#handle = null;
592
+ }
593
+ }
594
+ /** For `using walker = session.walk(...)`. */
595
+ [Symbol.dispose]() {
596
+ this.close();
597
+ }
598
+ }
599
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/dist/text.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * UTF-8 helpers shared by the core. `TextEncoder`/`TextDecoder` are provided
3
+ * by Node, Bun, and Deno alike, so the core never touches `Buffer`.
4
+ */
5
+ export declare function encodeUtf8(text: string): Uint8Array;
6
+ export declare function byteLengthUtf8(text: string): number;
7
+ export declare function decodeUtf8(bytes: Uint8Array): string;
package/dist/text.js ADDED
@@ -0,0 +1,16 @@
1
+ /**
2
+ * UTF-8 helpers shared by the core. `TextEncoder`/`TextDecoder` are provided
3
+ * by Node, Bun, and Deno alike, so the core never touches `Buffer`.
4
+ */
5
+ const encoder = new TextEncoder();
6
+ const decoder = new TextDecoder();
7
+ export function encodeUtf8(text) {
8
+ return encoder.encode(text);
9
+ }
10
+ export function byteLengthUtf8(text) {
11
+ return encoder.encode(text).length;
12
+ }
13
+ export function decodeUtf8(bytes) {
14
+ return decoder.decode(bytes);
15
+ }
16
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}