@tabnas/transduce 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/dist/capability.d.ts +6 -0
  3. package/dist/capability.js +52 -0
  4. package/dist/capability.js.map +1 -0
  5. package/dist/datum.d.ts +64 -0
  6. package/dist/datum.js +391 -0
  7. package/dist/datum.js.map +1 -0
  8. package/dist/error.d.ts +43 -0
  9. package/dist/error.js +169 -0
  10. package/dist/error.js.map +1 -0
  11. package/dist/event.d.ts +56 -0
  12. package/dist/event.js +101 -0
  13. package/dist/event.js.map +1 -0
  14. package/dist/guard.d.ts +20 -0
  15. package/dist/guard.js +90 -0
  16. package/dist/guard.js.map +1 -0
  17. package/dist/json.d.ts +4 -0
  18. package/dist/json.js +92 -0
  19. package/dist/json.js.map +1 -0
  20. package/dist/limits.d.ts +36 -0
  21. package/dist/limits.js +133 -0
  22. package/dist/limits.js.map +1 -0
  23. package/dist/lines.d.ts +39 -0
  24. package/dist/lines.js +1139 -0
  25. package/dist/lines.js.map +1 -0
  26. package/dist/matcher.d.ts +26 -0
  27. package/dist/matcher.js +245 -0
  28. package/dist/matcher.js.map +1 -0
  29. package/dist/parser-source.d.ts +27 -0
  30. package/dist/parser-source.js +194 -0
  31. package/dist/parser-source.js.map +1 -0
  32. package/dist/route.d.ts +61 -0
  33. package/dist/route.js +197 -0
  34. package/dist/route.js.map +1 -0
  35. package/dist/rule-events.d.ts +58 -0
  36. package/dist/rule-events.js +598 -0
  37. package/dist/rule-events.js.map +1 -0
  38. package/dist/scan.d.ts +19 -0
  39. package/dist/scan.js +70 -0
  40. package/dist/scan.js.map +1 -0
  41. package/dist/selector.d.ts +40 -0
  42. package/dist/selector.js +154 -0
  43. package/dist/selector.js.map +1 -0
  44. package/dist/sink.d.ts +29 -0
  45. package/dist/sink.js +184 -0
  46. package/dist/sink.js.map +1 -0
  47. package/dist/source.d.ts +37 -0
  48. package/dist/source.js +113 -0
  49. package/dist/source.js.map +1 -0
  50. package/dist/table-from-json.d.ts +12 -0
  51. package/dist/table-from-json.js +217 -0
  52. package/dist/table-from-json.js.map +1 -0
  53. package/dist/table.d.ts +81 -0
  54. package/dist/table.js +141 -0
  55. package/dist/table.js.map +1 -0
  56. package/dist/transduce.d.ts +28 -0
  57. package/dist/transduce.js +109 -0
  58. package/dist/transduce.js.map +1 -0
  59. package/dist/tsconfig.tsbuildinfo +1 -0
  60. package/dist/value.d.ts +16 -0
  61. package/dist/value.js +96 -0
  62. package/dist/value.js.map +1 -0
  63. package/package.json +65 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 tabnas
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,6 @@
1
+ export declare const INCREMENTAL: readonly string[];
2
+ export declare function isIncremental(grammar: string): boolean;
3
+ export declare const capability: Readonly<{
4
+ INCREMENTAL: readonly string[];
5
+ incremental: typeof isIncremental;
6
+ }>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /* Copyright (c) 2026 tabnas, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.capability = exports.INCREMENTAL = void 0;
5
+ exports.isIncremental = isIncremental;
6
+ // Which grammars the incremental source is verified for, in THIS runtime.
7
+ //
8
+ // Incremental streaming is a per-grammar VERIFIED capability, never an
9
+ // assumption, and it is earned per runtime: the TypeScript grammars build
10
+ // their values through TypeScript rule events, whose shapes need not be the
11
+ // Rust ones, so this list is not copied from the Rust crate.
12
+ // `test/incremental.test.ts` runs every fixture under rs/tests/fixtures
13
+ // (and the generated documents) through both the incremental and the
14
+ // materialized path for every grammar in the devDependencies, and asserts
15
+ // this list in both directions: a listed grammar that ever completes a
16
+ // stream the walk contradicts, or that the adapter refuses for how it
17
+ // builds its values, fails the suite, and so does an unlisted grammar that
18
+ // never does. A grammar not listed still works through materialize mode
19
+ // and `ValueSource`; it just retains the whole value, and `ParserSource`
20
+ // refuses to run it incrementally.
21
+ //
22
+ // What "verified" promises is the Rust runtime's promise (docs/reference.md,
23
+ // "The verified grammars"): an incremental run either streams exactly what
24
+ // the walk would (number lexemes aside), or streams every occurrence of a
25
+ // repeated member name so that a `last_wins` router builds the walk's
26
+ // value, or fails before `end` with a documented code, never with a wrong
27
+ // stream.
28
+ // Measured: the TypeScript grammars earn the same eight as the Rust ones;
29
+ // `toml`, `ini`, `csv`, `xml` and `feed` open a section's, a record's or an
30
+ // element's container before its key, or build a record the stream does not
31
+ // see, and the adapter refuses each on its own samples.
32
+ // The grammars whose incremental events never contradict the whole-value
33
+ // walk on any fixture, by their package's name (`@tabnas/<name>`).
34
+ exports.INCREMENTAL = Object.freeze([
35
+ 'json',
36
+ 'json5',
37
+ 'jsonc',
38
+ 'jsonic',
39
+ 'jsonl',
40
+ 'markdown',
41
+ 'yaml',
42
+ 'zon',
43
+ ]);
44
+ // Whether `grammar` may be run in incremental mode.
45
+ function isIncremental(grammar) {
46
+ return exports.INCREMENTAL.includes(grammar);
47
+ }
48
+ exports.capability = Object.freeze({
49
+ INCREMENTAL: exports.INCREMENTAL,
50
+ incremental: isIncremental,
51
+ });
52
+ //# sourceMappingURL=capability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability.js","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":";AAAA,4CAA4C;;;;AAE5C,0EAA0E;AAC1E,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAC1E,4EAA4E;AAC5E,6DAA6D;AAC7D,wEAAwE;AACxE,qEAAqE;AACrE,0EAA0E;AAC1E,uEAAuE;AACvE,sEAAsE;AACtE,2EAA2E;AAC3E,wEAAwE;AACxE,yEAAyE;AACzE,mCAAmC;AACnC,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,0EAA0E;AAC1E,sEAAsE;AACtE,0EAA0E;AAC1E,UAAU;AAEV,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,wDAAwD;AAExD,yEAAyE;AACzE,mEAAmE;AACtD,QAAA,WAAW,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC1D,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,UAAU;IACV,MAAM;IACN,KAAK;CACN,CAAC,CAAA;AAEF,oDAAoD;AACpD,uBAA8B,OAAe;IAC3C,OAAO,QAAA,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC;AAEY,QAAA,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,WAAW,EAAX,QAAA,WAAW;IACX,WAAW,EAAE,aAAa;CAC3B,CAAC,CAAA"}
@@ -0,0 +1,64 @@
1
+ import { JsonEvent } from './event';
2
+ import { Segment } from './selector';
3
+ import { Flow, Sink } from './sink';
4
+ export type Datum = {
5
+ readonly type: 'null';
6
+ } | {
7
+ readonly type: 'bool';
8
+ readonly value: boolean;
9
+ } | {
10
+ readonly type: 'number';
11
+ readonly value: number;
12
+ readonly lexeme: string | null;
13
+ } | {
14
+ readonly type: 'string';
15
+ readonly value: string;
16
+ } | {
17
+ readonly type: 'array';
18
+ readonly items: Datum[];
19
+ } | {
20
+ readonly type: 'object';
21
+ readonly members: Map<string, Datum>;
22
+ };
23
+ export declare const Datum: Readonly<{
24
+ null: {
25
+ readonly type: 'null';
26
+ };
27
+ bool(value: boolean): Datum;
28
+ number(value: number, lexeme?: string | null): Datum;
29
+ string(value: string): Datum;
30
+ array(items?: Datum[]): Datum;
31
+ object(members?: Map<string, Datum> | Iterable<[string, Datum]>): Datum;
32
+ byteSize: typeof byteSize;
33
+ getPath: typeof getPath;
34
+ takePath: typeof takePath;
35
+ isContainer(d: Datum): boolean;
36
+ fromTabnas: typeof fromTabnas;
37
+ toJSON: typeof toJSON;
38
+ fromJSON: typeof fromJSON;
39
+ toText: typeof toText;
40
+ }>;
41
+ export declare function byteSize(d: Datum): number;
42
+ export declare function getPath(d: Datum, path: readonly Segment[]): Datum | undefined;
43
+ export declare function takePath(d: Datum, path: readonly Segment[]): Datum | undefined;
44
+ export declare function fromTabnas(value: unknown): Datum;
45
+ export declare function toJSON(d: Datum): unknown;
46
+ export declare function fromJSON(value: unknown): Datum;
47
+ export declare function toText(d: Datum): string;
48
+ export declare function walkDatum(d: Datum, sink: Sink): Flow;
49
+ export type Duplicates = 'reject' | 'last_wins' | 'first_wins';
50
+ export declare class DatumBuilder {
51
+ private stack;
52
+ private done;
53
+ private held;
54
+ private readonly limit;
55
+ private readonly limitName;
56
+ private readonly duplicates;
57
+ constructor(limit: number, limitName: string, duplicates: Duplicates);
58
+ bytes(): number;
59
+ finished(): boolean;
60
+ take(): Datum | undefined;
61
+ private charge;
62
+ private place;
63
+ event(ev: JsonEvent): void;
64
+ }
package/dist/datum.js ADDED
@@ -0,0 +1,391 @@
1
+ "use strict";
2
+ /* Copyright (c) 2026 tabnas, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DatumBuilder = exports.Datum = void 0;
5
+ exports.byteSize = byteSize;
6
+ exports.getPath = getPath;
7
+ exports.takePath = takePath;
8
+ exports.fromTabnas = fromTabnas;
9
+ exports.toJSON = toJSON;
10
+ exports.fromJSON = fromJSON;
11
+ exports.toText = toText;
12
+ exports.walkDatum = walkDatum;
13
+ // The retained value type.
14
+ //
15
+ // What a capture materializes and what a projected cell holds. Distinct
16
+ // from the engine's value on purpose: a datum keeps a number's lexeme,
17
+ // keeps member order whatever the keys look like (a `Map`, since a plain
18
+ // object enumerates integer-like keys first), measures its own size
19
+ // against limits in UTF-8 bytes, and is owned by the transducer rather
20
+ // than shared with a parse.
21
+ const error_1 = require("./error");
22
+ const event_1 = require("./event");
23
+ const json_1 = require("./json");
24
+ const limits_1 = require("./limits");
25
+ const value_1 = require("./value");
26
+ const NULL = Object.freeze({ type: 'null' });
27
+ const TRUE = Object.freeze({ type: 'bool', value: true });
28
+ const FALSE = Object.freeze({ type: 'bool', value: false });
29
+ exports.Datum = Object.freeze({
30
+ null: NULL,
31
+ bool(value) {
32
+ return value ? TRUE : FALSE;
33
+ },
34
+ number(value, lexeme) {
35
+ return { type: 'number', value, lexeme: lexeme ?? null };
36
+ },
37
+ string(value) {
38
+ return { type: 'string', value };
39
+ },
40
+ array(items = []) {
41
+ return { type: 'array', items };
42
+ },
43
+ object(members = []) {
44
+ return { type: 'object', members: members instanceof Map ? members : new Map(members) };
45
+ },
46
+ // Payload bytes plus `NODE_BYTES` per node: the measure limits use.
47
+ byteSize,
48
+ getPath,
49
+ takePath,
50
+ isContainer(d) {
51
+ return 'array' === d.type || 'object' === d.type;
52
+ },
53
+ // From an engine value: `undefined` is `null`, as the engine serializes
54
+ // it; a number has no lexeme.
55
+ fromTabnas,
56
+ // As a plain JavaScript value, for oracles and tests. An object becomes a
57
+ // plain object (integer-like keys reorder), a number its value.
58
+ toJSON,
59
+ // From a plain JavaScript value, for tests. A number's lexeme is its
60
+ // shortest text.
61
+ fromJSON,
62
+ // Compact JSON, keeping number lexemes.
63
+ toText,
64
+ });
65
+ function byteSize(d) {
66
+ switch (d.type) {
67
+ case 'null':
68
+ case 'bool':
69
+ return limits_1.NODE_BYTES;
70
+ case 'number':
71
+ return limits_1.NODE_BYTES + (null != d.lexeme ? (0, limits_1.utf8Bytes)(d.lexeme) : 8);
72
+ case 'string':
73
+ return limits_1.NODE_BYTES + (0, limits_1.utf8Bytes)(d.value);
74
+ case 'array': {
75
+ let n = limits_1.NODE_BYTES;
76
+ for (const item of d.items)
77
+ n += byteSize(item);
78
+ return n;
79
+ }
80
+ case 'object': {
81
+ let n = limits_1.NODE_BYTES;
82
+ for (const [k, v] of d.members)
83
+ n += (0, limits_1.utf8Bytes)(k) + byteSize(v);
84
+ return n;
85
+ }
86
+ }
87
+ }
88
+ // The value at a concrete path below this one.
89
+ function getPath(d, path) {
90
+ let here = d;
91
+ for (const seg of path) {
92
+ if (undefined === here)
93
+ return undefined;
94
+ if ('string' === typeof seg) {
95
+ here = 'object' === here.type ? here.members.get(seg) : undefined;
96
+ }
97
+ else {
98
+ here = 'array' === here.type ? here.items[seg] : undefined;
99
+ }
100
+ }
101
+ return here;
102
+ }
103
+ // The value at a concrete path below this one, moved out and replaced by
104
+ // `null` in its container. The root itself cannot be replaced in place, so
105
+ // an empty path returns the datum and leaves it alone.
106
+ function takePath(d, path) {
107
+ if (0 === path.length)
108
+ return d;
109
+ const parent = getPath(d, path.slice(0, -1));
110
+ if (undefined === parent)
111
+ return undefined;
112
+ const last = path[path.length - 1];
113
+ if ('string' === typeof last) {
114
+ if ('object' !== parent.type || !parent.members.has(last))
115
+ return undefined;
116
+ const v = parent.members.get(last);
117
+ parent.members.set(last, NULL);
118
+ return v;
119
+ }
120
+ if ('array' !== parent.type || last >= parent.items.length)
121
+ return undefined;
122
+ const v = parent.items[last];
123
+ parent.items[last] = NULL;
124
+ return v;
125
+ }
126
+ function fromTabnas(value) {
127
+ if (Array.isArray(value))
128
+ return exports.Datum.array(value.map(fromTabnas));
129
+ const scalar = (0, value_1.engineScalar)(value);
130
+ if (undefined !== scalar) {
131
+ switch (scalar.type) {
132
+ case 'null':
133
+ return NULL;
134
+ case 'bool':
135
+ return exports.Datum.bool(scalar.value);
136
+ case 'number':
137
+ return exports.Datum.number(scalar.value);
138
+ case 'string':
139
+ return exports.Datum.string(scalar.value);
140
+ }
141
+ }
142
+ const members = new Map();
143
+ for (const k of (0, value_1.engineKeys)(value))
144
+ members.set(k, fromTabnas(value[k]));
145
+ return { type: 'object', members };
146
+ }
147
+ function toJSON(d) {
148
+ switch (d.type) {
149
+ case 'null':
150
+ return null;
151
+ case 'bool':
152
+ case 'string':
153
+ return d.value;
154
+ case 'number':
155
+ return null != d.lexeme ? Number(d.lexeme) : d.value;
156
+ case 'array':
157
+ return d.items.map(toJSON);
158
+ case 'object': {
159
+ const out = {};
160
+ for (const [k, v] of d.members)
161
+ out[k] = toJSON(v);
162
+ return out;
163
+ }
164
+ }
165
+ }
166
+ function fromJSON(value) {
167
+ if (null == value)
168
+ return NULL;
169
+ if ('boolean' === typeof value)
170
+ return exports.Datum.bool(value);
171
+ if ('number' === typeof value)
172
+ return exports.Datum.number(value, String(value));
173
+ if ('string' === typeof value)
174
+ return exports.Datum.string(value);
175
+ if (Array.isArray(value))
176
+ return exports.Datum.array(value.map(fromJSON));
177
+ const members = new Map();
178
+ if (value instanceof Map) {
179
+ for (const [k, v] of value)
180
+ members.set(String(k), fromJSON(v));
181
+ }
182
+ else {
183
+ for (const k of Object.keys(value)) {
184
+ members.set(k, fromJSON(value[k]));
185
+ }
186
+ }
187
+ return { type: 'object', members };
188
+ }
189
+ function toText(d) {
190
+ switch (d.type) {
191
+ case 'null':
192
+ return 'null';
193
+ case 'bool':
194
+ return d.value ? 'true' : 'false';
195
+ case 'number':
196
+ return (0, json_1.jsonNumber)(d.value, d.lexeme);
197
+ case 'string':
198
+ return (0, json_1.jsonString)(d.value);
199
+ case 'array': {
200
+ let out = '[';
201
+ d.items.forEach((item, i) => {
202
+ if (i > 0)
203
+ out += ',';
204
+ out += toText(item);
205
+ });
206
+ return out + ']';
207
+ }
208
+ case 'object': {
209
+ let out = '{';
210
+ let i = 0;
211
+ for (const [k, v] of d.members) {
212
+ if (i++ > 0)
213
+ out += ',';
214
+ out += (0, json_1.jsonString)(k) + ':' + toText(v);
215
+ }
216
+ return out + '}';
217
+ }
218
+ }
219
+ }
220
+ // Emit a datum as `JsonEvents/1` (without the final `end`, so a datum can
221
+ // stand in for any part of a document).
222
+ function walkDatum(d, sink) {
223
+ switch (d.type) {
224
+ case 'null':
225
+ return sink.event(event_1.Ev.null);
226
+ case 'bool':
227
+ return sink.event(event_1.Ev.bool(d.value));
228
+ case 'number':
229
+ return sink.event(event_1.Ev.number(d.value, d.lexeme));
230
+ case 'string':
231
+ return sink.event(event_1.Ev.string(d.value));
232
+ case 'array':
233
+ if ('stop' === sink.event(event_1.Ev.arrayStart))
234
+ return 'stop';
235
+ for (const item of d.items) {
236
+ if ('stop' === walkDatum(item, sink))
237
+ return 'stop';
238
+ }
239
+ return sink.event(event_1.Ev.arrayEnd);
240
+ case 'object':
241
+ if ('stop' === sink.event(event_1.Ev.objectStart))
242
+ return 'stop';
243
+ for (const [k, v] of d.members) {
244
+ if ('stop' === sink.event(event_1.Ev.key(k)))
245
+ return 'stop';
246
+ if ('stop' === walkDatum(v, sink))
247
+ return 'stop';
248
+ }
249
+ return sink.event(event_1.Ev.objectEnd);
250
+ }
251
+ }
252
+ // Builds one `Datum` from the events of one value, under a byte limit.
253
+ //
254
+ // Feed it every event from the value's first to its last; `finished()`
255
+ // says when the value is complete. Bytes are counted as they arrive, and
256
+ // the limit fails at the first byte over it rather than after the value is
257
+ // whole. The builder knows nothing of where in a document its value sits:
258
+ // a failure leaves `path` unset and the stage that placed the builder adds
259
+ // it.
260
+ class DatumBuilder {
261
+ // A builder whose limit failure names `limitName` (a `Limits` field).
262
+ constructor(limit, limitName, duplicates) {
263
+ this.stack = [];
264
+ this.done = undefined;
265
+ this.held = 0;
266
+ this.limit = limit;
267
+ this.limitName = limitName;
268
+ this.duplicates = duplicates;
269
+ }
270
+ bytes() {
271
+ return this.held;
272
+ }
273
+ finished() {
274
+ return undefined !== this.done;
275
+ }
276
+ // The value, once finished. Probing an unfinished builder returns
277
+ // `undefined` and leaves the charge for the partial value in place.
278
+ take() {
279
+ const done = this.done;
280
+ if (undefined !== done) {
281
+ this.done = undefined;
282
+ this.held = 0;
283
+ }
284
+ return done;
285
+ }
286
+ charge(n) {
287
+ this.held += n;
288
+ if (this.held > this.limit) {
289
+ throw error_1.Fail.limit(this.limitName, this.limit, `a value is larger than ${this.limit} bytes`);
290
+ }
291
+ }
292
+ place(value) {
293
+ const top = this.stack[this.stack.length - 1];
294
+ if (undefined === top) {
295
+ this.done = value;
296
+ return;
297
+ }
298
+ if (top.array) {
299
+ top.items.push(value);
300
+ return;
301
+ }
302
+ const key = top.key;
303
+ if (null === key) {
304
+ throw error_1.Fail.protocol('a value arrived inside an object without a key');
305
+ }
306
+ top.key = null;
307
+ // A repeated member was charged in full as its events arrived, which is
308
+ // right: for a moment both were held. Whichever one goes now gives its
309
+ // bytes back, so an object that keeps repeating a small key does not
310
+ // grow towards the limit while the value it holds stays the same size.
311
+ const existing = top.members.get(key);
312
+ let released = 0;
313
+ if (undefined !== existing) {
314
+ switch (this.duplicates) {
315
+ case 'reject':
316
+ throw new error_1.Fail('DUPLICATE_MEMBER', `member ${JSON.stringify(key)} appears twice`);
317
+ case 'first_wins':
318
+ this.held = Math.max(0, this.held - ((0, limits_1.utf8Bytes)(key) + byteSize(value)));
319
+ return;
320
+ case 'last_wins':
321
+ released = (0, limits_1.utf8Bytes)(key) + byteSize(existing);
322
+ }
323
+ }
324
+ top.members.set(key, value);
325
+ this.held = Math.max(0, this.held - released);
326
+ }
327
+ // One event of the value being built.
328
+ event(ev) {
329
+ if (undefined !== this.done) {
330
+ throw error_1.Fail.protocol('an event arrived after the value was complete');
331
+ }
332
+ switch (ev.type) {
333
+ case 'object_start':
334
+ this.charge(limits_1.NODE_BYTES);
335
+ this.stack.push({ array: false, members: new Map(), key: null });
336
+ break;
337
+ case 'array_start':
338
+ this.charge(limits_1.NODE_BYTES);
339
+ this.stack.push({ array: true, items: [] });
340
+ break;
341
+ case 'key': {
342
+ this.charge((0, limits_1.utf8Bytes)(ev.key));
343
+ const top = this.stack[this.stack.length - 1];
344
+ if (undefined === top || top.array || null !== top.key) {
345
+ throw error_1.Fail.protocol('a key arrived where no member was expected');
346
+ }
347
+ top.key = ev.key;
348
+ break;
349
+ }
350
+ case 'object_end': {
351
+ const top = this.stack.pop();
352
+ if (undefined === top || top.array) {
353
+ throw error_1.Fail.protocol('an object ended that had not started');
354
+ }
355
+ if (null !== top.key) {
356
+ throw error_1.Fail.protocol('an object ended after a key without its value');
357
+ }
358
+ this.place({ type: 'object', members: top.members });
359
+ break;
360
+ }
361
+ case 'array_end': {
362
+ const top = this.stack.pop();
363
+ if (undefined === top || !top.array) {
364
+ throw error_1.Fail.protocol('an array ended that had not started');
365
+ }
366
+ this.place({ type: 'array', items: top.items });
367
+ break;
368
+ }
369
+ case 'null':
370
+ this.charge(limits_1.NODE_BYTES);
371
+ this.place(NULL);
372
+ break;
373
+ case 'bool':
374
+ this.charge(limits_1.NODE_BYTES);
375
+ this.place(exports.Datum.bool(ev.value));
376
+ break;
377
+ case 'number':
378
+ this.charge(limits_1.NODE_BYTES + (null != ev.lexeme ? (0, limits_1.utf8Bytes)(ev.lexeme) : 8));
379
+ this.place(exports.Datum.number(ev.value, ev.lexeme));
380
+ break;
381
+ case 'string':
382
+ this.charge(limits_1.NODE_BYTES + (0, limits_1.utf8Bytes)(ev.value));
383
+ this.place(exports.Datum.string(ev.value));
384
+ break;
385
+ case 'end':
386
+ throw error_1.Fail.protocol('the document ended inside a value being captured');
387
+ }
388
+ }
389
+ }
390
+ exports.DatumBuilder = DatumBuilder;
391
+ //# sourceMappingURL=datum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datum.js","sourceRoot":"","sources":["../src/datum.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ declare const CODES: readonly ['DSL_PARSE_ERROR', 'DSL_TYPE_ERROR', 'STREAM_REUSED', 'STREAMABILITY_UNKNOWN', 'INPUT_ORDER_VIOLATION', 'CAPTURE_OVERLAP_UNSUPPORTED', 'MISSING_VALUE', 'DUPLICATE_MEMBER', 'INVALID_NUMBER', 'PROTOCOL_ORDER_ERROR', 'TARGET_VALUE_UNREPRESENTABLE', 'RESOURCE_LIMIT_EXCEEDED', 'INPUT_INVALID', 'OUTPUT_FAILED', 'ABORTED'];
2
+ export type Code = (typeof CODES)[number];
3
+ type CodeTable = {
4
+ readonly [K in Code]: K;
5
+ } & {
6
+ readonly ALL: readonly Code[];
7
+ parse(text: string): Code | undefined;
8
+ };
9
+ export declare const Code: CodeTable;
10
+ export type Limit = {
11
+ name: string;
12
+ value: number;
13
+ };
14
+ export declare class Fail extends Error {
15
+ code: Code;
16
+ path?: string;
17
+ limit?: Limit;
18
+ row?: number;
19
+ col?: number;
20
+ file?: string;
21
+ committedOutput: boolean;
22
+ constructor(code: Code, message: string);
23
+ inFile(file: string): this;
24
+ atPath(path: string): this;
25
+ at(row: number, col: number): this;
26
+ committed(): this;
27
+ static limit(name: string, value: number, message: string): Fail;
28
+ static protocol(message: string): Fail;
29
+ static input(message: string): Fail;
30
+ static output(message: string): Fail;
31
+ static aborted(): Fail;
32
+ static fromTabnas(e: any): Fail;
33
+ toJSON(): Record<string, unknown>;
34
+ toString(): string;
35
+ }
36
+ export declare function isFail(e: unknown): e is Fail;
37
+ export declare function engineCode(e: any): string;
38
+ export declare function engineDetail(e: any): string;
39
+ export declare function enginePosition(e: any): {
40
+ row: number;
41
+ col: number;
42
+ } | undefined;
43
+ export {};