footprintjs 4.16.0 → 4.17.2
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/AGENTS.md +567 -82
- package/CLAUDE.md +57 -0
- package/README.md +2 -0
- package/dist/advanced.js +4 -2
- package/dist/detach.js +78 -0
- package/dist/esm/advanced.js +2 -1
- package/dist/esm/detach.js +57 -0
- package/dist/esm/lib/builder/FlowChartBuilder.js +171 -61
- package/dist/esm/lib/contract/openapi.js +4 -5
- package/dist/esm/lib/contract/schema.js +115 -4
- package/dist/esm/lib/decide/decide.js +4 -5
- package/dist/esm/lib/decide/evidence.js +3 -2
- package/dist/esm/lib/detach/drivers/immediate.js +66 -0
- package/dist/esm/lib/detach/drivers/microtaskBatch.js +113 -0
- package/dist/esm/lib/detach/drivers/sendBeacon.js +78 -0
- package/dist/esm/lib/detach/drivers/setImmediate.js +81 -0
- package/dist/esm/lib/detach/drivers/setTimeout.js +69 -0
- package/dist/esm/lib/detach/drivers/workerThread.js +117 -0
- package/dist/esm/lib/detach/flush.js +91 -0
- package/dist/esm/lib/detach/handle.js +134 -0
- package/dist/esm/lib/detach/registry.js +97 -0
- package/dist/esm/lib/detach/runChild.js +40 -0
- package/dist/esm/lib/detach/spawn.js +86 -0
- package/dist/esm/lib/detach/types.js +37 -0
- package/dist/esm/lib/engine/errors/errorInfo.js +4 -4
- package/dist/esm/lib/engine/graph/StageNode.js +2 -2
- package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +9 -8
- package/dist/esm/lib/engine/handlers/ContinuationResolver.js +12 -9
- package/dist/esm/lib/engine/handlers/DeciderHandler.js +7 -8
- package/dist/esm/lib/engine/handlers/ExtractorRunner.js +14 -8
- package/dist/esm/lib/engine/handlers/NodeResolver.js +5 -3
- package/dist/esm/lib/engine/handlers/RuntimeStructureManager.js +11 -14
- package/dist/esm/lib/engine/handlers/SelectorHandler.js +9 -9
- package/dist/esm/lib/engine/handlers/StageRunner.js +9 -11
- package/dist/esm/lib/engine/handlers/SubflowExecutor.js +13 -12
- package/dist/esm/lib/engine/handlers/SubflowInputMapper.js +4 -4
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +85 -96
- package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +18 -36
- package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.js +6 -5
- package/dist/esm/lib/engine/narrative/recorders/AdaptiveNarrativeFlowRecorder.js +7 -6
- package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.js +10 -10
- package/dist/esm/lib/engine/narrative/recorders/MilestoneNarrativeFlowRecorder.js +5 -3
- package/dist/esm/lib/engine/narrative/recorders/ProgressiveNarrativeFlowRecorder.js +4 -3
- package/dist/esm/lib/engine/narrative/recorders/RLENarrativeFlowRecorder.js +4 -4
- package/dist/esm/lib/engine/narrative/recorders/SeparateNarrativeFlowRecorder.js +5 -6
- package/dist/esm/lib/engine/narrative/recorders/SilentNarrativeFlowRecorder.js +5 -6
- package/dist/esm/lib/engine/narrative/recorders/WindowedNarrativeFlowRecorder.js +5 -3
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +97 -71
- package/dist/esm/lib/memory/DiagnosticCollector.js +6 -8
- package/dist/esm/lib/memory/EventLog.js +5 -3
- package/dist/esm/lib/memory/SharedMemory.js +3 -2
- package/dist/esm/lib/memory/StageContext.js +44 -14
- package/dist/esm/lib/memory/TransactionBuffer.js +9 -8
- package/dist/esm/lib/memory/backtrack.js +3 -4
- package/dist/esm/lib/memory/commitLogUtils.js +2 -2
- package/dist/esm/lib/memory/utils.js +2 -3
- package/dist/esm/lib/pause/types.js +33 -14
- package/dist/esm/lib/reactive/createTypedScope.js +10 -8
- package/dist/esm/lib/reactive/types.js +3 -1
- package/dist/esm/lib/recorder/BoundaryStateTracker.js +263 -0
- package/dist/esm/lib/recorder/CompositeRecorder.js +3 -1
- package/dist/esm/lib/recorder/InOutRecorder.js +5 -6
- package/dist/esm/lib/recorder/KeyedRecorder.js +2 -4
- package/dist/esm/lib/recorder/QualityRecorder.js +15 -14
- package/dist/esm/lib/recorder/SequenceRecorder.js +11 -12
- package/dist/esm/lib/recorder/TopologyRecorder.js +36 -40
- package/dist/esm/lib/recorder/index.js +2 -1
- package/dist/esm/lib/recorder/qualityTrace.js +4 -5
- package/dist/esm/lib/runner/ExecutionRuntime.js +20 -4
- package/dist/esm/lib/runner/FlowChartExecutor.js +99 -55
- package/dist/esm/lib/runner/RunContext.js +5 -3
- package/dist/esm/lib/runner/RunnableChart.js +7 -9
- package/dist/esm/lib/runner/getSubtreeSnapshot.js +4 -5
- package/dist/esm/lib/schema/errors.js +4 -3
- package/dist/esm/lib/schema/validate.js +4 -5
- package/dist/esm/lib/scope/ScopeFacade.js +52 -35
- package/dist/esm/lib/scope/providers/baseStateCompatible.js +9 -9
- package/dist/esm/lib/scope/providers/guards.js +2 -2
- package/dist/esm/lib/scope/recorders/DebugRecorder.js +9 -7
- package/dist/esm/lib/scope/recorders/MetricRecorder.js +10 -8
- package/dist/esm/lib/scope/state/zod/defineScopeFromZod.js +2 -3
- package/dist/esm/lib/scope/state/zod/resolver.js +2 -3
- package/dist/esm/lib/scope/state/zod/scopeFactory.js +16 -20
- package/dist/esm/lib/scope/state/zod/utils/validateHelper.js +57 -14
- package/dist/esm/trace.js +4 -1
- package/dist/lib/builder/FlowChartBuilder.js +171 -61
- package/dist/lib/contract/openapi.js +4 -5
- package/dist/lib/contract/schema.js +115 -4
- package/dist/lib/decide/decide.js +4 -5
- package/dist/lib/decide/evidence.js +3 -2
- package/dist/lib/detach/drivers/immediate.js +70 -0
- package/dist/lib/detach/drivers/microtaskBatch.js +117 -0
- package/dist/lib/detach/drivers/sendBeacon.js +82 -0
- package/dist/lib/detach/drivers/setImmediate.js +85 -0
- package/dist/lib/detach/drivers/setTimeout.js +73 -0
- package/dist/lib/detach/drivers/workerThread.js +121 -0
- package/dist/lib/detach/flush.js +95 -0
- package/dist/lib/detach/handle.js +140 -0
- package/dist/lib/detach/registry.js +106 -0
- package/dist/lib/detach/runChild.js +67 -0
- package/dist/lib/detach/spawn.js +92 -0
- package/dist/lib/detach/types.js +38 -0
- package/dist/lib/engine/errors/errorInfo.js +4 -4
- package/dist/lib/engine/graph/StageNode.js +2 -2
- package/dist/lib/engine/handlers/ChildrenExecutor.js +9 -8
- package/dist/lib/engine/handlers/ContinuationResolver.js +12 -9
- package/dist/lib/engine/handlers/DeciderHandler.js +7 -8
- package/dist/lib/engine/handlers/ExtractorRunner.js +14 -8
- package/dist/lib/engine/handlers/NodeResolver.js +5 -3
- package/dist/lib/engine/handlers/RuntimeStructureManager.js +11 -14
- package/dist/lib/engine/handlers/SelectorHandler.js +9 -9
- package/dist/lib/engine/handlers/StageRunner.js +9 -11
- package/dist/lib/engine/handlers/SubflowExecutor.js +13 -12
- package/dist/lib/engine/handlers/SubflowInputMapper.js +4 -4
- package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +85 -96
- package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +18 -36
- package/dist/lib/engine/narrative/NarrativeFlowRecorder.js +6 -5
- package/dist/lib/engine/narrative/recorders/AdaptiveNarrativeFlowRecorder.js +7 -6
- package/dist/lib/engine/narrative/recorders/ManifestFlowRecorder.js +10 -10
- package/dist/lib/engine/narrative/recorders/MilestoneNarrativeFlowRecorder.js +5 -3
- package/dist/lib/engine/narrative/recorders/ProgressiveNarrativeFlowRecorder.js +4 -3
- package/dist/lib/engine/narrative/recorders/RLENarrativeFlowRecorder.js +4 -4
- package/dist/lib/engine/narrative/recorders/SeparateNarrativeFlowRecorder.js +5 -6
- package/dist/lib/engine/narrative/recorders/SilentNarrativeFlowRecorder.js +5 -6
- package/dist/lib/engine/narrative/recorders/WindowedNarrativeFlowRecorder.js +5 -3
- package/dist/lib/engine/traversal/FlowchartTraverser.js +97 -71
- package/dist/lib/memory/DiagnosticCollector.js +6 -8
- package/dist/lib/memory/EventLog.js +5 -3
- package/dist/lib/memory/SharedMemory.js +3 -2
- package/dist/lib/memory/StageContext.js +44 -14
- package/dist/lib/memory/TransactionBuffer.js +9 -8
- package/dist/lib/memory/backtrack.js +3 -4
- package/dist/lib/memory/commitLogUtils.js +2 -2
- package/dist/lib/memory/utils.js +2 -3
- package/dist/lib/pause/types.js +33 -14
- package/dist/lib/reactive/createTypedScope.js +10 -8
- package/dist/lib/reactive/types.js +3 -1
- package/dist/lib/recorder/BoundaryStateTracker.js +267 -0
- package/dist/lib/recorder/CompositeRecorder.js +3 -1
- package/dist/lib/recorder/InOutRecorder.js +5 -6
- package/dist/lib/recorder/KeyedRecorder.js +2 -4
- package/dist/lib/recorder/QualityRecorder.js +15 -14
- package/dist/lib/recorder/SequenceRecorder.js +11 -12
- package/dist/lib/recorder/TopologyRecorder.js +36 -40
- package/dist/lib/recorder/index.js +4 -2
- package/dist/lib/recorder/qualityTrace.js +4 -5
- package/dist/lib/runner/ExecutionRuntime.js +20 -4
- package/dist/lib/runner/FlowChartExecutor.js +99 -55
- package/dist/lib/runner/RunContext.js +5 -3
- package/dist/lib/runner/RunnableChart.js +7 -9
- package/dist/lib/runner/getSubtreeSnapshot.js +4 -5
- package/dist/lib/schema/errors.js +4 -3
- package/dist/lib/schema/validate.js +4 -5
- package/dist/lib/scope/ScopeFacade.js +52 -35
- package/dist/lib/scope/providers/baseStateCompatible.js +9 -9
- package/dist/lib/scope/providers/guards.js +2 -2
- package/dist/lib/scope/recorders/DebugRecorder.js +9 -7
- package/dist/lib/scope/recorders/MetricRecorder.js +10 -8
- package/dist/lib/scope/state/zod/defineScopeFromZod.js +2 -3
- package/dist/lib/scope/state/zod/resolver.js +2 -3
- package/dist/lib/scope/state/zod/scopeFactory.js +16 -20
- package/dist/lib/scope/state/zod/utils/validateHelper.js +57 -14
- package/dist/trace.js +6 -2
- package/dist/types/advanced.d.ts +1 -0
- package/dist/types/detach.d.ts +59 -0
- package/dist/types/lib/builder/FlowChartBuilder.d.ts +81 -0
- package/dist/types/lib/detach/drivers/immediate.d.ts +39 -0
- package/dist/types/lib/detach/drivers/microtaskBatch.d.ts +57 -0
- package/dist/types/lib/detach/drivers/sendBeacon.d.ts +38 -0
- package/dist/types/lib/detach/drivers/setImmediate.d.ts +32 -0
- package/dist/types/lib/detach/drivers/setTimeout.d.ts +34 -0
- package/dist/types/lib/detach/drivers/workerThread.d.ts +50 -0
- package/dist/types/lib/detach/flush.d.ts +62 -0
- package/dist/types/lib/detach/handle.d.ts +83 -0
- package/dist/types/lib/detach/registry.d.ts +82 -0
- package/dist/types/lib/detach/runChild.d.ts +41 -0
- package/dist/types/lib/detach/spawn.d.ts +64 -0
- package/dist/types/lib/detach/types.d.ts +200 -0
- package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +0 -1
- package/dist/types/lib/engine/types.d.ts +0 -1
- package/dist/types/lib/reactive/types.d.ts +4 -0
- package/dist/types/lib/recorder/BoundaryStateTracker.d.ts +215 -0
- package/dist/types/lib/recorder/index.d.ts +1 -0
- package/dist/types/lib/runner/FlowChartExecutor.d.ts +28 -0
- package/dist/types/lib/scope/ScopeFacade.d.ts +4 -0
- package/dist/types/lib/scope/state/zod/utils/validateHelper.d.ts +13 -1
- package/dist/types/trace.d.ts +1 -0
- package/package.json +6 -1
|
@@ -10,9 +10,11 @@
|
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.NodeResolver = void 0;
|
|
12
12
|
class NodeResolver {
|
|
13
|
+
deps;
|
|
14
|
+
nodeIdMap;
|
|
13
15
|
constructor(deps, nodeIdMap) {
|
|
14
16
|
this.deps = deps;
|
|
15
|
-
this.nodeIdMap = nodeIdMap
|
|
17
|
+
this.nodeIdMap = nodeIdMap ?? new Map();
|
|
16
18
|
}
|
|
17
19
|
/**
|
|
18
20
|
* O(1) node lookup via pre-built ID map.
|
|
@@ -27,7 +29,7 @@ class NodeResolver {
|
|
|
27
29
|
return mapped;
|
|
28
30
|
}
|
|
29
31
|
// Fallback: DFS from startNode (subflow-local or dynamic nodes not in the map)
|
|
30
|
-
return this._dfs(nodeId, startNode
|
|
32
|
+
return this._dfs(nodeId, startNode ?? this.deps.root);
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
33
35
|
* DFS search for a node by ID.
|
|
@@ -89,4 +91,4 @@ class NodeResolver {
|
|
|
89
91
|
}
|
|
90
92
|
}
|
|
91
93
|
exports.NodeResolver = NodeResolver;
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9kZVJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvaGFuZGxlcnMvTm9kZVJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOzs7QUFNSCxNQUFhLFlBQVk7SUFHSDtJQUZILFNBQVMsQ0FBdUM7SUFFakUsWUFBb0IsSUFBK0IsRUFBRSxTQUFnRDtRQUFqRixTQUFJLEdBQUosSUFBSSxDQUEyQjtRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLE1BQWMsRUFBRSxTQUFtQztRQUM5RCxrRkFBa0Y7UUFDbEYsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUMsSUFBSSxNQUFNO2dCQUFFLE9BQU8sTUFBTSxDQUFDO1FBQzVCLENBQUM7UUFFRCwrRUFBK0U7UUFDL0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssSUFBSSxDQUFDLE1BQWMsRUFBRSxJQUE2QjtRQUN4RCxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxLQUFLO29CQUFFLE9BQU8sS0FBSyxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0MsSUFBSSxLQUFLO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzFCLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx1QkFBdUIsQ0FBQyxJQUE2QjtRQUNuRCwwQ0FBMEM7UUFDMUMsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV4RSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFckMsMkNBQTJDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFhLENBQUM7UUFDNUYsSUFBSSxVQUF5RCxDQUFDO1FBRTlELEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM1QixVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JDLE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ25CLDZDQUE2QyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNoRyxDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsa0RBQWtEO1FBQ2xELCtFQUErRTtRQUMvRSx1RUFBdUU7UUFDdkUsT0FBTztZQUNMLEdBQUcsVUFBVSxDQUFDLElBQUk7WUFDbEIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQ2pDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtTQUNyRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdkZELG9DQXVGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTm9kZVJlc29sdmVyIOKAlCBERlMgbm9kZSBsb29rdXAgKyBzdWJmbG93IHJlZmVyZW5jZSByZXNvbHV0aW9uLlxuICpcbiAqIFJlc3BvbnNpYmlsaXRpZXM6XG4gKiAtIEZpbmQgbm9kZXMgYnkgSUQgdmlhIHJlY3Vyc2l2ZSBkZXB0aC1maXJzdCBzZWFyY2ggKGZvciBiYWNrLWVkZ2UvbG9vcCBzdXBwb3J0KVxuICogLSBSZXNvbHZlIHN1YmZsb3cgcmVmZXJlbmNlIG5vZGVzIHRvIGFjdHVhbCBzdWJmbG93IHN0cnVjdHVyZXNcbiAqIC0gRXZhbHVhdGUgZGVjaWRlcnMgdG8gZGV0ZXJtaW5lIG5leHQgbm9kZSBpbiBicmFuY2hpbmcgc2NlbmFyaW9zXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tZW1vcnkvU3RhZ2VDb250ZXh0LmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VOb2RlIH0gZnJvbSAnLi4vZ3JhcGgvU3RhZ2VOb2RlLmpzJztcbmltcG9ydCB0eXBlIHsgSGFuZGxlckRlcHMgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBOb2RlUmVzb2x2ZXI8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZUlkTWFwOiBNYXA8c3RyaW5nLCBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPj47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkZXBzOiBIYW5kbGVyRGVwczxUT3V0LCBUU2NvcGU+LCBub2RlSWRNYXA/OiBNYXA8c3RyaW5nLCBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPj4pIHtcbiAgICB0aGlzLm5vZGVJZE1hcCA9IG5vZGVJZE1hcCA/PyBuZXcgTWFwKCk7XG4gIH1cblxuICAvKipcbiAgICogTygxKSBub2RlIGxvb2t1cCB2aWEgcHJlLWJ1aWx0IElEIG1hcC5cbiAgICogRmFsbHMgYmFjayB0byBERlMgZnJvbSBzdGFydE5vZGUgKGZvciBkeW5hbWljIG5vZGVzIGFkZGVkIGF0IHJ1bnRpbWVcbiAgICogb3Igc3ViZmxvdy1sb2NhbCBsb29rdXBzIHRoYXQgdXNlIGFuIGV4cGxpY2l0IHN0YXJ0Tm9kZSkuXG4gICAqL1xuICBmaW5kTm9kZUJ5SWQobm9kZUlkOiBzdHJpbmcsIHN0YXJ0Tm9kZT86IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+KTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4gfCB1bmRlZmluZWQge1xuICAgIC8vIEZhc3QgcGF0aDogTygxKSBtYXAgbG9va3VwIChvbmx5IHZhbGlkIGZvciByb290LWxldmVsIGdyYXBoLCBub3Qgc3ViZmxvdy1sb2NhbClcbiAgICBpZiAoIXN0YXJ0Tm9kZSkge1xuICAgICAgY29uc3QgbWFwcGVkID0gdGhpcy5ub2RlSWRNYXAuZ2V0KG5vZGVJZCk7XG4gICAgICBpZiAobWFwcGVkKSByZXR1cm4gbWFwcGVkO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrOiBERlMgZnJvbSBzdGFydE5vZGUgKHN1YmZsb3ctbG9jYWwgb3IgZHluYW1pYyBub2RlcyBub3QgaW4gdGhlIG1hcClcbiAgICByZXR1cm4gdGhpcy5fZGZzKG5vZGVJZCwgc3RhcnROb2RlID8/IHRoaXMuZGVwcy5yb290KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBERlMgc2VhcmNoIGZvciBhIG5vZGUgYnkgSUQuXG4gICAqIFVzZWQgYXMgZmFsbGJhY2sgd2hlbiB0aGUgbm9kZSBpcyBub3QgaW4gdGhlIHByZS1idWlsdCBtYXAuXG4gICAqL1xuICBwcml2YXRlIF9kZnMobm9kZUlkOiBzdHJpbmcsIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+KTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4gfCB1bmRlZmluZWQge1xuICAgIGlmIChub2RlLmlkID09PSBub2RlSWQpIHJldHVybiBub2RlO1xuXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuX2Rmcyhub2RlSWQsIGNoaWxkKTtcbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUubmV4dCkge1xuICAgICAgY29uc3QgZm91bmQgPSB0aGlzLl9kZnMobm9kZUlkLCBub2RlLm5leHQpO1xuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGEgc3ViZmxvdyByZWZlcmVuY2Ugbm9kZSB0byBpdHMgYWN0dWFsIHN0cnVjdHVyZS5cbiAgICpcbiAgICogUmVmZXJlbmNlIG5vZGVzIGFyZSBsaWdodHdlaWdodCBwbGFjZWhvbGRlcnMgKGlzU3ViZmxvd1Jvb3QgYnV0IG5vIGZuL2NoaWxkcmVuKS5cbiAgICogVGhlIGFjdHVhbCBzdHJ1Y3R1cmUgbGl2ZXMgaW4gdGhlIHN1YmZsb3dzIGRpY3Rpb25hcnkuXG4gICAqL1xuICByZXNvbHZlU3ViZmxvd1JlZmVyZW5jZShub2RlOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPik6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+IHtcbiAgICAvLyBBbHJlYWR5IGhhcyBzdHJ1Y3R1cmUg4oCUIG5vdCBhIHJlZmVyZW5jZVxuICAgIGlmIChub2RlLmZuIHx8IChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkpIHJldHVybiBub2RlO1xuXG4gICAgaWYgKCF0aGlzLmRlcHMuc3ViZmxvd3MpIHJldHVybiBub2RlO1xuXG4gICAgLy8gVHJ5IG11bHRpcGxlIGtleXMgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZVxuICAgIGNvbnN0IGtleXNUb1RyeSA9IFtub2RlLnN1YmZsb3dJZCwgbm9kZS5zdWJmbG93TmFtZSwgbm9kZS5uYW1lXS5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW107XG4gICAgbGV0IHN1YmZsb3dEZWY6IHsgcm9vdDogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4gfSB8IHVuZGVmaW5lZDtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXNUb1RyeSkge1xuICAgICAgaWYgKHRoaXMuZGVwcy5zdWJmbG93c1trZXldKSB7XG4gICAgICAgIHN1YmZsb3dEZWYgPSB0aGlzLmRlcHMuc3ViZmxvd3Nba2V5XTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFzdWJmbG93RGVmKSB7XG4gICAgICB0aGlzLmRlcHMubG9nZ2VyLmluZm8oXG4gICAgICAgIGBTdWJmbG93IG5vdCBmb3VuZCBpbiBkaWN0aW9uYXJ5IGZvciBub2RlICcke25vZGUubmFtZX0nICh0cmllZCBrZXlzOiAke2tleXNUb1RyeS5qb2luKCcsICcpfSlgLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cblxuICAgIC8vIE1lcmdlIHJlZmVyZW5jZSBtZXRhZGF0YSB3aXRoIGFjdHVhbCBzdHJ1Y3R1cmUuXG4gICAgLy8gaWQgY29tZXMgZnJvbSB0aGUgaW5uZXIgcm9vdCAodGhlIGFjdHVhbCBzdGFnZSBpZGVudGl0eSBmb3IgdHJhY2UgbWF0Y2hpbmcpLFxuICAgIC8vIG5vdCB0aGUgbW91bnQgbm9kZSAod2hpY2ggaXMgdGhlIHN1YmZsb3cgZW50cnkgcG9pbnQgaW4gdGhlIHBhcmVudCkuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1YmZsb3dEZWYucm9vdCxcbiAgICAgIGlzU3ViZmxvd1Jvb3Q6IG5vZGUuaXNTdWJmbG93Um9vdCxcbiAgICAgIHN1YmZsb3dJZDogbm9kZS5zdWJmbG93SWQsXG4gICAgICBzdWJmbG93TmFtZTogbm9kZS5zdWJmbG93TmFtZSxcbiAgICAgIGlkOiBzdWJmbG93RGVmLnJvb3QuaWQgfHwgbm9kZS5pZCxcbiAgICAgIHN1YmZsb3dNb3VudE9wdGlvbnM6IG5vZGUuc3ViZmxvd01vdW50T3B0aW9ucyB8fCBzdWJmbG93RGVmLnJvb3Quc3ViZmxvd01vdW50T3B0aW9ucyxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -16,7 +16,6 @@ const detectCircular_js_1 = require("../../scope/detectCircular.js");
|
|
|
16
16
|
* Shared by RuntimeStructureManager (serialization) and ExtractorRunner (metadata).
|
|
17
17
|
*/
|
|
18
18
|
function computeNodeType(node) {
|
|
19
|
-
var _a;
|
|
20
19
|
// Loop back-edge nodes are spec stubs — they are not executable stages.
|
|
21
20
|
// (Runtime: StageNode.isLoopRef; Spec: SerializedPipelineStructure.isLoopReference)
|
|
22
21
|
if (node.isLoopRef)
|
|
@@ -33,16 +32,15 @@ function computeNodeType(node) {
|
|
|
33
32
|
return 'decider';
|
|
34
33
|
if (node.isStreaming)
|
|
35
34
|
return 'streaming';
|
|
36
|
-
const hasDynamicChildren = Boolean(
|
|
35
|
+
const hasDynamicChildren = Boolean(node.children?.length && !node.nextNodeSelector && node.fn);
|
|
37
36
|
if (node.children && node.children.length > 0 && !hasDynamicChildren)
|
|
38
37
|
return 'fork';
|
|
39
38
|
return 'stage';
|
|
40
39
|
}
|
|
41
40
|
exports.computeNodeType = computeNodeType;
|
|
42
41
|
class RuntimeStructureManager {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
42
|
+
runtimePipelineStructure;
|
|
43
|
+
structureNodeMap = new Map();
|
|
46
44
|
/** Initialize from build-time structure. Deep-clones via JSON round-trip. */
|
|
47
45
|
init(buildTimeStructure) {
|
|
48
46
|
if (!buildTimeStructure)
|
|
@@ -50,7 +48,7 @@ class RuntimeStructureManager {
|
|
|
50
48
|
try {
|
|
51
49
|
this.runtimePipelineStructure = JSON.parse(JSON.stringify(buildTimeStructure));
|
|
52
50
|
}
|
|
53
|
-
catch
|
|
51
|
+
catch {
|
|
54
52
|
// Non-serializable build-time structure — skip runtime tracking gracefully.
|
|
55
53
|
return;
|
|
56
54
|
}
|
|
@@ -60,6 +58,7 @@ class RuntimeStructureManager {
|
|
|
60
58
|
getStructure() {
|
|
61
59
|
return this.runtimePipelineStructure;
|
|
62
60
|
}
|
|
61
|
+
static MAX_NODE_MAP_DEPTH = 500;
|
|
63
62
|
/** Recursively registers all nodes in the O(1) lookup map. */
|
|
64
63
|
buildNodeMap(node, depth = 0) {
|
|
65
64
|
if (depth > RuntimeStructureManager.MAX_NODE_MAP_DEPTH) {
|
|
@@ -82,7 +81,6 @@ class RuntimeStructureManager {
|
|
|
82
81
|
}
|
|
83
82
|
/** Convert a runtime StageNode into a SerializedPipelineStructure node. */
|
|
84
83
|
stageNodeToStructure(node) {
|
|
85
|
-
var _a, _b, _c, _d;
|
|
86
84
|
const structure = {
|
|
87
85
|
name: node.name,
|
|
88
86
|
id: node.id,
|
|
@@ -100,19 +98,19 @@ class RuntimeStructureManager {
|
|
|
100
98
|
}
|
|
101
99
|
if (node.deciderFn) {
|
|
102
100
|
structure.hasDecider = true;
|
|
103
|
-
structure.branchIds =
|
|
101
|
+
structure.branchIds = node.children?.map((c) => c.id);
|
|
104
102
|
}
|
|
105
103
|
if (node.selectorFn || node.nextNodeSelector) {
|
|
106
104
|
structure.hasSelector = true;
|
|
107
|
-
structure.branchIds =
|
|
105
|
+
structure.branchIds = node.children?.map((c) => c.id);
|
|
108
106
|
}
|
|
109
|
-
if (
|
|
107
|
+
if (node.children?.length) {
|
|
110
108
|
structure.children = node.children.map((c) => this.stageNodeToStructure(c));
|
|
111
109
|
}
|
|
112
110
|
if (node.next) {
|
|
113
111
|
structure.next = this.stageNodeToStructure(node.next);
|
|
114
112
|
}
|
|
115
|
-
if (
|
|
113
|
+
if (node.subflowDef?.buildTimeStructure) {
|
|
116
114
|
structure.subflowStructure = node.subflowDef.buildTimeStructure;
|
|
117
115
|
}
|
|
118
116
|
return structure;
|
|
@@ -164,7 +162,7 @@ class RuntimeStructureManager {
|
|
|
164
162
|
mountStructure.subflowStructure = JSON.parse(JSON.stringify(subflowBuildTimeStructure));
|
|
165
163
|
this.buildNodeMap(mountStructure.subflowStructure);
|
|
166
164
|
}
|
|
167
|
-
catch
|
|
165
|
+
catch {
|
|
168
166
|
// Non-serializable subflow structure — skip subflow structure tracking gracefully.
|
|
169
167
|
}
|
|
170
168
|
}
|
|
@@ -195,5 +193,4 @@ class RuntimeStructureManager {
|
|
|
195
193
|
}
|
|
196
194
|
}
|
|
197
195
|
exports.RuntimeStructureManager = RuntimeStructureManager;
|
|
198
|
-
RuntimeStructureManager.MAX_NODE_MAP_DEPTH = 500;
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVudGltZVN0cnVjdHVyZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9oYW5kbGVycy9SdW50aW1lU3RydWN0dXJlTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7OztBQUVILHFFQUEwRDtBQUkxRDs7O0dBR0c7QUFDSCxTQUFnQixlQUFlLENBQzdCLElBQWU7O0lBRWYsd0VBQXdFO0lBQ3hFLG9GQUFvRjtJQUNwRixJQUFJLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDbEMsSUFBSSxJQUFJLENBQUMsYUFBYTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3pDLElBQUksSUFBSSxDQUFDLFVBQVU7UUFBRSxPQUFPLFVBQVUsQ0FBQztJQUN2Qyx1RkFBdUY7SUFDdkYsc0ZBQXNGO0lBQ3RGLHdGQUF3RjtJQUN4RixpRUFBaUU7SUFDakUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM5RCxJQUFJLElBQUksQ0FBQyxXQUFXO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFFekMsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLE1BQU0sS0FBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0YsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBRXBGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFuQkQsMENBbUJDO0FBRUQsTUFBYSx1QkFBdUI7SUFBcEM7UUFFVSxxQkFBZ0IsR0FBNkMsSUFBSSxHQUFHLEVBQUUsQ0FB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Q0FBQyxhQUFhLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsNERBQTREO0lBQzVELG9CQUFvQixDQUFDLE1BQWMsRUFBRSxLQUFhO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCO1lBQUUsT0FBTztRQUMzQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUMzQixhQUFhLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDOztBQS9MSCwwREFnTUM7QUEzS3lCLDBDQUFrQixHQUFHLEdBQUcsQUFBTixDQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSdW50aW1lU3RydWN0dXJlTWFuYWdlciDigJQgTXV0YWJsZSBzdHJ1Y3R1cmUgdHJhY2tpbmcgZm9yIHZpc3VhbGl6YXRpb24uXG4gKlxuICogRHVyaW5nIGV4ZWN1dGlvbiwgZHluYW1pYyBldmVudHMgKG5ldyBjaGlsZHJlbiwgc3ViZmxvd3MsIG5leHQgY2hhaW5zLFxuICogbG9vcCBpdGVyYXRpb25zKSBtb2RpZnkgdGhlIHBpcGVsaW5lLiBUaGlzIG1hbmFnZXIga2VlcHMgYSBzZXJpYWxpemVkXG4gKiBzdHJ1Y3R1cmUgaW4gc3luYyBzbyBjb25zdW1lcnMgZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLlxuICpcbiAqIERlZXAtY2xvbmVzIGJ1aWxkLXRpbWUgc3RydWN0dXJlIGF0IGluaXQsIHRoZW4gbWFpbnRhaW5zIE8oMSkgbG9va3VwIG1hcC5cbiAqL1xuXG5pbXBvcnQgeyBpc0Rldk1vZGUgfSBmcm9tICcuLi8uLi9zY29wZS9kZXRlY3RDaXJjdWxhci5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YWdlTm9kZSB9IGZyb20gJy4uL2dyYXBoL1N0YWdlTm9kZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBub2RlIHR5cGUgZnJvbSBub2RlIHByb3BlcnRpZXMuXG4gKiBTaGFyZWQgYnkgUnVudGltZVN0cnVjdHVyZU1hbmFnZXIgKHNlcmlhbGl6YXRpb24pIGFuZCBFeHRyYWN0b3JSdW5uZXIgKG1ldGFkYXRhKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVOb2RlVHlwZShcbiAgbm9kZTogU3RhZ2VOb2RlLFxuKTogJ3N0YWdlJyB8ICdkZWNpZGVyJyB8ICdzZWxlY3RvcicgfCAnZm9yaycgfCAnc3RyZWFtaW5nJyB8ICdzdWJmbG93JyB8ICdsb29wJyB7XG4gIC8vIExvb3AgYmFjay1lZGdlIG5vZGVzIGFyZSBzcGVjIHN0dWJzIOKAlCB0aGV5IGFyZSBub3QgZXhlY3V0YWJsZSBzdGFnZXMuXG4gIC8vIChSdW50aW1lOiBTdGFnZU5vZGUuaXNMb29wUmVmOyBTcGVjOiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUuaXNMb29wUmVmZXJlbmNlKVxuICBpZiAobm9kZS5pc0xvb3BSZWYpIHJldHVybiAnbG9vcCc7XG4gIGlmIChub2RlLmlzU3ViZmxvd1Jvb3QpIHJldHVybiAnc3ViZmxvdyc7XG4gIGlmIChub2RlLnNlbGVjdG9yRm4pIHJldHVybiAnc2VsZWN0b3InO1xuICAvLyBuZXh0Tm9kZVNlbGVjdG9yIGlzIGFuIG91dHB1dC1iYXNlZCByb3V0aW5nIGZ1bmN0aW9uIChub3Qgc2NvcGUtYmFzZWQpLCBncm91cGVkIHdpdGhcbiAgLy8gZGVjaWRlckZuIGFzICdkZWNpZGVyJyByYXRoZXIgdGhhbiAnc2VsZWN0b3InLiBUaGUgdHdvIGJyYW5jaGVzIGRpZmZlciBpbiB3aGF0IHRoZXlcbiAgLy8gcmVhZCAob3V0cHV0IHZzIHNjb3BlKSBidXQgYm90aCByZXByZXNlbnQgYSBjb25kaXRpb25hbCBicmFuY2ggZGVjaXNpb24uIFJldmlzaXQgaW4gYVxuICAvLyBmdXR1cmUgY2xlYW51cCBvbmNlIHRoZSBkaXN0aW5jdGlvbiBpcyB1c2VyLXZpc2libGUgaW4gdGhlIFVJLlxuICBpZiAobm9kZS5uZXh0Tm9kZVNlbGVjdG9yIHx8IG5vZGUuZGVjaWRlckZuKSByZXR1cm4gJ2RlY2lkZXInO1xuICBpZiAobm9kZS5pc1N0cmVhbWluZykgcmV0dXJuICdzdHJlYW1pbmcnO1xuXG4gIGNvbnN0IGhhc0R5bmFtaWNDaGlsZHJlbiA9IEJvb2xlYW4obm9kZS5jaGlsZHJlbj8ubGVuZ3RoICYmICFub2RlLm5leHROb2RlU2VsZWN0b3IgJiYgbm9kZS5mbik7XG4gIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCAmJiAhaGFzRHluYW1pY0NoaWxkcmVuKSByZXR1cm4gJ2ZvcmsnO1xuXG4gIHJldHVybiAnc3RhZ2UnO1xufVxuXG5leHBvcnQgY2xhc3MgUnVudGltZVN0cnVjdHVyZU1hbmFnZXIge1xuICBwcml2YXRlIHJ1bnRpbWVQaXBlbGluZVN0cnVjdHVyZT86IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZTtcbiAgcHJpdmF0ZSBzdHJ1Y3R1cmVOb2RlTWFwOiBNYXA8c3RyaW5nLCBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmU+ID0gbmV3IE1hcCgpO1xuXG4gIC8qKiBJbml0aWFsaXplIGZyb20gYnVpbGQtdGltZSBzdHJ1Y3R1cmUuIERlZXAtY2xvbmVzIHZpYSBKU09OIHJvdW5kLXRyaXAuICovXG4gIGluaXQoYnVpbGRUaW1lU3RydWN0dXJlPzogU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlKTogdm9pZCB7XG4gICAgaWYgKCFidWlsZFRpbWVTdHJ1Y3R1cmUpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgdGhpcy5ydW50aW1lUGlwZWxpbmVTdHJ1Y3R1cmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGJ1aWxkVGltZVN0cnVjdHVyZSkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gTm9uLXNlcmlhbGl6YWJsZSBidWlsZC10aW1lIHN0cnVjdHVyZSDigJQgc2tpcCBydW50aW1lIHRyYWNraW5nIGdyYWNlZnVsbHkuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYnVpbGROb2RlTWFwKHRoaXMucnVudGltZVBpcGVsaW5lU3RydWN0dXJlISk7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgY3VycmVudCBydW50aW1lIHN0cnVjdHVyZSAobXV0YXRlZCBkdXJpbmcgZXhlY3V0aW9uKS4gKi9cbiAgZ2V0U3RydWN0dXJlKCk6IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZVBpcGVsaW5lU3RydWN0dXJlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTUFYX05PREVfTUFQX0RFUFRIID0gNTAwO1xuXG4gIC8qKiBSZWN1cnNpdmVseSByZWdpc3RlcnMgYWxsIG5vZGVzIGluIHRoZSBPKDEpIGxvb2t1cCBtYXAuICovXG4gIHByaXZhdGUgYnVpbGROb2RlTWFwKG5vZGU6IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSwgZGVwdGggPSAwKTogdm9pZCB7XG4gICAgaWYgKGRlcHRoID4gUnVudGltZVN0cnVjdHVyZU1hbmFnZXIuTUFYX05PREVfTUFQX0RFUFRIKSB7XG4gICAgICAvLyBHdWFyZCBhZ2FpbnN0IHBhdGhvbG9naWNhbGx5IGRlZXAgb3IgY3ljbGljIHN0cnVjdHVyZXMgaW5qZWN0ZWQgaW50byBidWlsZFRpbWVTdHJ1Y3R1cmUuXG4gICAgICAvLyBOb3JtYWwgYnVpbGRlci1wcm9kdWNlZCBjaGFydHMgYXJlIG5hdHVyYWxseSBib3VuZGVkIHdlbGwgYmVsb3cgdGhpcyBsaW1pdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdHJ1Y3R1cmVOb2RlTWFwLnNldChub2RlLmlkLCBub2RlKTtcblxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgdGhpcy5idWlsZE5vZGVNYXAoY2hpbGQsIGRlcHRoICsgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLm5leHQpIHtcbiAgICAgIHRoaXMuYnVpbGROb2RlTWFwKG5vZGUubmV4dCwgZGVwdGggKyAxKTtcbiAgICB9XG4gICAgaWYgKG5vZGUuc3ViZmxvd1N0cnVjdHVyZSkge1xuICAgICAgdGhpcy5idWlsZE5vZGVNYXAobm9kZS5zdWJmbG93U3RydWN0dXJlLCBkZXB0aCArIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDb252ZXJ0IGEgcnVudGltZSBTdGFnZU5vZGUgaW50byBhIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSBub2RlLiAqL1xuICBzdGFnZU5vZGVUb1N0cnVjdHVyZShub2RlOiBTdGFnZU5vZGUpOiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUge1xuICAgIGNvbnN0IHN0cnVjdHVyZTogU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlID0ge1xuICAgICAgbmFtZTogbm9kZS5uYW1lLFxuICAgICAgaWQ6IG5vZGUuaWQsXG4gICAgICB0eXBlOiBjb21wdXRlTm9kZVR5cGUobm9kZSksXG4gICAgICBkZXNjcmlwdGlvbjogbm9kZS5kZXNjcmlwdGlvbixcbiAgICB9O1xuXG4gICAgaWYgKG5vZGUuaXNTdHJlYW1pbmcpIHtcbiAgICAgIHN0cnVjdHVyZS5pc1N0cmVhbWluZyA9IHRydWU7XG4gICAgICBzdHJ1Y3R1cmUuc3RyZWFtSWQgPSBub2RlLnN0cmVhbUlkO1xuICAgIH1cblxuICAgIGlmIChub2RlLmlzU3ViZmxvd1Jvb3QpIHtcbiAgICAgIHN0cnVjdHVyZS5pc1N1YmZsb3dSb290ID0gdHJ1ZTtcbiAgICAgIHN0cnVjdHVyZS5zdWJmbG93SWQgPSBub2RlLnN1YmZsb3dJZDtcbiAgICAgIHN0cnVjdHVyZS5zdWJmbG93TmFtZSA9IG5vZGUuc3ViZmxvd05hbWU7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuZGVjaWRlckZuKSB7XG4gICAgICBzdHJ1Y3R1cmUuaGFzRGVjaWRlciA9IHRydWU7XG4gICAgICBzdHJ1Y3R1cmUuYnJhbmNoSWRzID0gbm9kZS5jaGlsZHJlbj8ubWFwKChjKSA9PiBjLmlkKTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5zZWxlY3RvckZuIHx8IG5vZGUubmV4dE5vZGVTZWxlY3Rvcikge1xuICAgICAgc3RydWN0dXJlLmhhc1NlbGVjdG9yID0gdHJ1ZTtcbiAgICAgIHN0cnVjdHVyZS5icmFuY2hJZHMgPSBub2RlLmNoaWxkcmVuPy5tYXAoKGMpID0+IGMuaWQpO1xuICAgIH1cblxuICAgIGlmIChub2RlLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIHN0cnVjdHVyZS5jaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4ubWFwKChjKSA9PiB0aGlzLnN0YWdlTm9kZVRvU3RydWN0dXJlKGMpKTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5uZXh0KSB7XG4gICAgICBzdHJ1Y3R1cmUubmV4dCA9IHRoaXMuc3RhZ2VOb2RlVG9TdHJ1Y3R1cmUobm9kZS5uZXh0KTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5zdWJmbG93RGVmPy5idWlsZFRpbWVTdHJ1Y3R1cmUpIHtcbiAgICAgIHN0cnVjdHVyZS5zdWJmbG93U3RydWN0dXJlID0gbm9kZS5zdWJmbG93RGVmLmJ1aWxkVGltZVN0cnVjdHVyZSBhcyBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cnVjdHVyZTtcbiAgfVxuXG4gIC8qKiBVcGRhdGUgc3RydWN0dXJlIHdoZW4gZHluYW1pYyBjaGlsZHJlbiBhcmUgZGlzY292ZXJlZCBhdCBydW50aW1lLiAqL1xuICB1cGRhdGVEeW5hbWljQ2hpbGRyZW4oXG4gICAgcGFyZW50Tm9kZUlkOiBzdHJpbmcsXG4gICAgZHluYW1pY0NoaWxkcmVuOiBTdGFnZU5vZGVbXSxcbiAgICBoYXNTZWxlY3Rvcj86IGJvb2xlYW4sXG4gICAgaGFzRGVjaWRlcj86IGJvb2xlYW4sXG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5ydW50aW1lUGlwZWxpbmVTdHJ1Y3R1cmUpIHJldHVybjtcblxuICAgIGNvbnN0IHBhcmVudFN0cnVjdHVyZSA9IHRoaXMuc3RydWN0dXJlTm9kZU1hcC5nZXQocGFyZW50Tm9kZUlkKTtcbiAgICBpZiAoIXBhcmVudFN0cnVjdHVyZSkge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgW2Zvb3RwcmludF0gUnVudGltZVN0cnVjdHVyZU1hbmFnZXI6IG5vZGUgJyR7cGFyZW50Tm9kZUlkfScgbm90IGZvdW5kIGluIHN0cnVjdHVyZSBtYXAg4oCUIHNuYXBzaG90IHZpc3VhbGl6YXRpb24gbWF5IGJlIGluY29tcGxldGVgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkU3RydWN0dXJlcyA9IGR5bmFtaWNDaGlsZHJlbi5tYXAoKGNoaWxkKSA9PiB0aGlzLnN0YWdlTm9kZVRvU3RydWN0dXJlKGNoaWxkKSk7XG4gICAgcGFyZW50U3RydWN0dXJlLmNoaWxkcmVuID0gY2hpbGRTdHJ1Y3R1cmVzO1xuXG4gICAgZm9yIChjb25zdCBjaGlsZFN0cnVjdHVyZSBvZiBjaGlsZFN0cnVjdHVyZXMpIHtcbiAgICAgIHRoaXMuYnVpbGROb2RlTWFwKGNoaWxkU3RydWN0dXJlKTtcbiAgICB9XG5cbiAgICBpZiAoaGFzU2VsZWN0b3IpIHtcbiAgICAgIHBhcmVudFN0cnVjdHVyZS5oYXNTZWxlY3RvciA9IHRydWU7XG4gICAgICBwYXJlbnRTdHJ1Y3R1cmUuYnJhbmNoSWRzID0gY2hpbGRTdHJ1Y3R1cmVzLm1hcCgoYykgPT4gYy5pZCk7XG4gICAgfVxuXG4gICAgaWYgKGhhc0RlY2lkZXIpIHtcbiAgICAgIHBhcmVudFN0cnVjdHVyZS5oYXNEZWNpZGVyID0gdHJ1ZTtcbiAgICAgIHBhcmVudFN0cnVjdHVyZS5icmFuY2hJZHMgPSBjaGlsZFN0cnVjdHVyZXMubWFwKChjKSA9PiBjLmlkKTtcbiAgICB9XG4gIH1cblxuICAvKiogVXBkYXRlIHN0cnVjdHVyZSB3aGVuIGEgZHluYW1pYyBzdWJmbG93IGlzIHJlZ2lzdGVyZWQgYXQgcnVudGltZS4gKi9cbiAgdXBkYXRlRHluYW1pY1N1YmZsb3coXG4gICAgbW91bnROb2RlSWQ6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ6IHN0cmluZyxcbiAgICBzdWJmbG93TmFtZT86IHN0cmluZyxcbiAgICBzdWJmbG93QnVpbGRUaW1lU3RydWN0dXJlPzogdW5rbm93bixcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJ1bnRpbWVQaXBlbGluZVN0cnVjdHVyZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgbW91bnRTdHJ1Y3R1cmUgPSB0aGlzLnN0cnVjdHVyZU5vZGVNYXAuZ2V0KG1vdW50Tm9kZUlkKTtcbiAgICBpZiAoIW1vdW50U3RydWN0dXJlKSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBbZm9vdHByaW50XSBSdW50aW1lU3RydWN0dXJlTWFuYWdlcjogbm9kZSAnJHttb3VudE5vZGVJZH0nIG5vdCBmb3VuZCBpbiBzdHJ1Y3R1cmUgbWFwIOKAlCBzbmFwc2hvdCB2aXN1YWxpemF0aW9uIG1heSBiZSBpbmNvbXBsZXRlYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBtb3VudFN0cnVjdHVyZS5pc1N1YmZsb3dSb290ID0gdHJ1ZTtcbiAgICBtb3VudFN0cnVjdHVyZS5zdWJmbG93SWQgPSBzdWJmbG93SWQ7XG5cbiAgICBpZiAoc3ViZmxvd05hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbW91bnRTdHJ1Y3R1cmUuc3ViZmxvd05hbWUgPSBzdWJmbG93TmFtZTtcbiAgICB9XG5cbiAgICBpZiAoc3ViZmxvd0J1aWxkVGltZVN0cnVjdHVyZSkge1xuICAgICAgLy8gRGVlcC1jb3B5IHRvIHByZXZlbnQgZXh0ZXJuYWwgbXV0YXRpb24gb2YgdGhlIHN0b3JlZCBzdHJ1Y3R1cmVcbiAgICAgIHRyeSB7XG4gICAgICAgIG1vdW50U3RydWN0dXJlLnN1YmZsb3dTdHJ1Y3R1cmUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHN1YmZsb3dCdWlsZFRpbWVTdHJ1Y3R1cmUpLFxuICAgICAgICApIGFzIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZTtcbiAgICAgICAgdGhpcy5idWlsZE5vZGVNYXAobW91bnRTdHJ1Y3R1cmUuc3ViZmxvd1N0cnVjdHVyZSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gTm9uLXNlcmlhbGl6YWJsZSBzdWJmbG93IHN0cnVjdHVyZSDigJQgc2tpcCBzdWJmbG93IHN0cnVjdHVyZSB0cmFja2luZyBncmFjZWZ1bGx5LlxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBVcGRhdGUgc3RydWN0dXJlIHdoZW4gYSBkeW5hbWljIG5leHQgY2hhaW4gaXMgZGlzY292ZXJlZCBhdCBydW50aW1lLiAqL1xuICB1cGRhdGVEeW5hbWljTmV4dChjdXJyZW50Tm9kZUlkOiBzdHJpbmcsIGR5bmFtaWNOZXh0OiBTdGFnZU5vZGUpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucnVudGltZVBpcGVsaW5lU3RydWN0dXJlKSByZXR1cm47XG5cbiAgICBjb25zdCBjdXJyZW50U3RydWN0dXJlID0gdGhpcy5zdHJ1Y3R1cmVOb2RlTWFwLmdldChjdXJyZW50Tm9kZUlkKTtcbiAgICBpZiAoIWN1cnJlbnRTdHJ1Y3R1cmUpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFtmb290cHJpbnRdIFJ1bnRpbWVTdHJ1Y3R1cmVNYW5hZ2VyOiBub2RlICcke2N1cnJlbnROb2RlSWR9JyBub3QgZm91bmQgaW4gc3RydWN0dXJlIG1hcCDigJQgc25hcHNob3QgdmlzdWFsaXphdGlvbiBtYXkgYmUgaW5jb21wbGV0ZWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dFN0cnVjdHVyZSA9IHRoaXMuc3RhZ2VOb2RlVG9TdHJ1Y3R1cmUoZHluYW1pY05leHQpO1xuICAgIGN1cnJlbnRTdHJ1Y3R1cmUubmV4dCA9IG5leHRTdHJ1Y3R1cmU7XG4gICAgdGhpcy5idWlsZE5vZGVNYXAobmV4dFN0cnVjdHVyZSk7XG4gIH1cblxuICAvKiogVXBkYXRlIHRoZSBpdGVyYXRpb24gY291bnQgZm9yIGEgbm9kZSAobG9vcCBzdXBwb3J0KS4gKi9cbiAgdXBkYXRlSXRlcmF0aW9uQ291bnQobm9kZUlkOiBzdHJpbmcsIGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucnVudGltZVBpcGVsaW5lU3RydWN0dXJlKSByZXR1cm47XG4gICAgY29uc3Qgbm9kZVN0cnVjdHVyZSA9IHRoaXMuc3RydWN0dXJlTm9kZU1hcC5nZXQobm9kZUlkKTtcbiAgICBpZiAoIW5vZGVTdHJ1Y3R1cmUpIHJldHVybjtcbiAgICBub2RlU3RydWN0dXJlLml0ZXJhdGlvbkNvdW50ID0gY291bnQ7XG4gIH1cbn1cbiJdfQ==
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVudGltZVN0cnVjdHVyZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9oYW5kbGVycy9SdW50aW1lU3RydWN0dXJlTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7OztBQUVILHFFQUEwRDtBQUkxRDs7O0dBR0c7QUFDSCxTQUFnQixlQUFlLENBQzdCLElBQWU7SUFFZix3RUFBd0U7SUFDeEUsb0ZBQW9GO0lBQ3BGLElBQUksSUFBSSxDQUFDLFNBQVM7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNsQyxJQUFJLElBQUksQ0FBQyxhQUFhO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDekMsSUFBSSxJQUFJLENBQUMsVUFBVTtRQUFFLE9BQU8sVUFBVSxDQUFDO0lBQ3ZDLHVGQUF1RjtJQUN2RixzRkFBc0Y7SUFDdEYsd0ZBQXdGO0lBQ3hGLGlFQUFpRTtJQUNqRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzlELElBQUksSUFBSSxDQUFDLFdBQVc7UUFBRSxPQUFPLFdBQVcsQ0FBQztJQUV6QyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0YsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBRXBGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFuQkQsMENBbUJDO0FBRUQsTUFBYSx1QkFBdUI7SUFDMUIsd0JBQXdCLENBQStCO0lBQ3ZELGdCQUFnQixHQUE2QyxJQUFJLEdBQUcsRUFBRSxD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QVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsNERBQTREO0lBQzVELG9CQUFvQixDQUFDLE1BQWMsRUFBRSxLQUFhO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCO1lBQUUsT0FBTztRQUMzQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUMzQixhQUFhLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDOztBQS9MSCwwREFnTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJ1bnRpbWVTdHJ1Y3R1cmVNYW5hZ2VyIOKAlCBNdXRhYmxlIHN0cnVjdHVyZSB0cmFja2luZyBmb3IgdmlzdWFsaXphdGlvbi5cbiAqXG4gKiBEdXJpbmcgZXhlY3V0aW9uLCBkeW5hbWljIGV2ZW50cyAobmV3IGNoaWxkcmVuLCBzdWJmbG93cywgbmV4dCBjaGFpbnMsXG4gKiBsb29wIGl0ZXJhdGlvbnMpIG1vZGlmeSB0aGUgcGlwZWxpbmUuIFRoaXMgbWFuYWdlciBrZWVwcyBhIHNlcmlhbGl6ZWRcbiAqIHN0cnVjdHVyZSBpbiBzeW5jIHNvIGNvbnN1bWVycyBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuXG4gKlxuICogRGVlcC1jbG9uZXMgYnVpbGQtdGltZSBzdHJ1Y3R1cmUgYXQgaW5pdCwgdGhlbiBtYWludGFpbnMgTygxKSBsb29rdXAgbWFwLlxuICovXG5cbmltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJy4uLy4uL3Njb3BlL2RldGVjdENpcmN1bGFyLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VOb2RlIH0gZnJvbSAnLi4vZ3JhcGgvU3RhZ2VOb2RlLmpzJztcbmltcG9ydCB0eXBlIHsgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKipcbiAqIENvbXB1dGUgdGhlIG5vZGUgdHlwZSBmcm9tIG5vZGUgcHJvcGVydGllcy5cbiAqIFNoYXJlZCBieSBSdW50aW1lU3RydWN0dXJlTWFuYWdlciAoc2VyaWFsaXphdGlvbikgYW5kIEV4dHJhY3RvclJ1bm5lciAobWV0YWRhdGEpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZU5vZGVUeXBlKFxuICBub2RlOiBTdGFnZU5vZGUsXG4pOiAnc3RhZ2UnIHwgJ2RlY2lkZXInIHwgJ3NlbGVjdG9yJyB8ICdmb3JrJyB8ICdzdHJlYW1pbmcnIHwgJ3N1YmZsb3cnIHwgJ2xvb3AnIHtcbiAgLy8gTG9vcCBiYWNrLWVkZ2Ugbm9kZXMgYXJlIHNwZWMgc3R1YnMg4oCUIHRoZXkgYXJlIG5vdCBleGVjdXRhYmxlIHN0YWdlcy5cbiAgLy8gKFJ1bnRpbWU6IFN0YWdlTm9kZS5pc0xvb3BSZWY7IFNwZWM6IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZS5pc0xvb3BSZWZlcmVuY2UpXG4gIGlmIChub2RlLmlzTG9vcFJlZikgcmV0dXJuICdsb29wJztcbiAgaWYgKG5vZGUuaXNTdWJmbG93Um9vdCkgcmV0dXJuICdzdWJmbG93JztcbiAgaWYgKG5vZGUuc2VsZWN0b3JGbikgcmV0dXJuICdzZWxlY3Rvcic7XG4gIC8vIG5leHROb2RlU2VsZWN0b3IgaXMgYW4gb3V0cHV0LWJhc2VkIHJvdXRpbmcgZnVuY3Rpb24gKG5vdCBzY29wZS1iYXNlZCksIGdyb3VwZWQgd2l0aFxuICAvLyBkZWNpZGVyRm4gYXMgJ2RlY2lkZXInIHJhdGhlciB0aGFuICdzZWxlY3RvcicuIFRoZSB0d28gYnJhbmNoZXMgZGlmZmVyIGluIHdoYXQgdGhleVxuICAvLyByZWFkIChvdXRwdXQgdnMgc2NvcGUpIGJ1dCBib3RoIHJlcHJlc2VudCBhIGNvbmRpdGlvbmFsIGJyYW5jaCBkZWNpc2lvbi4gUmV2aXNpdCBpbiBhXG4gIC8vIGZ1dHVyZSBjbGVhbnVwIG9uY2UgdGhlIGRpc3RpbmN0aW9uIGlzIHVzZXItdmlzaWJsZSBpbiB0aGUgVUkuXG4gIGlmIChub2RlLm5leHROb2RlU2VsZWN0b3IgfHwgbm9kZS5kZWNpZGVyRm4pIHJldHVybiAnZGVjaWRlcic7XG4gIGlmIChub2RlLmlzU3RyZWFtaW5nKSByZXR1cm4gJ3N0cmVhbWluZyc7XG5cbiAgY29uc3QgaGFzRHluYW1pY0NoaWxkcmVuID0gQm9vbGVhbihub2RlLmNoaWxkcmVuPy5sZW5ndGggJiYgIW5vZGUubmV4dE5vZGVTZWxlY3RvciAmJiBub2RlLmZuKTtcbiAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwICYmICFoYXNEeW5hbWljQ2hpbGRyZW4pIHJldHVybiAnZm9yayc7XG5cbiAgcmV0dXJuICdzdGFnZSc7XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lU3RydWN0dXJlTWFuYWdlciB7XG4gIHByaXZhdGUgcnVudGltZVBpcGVsaW5lU3RydWN0dXJlPzogU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlO1xuICBwcml2YXRlIHN0cnVjdHVyZU5vZGVNYXA6IE1hcDxzdHJpbmcsIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZT4gPSBuZXcgTWFwKCk7XG5cbiAgLyoqIEluaXRpYWxpemUgZnJvbSBidWlsZC10aW1lIHN0cnVjdHVyZS4gRGVlcC1jbG9uZXMgdmlhIEpTT04gcm91bmQtdHJpcC4gKi9cbiAgaW5pdChidWlsZFRpbWVTdHJ1Y3R1cmU/OiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUpOiB2b2lkIHtcbiAgICBpZiAoIWJ1aWxkVGltZVN0cnVjdHVyZSkgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnJ1bnRpbWVQaXBlbGluZVN0cnVjdHVyZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYnVpbGRUaW1lU3RydWN0dXJlKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBOb24tc2VyaWFsaXphYmxlIGJ1aWxkLXRpbWUgc3RydWN0dXJlIOKAlCBza2lwIHJ1bnRpbWUgdHJhY2tpbmcgZ3JhY2VmdWxseS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5idWlsZE5vZGVNYXAodGhpcy5ydW50aW1lUGlwZWxpbmVTdHJ1Y3R1cmUhKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBjdXJyZW50IHJ1bnRpbWUgc3RydWN0dXJlIChtdXRhdGVkIGR1cmluZyBleGVjdXRpb24pLiAqL1xuICBnZXRTdHJ1Y3R1cmUoKTogU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lUGlwZWxpbmVTdHJ1Y3R1cmU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNQVhfTk9ERV9NQVBfREVQVEggPSA1MDA7XG5cbiAgLyoqIFJlY3Vyc2l2ZWx5IHJlZ2lzdGVycyBhbGwgbm9kZXMgaW4gdGhlIE8oMSkgbG9va3VwIG1hcC4gKi9cbiAgcHJpdmF0ZSBidWlsZE5vZGVNYXAobm9kZTogU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLCBkZXB0aCA9IDApOiB2b2lkIHtcbiAgICBpZiAoZGVwdGggPiBSdW50aW1lU3RydWN0dXJlTWFuYWdlci5NQVhfTk9ERV9NQVBfREVQVEgpIHtcbiAgICAgIC8vIEd1YXJkIGFnYWluc3QgcGF0aG9sb2dpY2FsbHkgZGVlcCBvciBjeWNsaWMgc3RydWN0dXJlcyBpbmplY3RlZCBpbnRvIGJ1aWxkVGltZVN0cnVjdHVyZS5cbiAgICAgIC8vIE5vcm1hbCBidWlsZGVyLXByb2R1Y2VkIGNoYXJ0cyBhcmUgbmF0dXJhbGx5IGJvdW5kZWQgd2VsbCBiZWxvdyB0aGlzIGxpbWl0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0cnVjdHVyZU5vZGVNYXAuc2V0KG5vZGUuaWQsIG5vZGUpO1xuXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbikge1xuICAgICAgICB0aGlzLmJ1aWxkTm9kZU1hcChjaGlsZCwgZGVwdGggKyAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUubmV4dCkge1xuICAgICAgdGhpcy5idWlsZE5vZGVNYXAobm9kZS5uZXh0LCBkZXB0aCArIDEpO1xuICAgIH1cbiAgICBpZiAobm9kZS5zdWJmbG93U3RydWN0dXJlKSB7XG4gICAgICB0aGlzLmJ1aWxkTm9kZU1hcChub2RlLnN1YmZsb3dTdHJ1Y3R1cmUsIGRlcHRoICsgMSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENvbnZlcnQgYSBydW50aW1lIFN0YWdlTm9kZSBpbnRvIGEgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlIG5vZGUuICovXG4gIHN0YWdlTm9kZVRvU3RydWN0dXJlKG5vZGU6IFN0YWdlTm9kZSk6IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSB7XG4gICAgY29uc3Qgc3RydWN0dXJlOiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUgPSB7XG4gICAgICBuYW1lOiBub2RlLm5hbWUsXG4gICAgICBpZDogbm9kZS5pZCxcbiAgICAgIHR5cGU6IGNvbXB1dGVOb2RlVHlwZShub2RlKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBub2RlLmRlc2NyaXB0aW9uLFxuICAgIH07XG5cbiAgICBpZiAobm9kZS5pc1N0cmVhbWluZykge1xuICAgICAgc3RydWN0dXJlLmlzU3RyZWFtaW5nID0gdHJ1ZTtcbiAgICAgIHN0cnVjdHVyZS5zdHJlYW1JZCA9IG5vZGUuc3RyZWFtSWQ7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuaXNTdWJmbG93Um9vdCkge1xuICAgICAgc3RydWN0dXJlLmlzU3ViZmxvd1Jvb3QgPSB0cnVlO1xuICAgICAgc3RydWN0dXJlLnN1YmZsb3dJZCA9IG5vZGUuc3ViZmxvd0lkO1xuICAgICAgc3RydWN0dXJlLnN1YmZsb3dOYW1lID0gbm9kZS5zdWJmbG93TmFtZTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5kZWNpZGVyRm4pIHtcbiAgICAgIHN0cnVjdHVyZS5oYXNEZWNpZGVyID0gdHJ1ZTtcbiAgICAgIHN0cnVjdHVyZS5icmFuY2hJZHMgPSBub2RlLmNoaWxkcmVuPy5tYXAoKGMpID0+IGMuaWQpO1xuICAgIH1cblxuICAgIGlmIChub2RlLnNlbGVjdG9yRm4gfHwgbm9kZS5uZXh0Tm9kZVNlbGVjdG9yKSB7XG4gICAgICBzdHJ1Y3R1cmUuaGFzU2VsZWN0b3IgPSB0cnVlO1xuICAgICAgc3RydWN0dXJlLmJyYW5jaElkcyA9IG5vZGUuY2hpbGRyZW4/Lm1hcCgoYykgPT4gYy5pZCk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgc3RydWN0dXJlLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbi5tYXAoKGMpID0+IHRoaXMuc3RhZ2VOb2RlVG9TdHJ1Y3R1cmUoYykpO1xuICAgIH1cblxuICAgIGlmIChub2RlLm5leHQpIHtcbiAgICAgIHN0cnVjdHVyZS5uZXh0ID0gdGhpcy5zdGFnZU5vZGVUb1N0cnVjdHVyZShub2RlLm5leHQpO1xuICAgIH1cblxuICAgIGlmIChub2RlLnN1YmZsb3dEZWY/LmJ1aWxkVGltZVN0cnVjdHVyZSkge1xuICAgICAgc3RydWN0dXJlLnN1YmZsb3dTdHJ1Y3R1cmUgPSBub2RlLnN1YmZsb3dEZWYuYnVpbGRUaW1lU3RydWN0dXJlIGFzIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RydWN0dXJlO1xuICB9XG5cbiAgLyoqIFVwZGF0ZSBzdHJ1Y3R1cmUgd2hlbiBkeW5hbWljIGNoaWxkcmVuIGFyZSBkaXNjb3ZlcmVkIGF0IHJ1bnRpbWUuICovXG4gIHVwZGF0ZUR5bmFtaWNDaGlsZHJlbihcbiAgICBwYXJlbnROb2RlSWQ6IHN0cmluZyxcbiAgICBkeW5hbWljQ2hpbGRyZW46IFN0YWdlTm9kZVtdLFxuICAgIGhhc1NlbGVjdG9yPzogYm9vbGVhbixcbiAgICBoYXNEZWNpZGVyPzogYm9vbGVhbixcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJ1bnRpbWVQaXBlbGluZVN0cnVjdHVyZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcGFyZW50U3RydWN0dXJlID0gdGhpcy5zdHJ1Y3R1cmVOb2RlTWFwLmdldChwYXJlbnROb2RlSWQpO1xuICAgIGlmICghcGFyZW50U3RydWN0dXJlKSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBbZm9vdHByaW50XSBSdW50aW1lU3RydWN0dXJlTWFuYWdlcjogbm9kZSAnJHtwYXJlbnROb2RlSWR9JyBub3QgZm91bmQgaW4gc3RydWN0dXJlIG1hcCDigJQgc25hcHNob3QgdmlzdWFsaXphdGlvbiBtYXkgYmUgaW5jb21wbGV0ZWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGRTdHJ1Y3R1cmVzID0gZHluYW1pY0NoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHRoaXMuc3RhZ2VOb2RlVG9TdHJ1Y3R1cmUoY2hpbGQpKTtcbiAgICBwYXJlbnRTdHJ1Y3R1cmUuY2hpbGRyZW4gPSBjaGlsZFN0cnVjdHVyZXM7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkU3RydWN0dXJlIG9mIGNoaWxkU3RydWN0dXJlcykge1xuICAgICAgdGhpcy5idWlsZE5vZGVNYXAoY2hpbGRTdHJ1Y3R1cmUpO1xuICAgIH1cblxuICAgIGlmIChoYXNTZWxlY3Rvcikge1xuICAgICAgcGFyZW50U3RydWN0dXJlLmhhc1NlbGVjdG9yID0gdHJ1ZTtcbiAgICAgIHBhcmVudFN0cnVjdHVyZS5icmFuY2hJZHMgPSBjaGlsZFN0cnVjdHVyZXMubWFwKChjKSA9PiBjLmlkKTtcbiAgICB9XG5cbiAgICBpZiAoaGFzRGVjaWRlcikge1xuICAgICAgcGFyZW50U3RydWN0dXJlLmhhc0RlY2lkZXIgPSB0cnVlO1xuICAgICAgcGFyZW50U3RydWN0dXJlLmJyYW5jaElkcyA9IGNoaWxkU3RydWN0dXJlcy5tYXAoKGMpID0+IGMuaWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBVcGRhdGUgc3RydWN0dXJlIHdoZW4gYSBkeW5hbWljIHN1YmZsb3cgaXMgcmVnaXN0ZXJlZCBhdCBydW50aW1lLiAqL1xuICB1cGRhdGVEeW5hbWljU3ViZmxvdyhcbiAgICBtb3VudE5vZGVJZDogc3RyaW5nLFxuICAgIHN1YmZsb3dJZDogc3RyaW5nLFxuICAgIHN1YmZsb3dOYW1lPzogc3RyaW5nLFxuICAgIHN1YmZsb3dCdWlsZFRpbWVTdHJ1Y3R1cmU/OiB1bmtub3duLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucnVudGltZVBpcGVsaW5lU3RydWN0dXJlKSByZXR1cm47XG5cbiAgICBjb25zdCBtb3VudFN0cnVjdHVyZSA9IHRoaXMuc3RydWN0dXJlTm9kZU1hcC5nZXQobW91bnROb2RlSWQpO1xuICAgIGlmICghbW91bnRTdHJ1Y3R1cmUpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFtmb290cHJpbnRdIFJ1bnRpbWVTdHJ1Y3R1cmVNYW5hZ2VyOiBub2RlICcke21vdW50Tm9kZUlkfScgbm90IGZvdW5kIGluIHN0cnVjdHVyZSBtYXAg4oCUIHNuYXBzaG90IHZpc3VhbGl6YXRpb24gbWF5IGJlIGluY29tcGxldGVgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG1vdW50U3RydWN0dXJlLmlzU3ViZmxvd1Jvb3QgPSB0cnVlO1xuICAgIG1vdW50U3RydWN0dXJlLnN1YmZsb3dJZCA9IHN1YmZsb3dJZDtcblxuICAgIGlmIChzdWJmbG93TmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtb3VudFN0cnVjdHVyZS5zdWJmbG93TmFtZSA9IHN1YmZsb3dOYW1lO1xuICAgIH1cblxuICAgIGlmIChzdWJmbG93QnVpbGRUaW1lU3RydWN0dXJlKSB7XG4gICAgICAvLyBEZWVwLWNvcHkgdG8gcHJldmVudCBleHRlcm5hbCBtdXRhdGlvbiBvZiB0aGUgc3RvcmVkIHN0cnVjdHVyZVxuICAgICAgdHJ5IHtcbiAgICAgICAgbW91bnRTdHJ1Y3R1cmUuc3ViZmxvd1N0cnVjdHVyZSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc3ViZmxvd0J1aWxkVGltZVN0cnVjdHVyZSksXG4gICAgICAgICkgYXMgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlO1xuICAgICAgICB0aGlzLmJ1aWxkTm9kZU1hcChtb3VudFN0cnVjdHVyZS5zdWJmbG93U3RydWN0dXJlKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBOb24tc2VyaWFsaXphYmxlIHN1YmZsb3cgc3RydWN0dXJlIOKAlCBza2lwIHN1YmZsb3cgc3RydWN0dXJlIHRyYWNraW5nIGdyYWNlZnVsbHkuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIFVwZGF0ZSBzdHJ1Y3R1cmUgd2hlbiBhIGR5bmFtaWMgbmV4dCBjaGFpbiBpcyBkaXNjb3ZlcmVkIGF0IHJ1bnRpbWUuICovXG4gIHVwZGF0ZUR5bmFtaWNOZXh0KGN1cnJlbnROb2RlSWQ6IHN0cmluZywgZHluYW1pY05leHQ6IFN0YWdlTm9kZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5ydW50aW1lUGlwZWxpbmVTdHJ1Y3R1cmUpIHJldHVybjtcblxuICAgIGNvbnN0IGN1cnJlbnRTdHJ1Y3R1cmUgPSB0aGlzLnN0cnVjdHVyZU5vZGVNYXAuZ2V0KGN1cnJlbnROb2RlSWQpO1xuICAgIGlmICghY3VycmVudFN0cnVjdHVyZSkge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgW2Zvb3RwcmludF0gUnVudGltZVN0cnVjdHVyZU1hbmFnZXI6IG5vZGUgJyR7Y3VycmVudE5vZGVJZH0nIG5vdCBmb3VuZCBpbiBzdHJ1Y3R1cmUgbWFwIOKAlCBzbmFwc2hvdCB2aXN1YWxpemF0aW9uIG1heSBiZSBpbmNvbXBsZXRlYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0U3RydWN0dXJlID0gdGhpcy5zdGFnZU5vZGVUb1N0cnVjdHVyZShkeW5hbWljTmV4dCk7XG4gICAgY3VycmVudFN0cnVjdHVyZS5uZXh0ID0gbmV4dFN0cnVjdHVyZTtcbiAgICB0aGlzLmJ1aWxkTm9kZU1hcChuZXh0U3RydWN0dXJlKTtcbiAgfVxuXG4gIC8qKiBVcGRhdGUgdGhlIGl0ZXJhdGlvbiBjb3VudCBmb3IgYSBub2RlIChsb29wIHN1cHBvcnQpLiAqL1xuICB1cGRhdGVJdGVyYXRpb25Db3VudChub2RlSWQ6IHN0cmluZywgY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5ydW50aW1lUGlwZWxpbmVTdHJ1Y3R1cmUpIHJldHVybjtcbiAgICBjb25zdCBub2RlU3RydWN0dXJlID0gdGhpcy5zdHJ1Y3R1cmVOb2RlTWFwLmdldChub2RlSWQpO1xuICAgIGlmICghbm9kZVN0cnVjdHVyZSkgcmV0dXJuO1xuICAgIG5vZGVTdHJ1Y3R1cmUuaXRlcmF0aW9uQ291bnQgPSBjb3VudDtcbiAgfVxufVxuIl19
|
|
@@ -12,6 +12,8 @@ exports.SelectorHandler = void 0;
|
|
|
12
12
|
const types_js_1 = require("../../decide/types.js");
|
|
13
13
|
const types_js_2 = require("../../pause/types.js");
|
|
14
14
|
class SelectorHandler {
|
|
15
|
+
deps;
|
|
16
|
+
childrenExecutor;
|
|
15
17
|
constructor(deps, childrenExecutor) {
|
|
16
18
|
this.deps = deps;
|
|
17
19
|
this.childrenExecutor = childrenExecutor;
|
|
@@ -22,7 +24,6 @@ class SelectorHandler {
|
|
|
22
24
|
* Execution order: runStage(fn) → commit → resolve children → parallel execute.
|
|
23
25
|
*/
|
|
24
26
|
async handleScopeBased(node, stageFunc, context, breakFlag, branchPath, runStage, executeNode, callExtractor, getStagePath, traversalContext) {
|
|
25
|
-
var _a, _b;
|
|
26
27
|
const breakFn = () => (breakFlag.shouldBreak = true);
|
|
27
28
|
let selectedIds;
|
|
28
29
|
let selectionEvidence;
|
|
@@ -59,7 +60,6 @@ class SelectorHandler {
|
|
|
59
60
|
context.commit();
|
|
60
61
|
callExtractor(node, context, getStagePath(node, branchPath, context.stageName), selectedIds);
|
|
61
62
|
if (breakFlag.shouldBreak) {
|
|
62
|
-
this.deps.logger.info(`Execution stopped in pipeline (${branchPath}) after ${node.name} due to break condition.`);
|
|
63
63
|
return {};
|
|
64
64
|
}
|
|
65
65
|
context.addLog('selectedChildIds', selectedIds);
|
|
@@ -70,16 +70,16 @@ class SelectorHandler {
|
|
|
70
70
|
count: 0,
|
|
71
71
|
targetStage: [],
|
|
72
72
|
});
|
|
73
|
-
this.deps.narrativeGenerator.onSelected(node.name, [], (
|
|
73
|
+
this.deps.narrativeGenerator.onSelected(node.name, [], (node.children ?? []).length, traversalContext);
|
|
74
74
|
return {};
|
|
75
75
|
}
|
|
76
76
|
// Resolve children by matching selected IDs against node.children.
|
|
77
77
|
// Match branchId first (original unprefixed ID), fall back to id for backward compat.
|
|
78
78
|
const children = node.children;
|
|
79
|
-
const selectedChildren = children.filter((c) =>
|
|
79
|
+
const selectedChildren = children.filter((c) => selectedIds.includes(c.branchId ?? c.id));
|
|
80
80
|
// Validate all IDs exist (fail fast)
|
|
81
81
|
if (selectedChildren.length !== selectedIds.length) {
|
|
82
|
-
const childIds = children.map((c) =>
|
|
82
|
+
const childIds = children.map((c) => c.branchId ?? c.id);
|
|
83
83
|
const missing = selectedIds.filter((id) => !childIds.includes(id));
|
|
84
84
|
const errorMessage = `Scope-based selector '${node.name}' returned unknown child IDs: ${missing.join(', ')}. Available: ${childIds.join(', ')}`;
|
|
85
85
|
this.deps.logger.error(`Error in pipeline (${branchPath}):`, { error: errorMessage });
|
|
@@ -87,8 +87,8 @@ class SelectorHandler {
|
|
|
87
87
|
throw new Error(errorMessage);
|
|
88
88
|
}
|
|
89
89
|
const skippedIds = children
|
|
90
|
-
.filter((c) =>
|
|
91
|
-
.map((c) =>
|
|
90
|
+
.filter((c) => !selectedIds.includes(c.branchId ?? c.id))
|
|
91
|
+
.map((c) => c.branchId ?? c.id);
|
|
92
92
|
if (skippedIds.length > 0) {
|
|
93
93
|
context.addLog('skippedChildIds', skippedIds);
|
|
94
94
|
}
|
|
@@ -107,7 +107,7 @@ class SelectorHandler {
|
|
|
107
107
|
catch (error) {
|
|
108
108
|
// Stamp invoker context on PauseSignal during bubble-up.
|
|
109
109
|
if ((0, types_js_2.isPauseSignal)(error)) {
|
|
110
|
-
error.setInvoker(node.id,
|
|
110
|
+
error.setInvoker(node.id, node.next?.id);
|
|
111
111
|
throw error;
|
|
112
112
|
}
|
|
113
113
|
throw error;
|
|
@@ -115,4 +115,4 @@ class SelectorHandler {
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
exports.SelectorHandler = SelectorHandler;
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VsZWN0b3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvaGFuZGxlcnMvU2VsZWN0b3JIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOzs7QUFHSCxvREFBd0Q7QUFFeEQsbURBQXFEO0FBT3JELE1BQWEsZUFBZTtJQUMxQixZQUNtQixJQUErQixFQUMvQixnQkFBZ0Q7UUFEaEQsU0FBSSxHQUFKLElBQUksQ0FBMkI7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFnQztJQUNoRSxDQUFDO0lBRUo7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxnQkFBZ0IsQ0FDcEIsSUFBNkIsRUFDN0IsU0FBc0MsRUFDdEMsT0FBcUIsRUFDckIsU0FBbUMsRUFDbkMsVUFBOEIsRUFDOUIsUUFBa0MsRUFDbEMsV0FBd0MsRUFDeEMsYUFBNEMsRUFDNUMsWUFBMEMsRUFDMUMsZ0JBQW1DOztRQUVuQyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFckQsSUFBSSxXQUFxQixDQUFDO1FBQzFCLElBQUksaUJBQWdELENBQUM7UUFDckQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdEUsK0RBQStEO1lBQy9ELElBQ0UsV0FBVztnQkFDWCxPQUFPLFdBQVcsS0FBSyxRQUFRO2dCQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQXFCLEVBQUUsMEJBQWUsQ0FBQztnQkFDbkQsS0FBSyxDQUFDLE9BQU8sQ0FBRSxXQUFtQixDQUFDLFFBQVEsQ0FBQyxFQUM1QyxDQUFDO2dCQUNELFdBQVcsR0FBSSxXQUFtQixDQUFDLFFBQVEsQ0FBQztnQkFDNUMsaUJBQWlCLEdB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U0FDM0IsQ0FBQztRQUNGLElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQ3BELFFBQVEsRUFDUixPQUFPLEVBQ1AsU0FBUyxFQUNULFVBQVUsRUFDVixnQkFBZ0IsQ0FDakIsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQWMsRUFBRSxDQUFDO1lBQ3hCLHlEQUF5RDtZQUN6RCxJQUFJLElBQUEsd0JBQWEsRUFBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN6QixLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFHLEVBQUUsTUFBQSxJQUFJLENBQUMsSUFBSSwwQ0FBRSxFQUFFLENBQUMsQ0FBQztnQkFDMUMsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1lBQ0QsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBN0lELDBDQTZJQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2VsZWN0b3JIYW5kbGVyIOKAlCBNdWx0aS1jaG9pY2UgZmlsdGVyZWQgZmFuLW91dC5cbiAqXG4gKiBSZXNwb25zaWJpbGl0aWVzOlxuICogLSBFeGVjdXRlIHNjb3BlLWJhc2VkIHNlbGVjdG9yIG5vZGVzIChzdGFnZSDihpIgY29tbWl0IOKGkiByZXNvbHZlIGNoaWxkcmVuIOKGkiBwYXJhbGxlbCBleGVjdXRpb24pXG4gKiAtIFRoZSBzZWxlY3RvciBmdW5jdGlvbiBJUyBhIHN0YWdlOiByZWFkcyBzY29wZSwgcmV0dXJucyBzdHJpbmdbXSBvZiBicmFuY2ggSURzXG4gKiAtIERlbGVnYXRlcyBwYXJhbGxlbCBleGVjdXRpb24gb2Ygc2VsZWN0ZWQgY2hpbGRyZW4gdG8gQ2hpbGRyZW5FeGVjdXRvclxuICovXG5cbmltcG9ydCB0eXBlIHsgU2VsZWN0aW9uRXZpZGVuY2UgfSBmcm9tICcuLi8uLi9kZWNpZGUvdHlwZXMuanMnO1xuaW1wb3J0IHsgREVDSVNJT05fUkVTVUxUIH0gZnJvbSAnLi4vLi4vZGVjaWRlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgeyBpc1BhdXNlU2lnbmFsIH0gZnJvbSAnLi4vLi4vcGF1c2UvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFnZU5vZGUgfSBmcm9tICcuLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuaW1wb3J0IHR5cGUgeyBUcmF2ZXJzYWxDb250ZXh0IH0gZnJvbSAnLi4vbmFycmF0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgSGFuZGxlckRlcHMsIE5vZGVSZXN1bHRUeXBlLCBTdGFnZUZ1bmN0aW9uIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBDaGlsZHJlbkV4ZWN1dG9yIH0gZnJvbSAnLi9DaGlsZHJlbkV4ZWN1dG9yLmpzJztcbmltcG9ydCB0eXBlIHsgQ2FsbEV4dHJhY3RvckZuLCBFeGVjdXRlTm9kZUZuLCBHZXRTdGFnZVBhdGhGbiwgUnVuU3RhZ2VGbiB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgY2xhc3MgU2VsZWN0b3JIYW5kbGVyPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlcHM6IEhhbmRsZXJEZXBzPFRPdXQsIFRTY29wZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGlsZHJlbkV4ZWN1dG9yOiBDaGlsZHJlbkV4ZWN1dG9yPFRPdXQsIFRTY29wZT4sXG4gICkge31cblxuICAvKipcbiAgICogSGFuZGxlIGEgc2NvcGUtYmFzZWQgc2VsZWN0b3Igbm9kZSAoY3JlYXRlZCB2aWEgYWRkU2VsZWN0b3JGdW5jdGlvbikuXG4gICAqIFRoZSBzdGFnZSBmdW5jdGlvbiBJUyB0aGUgc2VsZWN0b3Ig4oCUIGl0cyByZXR1cm4gdmFsdWUgY29udGFpbnMgYnJhbmNoIElEcy5cbiAgICogRXhlY3V0aW9uIG9yZGVyOiBydW5TdGFnZShmbikg4oaSIGNvbW1pdCDihpIgcmVzb2x2ZSBjaGlsZHJlbiDihpIgcGFyYWxsZWwgZXhlY3V0ZS5cbiAgICovXG4gIGFzeW5jIGhhbmRsZVNjb3BlQmFzZWQoXG4gICAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4gICAgc3RhZ2VGdW5jOiBTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT4sXG4gICAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICAgIGJyZWFrRmxhZzogeyBzaG91bGRCcmVhazogYm9vbGVhbiB9LFxuICAgIGJyYW5jaFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBydW5TdGFnZTogUnVuU3RhZ2VGbjxUT3V0LCBUU2NvcGU+LFxuICAgIGV4ZWN1dGVOb2RlOiBFeGVjdXRlTm9kZUZuPFRPdXQsIFRTY29wZT4sXG4gICAgY2FsbEV4dHJhY3RvcjogQ2FsbEV4dHJhY3RvckZuPFRPdXQsIFRTY29wZT4sXG4gICAgZ2V0U3RhZ2VQYXRoOiBHZXRTdGFnZVBhdGhGbjxUT3V0LCBUU2NvcGU+LFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIE5vZGVSZXN1bHRUeXBlPj4ge1xuICAgIGNvbnN0IGJyZWFrRm4gPSAoKSA9PiAoYnJlYWtGbGFnLnNob3VsZEJyZWFrID0gdHJ1ZSk7XG5cbiAgICBsZXQgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdO1xuICAgIGxldCBzZWxlY3Rpb25FdmlkZW5jZTogU2VsZWN0aW9uRXZpZGVuY2UgfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YWdlT3V0cHV0ID0gYXdhaXQgcnVuU3RhZ2Uobm9kZSwgc3RhZ2VGdW5jLCBjb250ZXh0LCBicmVha0ZuKTtcbiAgICAgIC8vIERldGVjdCBTZWxlY3Rpb25SZXN1bHQgZnJvbSBzZWxlY3QoKSBoZWxwZXIgdmlhIFN5bWJvbCBicmFuZFxuICAgICAgaWYgKFxuICAgICAgICBzdGFnZU91dHB1dCAmJlxuICAgICAgICB0eXBlb2Ygc3RhZ2VPdXRwdXQgPT09ICdvYmplY3QnICYmXG4gICAgICAgIFJlZmxlY3QuaGFzKHN0YWdlT3V0cHV0IGFzIG9iamVjdCwgREVDSVNJT05fUkVTVUxUKSAmJlxuICAgICAgICBBcnJheS5pc0FycmF5KChzdGFnZU91dHB1dCBhcyBhbnkpLmJyYW5jaGVzKVxuICAgICAgKSB7XG4gICAgICAgIHNlbGVjdGVkSWRzID0gKHN0YWdlT3V0cHV0IGFzIGFueSkuYnJhbmNoZXM7XG4gICAgICAgIHNlbGVjdGlvbkV2aWRlbmNlID0gKHN0YWdlT3V0cHV0IGFzIGFueSkuZXZpZGVuY2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZElkcyA9IEFycmF5LmlzQXJyYXkoc3RhZ2VPdXRwdXQpID8gc3RhZ2VPdXRwdXQubWFwKFN0cmluZykgOiBbU3RyaW5nKHN0YWdlT3V0cHV0KV07XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgLy8gUGF1c2VTaWduYWwgaXMgZXhwZWN0ZWQgY29udHJvbCBmbG93IOKAlCBjb21taXQgYW5kIHJlLXRocm93IHdpdGhvdXQgZXJyb3IgbG9nZ2luZy5cbiAgICAgIGlmIChpc1BhdXNlU2lnbmFsKGVycm9yKSkge1xuICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICBjYWxsRXh0cmFjdG9yKG5vZGUsIGNvbnRleHQsIGdldFN0YWdlUGF0aChub2RlLCBicmFuY2hQYXRoLCBjb250ZXh0LnN0YWdlTmFtZSksIHVuZGVmaW5lZCwge1xuICAgICAgICB0eXBlOiAnc3RhZ2VFeGVjdXRpb25FcnJvcicsXG4gICAgICAgIG1lc3NhZ2U6IGVycm9yLnRvU3RyaW5nKCksXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGVwcy5sb2dnZXIuZXJyb3IoYEVycm9yIGluIHBpcGVsaW5lICgke2JyYW5jaFBhdGh9KSBzdGFnZSBbJHtub2RlLm5hbWV9XTpgLCB7IGVycm9yIH0pO1xuICAgICAgY29udGV4dC5hZGRFcnJvcignc3RhZ2VFeGVjdXRpb25FcnJvcicsIGVycm9yLnRvU3RyaW5nKCkpO1xuICAgICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vbkVycm9yKG5vZGUubmFtZSwgZXJyb3IudG9TdHJpbmcoKSwgZXJyb3IsIHRyYXZlcnNhbENvbnRleHQpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgY29udGV4dC5jb21taXQoKTtcbiAgICBjYWxsRXh0cmFjdG9yKG5vZGUsIGNvbnRleHQsIGdldFN0YWdlUGF0aChub2RlLCBicmFuY2hQYXRoLCBjb250ZXh0LnN0YWdlTmFtZSksIHNlbGVjdGVkSWRzKTtcblxuICAgIGlmIChicmVha0ZsYWcuc2hvdWxkQnJlYWspIHtcbiAgICAgIHRoaXMuZGVwcy5sb2dnZXIuaW5mbyhgRXhlY3V0aW9uIHN0b3BwZWQgaW4gcGlwZWxpbmUgKCR7YnJhbmNoUGF0aH0pIGFmdGVyICR7bm9kZS5uYW1lfSBkdWUgdG8gYnJlYWsgY29uZGl0aW9uLmApO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnRleHQuYWRkTG9nKCdzZWxlY3RlZENoaWxkSWRzJywgc2VsZWN0ZWRJZHMpO1xuICAgIGNvbnRleHQuYWRkTG9nKCdzZWxlY3RvclBhdHRlcm4nLCAnc2NvcGUtYmFzZWQtbXVsdGktY2hvaWNlJyk7XG5cbiAgICBpZiAoc2VsZWN0ZWRJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250ZXh0LmFkZExvZygnc2tpcHBlZEFsbENoaWxkcmVuJywgdHJ1ZSk7XG4gICAgICBjb250ZXh0LmFkZEZsb3dEZWJ1Z01lc3NhZ2UoJ3NlbGVjdGVkJywgJ05vIGNoaWxkcmVuIHNlbGVjdGVkIOKAlCBza2lwcGluZyBhbGwgYnJhbmNoZXMuJywge1xuICAgICAgICBjb3VudDogMCxcbiAgICAgICAgdGFyZ2V0U3RhZ2U6IFtdLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmRlcHMubmFycmF0aXZlR2VuZXJhdG9yLm9uU2VsZWN0ZWQobm9kZS5uYW1lLCBbXSwgKG5vZGUuY2hpbGRyZW4gPz8gW10pLmxlbmd0aCwgdHJhdmVyc2FsQ29udGV4dCk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgLy8gUmVzb2x2ZSBjaGlsZHJlbiBieSBtYXRjaGluZyBzZWxlY3RlZCBJRHMgYWdhaW5zdCBub2RlLmNoaWxkcmVuLlxuICAgIC8vIE1hdGNoIGJyYW5jaElkIGZpcnN0IChvcmlnaW5hbCB1bnByZWZpeGVkIElEKSwgZmFsbCBiYWNrIHRvIGlkIGZvciBiYWNrd2FyZCBjb21wYXQuXG4gICAgY29uc3QgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuIGFzIFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+W107XG4gICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbiA9IGNoaWxkcmVuLmZpbHRlcigoYykgPT4gc2VsZWN0ZWRJZHMuaW5jbHVkZXMoYy5icmFuY2hJZCA/PyBjLmlkISkpO1xuXG4gICAgLy8gVmFsaWRhdGUgYWxsIElEcyBleGlzdCAoZmFpbCBmYXN0KVxuICAgIGlmIChzZWxlY3RlZENoaWxkcmVuLmxlbmd0aCAhPT0gc2VsZWN0ZWRJZHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjaGlsZElkcyA9IGNoaWxkcmVuLm1hcCgoYykgPT4gYy5icmFuY2hJZCA/PyBjLmlkKTtcbiAgICAgIGNvbnN0IG1pc3NpbmcgPSBzZWxlY3RlZElkcy5maWx0ZXIoKGlkKSA9PiAhY2hpbGRJZHMuaW5jbHVkZXMoaWQpKTtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBTY29wZS1iYXNlZCBzZWxlY3RvciAnJHtub2RlLm5hbWV9JyByZXR1cm5lZCB1bmtub3duIGNoaWxkIElEczogJHttaXNzaW5nLmpvaW4oXG4gICAgICAgICcsICcsXG4gICAgICApfS4gQXZhaWxhYmxlOiAke2NoaWxkSWRzLmpvaW4oJywgJyl9YDtcbiAgICAgIHRoaXMuZGVwcy5sb2dnZXIuZXJyb3IoYEVycm9yIGluIHBpcGVsaW5lICgke2JyYW5jaFBhdGh9KTpgLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UgfSk7XG4gICAgICBjb250ZXh0LmFkZEVycm9yKCdzZWxlY3RvckVycm9yJywgZXJyb3JNZXNzYWdlKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGNvbnN0IHNraXBwZWRJZHMgPSBjaGlsZHJlblxuICAgICAgLmZpbHRlcigoYykgPT4gIXNlbGVjdGVkSWRzLmluY2x1ZGVzKGMuYnJhbmNoSWQgPz8gYy5pZCEpKVxuICAgICAgLm1hcCgoYykgPT4gYy5icmFuY2hJZCA/PyBjLmlkKTtcbiAgICBpZiAoc2tpcHBlZElkcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb250ZXh0LmFkZExvZygnc2tpcHBlZENoaWxkSWRzJywgc2tpcHBlZElkcyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWROYW1lcyA9IHNlbGVjdGVkQ2hpbGRyZW4ubWFwKChjKSA9PiBjLm5hbWUpLmpvaW4oJywgJyk7XG4gICAgY29udGV4dC5hZGRGbG93RGVidWdNZXNzYWdlKFxuICAgICAgJ3NlbGVjdGVkJyxcbiAgICAgIGBSdW5uaW5nICR7c2VsZWN0ZWROYW1lc30gKCR7c2VsZWN0ZWRDaGlsZHJlbi5sZW5ndGh9IG9mICR7Y2hpbGRyZW4ubGVuZ3RofSBtYXRjaGVkKWAsXG4gICAgICB7IGNvdW50OiBzZWxlY3RlZENoaWxkcmVuLmxlbmd0aCwgdGFyZ2V0U3RhZ2U6IHNlbGVjdGVkQ2hpbGRyZW4ubWFwKChjKSA9PiBjLm5hbWUpIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkRGlzcGxheU5hbWVzID0gc2VsZWN0ZWRDaGlsZHJlbi5tYXAoKGMpID0+IGMubmFtZSk7XG4gICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vblNlbGVjdGVkKFxuICAgICAgbm9kZS5uYW1lLFxuICAgICAgc2VsZWN0ZWREaXNwbGF5TmFtZXMsXG4gICAgICBjaGlsZHJlbi5sZW5ndGgsXG4gICAgICB0cmF2ZXJzYWxDb250ZXh0LFxuICAgICAgc2VsZWN0aW9uRXZpZGVuY2UsXG4gICAgKTtcblxuICAgIGNvbnN0IHRlbXBOb2RlOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPiA9IHtcbiAgICAgIG5hbWU6ICdzZWxlY3Rvci10ZW1wJyxcbiAgICAgIGlkOiAnc2VsZWN0b3ItdGVtcCcsXG4gICAgICBjaGlsZHJlbjogc2VsZWN0ZWRDaGlsZHJlbixcbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5jaGlsZHJlbkV4ZWN1dG9yLmV4ZWN1dGVOb2RlQ2hpbGRyZW4oXG4gICAgICAgIHRlbXBOb2RlLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGJyYW5jaFBhdGgsXG4gICAgICAgIHRyYXZlcnNhbENvbnRleHQsXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAvLyBTdGFtcCBpbnZva2VyIGNvbnRleHQgb24gUGF1c2VTaWduYWwgZHVyaW5nIGJ1YmJsZS11cC5cbiAgICAgIGlmIChpc1BhdXNlU2lnbmFsKGVycm9yKSkge1xuICAgICAgICBlcnJvci5zZXRJbnZva2VyKG5vZGUuaWQhLCBub2RlLm5leHQ/LmlkKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VsZWN0b3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvaGFuZGxlcnMvU2VsZWN0b3JIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOzs7QUFHSCxvREFBd0Q7QUFFeEQsbURBQXFEO0FBT3JELE1BQWEsZUFBZTtJQUVQO0lBQ0E7SUFGbkIsWUFDbUIsSUFBK0IsRUFDL0IsZ0JBQWdEO1FBRGhELFNBQUksR0FBSixJQUFJLENBQTJCO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBZ0M7SUFDaEUsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQ3BCLElBQTZCLEVBQzdCLFNBQXNDLEVBQ3RDLE9BQXFCLEVBQ3JCLFNBQW1DLEVBQ25DLFVBQThCLEVBQzlCLFFBQWtDLEVBQ2xDLFdBQXdDLEVBQ3hDLGFBQTRDLEVBQzVDLFlBQTBDLEVBQzFDLGdCQUFtQztRQUVuQyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFckQsSUFBSSxXQUFxQixDQUFDO1FBQzFCLElBQUksaUJBQWdELENBQUM7UUFDckQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdEUsK0RBQStEO1lBQy9ELElBQ0UsV0FBVztnQkFDWCxPQUFPLFdBQVcsS0FBSyxRQUFRO2dCQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQXFCLEVBQUUsMEJBQWUsQ0FBQztnQkFDbkQsS0FBSyxDQUFDLE9BQU8sQ0FBRSxXQUFtQixDQUFDLFFBQVEsQ0FBQyxFQUM1QyxDQUFDO2dCQUNELFdBQVcsR0FBSSxXQUFtQixDQUFDLFFBQVEsQ0FBQztnQkFDNUMs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REFBeUQ7WUFDekQsSUFBSSxJQUFBLHdCQUFhLEVBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzFDLE1BQU0sS0FBSyxDQUFDO1lBQ2QsQ0FBQztZQUNELE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTVJRCwwQ0E0SUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlbGVjdG9ySGFuZGxlciDigJQgTXVsdGktY2hvaWNlIGZpbHRlcmVkIGZhbi1vdXQuXG4gKlxuICogUmVzcG9uc2liaWxpdGllczpcbiAqIC0gRXhlY3V0ZSBzY29wZS1iYXNlZCBzZWxlY3RvciBub2RlcyAoc3RhZ2Ug4oaSIGNvbW1pdCDihpIgcmVzb2x2ZSBjaGlsZHJlbiDihpIgcGFyYWxsZWwgZXhlY3V0aW9uKVxuICogLSBUaGUgc2VsZWN0b3IgZnVuY3Rpb24gSVMgYSBzdGFnZTogcmVhZHMgc2NvcGUsIHJldHVybnMgc3RyaW5nW10gb2YgYnJhbmNoIElEc1xuICogLSBEZWxlZ2F0ZXMgcGFyYWxsZWwgZXhlY3V0aW9uIG9mIHNlbGVjdGVkIGNoaWxkcmVuIHRvIENoaWxkcmVuRXhlY3V0b3JcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFNlbGVjdGlvbkV2aWRlbmNlIH0gZnJvbSAnLi4vLi4vZGVjaWRlL3R5cGVzLmpzJztcbmltcG9ydCB7IERFQ0lTSU9OX1JFU1VMVCB9IGZyb20gJy4uLy4uL2RlY2lkZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4uLy4uL21lbW9yeS9TdGFnZUNvbnRleHQuanMnO1xuaW1wb3J0IHsgaXNQYXVzZVNpZ25hbCB9IGZyb20gJy4uLy4uL3BhdXNlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VOb2RlIH0gZnJvbSAnLi4vZ3JhcGgvU3RhZ2VOb2RlLmpzJztcbmltcG9ydCB0eXBlIHsgVHJhdmVyc2FsQ29udGV4dCB9IGZyb20gJy4uL25hcnJhdGl2ZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEhhbmRsZXJEZXBzLCBOb2RlUmVzdWx0VHlwZSwgU3RhZ2VGdW5jdGlvbiB9IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgQ2hpbGRyZW5FeGVjdXRvciB9IGZyb20gJy4vQ2hpbGRyZW5FeGVjdXRvci5qcyc7XG5pbXBvcnQgdHlwZSB7IENhbGxFeHRyYWN0b3JGbiwgRXhlY3V0ZU5vZGVGbiwgR2V0U3RhZ2VQYXRoRm4sIFJ1blN0YWdlRm4gfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGNsYXNzIFNlbGVjdG9ySGFuZGxlcjxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXBzOiBIYW5kbGVyRGVwczxUT3V0LCBUU2NvcGU+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hpbGRyZW5FeGVjdXRvcjogQ2hpbGRyZW5FeGVjdXRvcjxUT3V0LCBUU2NvcGU+LFxuICApIHt9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBhIHNjb3BlLWJhc2VkIHNlbGVjdG9yIG5vZGUgKGNyZWF0ZWQgdmlhIGFkZFNlbGVjdG9yRnVuY3Rpb24pLlxuICAgKiBUaGUgc3RhZ2UgZnVuY3Rpb24gSVMgdGhlIHNlbGVjdG9yIOKAlCBpdHMgcmV0dXJuIHZhbHVlIGNvbnRhaW5zIGJyYW5jaCBJRHMuXG4gICAqIEV4ZWN1dGlvbiBvcmRlcjogcnVuU3RhZ2UoZm4pIOKGkiBjb21taXQg4oaSIHJlc29sdmUgY2hpbGRyZW4g4oaSIHBhcmFsbGVsIGV4ZWN1dGUuXG4gICAqL1xuICBhc3luYyBoYW5kbGVTY29wZUJhc2VkKFxuICAgIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuICAgIHN0YWdlRnVuYzogU3RhZ2VGdW5jdGlvbjxUT3V0LCBUU2NvcGU+LFxuICAgIGNvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgICBicmVha0ZsYWc6IHsgc2hvdWxkQnJlYWs6IGJvb2xlYW4gfSxcbiAgICBicmFuY2hQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgcnVuU3RhZ2U6IFJ1blN0YWdlRm48VE91dCwgVFNjb3BlPixcbiAgICBleGVjdXRlTm9kZTogRXhlY3V0ZU5vZGVGbjxUT3V0LCBUU2NvcGU+LFxuICAgIGNhbGxFeHRyYWN0b3I6IENhbGxFeHRyYWN0b3JGbjxUT3V0LCBUU2NvcGU+LFxuICAgIGdldFN0YWdlUGF0aDogR2V0U3RhZ2VQYXRoRm48VE91dCwgVFNjb3BlPixcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBOb2RlUmVzdWx0VHlwZT4+IHtcbiAgICBjb25zdCBicmVha0ZuID0gKCkgPT4gKGJyZWFrRmxhZy5zaG91bGRCcmVhayA9IHRydWUpO1xuXG4gICAgbGV0IHNlbGVjdGVkSWRzOiBzdHJpbmdbXTtcbiAgICBsZXQgc2VsZWN0aW9uRXZpZGVuY2U6IFNlbGVjdGlvbkV2aWRlbmNlIHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGFnZU91dHB1dCA9IGF3YWl0IHJ1blN0YWdlKG5vZGUsIHN0YWdlRnVuYywgY29udGV4dCwgYnJlYWtGbik7XG4gICAgICAvLyBEZXRlY3QgU2VsZWN0aW9uUmVzdWx0IGZyb20gc2VsZWN0KCkgaGVscGVyIHZpYSBTeW1ib2wgYnJhbmRcbiAgICAgIGlmIChcbiAgICAgICAgc3RhZ2VPdXRwdXQgJiZcbiAgICAgICAgdHlwZW9mIHN0YWdlT3V0cHV0ID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBSZWZsZWN0LmhhcyhzdGFnZU91dHB1dCBhcyBvYmplY3QsIERFQ0lTSU9OX1JFU1VMVCkgJiZcbiAgICAgICAgQXJyYXkuaXNBcnJheSgoc3RhZ2VPdXRwdXQgYXMgYW55KS5icmFuY2hlcylcbiAgICAgICkge1xuICAgICAgICBzZWxlY3RlZElkcyA9IChzdGFnZU91dHB1dCBhcyBhbnkpLmJyYW5jaGVzO1xuICAgICAgICBzZWxlY3Rpb25FdmlkZW5jZSA9IChzdGFnZU91dHB1dCBhcyBhbnkpLmV2aWRlbmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRJZHMgPSBBcnJheS5pc0FycmF5KHN0YWdlT3V0cHV0KSA/IHN0YWdlT3V0cHV0Lm1hcChTdHJpbmcpIDogW1N0cmluZyhzdGFnZU91dHB1dCldO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIC8vIFBhdXNlU2lnbmFsIGlzIGV4cGVjdGVkIGNvbnRyb2wgZmxvdyDigJQgY29tbWl0IGFuZCByZS10aHJvdyB3aXRob3V0IGVycm9yIGxvZ2dpbmcuXG4gICAgICBpZiAoaXNQYXVzZVNpZ25hbChlcnJvcikpIHtcbiAgICAgICAgY29udGV4dC5jb21taXQoKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBjb250ZXh0LmNvbW1pdCgpO1xuICAgICAgY2FsbEV4dHJhY3Rvcihub2RlLCBjb250ZXh0LCBnZXRTdGFnZVBhdGgobm9kZSwgYnJhbmNoUGF0aCwgY29udGV4dC5zdGFnZU5hbWUpLCB1bmRlZmluZWQsIHtcbiAgICAgICAgdHlwZTogJ3N0YWdlRXhlY3V0aW9uRXJyb3InLFxuICAgICAgICBtZXNzYWdlOiBlcnJvci50b1N0cmluZygpLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmRlcHMubG9nZ2VyLmVycm9yKGBFcnJvciBpbiBwaXBlbGluZSAoJHticmFuY2hQYXRofSkgc3RhZ2UgWyR7bm9kZS5uYW1lfV06YCwgeyBlcnJvciB9KTtcbiAgICAgIGNvbnRleHQuYWRkRXJyb3IoJ3N0YWdlRXhlY3V0aW9uRXJyb3InLCBlcnJvci50b1N0cmluZygpKTtcbiAgICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25FcnJvcihub2RlLm5hbWUsIGVycm9yLnRvU3RyaW5nKCksIGVycm9yLCB0cmF2ZXJzYWxDb250ZXh0KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgY2FsbEV4dHJhY3Rvcihub2RlLCBjb250ZXh0LCBnZXRTdGFnZVBhdGgobm9kZSwgYnJhbmNoUGF0aCwgY29udGV4dC5zdGFnZU5hbWUpLCBzZWxlY3RlZElkcyk7XG5cbiAgICBpZiAoYnJlYWtGbGFnLnNob3VsZEJyZWFrKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29udGV4dC5hZGRMb2coJ3NlbGVjdGVkQ2hpbGRJZHMnLCBzZWxlY3RlZElkcyk7XG4gICAgY29udGV4dC5hZGRMb2coJ3NlbGVjdG9yUGF0dGVybicsICdzY29wZS1iYXNlZC1tdWx0aS1jaG9pY2UnKTtcblxuICAgIGlmIChzZWxlY3RlZElkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnRleHQuYWRkTG9nKCdza2lwcGVkQWxsQ2hpbGRyZW4nLCB0cnVlKTtcbiAgICAgIGNvbnRleHQuYWRkRmxvd0RlYnVnTWVzc2FnZSgnc2VsZWN0ZWQnLCAnTm8gY2hpbGRyZW4gc2VsZWN0ZWQg4oCUIHNraXBwaW5nIGFsbCBicmFuY2hlcy4nLCB7XG4gICAgICAgIGNvdW50OiAwLFxuICAgICAgICB0YXJnZXRTdGFnZTogW10sXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25TZWxlY3RlZChub2RlLm5hbWUsIFtdLCAobm9kZS5jaGlsZHJlbiA/PyBbXSkubGVuZ3RoLCB0cmF2ZXJzYWxDb250ZXh0KTtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvLyBSZXNvbHZlIGNoaWxkcmVuIGJ5IG1hdGNoaW5nIHNlbGVjdGVkIElEcyBhZ2FpbnN0IG5vZGUuY2hpbGRyZW4uXG4gICAgLy8gTWF0Y2ggYnJhbmNoSWQgZmlyc3QgKG9yaWdpbmFsIHVucHJlZml4ZWQgSUQpLCBmYWxsIGJhY2sgdG8gaWQgZm9yIGJhY2t3YXJkIGNvbXBhdC5cbiAgICBjb25zdCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4gYXMgU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT5bXTtcbiAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKChjKSA9PiBzZWxlY3RlZElkcy5pbmNsdWRlcyhjLmJyYW5jaElkID8/IGMuaWQhKSk7XG5cbiAgICAvLyBWYWxpZGF0ZSBhbGwgSURzIGV4aXN0IChmYWlsIGZhc3QpXG4gICAgaWYgKHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoICE9PSBzZWxlY3RlZElkcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNoaWxkSWRzID0gY2hpbGRyZW4ubWFwKChjKSA9PiBjLmJyYW5jaElkID8/IGMuaWQpO1xuICAgICAgY29uc3QgbWlzc2luZyA9IHNlbGVjdGVkSWRzLmZpbHRlcigoaWQpID0+ICFjaGlsZElkcy5pbmNsdWRlcyhpZCkpO1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYFNjb3BlLWJhc2VkIHNlbGVjdG9yICcke25vZGUubmFtZX0nIHJldHVybmVkIHVua25vd24gY2hpbGQgSURzOiAke21pc3Npbmcuam9pbihcbiAgICAgICAgJywgJyxcbiAgICAgICl9LiBBdmFpbGFibGU6ICR7Y2hpbGRJZHMuam9pbignLCAnKX1gO1xuICAgICAgdGhpcy5kZXBzLmxvZ2dlci5lcnJvcihgRXJyb3IgaW4gcGlwZWxpbmUgKCR7YnJhbmNoUGF0aH0pOmAsIHsgZXJyb3I6IGVycm9yTWVzc2FnZSB9KTtcbiAgICAgIGNvbnRleHQuYWRkRXJyb3IoJ3NlbGVjdG9yRXJyb3InLCBlcnJvck1lc3NhZ2UpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2tpcHBlZElkcyA9IGNoaWxkcmVuXG4gICAgICAuZmlsdGVyKChjKSA9PiAhc2VsZWN0ZWRJZHMuaW5jbHVkZXMoYy5icmFuY2hJZCA/PyBjLmlkISkpXG4gICAgICAubWFwKChjKSA9PiBjLmJyYW5jaElkID8/IGMuaWQpO1xuICAgIGlmIChza2lwcGVkSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnRleHQuYWRkTG9nKCdza2lwcGVkQ2hpbGRJZHMnLCBza2lwcGVkSWRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZE5hbWVzID0gc2VsZWN0ZWRDaGlsZHJlbi5tYXAoKGMpID0+IGMubmFtZSkuam9pbignLCAnKTtcbiAgICBjb250ZXh0LmFkZEZsb3dEZWJ1Z01lc3NhZ2UoXG4gICAgICAnc2VsZWN0ZWQnLFxuICAgICAgYFJ1bm5pbmcgJHtzZWxlY3RlZE5hbWVzfSAoJHtzZWxlY3RlZENoaWxkcmVuLmxlbmd0aH0gb2YgJHtjaGlsZHJlbi5sZW5ndGh9IG1hdGNoZWQpYCxcbiAgICAgIHsgY291bnQ6IHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoLCB0YXJnZXRTdGFnZTogc2VsZWN0ZWRDaGlsZHJlbi5tYXAoKGMpID0+IGMubmFtZSkgfSxcbiAgICApO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWREaXNwbGF5TmFtZXMgPSBzZWxlY3RlZENoaWxkcmVuLm1hcCgoYykgPT4gYy5uYW1lKTtcbiAgICB0aGlzLmRlcHMubmFycmF0aXZlR2VuZXJhdG9yLm9uU2VsZWN0ZWQoXG4gICAgICBub2RlLm5hbWUsXG4gICAgICBzZWxlY3RlZERpc3BsYXlOYW1lcyxcbiAgICAgIGNoaWxkcmVuLmxlbmd0aCxcbiAgICAgIHRyYXZlcnNhbENvbnRleHQsXG4gICAgICBzZWxlY3Rpb25FdmlkZW5jZSxcbiAgICApO1xuXG4gICAgY29uc3QgdGVtcE5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+ID0ge1xuICAgICAgbmFtZTogJ3NlbGVjdG9yLXRlbXAnLFxuICAgICAgaWQ6ICdzZWxlY3Rvci10ZW1wJyxcbiAgICAgIGNoaWxkcmVuOiBzZWxlY3RlZENoaWxkcmVuLFxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNoaWxkcmVuRXhlY3V0b3IuZXhlY3V0ZU5vZGVDaGlsZHJlbihcbiAgICAgICAgdGVtcE5vZGUsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgYnJhbmNoUGF0aCxcbiAgICAgICAgdHJhdmVyc2FsQ29udGV4dCxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIC8vIFN0YW1wIGludm9rZXIgY29udGV4dCBvbiBQYXVzZVNpZ25hbCBkdXJpbmcgYnViYmxlLXVwLlxuICAgICAgaWYgKGlzUGF1c2VTaWduYWwoZXJyb3IpKSB7XG4gICAgICAgIGVycm9yLnNldEludm9rZXIobm9kZS5pZCEsIG5vZGUubmV4dD8uaWQpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -14,11 +14,11 @@ const types_js_1 = require("../../pause/types.js");
|
|
|
14
14
|
const types_js_2 = require("../../reactive/types.js");
|
|
15
15
|
const createProtectedScope_js_1 = require("../../scope/protection/createProtectedScope.js");
|
|
16
16
|
class StageRunner {
|
|
17
|
+
deps;
|
|
17
18
|
constructor(deps) {
|
|
18
19
|
this.deps = deps;
|
|
19
20
|
}
|
|
20
21
|
async run(node, stageFunc, context, breakFn) {
|
|
21
|
-
var _a, _b, _c, _d, _e, _f;
|
|
22
22
|
// Create scope via ScopeFactory — each stage gets its own scope instance
|
|
23
23
|
const rawScope = this.deps.scopeFactory(context, node.name, this.deps.readOnlyContext, this.deps.executionEnv);
|
|
24
24
|
// Wrap scope with protection to intercept direct property assignments.
|
|
@@ -35,13 +35,12 @@ class StageRunner {
|
|
|
35
35
|
let streamCallback;
|
|
36
36
|
let accumulatedText = '';
|
|
37
37
|
if (node.isStreaming) {
|
|
38
|
-
const streamId =
|
|
38
|
+
const streamId = node.streamId ?? node.name;
|
|
39
39
|
streamCallback = (token) => {
|
|
40
|
-
var _a, _b;
|
|
41
40
|
accumulatedText += token;
|
|
42
|
-
|
|
41
|
+
this.deps.streamHandlers?.onToken?.(streamId, token);
|
|
43
42
|
};
|
|
44
|
-
|
|
43
|
+
this.deps.streamHandlers?.onStart?.(streamId);
|
|
45
44
|
}
|
|
46
45
|
// Inject breakPipeline into TypedScope via BREAK_SETTER (if the scope supports it)
|
|
47
46
|
if (rawScope && typeof rawScope[types_js_2.BREAK_SETTER] === 'function') {
|
|
@@ -73,8 +72,8 @@ class StageRunner {
|
|
|
73
72
|
}
|
|
74
73
|
// Call onEnd lifecycle hook for streaming stages
|
|
75
74
|
if (node.isStreaming) {
|
|
76
|
-
const streamId =
|
|
77
|
-
|
|
75
|
+
const streamId = node.streamId ?? node.name;
|
|
76
|
+
this.deps.streamHandlers?.onEnd?.(streamId, accumulatedText);
|
|
78
77
|
}
|
|
79
78
|
// ── Pause detection ──
|
|
80
79
|
// Pausable stages: any non-void return = pause with that data.
|
|
@@ -93,12 +92,11 @@ class StageRunner {
|
|
|
93
92
|
exports.StageRunner = StageRunner;
|
|
94
93
|
/** Race a promise against an AbortSignal. Rejects with the signal's reason on abort. */
|
|
95
94
|
function raceAbort(promise, signal) {
|
|
96
|
-
var _a;
|
|
97
95
|
if (signal.aborted) {
|
|
98
|
-
return Promise.reject(signal.reason instanceof Error ? signal.reason : new Error(
|
|
96
|
+
return Promise.reject(signal.reason instanceof Error ? signal.reason : new Error(signal.reason ?? 'Aborted'));
|
|
99
97
|
}
|
|
100
98
|
return new Promise((resolve, reject) => {
|
|
101
|
-
const onAbort = () =>
|
|
99
|
+
const onAbort = () => reject(signal.reason instanceof Error ? signal.reason : new Error(signal.reason ?? 'Aborted'));
|
|
102
100
|
signal.addEventListener('abort', onAbort, { once: true });
|
|
103
101
|
promise.then((val) => {
|
|
104
102
|
signal.removeEventListener('abort', onAbort);
|
|
@@ -109,4 +107,4 @@ function raceAbort(promise, signal) {
|
|
|
109
107
|
});
|
|
110
108
|
});
|
|
111
109
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhZ2VSdW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9oYW5kbGVycy9TdGFnZVJ1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7OztBQUdILG1EQUFrRTtBQUNsRSxzREFBdUU7QUFDdkUsNEZBQXNGO0FBSXRGLE1BQWEsV0FBVztJQUN0QixZQUE2QixJQUErQjtRQUEvQixTQUFJLEdBQUosSUFBSSxDQUEyQjtJQUFHLENBQUM7SUFFaEUsS0FBSyxDQUFDLEdBQUcsQ0FDUCxJQUE2QixFQUM3QixTQUFzQyxFQUN0QyxPQUFxQixFQUNyQixPQUFtQjs7UUFFbkIseUVBQXlFO1FBQ3pFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFL0csdUVBQXVFO1FBQ3ZFLDJFQUEyRTtRQUMzRSwrQkFBK0I7UUFDL0IsTUFBTSxZQUFZLEdBQUcsUUFBUSxJQUFLLFFBQWdCLENBQUMseUJBQWMsQ0FBQyxLQUFLLElBQUksQ0FBQztRQUM1RSxNQUFNLEtBQUssR0FBRyxZQUFZO1lBQ3hCLENBQUMsQ0FBQyxRQUFRO1lBQ1YsQ0FBQyxDQUFFLElBQUEsOENBQW9CLEVBQUMsUUFBa0IsRUFBRTtnQkFDeEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CO2dCQUNuQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDckIsQ0FBWSxDQUFDO1FBRWxCLHlEQUF5RDtRQUN6RCxJQUFJLGNBQTBDLENBQUM7UUFDL0MsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLE1BQU0s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aW5kaXZpZHVhbCBzdGFnZSBmdW5jdGlvbnMuXG4gKlxuICogUmVzcG9uc2liaWxpdGllczpcbiAqIC0gQ3JlYXRlIHNjb3BlIHZpYSBTY29wZUZhY3RvcnkgZm9yIGVhY2ggc3RhZ2VcbiAqIC0gQXBwbHkgc2NvcGUgcHJvdGVjdGlvbiAoY3JlYXRlUHJvdGVjdGVkU2NvcGUpIHRvIGludGVyY2VwdCBkaXJlY3QgYXNzaWdubWVudHNcbiAqIC0gSGFuZGxlIHN0cmVhbWluZyBzdGFnZXMgKG9uU3RhcnQsIG9uVG9rZW4sIG9uRW5kIGxpZmVjeWNsZSlcbiAqIC0gU3luYythc3luYyBzYWZldHk6IG9ubHkgYXdhaXQgcmVhbCBQcm9taXNlcyAoaW5zdGFuY2VvZiBjaGVjaylcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4uLy4uL21lbW9yeS9TdGFnZUNvbnRleHQuanMnO1xuaW1wb3J0IHsgaXNQYXVzZVJlc3VsdCwgUGF1c2VTaWduYWwgfSBmcm9tICcuLi8uLi9wYXVzZS90eXBlcy5qcyc7XG5pbXBvcnQgeyBCUkVBS19TRVRURVIsIElTX1RZUEVEX1NDT1BFIH0gZnJvbSAnLi4vLi4vcmVhY3RpdmUvdHlwZXMuanMnO1xuaW1wb3J0IHsgY3JlYXRlUHJvdGVjdGVkU2NvcGUgfSBmcm9tICcuLi8uLi9zY29wZS9wcm90ZWN0aW9uL2NyZWF0ZVByb3RlY3RlZFNjb3BlLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VOb2RlIH0gZnJvbSAnLi4vZ3JhcGgvU3RhZ2VOb2RlLmpzJztcbmltcG9ydCB0eXBlIHsgSGFuZGxlckRlcHMsIFN0YWdlRnVuY3Rpb24sIFN0cmVhbUNhbGxiYWNrIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgY2xhc3MgU3RhZ2VSdW5uZXI8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGVwczogSGFuZGxlckRlcHM8VE91dCwgVFNjb3BlPikge31cblxuICBhc3luYyBydW4oXG4gICAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4gICAgc3RhZ2VGdW5jOiBTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT4sXG4gICAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICAgIGJyZWFrRm46ICgpID0+IHZvaWQsXG4gICk6IFByb21pc2U8VE91dD4ge1xuICAgIC8vIENyZWF0ZSBzY29wZSB2aWEgU2NvcGVGYWN0b3J5IOKAlCBlYWNoIHN0YWdlIGdldHMgaXRzIG93biBzY29wZSBpbnN0YW5jZVxuICAgIGNvbnN0IHJhd1Njb3BlID0gdGhpcy5kZXBzLnNjb3BlRmFjdG9yeShjb250ZXh0LCBub2RlLm5hbWUsIHRoaXMuZGVwcy5yZWFkT25seUNvbnRleHQsIHRoaXMuZGVwcy5leGVjdXRpb25FbnYpO1xuXG4gICAgLy8gV3JhcCBzY29wZSB3aXRoIHByb3RlY3Rpb24gdG8gaW50ZXJjZXB0IGRpcmVjdCBwcm9wZXJ0eSBhc3NpZ25tZW50cy5cbiAgICAvLyBTa2lwIGZvciBUeXBlZFNjb3BlIOKAlCBpdCBhbHJlYWR5IGhhcyBpdHMgb3duIFByb3h5IHdpdGggcHJvcGVyIHNldCB0cmFwc1xuICAgIC8vIHRoYXQgZGVsZWdhdGUgdG8gc2V0VmFsdWUoKS5cbiAgICBjb25zdCBpc1R5cGVkU2NvcGUgPSByYXdTY29wZSAmJiAocmF3U2NvcGUgYXMgYW55KVtJU19UWVBFRF9TQ09QRV0gPT09IHRydWU7XG4gICAgY29uc3Qgc2NvcGUgPSBpc1R5cGVkU2NvcGVcbiAgICAgID8gcmF3U2NvcGVcbiAgICAgIDogKGNyZWF0ZVByb3RlY3RlZFNjb3BlKHJhd1Njb3BlIGFzIG9iamVjdCwge1xuICAgICAgICAgIG1vZGU6IHRoaXMuZGVwcy5zY29wZVByb3RlY3Rpb25Nb2RlLFxuICAgICAgICAgIHN0YWdlTmFtZTogbm9kZS5uYW1lLFxuICAgICAgICB9KSBhcyBUU2NvcGUpO1xuXG4gICAgLy8gU2V0IHVwIHN0cmVhbWluZyBjYWxsYmFjayBpZiB0aGlzIGlzIGEgc3RyZWFtaW5nIHN0YWdlXG4gICAgbGV0IHN0cmVhbUNhbGxiYWNrOiBTdHJlYW1DYWxsYmFjayB8IHVuZGVmaW5lZDtcbiAgICBsZXQgYWNjdW11bGF0ZWRUZXh0ID0gJyc7XG5cbiAgICBpZiAobm9kZS5pc1N0cmVhbWluZykge1xuICAgICAgY29uc3Qgc3RyZWFtSWQgPSBub2RlLnN0cmVhbUlkID8/IG5vZGUubmFtZTtcbiAgICAgIHN0cmVhbUNhbGxiYWNrID0gKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgYWNjdW11bGF0ZWRUZXh0ICs9IHRva2VuO1xuICAgICAgICB0aGlzLmRlcHMuc3RyZWFtSGFuZGxlcnM/Lm9uVG9rZW4/LihzdHJlYW1JZCwgdG9rZW4pO1xuICAgICAgfTtcbiAgICAgIHRoaXMuZGVwcy5zdHJlYW1IYW5kbGVycz8ub25TdGFydD8uKHN0cmVhbUlkKTtcbiAgICB9XG5cbiAgICAvLyBJbmplY3QgYnJlYWtQaXBlbGluZSBpbnRvIFR5cGVkU2NvcGUgdmlhIEJSRUFLX1NFVFRFUiAoaWYgdGhlIHNjb3BlIHN1cHBvcnRzIGl0KVxuICAgIGlmIChyYXdTY29wZSAmJiB0eXBlb2YgKHJhd1Njb3BlIGFzIGFueSlbQlJFQUtfU0VUVEVSXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgKHJhd1Njb3BlIGFzIGFueSlbQlJFQUtfU0VUVEVSXShicmVha0ZuKTtcbiAgICB9XG5cbiAgICAvLyBOb3RpZnkgcmVjb3JkZXJzIG9mIHN0YWdlIHN0YXJ0IChpZiBzY29wZSBzdXBwb3J0cyBpdClcbiAgICBpZiAocmF3U2NvcGUgJiYgdHlwZW9mIChyYXdTY29wZSBhcyBhbnkpLm5vdGlmeVN0YWdlU3RhcnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIChyYXdTY29wZSBhcyBhbnkpLm5vdGlmeVN0YWdlU3RhcnQoKTtcbiAgICB9XG5cbiAgICAvLyBFeGVjdXRlIHRoZSBzdGFnZSBmdW5jdGlvblxuICAgIGNvbnN0IG91dHB1dCA9IHN0YWdlRnVuYyhzY29wZSwgYnJlYWtGbiwgc3RyZWFtQ2FsbGJhY2spO1xuXG4gICAgLy8gU3luYythc3luYyBzYWZldHk6IG9ubHkgYXdhaXQgcmVhbCBQcm9taXNlcyB0byBhdm9pZCB0aGVuYWJsZSBhc3NpbWlsYXRpb25cbiAgICBsZXQgcmVzdWx0OiBUT3V0O1xuICAgIGlmIChvdXRwdXQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAvLyBSYWNlIGFnYWluc3QgQWJvcnRTaWduYWwgaWYgcHJvdmlkZWRcbiAgICAgIGlmICh0aGlzLmRlcHMuc2lnbmFsKSB7XG4gICAgICAgIHJlc3VsdCA9IChhd2FpdCByYWNlQWJvcnQob3V0cHV0LCB0aGlzLmRlcHMuc2lnbmFsKSkgYXMgVE91dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IChhd2FpdCBvdXRwdXQpIGFzIFRPdXQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IG91dHB1dCBhcyBUT3V0O1xuICAgIH1cblxuICAgIC8vIE5vdGlmeSByZWNvcmRlcnMgb2Ygc3RhZ2UgZW5kIChpZiBzY29wZSBzdXBwb3J0cyBpdClcbiAgICBpZiAocmF3U2NvcGUgJiYgdHlwZW9mIChyYXdTY29wZSBhcyBhbnkpLm5vdGlmeVN0YWdlRW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAocmF3U2NvcGUgYXMgYW55KS5ub3RpZnlTdGFnZUVuZCgpO1xuICAgIH1cblxuICAgIC8vIENhbGwgb25FbmQgbGlmZWN5Y2xlIGhvb2sgZm9yIHN0cmVhbWluZyBzdGFnZXNcbiAgICBpZiAobm9kZS5pc1N0cmVhbWluZykge1xuICAgICAgY29uc3Qgc3RyZWFtSWQgPSBub2RlLnN0cmVhbUlkID8/IG5vZGUubmFtZTtcbiAgICAgIHRoaXMuZGVwcy5zdHJlYW1IYW5kbGVycz8ub25FbmQ/LihzdHJlYW1JZCwgYWNjdW11bGF0ZWRUZXh0KTtcbiAgICB9XG5cbiAgICAvLyDilIDilIAgUGF1c2UgZGV0ZWN0aW9uIOKUgOKUgFxuICAgIC8vIFBhdXNhYmxlIHN0YWdlczogYW55IG5vbi12b2lkIHJldHVybiA9IHBhdXNlIHdpdGggdGhhdCBkYXRhLlxuICAgIC8vIEFsc28gc3VwcG9ydHMgZXhwbGljaXQgcGF1c2UoeyAuLi4gfSkgZm9yIGJhY2t3YXJkIGNvbXBhdC5cbiAgICBpZiAobm9kZS5pc1BhdXNhYmxlICYmIHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBwYXVzZURhdGEgPSBpc1BhdXNlUmVzdWx0KHJlc3VsdCkgPyAocmVzdWx0IGFzIGFueSkuZGF0YSA6IHJlc3VsdDtcbiAgICAgIC8vIE5vdGlmeSBzY29wZSByZWNvcmRlcnMgYmVmb3JlIHRocm93aW5nXG4gICAgICBpZiAocmF3U2NvcGUgJiYgdHlwZW9mIChyYXdTY29wZSBhcyBhbnkpLm5vdGlmeVBhdXNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIChyYXdTY29wZSBhcyBhbnkpLm5vdGlmeVBhdXNlKHBhdXNlRGF0YSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgUGF1c2VTaWduYWwocGF1c2VEYXRhLCBub2RlLmlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbi8qKiBSYWNlIGEgcHJvbWlzZSBhZ2FpbnN0IGFuIEFib3J0U2lnbmFsLiBSZWplY3RzIHdpdGggdGhlIHNpZ25hbCdzIHJlYXNvbiBvbiBhYm9ydC4gKi9cbmZ1bmN0aW9uIHJhY2VBYm9ydDxUPihwcm9taXNlOiBQcm9taXNlPFQ+LCBzaWduYWw6IEFib3J0U2lnbmFsKTogUHJvbWlzZTxUPiB7XG4gIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzaWduYWwucmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyBzaWduYWwucmVhc29uIDogbmV3IEVycm9yKHNpZ25hbC5yZWFzb24gPz8gJ0Fib3J0ZWQnKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBvbkFib3J0ID0gKCkgPT5cbiAgICAgIHJlamVjdChzaWduYWwucmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyBzaWduYWwucmVhc29uIDogbmV3IEVycm9yKHNpZ25hbC5yZWFzb24gPz8gJ0Fib3J0ZWQnKSk7XG4gICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuICAgIHByb21pc2UudGhlbihcbiAgICAgICh2YWwpID0+IHtcbiAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG4gICAgICAgIHJlc29sdmUodmFsKTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpO1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfSk7XG59XG4iXX0=
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhZ2VSdW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9oYW5kbGVycy9TdGFnZVJ1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7OztBQUdILG1EQUFrRTtBQUNsRSxzREFBdUU7QUFDdkUsNEZBQXNGO0FBSXRGLE1BQWEsV0FBVztJQUNPO0lBQTdCLFlBQTZCLElBQStCO1FBQS9CLFNBQUksR0FBSixJQUFJLENBQTJCO0lBQUcsQ0FBQztJQUVoRSxLQUFLLENBQUMsR0FBRyxDQUNQLElBQTZCLEVBQzdCLFNBQXNDLEVBQ3RDLE9BQXFCLEVBQ3JCLE9BQW1CO1FBRW5CLHlFQUF5RTtRQUN6RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRS9HLHVFQUF1RTtRQUN2RSwyRUFBMkU7UUFDM0UsK0JBQStCO1FBQy9CLE1BQU0sWUFBWSxHQUFHLFFBQVEsSUFBSyxRQUFnQixDQUFDLHlCQUFjLENBQUMsS0FBSyxJQUFJLENBQUM7UUFDNUUsTUFBTSxLQUFLLEdBQUcsWUFBWTtZQUN4QixDQUFDLENBQUMsUUFBUTtZQUNWLENBQUMsQ0FBRSxJQUFBLDhDQUFvQixFQUFDLFFBQWtCLEVBQUU7Z0JBQ3hDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtnQkFDbkMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ3JCLENBQVksQ0FBQztRQUVsQix5REFBeUQ7UUFDekQsSUFBSSxjQUEwQyxDQUFDO1FBQy9DLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUV6QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixN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T0FBTyxFQUFFLENBQUM7UUFDbkIsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUNELE9BQU8sSUFBSSxPQUFPLENBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDeEMsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQ25CLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUQsT0FBTyxDQUFDLElBQUksQ0FDVixDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ04sTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNOLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0YWdlUnVubmVyIOKAlCBFeGVjdXRlcyBpbmRpdmlkdWFsIHN0YWdlIGZ1bmN0aW9ucy5cbiAqXG4gKiBSZXNwb25zaWJpbGl0aWVzOlxuICogLSBDcmVhdGUgc2NvcGUgdmlhIFNjb3BlRmFjdG9yeSBmb3IgZWFjaCBzdGFnZVxuICogLSBBcHBseSBzY29wZSBwcm90ZWN0aW9uIChjcmVhdGVQcm90ZWN0ZWRTY29wZSkgdG8gaW50ZXJjZXB0IGRpcmVjdCBhc3NpZ25tZW50c1xuICogLSBIYW5kbGUgc3RyZWFtaW5nIHN0YWdlcyAob25TdGFydCwgb25Ub2tlbiwgb25FbmQgbGlmZWN5Y2xlKVxuICogLSBTeW5jK2FzeW5jIHNhZmV0eTogb25seSBhd2FpdCByZWFsIFByb21pc2VzIChpbnN0YW5jZW9mIGNoZWNrKVxuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgeyBpc1BhdXNlUmVzdWx0LCBQYXVzZVNpZ25hbCB9IGZyb20gJy4uLy4uL3BhdXNlL3R5cGVzLmpzJztcbmltcG9ydCB7IEJSRUFLX1NFVFRFUiwgSVNfVFlQRURfU0NPUEUgfSBmcm9tICcuLi8uLi9yZWFjdGl2ZS90eXBlcy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVQcm90ZWN0ZWRTY29wZSB9IGZyb20gJy4uLy4uL3Njb3BlL3Byb3RlY3Rpb24vY3JlYXRlUHJvdGVjdGVkU2NvcGUuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFnZU5vZGUgfSBmcm9tICcuLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuaW1wb3J0IHR5cGUgeyBIYW5kbGVyRGVwcywgU3RhZ2VGdW5jdGlvbiwgU3RyZWFtQ2FsbGJhY2sgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBTdGFnZVJ1bm5lcjxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkZXBzOiBIYW5kbGVyRGVwczxUT3V0LCBUU2NvcGU+KSB7fVxuXG4gIGFzeW5jIHJ1bihcbiAgICBub2RlOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPixcbiAgICBzdGFnZUZ1bmM6IFN0YWdlRnVuY3Rpb248VE91dCwgVFNjb3BlPixcbiAgICBjb250ZXh0OiBTdGFnZUNvbnRleHQsXG4gICAgYnJlYWtGbjogKCkgPT4gdm9pZCxcbiAgKTogUHJvbWlzZTxUT3V0PiB7XG4gICAgLy8gQ3JlYXRlIHNjb3BlIHZpYSBTY29wZUZhY3Rvcnkg4oCUIGVhY2ggc3RhZ2UgZ2V0cyBpdHMgb3duIHNjb3BlIGluc3RhbmNlXG4gICAgY29uc3QgcmF3U2NvcGUgPSB0aGlzLmRlcHMuc2NvcGVGYWN0b3J5KGNvbnRleHQsIG5vZGUubmFtZSwgdGhpcy5kZXBzLnJlYWRPbmx5Q29udGV4dCwgdGhpcy5kZXBzLmV4ZWN1dGlvbkVudik7XG5cbiAgICAvLyBXcmFwIHNjb3BlIHdpdGggcHJvdGVjdGlvbiB0byBpbnRlcmNlcHQgZGlyZWN0IHByb3BlcnR5IGFzc2lnbm1lbnRzLlxuICAgIC8vIFNraXAgZm9yIFR5cGVkU2NvcGUg4oCUIGl0IGFscmVhZHkgaGFzIGl0cyBvd24gUHJveHkgd2l0aCBwcm9wZXIgc2V0IHRyYXBzXG4gICAgLy8gdGhhdCBkZWxlZ2F0ZSB0byBzZXRWYWx1ZSgpLlxuICAgIGNvbnN0IGlzVHlwZWRTY29wZSA9IHJhd1Njb3BlICYmIChyYXdTY29wZSBhcyBhbnkpW0lTX1RZUEVEX1NDT1BFXSA9PT0gdHJ1ZTtcbiAgICBjb25zdCBzY29wZSA9IGlzVHlwZWRTY29wZVxuICAgICAgPyByYXdTY29wZVxuICAgICAgOiAoY3JlYXRlUHJvdGVjdGVkU2NvcGUocmF3U2NvcGUgYXMgb2JqZWN0LCB7XG4gICAgICAgICAgbW9kZTogdGhpcy5kZXBzLnNjb3BlUHJvdGVjdGlvbk1vZGUsXG4gICAgICAgICAgc3RhZ2VOYW1lOiBub2RlLm5hbWUsXG4gICAgICAgIH0pIGFzIFRTY29wZSk7XG5cbiAgICAvLyBTZXQgdXAgc3RyZWFtaW5nIGNhbGxiYWNrIGlmIHRoaXMgaXMgYSBzdHJlYW1pbmcgc3RhZ2VcbiAgICBsZXQgc3RyZWFtQ2FsbGJhY2s6IFN0cmVhbUNhbGxiYWNrIHwgdW5kZWZpbmVkO1xuICAgIGxldCBhY2N1bXVsYXRlZFRleHQgPSAnJztcblxuICAgIGlmIChub2RlLmlzU3RyZWFtaW5nKSB7XG4gICAgICBjb25zdCBzdHJlYW1JZCA9IG5vZGUuc3RyZWFtSWQgPz8gbm9kZS5uYW1lO1xuICAgICAgc3RyZWFtQ2FsbGJhY2sgPSAodG9rZW46IHN0cmluZykgPT4ge1xuICAgICAgICBhY2N1bXVsYXRlZFRleHQgKz0gdG9rZW47XG4gICAgICAgIHRoaXMuZGVwcy5zdHJlYW1IYW5kbGVycz8ub25Ub2tlbj8uKHN0cmVhbUlkLCB0b2tlbik7XG4gICAgICB9O1xuICAgICAgdGhpcy5kZXBzLnN0cmVhbUhhbmRsZXJzPy5vblN0YXJ0Py4oc3RyZWFtSWQpO1xuICAgIH1cblxuICAgIC8vIEluamVjdCBicmVha1BpcGVsaW5lIGludG8gVHlwZWRTY29wZSB2aWEgQlJFQUtfU0VUVEVSIChpZiB0aGUgc2NvcGUgc3VwcG9ydHMgaXQpXG4gICAgaWYgKHJhd1Njb3BlICYmIHR5cGVvZiAocmF3U2NvcGUgYXMgYW55KVtCUkVBS19TRVRURVJdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAocmF3U2NvcGUgYXMgYW55KVtCUkVBS19TRVRURVJdKGJyZWFrRm4pO1xuICAgIH1cblxuICAgIC8vIE5vdGlmeSByZWNvcmRlcnMgb2Ygc3RhZ2Ugc3RhcnQgKGlmIHNjb3BlIHN1cHBvcnRzIGl0KVxuICAgIGlmIChyYXdTY29wZSAmJiB0eXBlb2YgKHJhd1Njb3BlIGFzIGFueSkubm90aWZ5U3RhZ2VTdGFydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgKHJhd1Njb3BlIGFzIGFueSkubm90aWZ5U3RhZ2VTdGFydCgpO1xuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgdGhlIHN0YWdlIGZ1bmN0aW9uXG4gICAgY29uc3Qgb3V0cHV0ID0gc3RhZ2VGdW5jKHNjb3BlLCBicmVha0ZuLCBzdHJlYW1DYWxsYmFjayk7XG5cbiAgICAvLyBTeW5jK2FzeW5jIHNhZmV0eTogb25seSBhd2FpdCByZWFsIFByb21pc2VzIHRvIGF2b2lkIHRoZW5hYmxlIGFzc2ltaWxhdGlvblxuICAgIGxldCByZXN1bHQ6IFRPdXQ7XG4gICAgaWYgKG91dHB1dCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIC8vIFJhY2UgYWdhaW5zdCBBYm9ydFNpZ25hbCBpZiBwcm92aWRlZFxuICAgICAgaWYgKHRoaXMuZGVwcy5zaWduYWwpIHtcbiAgICAgICAgcmVzdWx0ID0gKGF3YWl0IHJhY2VBYm9ydChvdXRwdXQsIHRoaXMuZGVwcy5zaWduYWwpKSBhcyBUT3V0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gKGF3YWl0IG91dHB1dCkgYXMgVE91dDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gb3V0cHV0IGFzIFRPdXQ7XG4gICAgfVxuXG4gICAgLy8gTm90aWZ5IHJlY29yZGVycyBvZiBzdGFnZSBlbmQgKGlmIHNjb3BlIHN1cHBvcnRzIGl0KVxuICAgIGlmIChyYXdTY29wZSAmJiB0eXBlb2YgKHJhd1Njb3BlIGFzIGFueSkubm90aWZ5U3RhZ2VFbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIChyYXdTY29wZSBhcyBhbnkpLm5vdGlmeVN0YWdlRW5kKCk7XG4gICAgfVxuXG4gICAgLy8gQ2FsbCBvbkVuZCBsaWZlY3ljbGUgaG9vayBmb3Igc3RyZWFtaW5nIHN0YWdlc1xuICAgIGlmIChub2RlLmlzU3RyZWFtaW5nKSB7XG4gICAgICBjb25zdCBzdHJlYW1JZCA9IG5vZGUuc3RyZWFtSWQgPz8gbm9kZS5uYW1lO1xuICAgICAgdGhpcy5kZXBzLnN0cmVhbUhhbmRsZXJzPy5vbkVuZD8uKHN0cmVhbUlkLCBhY2N1bXVsYXRlZFRleHQpO1xuICAgIH1cblxuICAgIC8vIOKUgOKUgCBQYXVzZSBkZXRlY3Rpb24g4pSA4pSAXG4gICAgLy8gUGF1c2FibGUgc3RhZ2VzOiBhbnkgbm9uLXZvaWQgcmV0dXJuID0gcGF1c2Ugd2l0aCB0aGF0IGRhdGEuXG4gICAgLy8gQWxzbyBzdXBwb3J0cyBleHBsaWNpdCBwYXVzZSh7IC4uLiB9KSBmb3IgYmFja3dhcmQgY29tcGF0LlxuICAgIGlmIChub2RlLmlzUGF1c2FibGUgJiYgcmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHBhdXNlRGF0YSA9IGlzUGF1c2VSZXN1bHQocmVzdWx0KSA/IChyZXN1bHQgYXMgYW55KS5kYXRhIDogcmVzdWx0O1xuICAgICAgLy8gTm90aWZ5IHNjb3BlIHJlY29yZGVycyBiZWZvcmUgdGhyb3dpbmdcbiAgICAgIGlmIChyYXdTY29wZSAmJiB0eXBlb2YgKHJhd1Njb3BlIGFzIGFueSkubm90aWZ5UGF1c2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgKHJhd1Njb3BlIGFzIGFueSkubm90aWZ5UGF1c2UocGF1c2VEYXRhKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBQYXVzZVNpZ25hbChwYXVzZURhdGEsIG5vZGUuaWQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuLyoqIFJhY2UgYSBwcm9taXNlIGFnYWluc3QgYW4gQWJvcnRTaWduYWwuIFJlamVjdHMgd2l0aCB0aGUgc2lnbmFsJ3MgcmVhc29uIG9uIGFib3J0LiAqL1xuZnVuY3Rpb24gcmFjZUFib3J0PFQ+KHByb21pc2U6IFByb21pc2U8VD4sIHNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNlPFQ+IHtcbiAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHNpZ25hbC5yZWFzb24gaW5zdGFuY2VvZiBFcnJvciA/IHNpZ25hbC5yZWFzb24gOiBuZXcgRXJyb3Ioc2lnbmFsLnJlYXNvbiA/PyAnQWJvcnRlZCcpKTtcbiAgfVxuICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PlxuICAgICAgcmVqZWN0KHNpZ25hbC5yZWFzb24gaW5zdGFuY2VvZiBFcnJvciA/IHNpZ25hbC5yZWFzb24gOiBuZXcgRXJyb3Ioc2lnbmFsLnJlYXNvbiA/PyAnQWJvcnRlZCcpKTtcbiAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0LCB7IG9uY2U6IHRydWUgfSk7XG4gICAgcHJvbWlzZS50aGVuKFxuICAgICAgKHZhbCkgPT4ge1xuICAgICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcbiAgICAgICAgcmVzb2x2ZSh2YWwpO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfSxcbiAgICApO1xuICB9KTtcbn1cbiJdfQ==
|