@tabnas/transduce 0.1.2 → 0.2.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.
- package/README.md +18 -0
- package/dist/guard.d.ts +1 -3
- package/dist/guard.js +8 -9
- package/dist/guard.js.map +1 -1
- package/dist/lines.d.ts +1 -2
- package/dist/lines.js +46 -89
- package/dist/lines.js.map +1 -1
- package/dist/matcher.d.ts +1 -3
- package/dist/matcher.js +12 -13
- package/dist/matcher.js.map +1 -1
- package/dist/parser-source.d.ts +1 -2
- package/dist/parser-source.js +11 -13
- package/dist/parser-source.js.map +1 -1
- package/dist/route.d.ts +1 -32
- package/dist/route.js +8 -32
- package/dist/route.js.map +1 -1
- package/dist/routers.d.ts +2 -0
- package/dist/routers.js +24 -0
- package/dist/routers.js.map +1 -0
- package/dist/rule-events.d.ts +1 -4
- package/dist/rule-events.js +40 -44
- package/dist/rule-events.js.map +1 -1
- package/dist/scan.d.ts +1 -10
- package/dist/scan.js +4 -17
- package/dist/scan.js.map +1 -1
- package/dist/source.d.ts +1 -4
- package/dist/source.js +20 -22
- package/dist/source.js.map +1 -1
- package/dist/table-from-json.d.ts +1 -5
- package/dist/table-from-json.js +25 -29
- package/dist/table-from-json.js.map +1 -1
- package/dist/transduce.d.ts +23 -19
- package/dist/transduce.js +66 -56
- package/dist/transduce.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -4
- package/src/guard.ts +10 -4
- package/src/lines.ts +45 -6
- package/src/matcher.ts +1 -6
- package/src/parser-source.ts +2 -4
- package/src/route.ts +18 -70
- package/src/routers.ts +64 -0
- package/src/rule-events.ts +17 -7
- package/src/scan.ts +1 -19
- package/src/source.ts +12 -6
- package/src/table-from-json.ts +20 -9
- package/src/transduce.ts +36 -19
- package/dist/datum.d.ts +0 -64
- package/dist/datum.js +0 -391
- package/dist/datum.js.map +0 -1
- package/dist/error.d.ts +0 -43
- package/dist/error.js +0 -169
- package/dist/error.js.map +0 -1
- package/dist/event.d.ts +0 -56
- package/dist/event.js +0 -101
- package/dist/event.js.map +0 -1
- package/dist/json.d.ts +0 -4
- package/dist/json.js +0 -92
- package/dist/json.js.map +0 -1
- package/dist/limits.d.ts +0 -36
- package/dist/limits.js +0 -133
- package/dist/limits.js.map +0 -1
- package/dist/selector.d.ts +0 -40
- package/dist/selector.js +0 -154
- package/dist/selector.js.map +0 -1
- package/dist/sink.d.ts +0 -29
- package/dist/sink.js +0 -184
- package/dist/sink.js.map +0 -1
- package/dist/table.d.ts +0 -81
- package/dist/table.js +0 -141
- package/dist/table.js.map +0 -1
- package/dist/value.d.ts +0 -16
- package/dist/value.js +0 -96
- package/dist/value.js.map +0 -1
- package/src/datum.ts +0 -407
- package/src/error.ts +0 -198
- package/src/event.ts +0 -134
- package/src/json.ts +0 -82
- package/src/limits.ts +0 -165
- package/src/selector.ts +0 -191
- package/src/sink.ts +0 -199
- package/src/table.ts +0 -213
- package/src/value.ts +0 -93
package/dist/matcher.js
CHANGED
|
@@ -17,8 +17,7 @@ exports.Matcher = void 0;
|
|
|
17
17
|
// array ending an object, a value after the root). Every stage downstream
|
|
18
18
|
// of it can therefore trust the sequence. A concrete `Path` is built only
|
|
19
19
|
// on request, for a delivered match or a failure.
|
|
20
|
-
const
|
|
21
|
-
const selector_1 = require("./selector");
|
|
20
|
+
const shared_1 = require("@tabnas/alchemy/shared");
|
|
22
21
|
const ROOT = 0;
|
|
23
22
|
function newNode() {
|
|
24
23
|
return {
|
|
@@ -100,7 +99,7 @@ class Matcher {
|
|
|
100
99
|
const level = this.levels[i];
|
|
101
100
|
segments.push(level.array ? Math.max(0, level.started - 1) : level.key);
|
|
102
101
|
}
|
|
103
|
-
return new
|
|
102
|
+
return new shared_1.Path(segments);
|
|
104
103
|
}
|
|
105
104
|
// The captures that began with the last event, in id order.
|
|
106
105
|
begins() {
|
|
@@ -109,16 +108,16 @@ class Matcher {
|
|
|
109
108
|
// One event. A malformed sequence is a `PROTOCOL_ORDER_ERROR`.
|
|
110
109
|
event(ev) {
|
|
111
110
|
if (this.isEnded) {
|
|
112
|
-
throw
|
|
111
|
+
throw shared_1.Fail.protocol('an event arrived after the document ended');
|
|
113
112
|
}
|
|
114
113
|
switch (ev.type) {
|
|
115
114
|
case 'key': {
|
|
116
115
|
const level = 0 < this.open ? this.levels[this.open - 1] : undefined;
|
|
117
116
|
if (undefined === level || level.array) {
|
|
118
|
-
throw
|
|
117
|
+
throw shared_1.Fail.protocol('a key arrived outside an object');
|
|
119
118
|
}
|
|
120
119
|
if (level.inValue) {
|
|
121
|
-
throw
|
|
120
|
+
throw shared_1.Fail.protocol('a key arrived where a value was expected');
|
|
122
121
|
}
|
|
123
122
|
level.key = ev.key;
|
|
124
123
|
level.inValue = true;
|
|
@@ -151,13 +150,13 @@ class Matcher {
|
|
|
151
150
|
const wantArray = 'array_end' === ev.type;
|
|
152
151
|
const level = 0 < this.open ? this.levels[this.open - 1] : undefined;
|
|
153
152
|
if (undefined === level) {
|
|
154
|
-
throw
|
|
153
|
+
throw shared_1.Fail.protocol('a container ended that had not started');
|
|
155
154
|
}
|
|
156
155
|
if (level.array !== wantArray) {
|
|
157
|
-
throw
|
|
156
|
+
throw shared_1.Fail.protocol(wantArray ? 'an array ended inside an object' : 'an object ended inside an array');
|
|
158
157
|
}
|
|
159
158
|
if (level.inValue) {
|
|
160
|
-
throw
|
|
159
|
+
throw shared_1.Fail.protocol('an object ended after a key without its value');
|
|
161
160
|
}
|
|
162
161
|
this.open--;
|
|
163
162
|
this.nodeStack.length = level.start;
|
|
@@ -167,10 +166,10 @@ class Matcher {
|
|
|
167
166
|
}
|
|
168
167
|
case 'end':
|
|
169
168
|
if (0 < this.open) {
|
|
170
|
-
throw
|
|
169
|
+
throw shared_1.Fail.protocol('the document ended inside a container');
|
|
171
170
|
}
|
|
172
171
|
if (!this.rootDone) {
|
|
173
|
-
throw
|
|
172
|
+
throw shared_1.Fail.protocol('the document ended before its root value');
|
|
174
173
|
}
|
|
175
174
|
this.isEnded = true;
|
|
176
175
|
this.begun.length = 0;
|
|
@@ -191,7 +190,7 @@ class Matcher {
|
|
|
191
190
|
let base;
|
|
192
191
|
if (0 === this.open) {
|
|
193
192
|
if (this.rootDone)
|
|
194
|
-
throw
|
|
193
|
+
throw shared_1.Fail.protocol('a second root value arrived');
|
|
195
194
|
this.nodeStack.length = 0;
|
|
196
195
|
this.nodeStack.push(ROOT);
|
|
197
196
|
base = 0;
|
|
@@ -199,7 +198,7 @@ class Matcher {
|
|
|
199
198
|
else {
|
|
200
199
|
const level = this.levels[this.open - 1];
|
|
201
200
|
if (!level.array && !level.inValue) {
|
|
202
|
-
throw
|
|
201
|
+
throw shared_1.Fail.protocol('a value arrived inside an object without a key');
|
|
203
202
|
}
|
|
204
203
|
const index = level.started;
|
|
205
204
|
level.started++;
|
package/dist/matcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../src/matcher.ts"],"names":[],"mappings":";AAAA,4CAA4C;;;AAE5C,wDAAwD;AACxD,EAAE;AACF,sEAAsE;AACtE,sEAAsE;AACtE,yEAAyE;AACzE,yEAAyE;AACzE,sEAAsE;AACtE,yEAAyE;AACzE,gDAAgD;AAChD,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,0EAA0E;AAC1E,kDAAkD;AAElD,
|
|
1
|
+
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../src/matcher.ts"],"names":[],"mappings":"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"}
|
package/dist/parser-source.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { AbortFlag, Limits, Metrics } from '
|
|
2
|
-
import { Flow, Sink } from './sink';
|
|
1
|
+
import { AbortFlag, Flow, Limits, Metrics, Sink } from '@tabnas/alchemy/shared';
|
|
3
2
|
import { Source, SourceMode } from './source';
|
|
4
3
|
export declare class ParserSource implements Source {
|
|
5
4
|
private parser;
|
package/dist/parser-source.js
CHANGED
|
@@ -31,11 +31,9 @@ exports.ParserSource = void 0;
|
|
|
31
31
|
// grammar's guard. An incremental parse that returned without one rule
|
|
32
32
|
// event the adapter could turn into a value (YAML's empty document is
|
|
33
33
|
// `null`) has its value walked instead.
|
|
34
|
+
const shared_1 = require("@tabnas/alchemy/shared");
|
|
34
35
|
const capability_1 = require("./capability");
|
|
35
|
-
const error_1 = require("./error");
|
|
36
|
-
const event_1 = require("./event");
|
|
37
36
|
const guard_1 = require("./guard");
|
|
38
|
-
const limits_1 = require("./limits");
|
|
39
37
|
const rule_events_1 = require("./rule-events");
|
|
40
38
|
const source_1 = require("./source");
|
|
41
39
|
// A tabnas parser applied to one text, as a source.
|
|
@@ -44,9 +42,9 @@ class ParserSource {
|
|
|
44
42
|
// and fresh metrics; the builder methods change each.
|
|
45
43
|
constructor(parser, text) {
|
|
46
44
|
this.sourceMode = source_1.SourceMode.materialize();
|
|
47
|
-
this.sourceLimits =
|
|
48
|
-
this.abortFlag = new
|
|
49
|
-
this.sourceMetrics = new
|
|
45
|
+
this.sourceLimits = shared_1.Limits.default();
|
|
46
|
+
this.abortFlag = new shared_1.AbortFlag();
|
|
47
|
+
this.sourceMetrics = new shared_1.Metrics();
|
|
50
48
|
this.grammarName = null;
|
|
51
49
|
this.isUnverified = false;
|
|
52
50
|
this.used = false;
|
|
@@ -90,11 +88,11 @@ class ParserSource {
|
|
|
90
88
|
if (null !== name && (0, capability_1.isIncremental)(name))
|
|
91
89
|
return null;
|
|
92
90
|
if (null !== name) {
|
|
93
|
-
return new
|
|
91
|
+
return new shared_1.Fail('STREAMABILITY_UNKNOWN', `grammar ${JSON.stringify(name)} is not in capability.incremental: the differential ` +
|
|
94
92
|
'suite has not verified that its rule events stream as the walk does; run it with ' +
|
|
95
93
|
'SourceMode.materialize');
|
|
96
94
|
}
|
|
97
|
-
return new
|
|
95
|
+
return new shared_1.Fail('STREAMABILITY_UNKNOWN', "SourceMode.incremental needs the grammar's name (ParserSource.grammar) to check " +
|
|
98
96
|
'capability.incremental; without one, run SourceMode.materialize');
|
|
99
97
|
}
|
|
100
98
|
// Run in the configured mode.
|
|
@@ -108,7 +106,7 @@ class ParserSource {
|
|
|
108
106
|
// what pruning left in the tree, and nothing else should read it.
|
|
109
107
|
runWithValue(sink) {
|
|
110
108
|
if (this.used) {
|
|
111
|
-
throw new
|
|
109
|
+
throw new shared_1.Fail('STREAM_REUSED', 'a ParserSource runs once: its parser carries the run\'s subscriber and budget; ' +
|
|
112
110
|
'make a new source, with a new parser, for another run');
|
|
113
111
|
}
|
|
114
112
|
this.used = true;
|
|
@@ -141,11 +139,11 @@ function materialize(parser, text, abort, guarded) {
|
|
|
141
139
|
}
|
|
142
140
|
let flow = (0, source_1.walkValue)(value, guarded);
|
|
143
141
|
if ('continue' === flow)
|
|
144
|
-
flow = guarded.event(
|
|
142
|
+
flow = guarded.event(shared_1.Ev.end);
|
|
145
143
|
return { flow, value };
|
|
146
144
|
}
|
|
147
145
|
function incremental(parser, text, limits, abort, metrics, prune, sink) {
|
|
148
|
-
const stop = new
|
|
146
|
+
const stop = new shared_1.AbortFlag();
|
|
149
147
|
const adapter = new rule_events_1.Adapter(sink, limits, abort, metrics, prune, stop);
|
|
150
148
|
(0, rule_events_1.prepare)(parser, () => !abort.isAborted() && !stop.isAborted(), (rule, done) => adapter.onDone(rule, done));
|
|
151
149
|
let parsed;
|
|
@@ -159,12 +157,12 @@ function incremental(parser, text, limits, abort, metrics, prune, sink) {
|
|
|
159
157
|
try {
|
|
160
158
|
if ('running' === adapter.status.type) {
|
|
161
159
|
if (parsed.ok && adapter.complete()) {
|
|
162
|
-
outcome = { flow: adapter.send(
|
|
160
|
+
outcome = { flow: adapter.send(shared_1.Ev.end) };
|
|
163
161
|
}
|
|
164
162
|
else if (parsed.ok && adapter.idle()) {
|
|
165
163
|
let flow = adapter.walkWhole(parsed.value);
|
|
166
164
|
if ('continue' === flow)
|
|
167
|
-
flow = adapter.send(
|
|
165
|
+
flow = adapter.send(shared_1.Ev.end);
|
|
168
166
|
outcome = { flow };
|
|
169
167
|
}
|
|
170
168
|
else if (parsed.ok) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-source.js","sourceRoot":"","sources":["../src/parser-source.ts"],"names":[],"mappings":";AAAA,4CAA4C;;;AAE5C,kEAAkE;AAClE,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,qEAAqE;AACrE,0EAA0E;AAC1E,mEAAmE;AACnE,oEAAoE;AACpE,0EAA0E;AAC1E,mEAAmE;AACnE,0EAA0E;AAC1E,yEAAyE;AACzE,yEAAyE;AACzE,uEAAuE;AACvE,8CAA8C;AAC9C,EAAE;AACF,2EAA2E;AAC3E,0EAA0E;AAC1E,wEAAwE;AACxE,+CAA+C;AAC/C,EAAE;AACF,wEAAwE;AACxE,wEAAwE;AACxE,sEAAsE;AACtE,wEAAwE;AACxE,kEAAkE;AAClE,uEAAuE;AACvE,sEAAsE;AACtE,wCAAwC;AAExC,6CAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"parser-source.js","sourceRoot":"","sources":["../src/parser-source.ts"],"names":[],"mappings":"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"}
|
package/dist/route.d.ts
CHANGED
|
@@ -1,35 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { JsonEvent } from './event';
|
|
3
|
-
import { Limits, Metrics } from './limits';
|
|
4
|
-
import { CaptureId } from './matcher';
|
|
5
|
-
import { Path, Selector } from './selector';
|
|
6
|
-
import { Flow, Sink } from './sink';
|
|
7
|
-
export type CaptureMode = 'materialize' | 'observe';
|
|
8
|
-
export type Budget = {
|
|
9
|
-
bytes: number;
|
|
10
|
-
name: string;
|
|
11
|
-
};
|
|
12
|
-
export declare class CaptureSpec {
|
|
13
|
-
readonly tag: string;
|
|
14
|
-
readonly selector: Selector;
|
|
15
|
-
readonly mode: CaptureMode;
|
|
16
|
-
budget: Budget | null;
|
|
17
|
-
constructor(tag: string, selector: Selector, mode: CaptureMode);
|
|
18
|
-
static materialize(tag: string, selector: Selector): CaptureSpec;
|
|
19
|
-
static observe(tag: string, selector: Selector): CaptureSpec;
|
|
20
|
-
withBudget(bytes: number, name: string): CaptureSpec;
|
|
21
|
-
}
|
|
22
|
-
export type Selected = {
|
|
23
|
-
id: CaptureId;
|
|
24
|
-
tag: string;
|
|
25
|
-
path: Path;
|
|
26
|
-
value: Datum | null;
|
|
27
|
-
};
|
|
28
|
-
export interface RouteSink {
|
|
29
|
-
began?(id: CaptureId, tag: string): void;
|
|
30
|
-
selected(selected: Selected): Flow;
|
|
31
|
-
end(): Flow;
|
|
32
|
-
}
|
|
1
|
+
import { CaptureSpec, Duplicates, Flow, JsonEvent, Limits, Metrics, RouteSink, Selected, Sink } from '@tabnas/alchemy/shared';
|
|
33
2
|
export declare class SelectedRecorder implements RouteSink {
|
|
34
3
|
readonly selections: Selected[];
|
|
35
4
|
ended: boolean;
|
package/dist/route.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* Copyright (c) 2026 tabnas, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.Router = exports.FnRoute = exports.SelectedRecorder =
|
|
4
|
+
exports.Router = exports.FnRoute = exports.SelectedRecorder = void 0;
|
|
5
5
|
// Captures: recognize selected scopes and deliver them, complete, in
|
|
6
6
|
// source order.
|
|
7
7
|
//
|
|
@@ -16,32 +16,8 @@ exports.Router = exports.FnRoute = exports.SelectedRecorder = exports.CaptureSpe
|
|
|
16
16
|
// conservatively, with `Selector.mayOverlap`, and again at run time so a
|
|
17
17
|
// stream the check could not foresee still fails rather than mixing two
|
|
18
18
|
// values.
|
|
19
|
-
const
|
|
20
|
-
const error_1 = require("./error");
|
|
19
|
+
const shared_1 = require("@tabnas/alchemy/shared");
|
|
21
20
|
const matcher_1 = require("./matcher");
|
|
22
|
-
// One capture: a tag for the consumer, the selector to match, the mode,
|
|
23
|
-
// and for a `materialize` capture an optional budget (else the router's
|
|
24
|
-
// `max_capture_bytes`).
|
|
25
|
-
class CaptureSpec {
|
|
26
|
-
constructor(tag, selector, mode) {
|
|
27
|
-
this.budget = null;
|
|
28
|
-
this.tag = tag;
|
|
29
|
-
this.selector = selector;
|
|
30
|
-
this.mode = mode;
|
|
31
|
-
}
|
|
32
|
-
static materialize(tag, selector) {
|
|
33
|
-
return new CaptureSpec(tag, selector, 'materialize');
|
|
34
|
-
}
|
|
35
|
-
static observe(tag, selector) {
|
|
36
|
-
return new CaptureSpec(tag, selector, 'observe');
|
|
37
|
-
}
|
|
38
|
-
// This spec with its own budget, whose failure names `name`.
|
|
39
|
-
withBudget(bytes, name) {
|
|
40
|
-
this.budget = { bytes, name };
|
|
41
|
-
return this;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.CaptureSpec = CaptureSpec;
|
|
45
21
|
// A route sink that records every match.
|
|
46
22
|
class SelectedRecorder {
|
|
47
23
|
constructor() {
|
|
@@ -86,7 +62,7 @@ class Router {
|
|
|
86
62
|
const b = specs[j];
|
|
87
63
|
const bothObserve = 'observe' === a.mode && 'observe' === b.mode;
|
|
88
64
|
if (!bothObserve && a.selector.mayOverlap(b.selector)) {
|
|
89
|
-
throw new
|
|
65
|
+
throw new shared_1.Fail('CAPTURE_OVERLAP_UNSUPPORTED', `captures ${JSON.stringify(a.tag)} (${a.selector}) and ` +
|
|
90
66
|
`${JSON.stringify(b.tag)} (${b.selector}) may select overlapping scopes; ` +
|
|
91
67
|
`only observed captures may overlap`);
|
|
92
68
|
}
|
|
@@ -112,7 +88,7 @@ class Router {
|
|
|
112
88
|
this.downstream.began(id, spec.tag);
|
|
113
89
|
}
|
|
114
90
|
catch (err) {
|
|
115
|
-
if (err instanceof
|
|
91
|
+
if (err instanceof shared_1.Fail && null == err.path) {
|
|
116
92
|
err.path = this.matcher.path(depth).toString();
|
|
117
93
|
}
|
|
118
94
|
throw err;
|
|
@@ -124,13 +100,13 @@ class Router {
|
|
|
124
100
|
}
|
|
125
101
|
if (null !== this.active) {
|
|
126
102
|
const path = this.matcher.path(depth).toString();
|
|
127
|
-
throw new
|
|
103
|
+
throw new shared_1.Fail('CAPTURE_OVERLAP_UNSUPPORTED', `capture ${JSON.stringify(spec.tag)} began at ${path} while capture ` +
|
|
128
104
|
`${JSON.stringify(this.specs[this.active.id].tag)} was still being materialized`).atPath(path);
|
|
129
105
|
}
|
|
130
106
|
const budget = spec.budget ?? { bytes: this.maxCaptureBytes, name: 'max_capture_bytes' };
|
|
131
107
|
this.active = {
|
|
132
108
|
id,
|
|
133
|
-
builder: new
|
|
109
|
+
builder: new shared_1.DatumBuilder(budget.bytes, budget.name, this.duplicates),
|
|
134
110
|
depth,
|
|
135
111
|
};
|
|
136
112
|
}
|
|
@@ -141,7 +117,7 @@ class Router {
|
|
|
141
117
|
const hit = this.matcher.event(ev);
|
|
142
118
|
if ('start' === hit.kind && hit.depth + 1 > this.maxDepth) {
|
|
143
119
|
const path = this.matcher.path(hit.depth).toString();
|
|
144
|
-
throw
|
|
120
|
+
throw shared_1.Fail.limit('max_depth', this.maxDepth, `a container at ${path} is nested deeper than ${this.maxDepth}`).atPath(path);
|
|
145
121
|
}
|
|
146
122
|
for (let k = 0; k < hit.begins; k++) {
|
|
147
123
|
this.begin(this.matcher.begins()[k], hit.depth);
|
|
@@ -154,7 +130,7 @@ class Router {
|
|
|
154
130
|
catch (err) {
|
|
155
131
|
// The builder reports no position; the value's path is spelled
|
|
156
132
|
// here, only now that something went wrong.
|
|
157
|
-
if (err instanceof
|
|
133
|
+
if (err instanceof shared_1.Fail)
|
|
158
134
|
err.atPath(this.matcher.path(active.depth).toString());
|
|
159
135
|
throw err;
|
|
160
136
|
}
|
package/dist/route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":";AAAA,4CAA4C;;;AAE5C,qEAAqE;AACrE,gBAAgB;AAChB,EAAE;AACF,0EAA0E;AAC1E,gEAAgE;AAChE,uEAAuE;AACvE,2EAA2E;AAC3E,mEAAmE;AACnE,2EAA2E;AAC3E,sEAAsE;AACtE,iEAAiE;AACjE,yEAAyE;AACzE,wEAAwE;AACxE,UAAU;AAEV,
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"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"}
|
package/dist/routers.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Copyright (c) 2026 tabnas, MIT License */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.routers = void 0;
|
|
5
|
+
const guard_1 = require("./guard");
|
|
6
|
+
const route_1 = require("./route");
|
|
7
|
+
const scan_1 = require("./scan");
|
|
8
|
+
const table_from_json_1 = require("./table-from-json");
|
|
9
|
+
// Each method constructs the stage it names with the same parameters.
|
|
10
|
+
exports.routers = Object.freeze({
|
|
11
|
+
router(specs, limits, duplicates, metrics, downstream) {
|
|
12
|
+
return new route_1.Router(specs, limits, duplicates, metrics, downstream);
|
|
13
|
+
},
|
|
14
|
+
tableFromJson(binding, limits, duplicates, metrics, sink) {
|
|
15
|
+
return new table_from_json_1.TableFromJson(binding, limits, duplicates, metrics, sink);
|
|
16
|
+
},
|
|
17
|
+
scanEmit(initial, step, finish, out) {
|
|
18
|
+
return new scan_1.ScanEmit(initial, step, finish, out);
|
|
19
|
+
},
|
|
20
|
+
guarded(inner, limits, abort, metrics) {
|
|
21
|
+
return new guard_1.Guarded(inner, limits, abort, metrics);
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=routers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routers.js","sourceRoot":"","sources":["../src/routers.ts"],"names":[],"mappings":";AAAA,4CAA4C;;;AAwB5C,mCAAiC;AACjC,mCAAgC;AAChC,iCAAiC;AACjC,uDAAiD;AAEjD,sEAAsE;AACzD,QAAA,OAAO,GAAY,MAAM,CAAC,MAAM,CAAC;IAC5C,MAAM,CACJ,KAA6B,EAC7B,MAAc,EACd,UAAsB,EACtB,OAAgB,EAChB,UAAqB;QAErB,OAAO,IAAI,cAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;IACnE,CAAC;IAED,aAAa,CACX,OAAqB,EACrB,MAAc,EACd,UAAsB,EACtB,OAAgB,EAChB,IAAe;QAEf,OAAO,IAAI,+BAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IACtE,CAAC;IAED,QAAQ,CACN,OAAU,EACV,IAA6C,EAC7C,MAAyB,EACzB,GAAwB;QAExB,OAAO,IAAI,eAAQ,CAAU,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1D,CAAC;IAED,OAAO,CAAC,KAAW,EAAE,MAAc,EAAE,KAAgB,EAAE,OAAgB;QACrE,OAAO,IAAI,eAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IACnD,CAAC;CACF,CAAC,CAAA"}
|
package/dist/rule-events.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import { Fail } from '
|
|
2
|
-
import { JsonEvent } from './event';
|
|
1
|
+
import { AbortFlag, Fail, Flow, JsonEvent, Limits, Metrics, Sink } from '@tabnas/alchemy/shared';
|
|
3
2
|
import { Guarded } from './guard';
|
|
4
|
-
import { AbortFlag, Limits, Metrics } from './limits';
|
|
5
|
-
import { Flow, Sink } from './sink';
|
|
6
3
|
import { Prune } from './source';
|
|
7
4
|
export type Status = {
|
|
8
5
|
type: 'running';
|