footprintjs 0.18.0 → 1.0.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/CLAUDE.md +77 -59
- package/README.md +41 -32
- package/dist/advanced.js +31 -25
- package/dist/esm/advanced.js +3 -2
- package/dist/esm/index.js +6 -3
- package/dist/esm/lib/builder/FlowChartBuilder.js +1 -1
- package/dist/esm/lib/builder/index.js +1 -1
- package/dist/esm/lib/builder/typedFlowChart.js +36 -0
- package/dist/esm/lib/builder/types.js +1 -1
- package/dist/esm/lib/contract/index.js +2 -2
- package/dist/esm/lib/contract/schema.js +2 -6
- package/dist/esm/lib/decide/decide.js +170 -0
- package/dist/esm/lib/decide/evaluator.js +103 -0
- package/dist/esm/lib/decide/evidence.js +35 -0
- package/dist/esm/lib/decide/index.js +16 -0
- package/dist/esm/lib/decide/types.js +10 -0
- package/dist/esm/lib/engine/handlers/DeciderHandler.js +12 -3
- package/dist/esm/lib/engine/handlers/SelectorHandler.js +15 -3
- package/dist/esm/lib/engine/handlers/StageRunner.js +16 -6
- package/dist/esm/lib/engine/index.js +1 -2
- package/dist/esm/lib/engine/narrative/CombinedNarrativeBuilder.js +5 -184
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +43 -30
- package/dist/esm/lib/engine/narrative/ControlFlowNarrativeGenerator.js +20 -3
- package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +5 -4
- package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.js +1 -12
- package/dist/esm/lib/engine/narrative/index.js +1 -2
- package/dist/esm/lib/engine/narrative/types.js +2 -3
- package/dist/esm/lib/reactive/allowlist.js +83 -0
- package/dist/esm/lib/reactive/arrayTraps.js +116 -0
- package/dist/esm/lib/reactive/createTypedScope.js +306 -0
- package/dist/esm/lib/reactive/index.js +17 -0
- package/dist/esm/lib/reactive/pathBuilder.js +42 -0
- package/dist/esm/lib/reactive/types.js +52 -0
- package/dist/esm/lib/runner/FlowChartExecutor.js +58 -39
- package/dist/esm/lib/scope/ScopeFacade.js +36 -5
- package/dist/esm/lib/scope/detectCircular.js +56 -0
- package/dist/esm/lib/scope/index.js +2 -3
- package/dist/esm/lib/scope/providers/baseStateCompatible.js +1 -4
- package/dist/esm/lib/scope/providers/index.js +2 -2
- package/dist/esm/lib/scope/recorders/MetricRecorder.js +4 -1
- package/dist/esm/lib/scope/recorders/NarrativeRecorder.js +2 -25
- package/dist/esm/lib/scope/recorders/index.js +1 -2
- package/dist/esm/lib/scope/recorders/summarizeValue.js +31 -0
- package/dist/esm/lib/scope/state/zod/utils/validateHelper.js +2 -2
- package/dist/esm/lib/scope/types.js +1 -1
- package/dist/index.js +26 -18
- package/dist/lib/builder/FlowChartBuilder.js +1 -1
- package/dist/lib/builder/index.js +1 -1
- package/dist/lib/builder/typedFlowChart.js +41 -0
- package/dist/lib/builder/types.js +1 -1
- package/dist/lib/contract/index.js +2 -3
- package/dist/lib/contract/schema.js +3 -8
- package/dist/lib/decide/decide.js +175 -0
- package/dist/lib/decide/evaluator.js +107 -0
- package/dist/lib/decide/evidence.js +39 -0
- package/dist/lib/decide/index.js +24 -0
- package/dist/lib/decide/types.js +13 -0
- package/dist/lib/engine/handlers/DeciderHandler.js +12 -3
- package/dist/lib/engine/handlers/SelectorHandler.js +15 -3
- package/dist/lib/engine/handlers/StageRunner.js +16 -6
- package/dist/lib/engine/index.js +2 -4
- package/dist/lib/engine/narrative/CombinedNarrativeBuilder.js +4 -186
- package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +45 -32
- package/dist/lib/engine/narrative/ControlFlowNarrativeGenerator.js +20 -3
- package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +5 -4
- package/dist/lib/engine/narrative/NarrativeFlowRecorder.js +1 -12
- package/dist/lib/engine/narrative/index.js +2 -4
- package/dist/lib/engine/narrative/types.js +2 -3
- package/dist/lib/reactive/allowlist.js +87 -0
- package/dist/lib/reactive/arrayTraps.js +120 -0
- package/dist/lib/reactive/createTypedScope.js +313 -0
- package/dist/lib/reactive/index.js +29 -0
- package/dist/lib/reactive/pathBuilder.js +47 -0
- package/dist/lib/reactive/types.js +55 -0
- package/dist/lib/runner/FlowChartExecutor.js +58 -39
- package/dist/lib/scope/ScopeFacade.js +36 -5
- package/dist/lib/scope/detectCircular.js +63 -0
- package/dist/lib/scope/index.js +2 -5
- package/dist/lib/scope/providers/baseStateCompatible.js +2 -5
- package/dist/lib/scope/providers/index.js +2 -3
- package/dist/lib/scope/recorders/MetricRecorder.js +4 -1
- package/dist/lib/scope/recorders/NarrativeRecorder.js +4 -27
- package/dist/lib/scope/recorders/index.js +2 -4
- package/dist/lib/scope/recorders/summarizeValue.js +35 -0
- package/dist/lib/scope/state/zod/utils/validateHelper.js +2 -2
- package/dist/lib/scope/types.js +1 -1
- package/dist/types/advanced.d.ts +4 -2
- package/dist/types/index.d.ts +8 -3
- package/dist/types/lib/builder/FlowChartBuilder.d.ts +13 -13
- package/dist/types/lib/builder/index.d.ts +1 -1
- package/dist/types/lib/builder/typedFlowChart.d.ts +34 -0
- package/dist/types/lib/builder/types.d.ts +0 -2
- package/dist/types/lib/contract/index.d.ts +1 -1
- package/dist/types/lib/contract/schema.d.ts +0 -2
- package/dist/types/lib/decide/decide.d.ts +26 -0
- package/dist/types/lib/decide/evaluator.d.ts +22 -0
- package/dist/types/lib/decide/evidence.d.ts +22 -0
- package/dist/types/lib/decide/index.d.ts +12 -0
- package/dist/types/lib/decide/types.d.ts +91 -0
- package/dist/types/lib/engine/index.d.ts +0 -1
- package/dist/types/lib/engine/narrative/CombinedNarrativeBuilder.d.ts +3 -31
- package/dist/types/lib/engine/narrative/ControlFlowNarrativeGenerator.d.ts +2 -1
- package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +3 -2
- package/dist/types/lib/engine/narrative/NarrativeFlowRecorder.d.ts +0 -9
- package/dist/types/lib/engine/narrative/index.d.ts +0 -1
- package/dist/types/lib/engine/narrative/types.d.ts +13 -3
- package/dist/types/lib/reactive/allowlist.d.ts +30 -0
- package/dist/types/lib/reactive/arrayTraps.d.ts +23 -0
- package/dist/types/lib/reactive/createTypedScope.d.ts +24 -0
- package/dist/types/lib/reactive/index.d.ts +14 -0
- package/dist/types/lib/reactive/pathBuilder.d.ts +31 -0
- package/dist/types/lib/reactive/types.d.ts +60 -0
- package/dist/types/lib/scope/ScopeFacade.d.ts +6 -2
- package/dist/types/lib/scope/detectCircular.d.ts +20 -0
- package/dist/types/lib/scope/index.d.ts +1 -2
- package/dist/types/lib/scope/providers/baseStateCompatible.d.ts +0 -4
- package/dist/types/lib/scope/providers/index.d.ts +1 -1
- package/dist/types/lib/scope/recorders/MetricRecorder.d.ts +1 -0
- package/dist/types/lib/scope/recorders/index.d.ts +0 -1
- package/dist/types/lib/scope/recorders/summarizeValue.d.ts +7 -0
- package/dist/types/lib/scope/state/zod/utils/validateHelper.d.ts +1 -1
- package/dist/types/lib/scope/types.d.ts +7 -0
- package/package.json +5 -2
package/CLAUDE.md
CHANGED
|
@@ -13,13 +13,15 @@ src/lib/
|
|
|
13
13
|
├── memory/ → Transactional state (SharedMemory, StageContext, TransactionBuffer, EventLog)
|
|
14
14
|
├── schema/ → Validation abstraction (Zod optional, duck-typed detection)
|
|
15
15
|
├── builder/ → Fluent DSL (FlowChartBuilder, flowChart(), DeciderList, SelectorFnList)
|
|
16
|
-
├── scope/ → Per-stage facades + recorders + providers
|
|
16
|
+
├── scope/ → Per-stage facades + recorders + providers
|
|
17
|
+
├── reactive/ → TypedScope<T> deep Proxy (typed property access, $-methods, cycle-safe)
|
|
18
|
+
├── decide/ → decide()/select() decision evidence capture (filter + function)
|
|
17
19
|
├── engine/ → DFS traversal + narrative + 13 handlers
|
|
18
20
|
├── runner/ → High-level executor (FlowChartExecutor)
|
|
19
21
|
└── contract/ → I/O schema + OpenAPI generation
|
|
20
22
|
```
|
|
21
23
|
|
|
22
|
-
Dependency DAG: `memory
|
|
24
|
+
Dependency DAG: `memory <- scope <- reactive <- engine <- runner`, `schema <- engine`, `builder (standalone) -> engine`, `contract <- schema`, `decide -> scope`
|
|
23
25
|
|
|
24
26
|
Two entry points:
|
|
25
27
|
- `import { ... } from 'footprintjs'` — public API
|
|
@@ -27,12 +29,61 @@ Two entry points:
|
|
|
27
29
|
|
|
28
30
|
## Key API
|
|
29
31
|
|
|
32
|
+
### TypedScope (Recommended)
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import { typedFlowChart, createTypedScopeFactory, FlowChartExecutor } from 'footprintjs';
|
|
36
|
+
|
|
37
|
+
interface LoanState {
|
|
38
|
+
creditTier: string;
|
|
39
|
+
amount: number;
|
|
40
|
+
customer: { name: string; address: { zip: string } };
|
|
41
|
+
tags: string[];
|
|
42
|
+
approved?: boolean;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const chart = typedFlowChart<LoanState>('Intake', async (scope) => {
|
|
46
|
+
scope.creditTier = 'A'; // typed write
|
|
47
|
+
scope.amount = 50000; // typed write
|
|
48
|
+
scope.customer.address.zip = '90210'; // deep write (updateValue)
|
|
49
|
+
scope.tags.push('vip'); // array copy-on-write
|
|
50
|
+
scope.approved = true; // optional field
|
|
51
|
+
|
|
52
|
+
// $-prefixed escape hatches
|
|
53
|
+
scope.$debug('checkpoint', { step: 1 });
|
|
54
|
+
scope.$metric('latency', 42);
|
|
55
|
+
const args = scope.$getArgs<{ requestId: string }>();
|
|
56
|
+
const env = scope.$getEnv();
|
|
57
|
+
scope.$break(); // stop pipeline
|
|
58
|
+
}, 'intake')
|
|
59
|
+
.setEnableNarrative()
|
|
60
|
+
.build();
|
|
61
|
+
|
|
62
|
+
const executor = new FlowChartExecutor(chart, createTypedScopeFactory<LoanState>());
|
|
63
|
+
await executor.run({ input: { requestId: 'req-123' } });
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### decide() / select() — Decision Evidence Capture
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
import { decide, select } from 'footprintjs';
|
|
70
|
+
|
|
71
|
+
// Inside a decider function — auto-captures which values led to the decision
|
|
72
|
+
.addDeciderFunction('ClassifyRisk', (scope) => {
|
|
73
|
+
return decide(scope, [
|
|
74
|
+
{ when: { creditScore: { gt: 700 }, dti: { lt: 0.43 } }, then: 'approved', label: 'Good credit' },
|
|
75
|
+
{ when: (s) => s.creditScore > 600, then: 'manual-review', label: 'Marginal' },
|
|
76
|
+
], 'rejected');
|
|
77
|
+
}, 'classify-risk')
|
|
78
|
+
|
|
79
|
+
// Narrative: "It evaluated Rule 0 'Good credit': creditScore 750 gt 700, and chose approved."
|
|
80
|
+
```
|
|
81
|
+
|
|
30
82
|
### Builder
|
|
31
83
|
|
|
32
84
|
```typescript
|
|
33
85
|
import { flowChart, FlowChartBuilder } from 'footprintjs';
|
|
34
86
|
|
|
35
|
-
// flowChart(name, fn, id, buildTimeExtractor?, description?)
|
|
36
87
|
const chart = flowChart('Stage1', fn1, 'stage-1', undefined, 'Description')
|
|
37
88
|
.addFunction('Stage2', fn2, 'stage-2', 'Description')
|
|
38
89
|
.addDeciderFunction('Decide', deciderFn, 'decide', 'Route based on risk')
|
|
@@ -46,95 +97,60 @@ const chart = flowChart('Stage1', fn1, 'stage-1', undefined, 'Description')
|
|
|
46
97
|
|
|
47
98
|
Methods: `start()`, `addFunction()`, `addStreamingFunction()`, `addDeciderFunction()`, `addSelectorFunction()`, `addListOfFunction()`, `addSubFlowChart()`, `addSubFlowChartNext()`, `loopTo()`, `setEnableNarrative()`, `setInputSchema()`, `setOutputSchema()`, `setOutputMapper()`, `build()`, `toSpec()`, `toMermaid()`
|
|
48
99
|
|
|
49
|
-
###
|
|
100
|
+
### ScopeFacade (Internal — use TypedScope for new code)
|
|
50
101
|
|
|
51
102
|
```typescript
|
|
52
|
-
|
|
53
|
-
scope: ScopeFacade,
|
|
54
|
-
breakPipeline: () => void,
|
|
55
|
-
streamCallback?: StreamCallback,
|
|
56
|
-
) => Promise<void> | void;
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### ScopeFacade
|
|
60
|
-
|
|
61
|
-
```typescript
|
|
62
|
-
scope.getValue('key') // tracked read (appears in narrative)
|
|
103
|
+
scope.getValue('key') // tracked read
|
|
63
104
|
scope.setValue('key', value) // tracked write
|
|
64
|
-
scope.updateValue('key', partial) // deep merge
|
|
65
|
-
scope.deleteValue('key') // tracked delete
|
|
66
105
|
scope.getArgs<T>() // frozen readonly input (NOT tracked)
|
|
67
106
|
scope.getEnv() // frozen execution environment (NOT tracked)
|
|
68
|
-
scope.attachRecorder(recorder) // plug observer
|
|
69
107
|
```
|
|
70
108
|
|
|
71
109
|
**Three access tiers:**
|
|
72
110
|
- `getValue`/`setValue` — mutable shared state, tracked in narrative
|
|
73
111
|
- `getArgs()` — frozen business input from `run({ input })`, NOT tracked
|
|
74
|
-
- `getEnv()` — frozen infrastructure context from `run({ env })`, NOT tracked. Returns `ExecutionEnv { signal?, timeoutMs?, traceId? }`. Auto-inherited by subflows. Closed type
|
|
112
|
+
- `getEnv()` — frozen infrastructure context from `run({ env })`, NOT tracked. Returns `ExecutionEnv { signal?, timeoutMs?, traceId? }`. Auto-inherited by subflows. Closed type.
|
|
75
113
|
|
|
76
114
|
### Executor
|
|
77
115
|
|
|
78
116
|
```typescript
|
|
79
|
-
const executor = new FlowChartExecutor(chart);
|
|
80
|
-
await executor.run({
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
executor.
|
|
88
|
-
executor.
|
|
89
|
-
executor.getNarrativeEntries() // structured entries with type/depth/stageName/stageId
|
|
90
|
-
executor.getFlowNarrative() // flow-only (no data ops)
|
|
91
|
-
executor.getSnapshot() // full memory state (includes recorder snapshots)
|
|
92
|
-
executor.attachFlowRecorder(r) // plug flow observer
|
|
93
|
-
executor.setRedactionPolicy({}) // PII protection
|
|
117
|
+
const executor = new FlowChartExecutor(chart, createTypedScopeFactory<State>());
|
|
118
|
+
await executor.run({ input: data, env: { traceId: 'req-123' } });
|
|
119
|
+
|
|
120
|
+
executor.attachRecorder(recorder) // plug scope observer
|
|
121
|
+
executor.getNarrative() // combined flow + data narrative
|
|
122
|
+
executor.getNarrativeEntries() // structured entries with type/depth/stageName/stageId
|
|
123
|
+
executor.getFlowNarrative() // flow-only (no data ops)
|
|
124
|
+
executor.getSnapshot() // full memory state (includes recorder snapshots)
|
|
125
|
+
executor.attachFlowRecorder(r) // plug flow observer
|
|
126
|
+
executor.setRedactionPolicy({}) // PII protection
|
|
94
127
|
```
|
|
95
128
|
|
|
96
129
|
### ComposableRunner & Snapshot Navigation
|
|
97
130
|
|
|
98
131
|
```typescript
|
|
99
132
|
import type { ComposableRunner } from 'footprintjs';
|
|
100
|
-
import { getSubtreeSnapshot } from 'footprintjs';
|
|
101
|
-
|
|
102
|
-
// Interface for runners that expose their internal flowChart
|
|
103
|
-
interface ComposableRunner<TIn, TOut> {
|
|
104
|
-
toFlowChart(): FlowChart;
|
|
105
|
-
run(input: TIn, options?: RunOptions): Promise<TOut>;
|
|
106
|
-
}
|
|
133
|
+
import { getSubtreeSnapshot, listSubflowPaths } from 'footprintjs';
|
|
107
134
|
|
|
108
|
-
// Drill into subflow subtrees by path
|
|
109
135
|
const subtree = getSubtreeSnapshot(snapshot, 'sf-payment');
|
|
110
|
-
const nested = getSubtreeSnapshot(snapshot, 'sf-outer/sf-inner');
|
|
111
|
-
// Returns { subflowId, executionTree, sharedState, narrativeEntries } or undefined
|
|
112
|
-
|
|
113
|
-
// Pass narrative entries for scoped narrative
|
|
114
|
-
const subtreeWithNarrative = getSubtreeSnapshot(snapshot, 'sf-payment', executor.getNarrativeEntries());
|
|
115
|
-
|
|
116
|
-
// Discover available drill-down targets
|
|
117
|
-
import { listSubflowPaths } from 'footprintjs';
|
|
118
136
|
listSubflowPaths(snapshot); // ['sf-payment', 'sf-outer/sf-inner']
|
|
119
137
|
```
|
|
120
138
|
|
|
121
139
|
## Two Observer Systems
|
|
122
140
|
|
|
123
|
-
Both use `{ id, hooks }
|
|
141
|
+
Both use `{ id, hooks } -> dispatcher -> error isolation -> attach/detach`. Intentionally NOT unified.
|
|
124
142
|
|
|
125
143
|
**Scope Recorder** (data ops — fires DURING stage execution):
|
|
126
144
|
- `onRead`, `onWrite`, `onCommit`, `onError`, `onStageStart`, `onStageEnd`
|
|
127
|
-
- Built-in: `
|
|
145
|
+
- Built-in: `MetricRecorder`, `DebugRecorder`
|
|
128
146
|
|
|
129
147
|
**FlowRecorder** (control flow — fires AFTER stage execution):
|
|
130
148
|
- `onStageExecuted`, `onNext`, `onDecision`, `onFork`, `onSelected`, `onSubflowEntry/Exit`, `onLoop`, `onBreak`, `onError`
|
|
131
|
-
- All events carry `traversalContext: TraversalContext`
|
|
132
|
-
-
|
|
149
|
+
- All events carry `traversalContext: TraversalContext`
|
|
150
|
+
- `onDecision`/`onSelected` carry optional `evidence` from decide()/select()
|
|
133
151
|
- Built-in: 8 strategies (Narrative, Adaptive, Windowed, RLE, Milestone, Progressive, Separate, Manifest, Silent)
|
|
134
|
-
- All event types exported: `FlowStageEvent`, `FlowNextEvent`, `FlowDecisionEvent`, `FlowForkEvent`, `FlowSelectedEvent`, `FlowSubflowEvent`, `FlowSubflowRegisteredEvent`, `FlowLoopEvent`, `FlowBreakEvent`, `FlowErrorEvent`, `TraversalContext`
|
|
135
152
|
|
|
136
153
|
**CombinedNarrativeRecorder** implements BOTH interfaces. Auto-attached by `setEnableNarrative()`.
|
|
137
|
-
- All `CombinedNarrativeEntry` objects carry `stageId?: string` for UI sync (matches spec node id).
|
|
138
154
|
|
|
139
155
|
## Event Ordering
|
|
140
156
|
|
|
@@ -150,10 +166,12 @@ Both use `{ id, hooks } → dispatcher → error isolation → attach/detach`. I
|
|
|
150
166
|
## Anti-Patterns
|
|
151
167
|
|
|
152
168
|
- Never post-process the tree — use recorders
|
|
153
|
-
-
|
|
169
|
+
- Don't use `getValue()`/`setValue()` in TypedScope stages — use typed property access
|
|
170
|
+
- Don't use `$`-prefixed state keys (e.g., `$break`) — they collide with ScopeMethods
|
|
171
|
+
- Don't use deprecated `CombinedNarrativeBuilder` — use `CombinedNarrativeRecorder`
|
|
154
172
|
- Don't extract shared base for Recorder/FlowRecorder — two instances = coincidence
|
|
155
|
-
- Don't use `getArgs()` for tracked data — use
|
|
156
|
-
- Don't put infrastructure data
|
|
173
|
+
- Don't use `getArgs()` for tracked data — use typed scope properties
|
|
174
|
+
- Don't put infrastructure data in `getArgs()` — use `getEnv()` via `run({ env })`
|
|
157
175
|
- Don't manually create `CombinedNarrativeRecorder` — `setEnableNarrative()` handles it
|
|
158
176
|
|
|
159
177
|
## Build & Test
|
package/README.md
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
<a href="https://www.npmjs.com/package/footprintjs"><img src="https://img.shields.io/npm/dm/footprintjs.svg" alt="Downloads"></a>
|
|
13
13
|
<a href="https://footprintjs.github.io/footprint-demo/"><img src="https://img.shields.io/badge/Live_Demo-View_App-10b981?style=flat&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJ3aGl0ZSI+PHBhdGggZD0iTTggNXYxNGwxMS03eiIvPjwvc3ZnPg==" alt="Live Demo"></a>
|
|
14
14
|
<a href="https://footprintjs.github.io/footprint-playground/"><img src="https://img.shields.io/badge/Playground-Try_it-6366f1?style=flat&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJ3aGl0ZSI+PHBhdGggZD0iTTggNXYxNGwxMS03eiIvPjwvc3ZnPg==" alt="Interactive Playground"></a>
|
|
15
|
+
<a href="https://footprintjs.github.io/footPrint/"><img src="https://img.shields.io/badge/API_Docs-TypeDoc-3178c6?style=flat&logo=typescript&logoColor=white" alt="API Docs"></a>
|
|
15
16
|
</p>
|
|
16
17
|
|
|
17
18
|
<br>
|
|
@@ -49,19 +50,16 @@ The runtime auto-generates this trace from what the code actually did:
|
|
|
49
50
|
|
|
50
51
|
```
|
|
51
52
|
Stage 1: The process began with ReceiveApplication.
|
|
52
|
-
Step 1: Write
|
|
53
|
-
Stage 2: Next
|
|
54
|
-
Step 1: Read
|
|
55
|
-
Step 2: Write
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
Step
|
|
59
|
-
|
|
60
|
-
Stage 4: Next
|
|
61
|
-
Step 1:
|
|
62
|
-
Step 2: Read dtiStatus = "excessive"
|
|
63
|
-
Step 3: Write riskTier = "high"
|
|
64
|
-
[Condition]: A decision was made, and the path taken was RejectApplication.
|
|
53
|
+
Step 1: Write creditScore = 580, dti = 0.6, employmentStatus = "self-employed"
|
|
54
|
+
Stage 2: Next step: Evaluate risk tier from all flags.
|
|
55
|
+
Step 1: Read creditScore = 580
|
|
56
|
+
Step 2: Write riskTier = "high"
|
|
57
|
+
Step 3: Write riskFactors = (3 items)
|
|
58
|
+
Stage 3: Next step: Route based on risk tier.
|
|
59
|
+
Step 1: Read riskTier = "high"
|
|
60
|
+
[Condition]: It evaluated "High risk": riskTier "high" eq "high" ✓, and chose RejectApplication.
|
|
61
|
+
Stage 4: Next step: Generate rejection.
|
|
62
|
+
Step 1: Write decision = "REJECTED — below-average credit; DTI exceeds 43%; Self-employed < 2yr"
|
|
65
63
|
```
|
|
66
64
|
|
|
67
65
|
The LLM backtracks: `riskTier="high"` ← `dtiStatus="excessive"` ← `dtiRatio=0.6` ← `app.monthlyDebts=2100`. Every variable links to its cause:
|
|
@@ -75,40 +73,49 @@ That answer came from the trace — not from the LLM's imagination.
|
|
|
75
73
|
## Quick Start
|
|
76
74
|
|
|
77
75
|
```typescript
|
|
78
|
-
import {
|
|
76
|
+
import { typedFlowChart, createTypedScopeFactory, FlowChartExecutor, decide } from 'footprintjs';
|
|
79
77
|
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
interface State {
|
|
79
|
+
user: { name: string; tier: string };
|
|
80
|
+
discount: number;
|
|
81
|
+
lane: string;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const chart = typedFlowChart<State>('FetchUser', async (scope) => {
|
|
85
|
+
scope.user = { name: 'Alice', tier: 'premium' };
|
|
82
86
|
}, 'fetch-user')
|
|
83
|
-
.addFunction('ApplyDiscount', (scope
|
|
84
|
-
|
|
85
|
-
const discount = user.tier === 'premium' ? 0.2 : 0.05;
|
|
86
|
-
scope.setValue('discount', discount);
|
|
87
|
+
.addFunction('ApplyDiscount', async (scope) => {
|
|
88
|
+
scope.discount = scope.user.tier === 'premium' ? 0.2 : 0.05;
|
|
87
89
|
}, 'apply-discount')
|
|
88
|
-
.addDeciderFunction('Route', (scope
|
|
89
|
-
return (scope
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
90
|
+
.addDeciderFunction('Route', (scope) => {
|
|
91
|
+
return decide(scope, [
|
|
92
|
+
{ when: { discount: { gt: 0.1 } }, then: 'vip', label: 'High discount' },
|
|
93
|
+
], 'standard');
|
|
94
|
+
}, 'route', 'Route by discount tier')
|
|
95
|
+
.addFunctionBranch('vip', 'VIPCheckout', async (scope) => {
|
|
96
|
+
scope.lane = 'VIP express';
|
|
93
97
|
})
|
|
94
|
-
.addFunctionBranch('standard', 'StandardCheckout', (scope
|
|
95
|
-
scope.
|
|
98
|
+
.addFunctionBranch('standard', 'StandardCheckout', async (scope) => {
|
|
99
|
+
scope.lane = 'Standard';
|
|
96
100
|
})
|
|
97
101
|
.setDefault('standard')
|
|
98
102
|
.end()
|
|
99
103
|
.setEnableNarrative()
|
|
100
104
|
.build();
|
|
101
105
|
|
|
102
|
-
const executor = new FlowChartExecutor(chart);
|
|
106
|
+
const executor = new FlowChartExecutor(chart, createTypedScopeFactory<State>());
|
|
103
107
|
await executor.run();
|
|
104
108
|
|
|
105
109
|
console.log(executor.getNarrative());
|
|
106
110
|
// Stage 1: The process began with FetchUser.
|
|
107
|
-
// Step 1: Write user = {name
|
|
111
|
+
// Step 1: Write user = {name, tier}
|
|
108
112
|
// Stage 2: Next, it moved on to ApplyDiscount.
|
|
109
|
-
// Step 1: Read user = {name
|
|
113
|
+
// Step 1: Read user = {name, tier}
|
|
110
114
|
// Step 2: Write discount = 0.2
|
|
111
|
-
// Stage 3:
|
|
115
|
+
// Stage 3: Next step: Route by discount tier.
|
|
116
|
+
// Step 1: Read discount = 0.2
|
|
117
|
+
// [Condition]: It evaluated "High discount": discount 0.2 gt 0.1 ✓, and chose VIPCheckout.
|
|
118
|
+
// Stage 4: Next, it moved on to VIPCheckout.
|
|
112
119
|
// Step 1: Write lane = "VIP express"
|
|
113
120
|
```
|
|
114
121
|
|
|
@@ -123,6 +130,8 @@ console.log(executor.getNarrative());
|
|
|
123
130
|
| Feature | Description |
|
|
124
131
|
|---------|-------------|
|
|
125
132
|
| **Causal Traces** | Every read/write captured — LLMs backtrack through variables to find causes |
|
|
133
|
+
| **Decision Evidence** | `decide()` / `select()` auto-capture WHY a branch was chosen — operators, thresholds, pass/fail |
|
|
134
|
+
| **TypedScope<T>** | Typed property access — `scope.creditScore = 750` instead of `scope.setValue('creditScore', 750)` |
|
|
126
135
|
| **Auto Narrative** | Build-time descriptions for tool selection, runtime traces for explanation |
|
|
127
136
|
| **7 Patterns** | Linear, parallel fork, conditional, multi-select, subflow, streaming, loops — [guide](docs/guides/patterns.md) |
|
|
128
137
|
| **Transactional State** | Atomic commits, safe merges, time-travel replay — [guide](docs/guides/scope.md) |
|
|
@@ -158,7 +167,7 @@ npx footprintjs-setup
|
|
|
158
167
|
| Resource | Link |
|
|
159
168
|
|----------|------|
|
|
160
169
|
| **Guides** | [Patterns](docs/guides/patterns.md) · [Scope](docs/guides/scope.md) · [Execution](docs/guides/execution.md) · [Errors](docs/guides/error-handling.md) · [Flow Recorders](docs/guides/flow-recorders.md) · [Contracts](docs/guides/contracts.md) |
|
|
161
|
-
| **Reference** | [API Reference](docs/guides/api-reference.md) · [Performance Benchmarks](docs/guides/performance.md) |
|
|
170
|
+
| **Reference** | [API Docs](https://footprintjs.github.io/footPrint/) · [API Reference](docs/guides/api-reference.md) · [Performance Benchmarks](docs/guides/performance.md) |
|
|
162
171
|
| **Architecture** | [Internals](docs/internals/) — six independent libraries, each with its own README |
|
|
163
172
|
| **Try it** | [Interactive Playground](https://footprintjs.github.io/footprint-playground/) · [Live Demo](https://footprintjs.github.io/footprint-demo/) · [25+ Examples](https://github.com/footprintjs/footPrint-samples) |
|
|
164
173
|
|
package/dist/advanced.js
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
* Import via: import { ... } from 'footprint/advanced'
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.
|
|
12
|
-
exports.SubflowExecutor = exports.StageRunner = exports.SelectorHandler = exports.seedSubflowGlobalStore = void 0;
|
|
11
|
+
exports.DEFAULT_MAX_ITERATIONS = exports.DeciderHandler = exports.createSubflowHandlerDeps = exports.ContinuationResolver = exports.computeNodeType = exports.ChildrenExecutor = exports.applyOutputMapping = exports.NullControlFlowNarrativeGenerator = exports.ControlFlowNarrativeGenerator = exports.isStageNodeReturn = exports.FlowchartTraverser = exports.shouldWrapWithProxy = exports.SCOPE_METHOD_NAMES = exports.joinPath = exports.createArrayProxy = exports.buildNestedPatch = exports.BREAK_SETTER = exports.ExecutionRuntime = exports.ZodScopeResolver = exports.isScopeSchema = exports.defineScopeSchema = exports.createScopeProxyFromZod = exports.toScopeFactory = exports.resolveScopeProvider = exports.registerScopeResolver = exports.makeFactoryProvider = exports.makeClassProvider = exports.looksLikeFactory = exports.looksLikeClassCtor = exports.isSubclassOfScopeFacade = exports.attachScopeMethods = exports.createProtectedScope = exports.createErrorMessage = exports.specToStageNode = exports.SelectorFnList = exports.DeciderList = exports.updateValue = exports.updateNestedValue = exports.setNestedValue = exports.redactPatch = exports.normalisePath = exports.getRunAndGlobalPaths = exports.getNestedValue = exports.deepSmartMerge = exports.applySmartMerge = exports.DiagnosticCollector = exports.TransactionBuffer = exports.EventLog = exports.StageContext = exports.SharedMemory = void 0;
|
|
12
|
+
exports.SubflowExecutor = exports.StageRunner = exports.SelectorHandler = exports.seedSubflowGlobalStore = exports.RuntimeStructureManager = exports.NodeResolver = exports.getInitialScopeValues = exports.extractParentScopeValues = exports.ExtractorRunner = void 0;
|
|
13
13
|
var index_js_1 = require("./lib/memory/index.js");
|
|
14
14
|
Object.defineProperty(exports, "SharedMemory", { enumerable: true, get: function () { return index_js_1.SharedMemory; } });
|
|
15
15
|
var index_js_2 = require("./lib/memory/index.js");
|
|
@@ -38,7 +38,6 @@ var index_js_8 = require("./lib/scope/index.js");
|
|
|
38
38
|
Object.defineProperty(exports, "createErrorMessage", { enumerable: true, get: function () { return index_js_8.createErrorMessage; } });
|
|
39
39
|
Object.defineProperty(exports, "createProtectedScope", { enumerable: true, get: function () { return index_js_8.createProtectedScope; } });
|
|
40
40
|
var index_js_9 = require("./lib/scope/index.js");
|
|
41
|
-
Object.defineProperty(exports, "attachBaseStateCompat", { enumerable: true, get: function () { return index_js_9.attachBaseStateCompat; } });
|
|
42
41
|
Object.defineProperty(exports, "attachScopeMethods", { enumerable: true, get: function () { return index_js_9.attachScopeMethods; } });
|
|
43
42
|
Object.defineProperty(exports, "isSubclassOfScopeFacade", { enumerable: true, get: function () { return index_js_9.isSubclassOfScopeFacade; } });
|
|
44
43
|
Object.defineProperty(exports, "looksLikeClassCtor", { enumerable: true, get: function () { return index_js_9.looksLikeClassCtor; } });
|
|
@@ -56,29 +55,36 @@ Object.defineProperty(exports, "isScopeSchema", { enumerable: true, get: functio
|
|
|
56
55
|
Object.defineProperty(exports, "ZodScopeResolver", { enumerable: true, get: function () { return index_js_10.ZodScopeResolver; } });
|
|
57
56
|
var index_js_11 = require("./lib/runner/index.js");
|
|
58
57
|
Object.defineProperty(exports, "ExecutionRuntime", { enumerable: true, get: function () { return index_js_11.ExecutionRuntime; } });
|
|
59
|
-
var index_js_12 = require("./lib/
|
|
60
|
-
Object.defineProperty(exports, "
|
|
58
|
+
var index_js_12 = require("./lib/reactive/index.js");
|
|
59
|
+
Object.defineProperty(exports, "BREAK_SETTER", { enumerable: true, get: function () { return index_js_12.BREAK_SETTER; } });
|
|
60
|
+
Object.defineProperty(exports, "buildNestedPatch", { enumerable: true, get: function () { return index_js_12.buildNestedPatch; } });
|
|
61
|
+
Object.defineProperty(exports, "createArrayProxy", { enumerable: true, get: function () { return index_js_12.createArrayProxy; } });
|
|
62
|
+
Object.defineProperty(exports, "joinPath", { enumerable: true, get: function () { return index_js_12.joinPath; } });
|
|
63
|
+
Object.defineProperty(exports, "SCOPE_METHOD_NAMES", { enumerable: true, get: function () { return index_js_12.SCOPE_METHOD_NAMES; } });
|
|
64
|
+
Object.defineProperty(exports, "shouldWrapWithProxy", { enumerable: true, get: function () { return index_js_12.shouldWrapWithProxy; } });
|
|
61
65
|
var index_js_13 = require("./lib/engine/index.js");
|
|
62
|
-
Object.defineProperty(exports, "
|
|
66
|
+
Object.defineProperty(exports, "FlowchartTraverser", { enumerable: true, get: function () { return index_js_13.FlowchartTraverser; } });
|
|
63
67
|
var index_js_14 = require("./lib/engine/index.js");
|
|
64
|
-
Object.defineProperty(exports, "
|
|
68
|
+
Object.defineProperty(exports, "isStageNodeReturn", { enumerable: true, get: function () { return index_js_14.isStageNodeReturn; } });
|
|
65
69
|
var index_js_15 = require("./lib/engine/index.js");
|
|
66
|
-
Object.defineProperty(exports, "
|
|
70
|
+
Object.defineProperty(exports, "ControlFlowNarrativeGenerator", { enumerable: true, get: function () { return index_js_15.ControlFlowNarrativeGenerator; } });
|
|
67
71
|
var index_js_16 = require("./lib/engine/index.js");
|
|
68
|
-
Object.defineProperty(exports, "
|
|
69
|
-
|
|
70
|
-
Object.defineProperty(exports, "
|
|
71
|
-
Object.defineProperty(exports, "
|
|
72
|
-
Object.defineProperty(exports, "
|
|
73
|
-
Object.defineProperty(exports, "
|
|
74
|
-
Object.defineProperty(exports, "
|
|
75
|
-
Object.defineProperty(exports, "
|
|
76
|
-
Object.defineProperty(exports, "
|
|
77
|
-
Object.defineProperty(exports, "
|
|
78
|
-
Object.defineProperty(exports, "
|
|
79
|
-
Object.defineProperty(exports, "
|
|
80
|
-
Object.defineProperty(exports, "
|
|
81
|
-
Object.defineProperty(exports, "
|
|
82
|
-
Object.defineProperty(exports, "
|
|
83
|
-
Object.defineProperty(exports, "
|
|
84
|
-
|
|
72
|
+
Object.defineProperty(exports, "NullControlFlowNarrativeGenerator", { enumerable: true, get: function () { return index_js_16.NullControlFlowNarrativeGenerator; } });
|
|
73
|
+
var index_js_17 = require("./lib/engine/index.js");
|
|
74
|
+
Object.defineProperty(exports, "applyOutputMapping", { enumerable: true, get: function () { return index_js_17.applyOutputMapping; } });
|
|
75
|
+
Object.defineProperty(exports, "ChildrenExecutor", { enumerable: true, get: function () { return index_js_17.ChildrenExecutor; } });
|
|
76
|
+
Object.defineProperty(exports, "computeNodeType", { enumerable: true, get: function () { return index_js_17.computeNodeType; } });
|
|
77
|
+
Object.defineProperty(exports, "ContinuationResolver", { enumerable: true, get: function () { return index_js_17.ContinuationResolver; } });
|
|
78
|
+
Object.defineProperty(exports, "createSubflowHandlerDeps", { enumerable: true, get: function () { return index_js_17.createSubflowHandlerDeps; } });
|
|
79
|
+
Object.defineProperty(exports, "DeciderHandler", { enumerable: true, get: function () { return index_js_17.DeciderHandler; } });
|
|
80
|
+
Object.defineProperty(exports, "DEFAULT_MAX_ITERATIONS", { enumerable: true, get: function () { return index_js_17.DEFAULT_MAX_ITERATIONS; } });
|
|
81
|
+
Object.defineProperty(exports, "ExtractorRunner", { enumerable: true, get: function () { return index_js_17.ExtractorRunner; } });
|
|
82
|
+
Object.defineProperty(exports, "extractParentScopeValues", { enumerable: true, get: function () { return index_js_17.extractParentScopeValues; } });
|
|
83
|
+
Object.defineProperty(exports, "getInitialScopeValues", { enumerable: true, get: function () { return index_js_17.getInitialScopeValues; } });
|
|
84
|
+
Object.defineProperty(exports, "NodeResolver", { enumerable: true, get: function () { return index_js_17.NodeResolver; } });
|
|
85
|
+
Object.defineProperty(exports, "RuntimeStructureManager", { enumerable: true, get: function () { return index_js_17.RuntimeStructureManager; } });
|
|
86
|
+
Object.defineProperty(exports, "seedSubflowGlobalStore", { enumerable: true, get: function () { return index_js_17.seedSubflowGlobalStore; } });
|
|
87
|
+
Object.defineProperty(exports, "SelectorHandler", { enumerable: true, get: function () { return index_js_17.SelectorHandler; } });
|
|
88
|
+
Object.defineProperty(exports, "StageRunner", { enumerable: true, get: function () { return index_js_17.StageRunner; } });
|
|
89
|
+
Object.defineProperty(exports, "SubflowExecutor", { enumerable: true, get: function () { return index_js_17.SubflowExecutor; } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7Ozs7QUFlSCxrREFBcUQ7QUFBNUMsd0dBQUEsWUFBWSxPQUFBO0FBQ3JCLGtEQUFxRDtBQUE1Qyx3R0FBQSxZQUFZLE9BQUE7QUFDckIsa0RBQWlEO0FBQXhDLG9HQUFBLFFBQVEsT0FBQTtBQUNqQixrREFBMEQ7QUFBakQsNkdBQUEsaUJBQWlCLE9BQUE7QUFDMUIsa0RBQTREO0FBQW5ELCtHQUFBLG1CQUFtQixPQUFBO0FBQzVCLGtEQVUrQjtBQVQ3QiwyR0FBQSxlQUFlLE9BQUE7QUFDZiwwR0FBQSxjQUFjLE9BQUE7QUFDZCwwR0FBQSxjQUFjLE9BQUE7QUFDZCxnSEFBQSxvQkFBb0IsT0FBQTtBQUNwQix5R0FBQSxhQUFhLE9BQUE7QUFDYix1R0FBQSxXQUFXLE9BQUE7QUFDWCwwR0FBQSxjQUFjLE9BQUE7QUFDZCw2R0FBQSxpQkFBaUIsT0FBQTtBQUNqQix1R0FBQSxXQUFXLE9BQUE7QUF3QmIsbURBQXNGO0FBQTdFLHVHQUFBLFdBQVcsT0FBQTtBQUFFLDBHQUFBLGNBQWMsT0FBQTtBQUFFLDJHQUFBLGVBQWUsT0FBQTtBQWFyRCxpREFBZ0Y7QUFBdkUsOEdBQUEsa0JBQWtCLE9BQUE7QUFBRSxnSEFBQSxvQkFBb0IsT0FBQTtBQUNqRCxpREFVOEI7QUFUNUIsOEdBQUEsa0JBQWtCLE9BQUE7QUFDbEIsbUhBQUEsdUJBQXVCLE9BQUE7QUFDdkIsOEdBQUEsa0JBQWtCLE9BQUE7QUFDbEIsNEdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsNkdBQUEsaUJBQWlCLE9BQUE7QUFDakIsK0dBQUEsbUJBQW1CLE9BQUE7QUFDbkIsaUhBQUEscUJBQXFCLE9BQUE7QUFDckIsZ0hBQUEsb0JBQW9CLE9BQUE7QUFDcEIsMEdBQUEsY0FBYyxPQUFBO0FBbUJoQixnQkFBZ0I7QUFDaEIsa0RBQW1IO0FBQTFHLG9IQUFBLHVCQUF1QixPQUFBO0FBQUUsOEdBQUEsaUJBQWlCLE9BQUE7QUFBRSwwR0FBQSxhQUFhLE9BQUE7QUFBRSw2R0FBQSxnQkFBZ0IsT0FBQTtBQU9wRixtREFBeUQ7QUFBaEQsNkdBQUEsZ0JBQWdCLE9BQUE7QUFPekIscURBT2lDO0FBTi9CLHlHQUFBLFlBQVksT0FBQTtBQUNaLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLHFHQUFBLFFBQVEsT0FBQTtBQUNSLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLGdIQUFBLG1CQUFtQixPQUFBO0FBU3JCLG1EQUEyRDtBQUFsRCwrR0FBQSxrQkFBa0IsT0FBQTtBQUMzQixtREFBMEQ7QUFBakQsOEdBQUEsaUJBQWlCLE9BQUE7QUFxQjFCLG1EQUFzRTtBQUE3RCwwSEFBQSw2QkFBNkIsT0FBQTtBQUN0QyxtREFBMEU7QUFBakUsOEhBQUEsaUNBQWlDLE9BQUE7QUFJMUMsbURBaUIrQjtBQWhCN0IsK0dBQUEsa0JBQWtCLE9BQUE7QUFDbEIsNkdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsNEdBQUEsZUFBZSxPQUFBO0FBQ2YsaUhBQUEsb0JBQW9CLE9BQUE7QUFDcEIscUhBQUEsd0JBQXdCLE9BQUE7QUFDeEIsMkdBQUEsY0FBYyxPQUFBO0FBQ2QsbUhBQUEsc0JBQXNCLE9BQUE7QUFDdEIsNEdBQUEsZUFBZSxPQUFBO0FBQ2YscUhBQUEsd0JBQXdCLE9BQUE7QUFDeEIsa0hBQUEscUJBQXFCLE9BQUE7QUFDckIseUdBQUEsWUFBWSxPQUFBO0FBQ1osb0hBQUEsdUJBQXVCLE9BQUE7QUFDdkIsbUhBQUEsc0JBQXNCLE9BQUE7QUFDdEIsNEdBQUEsZUFBZSxPQUFBO0FBQ2Ysd0dBQUEsV0FBVyxPQUFBO0FBQ1gsNEdBQUEsZUFBZSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIEFkdmFuY2VkIC8gSW50ZXJuYWwgQVBJXG4gKlxuICogVGhlc2UgZXhwb3J0cyBhcmUgZm9yIGFkdmFuY2VkIHVzZSBjYXNlcywgdGVzdGluZywgYW5kIGJ1aWxkaW5nXG4gKiBjdXN0b20gZXhlY3V0aW9uIGVuZ2luZXMuIE1vc3QgdXNlcnMgc2hvdWxkIHVzZSB0aGUgbWFpbiAnZm9vdHByaW50JyBlbnRyeSBwb2ludC5cbiAqXG4gKiBJbXBvcnQgdmlhOiBpbXBvcnQgeyAuLi4gfSBmcm9tICdmb290cHJpbnQvYWR2YW5jZWQnXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVtb3J5IOKAlCBMb3ctbGV2ZWwgdHJhbnNhY3Rpb25hbCBzdGF0ZSBwcmltaXRpdmVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgQ29tbWl0QnVuZGxlLFxuICBGbG93Q29udHJvbFR5cGUsXG4gIEZsb3dNZXNzYWdlLFxuICBNZW1vcnlQYXRjaCxcbiAgU2NvcGVGYWN0b3J5LFxuICBTdGFnZVNuYXBzaG90LFxuICBUcmFjZUVudHJ5LFxufSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgU2hhcmVkTWVtb3J5IH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBFdmVudExvZyB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1ZmZlciB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBEaWFnbm9zdGljQ29sbGVjdG9yIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5U21hcnRNZXJnZSxcbiAgZGVlcFNtYXJ0TWVyZ2UsXG4gIGdldE5lc3RlZFZhbHVlLFxuICBnZXRSdW5BbmRHbG9iYWxQYXRocyxcbiAgbm9ybWFsaXNlUGF0aCxcbiAgcmVkYWN0UGF0Y2gsXG4gIHNldE5lc3RlZFZhbHVlLFxuICB1cGRhdGVOZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlVmFsdWUsXG59IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1aWxkZXIg4oCUIFR5cGVzIGFuZCBpbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBCdWlsZFRpbWVFeHRyYWN0b3IsXG4gIEJ1aWxkVGltZU5vZGVNZXRhZGF0YSxcbiAgRXhlY09wdGlvbnMsXG4gIEZsb3dDaGFydFNwZWMsXG4gIElMb2dnZXIsXG4gIFNjb3BlUHJvdGVjdGlvbk1vZGUsXG4gIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgU2ltcGxpZmllZFBhcmFsbGVsU3BlYyxcbiAgU3RhZ2VGbixcbiAgU3RhZ2VOb2RlLFxuICBTdHJlYW1DYWxsYmFjayxcbiAgU3RyZWFtTGlmZWN5Y2xlSGFuZGxlcixcbiAgU3RyZWFtVG9rZW5IYW5kbGVyLFxuICBTdWJmbG93TW91bnRPcHRpb25zLFxuICBTdWJmbG93UmVmLFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcbmV4cG9ydCB7IERlY2lkZXJMaXN0LCBTZWxlY3RvckZuTGlzdCwgc3BlY1RvU3RhZ2VOb2RlIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNjb3BlIOKAlCBQcm92aWRlcnMsIHByb3RlY3Rpb24sIHJlY29yZGVyIG9wdGlvbnMsIGFuZCBldmVudCB0eXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7XG4gIFByb3ZpZGVyUmVzb2x2ZXIsXG4gIFJlc29sdmVPcHRpb25zLFxuICBTY29wZVByb3ZpZGVyLFxuICBTdGFnZUNvbnRleHRMaWtlLFxuICBTdHJpY3RNb2RlLFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5leHBvcnQgeyBjcmVhdGVFcnJvck1lc3NhZ2UsIGNyZWF0ZVByb3RlY3RlZFNjb3BlIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgYXR0YWNoU2NvcGVNZXRob2RzLFxuICBpc1N1YmNsYXNzT2ZTY29wZUZhY2FkZSxcbiAgbG9va3NMaWtlQ2xhc3NDdG9yLFxuICBsb29rc0xpa2VGYWN0b3J5LFxuICBtYWtlQ2xhc3NQcm92aWRlcixcbiAgbWFrZUZhY3RvcnlQcm92aWRlcixcbiAgcmVnaXN0ZXJTY29wZVJlc29sdmVyLFxuICByZXNvbHZlU2NvcGVQcm92aWRlcixcbiAgdG9TY29wZUZhY3RvcnksXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gUmVjb3JkZXIgY29uZmlnL29wdGlvbiB0eXBlc1xuZXhwb3J0IHR5cGUge1xuICBBZ2dyZWdhdGVkTWV0cmljcyxcbiAgRGVidWdFbnRyeSxcbiAgRGVidWdSZWNvcmRlck9wdGlvbnMsXG4gIERlYnVnVmVyYm9zaXR5LFxuICBEZWZpbmVTY29wZU9wdGlvbnMsXG4gIE5hcnJhdGl2ZURldGFpbCxcbiAgTmFycmF0aXZlT3BlcmF0aW9uLFxuICBOYXJyYXRpdmVSZWNvcmRlck9wdGlvbnMsXG4gIFJlY29yZGVyQ29udGV4dCxcbiAgU3RhZ2VFdmVudCxcbiAgU3RhZ2VNZXRyaWNzLFxuICBTdGFnZU5hcnJhdGl2ZURhdGEsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gWm9kIGludGVybmFsc1xuZXhwb3J0IHsgY3JlYXRlU2NvcGVQcm94eUZyb21ab2QsIGRlZmluZVNjb3BlU2NoZW1hLCBpc1Njb3BlU2NoZW1hLCBab2RTY29wZVJlc29sdmVyIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSdW5uZXIg4oCUIEludGVybmFsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IE5hcnJhdGl2ZUVudHJ5LCBSdW50aW1lU25hcHNob3QgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgRXhlY3V0aW9uUnVudGltZSB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJlYWN0aXZlIOKAlCBUeXBlZFNjb3BlIGludGVybmFscyAoZm9yIGN1c3RvbSBwcm94eSBpbXBsZW1lbnRhdGlvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgUmVhY3RpdmVPcHRpb25zLCBSZWFjdGl2ZVRhcmdldCB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIEJSRUFLX1NFVFRFUixcbiAgYnVpbGROZXN0ZWRQYXRjaCxcbiAgY3JlYXRlQXJyYXlQcm94eSxcbiAgam9pblBhdGgsXG4gIFNDT1BFX01FVEhPRF9OQU1FUyxcbiAgc2hvdWxkV3JhcFdpdGhQcm94eSxcbn0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbmdpbmUg4oCUIERGUyBncmFwaCB0cmF2ZXJzYWwgaW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgVHJhdmVyc2VyT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IERlY2lkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgRmxvd2NoYXJ0VHJhdmVyc2VyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IGlzU3RhZ2VOb2RlUmV0dXJuIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gTmFycmF0aXZlIGludGVybmFsc1xuZXhwb3J0IHR5cGUgeyBJQ29udHJvbEZsb3dOYXJyYXRpdmUgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5LCBDb21iaW5lZE5hcnJhdGl2ZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUge1xuICBCcmFuY2hSZXN1bHQsXG4gIEJyYW5jaFJlc3VsdHMsXG4gIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSBhcyBFbmdpbmVTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUsXG4gIFN0YWdlU25hcHNob3QgYXMgRW5naW5lU3RhZ2VTbmFwc2hvdCxcbiAgRXh0cmFjdG9yRXJyb3IsXG4gIEhhbmRsZXJEZXBzLFxuICBJRXhlY3V0aW9uUnVudGltZSxcbiAgTm9kZVJlc3VsdFR5cGUsXG4gIFJ1bnRpbWVTdHJ1Y3R1cmVNZXRhZGF0YSxcbiAgU2VyaWFsaXplZFBpcGVsaW5lTm9kZSxcbiAgU3RhZ2VGdW5jdGlvbixcbiAgU3ViZmxvd1Jlc3VsdCxcbiAgVHJhdmVyc2FsRXh0cmFjdG9yLFxuICBUcmF2ZXJzYWxSZXN1bHQsXG59IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBDb250cm9sRmxvd05hcnJhdGl2ZUdlbmVyYXRvciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBOdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3IgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBIYW5kbGVycyAodGVzdGluZyAvIGN1c3RvbSBlbmdpbmVzKVxuZXhwb3J0IHR5cGUgeyBDYWxsRXh0cmFjdG9yRm4sIEV4ZWN1dGVOb2RlRm4sIEdldFN0YWdlUGF0aEZuLCBSdW5TdGFnZUZuIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5T3V0cHV0TWFwcGluZyxcbiAgQ2hpbGRyZW5FeGVjdXRvcixcbiAgY29tcHV0ZU5vZGVUeXBlLFxuICBDb250aW51YXRpb25SZXNvbHZlcixcbiAgY3JlYXRlU3ViZmxvd0hhbmRsZXJEZXBzLFxuICBEZWNpZGVySGFuZGxlcixcbiAgREVGQVVMVF9NQVhfSVRFUkFUSU9OUyxcbiAgRXh0cmFjdG9yUnVubmVyLFxuICBleHRyYWN0UGFyZW50U2NvcGVWYWx1ZXMsXG4gIGdldEluaXRpYWxTY29wZVZhbHVlcyxcbiAgTm9kZVJlc29sdmVyLFxuICBSdW50aW1lU3RydWN0dXJlTWFuYWdlcixcbiAgc2VlZFN1YmZsb3dHbG9iYWxTdG9yZSxcbiAgU2VsZWN0b3JIYW5kbGVyLFxuICBTdGFnZVJ1bm5lcixcbiAgU3ViZmxvd0V4ZWN1dG9yLFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuIl19
|
package/dist/esm/advanced.js
CHANGED
|
@@ -14,13 +14,14 @@ export { DiagnosticCollector } from './lib/memory/index.js';
|
|
|
14
14
|
export { applySmartMerge, deepSmartMerge, getNestedValue, getRunAndGlobalPaths, normalisePath, redactPatch, setNestedValue, updateNestedValue, updateValue, } from './lib/memory/index.js';
|
|
15
15
|
export { DeciderList, SelectorFnList, specToStageNode } from './lib/builder/index.js';
|
|
16
16
|
export { createErrorMessage, createProtectedScope } from './lib/scope/index.js';
|
|
17
|
-
export {
|
|
17
|
+
export { attachScopeMethods, isSubclassOfScopeFacade, looksLikeClassCtor, looksLikeFactory, makeClassProvider, makeFactoryProvider, registerScopeResolver, resolveScopeProvider, toScopeFactory, } from './lib/scope/index.js';
|
|
18
18
|
// Zod internals
|
|
19
19
|
export { createScopeProxyFromZod, defineScopeSchema, isScopeSchema, ZodScopeResolver } from './lib/scope/index.js';
|
|
20
20
|
export { ExecutionRuntime } from './lib/runner/index.js';
|
|
21
|
+
export { BREAK_SETTER, buildNestedPatch, createArrayProxy, joinPath, SCOPE_METHOD_NAMES, shouldWrapWithProxy, } from './lib/reactive/index.js';
|
|
21
22
|
export { FlowchartTraverser } from './lib/engine/index.js';
|
|
22
23
|
export { isStageNodeReturn } from './lib/engine/index.js';
|
|
23
24
|
export { ControlFlowNarrativeGenerator } from './lib/engine/index.js';
|
|
24
25
|
export { NullControlFlowNarrativeGenerator } from './lib/engine/index.js';
|
|
25
26
|
export { applyOutputMapping, ChildrenExecutor, computeNodeType, ContinuationResolver, createSubflowHandlerDeps, DeciderHandler, DEFAULT_MAX_ITERATIONS, ExtractorRunner, extractParentScopeValues, getInitialScopeValues, NodeResolver, RuntimeStructureManager, seedSubflowGlobalStore, SelectorHandler, StageRunner, SubflowExecutor, } from './lib/engine/index.js';
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQWVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLFdBQVcsRUFDWCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFdBQVcsR0FDWixNQUFNLHVCQUF1QixDQUFDO0FBdUIvQixPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQWF0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixjQUFjLEdBQ2YsTUFBTSxzQkFBc0IsQ0FBQztBQWtCOUIsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU9uSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU96RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixtQkFBbUIsR0FDcEIsTUFBTSx5QkFBeUIsQ0FBQztBQVFqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQXFCMUQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJMUUsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixlQUFlLEVBQ2Ysd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsV0FBVyxFQUNYLGVBQWUsR0FDaEIsTUFBTSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9vdFByaW50IOKAlCBBZHZhbmNlZCAvIEludGVybmFsIEFQSVxuICpcbiAqIFRoZXNlIGV4cG9ydHMgYXJlIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMsIHRlc3RpbmcsIGFuZCBidWlsZGluZ1xuICogY3VzdG9tIGV4ZWN1dGlvbiBlbmdpbmVzLiBNb3N0IHVzZXJzIHNob3VsZCB1c2UgdGhlIG1haW4gJ2Zvb3RwcmludCcgZW50cnkgcG9pbnQuXG4gKlxuICogSW1wb3J0IHZpYTogaW1wb3J0IHsgLi4uIH0gZnJvbSAnZm9vdHByaW50L2FkdmFuY2VkJ1xuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbW9yeSDigJQgTG93LWxldmVsIHRyYW5zYWN0aW9uYWwgc3RhdGUgcHJpbWl0aXZlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEJ1bmRsZSxcbiAgRmxvd0NvbnRyb2xUeXBlLFxuICBGbG93TWVzc2FnZSxcbiAgTWVtb3J5UGF0Y2gsXG4gIFNjb3BlRmFjdG9yeSxcbiAgU3RhZ2VTbmFwc2hvdCxcbiAgVHJhY2VFbnRyeSxcbn0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFNoYXJlZE1lbW9yeSB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBTdGFnZUNvbnRleHQgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgRXZlbnRMb2cgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWZmZXIgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgRGlhZ25vc3RpY0NvbGxlY3RvciB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhcHBseVNtYXJ0TWVyZ2UsXG4gIGRlZXBTbWFydE1lcmdlLFxuICBnZXROZXN0ZWRWYWx1ZSxcbiAgZ2V0UnVuQW5kR2xvYmFsUGF0aHMsXG4gIG5vcm1hbGlzZVBhdGgsXG4gIHJlZGFjdFBhdGNoLFxuICBzZXROZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlTmVzdGVkVmFsdWUsXG4gIHVwZGF0ZVZhbHVlLFxufSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCdWlsZGVyIOKAlCBUeXBlcyBhbmQgaW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgQnVpbGRUaW1lRXh0cmFjdG9yLFxuICBCdWlsZFRpbWVOb2RlTWV0YWRhdGEsXG4gIEV4ZWNPcHRpb25zLFxuICBGbG93Q2hhcnRTcGVjLFxuICBJTG9nZ2VyLFxuICBTY29wZVByb3RlY3Rpb25Nb2RlLFxuICBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUsXG4gIFNpbXBsaWZpZWRQYXJhbGxlbFNwZWMsXG4gIFN0YWdlRm4sXG4gIFN0YWdlTm9kZSxcbiAgU3RyZWFtQ2FsbGJhY2ssXG4gIFN0cmVhbUxpZmVjeWNsZUhhbmRsZXIsXG4gIFN0cmVhbVRva2VuSGFuZGxlcixcbiAgU3ViZmxvd01vdW50T3B0aW9ucyxcbiAgU3ViZmxvd1JlZixcbn0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5leHBvcnQgeyBEZWNpZGVyTGlzdCwgU2VsZWN0b3JGbkxpc3QsIHNwZWNUb1N0YWdlTm9kZSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZSDigJQgUHJvdmlkZXJzLCBwcm90ZWN0aW9uLCByZWNvcmRlciBvcHRpb25zLCBhbmQgZXZlbnQgdHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBQcm92aWRlclJlc29sdmVyLFxuICBSZXNvbHZlT3B0aW9ucyxcbiAgU2NvcGVQcm92aWRlcixcbiAgU3RhZ2VDb250ZXh0TGlrZSxcbiAgU3RyaWN0TW9kZSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlRXJyb3JNZXNzYWdlLCBjcmVhdGVQcm90ZWN0ZWRTY29wZSB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGF0dGFjaFNjb3BlTWV0aG9kcyxcbiAgaXNTdWJjbGFzc09mU2NvcGVGYWNhZGUsXG4gIGxvb2tzTGlrZUNsYXNzQ3RvcixcbiAgbG9va3NMaWtlRmFjdG9yeSxcbiAgbWFrZUNsYXNzUHJvdmlkZXIsXG4gIG1ha2VGYWN0b3J5UHJvdmlkZXIsXG4gIHJlZ2lzdGVyU2NvcGVSZXNvbHZlcixcbiAgcmVzb2x2ZVNjb3BlUHJvdmlkZXIsXG4gIHRvU2NvcGVGYWN0b3J5LFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vIFJlY29yZGVyIGNvbmZpZy9vcHRpb24gdHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQWdncmVnYXRlZE1ldHJpY3MsXG4gIERlYnVnRW50cnksXG4gIERlYnVnUmVjb3JkZXJPcHRpb25zLFxuICBEZWJ1Z1ZlcmJvc2l0eSxcbiAgRGVmaW5lU2NvcGVPcHRpb25zLFxuICBOYXJyYXRpdmVEZXRhaWwsXG4gIE5hcnJhdGl2ZU9wZXJhdGlvbixcbiAgTmFycmF0aXZlUmVjb3JkZXJPcHRpb25zLFxuICBSZWNvcmRlckNvbnRleHQsXG4gIFN0YWdlRXZlbnQsXG4gIFN0YWdlTWV0cmljcyxcbiAgU3RhZ2VOYXJyYXRpdmVEYXRhLFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vIFpvZCBpbnRlcm5hbHNcbmV4cG9ydCB7IGNyZWF0ZVNjb3BlUHJveHlGcm9tWm9kLCBkZWZpbmVTY29wZVNjaGVtYSwgaXNTY29wZVNjaGVtYSwgWm9kU2NvcGVSZXNvbHZlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVubmVyIOKAlCBJbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBOYXJyYXRpdmVFbnRyeSwgUnVudGltZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcbmV4cG9ydCB7IEV4ZWN1dGlvblJ1bnRpbWUgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSZWFjdGl2ZSDigJQgVHlwZWRTY29wZSBpbnRlcm5hbHMgKGZvciBjdXN0b20gcHJveHkgaW1wbGVtZW50YXRpb25zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFJlYWN0aXZlT3B0aW9ucywgUmVhY3RpdmVUYXJnZXQgfSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBCUkVBS19TRVRURVIsXG4gIGJ1aWxkTmVzdGVkUGF0Y2gsXG4gIGNyZWF0ZUFycmF5UHJveHksXG4gIGpvaW5QYXRoLFxuICBTQ09QRV9NRVRIT0RfTkFNRVMsXG4gIHNob3VsZFdyYXBXaXRoUHJveHksXG59IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRW5naW5lIOKAlCBERlMgZ3JhcGggdHJhdmVyc2FsIGludGVybmFsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFRyYXZlcnNlck9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUgeyBEZWNpZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IEZsb3djaGFydFRyYXZlcnNlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBpc1N0YWdlTm9kZVJldHVybiB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIE5hcnJhdGl2ZSBpbnRlcm5hbHNcbmV4cG9ydCB0eXBlIHsgSUNvbnRyb2xGbG93TmFycmF0aXZlIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSwgQ29tYmluZWROYXJyYXRpdmVPcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQnJhbmNoUmVzdWx0LFxuICBCcmFuY2hSZXN1bHRzLFxuICBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUgYXMgRW5naW5lU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBTdGFnZVNuYXBzaG90IGFzIEVuZ2luZVN0YWdlU25hcHNob3QsXG4gIEV4dHJhY3RvckVycm9yLFxuICBIYW5kbGVyRGVwcyxcbiAgSUV4ZWN1dGlvblJ1bnRpbWUsXG4gIE5vZGVSZXN1bHRUeXBlLFxuICBSdW50aW1lU3RydWN0dXJlTWV0YWRhdGEsXG4gIFNlcmlhbGl6ZWRQaXBlbGluZU5vZGUsXG4gIFN0YWdlRnVuY3Rpb24sXG4gIFN1YmZsb3dSZXN1bHQsXG4gIFRyYXZlcnNhbEV4dHJhY3RvcixcbiAgVHJhdmVyc2FsUmVzdWx0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3IgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgTnVsbENvbnRyb2xGbG93TmFycmF0aXZlR2VuZXJhdG9yIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gSGFuZGxlcnMgKHRlc3RpbmcgLyBjdXN0b20gZW5naW5lcylcbmV4cG9ydCB0eXBlIHsgQ2FsbEV4dHJhY3RvckZuLCBFeGVjdXRlTm9kZUZuLCBHZXRTdGFnZVBhdGhGbiwgUnVuU3RhZ2VGbiB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhcHBseU91dHB1dE1hcHBpbmcsXG4gIENoaWxkcmVuRXhlY3V0b3IsXG4gIGNvbXB1dGVOb2RlVHlwZSxcbiAgQ29udGludWF0aW9uUmVzb2x2ZXIsXG4gIGNyZWF0ZVN1YmZsb3dIYW5kbGVyRGVwcyxcbiAgRGVjaWRlckhhbmRsZXIsXG4gIERFRkFVTFRfTUFYX0lURVJBVElPTlMsXG4gIEV4dHJhY3RvclJ1bm5lcixcbiAgZXh0cmFjdFBhcmVudFNjb3BlVmFsdWVzLFxuICBnZXRJbml0aWFsU2NvcGVWYWx1ZXMsXG4gIE5vZGVSZXNvbHZlcixcbiAgUnVudGltZVN0cnVjdHVyZU1hbmFnZXIsXG4gIHNlZWRTdWJmbG93R2xvYmFsU3RvcmUsXG4gIFNlbGVjdG9ySGFuZGxlcixcbiAgU3RhZ2VSdW5uZXIsXG4gIFN1YmZsb3dFeGVjdXRvcixcbn0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbiJdfQ==
|
package/dist/esm/index.js
CHANGED
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
* import from 'footprint/advanced'.
|
|
10
10
|
*/
|
|
11
11
|
export { flowChart, FlowChartBuilder } from './lib/builder/index.js';
|
|
12
|
+
export { createTypedScopeFactory, typedFlowChart } from './lib/builder/typedFlowChart.js';
|
|
13
|
+
export { createTypedScope } from './lib/reactive/index.js';
|
|
14
|
+
export { decide, select } from './lib/decide/index.js';
|
|
12
15
|
// ============================================================================
|
|
13
16
|
// Runner — Execution convenience layer
|
|
14
17
|
// ============================================================================
|
|
@@ -18,13 +21,13 @@ export { getSubtreeSnapshot, listSubflowPaths } from './lib/runner/index.js';
|
|
|
18
21
|
// Scope — Per-stage facades and recorders
|
|
19
22
|
// ============================================================================
|
|
20
23
|
export { ScopeFacade } from './lib/scope/index.js';
|
|
24
|
+
// Dev-mode diagnostics
|
|
25
|
+
export { disableDevMode, enableDevMode } from './lib/scope/detectCircular.js';
|
|
21
26
|
// Recorders
|
|
22
27
|
export { MetricRecorder } from './lib/scope/index.js';
|
|
23
28
|
export { DebugRecorder } from './lib/scope/index.js';
|
|
24
|
-
export { NarrativeRecorder } from './lib/scope/index.js';
|
|
25
29
|
// Zod-based scope definitions
|
|
26
30
|
export { defineScopeFromZod } from './lib/scope/index.js';
|
|
27
|
-
export { CombinedNarrativeBuilder } from './lib/engine/index.js';
|
|
28
31
|
export { NarrativeFlowRecorder } from './lib/engine/index.js';
|
|
29
32
|
export { extractErrorInfo, formatErrorInfo } from './lib/engine/index.js';
|
|
30
33
|
export { ManifestFlowRecorder } from './lib/engine/index.js';
|
|
@@ -40,4 +43,4 @@ export { normalizeSchema, zodToJsonSchema } from './lib/contract/index.js';
|
|
|
40
43
|
export { generateOpenAPI } from './lib/contract/index.js';
|
|
41
44
|
export { detectSchema, isValidatable, isZod } from './lib/schema/index.js';
|
|
42
45
|
export { InputValidationError, validateAgainstSchema, validateOrThrow } from './lib/schema/index.js';
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztHQVNHO0FBT0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJFLCtFQUErRTtBQUMvRSx1Q0FBdUM7QUFDdkMsK0VBQStFO0FBRS9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUTFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdFLCtFQUErRTtBQUMvRSwwQ0FBMEM7QUFDMUMsK0VBQStFO0FBRS9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxZQUFZO0FBQ1osT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWF6RCw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFpQmpFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUkxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW9CdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBTzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9vdFByaW50IOKAlCBQdWJsaWMgQVBJXG4gKlxuICogQ29ubmVjdGVkIGNhdXNhbCB0cmFjZSBsaWJyYXJ5IGZvciBMTE0gcGlwZWxpbmVzLlxuICogQnVpbGRzIGZsb3djaGFydHMsIGV4ZWN1dGVzIHRoZW0gdmlhIERGUyB0cmF2ZXJzYWwsIGFuZCBjYXB0dXJlc1xuICogZXZlcnkgc3RhZ2UncyBjb250ZXh0IChzdGF0ZSwgZGVjaXNpb25zLCBlcnJvcnMpIGluIGFuIGF1ZGl0YWJsZSB0cmFjZS5cbiAqXG4gKiBGb3IgYWR2YW5jZWQvaW50ZXJuYWwgQVBJcyAobWVtb3J5IHByaW1pdGl2ZXMsIGVuZ2luZSBoYW5kbGVycywgcHJvdmlkZXJzKSxcbiAqIGltcG9ydCBmcm9tICdmb290cHJpbnQvYWR2YW5jZWQnLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1aWxkZXIg4oCUIEZsb3djaGFydCBjb25zdHJ1Y3Rpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnQsIFBpcGVsaW5lU3RhZ2VGdW5jdGlvbiBhcyBTdGFnZUhhbmRsZXIsIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5leHBvcnQgeyBmbG93Q2hhcnQsIEZsb3dDaGFydEJ1aWxkZXIgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVubmVyIOKAlCBFeGVjdXRpb24gY29udmVuaWVuY2UgbGF5ZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHsgRmxvd0NoYXJ0RXhlY3V0b3IgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyBDb21wb3NhYmxlUnVubmVyIOKAlCBpbnRlcmZhY2UgZm9yIHJ1bm5lcnMgdGhhdCBleHBvc2UgdGhlaXIgaW50ZXJuYWwgZmxvd0NoYXJ0XG4vLyBmb3Igc3ViZmxvdyBjb21wb3NpdGlvbiAoZW5hYmxlcyBVSSBkcmlsbC1kb3duIGludG8gbmVzdGVkIHJ1bm5lcnMpXG5leHBvcnQgdHlwZSB7IENvbXBvc2FibGVSdW5uZXIgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyBTbmFwc2hvdCBuYXZpZ2F0aW9uIOKAlCBkcmlsbCBpbnRvIHN1YmZsb3cgc3VidHJlZXMgYnkgcGF0aFxuZXhwb3J0IHR5cGUgeyBSZWNvcmRlclNuYXBzaG90LCBSdW50aW1lU25hcHNob3QsIFN1YnRyZWVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5leHBvcnQgeyBnZXRTdWJ0cmVlU25hcHNob3QsIGxpc3RTdWJmbG93UGF0aHMgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZSDigJQgUGVyLXN0YWdlIGZhY2FkZXMgYW5kIHJlY29yZGVyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgeyBTY29wZUZhY2FkZSB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gUmVjb3JkZXJzXG5leHBvcnQgeyBNZXRyaWNSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcbmV4cG9ydCB7IERlYnVnUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5leHBvcnQgeyBOYXJyYXRpdmVSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gUmVjb3JkZXIgaW50ZXJmYWNlIGFuZCBjb3JlIGV2ZW50IHR5cGVzIChuZWVkZWQgdG8gaW1wbGVtZW50IGN1c3RvbSBSZWNvcmRlcilcbmV4cG9ydCB0eXBlIHtcbiAgQ29tbWl0RXZlbnQsXG4gIEVycm9yRXZlbnQsXG4gIFJlYWRFdmVudCxcbiAgUmVjb3JkZXIsXG4gIFJlZGFjdGlvblBvbGljeSxcbiAgUmVkYWN0aW9uUmVwb3J0LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vIFpvZC1iYXNlZCBzY29wZSBkZWZpbml0aW9uc1xuZXhwb3J0IHsgZGVmaW5lU2NvcGVGcm9tWm9kIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbmdpbmUg4oCUIE5hcnJhdGl2ZSAoY29tbW9ubHkgdXNlZClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5IH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IENvbWJpbmVkTmFycmF0aXZlQnVpbGRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIEZsb3dSZWNvcmRlciDigJQgUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBjb250cm9sIGZsb3cgZXZlbnRzIChtaXJyb3JzIHNjb3BlIFJlY29yZGVyKVxuZXhwb3J0IHR5cGUge1xuICBGbG93QnJlYWtFdmVudCxcbiAgRmxvd0RlY2lzaW9uRXZlbnQsXG4gIEZsb3dFcnJvckV2ZW50LFxuICBGbG93Rm9ya0V2ZW50LFxuICBGbG93TG9vcEV2ZW50LFxuICBGbG93TmV4dEV2ZW50LFxuICBGbG93UmVjb3JkZXIsXG4gIEZsb3dTZWxlY3RlZEV2ZW50LFxuICBGbG93U3RhZ2VFdmVudCxcbiAgRmxvd1N1YmZsb3dFdmVudCxcbiAgRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQsXG4gIFRyYXZlcnNhbENvbnRleHQsXG59IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBTdHJ1Y3R1cmVkIGVycm9yIGV4dHJhY3Rpb24g4oCUIHByZXNlcnZlcyBmaWVsZC1sZXZlbCBkZXRhaWxzIHRocm91Z2ggdGhlIHBpcGVsaW5lXG5leHBvcnQgdHlwZSB7IFN0cnVjdHVyZWRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgZXh0cmFjdEVycm9ySW5mbywgZm9ybWF0RXJyb3JJbmZvIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gQnVpbHQtaW4gRmxvd1JlY29yZGVyIHN0cmF0ZWdpZXMgKHRyZWUtc2hha2VhYmxlIOKAlCBpbXBvcnQgb25seSB3aGF0IHlvdSB1c2UpXG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0RW50cnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgTWFuaWZlc3RGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgQWRhcHRpdmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgTWlsZXN0b25lTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IFByb2dyZXNzaXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IFJMRU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBTZXBhcmF0ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBTaWxlbnROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgV2luZG93ZWROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW1vcnkg4oCUIFNjb3BlRmFjdG9yeSB0eXBlIChuZWVkZWQgZm9yIEZsb3dDaGFydEV4ZWN1dG9yIGNvbnN0cnVjdG9yKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvbkVudiwgUnVuT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRyYWN0IOKAlCBJL08gYm91bmRhcnksIHNjaGVtYXMsIGFuZCBPcGVuQVBJIGdlbmVyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBGbG93Q2hhcnRDb250cmFjdCxcbiAgRmxvd0NoYXJ0Q29udHJhY3RPcHRpb25zLFxuICBKc29uU2NoZW1hLFxuICBPcGVuQVBJT3B0aW9ucyxcbiAgT3BlbkFQSVNwZWMsXG59IGZyb20gJy4vbGliL2NvbnRyYWN0L2luZGV4LmpzJztcbmV4cG9ydCB7IGRlZmluZUNvbnRyYWN0IH0gZnJvbSAnLi9saWIvY29udHJhY3QvaW5kZXguanMnO1xuZXhwb3J0IHsgbm9ybWFsaXplU2NoZW1hLCB6b2RUb0pzb25TY2hlbWEgfSBmcm9tICcuL2xpYi9jb250cmFjdC9pbmRleC5qcyc7XG5leHBvcnQgeyBnZW5lcmF0ZU9wZW5BUEkgfSBmcm9tICcuL2xpYi9jb250cmFjdC9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNjaGVtYSDigJQgVW5pZmllZCBkZXRlY3Rpb24sIHZhbGlkYXRpb24sIGFuZCBzdHJ1Y3R1cmVkIGVycm9yc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFNjaGVtYUtpbmQsIFZhbGlkYXRpb25Jc3N1ZSwgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5leHBvcnQgeyBkZXRlY3RTY2hlbWEsIGlzVmFsaWRhdGFibGUsIGlzWm9kIH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcbmV4cG9ydCB7IElucHV0VmFsaWRhdGlvbkVycm9yLCB2YWxpZGF0ZUFnYWluc3RTY2hlbWEsIHZhbGlkYXRlT3JUaHJvdyB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG4iXX0=
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztHQVNHO0FBT0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSXJFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQVczRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXZELCtFQUErRTtBQUMvRSx1Q0FBdUM7QUFDdkMsK0VBQStFO0FBRS9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUTFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdFLCtFQUErRTtBQUMvRSwwQ0FBMEM7QUFDMUMsK0VBQStFO0FBRS9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCx1QkFBdUI7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RSxZQUFZO0FBQ1osT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWFyRCw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUF1QjFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUkxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW9CdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBTzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9vdFByaW50IOKAlCBQdWJsaWMgQVBJXG4gKlxuICogQ29ubmVjdGVkIGNhdXNhbCB0cmFjZSBsaWJyYXJ5IGZvciBMTE0gcGlwZWxpbmVzLlxuICogQnVpbGRzIGZsb3djaGFydHMsIGV4ZWN1dGVzIHRoZW0gdmlhIERGUyB0cmF2ZXJzYWwsIGFuZCBjYXB0dXJlc1xuICogZXZlcnkgc3RhZ2UncyBjb250ZXh0IChzdGF0ZSwgZGVjaXNpb25zLCBlcnJvcnMpIGluIGFuIGF1ZGl0YWJsZSB0cmFjZS5cbiAqXG4gKiBGb3IgYWR2YW5jZWQvaW50ZXJuYWwgQVBJcyAobWVtb3J5IHByaW1pdGl2ZXMsIGVuZ2luZSBoYW5kbGVycywgcHJvdmlkZXJzKSxcbiAqIGltcG9ydCBmcm9tICdmb290cHJpbnQvYWR2YW5jZWQnLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1aWxkZXIg4oCUIEZsb3djaGFydCBjb25zdHJ1Y3Rpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnQsIFN0YWdlRnVuY3Rpb24gYXMgU3RhZ2VIYW5kbGVyLCBTdHJlYW1IYW5kbGVycyB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgZmxvd0NoYXJ0LCBGbG93Q2hhcnRCdWlsZGVyIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8vIFR5cGVkU2NvcGUg4oCUIHR5cGVkIHByb3BlcnR5IGFjY2VzcyAobm8gY2FzdHMgbmVlZGVkKVxuZXhwb3J0IHR5cGUgeyBUeXBlZFN0YWdlRnVuY3Rpb24gfSBmcm9tICcuL2xpYi9idWlsZGVyL3R5cGVkRmxvd0NoYXJ0LmpzJztcbmV4cG9ydCB7IGNyZWF0ZVR5cGVkU2NvcGVGYWN0b3J5LCB0eXBlZEZsb3dDaGFydCB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuZXhwb3J0IHR5cGUgeyBTY29wZU1ldGhvZHMsIFR5cGVkU2NvcGUgfSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5leHBvcnQgeyBjcmVhdGVUeXBlZFNjb3BlIH0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuXG4vLyBEZWNpc2lvbiByZWFzb25pbmcgY2FwdHVyZVxuZXhwb3J0IHR5cGUge1xuICBEZWNpZGVSdWxlLFxuICBEZWNpc2lvbkV2aWRlbmNlLFxuICBEZWNpc2lvblJlc3VsdCxcbiAgRmlsdGVyT3BzLFxuICBTZWxlY3Rpb25SZXN1bHQsXG4gIFdoZXJlRmlsdGVyLFxufSBmcm9tICcuL2xpYi9kZWNpZGUvaW5kZXguanMnO1xuZXhwb3J0IHsgZGVjaWRlLCBzZWxlY3QgfSBmcm9tICcuL2xpYi9kZWNpZGUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSdW5uZXIg4oCUIEV4ZWN1dGlvbiBjb252ZW5pZW5jZSBsYXllclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgeyBGbG93Q2hhcnRFeGVjdXRvciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vIENvbXBvc2FibGVSdW5uZXIg4oCUIGludGVyZmFjZSBmb3IgcnVubmVycyB0aGF0IGV4cG9zZSB0aGVpciBpbnRlcm5hbCBmbG93Q2hhcnRcbi8vIGZvciBzdWJmbG93IGNvbXBvc2l0aW9uIChlbmFibGVzIFVJIGRyaWxsLWRvd24gaW50byBuZXN0ZWQgcnVubmVycylcbmV4cG9ydCB0eXBlIHsgQ29tcG9zYWJsZVJ1bm5lciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vIFNuYXBzaG90IG5hdmlnYXRpb24g4oCUIGRyaWxsIGludG8gc3ViZmxvdyBzdWJ0cmVlcyBieSBwYXRoXG5leHBvcnQgdHlwZSB7IFJlY29yZGVyU25hcHNob3QsIFJ1bnRpbWVTbmFwc2hvdCwgU3VidHJlZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcbmV4cG9ydCB7IGdldFN1YnRyZWVTbmFwc2hvdCwgbGlzdFN1YmZsb3dQYXRocyB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNjb3BlIOKAlCBQZXItc3RhZ2UgZmFjYWRlcyBhbmQgcmVjb3JkZXJzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB7IFNjb3BlRmFjYWRlIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBEZXYtbW9kZSBkaWFnbm9zdGljc1xuZXhwb3J0IHsgZGlzYWJsZURldk1vZGUsIGVuYWJsZURldk1vZGUgfSBmcm9tICcuL2xpYi9zY29wZS9kZXRlY3RDaXJjdWxhci5qcyc7XG5cbi8vIFJlY29yZGVyc1xuZXhwb3J0IHsgTWV0cmljUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5leHBvcnQgeyBEZWJ1Z1JlY29yZGVyIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBSZWNvcmRlciBpbnRlcmZhY2UgYW5kIGNvcmUgZXZlbnQgdHlwZXMgKG5lZWRlZCB0byBpbXBsZW1lbnQgY3VzdG9tIFJlY29yZGVyKVxuZXhwb3J0IHR5cGUge1xuICBDb21taXRFdmVudCxcbiAgRXJyb3JFdmVudCxcbiAgUmVhZEV2ZW50LFxuICBSZWNvcmRlcixcbiAgUmVkYWN0aW9uUG9saWN5LFxuICBSZWRhY3Rpb25SZXBvcnQsXG4gIFdyaXRlRXZlbnQsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gWm9kLWJhc2VkIHNjb3BlIGRlZmluaXRpb25zXG5leHBvcnQgeyBkZWZpbmVTY29wZUZyb21ab2QgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVuZ2luZSDigJQgTmFycmF0aXZlIChjb21tb25seSB1c2VkKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IENvbWJpbmVkTmFycmF0aXZlRW50cnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBGbG93UmVjb3JkZXIg4oCUIFBsdWdnYWJsZSBvYnNlcnZlciBmb3IgY29udHJvbCBmbG93IGV2ZW50cyAobWlycm9ycyBzY29wZSBSZWNvcmRlcilcbmV4cG9ydCB0eXBlIHtcbiAgRmxvd0JyZWFrRXZlbnQsXG4gIEZsb3dEZWNpc2lvbkV2ZW50LFxuICBGbG93RXJyb3JFdmVudCxcbiAgRmxvd0ZvcmtFdmVudCxcbiAgRmxvd0xvb3BFdmVudCxcbiAgRmxvd05leHRFdmVudCxcbiAgRmxvd1JlY29yZGVyLFxuICBGbG93U2VsZWN0ZWRFdmVudCxcbiAgRmxvd1N0YWdlRXZlbnQsXG4gIEZsb3dTdWJmbG93RXZlbnQsXG4gIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50LFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gU3RydWN0dXJlZCBlcnJvciBleHRyYWN0aW9uIOKAlCBwcmVzZXJ2ZXMgZmllbGQtbGV2ZWwgZGV0YWlscyB0aHJvdWdoIHRoZSBwaXBlbGluZVxuZXhwb3J0IHR5cGUgeyBTdHJ1Y3R1cmVkRXJyb3JJbmZvIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IGV4dHJhY3RFcnJvckluZm8sIGZvcm1hdEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIEJ1aWx0LWluIEZsb3dSZWNvcmRlciBzdHJhdGVnaWVzICh0cmVlLXNoYWtlYWJsZSDigJQgaW1wb3J0IG9ubHkgd2hhdCB5b3UgdXNlKVxuZXhwb3J0IHR5cGUgeyBNYW5pZmVzdEVudHJ5IH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IE1hbmlmZXN0Rmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IEFkYXB0aXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IE1pbGVzdG9uZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBQcm9ncmVzc2l2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBSTEVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgU2VwYXJhdGVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgU2lsZW50TmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IFdpbmRvd2VkTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVtb3J5IOKAlCBTY29wZUZhY3RvcnkgdHlwZSAobmVlZGVkIGZvciBGbG93Q2hhcnRFeGVjdXRvciBjb25zdHJ1Y3Rvcilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBFeGVjdXRpb25FbnYsIFJ1bk9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUgeyBTY29wZUZhY3RvcnkgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb250cmFjdCDigJQgSS9PIGJvdW5kYXJ5LCBzY2hlbWFzLCBhbmQgT3BlbkFQSSBnZW5lcmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgRmxvd0NoYXJ0Q29udHJhY3QsXG4gIEZsb3dDaGFydENvbnRyYWN0T3B0aW9ucyxcbiAgSnNvblNjaGVtYSxcbiAgT3BlbkFQSU9wdGlvbnMsXG4gIE9wZW5BUElTcGVjLFxufSBmcm9tICcuL2xpYi9jb250cmFjdC9pbmRleC5qcyc7XG5leHBvcnQgeyBkZWZpbmVDb250cmFjdCB9IGZyb20gJy4vbGliL2NvbnRyYWN0L2luZGV4LmpzJztcbmV4cG9ydCB7IG5vcm1hbGl6ZVNjaGVtYSwgem9kVG9Kc29uU2NoZW1hIH0gZnJvbSAnLi9saWIvY29udHJhY3QvaW5kZXguanMnO1xuZXhwb3J0IHsgZ2VuZXJhdGVPcGVuQVBJIH0gZnJvbSAnLi9saWIvY29udHJhY3QvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY2hlbWEg4oCUIFVuaWZpZWQgZGV0ZWN0aW9uLCB2YWxpZGF0aW9uLCBhbmQgc3RydWN0dXJlZCBlcnJvcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBTY2hlbWFLaW5kLCBWYWxpZGF0aW9uSXNzdWUsIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuZXhwb3J0IHsgZGV0ZWN0U2NoZW1hLCBpc1ZhbGlkYXRhYmxlLCBpc1pvZCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5leHBvcnQgeyBJbnB1dFZhbGlkYXRpb25FcnJvciwgdmFsaWRhdGVBZ2FpbnN0U2NoZW1hLCB2YWxpZGF0ZU9yVGhyb3cgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuIl19
|