footprintjs 10.0.1 → 10.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -1
- package/CLAUDE.md +61 -7
- package/README.md +136 -312
- package/dist/esm/index.d.ts +62 -2
- package/dist/esm/index.js +13 -6
- package/dist/esm/lib/attempt/anySignal.d.ts +19 -0
- package/dist/esm/lib/attempt/anySignal.js +39 -0
- package/dist/esm/lib/attempt/call.d.ts +88 -0
- package/dist/esm/lib/attempt/call.js +129 -0
- package/dist/esm/lib/attempt/category.d.ts +37 -0
- package/dist/esm/lib/attempt/category.js +131 -0
- package/dist/esm/lib/attempt/correlation.d.ts +95 -0
- package/dist/esm/lib/attempt/correlation.js +178 -0
- package/dist/esm/lib/attempt/deadline.d.ts +44 -0
- package/dist/esm/lib/attempt/deadline.js +101 -0
- package/dist/esm/lib/attempt/decision.d.ts +52 -0
- package/dist/esm/lib/attempt/decision.js +134 -0
- package/dist/esm/lib/attempt/effect.d.ts +76 -0
- package/dist/esm/lib/attempt/effect.js +160 -0
- package/dist/esm/lib/attempt/errors.d.ts +41 -0
- package/dist/esm/lib/attempt/errors.js +44 -0
- package/dist/esm/lib/attempt/index.d.ts +18 -0
- package/dist/esm/lib/attempt/index.js +15 -0
- package/dist/esm/lib/attempt/name.d.ts +21 -0
- package/dist/esm/lib/attempt/name.js +43 -0
- package/dist/esm/lib/attempt/observed.d.ts +66 -0
- package/dist/esm/lib/attempt/observed.js +171 -0
- package/dist/esm/lib/attempt/policy.d.ts +45 -0
- package/dist/esm/lib/attempt/policy.js +83 -0
- package/dist/esm/lib/attempt/record.d.ts +11 -0
- package/dist/esm/lib/attempt/record.js +24 -0
- package/dist/esm/lib/attempt/retryLoopContext.d.ts +18 -0
- package/dist/esm/lib/attempt/retryLoopContext.js +24 -0
- package/dist/esm/lib/attempt/retryLoopTypes.d.ts +18 -0
- package/dist/esm/lib/attempt/retryLoopTypes.js +2 -0
- package/dist/esm/lib/attempt/runner.d.ts +157 -0
- package/dist/esm/lib/attempt/runner.js +523 -0
- package/dist/esm/lib/attempt/standalone.d.ts +47 -0
- package/dist/esm/lib/attempt/standalone.js +126 -0
- package/dist/esm/lib/attempt/types.d.ts +453 -0
- package/dist/esm/lib/attempt/types.js +16 -0
- package/dist/esm/lib/budget/index.d.ts +9 -0
- package/dist/esm/lib/budget/index.js +9 -0
- package/dist/esm/lib/budget/timeBudget.d.ts +136 -0
- package/dist/esm/lib/budget/timeBudget.js +666 -0
- package/dist/esm/lib/builder/FlowChartBuilder.d.ts +88 -3
- package/dist/esm/lib/builder/FlowChartBuilder.js +199 -9
- package/dist/esm/lib/builder/retryLoop.d.ts +56 -0
- package/dist/esm/lib/builder/retryLoop.js +283 -0
- package/dist/esm/lib/builder/types.d.ts +35 -1
- package/dist/esm/lib/builder/types.js +1 -1
- package/dist/esm/lib/decide/decide.js +2 -2
- package/dist/esm/lib/decide/index.d.ts +1 -1
- package/dist/esm/lib/decide/index.js +2 -2
- package/dist/esm/lib/decide/types.d.ts +3 -0
- package/dist/esm/lib/decide/types.js +1 -8
- package/dist/esm/lib/engine/graph/StageNode.d.ts +11 -1
- package/dist/esm/lib/engine/graph/StageNode.js +1 -1
- package/dist/esm/lib/engine/graph/prefixNodeTree.js +5 -1
- package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +36 -6
- package/dist/esm/lib/engine/handlers/DeciderHandler.js +9 -5
- package/dist/esm/lib/engine/handlers/ResumeEntry.js +3 -1
- package/dist/esm/lib/engine/handlers/SelectorHandler.js +6 -5
- package/dist/esm/lib/engine/handlers/StageRunner.d.ts +8 -1
- package/dist/esm/lib/engine/handlers/StageRunner.js +36 -9
- package/dist/esm/lib/engine/handlers/SubflowExecutor.js +24 -5
- package/dist/esm/lib/engine/handlers/commitStage.d.ts +7 -0
- package/dist/esm/lib/engine/handlers/commitStage.js +22 -4
- package/dist/esm/lib/engine/handlers/stageError.d.ts +9 -0
- package/dist/esm/lib/engine/handlers/stageError.js +23 -1
- package/dist/esm/lib/engine/index.d.ts +2 -2
- package/dist/esm/lib/engine/index.js +1 -1
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +27 -13
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +68 -40
- package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.d.ts +4 -1
- package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +19 -2
- package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.d.ts +22 -3
- package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.js +61 -9
- package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +1 -0
- package/dist/esm/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +2 -1
- package/dist/esm/lib/engine/narrative/formatting/sentences.d.ts +23 -0
- package/dist/esm/lib/engine/narrative/formatting/sentences.js +127 -1
- package/dist/esm/lib/engine/narrative/index.d.ts +2 -2
- package/dist/esm/lib/engine/narrative/index.js +1 -1
- package/dist/esm/lib/engine/narrative/narrativeTypes.d.ts +27 -21
- package/dist/esm/lib/engine/narrative/narrativeTypes.js +1 -1
- package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.d.ts +45 -2
- package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.js +55 -2
- package/dist/esm/lib/engine/narrative/recorders/index.d.ts +1 -1
- package/dist/esm/lib/engine/narrative/recorders/index.js +1 -1
- package/dist/esm/lib/engine/narrative/types.d.ts +74 -5
- package/dist/esm/lib/engine/narrative/types.js +1 -1
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.d.ts +59 -19
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +194 -118
- package/dist/esm/lib/engine/traversalContext.d.ts +7 -2
- package/dist/esm/lib/engine/traversalContext.js +6 -3
- package/dist/esm/lib/engine/types.d.ts +52 -57
- package/dist/esm/lib/engine/types.js +1 -1
- package/dist/esm/lib/errors/terminalFailure.d.ts +29 -0
- package/dist/esm/lib/errors/terminalFailure.js +60 -0
- package/dist/esm/lib/{decide → filter}/evaluator.d.ts +7 -2
- package/dist/esm/lib/filter/evaluator.js +135 -0
- package/dist/esm/lib/ids/idempotencyKey.d.ts +14 -0
- package/dist/esm/lib/ids/idempotencyKey.js +24 -0
- package/dist/esm/lib/memory/StageContext.d.ts +123 -3
- package/dist/esm/lib/memory/StageContext.js +245 -4
- package/dist/esm/lib/memory/attention.d.ts +26 -0
- package/dist/esm/lib/memory/attention.js +171 -0
- package/dist/esm/lib/memory/borrowedMutation.d.ts +8 -0
- package/dist/esm/lib/memory/borrowedMutation.js +14 -1
- package/dist/esm/lib/memory/frameTypes.d.ts +38 -0
- package/dist/esm/lib/memory/frameTypes.js +3 -1
- package/dist/esm/lib/memory/redaction.d.ts +12 -0
- package/dist/esm/lib/memory/redaction.js +54 -5
- package/dist/esm/lib/pause/record.js +10 -1
- package/dist/esm/lib/pause/types.d.ts +19 -0
- package/dist/esm/lib/pause/types.js +17 -1
- package/dist/esm/lib/reactive/createTypedScope.js +3 -1
- package/dist/esm/lib/reactive/types.d.ts +36 -4
- package/dist/esm/lib/reactive/types.js +3 -1
- package/dist/esm/lib/recorder/AttemptRecorder.d.ts +141 -0
- package/dist/esm/lib/recorder/AttemptRecorder.js +412 -0
- package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +36 -2
- package/dist/esm/lib/recorder/ControlDepRecorder.js +50 -2
- package/dist/esm/lib/recorder/EmitRecorder.d.ts +3 -0
- package/dist/esm/lib/recorder/EmitRecorder.js +1 -1
- package/dist/esm/lib/recorder/InOutRecorder.d.ts +37 -1
- package/dist/esm/lib/recorder/InOutRecorder.js +75 -6
- package/dist/esm/lib/recorder/QualityRecorder.d.ts +32 -5
- package/dist/esm/lib/recorder/QualityRecorder.js +87 -29
- package/dist/esm/lib/recorder/TopologyRecorder.d.ts +35 -5
- package/dist/esm/lib/recorder/TopologyRecorder.js +76 -2
- package/dist/esm/lib/recorder/attemptMetricRows.d.ts +11 -0
- package/dist/esm/lib/recorder/attemptMetricRows.js +202 -0
- package/dist/esm/lib/recorder/attemptMetrics.d.ts +7 -0
- package/dist/esm/lib/recorder/attemptMetrics.js +165 -0
- package/dist/esm/lib/recorder/attemptMetricsTypes.d.ts +114 -0
- package/dist/esm/lib/recorder/attemptMetricsTypes.js +2 -0
- package/dist/esm/lib/recorder/attemptOTel.d.ts +78 -0
- package/dist/esm/lib/recorder/attemptOTel.js +107 -0
- package/dist/esm/lib/recorder/attemptSeries.d.ts +81 -0
- package/dist/esm/lib/recorder/attemptSeries.js +103 -0
- package/dist/esm/lib/recorder/hooks.d.ts +9 -0
- package/dist/esm/lib/recorder/hooks.js +4 -1
- package/dist/esm/lib/runner/DeferredObserverTier.js +13 -1
- package/dist/esm/lib/runner/ExecutionRuntime.d.ts +54 -6
- package/dist/esm/lib/runner/ExecutionRuntime.js +57 -5
- package/dist/esm/lib/runner/FlowChartExecutor.d.ts +46 -2
- package/dist/esm/lib/runner/FlowChartExecutor.js +330 -101
- package/dist/esm/lib/runner/RunnableChart.d.ts +6 -0
- package/dist/esm/lib/runner/RunnableChart.js +5 -1
- package/dist/esm/lib/runner/attach.d.ts +2 -1
- package/dist/esm/lib/runner/attach.js +8 -2
- package/dist/esm/lib/runner/checkpoint.js +3 -1
- package/dist/esm/lib/runner/deadline.d.ts +42 -0
- package/dist/esm/lib/runner/deadline.js +90 -0
- package/dist/esm/lib/runner/index.d.ts +3 -1
- package/dist/esm/lib/runner/index.js +2 -1
- package/dist/esm/lib/runner/options.d.ts +17 -0
- package/dist/esm/lib/runner/options.js +3 -1
- package/dist/esm/lib/runner/recordSink.d.ts +128 -0
- package/dist/esm/lib/runner/recordSink.js +296 -0
- package/dist/esm/lib/runner/resume.d.ts +3 -0
- package/dist/esm/lib/runner/resume.js +22 -2
- package/dist/esm/lib/runner/snapshot.d.ts +2 -2
- package/dist/esm/lib/runner/snapshot.js +6 -2
- package/dist/esm/lib/scope/ScopeFacade.d.ts +118 -4
- package/dist/esm/lib/scope/ScopeFacade.js +304 -7
- package/dist/esm/lib/scope/recorders/DebugRecorder.d.ts +17 -3
- package/dist/esm/lib/scope/recorders/DebugRecorder.js +79 -13
- package/dist/esm/lib/scope/recorders/MetricRecorder.d.ts +10 -0
- package/dist/esm/lib/scope/recorders/MetricRecorder.js +15 -2
- package/dist/esm/lib/scope/runtime.d.ts +3 -0
- package/dist/esm/lib/scope/runtime.js +1 -1
- package/dist/esm/lib/scope/types.d.ts +6 -0
- package/dist/esm/lib/scope/types.js +1 -1
- package/dist/esm/lib/sinks/fileSink.d.ts +135 -0
- package/dist/esm/lib/sinks/fileSink.js +387 -0
- package/dist/esm/recorders.d.ts +8 -2
- package/dist/esm/recorders.js +7 -1
- package/dist/esm/sinks.d.ts +23 -0
- package/dist/esm/sinks.js +23 -0
- package/dist/esm/trace.d.ts +2 -2
- package/dist/esm/trace.js +1 -1
- package/dist/index.js +77 -60
- package/dist/lib/attempt/anySignal.js +43 -0
- package/dist/lib/attempt/call.js +134 -0
- package/dist/lib/attempt/category.js +136 -0
- package/dist/lib/attempt/correlation.js +186 -0
- package/dist/lib/attempt/deadline.js +112 -0
- package/dist/lib/attempt/decision.js +139 -0
- package/dist/lib/attempt/effect.js +174 -0
- package/dist/lib/attempt/errors.js +49 -0
- package/dist/lib/attempt/index.js +26 -0
- package/dist/lib/attempt/name.js +48 -0
- package/dist/lib/attempt/observed.js +177 -0
- package/dist/lib/attempt/policy.js +92 -0
- package/dist/lib/attempt/record.js +29 -0
- package/dist/lib/attempt/retryLoopContext.js +31 -0
- package/dist/lib/attempt/retryLoopTypes.js +3 -0
- package/dist/lib/attempt/runner.js +530 -0
- package/dist/lib/attempt/standalone.js +130 -0
- package/dist/lib/attempt/types.js +17 -0
- package/dist/lib/budget/index.js +17 -0
- package/dist/lib/budget/timeBudget.js +674 -0
- package/dist/lib/builder/FlowChartBuilder.js +199 -9
- package/dist/lib/builder/retryLoop.js +287 -0
- package/dist/lib/builder/types.js +1 -1
- package/dist/lib/decide/decide.js +2 -2
- package/dist/lib/decide/index.js +2 -2
- package/dist/lib/decide/types.js +1 -8
- package/dist/lib/engine/graph/StageNode.js +1 -1
- package/dist/lib/engine/graph/prefixNodeTree.js +5 -1
- package/dist/lib/engine/handlers/ChildrenExecutor.js +36 -6
- package/dist/lib/engine/handlers/DeciderHandler.js +7 -3
- package/dist/lib/engine/handlers/ResumeEntry.js +3 -1
- package/dist/lib/engine/handlers/SelectorHandler.js +4 -3
- package/dist/lib/engine/handlers/StageRunner.js +36 -9
- package/dist/lib/engine/handlers/SubflowExecutor.js +24 -5
- package/dist/lib/engine/handlers/commitStage.js +24 -5
- package/dist/lib/engine/handlers/stageError.js +26 -2
- package/dist/lib/engine/index.js +1 -1
- package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +67 -39
- package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +19 -2
- package/dist/lib/engine/narrative/NarrativeFlowRecorder.js +60 -8
- package/dist/lib/engine/narrative/NullControlFlowNarrativeGenerator.js +2 -1
- package/dist/lib/engine/narrative/formatting/sentences.js +131 -2
- package/dist/lib/engine/narrative/index.js +1 -1
- package/dist/lib/engine/narrative/narrativeTypes.js +1 -1
- package/dist/lib/engine/narrative/recorders/ManifestFlowRecorder.js +55 -2
- package/dist/lib/engine/narrative/recorders/index.js +1 -1
- package/dist/lib/engine/narrative/types.js +1 -1
- package/dist/lib/engine/traversal/FlowchartTraverser.js +192 -116
- package/dist/lib/engine/traversalContext.js +6 -3
- package/dist/lib/engine/types.js +1 -1
- package/dist/lib/errors/terminalFailure.js +64 -0
- package/dist/lib/filter/evaluator.js +139 -0
- package/dist/lib/ids/idempotencyKey.js +28 -0
- package/dist/lib/memory/StageContext.js +246 -5
- package/dist/lib/memory/attention.js +175 -0
- package/dist/lib/memory/borrowedMutation.js +16 -2
- package/dist/lib/memory/frameTypes.js +3 -1
- package/dist/lib/memory/redaction.js +54 -5
- package/dist/lib/pause/record.js +10 -1
- package/dist/lib/pause/types.js +17 -1
- package/dist/lib/reactive/createTypedScope.js +3 -1
- package/dist/lib/reactive/types.js +3 -1
- package/dist/lib/recorder/AttemptRecorder.js +417 -0
- package/dist/lib/recorder/ControlDepRecorder.js +50 -2
- package/dist/lib/recorder/EmitRecorder.js +1 -1
- package/dist/lib/recorder/InOutRecorder.js +75 -6
- package/dist/lib/recorder/QualityRecorder.js +87 -29
- package/dist/lib/recorder/TopologyRecorder.js +76 -2
- package/dist/lib/recorder/attemptMetricRows.js +209 -0
- package/dist/lib/recorder/attemptMetrics.js +174 -0
- package/dist/lib/recorder/attemptMetricsTypes.js +3 -0
- package/dist/lib/recorder/attemptOTel.js +111 -0
- package/dist/lib/recorder/attemptSeries.js +113 -0
- package/dist/lib/recorder/hooks.js +4 -1
- package/dist/lib/runner/DeferredObserverTier.js +13 -1
- package/dist/lib/runner/ExecutionRuntime.js +57 -5
- package/dist/lib/runner/FlowChartExecutor.js +330 -101
- package/dist/lib/runner/RunnableChart.js +5 -1
- package/dist/lib/runner/attach.js +8 -2
- package/dist/lib/runner/checkpoint.js +3 -1
- package/dist/lib/runner/deadline.js +94 -0
- package/dist/lib/runner/index.js +4 -2
- package/dist/lib/runner/options.js +3 -1
- package/dist/lib/runner/recordSink.js +302 -0
- package/dist/lib/runner/resume.js +22 -2
- package/dist/lib/runner/snapshot.js +6 -2
- package/dist/lib/scope/ScopeFacade.js +303 -6
- package/dist/lib/scope/recorders/DebugRecorder.js +79 -13
- package/dist/lib/scope/recorders/MetricRecorder.js +15 -2
- package/dist/lib/scope/runtime.js +1 -1
- package/dist/lib/scope/types.js +1 -1
- package/dist/lib/sinks/fileSink.js +392 -0
- package/dist/recorders.js +10 -2
- package/dist/sinks.js +32 -0
- package/dist/trace.js +1 -1
- package/dist/types/index.d.ts +62 -2
- package/dist/types/lib/attempt/anySignal.d.ts +19 -0
- package/dist/types/lib/attempt/call.d.ts +88 -0
- package/dist/types/lib/attempt/category.d.ts +37 -0
- package/dist/types/lib/attempt/correlation.d.ts +95 -0
- package/dist/types/lib/attempt/deadline.d.ts +44 -0
- package/dist/types/lib/attempt/decision.d.ts +52 -0
- package/dist/types/lib/attempt/effect.d.ts +76 -0
- package/dist/types/lib/attempt/errors.d.ts +41 -0
- package/dist/types/lib/attempt/index.d.ts +18 -0
- package/dist/types/lib/attempt/name.d.ts +21 -0
- package/dist/types/lib/attempt/observed.d.ts +66 -0
- package/dist/types/lib/attempt/policy.d.ts +45 -0
- package/dist/types/lib/attempt/record.d.ts +11 -0
- package/dist/types/lib/attempt/retryLoopContext.d.ts +18 -0
- package/dist/types/lib/attempt/retryLoopTypes.d.ts +18 -0
- package/dist/types/lib/attempt/runner.d.ts +157 -0
- package/dist/types/lib/attempt/standalone.d.ts +47 -0
- package/dist/types/lib/attempt/types.d.ts +453 -0
- package/dist/types/lib/budget/index.d.ts +9 -0
- package/dist/types/lib/budget/timeBudget.d.ts +136 -0
- package/dist/types/lib/builder/FlowChartBuilder.d.ts +88 -3
- package/dist/types/lib/builder/retryLoop.d.ts +56 -0
- package/dist/types/lib/builder/types.d.ts +35 -1
- package/dist/types/lib/decide/index.d.ts +1 -1
- package/dist/types/lib/decide/types.d.ts +3 -0
- package/dist/types/lib/engine/graph/StageNode.d.ts +11 -1
- package/dist/types/lib/engine/handlers/StageRunner.d.ts +8 -1
- package/dist/types/lib/engine/handlers/commitStage.d.ts +7 -0
- package/dist/types/lib/engine/handlers/stageError.d.ts +9 -0
- package/dist/types/lib/engine/index.d.ts +2 -2
- package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +27 -13
- package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +4 -1
- package/dist/types/lib/engine/narrative/NarrativeFlowRecorder.d.ts +22 -3
- package/dist/types/lib/engine/narrative/NullControlFlowNarrativeGenerator.d.ts +1 -0
- package/dist/types/lib/engine/narrative/formatting/sentences.d.ts +23 -0
- package/dist/types/lib/engine/narrative/index.d.ts +2 -2
- package/dist/types/lib/engine/narrative/narrativeTypes.d.ts +27 -21
- package/dist/types/lib/engine/narrative/recorders/ManifestFlowRecorder.d.ts +45 -2
- package/dist/types/lib/engine/narrative/recorders/index.d.ts +1 -1
- package/dist/types/lib/engine/narrative/types.d.ts +74 -5
- package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +59 -19
- package/dist/types/lib/engine/traversalContext.d.ts +7 -2
- package/dist/types/lib/engine/types.d.ts +52 -57
- package/dist/types/lib/errors/terminalFailure.d.ts +29 -0
- package/dist/types/lib/{decide → filter}/evaluator.d.ts +7 -2
- package/dist/types/lib/ids/idempotencyKey.d.ts +14 -0
- package/dist/types/lib/memory/StageContext.d.ts +123 -3
- package/dist/types/lib/memory/attention.d.ts +26 -0
- package/dist/types/lib/memory/borrowedMutation.d.ts +8 -0
- package/dist/types/lib/memory/frameTypes.d.ts +38 -0
- package/dist/types/lib/memory/redaction.d.ts +12 -0
- package/dist/types/lib/pause/types.d.ts +19 -0
- package/dist/types/lib/reactive/types.d.ts +36 -4
- package/dist/types/lib/recorder/AttemptRecorder.d.ts +141 -0
- package/dist/types/lib/recorder/ControlDepRecorder.d.ts +36 -2
- package/dist/types/lib/recorder/EmitRecorder.d.ts +3 -0
- package/dist/types/lib/recorder/InOutRecorder.d.ts +37 -1
- package/dist/types/lib/recorder/QualityRecorder.d.ts +32 -5
- package/dist/types/lib/recorder/TopologyRecorder.d.ts +35 -5
- package/dist/types/lib/recorder/attemptMetricRows.d.ts +11 -0
- package/dist/types/lib/recorder/attemptMetrics.d.ts +7 -0
- package/dist/types/lib/recorder/attemptMetricsTypes.d.ts +114 -0
- package/dist/types/lib/recorder/attemptOTel.d.ts +78 -0
- package/dist/types/lib/recorder/attemptSeries.d.ts +81 -0
- package/dist/types/lib/recorder/hooks.d.ts +9 -0
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +54 -6
- package/dist/types/lib/runner/FlowChartExecutor.d.ts +46 -2
- package/dist/types/lib/runner/RunnableChart.d.ts +6 -0
- package/dist/types/lib/runner/attach.d.ts +2 -1
- package/dist/types/lib/runner/deadline.d.ts +42 -0
- package/dist/types/lib/runner/index.d.ts +3 -1
- package/dist/types/lib/runner/options.d.ts +17 -0
- package/dist/types/lib/runner/recordSink.d.ts +128 -0
- package/dist/types/lib/runner/resume.d.ts +3 -0
- package/dist/types/lib/runner/snapshot.d.ts +2 -2
- package/dist/types/lib/scope/ScopeFacade.d.ts +118 -4
- package/dist/types/lib/scope/recorders/DebugRecorder.d.ts +17 -3
- package/dist/types/lib/scope/recorders/MetricRecorder.d.ts +10 -0
- package/dist/types/lib/scope/runtime.d.ts +3 -0
- package/dist/types/lib/scope/types.d.ts +6 -0
- package/dist/types/lib/sinks/fileSink.d.ts +135 -0
- package/dist/types/recorders.d.ts +8 -2
- package/dist/types/sinks.d.ts +23 -0
- package/dist/types/trace.d.ts +2 -2
- package/package.json +20 -6
- package/dist/esm/lib/decide/evaluator.js +0 -130
- package/dist/lib/decide/evaluator.js +0 -134
|
@@ -1,14 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DebugRecorder — Development-focused recorder for detailed debugging
|
|
3
3
|
*
|
|
4
|
-
* Captures errors (always
|
|
5
|
-
*
|
|
4
|
+
* Captures errors (always — a scope recorder's own failure, the scope
|
|
5
|
+
* channel's `onError`; a stage's failure is not one), mutations and reads
|
|
6
|
+
* (in verbose mode), and stage lifecycle events for troubleshooting.
|
|
7
|
+
*
|
|
8
|
+
* Attempts (10.1): one `attempt` row per attempt of a series that retried,
|
|
9
|
+
* gave up or timed out (`recorder/attemptSeries.ts · isRetryEvidence`) — its
|
|
10
|
+
* outcome, category, duration, decision, the cap and time left it ran under
|
|
11
|
+
* (present with a cap or a deadline) and served error — and one `attemptStop`
|
|
12
|
+
* row when the series gave up (exhausted, declined, no time left). Both verbosities: like a
|
|
13
|
+
* pause, an attempt is significant — and for a retried stage these rows are
|
|
14
|
+
* the failure evidence (a stage's error is never an `error` row). They arrive on the FLOW channel
|
|
15
|
+
* (`onAttempt`), so attach with `attachCombinedRecorder` to see them; the
|
|
16
|
+
* flow channel's own `onError` / `onPause` / `onResume` are ignored, so a
|
|
17
|
+
* combined attach never doubles a scope row.
|
|
6
18
|
*/
|
|
19
|
+
import type { FlowAttemptEvent } from '../../engine/narrative/types.js';
|
|
7
20
|
import type { RecorderOperation } from '../../recorder/RecorderOperation.js';
|
|
8
21
|
import type { ErrorEvent, PauseEvent, ReadEvent, ResumeEvent, ScopeRecorder, StageEvent, WriteEvent } from '../types.js';
|
|
9
22
|
export type DebugVerbosity = 'minimal' | 'verbose';
|
|
10
23
|
export interface DebugEntry {
|
|
11
|
-
type: 'read' | 'write' | 'error' | 'stageStart' | 'stageEnd' | 'pause' | 'resume';
|
|
24
|
+
type: 'read' | 'write' | 'error' | 'stageStart' | 'stageEnd' | 'pause' | 'resume' | 'attempt' | 'attemptStop';
|
|
12
25
|
stageName: string;
|
|
13
26
|
timestamp: number;
|
|
14
27
|
data: unknown;
|
|
@@ -48,6 +61,7 @@ export declare class DebugRecorder implements ScopeRecorder {
|
|
|
48
61
|
onStageEnd(event: StageEvent): void;
|
|
49
62
|
onPause(event: PauseEvent): void;
|
|
50
63
|
onResume(event: ResumeEvent): void;
|
|
64
|
+
onAttempt(event: FlowAttemptEvent): void;
|
|
51
65
|
getEntries(): DebugEntry[];
|
|
52
66
|
getErrors(): DebugEntry[];
|
|
53
67
|
getEntriesForStage(stageName: string): DebugEntry[];
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DebugRecorder — Development-focused recorder for detailed debugging
|
|
3
3
|
*
|
|
4
|
-
* Captures errors (always
|
|
5
|
-
*
|
|
4
|
+
* Captures errors (always — a scope recorder's own failure, the scope
|
|
5
|
+
* channel's `onError`; a stage's failure is not one), mutations and reads
|
|
6
|
+
* (in verbose mode), and stage lifecycle events for troubleshooting.
|
|
7
|
+
*
|
|
8
|
+
* Attempts (10.1): one `attempt` row per attempt of a series that retried,
|
|
9
|
+
* gave up or timed out (`recorder/attemptSeries.ts · isRetryEvidence`) — its
|
|
10
|
+
* outcome, category, duration, decision, the cap and time left it ran under
|
|
11
|
+
* (present with a cap or a deadline) and served error — and one `attemptStop`
|
|
12
|
+
* row when the series gave up (exhausted, declined, no time left). Both verbosities: like a
|
|
13
|
+
* pause, an attempt is significant — and for a retried stage these rows are
|
|
14
|
+
* the failure evidence (a stage's error is never an `error` row). They arrive on the FLOW channel
|
|
15
|
+
* (`onAttempt`), so attach with `attachCombinedRecorder` to see them; the
|
|
16
|
+
* flow channel's own `onError` / `onPause` / `onResume` are ignored, so a
|
|
17
|
+
* combined attach never doubles a scope row.
|
|
6
18
|
*/
|
|
19
|
+
import { gaveUp, isRetryEvidence } from '../../recorder/attemptSeries.js';
|
|
7
20
|
/**
|
|
8
21
|
* Each instance gets a unique auto-increment ID (`debug-1`, `debug-2`, ...),
|
|
9
22
|
* so multiple recorders with different verbosity coexist.
|
|
@@ -51,16 +64,9 @@ export class DebugRecorder {
|
|
|
51
64
|
});
|
|
52
65
|
}
|
|
53
66
|
onError(event) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const { message, name, code, issues } = event.error;
|
|
58
|
-
const error = {
|
|
59
|
-
message,
|
|
60
|
-
...(name !== undefined && { name }),
|
|
61
|
-
...(code !== undefined && { code }),
|
|
62
|
-
...(issues !== undefined && { issues }),
|
|
63
|
-
};
|
|
67
|
+
if (fromFlowChannel(event))
|
|
68
|
+
return;
|
|
69
|
+
const error = debugError(event.error);
|
|
64
70
|
this.entries.push({
|
|
65
71
|
type: 'error',
|
|
66
72
|
stageName: event.stageName,
|
|
@@ -89,6 +95,8 @@ export class DebugRecorder {
|
|
|
89
95
|
});
|
|
90
96
|
}
|
|
91
97
|
onPause(event) {
|
|
98
|
+
if (fromFlowChannel(event))
|
|
99
|
+
return;
|
|
92
100
|
// Always log pauses (even in minimal mode — pauses are significant events)
|
|
93
101
|
this.entries.push({
|
|
94
102
|
type: 'pause',
|
|
@@ -98,6 +106,8 @@ export class DebugRecorder {
|
|
|
98
106
|
});
|
|
99
107
|
}
|
|
100
108
|
onResume(event) {
|
|
109
|
+
if (fromFlowChannel(event))
|
|
110
|
+
return;
|
|
101
111
|
// Always log resumes (even in minimal mode)
|
|
102
112
|
this.entries.push({
|
|
103
113
|
type: 'resume',
|
|
@@ -106,6 +116,44 @@ export class DebugRecorder {
|
|
|
106
116
|
data: { stageId: event.stageId, hasInput: event.hasInput, pipelineId: event.pipelineId },
|
|
107
117
|
});
|
|
108
118
|
}
|
|
119
|
+
onAttempt(event) {
|
|
120
|
+
const { record } = event;
|
|
121
|
+
if (!isRetryEvidence(record))
|
|
122
|
+
return;
|
|
123
|
+
const timestamp = record.startedAt + record.durationMs;
|
|
124
|
+
const name = { stageId: event.stageId, series: record.series, attempt: record.attempt, of: record.of };
|
|
125
|
+
this.entries.push({
|
|
126
|
+
type: 'attempt',
|
|
127
|
+
stageName: event.stageName,
|
|
128
|
+
timestamp,
|
|
129
|
+
data: {
|
|
130
|
+
...name,
|
|
131
|
+
outcome: record.outcome,
|
|
132
|
+
...(record.category !== undefined && { category: record.category }),
|
|
133
|
+
durationMs: record.durationMs,
|
|
134
|
+
next: record.next,
|
|
135
|
+
reason: record.reason,
|
|
136
|
+
...(record.retryOnThrew && { retryOnThrew: true }),
|
|
137
|
+
...(record.delayMs !== undefined && { delayMs: record.delayMs }),
|
|
138
|
+
...(record.timeoutMs !== undefined && { timeoutMs: record.timeoutMs }),
|
|
139
|
+
...(record.timeLeftMs !== undefined && { timeLeftMs: record.timeLeftMs }),
|
|
140
|
+
...(record.error !== undefined && { error: debugError(record.error) }),
|
|
141
|
+
},
|
|
142
|
+
});
|
|
143
|
+
if (!gaveUp(record))
|
|
144
|
+
return;
|
|
145
|
+
this.entries.push({
|
|
146
|
+
type: 'attemptStop',
|
|
147
|
+
stageName: event.stageName,
|
|
148
|
+
timestamp,
|
|
149
|
+
data: {
|
|
150
|
+
...name,
|
|
151
|
+
reason: record.reason,
|
|
152
|
+
...(record.category !== undefined && { category: record.category }),
|
|
153
|
+
...(record.retryOnThrew && { retryOnThrew: true }),
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
}
|
|
109
157
|
getEntries() {
|
|
110
158
|
return [...this.entries];
|
|
111
159
|
}
|
|
@@ -133,4 +181,22 @@ export class DebugRecorder {
|
|
|
133
181
|
};
|
|
134
182
|
}
|
|
135
183
|
}
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVidWdSZWNvcmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2NvcGUvcmVjb3JkZXJzL0RlYnVnUmVjb3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUE2Qkg7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUNoQixNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUVuQixFQUFFLENBQVM7SUFDWCxrQkFBa0IsQ0FBb0I7SUFDdkMsT0FBTyxHQUFpQixFQUFFLENBQUM7SUFDM0IsU0FBUyxDQUFpQjtJQUVsQyxZQUFZLE9BQThCO1FBQ3hDLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsSUFBSSxTQUFTLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLFNBQVMsSUFBSSxTQUFTLENBQUM7UUFDakQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxXQUFXLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFnQjtRQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUztZQUFFLE9BQU87UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsSUFBSSxFQUFFLE1BQU07WUFDWixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFO1NBQzNFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBaUI7UUFDdkIsSUFBSSxJ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QUM7SUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWJ1Z1JlY29yZGVyIOKAlCBEZXZlbG9wbWVudC1mb2N1c2VkIHJlY29yZGVyIGZvciBkZXRhaWxlZCBkZWJ1Z2dpbmdcbiAqXG4gKiBDYXB0dXJlcyBlcnJvcnMgKGFsd2F5cyksIG11dGF0aW9ucyBhbmQgcmVhZHMgKGluIHZlcmJvc2UgbW9kZSksXG4gKiBhbmQgc3RhZ2UgbGlmZWN5Y2xlIGV2ZW50cyBmb3IgdHJvdWJsZXNob290aW5nLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmVjb3JkZXJPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9yZWNvcmRlci9SZWNvcmRlck9wZXJhdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEVycm9yRXZlbnQsXG4gIFBhdXNlRXZlbnQsXG4gIFJlYWRFdmVudCxcbiAgUmVzdW1lRXZlbnQsXG4gIFNjb3BlUmVjb3JkZXIsXG4gIFN0YWdlRXZlbnQsXG4gIFdyaXRlRXZlbnQsXG59IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgRGVidWdWZXJib3NpdHkgPSAnbWluaW1hbCcgfCAndmVyYm9zZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVidWdFbnRyeSB7XG4gIHR5cGU6ICdyZWFkJyB8ICd3cml0ZScgfCAnZXJyb3InIHwgJ3N0YWdlU3RhcnQnIHwgJ3N0YWdlRW5kJyB8ICdwYXVzZScgfCAncmVzdW1lJztcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBkYXRhOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlYnVnUmVjb3JkZXJPcHRpb25zIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIHZlcmJvc2l0eT86IERlYnVnVmVyYm9zaXR5O1xuICAvKiogUHJlZmVycmVkIFVJIG9wZXJhdGlvbi4gRGVmYXVsdHMgdG8gJ3RyYW5zbGF0ZScgKHBlci1zdGVwIGRpYWdub3N0aWMgZGV0YWlsKS4gKi9cbiAgcHJlZmVycmVkT3BlcmF0aW9uPzogUmVjb3JkZXJPcGVyYXRpb247XG59XG5cbi8qKlxuICogRWFjaCBpbnN0YW5jZSBnZXRzIGEgdW5pcXVlIGF1dG8taW5jcmVtZW50IElEIChgZGVidWctMWAsIGBkZWJ1Zy0yYCwgLi4uKSxcbiAqIHNvIG11bHRpcGxlIHJlY29yZGVycyB3aXRoIGRpZmZlcmVudCB2ZXJib3NpdHkgY29leGlzdC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gVmVyYm9zZSBkZWJ1ZyBmb3IgZGV2ZWxvcG1lbnRcbiAqIGV4ZWN1dG9yLmF0dGFjaFNjb3BlUmVjb3JkZXIobmV3IERlYnVnUmVjb3JkZXIoeyB2ZXJib3NpdHk6ICd2ZXJib3NlJyB9KSk7XG4gKlxuICogLy8gTWluaW1hbCBkZWJ1ZyBmb3IgcHJvZHVjdGlvbiAoZXJyb3JzIG9ubHkpXG4gKiBleGVjdXRvci5hdHRhY2hTY29wZVJlY29yZGVyKG5ldyBEZWJ1Z1JlY29yZGVyKHsgdmVyYm9zaXR5OiAnbWluaW1hbCcgfSkpO1xuICpcbiAqIC8vIEJvdGggY29leGlzdCDigJQgZGlmZmVyZW50IGF1dG8gSURzXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIERlYnVnUmVjb3JkZXIgaW1wbGVtZW50cyBTY29wZVJlY29yZGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NvdW50ZXIgPSAwO1xuXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByZWZlcnJlZE9wZXJhdGlvbjogUmVjb3JkZXJPcGVyYXRpb247XG4gIHByaXZhdGUgZW50cmllczogRGVidWdFbnRyeVtdID0gW107XG4gIHByaXZhdGUgdmVyYm9zaXR5OiBEZWJ1Z1ZlcmJvc2l0eTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogRGVidWdSZWNvcmRlck9wdGlvbnMpIHtcbiAgICB0aGlzLmlkID0gb3B0aW9ucz8uaWQgPz8gYGRlYnVnLSR7KytEZWJ1Z1JlY29yZGVyLl9jb3VudGVyfWA7XG4gICAgdGhpcy52ZXJib3NpdHkgPSBvcHRpb25zPy52ZXJib3NpdHkgPz8gJ3ZlcmJvc2UnO1xuICAgIHRoaXMucHJlZmVycmVkT3BlcmF0aW9uID0gb3B0aW9ucz8ucHJlZmVycmVkT3BlcmF0aW9uID8/ICd0cmFuc2xhdGUnO1xuICB9XG5cbiAgb25SZWFkKGV2ZW50OiBSZWFkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52ZXJib3NpdHkgIT09ICd2ZXJib3NlJykgcmV0dXJuO1xuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdyZWFkJyxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7IGtleTogZXZlbnQua2V5LCB2YWx1ZTogZXZlbnQudmFsdWUsIHBpcGVsaW5lSWQ6IGV2ZW50LnBpcGVsaW5lSWQgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uV3JpdGUoZXZlbnQ6IFdyaXRlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52ZXJib3NpdHkgIT09ICd2ZXJib3NlJykgcmV0dXJuO1xuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICd3cml0ZScsXG4gICAgICBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgZGF0YTogeyBrZXk6IGV2ZW50LmtleSwgdmFsdWU6IGV2ZW50LnZhbHVlLCBvcGVyYXRpb246IGV2ZW50Lm9wZXJhdGlvbiwgcGlwZWxpbmVJZDogZXZlbnQucGlwZWxpbmVJZCB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25FcnJvcihldmVudDogRXJyb3JFdmVudCk6IHZvaWQge1xuICAgIC8vIFRoZSBzdHJ1Y3R1cmVkIGZpZWxkcyBvbmx5IOKAlCBuZXZlciBgcmF3YCAodGhlIHRocm93biB2YWx1ZSBpdHNlbGYsIHdoaWNoXG4gICAgLy8gbWF5IGJlIGEgZnVuY3Rpb24sIGEgUHJveHkgb3IgYSBjeWNsZSksIHNvIGEgc25hcHNob3Qgcm93IGFsd2F5c1xuICAgIC8vIHN1cnZpdmVzIGBzdHJ1Y3R1cmVkQ2xvbmVgICg5LjM5LjApLlxuICAgIGNvbnN0IHsgbWVzc2FnZSwgbmFtZSwgY29kZSwgaXNzdWVzIH0gPSBldmVudC5lcnJvcjtcbiAgICBjb25zdCBlcnJvciA9IHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICAuLi4obmFtZSAhPT0gdW5kZWZpbmVkICYmIHsgbmFtZSB9KSxcbiAgICAgIC4uLihjb2RlICE9PSB1bmRlZmluZWQgJiYgeyBjb2RlIH0pLFxuICAgICAgLi4uKGlzc3VlcyAhPT0gdW5kZWZpbmVkICYmIHsgaXNzdWVzIH0pLFxuICAgIH07XG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7IGVycm9yLCBvcGVyYXRpb246IGV2ZW50Lm9wZXJhdGlvbiwga2V5OiBldmVudC5rZXksIHBpcGVsaW5lSWQ6IGV2ZW50LnBpcGVsaW5lSWQgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uU3RhZ2VTdGFydChldmVudDogU3RhZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZlcmJvc2l0eSAhPT0gJ3ZlcmJvc2UnKSByZXR1cm47XG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ3N0YWdlU3RhcnQnLFxuICAgICAgc3RhZ2VOYW1lOiBldmVudC5zdGFnZU5hbWUsXG4gICAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCxcbiAgICAgIGRhdGE6IHsgcGlwZWxpbmVJZDogZXZlbnQucGlwZWxpbmVJZCB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25TdGFnZUVuZChldmVudDogU3RhZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZlcmJvc2l0eSAhPT0gJ3ZlcmJvc2UnKSByZXR1cm47XG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ3N0YWdlRW5kJyxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7IHBpcGVsaW5lSWQ6IGV2ZW50LnBpcGVsaW5lSWQsIGR1cmF0aW9uOiBldmVudC5kdXJhdGlvbiB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25QYXVzZShldmVudDogUGF1c2VFdmVudCk6IHZvaWQge1xuICAgIC8vIEFsd2F5cyBsb2cgcGF1c2VzIChldmVuIGluIG1pbmltYWwgbW9kZSDigJQgcGF1c2VzIGFyZSBzaWduaWZpY2FudCBldmVudHMpXG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ3BhdXNlJyxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7IHN0YWdlSWQ6IGV2ZW50LnN0YWdlSWQsIHBhdXNlRGF0YTogZXZlbnQucGF1c2VEYXRhLCBwaXBlbGluZUlkOiBldmVudC5waXBlbGluZUlkIH0sXG4gICAgfSk7XG4gIH1cblxuICBvblJlc3VtZShldmVudDogUmVzdW1lRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBBbHdheXMgbG9nIHJlc3VtZXMgKGV2ZW4gaW4gbWluaW1hbCBtb2RlKVxuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdyZXN1bWUnLFxuICAgICAgc3RhZ2VOYW1lOiBldmVudC5zdGFnZU5hbWUsXG4gICAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCxcbiAgICAgIGRhdGE6IHsgc3RhZ2VJZDogZXZlbnQuc3RhZ2VJZCwgaGFzSW5wdXQ6IGV2ZW50Lmhhc0lucHV0LCBwaXBlbGluZUlkOiBldmVudC5waXBlbGluZUlkIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRFbnRyaWVzKCk6IERlYnVnRW50cnlbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmVudHJpZXNdO1xuICB9XG5cbiAgZ2V0RXJyb3JzKCk6IERlYnVnRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZW50cmllcy5maWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ2Vycm9yJyk7XG4gIH1cblxuICBnZXRFbnRyaWVzRm9yU3RhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcpOiBEZWJ1Z0VudHJ5W10ge1xuICAgIHJldHVybiB0aGlzLmVudHJpZXMuZmlsdGVyKChlKSA9PiBlLnN0YWdlTmFtZSA9PT0gc3RhZ2VOYW1lKTtcbiAgfVxuXG4gIHNldFZlcmJvc2l0eShsZXZlbDogRGVidWdWZXJib3NpdHkpOiB2b2lkIHtcbiAgICB0aGlzLnZlcmJvc2l0eSA9IGxldmVsO1xuICB9XG5cbiAgZ2V0VmVyYm9zaXR5KCk6IERlYnVnVmVyYm9zaXR5IHtcbiAgICByZXR1cm4gdGhpcy52ZXJib3NpdHk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmVudHJpZXMgPSBbXTtcbiAgfVxuXG4gIHRvU25hcHNob3QoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdEZWJ1ZycsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RyYW5zbGF0b3IgKFNjb3BlIFNjb3BlUmVjb3JkZXIpIOKAlCBwZXItc3RhZ2UgZGlhZ25vc3RpYyBlbnRyaWVzJyxcbiAgICAgIHByZWZlcnJlZE9wZXJhdGlvbjogdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24sXG4gICAgICBkYXRhOiB0aGlzLmVudHJpZXMsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
184
|
+
/**
|
|
185
|
+
* The structured fields only — never `raw` (the thrown value itself, which may be a function, a Proxy or a cycle),
|
|
186
|
+
* so a snapshot row always survives `structuredClone` (9.39.0). An attempt's error is already the served form
|
|
187
|
+
* (`AttemptRecord.error`, the run's redaction rule applied), so a redacted stage error reads redacted here too.
|
|
188
|
+
*/
|
|
189
|
+
function debugError(info) {
|
|
190
|
+
const { message, name, code, issues } = info;
|
|
191
|
+
return {
|
|
192
|
+
message,
|
|
193
|
+
...(name !== undefined && { name }),
|
|
194
|
+
...(code !== undefined && { code }),
|
|
195
|
+
...(issues !== undefined && { issues }),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/** A shared-name hook (`onError` / `onPause` / `onResume`) delivered on the flow channel of a combined attach. */
|
|
199
|
+
function fromFlowChannel(event) {
|
|
200
|
+
return event.channel === 'flow';
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVidWdSZWNvcmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2NvcGUvcmVjb3JkZXJzL0RlYnVnUmVjb3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBSUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQTRCMUU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUNoQixNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUVuQixFQUFFLENBQVM7SUFDWCxrQkFBa0IsQ0FBb0I7SUFDdkMsT0FBTyxHQUFpQixFQUFFLENBQUM7SUFDM0IsU0FBUyxDQUFpQjtJQUVsQyxZQUFZLE9BQThCO1FBQ3hDLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsSUFBSSxTQUFTLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLFNBQVMsSUFBSSxTQUFTLENBQUM7UUFDakQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxXQUFXLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFnQjtRQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUztZQUFFLE9BQU87UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsSUFBSSxFQUFFLE1BQU07WUFDWixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFO1NBQzNFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBaUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2hCLElBQUksRUFBRSxPQUFPO1lBQ2IsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRTtTQUN2RyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU87UUFDbkMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixJQUFJLEVBQUUsT0FBTztZQUNiLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFO1NBQzFGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBaUI7UUFDNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2hCLElBQUksRUFBRSxZQUFZO1lBQ2xCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUU7U0FDdkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFpQjtRQUMxQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUztZQUFFLE9BQU87UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixJQUFJLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtTQUNqRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU87UUFDbkMsMkVBQTJFO1FBQzNFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2hCLElBQUksRUFBRSxPQUFPO1lBQ2IsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRTtTQUMzRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWtCO1FBQ3pCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU87UUFDbkMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2hCLElBQUksRUFBRSxRQUFRO1lBQ2QsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRTtTQUN6RixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXVCO1FBQy9CLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPO1FBQ3JDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsSUFBSSxFQUFFLFNBQVM7WUFDZixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsU0FBUztZQUNULElBQUksRUFBRTtnQkFDSixHQUFHLElBQUk7Z0JBQ1AsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO2dCQUN2QixHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuRSxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7Z0JBQzdCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2dCQUNyQixHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDbEQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDaEUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdEUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDekUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzthQUN2RTtTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTztRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixJQUFJLEVBQUUsYUFBYTtZQUNuQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsU0FBUztZQUNULElBQUksRUFBRTtnQkFDSixHQUFHLElBQUk7Z0JBQ1AsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2dCQUNyQixHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuRSxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUNuRDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsU0FBaUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXFCO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixXQUFXLEVBQUUsaUVBQWlFO1lBQzlFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ25CLENBQUM7SUFDSixDQUFDOztBQUdIOzs7O0dBSUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxJQUF5QztJQUMzRCxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQzdDLE9BQU87UUFDTCxPQUFPO1FBQ1AsR0FBRyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNuQyxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ25DLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7S0FDeEMsQ0FBQztBQUNKLENBQUM7QUFFRCxrSEFBa0g7QUFDbEgsU0FBUyxlQUFlLENBQUMsS0FBMkI7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWJ1Z1JlY29yZGVyIOKAlCBEZXZlbG9wbWVudC1mb2N1c2VkIHJlY29yZGVyIGZvciBkZXRhaWxlZCBkZWJ1Z2dpbmdcbiAqXG4gKiBDYXB0dXJlcyBlcnJvcnMgKGFsd2F5cyDigJQgYSBzY29wZSByZWNvcmRlcidzIG93biBmYWlsdXJlLCB0aGUgc2NvcGVcbiAqIGNoYW5uZWwncyBgb25FcnJvcmA7IGEgc3RhZ2UncyBmYWlsdXJlIGlzIG5vdCBvbmUpLCBtdXRhdGlvbnMgYW5kIHJlYWRzXG4gKiAoaW4gdmVyYm9zZSBtb2RlKSwgYW5kIHN0YWdlIGxpZmVjeWNsZSBldmVudHMgZm9yIHRyb3VibGVzaG9vdGluZy5cbiAqXG4gKiBBdHRlbXB0cyAoMTAuMSk6IG9uZSBgYXR0ZW1wdGAgcm93IHBlciBhdHRlbXB0IG9mIGEgc2VyaWVzIHRoYXQgcmV0cmllZCxcbiAqIGdhdmUgdXAgb3IgdGltZWQgb3V0IChgcmVjb3JkZXIvYXR0ZW1wdFNlcmllcy50cyDCtyBpc1JldHJ5RXZpZGVuY2VgKSDigJQgaXRzXG4gKiBvdXRjb21lLCBjYXRlZ29yeSwgZHVyYXRpb24sIGRlY2lzaW9uLCB0aGUgY2FwIGFuZCB0aW1lIGxlZnQgaXQgcmFuIHVuZGVyXG4gKiAocHJlc2VudCB3aXRoIGEgY2FwIG9yIGEgZGVhZGxpbmUpIGFuZCBzZXJ2ZWQgZXJyb3Ig4oCUIGFuZCBvbmUgYGF0dGVtcHRTdG9wYFxuICogcm93IHdoZW4gdGhlIHNlcmllcyBnYXZlIHVwIChleGhhdXN0ZWQsIGRlY2xpbmVkLCBubyB0aW1lIGxlZnQpLiBCb3RoIHZlcmJvc2l0aWVzOiBsaWtlIGFcbiAqIHBhdXNlLCBhbiBhdHRlbXB0IGlzIHNpZ25pZmljYW50IOKAlCBhbmQgZm9yIGEgcmV0cmllZCBzdGFnZSB0aGVzZSByb3dzIGFyZVxuICogdGhlIGZhaWx1cmUgZXZpZGVuY2UgKGEgc3RhZ2UncyBlcnJvciBpcyBuZXZlciBhbiBgZXJyb3JgIHJvdykuIFRoZXkgYXJyaXZlIG9uIHRoZSBGTE9XIGNoYW5uZWxcbiAqIChgb25BdHRlbXB0YCksIHNvIGF0dGFjaCB3aXRoIGBhdHRhY2hDb21iaW5lZFJlY29yZGVyYCB0byBzZWUgdGhlbTsgdGhlXG4gKiBmbG93IGNoYW5uZWwncyBvd24gYG9uRXJyb3JgIC8gYG9uUGF1c2VgIC8gYG9uUmVzdW1lYCBhcmUgaWdub3JlZCwgc28gYVxuICogY29tYmluZWQgYXR0YWNoIG5ldmVyIGRvdWJsZXMgYSBzY29wZSByb3cuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBdHRlbXB0UmVjb3JkIH0gZnJvbSAnLi4vLi4vYXR0ZW1wdC90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3dBdHRlbXB0RXZlbnQgfSBmcm9tICcuLi8uLi9lbmdpbmUvbmFycmF0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB7IGdhdmVVcCwgaXNSZXRyeUV2aWRlbmNlIH0gZnJvbSAnLi4vLi4vcmVjb3JkZXIvYXR0ZW1wdFNlcmllcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vcmVjb3JkZXIvUmVjb3JkZXJPcGVyYXRpb24uanMnO1xuaW1wb3J0IHR5cGUge1xuICBFcnJvckV2ZW50LFxuICBQYXVzZUV2ZW50LFxuICBSZWFkRXZlbnQsXG4gIFJlc3VtZUV2ZW50LFxuICBTY29wZVJlY29yZGVyLFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCB0eXBlIERlYnVnVmVyYm9zaXR5ID0gJ21pbmltYWwnIHwgJ3ZlcmJvc2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlYnVnRW50cnkge1xuICB0eXBlOiAncmVhZCcgfCAnd3JpdGUnIHwgJ2Vycm9yJyB8ICdzdGFnZVN0YXJ0JyB8ICdzdGFnZUVuZCcgfCAncGF1c2UnIHwgJ3Jlc3VtZScgfCAnYXR0ZW1wdCcgfCAnYXR0ZW1wdFN0b3AnO1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIGRhdGE6IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVidWdSZWNvcmRlck9wdGlvbnMge1xuICBpZD86IHN0cmluZztcbiAgdmVyYm9zaXR5PzogRGVidWdWZXJib3NpdHk7XG4gIC8qKiBQcmVmZXJyZWQgVUkgb3BlcmF0aW9uLiBEZWZhdWx0cyB0byAndHJhbnNsYXRlJyAocGVyLXN0ZXAgZGlhZ25vc3RpYyBkZXRhaWwpLiAqL1xuICBwcmVmZXJyZWRPcGVyYXRpb24/OiBSZWNvcmRlck9wZXJhdGlvbjtcbn1cblxuLyoqXG4gKiBFYWNoIGluc3RhbmNlIGdldHMgYSB1bmlxdWUgYXV0by1pbmNyZW1lbnQgSUQgKGBkZWJ1Zy0xYCwgYGRlYnVnLTJgLCAuLi4pLFxuICogc28gbXVsdGlwbGUgcmVjb3JkZXJzIHdpdGggZGlmZmVyZW50IHZlcmJvc2l0eSBjb2V4aXN0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBWZXJib3NlIGRlYnVnIGZvciBkZXZlbG9wbWVudFxuICogZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihuZXcgRGVidWdSZWNvcmRlcih7IHZlcmJvc2l0eTogJ3ZlcmJvc2UnIH0pKTtcbiAqXG4gKiAvLyBNaW5pbWFsIGRlYnVnIGZvciBwcm9kdWN0aW9uIChlcnJvcnMgb25seSlcbiAqIGV4ZWN1dG9yLmF0dGFjaFNjb3BlUmVjb3JkZXIobmV3IERlYnVnUmVjb3JkZXIoeyB2ZXJib3NpdHk6ICdtaW5pbWFsJyB9KSk7XG4gKlxuICogLy8gQm90aCBjb2V4aXN0IOKAlCBkaWZmZXJlbnQgYXV0byBJRHNcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgRGVidWdSZWNvcmRlciBpbXBsZW1lbnRzIFNjb3BlUmVjb3JkZXIge1xuICBwcml2YXRlIHN0YXRpYyBfY291bnRlciA9IDA7XG5cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJlZmVycmVkT3BlcmF0aW9uOiBSZWNvcmRlck9wZXJhdGlvbjtcbiAgcHJpdmF0ZSBlbnRyaWVzOiBEZWJ1Z0VudHJ5W10gPSBbXTtcbiAgcHJpdmF0ZSB2ZXJib3NpdHk6IERlYnVnVmVyYm9zaXR5O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBEZWJ1Z1JlY29yZGVyT3B0aW9ucykge1xuICAgIHRoaXMuaWQgPSBvcHRpb25zPy5pZCA/PyBgZGVidWctJHsrK0RlYnVnUmVjb3JkZXIuX2NvdW50ZXJ9YDtcbiAgICB0aGlzLnZlcmJvc2l0eSA9IG9wdGlvbnM/LnZlcmJvc2l0eSA/PyAndmVyYm9zZSc7XG4gICAgdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24gPSBvcHRpb25zPy5wcmVmZXJyZWRPcGVyYXRpb24gPz8gJ3RyYW5zbGF0ZSc7XG4gIH1cblxuICBvblJlYWQoZXZlbnQ6IFJlYWRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZlcmJvc2l0eSAhPT0gJ3ZlcmJvc2UnKSByZXR1cm47XG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ3JlYWQnLFxuICAgICAgc3RhZ2VOYW1lOiBldmVudC5zdGFnZU5hbWUsXG4gICAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCxcbiAgICAgIGRhdGE6IHsga2V5OiBldmVudC5rZXksIHZhbHVlOiBldmVudC52YWx1ZSwgcGlwZWxpbmVJZDogZXZlbnQucGlwZWxpbmVJZCB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25Xcml0ZShldmVudDogV3JpdGVFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZlcmJvc2l0eSAhPT0gJ3ZlcmJvc2UnKSByZXR1cm47XG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ3dyaXRlJyxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7IGtleTogZXZlbnQua2V5LCB2YWx1ZTogZXZlbnQudmFsdWUsIG9wZXJhdGlvbjogZXZlbnQub3BlcmF0aW9uLCBwaXBlbGluZUlkOiBldmVudC5waXBlbGluZUlkIH0sXG4gICAgfSk7XG4gIH1cblxuICBvbkVycm9yKGV2ZW50OiBFcnJvckV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGZyb21GbG93Q2hhbm5lbChldmVudCkpIHJldHVybjtcbiAgICBjb25zdCBlcnJvciA9IGRlYnVnRXJyb3IoZXZlbnQuZXJyb3IpO1xuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgZGF0YTogeyBlcnJvciwgb3BlcmF0aW9uOiBldmVudC5vcGVyYXRpb24sIGtleTogZXZlbnQua2V5LCBwaXBlbGluZUlkOiBldmVudC5waXBlbGluZUlkIH0sXG4gICAgfSk7XG4gIH1cblxuICBvblN0YWdlU3RhcnQoZXZlbnQ6IFN0YWdlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52ZXJib3NpdHkgIT09ICd2ZXJib3NlJykgcmV0dXJuO1xuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdzdGFnZVN0YXJ0JyxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7IHBpcGVsaW5lSWQ6IGV2ZW50LnBpcGVsaW5lSWQgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uU3RhZ2VFbmQoZXZlbnQ6IFN0YWdlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52ZXJib3NpdHkgIT09ICd2ZXJib3NlJykgcmV0dXJuO1xuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdzdGFnZUVuZCcsXG4gICAgICBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgZGF0YTogeyBwaXBlbGluZUlkOiBldmVudC5waXBlbGluZUlkLCBkdXJhdGlvbjogZXZlbnQuZHVyYXRpb24gfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uUGF1c2UoZXZlbnQ6IFBhdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZnJvbUZsb3dDaGFubmVsKGV2ZW50KSkgcmV0dXJuO1xuICAgIC8vIEFsd2F5cyBsb2cgcGF1c2VzIChldmVuIGluIG1pbmltYWwgbW9kZSDigJQgcGF1c2VzIGFyZSBzaWduaWZpY2FudCBldmVudHMpXG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ3BhdXNlJyxcbiAgICAgIHN0YWdlTmFtZTogZXZlbnQuc3RhZ2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBkYXRhOiB7IHN0YWdlSWQ6IGV2ZW50LnN0YWdlSWQsIHBhdXNlRGF0YTogZXZlbnQucGF1c2VEYXRhLCBwaXBlbGluZUlkOiBldmVudC5waXBlbGluZUlkIH0sXG4gICAgfSk7XG4gIH1cblxuICBvblJlc3VtZShldmVudDogUmVzdW1lRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZnJvbUZsb3dDaGFubmVsKGV2ZW50KSkgcmV0dXJuO1xuICAgIC8vIEFsd2F5cyBsb2cgcmVzdW1lcyAoZXZlbiBpbiBtaW5pbWFsIG1vZGUpXG4gICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgdHlwZTogJ3Jlc3VtZScsXG4gICAgICBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgZGF0YTogeyBzdGFnZUlkOiBldmVudC5zdGFnZUlkLCBoYXNJbnB1dDogZXZlbnQuaGFzSW5wdXQsIHBpcGVsaW5lSWQ6IGV2ZW50LnBpcGVsaW5lSWQgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uQXR0ZW1wdChldmVudDogRmxvd0F0dGVtcHRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHsgcmVjb3JkIH0gPSBldmVudDtcbiAgICBpZiAoIWlzUmV0cnlFdmlkZW5jZShyZWNvcmQpKSByZXR1cm47XG4gICAgY29uc3QgdGltZXN0YW1wID0gcmVjb3JkLnN0YXJ0ZWRBdCArIHJlY29yZC5kdXJhdGlvbk1zO1xuICAgIGNvbnN0IG5hbWUgPSB7IHN0YWdlSWQ6IGV2ZW50LnN0YWdlSWQsIHNlcmllczogcmVjb3JkLnNlcmllcywgYXR0ZW1wdDogcmVjb3JkLmF0dGVtcHQsIG9mOiByZWNvcmQub2YgfTtcbiAgICB0aGlzLmVudHJpZXMucHVzaCh7XG4gICAgICB0eXBlOiAnYXR0ZW1wdCcsXG4gICAgICBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSxcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgLi4ubmFtZSxcbiAgICAgICAgb3V0Y29tZTogcmVjb3JkLm91dGNvbWUsXG4gICAgICAgIC4uLihyZWNvcmQuY2F0ZWdvcnkgIT09IHVuZGVmaW5lZCAmJiB7IGNhdGVnb3J5OiByZWNvcmQuY2F0ZWdvcnkgfSksXG4gICAgICAgIGR1cmF0aW9uTXM6IHJlY29yZC5kdXJhdGlvbk1zLFxuICAgICAgICBuZXh0OiByZWNvcmQubmV4dCxcbiAgICAgICAgcmVhc29uOiByZWNvcmQucmVhc29uLFxuICAgICAgICAuLi4ocmVjb3JkLnJldHJ5T25UaHJldyAmJiB7IHJldHJ5T25UaHJldzogdHJ1ZSB9KSxcbiAgICAgICAgLi4uKHJlY29yZC5kZWxheU1zICE9PSB1bmRlZmluZWQgJiYgeyBkZWxheU1zOiByZWNvcmQuZGVsYXlNcyB9KSxcbiAgICAgICAgLi4uKHJlY29yZC50aW1lb3V0TXMgIT09IHVuZGVmaW5lZCAmJiB7IHRpbWVvdXRNczogcmVjb3JkLnRpbWVvdXRNcyB9KSxcbiAgICAgICAgLi4uKHJlY29yZC50aW1lTGVmdE1zICE9PSB1bmRlZmluZWQgJiYgeyB0aW1lTGVmdE1zOiByZWNvcmQudGltZUxlZnRNcyB9KSxcbiAgICAgICAgLi4uKHJlY29yZC5lcnJvciAhPT0gdW5kZWZpbmVkICYmIHsgZXJyb3I6IGRlYnVnRXJyb3IocmVjb3JkLmVycm9yKSB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgaWYgKCFnYXZlVXAocmVjb3JkKSkgcmV0dXJuO1xuICAgIHRoaXMuZW50cmllcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdhdHRlbXB0U3RvcCcsXG4gICAgICBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSxcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgLi4ubmFtZSxcbiAgICAgICAgcmVhc29uOiByZWNvcmQucmVhc29uLFxuICAgICAgICAuLi4ocmVjb3JkLmNhdGVnb3J5ICE9PSB1bmRlZmluZWQgJiYgeyBjYXRlZ29yeTogcmVjb3JkLmNhdGVnb3J5IH0pLFxuICAgICAgICAuLi4ocmVjb3JkLnJldHJ5T25UaHJldyAmJiB7IHJldHJ5T25UaHJldzogdHJ1ZSB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRFbnRyaWVzKCk6IERlYnVnRW50cnlbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmVudHJpZXNdO1xuICB9XG5cbiAgZ2V0RXJyb3JzKCk6IERlYnVnRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZW50cmllcy5maWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ2Vycm9yJyk7XG4gIH1cblxuICBnZXRFbnRyaWVzRm9yU3RhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcpOiBEZWJ1Z0VudHJ5W10ge1xuICAgIHJldHVybiB0aGlzLmVudHJpZXMuZmlsdGVyKChlKSA9PiBlLnN0YWdlTmFtZSA9PT0gc3RhZ2VOYW1lKTtcbiAgfVxuXG4gIHNldFZlcmJvc2l0eShsZXZlbDogRGVidWdWZXJib3NpdHkpOiB2b2lkIHtcbiAgICB0aGlzLnZlcmJvc2l0eSA9IGxldmVsO1xuICB9XG5cbiAgZ2V0VmVyYm9zaXR5KCk6IERlYnVnVmVyYm9zaXR5IHtcbiAgICByZXR1cm4gdGhpcy52ZXJib3NpdHk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmVudHJpZXMgPSBbXTtcbiAgfVxuXG4gIHRvU25hcHNob3QoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdEZWJ1ZycsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RyYW5zbGF0b3IgKFNjb3BlIFNjb3BlUmVjb3JkZXIpIOKAlCBwZXItc3RhZ2UgZGlhZ25vc3RpYyBlbnRyaWVzJyxcbiAgICAgIHByZWZlcnJlZE9wZXJhdGlvbjogdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24sXG4gICAgICBkYXRhOiB0aGlzLmVudHJpZXMsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzdHJ1Y3R1cmVkIGZpZWxkcyBvbmx5IOKAlCBuZXZlciBgcmF3YCAodGhlIHRocm93biB2YWx1ZSBpdHNlbGYsIHdoaWNoIG1heSBiZSBhIGZ1bmN0aW9uLCBhIFByb3h5IG9yIGEgY3ljbGUpLFxuICogc28gYSBzbmFwc2hvdCByb3cgYWx3YXlzIHN1cnZpdmVzIGBzdHJ1Y3R1cmVkQ2xvbmVgICg5LjM5LjApLiBBbiBhdHRlbXB0J3MgZXJyb3IgaXMgYWxyZWFkeSB0aGUgc2VydmVkIGZvcm1cbiAqIChgQXR0ZW1wdFJlY29yZC5lcnJvcmAsIHRoZSBydW4ncyByZWRhY3Rpb24gcnVsZSBhcHBsaWVkKSwgc28gYSByZWRhY3RlZCBzdGFnZSBlcnJvciByZWFkcyByZWRhY3RlZCBoZXJlIHRvby5cbiAqL1xuZnVuY3Rpb24gZGVidWdFcnJvcihpbmZvOiBOb25OdWxsYWJsZTxBdHRlbXB0UmVjb3JkWydlcnJvciddPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3QgeyBtZXNzYWdlLCBuYW1lLCBjb2RlLCBpc3N1ZXMgfSA9IGluZm87XG4gIHJldHVybiB7XG4gICAgbWVzc2FnZSxcbiAgICAuLi4obmFtZSAhPT0gdW5kZWZpbmVkICYmIHsgbmFtZSB9KSxcbiAgICAuLi4oY29kZSAhPT0gdW5kZWZpbmVkICYmIHsgY29kZSB9KSxcbiAgICAuLi4oaXNzdWVzICE9PSB1bmRlZmluZWQgJiYgeyBpc3N1ZXMgfSksXG4gIH07XG59XG5cbi8qKiBBIHNoYXJlZC1uYW1lIGhvb2sgKGBvbkVycm9yYCAvIGBvblBhdXNlYCAvIGBvblJlc3VtZWApIGRlbGl2ZXJlZCBvbiB0aGUgZmxvdyBjaGFubmVsIG9mIGEgY29tYmluZWQgYXR0YWNoLiAqL1xuZnVuY3Rpb24gZnJvbUZsb3dDaGFubmVsKGV2ZW50OiB7IGNoYW5uZWw/OiBzdHJpbmcgfSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXZlbnQuY2hhbm5lbCA9PT0gJ2Zsb3cnO1xufVxuIl19
|
|
@@ -6,6 +6,14 @@
|
|
|
6
6
|
* (Convention 1 — one purpose per recorder: this is the ScopeRecorder; the store
|
|
7
7
|
* is the storage).
|
|
8
8
|
*
|
|
9
|
+
* Attempts (10.1): a stage with a retry policy runs each attempt in a fresh
|
|
10
|
+
* scope, so this recorder sees one `onStageStart` per attempt. `attempts` is
|
|
11
|
+
* that count, present when it is 2 or more; `duration` spans the whole
|
|
12
|
+
* execution — from the FIRST attempt's start, waits included — never just the
|
|
13
|
+
* attempt that succeeded. An execution that never returned (it gave up) has
|
|
14
|
+
* no `onStageEnd`, so its duration stays `0`, as for any failed stage. A stage
|
|
15
|
+
* that ran once reads exactly as before.
|
|
16
|
+
*
|
|
9
17
|
* @example
|
|
10
18
|
* ```typescript
|
|
11
19
|
* const metric = new MetricRecorder();
|
|
@@ -38,6 +46,8 @@ export interface StepMetrics {
|
|
|
38
46
|
pauseCount: number;
|
|
39
47
|
/** Duration in ms for this invocation. */
|
|
40
48
|
duration: number;
|
|
49
|
+
/** How many attempts the execution made (its `onStageStart` count) — present only when it retried (≥ 2). */
|
|
50
|
+
attempts?: number;
|
|
41
51
|
}
|
|
42
52
|
/** Aggregated metrics across all invocations (backward compatible). */
|
|
43
53
|
export interface AggregatedMetrics {
|
|
@@ -6,6 +6,14 @@
|
|
|
6
6
|
* (Convention 1 — one purpose per recorder: this is the ScopeRecorder; the store
|
|
7
7
|
* is the storage).
|
|
8
8
|
*
|
|
9
|
+
* Attempts (10.1): a stage with a retry policy runs each attempt in a fresh
|
|
10
|
+
* scope, so this recorder sees one `onStageStart` per attempt. `attempts` is
|
|
11
|
+
* that count, present when it is 2 or more; `duration` spans the whole
|
|
12
|
+
* execution — from the FIRST attempt's start, waits included — never just the
|
|
13
|
+
* attempt that succeeded. An execution that never returned (it gave up) has
|
|
14
|
+
* no `onStageEnd`, so its duration stays `0`, as for any failed stage. A stage
|
|
15
|
+
* that ran once reads exactly as before.
|
|
16
|
+
*
|
|
9
17
|
* @example
|
|
10
18
|
* ```typescript
|
|
11
19
|
* const metric = new MetricRecorder();
|
|
@@ -83,9 +91,14 @@ export class MetricRecorder {
|
|
|
83
91
|
onStageStart(event) {
|
|
84
92
|
if (!this.shouldRecord(event.stageName))
|
|
85
93
|
return;
|
|
86
|
-
this.stageStartTimes.set(event.runtimeStageId, event.timestamp);
|
|
87
94
|
const m = this.forEvent(event);
|
|
88
95
|
m.stageName = event.stageName;
|
|
96
|
+
if (this.stageStartTimes.has(event.runtimeStageId)) {
|
|
97
|
+
// Another attempt of the same execution: count it, keep the first start (the duration spans them all).
|
|
98
|
+
m.attempts = (m.attempts ?? 1) + 1;
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
this.stageStartTimes.set(event.runtimeStageId, event.timestamp);
|
|
89
102
|
}
|
|
90
103
|
onRead(event) {
|
|
91
104
|
if (!this.shouldRecord(event.stageName))
|
|
@@ -192,4 +205,4 @@ export class MetricRecorder {
|
|
|
192
205
|
this.clear();
|
|
193
206
|
}
|
|
194
207
|
}
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0cmljUmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3JlY29yZGVycy9NZXRyaWNSZWNvcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUE0RDFELE1BQU0sT0FBTyxjQUFjO0lBQ2pCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLEVBQUUsQ0FBUztJQUNYLGtCQUFrQixDQUFvQjtJQUMvQyxxRUFBcUU7SUFDcEQsS0FBSyxHQUFHLElBQUksVUFBVSxFQUFlLENBQUM7SUFDL0MsZUFBZSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQzVDLFdBQVcsQ0FBa0M7SUFFckQsWUFBWSxXQUE0QztRQUN0RCxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUM7UUFDeEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBRSxFQUFFLElBQUksV0FBVyxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsRUFBRSxXQUFXLENBQUM7WUFDNUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsRUFBRSxrQkFBa0IsSUFBSSxXQUFXLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsU0FBaUI7UUFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsaUZBQWlGO0lBQ3pF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VTtnQkFDOUIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO2dCQUNwQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7Z0JBQzlCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztnQkFDaEMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2dCQUNsQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7Z0JBQ2hDLEtBQUs7YUFDTjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsOERBQThEO0lBQzlELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWV0cmljUmVjb3JkZXIg4oCUIHBlci1zdGVwIHRpbWluZyBhbmQgZXhlY3V0aW9uIGNvdW50cywga2V5ZWQgYnkgcnVudGltZVN0YWdlSWQuXG4gKlxuICogU3RvcmVzIHBlci1pbnZvY2F0aW9uIGRhdGEgZHVyaW5nIHRyYXZlcnNhbC4gQWdncmVnYXRlZCB2aWV3cyBjb21wdXRlZCBvbiByZWFkLlxuICogQ29tcG9zZXMgYSBgS2V5ZWRTdG9yZTxTdGVwTWV0cmljcz5gIGZvciBPKDEpIGxvb2t1cCBhbmQgc3RhbmRhcmQgb3BlcmF0aW9uc1xuICogKENvbnZlbnRpb24gMSDigJQgb25lIHB1cnBvc2UgcGVyIHJlY29yZGVyOiB0aGlzIGlzIHRoZSBTY29wZVJlY29yZGVyOyB0aGUgc3RvcmVcbiAqIGlzIHRoZSBzdG9yYWdlKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWV0cmljID0gbmV3IE1ldHJpY1JlY29yZGVyKCk7XG4gKiBleGVjdXRvci5hdHRhY2hTY29wZVJlY29yZGVyKG1ldHJpYyk7XG4gKiBhd2FpdCBleGVjdXRvci5ydW4oKTtcbiAqXG4gKiAvLyBQZXItc3RlcCAodGltZS10cmF2ZWwpOlxuICogbWV0cmljLmdldEJ5S2V5KCdjYWxsLWxsbSM1Jyk7ICAvLyB7IHN0YWdlTmFtZSwgcmVhZENvdW50LCB3cml0ZUNvdW50LCBkdXJhdGlvbiB9XG4gKlxuICogLy8gQWdncmVnYXRlZCAoYmFja3dhcmQgY29tcGF0KTpcbiAqIG1ldHJpYy5nZXRNZXRyaWNzKCk7ICAvLyB7IHRvdGFsRHVyYXRpb24sIHRvdGFsUmVhZHMsIHN0YWdlTWV0cmljczogTWFwPHN0YWdlTmFtZSwgYWdncmVnYXRlZD4gfVxuICpcbiAqIC8vIFByb2dyZXNzaXZlIChzbGlkZXIpOlxuICogbWV0cmljLmFjY3VtdWxhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5kdXJhdGlvbiwgMCwgdmlzaWJsZUtleXMpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgS2V5ZWRTdG9yZSB9IGZyb20gJy4uLy4uL3JlY29yZGVyL0tleWVkU3RvcmUuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWNvcmRlck9wZXJhdGlvbiB9IGZyb20gJy4uLy4uL3JlY29yZGVyL1JlY29yZGVyT3BlcmF0aW9uLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tbWl0RXZlbnQsXG4gIFBhdXNlRXZlbnQsXG4gIFJlYWRFdmVudCxcbiAgUmVjb3JkZXJDb250ZXh0LFxuICBTY29wZVJlY29yZGVyLFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8qKiBQZXItaW52b2NhdGlvbiBtZXRyaWNzIGZvciBhIHNpbmdsZSBleGVjdXRpb24gc3RlcC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcE1ldHJpY3Mge1xuICAvKiogSHVtYW4tcmVhZGFibGUgc3RhZ2UgbmFtZS4gKi9cbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBOdW1iZXIgb2Ygc2NvcGUgcmVhZHMgZHVyaW5nIHRoaXMgaW52b2NhdGlvbi4gKi9cbiAgcmVhZENvdW50OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2Ygc2NvcGUgd3JpdGVzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIHdyaXRlQ291bnQ6IG51bWJlcjtcbiAgLyoqIE51bWJlciBvZiBjb21taXRzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIGNvbW1pdENvdW50OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2YgcGF1c2VzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIHBhdXNlQ291bnQ6IG51bWJlcjtcbiAgLyoqIER1cmF0aW9uIGluIG1zIGZvciB0aGlzIGludm9jYXRpb24uICovXG4gIGR1cmF0aW9uOiBudW1iZXI7XG59XG5cbi8qKiBBZ2dyZWdhdGVkIG1ldHJpY3MgYWNyb3NzIGFsbCBpbnZvY2F0aW9ucyAoYmFja3dhcmQgY29tcGF0aWJsZSkuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZ3JlZ2F0ZWRNZXRyaWNzIHtcbiAgdG90YWxEdXJhdGlvbjogbnVtYmVyO1xuICB0b3RhbFJlYWRzOiBudW1iZXI7XG4gIHRvdGFsV3JpdGVzOiBudW1iZXI7XG4gIHRvdGFsQ29tbWl0czogbnVtYmVyO1xuICB0b3RhbFBhdXNlczogbnVtYmVyO1xuICAvKiogQWdncmVnYXRlZCBieSBzdGFnZU5hbWUg4oCUIHN1bXMgYWNyb3NzIGxvb3AgaW52b2NhdGlvbnMuICovXG4gIHN0YWdlTWV0cmljczogTWFwPHN0cmluZywgU3RhZ2VNZXRyaWNzPjtcbn1cblxuLyoqIEFnZ3JlZ2F0ZWQgcGVyLXN0YWdlTmFtZSAoYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHByZS1ydW50aW1lU3RhZ2VJZCBBUEkpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnZU1ldHJpY3Mge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgcmVhZENvdW50OiBudW1iZXI7XG4gIHdyaXRlQ291bnQ6IG51bWJlcjtcbiAgY29tbWl0Q291bnQ6IG51bWJlcjtcbiAgcGF1c2VDb3VudDogbnVtYmVyO1xuICB0b3RhbER1cmF0aW9uOiBudW1iZXI7XG4gIGludm9jYXRpb25Db3VudDogbnVtYmVyO1xufVxuXG4vKiogT3B0aW9ucyBmb3IgTWV0cmljUmVjb3JkZXIuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY1JlY29yZGVyT3B0aW9ucyB7XG4gIC8qKiBTY29wZVJlY29yZGVyIElELiBEZWZhdWx0cyB0byBhdXRvLWluY3JlbWVudCAoYG1ldHJpY3MtMWAsIGBtZXRyaWNzLTJgLCAuLi4pLiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqIEZpbHRlciB3aGljaCBzdGFnZXMgYXJlIHJlY29yZGVkLiBSZXR1cm4gYHRydWVgIHRvIHJlY29yZCwgYGZhbHNlYCB0byBza2lwLiAqL1xuICBzdGFnZUZpbHRlcj86IChzdGFnZU5hbWU6IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgLyoqIFByZWZlcnJlZCBVSSBvcGVyYXRpb24uIERlZmF1bHRzIHRvICdhZ2dyZWdhdGUnIChkYXNoYm9hcmQgdG90YWxzKS4gKi9cbiAgcHJlZmVycmVkT3BlcmF0aW9uPzogUmVjb3JkZXJPcGVyYXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRyaWNSZWNvcmRlciBpbXBsZW1lbnRzIFNjb3BlUmVjb3JkZXIge1xuICBwcml2YXRlIHN0YXRpYyBfY291bnRlciA9IDA7XG5cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJlZmVycmVkT3BlcmF0aW9uOiBSZWNvcmRlck9wZXJhdGlvbjtcbiAgLyoqIDE6MSBwZXItc3RlcCBzdG9yYWdlIChDb252ZW50aW9uIDEg4oCUIGNvbXBvc2VkLCBub3QgaW5oZXJpdGVkKS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IG5ldyBLZXllZFN0b3JlPFN0ZXBNZXRyaWNzPigpO1xuICBwcml2YXRlIHN0YWdlU3RhcnRUaW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIHByaXZhdGUgc3RhZ2VGaWx0ZXI/OiAoc3RhZ2VOYW1lOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoaWRPck9wdGlvbnM/OiBzdHJpbmcgfCBNZXRyaWNSZWNvcmRlck9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIGlkT3JPcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5pZCA9IGlkT3JPcHRpb25zO1xuICAgICAgdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24gPSAnYWdncmVnYXRlJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pZCA9IGlkT3JPcHRpb25zPy5pZCA/PyBgbWV0cmljcy0keysrTWV0cmljUmVjb3JkZXIuX2NvdW50ZXJ9YDtcbiAgICAgIHRoaXMuc3RhZ2VGaWx0ZXIgPSBpZE9yT3B0aW9ucz8uc3RhZ2VGaWx0ZXI7XG4gICAgICB0aGlzLnByZWZlcnJlZE9wZXJhdGlvbiA9IGlkT3JPcHRpb25zPy5wcmVmZXJyZWRPcGVyYXRpb24gPz8gJ2FnZ3JlZ2F0ZSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRSZWNvcmQoc3RhZ2VOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc3RhZ2VGaWx0ZXIgfHwgdGhpcy5zdGFnZUZpbHRlcihzdGFnZU5hbWUpO1xuICB9XG5cbiAgLyoqIEVhY2ggZXZlbnQgb3ducyBpdHMgYXR0cmlidXRpb247IGFub3RoZXIgc3RhZ2UgbWF5IGhhdmUgc3RhcnRlZCBtZWFud2hpbGUuICovXG4gIHByaXZhdGUgZm9yRXZlbnQoZXZlbnQ6IFJlY29yZGVyQ29udGV4dCk6IFN0ZXBNZXRyaWNzIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5ydW50aW1lU3RhZ2VJZDtcbiAgICBsZXQgbSA9IHRoaXMuc3RvcmUuZ2V0KGtleSk7XG4gICAgaWYgKCFtKSB7XG4gICAgICBtID0geyBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSwgcmVhZENvdW50OiAwLCB3cml0ZUNvdW50OiAwLCBjb21taXRDb3VudDogMCwgcGF1c2VDb3VudDogMCwgZHVyYXRpb246IDAgfTtcbiAgICAgIHRoaXMuc3RvcmUuc2V0KGtleSwgbSk7XG4gICAgfVxuICAgIHJldHVybiBtO1xuICB9XG5cbiAgLy8g4pSA4pSAIFBlci1zdGVwIHF1ZXJ5IEFQSSAoZGVsZWdhdGVzIHRvIHRoZSBjb21wb3NlZCBzdG9yZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqIFRyYW5zbGF0ZTogcGVyLXN0ZXAgbWV0cmljcyBieSBydW50aW1lU3RhZ2VJZC4gKi9cbiAgZ2V0QnlLZXkocnVudGltZVN0YWdlSWQ6IHN0cmluZyk6IFN0ZXBNZXRyaWNzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXQocnVudGltZVN0YWdlSWQpO1xuICB9XG5cbiAgLyoqIEFsbCBwZXItc3RlcCBtZXRyaWNzIGFzIGEgcmVhZC1vbmx5IE1hcCAoaW5zZXJ0aW9uLW9yZGVyZWQpLiAqL1xuICBnZXRNYXAoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBTdGVwTWV0cmljcz4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldE1hcCgpO1xuICB9XG5cbiAgLyoqIEFsbCBwZXItc3RlcCBtZXRyaWNzIChpbnNlcnRpb24tb3JkZXJlZCkuICovXG4gIHZhbHVlcygpOiBTdGVwTWV0cmljc1tdIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS52YWx1ZXMoKTtcbiAgfVxuXG4gIC8qKiBOdW1iZXIgb2YgcmVjb3JkZWQgc3RlcHMuICovXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2l6ZTtcbiAgfVxuXG4gIC8qKiBBZ2dyZWdhdGU6IHJlZHVjZSBBTEwgc3RlcHMgdG8gYSBzaW5nbGUgdmFsdWUgKGRhc2hib2FyZHMsIHRvdGFscykuICovXG4gIGFnZ3JlZ2F0ZTxSPihmbjogKGFjYzogUiwgZW50cnk6IFN0ZXBNZXRyaWNzLCBrZXk6IHN0cmluZykgPT4gUiwgaW5pdGlhbDogUik6IFIge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLmFnZ3JlZ2F0ZShmbiwgaW5pdGlhbCk7XG4gIH1cblxuICAvKiogQWNjdW11bGF0ZTogcmVkdWNlIHN0ZXBzIHVwIHRvIGEgc2xpZGVyIHBvc2l0aW9uIChwcm9ncmVzc2l2ZSB2aWV3KS4gKi9cbiAgYWNjdW11bGF0ZTxSPihmbjogKGFjYzogUiwgZW50cnk6IFN0ZXBNZXRyaWNzLCBrZXk6IHN0cmluZykgPT4gUiwgaW5pdGlhbDogUiwga2V5cz86IFJlYWRvbmx5U2V0PHN0cmluZz4pOiBSIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5hY2N1bXVsYXRlKGZuLCBpbml0aWFsLCBrZXlzKTtcbiAgfVxuXG4gIG9uU3RhZ2VTdGFydChldmVudDogU3RhZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIHRoaXMuc3RhZ2VTdGFydFRpbWVzLnNldChldmVudC5ydW50aW1lU3RhZ2VJZCwgZXZlbnQudGltZXN0YW1wKTtcbiAgICBjb25zdCBtID0gdGhpcy5mb3JFdmVudChldmVudCk7XG4gICAgbS5zdGFnZU5hbWUgPSBldmVudC5zdGFnZU5hbWU7XG4gIH1cblxuICBvblJlYWQoZXZlbnQ6IFJlYWRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIHRoaXMuZm9yRXZlbnQoZXZlbnQpLnJlYWRDb3VudCsrO1xuICB9XG5cbiAgb25Xcml0ZShldmVudDogV3JpdGVFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIHRoaXMuZm9yRXZlbnQoZXZlbnQpLndyaXRlQ291bnQrKztcbiAgfVxuXG4gIG9uQ29tbWl0KGV2ZW50OiBDb21taXRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIHRoaXMuZm9yRXZlbnQoZXZlbnQpLmNvbW1pdENvdW50Kys7XG4gIH1cblxuICBvblBhdXNlKGV2ZW50OiBQYXVzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgdGhpcy5mb3JFdmVudChldmVudCkucGF1c2VDb3VudCsrO1xuICB9XG5cbiAgb25TdGFnZUVuZChldmVudDogU3RhZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIGNvbnN0IG0gPSB0aGlzLmZvckV2ZW50KGV2ZW50KTtcbiAgICBpZiAoZXZlbnQuZHVyYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgbS5kdXJhdGlvbiA9IGV2ZW50LmR1cmF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSB0aGlzLnN0YWdlU3RhcnRUaW1lcy5nZXQoZXZlbnQucnVudGltZVN0YWdlSWQpO1xuICAgICAgbS5kdXJhdGlvbiA9IHN0YXJ0VGltZSAhPT0gdW5kZWZpbmVkID8gZXZlbnQudGltZXN0YW1wIC0gc3RhcnRUaW1lIDogMDtcbiAgICB9XG4gICAgdGhpcy5zdGFnZVN0YXJ0VGltZXMuZGVsZXRlKGV2ZW50LnJ1bnRpbWVTdGFnZUlkKTtcbiAgfVxuXG4gIC8qKiBBZ2dyZWdhdGVkIG1ldHJpY3Mg4oCUIGNvbXB1dGVzIHRvdGFscyBvbiB0aGUgZmx5IGZyb20gcGVyLXN0ZXAgZGF0YSAoYmFja3dhcmQgY29tcGF0aWJsZSkuICovXG4gIGdldE1ldHJpY3MoKTogQWdncmVnYXRlZE1ldHJpY3Mge1xuICAgIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBTdGFnZU1ldHJpY3M+KCk7XG5cbiAgICBjb25zdCB0b3RhbER1cmF0aW9uID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5kdXJhdGlvbiwgMCk7XG4gICAgY29uc3QgdG90YWxSZWFkcyA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0ucmVhZENvdW50LCAwKTtcbiAgICBjb25zdCB0b3RhbFdyaXRlcyA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0ud3JpdGVDb3VudCwgMCk7XG4gICAgY29uc3QgdG90YWxDb21taXRzID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5jb21taXRDb3VudCwgMCk7XG4gICAgY29uc3QgdG90YWxQYXVzZXMgPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLnBhdXNlQ291bnQsIDApO1xuXG4gICAgLy8gR3JvdXAgYnkgc3RhZ2VOYW1lIGZvciBiYWNrd2FyZCBjb21wYXRcbiAgICBmb3IgKGNvbnN0IG0gb2YgdGhpcy52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBieU5hbWUuZ2V0KG0uc3RhZ2VOYW1lKTtcbiAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICBleGlzdGluZy5yZWFkQ291bnQgKz0gbS5yZWFkQ291bnQ7XG4gICAgICAgIGV4aXN0aW5nLndyaXRlQ291bnQgKz0gbS53cml0ZUNvdW50O1xuICAgICAgICBleGlzdGluZy5jb21taXRDb3VudCArPSBtLmNvbW1pdENvdW50O1xuICAgICAgICBleGlzdGluZy5wYXVzZUNvdW50ICs9IG0ucGF1c2VDb3VudDtcbiAgICAgICAgZXhpc3RpbmcudG90YWxEdXJhdGlvbiArPSBtLmR1cmF0aW9uO1xuICAgICAgICBleGlzdGluZy5pbnZvY2F0aW9uQ291bnQrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ5TmFtZS5zZXQobS5zdGFnZU5hbWUsIHtcbiAgICAgICAgICBzdGFnZU5hbWU6IG0uc3RhZ2VOYW1lLFxuICAgICAgICAgIHJlYWRDb3VudDogbS5yZWFkQ291bnQsXG4gICAgICAgICAgd3JpdGVDb3VudDogbS53cml0ZUNvdW50LFxuICAgICAgICAgIGNvbW1pdENvdW50OiBtLmNvbW1pdENvdW50LFxuICAgICAgICAgIHBhdXNlQ291bnQ6IG0ucGF1c2VDb3VudCxcbiAgICAgICAgICB0b3RhbER1cmF0aW9uOiBtLmR1cmF0aW9uLFxuICAgICAgICAgIGludm9jYXRpb25Db3VudDogMSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgdG90YWxEdXJhdGlvbiwgdG90YWxSZWFkcywgdG90YWxXcml0ZXMsIHRvdGFsQ29tbWl0cywgdG90YWxQYXVzZXMsIHN0YWdlTWV0cmljczogYnlOYW1lIH07XG4gIH1cblxuICAvKiogR2V0IGFnZ3JlZ2F0ZWQgbWV0cmljcyBmb3IgYSBzcGVjaWZpYyBzdGFnZSBuYW1lIChiYWNrd2FyZCBjb21wYXRpYmxlKS4gKi9cbiAgZ2V0U3RhZ2VNZXRyaWNzKHN0YWdlTmFtZTogc3RyaW5nKTogU3RhZ2VNZXRyaWNzIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtZXRyaWNzID0gdGhpcy5nZXRNZXRyaWNzKCk7XG4gICAgcmV0dXJuIG1ldHJpY3Muc3RhZ2VNZXRyaWNzLmdldChzdGFnZU5hbWUpO1xuICB9XG5cbiAgdG9TbmFwc2hvdCgpIHtcbiAgICBjb25zdCBtZXRyaWNzID0gdGhpcy5nZXRNZXRyaWNzKCk7XG4gICAgLy8gRXhwb3NlIHBlci1zdGVwIGRhdGEga2V5ZWQgYnkgcnVudGltZVN0YWdlSWQgKGZvciB0aW1lLXRyYXZlbCBVSSlcbiAgICAvLyBhbG9uZ3NpZGUgdGhlIGFnZ3JlZ2F0ZWQgdG90YWxzXG4gICAgY29uc3Qgc3RlcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5nZXRNYXAoKSkge1xuICAgICAgc3RlcHNba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ01ldHJpY3MnLFxuICAgICAgZGVzY3JpcHRpb246ICdBZ2dyZWdhdG9yIChLZXllZFN0b3JlKSDigJQgcGVyLXN0ZXAgdGltaW5nIGFuZCBJL08gY291bnRzJyxcbiAgICAgIHByZWZlcnJlZE9wZXJhdGlvbjogdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIG51bWVyaWNGaWVsZDogJ3JlYWRDb3VudCcsXG4gICAgICAgIGdyYW5kVG90YWw6IG1ldHJpY3MudG90YWxSZWFkcyxcbiAgICAgICAgdG90YWxEdXJhdGlvbjogbWV0cmljcy50b3RhbER1cmF0aW9uLFxuICAgICAgICB0b3RhbFJlYWRzOiBtZXRyaWNzLnRvdGFsUmVhZHMsXG4gICAgICAgIHRvdGFsV3JpdGVzOiBtZXRyaWNzLnRvdGFsV3JpdGVzLFxuICAgICAgICB0b3RhbENvbW1pdHM6IG1ldHJpY3MudG90YWxDb21taXRzLFxuICAgICAgICB0b3RhbFBhdXNlczogbWV0cmljcy50b3RhbFBhdXNlcyxcbiAgICAgICAgc3RlcHMsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKiogQ2xlYXIgYWxsIHN0YXRlIOKAlCBjYWxsZWQgYnkgZXhlY3V0b3IgYmVmb3JlIGVhY2ggcnVuKCkuICovXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmUuY2xlYXIoKTtcbiAgICB0aGlzLnN0YWdlU3RhcnRUaW1lcy5jbGVhcigpO1xuICB9XG5cbiAgLyoqIEFsaWFzIGZvciBjbGVhcigpIChiYWNrd2FyZCBjb21wYXQpLiAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0cmljUmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3JlY29yZGVycy9NZXRyaWNSZWNvcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQThEMUQsTUFBTSxPQUFPLGNBQWM7SUFDakIsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFbkIsRUFBRSxDQUFTO0lBQ1gsa0JBQWtCLENBQW9CO0lBQy9DLHFFQUFxRTtJQUNwRCxLQUFLLEdBQUcsSUFBSSxVQUFVLEVBQWUsQ0FBQztJQUMvQyxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDNUMsV0FBVyxDQUFrQztJQUVyRCxZQUFZLFdBQTRDO1FBQ3RELElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUM7WUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxFQUFFLEdBQUcsV0FBVyxFQUFFLEVBQUUsSUFBSSxXQUFXLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxFQUFFLFdBQVcsQ0FBQztZQUM1QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxFQUFFLGtCQUFrQixJQUFJLFdBQVcsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxTQUFpQjtRQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxpRkFB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QUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTztZQUNMLElBQUksRUFBRSxTQUFTO1lBQ2YsV0FBVyxFQUFFLDBEQUEwRDtZQUN2RSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzNDLElBQUksRUFBRTtnQkFDSixZQUFZLEVBQUUsV0FBVztnQkFDekIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7Z0JBQ3BDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtnQkFDOUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7Z0JBQ2xDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztnQkFDaEMsS0FBSzthQUNOO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZXRyaWNSZWNvcmRlciDigJQgcGVyLXN0ZXAgdGltaW5nIGFuZCBleGVjdXRpb24gY291bnRzLCBrZXllZCBieSBydW50aW1lU3RhZ2VJZC5cbiAqXG4gKiBTdG9yZXMgcGVyLWludm9jYXRpb24gZGF0YSBkdXJpbmcgdHJhdmVyc2FsLiBBZ2dyZWdhdGVkIHZpZXdzIGNvbXB1dGVkIG9uIHJlYWQuXG4gKiBDb21wb3NlcyBhIGBLZXllZFN0b3JlPFN0ZXBNZXRyaWNzPmAgZm9yIE8oMSkgbG9va3VwIGFuZCBzdGFuZGFyZCBvcGVyYXRpb25zXG4gKiAoQ29udmVudGlvbiAxIOKAlCBvbmUgcHVycG9zZSBwZXIgcmVjb3JkZXI6IHRoaXMgaXMgdGhlIFNjb3BlUmVjb3JkZXI7IHRoZSBzdG9yZVxuICogaXMgdGhlIHN0b3JhZ2UpLlxuICpcbiAqIEF0dGVtcHRzICgxMC4xKTogYSBzdGFnZSB3aXRoIGEgcmV0cnkgcG9saWN5IHJ1bnMgZWFjaCBhdHRlbXB0IGluIGEgZnJlc2hcbiAqIHNjb3BlLCBzbyB0aGlzIHJlY29yZGVyIHNlZXMgb25lIGBvblN0YWdlU3RhcnRgIHBlciBhdHRlbXB0LiBgYXR0ZW1wdHNgIGlzXG4gKiB0aGF0IGNvdW50LCBwcmVzZW50IHdoZW4gaXQgaXMgMiBvciBtb3JlOyBgZHVyYXRpb25gIHNwYW5zIHRoZSB3aG9sZVxuICogZXhlY3V0aW9uIOKAlCBmcm9tIHRoZSBGSVJTVCBhdHRlbXB0J3Mgc3RhcnQsIHdhaXRzIGluY2x1ZGVkIOKAlCBuZXZlciBqdXN0IHRoZVxuICogYXR0ZW1wdCB0aGF0IHN1Y2NlZWRlZC4gQW4gZXhlY3V0aW9uIHRoYXQgbmV2ZXIgcmV0dXJuZWQgKGl0IGdhdmUgdXApIGhhc1xuICogbm8gYG9uU3RhZ2VFbmRgLCBzbyBpdHMgZHVyYXRpb24gc3RheXMgYDBgLCBhcyBmb3IgYW55IGZhaWxlZCBzdGFnZS4gQSBzdGFnZVxuICogdGhhdCByYW4gb25jZSByZWFkcyBleGFjdGx5IGFzIGJlZm9yZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWV0cmljID0gbmV3IE1ldHJpY1JlY29yZGVyKCk7XG4gKiBleGVjdXRvci5hdHRhY2hTY29wZVJlY29yZGVyKG1ldHJpYyk7XG4gKiBhd2FpdCBleGVjdXRvci5ydW4oKTtcbiAqXG4gKiAvLyBQZXItc3RlcCAodGltZS10cmF2ZWwpOlxuICogbWV0cmljLmdldEJ5S2V5KCdjYWxsLWxsbSM1Jyk7ICAvLyB7IHN0YWdlTmFtZSwgcmVhZENvdW50LCB3cml0ZUNvdW50LCBkdXJhdGlvbiB9XG4gKlxuICogLy8gQWdncmVnYXRlZCAoYmFja3dhcmQgY29tcGF0KTpcbiAqIG1ldHJpYy5nZXRNZXRyaWNzKCk7ICAvLyB7IHRvdGFsRHVyYXRpb24sIHRvdGFsUmVhZHMsIHN0YWdlTWV0cmljczogTWFwPHN0YWdlTmFtZSwgYWdncmVnYXRlZD4gfVxuICpcbiAqIC8vIFByb2dyZXNzaXZlIChzbGlkZXIpOlxuICogbWV0cmljLmFjY3VtdWxhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5kdXJhdGlvbiwgMCwgdmlzaWJsZUtleXMpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgS2V5ZWRTdG9yZSB9IGZyb20gJy4uLy4uL3JlY29yZGVyL0tleWVkU3RvcmUuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWNvcmRlck9wZXJhdGlvbiB9IGZyb20gJy4uLy4uL3JlY29yZGVyL1JlY29yZGVyT3BlcmF0aW9uLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tbWl0RXZlbnQsXG4gIFBhdXNlRXZlbnQsXG4gIFJlYWRFdmVudCxcbiAgUmVjb3JkZXJDb250ZXh0LFxuICBTY29wZVJlY29yZGVyLFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8qKiBQZXItaW52b2NhdGlvbiBtZXRyaWNzIGZvciBhIHNpbmdsZSBleGVjdXRpb24gc3RlcC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcE1ldHJpY3Mge1xuICAvKiogSHVtYW4tcmVhZGFibGUgc3RhZ2UgbmFtZS4gKi9cbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBOdW1iZXIgb2Ygc2NvcGUgcmVhZHMgZHVyaW5nIHRoaXMgaW52b2NhdGlvbi4gKi9cbiAgcmVhZENvdW50OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2Ygc2NvcGUgd3JpdGVzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIHdyaXRlQ291bnQ6IG51bWJlcjtcbiAgLyoqIE51bWJlciBvZiBjb21taXRzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIGNvbW1pdENvdW50OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2YgcGF1c2VzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIHBhdXNlQ291bnQ6IG51bWJlcjtcbiAgLyoqIER1cmF0aW9uIGluIG1zIGZvciB0aGlzIGludm9jYXRpb24uICovXG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIC8qKiBIb3cgbWFueSBhdHRlbXB0cyB0aGUgZXhlY3V0aW9uIG1hZGUgKGl0cyBgb25TdGFnZVN0YXJ0YCBjb3VudCkg4oCUIHByZXNlbnQgb25seSB3aGVuIGl0IHJldHJpZWQgKOKJpSAyKS4gKi9cbiAgYXR0ZW1wdHM/OiBudW1iZXI7XG59XG5cbi8qKiBBZ2dyZWdhdGVkIG1ldHJpY3MgYWNyb3NzIGFsbCBpbnZvY2F0aW9ucyAoYmFja3dhcmQgY29tcGF0aWJsZSkuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZ3JlZ2F0ZWRNZXRyaWNzIHtcbiAgdG90YWxEdXJhdGlvbjogbnVtYmVyO1xuICB0b3RhbFJlYWRzOiBudW1iZXI7XG4gIHRvdGFsV3JpdGVzOiBudW1iZXI7XG4gIHRvdGFsQ29tbWl0czogbnVtYmVyO1xuICB0b3RhbFBhdXNlczogbnVtYmVyO1xuICAvKiogQWdncmVnYXRlZCBieSBzdGFnZU5hbWUg4oCUIHN1bXMgYWNyb3NzIGxvb3AgaW52b2NhdGlvbnMuICovXG4gIHN0YWdlTWV0cmljczogTWFwPHN0cmluZywgU3RhZ2VNZXRyaWNzPjtcbn1cblxuLyoqIEFnZ3JlZ2F0ZWQgcGVyLXN0YWdlTmFtZSAoYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHByZS1ydW50aW1lU3RhZ2VJZCBBUEkpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnZU1ldHJpY3Mge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgcmVhZENvdW50OiBudW1iZXI7XG4gIHdyaXRlQ291bnQ6IG51bWJlcjtcbiAgY29tbWl0Q291bnQ6IG51bWJlcjtcbiAgcGF1c2VDb3VudDogbnVtYmVyO1xuICB0b3RhbER1cmF0aW9uOiBudW1iZXI7XG4gIGludm9jYXRpb25Db3VudDogbnVtYmVyO1xufVxuXG4vKiogT3B0aW9ucyBmb3IgTWV0cmljUmVjb3JkZXIuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY1JlY29yZGVyT3B0aW9ucyB7XG4gIC8qKiBTY29wZVJlY29yZGVyIElELiBEZWZhdWx0cyB0byBhdXRvLWluY3JlbWVudCAoYG1ldHJpY3MtMWAsIGBtZXRyaWNzLTJgLCAuLi4pLiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqIEZpbHRlciB3aGljaCBzdGFnZXMgYXJlIHJlY29yZGVkLiBSZXR1cm4gYHRydWVgIHRvIHJlY29yZCwgYGZhbHNlYCB0byBza2lwLiAqL1xuICBzdGFnZUZpbHRlcj86IChzdGFnZU5hbWU6IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgLyoqIFByZWZlcnJlZCBVSSBvcGVyYXRpb24uIERlZmF1bHRzIHRvICdhZ2dyZWdhdGUnIChkYXNoYm9hcmQgdG90YWxzKS4gKi9cbiAgcHJlZmVycmVkT3BlcmF0aW9uPzogUmVjb3JkZXJPcGVyYXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRyaWNSZWNvcmRlciBpbXBsZW1lbnRzIFNjb3BlUmVjb3JkZXIge1xuICBwcml2YXRlIHN0YXRpYyBfY291bnRlciA9IDA7XG5cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJlZmVycmVkT3BlcmF0aW9uOiBSZWNvcmRlck9wZXJhdGlvbjtcbiAgLyoqIDE6MSBwZXItc3RlcCBzdG9yYWdlIChDb252ZW50aW9uIDEg4oCUIGNvbXBvc2VkLCBub3QgaW5oZXJpdGVkKS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IG5ldyBLZXllZFN0b3JlPFN0ZXBNZXRyaWNzPigpO1xuICBwcml2YXRlIHN0YWdlU3RhcnRUaW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIHByaXZhdGUgc3RhZ2VGaWx0ZXI/OiAoc3RhZ2VOYW1lOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoaWRPck9wdGlvbnM/OiBzdHJpbmcgfCBNZXRyaWNSZWNvcmRlck9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIGlkT3JPcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5pZCA9IGlkT3JPcHRpb25zO1xuICAgICAgdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24gPSAnYWdncmVnYXRlJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pZCA9IGlkT3JPcHRpb25zPy5pZCA/PyBgbWV0cmljcy0keysrTWV0cmljUmVjb3JkZXIuX2NvdW50ZXJ9YDtcbiAgICAgIHRoaXMuc3RhZ2VGaWx0ZXIgPSBpZE9yT3B0aW9ucz8uc3RhZ2VGaWx0ZXI7XG4gICAgICB0aGlzLnByZWZlcnJlZE9wZXJhdGlvbiA9IGlkT3JPcHRpb25zPy5wcmVmZXJyZWRPcGVyYXRpb24gPz8gJ2FnZ3JlZ2F0ZSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRSZWNvcmQoc3RhZ2VOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc3RhZ2VGaWx0ZXIgfHwgdGhpcy5zdGFnZUZpbHRlcihzdGFnZU5hbWUpO1xuICB9XG5cbiAgLyoqIEVhY2ggZXZlbnQgb3ducyBpdHMgYXR0cmlidXRpb247IGFub3RoZXIgc3RhZ2UgbWF5IGhhdmUgc3RhcnRlZCBtZWFud2hpbGUuICovXG4gIHByaXZhdGUgZm9yRXZlbnQoZXZlbnQ6IFJlY29yZGVyQ29udGV4dCk6IFN0ZXBNZXRyaWNzIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5ydW50aW1lU3RhZ2VJZDtcbiAgICBsZXQgbSA9IHRoaXMuc3RvcmUuZ2V0KGtleSk7XG4gICAgaWYgKCFtKSB7XG4gICAgICBtID0geyBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSwgcmVhZENvdW50OiAwLCB3cml0ZUNvdW50OiAwLCBjb21taXRDb3VudDogMCwgcGF1c2VDb3VudDogMCwgZHVyYXRpb246IDAgfTtcbiAgICAgIHRoaXMuc3RvcmUuc2V0KGtleSwgbSk7XG4gICAgfVxuICAgIHJldHVybiBtO1xuICB9XG5cbiAgLy8g4pSA4pSAIFBlci1zdGVwIHF1ZXJ5IEFQSSAoZGVsZWdhdGVzIHRvIHRoZSBjb21wb3NlZCBzdG9yZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqIFRyYW5zbGF0ZTogcGVyLXN0ZXAgbWV0cmljcyBieSBydW50aW1lU3RhZ2VJZC4gKi9cbiAgZ2V0QnlLZXkocnVudGltZVN0YWdlSWQ6IHN0cmluZyk6IFN0ZXBNZXRyaWNzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXQocnVudGltZVN0YWdlSWQpO1xuICB9XG5cbiAgLyoqIEFsbCBwZXItc3RlcCBtZXRyaWNzIGFzIGEgcmVhZC1vbmx5IE1hcCAoaW5zZXJ0aW9uLW9yZGVyZWQpLiAqL1xuICBnZXRNYXAoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBTdGVwTWV0cmljcz4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldE1hcCgpO1xuICB9XG5cbiAgLyoqIEFsbCBwZXItc3RlcCBtZXRyaWNzIChpbnNlcnRpb24tb3JkZXJlZCkuICovXG4gIHZhbHVlcygpOiBTdGVwTWV0cmljc1tdIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS52YWx1ZXMoKTtcbiAgfVxuXG4gIC8qKiBOdW1iZXIgb2YgcmVjb3JkZWQgc3RlcHMuICovXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2l6ZTtcbiAgfVxuXG4gIC8qKiBBZ2dyZWdhdGU6IHJlZHVjZSBBTEwgc3RlcHMgdG8gYSBzaW5nbGUgdmFsdWUgKGRhc2hib2FyZHMsIHRvdGFscykuICovXG4gIGFnZ3JlZ2F0ZTxSPihmbjogKGFjYzogUiwgZW50cnk6IFN0ZXBNZXRyaWNzLCBrZXk6IHN0cmluZykgPT4gUiwgaW5pdGlhbDogUik6IFIge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLmFnZ3JlZ2F0ZShmbiwgaW5pdGlhbCk7XG4gIH1cblxuICAvKiogQWNjdW11bGF0ZTogcmVkdWNlIHN0ZXBzIHVwIHRvIGEgc2xpZGVyIHBvc2l0aW9uIChwcm9ncmVzc2l2ZSB2aWV3KS4gKi9cbiAgYWNjdW11bGF0ZTxSPihmbjogKGFjYzogUiwgZW50cnk6IFN0ZXBNZXRyaWNzLCBrZXk6IHN0cmluZykgPT4gUiwgaW5pdGlhbDogUiwga2V5cz86IFJlYWRvbmx5U2V0PHN0cmluZz4pOiBSIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5hY2N1bXVsYXRlKGZuLCBpbml0aWFsLCBrZXlzKTtcbiAgfVxuXG4gIG9uU3RhZ2VTdGFydChldmVudDogU3RhZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIGNvbnN0IG0gPSB0aGlzLmZvckV2ZW50KGV2ZW50KTtcbiAgICBtLnN0YWdlTmFtZSA9IGV2ZW50LnN0YWdlTmFtZTtcbiAgICBpZiAodGhpcy5zdGFnZVN0YXJ0VGltZXMuaGFzKGV2ZW50LnJ1bnRpbWVTdGFnZUlkKSkge1xuICAgICAgLy8gQW5vdGhlciBhdHRlbXB0IG9mIHRoZSBzYW1lIGV4ZWN1dGlvbjogY291bnQgaXQsIGtlZXAgdGhlIGZpcnN0IHN0YXJ0ICh0aGUgZHVyYXRpb24gc3BhbnMgdGhlbSBhbGwpLlxuICAgICAgbS5hdHRlbXB0cyA9IChtLmF0dGVtcHRzID8/IDEpICsgMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGFnZVN0YXJ0VGltZXMuc2V0KGV2ZW50LnJ1bnRpbWVTdGFnZUlkLCBldmVudC50aW1lc3RhbXApO1xuICB9XG5cbiAgb25SZWFkKGV2ZW50OiBSZWFkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmZvckV2ZW50KGV2ZW50KS5yZWFkQ291bnQrKztcbiAgfVxuXG4gIG9uV3JpdGUoZXZlbnQ6IFdyaXRlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmZvckV2ZW50KGV2ZW50KS53cml0ZUNvdW50Kys7XG4gIH1cblxuICBvbkNvbW1pdChldmVudDogQ29tbWl0RXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmZvckV2ZW50KGV2ZW50KS5jb21taXRDb3VudCsrO1xuICB9XG5cbiAgb25QYXVzZShldmVudDogUGF1c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIHRoaXMuZm9yRXZlbnQoZXZlbnQpLnBhdXNlQ291bnQrKztcbiAgfVxuXG4gIG9uU3RhZ2VFbmQoZXZlbnQ6IFN0YWdlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICBjb25zdCBtID0gdGhpcy5mb3JFdmVudChldmVudCk7XG4gICAgaWYgKGV2ZW50LmR1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG0uZHVyYXRpb24gPSBldmVudC5kdXJhdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gdGhpcy5zdGFnZVN0YXJ0VGltZXMuZ2V0KGV2ZW50LnJ1bnRpbWVTdGFnZUlkKTtcbiAgICAgIG0uZHVyYXRpb24gPSBzdGFydFRpbWUgIT09IHVuZGVmaW5lZCA/IGV2ZW50LnRpbWVzdGFtcCAtIHN0YXJ0VGltZSA6IDA7XG4gICAgfVxuICAgIHRoaXMuc3RhZ2VTdGFydFRpbWVzLmRlbGV0ZShldmVudC5ydW50aW1lU3RhZ2VJZCk7XG4gIH1cblxuICAvKiogQWdncmVnYXRlZCBtZXRyaWNzIOKAlCBjb21wdXRlcyB0b3RhbHMgb24gdGhlIGZseSBmcm9tIHBlci1zdGVwIGRhdGEgKGJhY2t3YXJkIGNvbXBhdGlibGUpLiAqL1xuICBnZXRNZXRyaWNzKCk6IEFnZ3JlZ2F0ZWRNZXRyaWNzIHtcbiAgICBjb25zdCBieU5hbWUgPSBuZXcgTWFwPHN0cmluZywgU3RhZ2VNZXRyaWNzPigpO1xuXG4gICAgY29uc3QgdG90YWxEdXJhdGlvbiA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0uZHVyYXRpb24sIDApO1xuICAgIGNvbnN0IHRvdGFsUmVhZHMgPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLnJlYWRDb3VudCwgMCk7XG4gICAgY29uc3QgdG90YWxXcml0ZXMgPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLndyaXRlQ291bnQsIDApO1xuICAgIGNvbnN0IHRvdGFsQ29tbWl0cyA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0uY29tbWl0Q291bnQsIDApO1xuICAgIGNvbnN0IHRvdGFsUGF1c2VzID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5wYXVzZUNvdW50LCAwKTtcblxuICAgIC8vIEdyb3VwIGJ5IHN0YWdlTmFtZSBmb3IgYmFja3dhcmQgY29tcGF0XG4gICAgZm9yIChjb25zdCBtIG9mIHRoaXMudmFsdWVzKCkpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gYnlOYW1lLmdldChtLnN0YWdlTmFtZSk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgZXhpc3RpbmcucmVhZENvdW50ICs9IG0ucmVhZENvdW50O1xuICAgICAgICBleGlzdGluZy53cml0ZUNvdW50ICs9IG0ud3JpdGVDb3VudDtcbiAgICAgICAgZXhpc3RpbmcuY29tbWl0Q291bnQgKz0gbS5jb21taXRDb3VudDtcbiAgICAgICAgZXhpc3RpbmcucGF1c2VDb3VudCArPSBtLnBhdXNlQ291bnQ7XG4gICAgICAgIGV4aXN0aW5nLnRvdGFsRHVyYXRpb24gKz0gbS5kdXJhdGlvbjtcbiAgICAgICAgZXhpc3RpbmcuaW52b2NhdGlvbkNvdW50Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBieU5hbWUuc2V0KG0uc3RhZ2VOYW1lLCB7XG4gICAgICAgICAgc3RhZ2VOYW1lOiBtLnN0YWdlTmFtZSxcbiAgICAgICAgICByZWFkQ291bnQ6IG0ucmVhZENvdW50LFxuICAgICAgICAgIHdyaXRlQ291bnQ6IG0ud3JpdGVDb3VudCxcbiAgICAgICAgICBjb21taXRDb3VudDogbS5jb21taXRDb3VudCxcbiAgICAgICAgICBwYXVzZUNvdW50OiBtLnBhdXNlQ291bnQsXG4gICAgICAgICAgdG90YWxEdXJhdGlvbjogbS5kdXJhdGlvbixcbiAgICAgICAgICBpbnZvY2F0aW9uQ291bnQ6IDEsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IHRvdGFsRHVyYXRpb24sIHRvdGFsUmVhZHMsIHRvdGFsV3JpdGVzLCB0b3RhbENvbW1pdHMsIHRvdGFsUGF1c2VzLCBzdGFnZU1ldHJpY3M6IGJ5TmFtZSB9O1xuICB9XG5cbiAgLyoqIEdldCBhZ2dyZWdhdGVkIG1ldHJpY3MgZm9yIGEgc3BlY2lmaWMgc3RhZ2UgbmFtZSAoYmFja3dhcmQgY29tcGF0aWJsZSkuICovXG4gIGdldFN0YWdlTWV0cmljcyhzdGFnZU5hbWU6IHN0cmluZyk6IFN0YWdlTWV0cmljcyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbWV0cmljcyA9IHRoaXMuZ2V0TWV0cmljcygpO1xuICAgIHJldHVybiBtZXRyaWNzLnN0YWdlTWV0cmljcy5nZXQoc3RhZ2VOYW1lKTtcbiAgfVxuXG4gIHRvU25hcHNob3QoKSB7XG4gICAgY29uc3QgbWV0cmljcyA9IHRoaXMuZ2V0TWV0cmljcygpO1xuICAgIC8vIEV4cG9zZSBwZXItc3RlcCBkYXRhIGtleWVkIGJ5IHJ1bnRpbWVTdGFnZUlkIChmb3IgdGltZS10cmF2ZWwgVUkpXG4gICAgLy8gYWxvbmdzaWRlIHRoZSBhZ2dyZWdhdGVkIHRvdGFsc1xuICAgIGNvbnN0IHN0ZXBzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHRoaXMuZ2V0TWFwKCkpIHtcbiAgICAgIHN0ZXBzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdNZXRyaWNzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWdncmVnYXRvciAoS2V5ZWRTdG9yZSkg4oCUIHBlci1zdGVwIHRpbWluZyBhbmQgSS9PIGNvdW50cycsXG4gICAgICBwcmVmZXJyZWRPcGVyYXRpb246IHRoaXMucHJlZmVycmVkT3BlcmF0aW9uLFxuICAgICAgZGF0YToge1xuICAgICAgICBudW1lcmljRmllbGQ6ICdyZWFkQ291bnQnLFxuICAgICAgICBncmFuZFRvdGFsOiBtZXRyaWNzLnRvdGFsUmVhZHMsXG4gICAgICAgIHRvdGFsRHVyYXRpb246IG1ldHJpY3MudG90YWxEdXJhdGlvbixcbiAgICAgICAgdG90YWxSZWFkczogbWV0cmljcy50b3RhbFJlYWRzLFxuICAgICAgICB0b3RhbFdyaXRlczogbWV0cmljcy50b3RhbFdyaXRlcyxcbiAgICAgICAgdG90YWxDb21taXRzOiBtZXRyaWNzLnRvdGFsQ29tbWl0cyxcbiAgICAgICAgdG90YWxQYXVzZXM6IG1ldHJpY3MudG90YWxQYXVzZXMsXG4gICAgICAgIHN0ZXBzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIENsZWFyIGFsbCBzdGF0ZSDigJQgY2FsbGVkIGJ5IGV4ZWN1dG9yIGJlZm9yZSBlYWNoIHJ1bigpLiAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JlLmNsZWFyKCk7XG4gICAgdGhpcy5zdGFnZVN0YXJ0VGltZXMuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKiBBbGlhcyBmb3IgY2xlYXIoKSAoYmFja3dhcmQgY29tcGF0KS4gKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcigpO1xuICB9XG59XG4iXX0=
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* ScopeFacade owns recording, redaction and state access; custom scopes may
|
|
8
8
|
* explicitly supply a smaller port (including `{}` for data-only scopes).
|
|
9
9
|
*/
|
|
10
|
+
import type { RunCorrelation } from '../attempt/types.js';
|
|
10
11
|
import type { RedactionPolicy, ScopeRecorder } from './types.js';
|
|
11
12
|
/** Engine-facing capabilities. Never use a strict user-field proxy as this port. */
|
|
12
13
|
export interface ScopeRuntimeTarget {
|
|
@@ -15,6 +16,8 @@ export interface ScopeRuntimeTarget {
|
|
|
15
16
|
getScopeRecorders?(): ScopeRecorder[];
|
|
16
17
|
useSharedRedactedKeys?(keys: Set<string>): void;
|
|
17
18
|
useRedactionPolicy?(policy: RedactionPolicy): void;
|
|
19
|
+
/** The run's correlation, stamped on every scope and emit event this scope fires (10.1). */
|
|
20
|
+
useCorrelation?(correlation: RunCorrelation | undefined): void;
|
|
18
21
|
getRedactedKeys?(): Set<string>;
|
|
19
22
|
notifyStageStart?(): void;
|
|
20
23
|
notifyStageEnd?(duration?: number): void;
|
|
@@ -57,4 +57,4 @@ export function requireScopeRuntime(scope, message = UNREGISTERED) {
|
|
|
57
57
|
export function requireDecisionScopeRuntime(scope) {
|
|
58
58
|
return requireScopeRuntime(scope, UNREGISTERED_DECISION);
|
|
59
59
|
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2NvcGUvcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQThCSCxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBa0MsQ0FBQztBQUUvRCxTQUFTLFFBQVEsQ0FBQyxLQUFjO0lBQzlCLE9BQU8sQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztBQUN0RixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFtQixLQUFRLEVBQUUsT0FBcUI7SUFDcEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFDM0YsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxPQUFPLENBQUMsa0JBQWtCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDN0YsTUFBTSxJQUFJLFNBQVMsQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUM3RSxNQUFNLElBQUksU0FBUyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNELFFBQVEsQ0FBQyxHQUFHLENBQ1YsS0FBSyxFQUNMLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDWixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFDdEIsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtRQUM5QyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7S0FDM0IsQ0FBQyxDQUNILENBQUM7SUFDRixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCw4RUFBOEU7QUFDOUUsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFjO0lBQzVDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDM0QsQ0FBQztBQUVELE1BQU0sWUFBWSxHQUNoQiwrRkFBK0Y7SUFDL0YsNkhBQTZILENBQUM7QUFFaEksTUFBTSxxQkFBcUIsR0FDekIsbUdBQW1HO0lBQ25HLDZGQUE2RjtJQUM3Riw0REFBNEQsQ0FBQztBQUUvRCxnR0FBZ0c7QUFDaEcsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQWMsRUFBRSxVQUFrQixZQUFZO0lBQ2hGLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxJQUFJLE9BQU87UUFBRSxPQUFPLE9BQU8sQ0FBQztJQUM1QixNQUFNLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxzR0FBc0c7QUFDdEcsTUFBTSxVQUFVLDJCQUEyQixDQUFDLEtBQWM7SUFDeEQsT0FBTyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgc2NvcGUg4oaUIGVuZ2luZSBwcm90b2NvbC4gQSB1c2VyLWZhY2luZyBzY29wZSBtYXkgYmUgYSBzdHJpY3Qgc2NoZW1hXG4gKiBwcm94eTogYXNraW5nIGl0IGZvciBhbiBpbmZyYXN0cnVjdHVyZSBtZW1iZXIgaXMgYSBzdGF0ZSBhY2Nlc3MsIG5vdCBhXG4gKiBjYXBhYmlsaXR5IGNoZWNrLiBSZWdpc3RyYXRpb24ga2VlcHMgdGhhdCBib3VuZGFyeSBlbnRpcmVseSBvdXQgb2YgYmFuZC5cbiAqXG4gKiBUaGlzIG1vZHVsZSBvd25zIGlkZW50aXR5IGFuZCBjYXBhYmlsaXRpZXMsIG5vdCB0aGVpciBpbXBsZW1lbnRhdGlvbi5cbiAqIFNjb3BlRmFjYWRlIG93bnMgcmVjb3JkaW5nLCByZWRhY3Rpb24gYW5kIHN0YXRlIGFjY2VzczsgY3VzdG9tIHNjb3BlcyBtYXlcbiAqIGV4cGxpY2l0bHkgc3VwcGx5IGEgc21hbGxlciBwb3J0IChpbmNsdWRpbmcgYHt9YCBmb3IgZGF0YS1vbmx5IHNjb3BlcykuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdW5Db3JyZWxhdGlvbiB9IGZyb20gJy4uL2F0dGVtcHQvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWRhY3Rpb25Qb2xpY3ksIFNjb3BlUmVjb3JkZXIgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqIEVuZ2luZS1mYWNpbmcgY2FwYWJpbGl0aWVzLiBOZXZlciB1c2UgYSBzdHJpY3QgdXNlci1maWVsZCBwcm94eSBhcyB0aGlzIHBvcnQuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlUnVudGltZVRhcmdldCB7XG4gIGF0dGFjaFNjb3BlUmVjb3JkZXI/KHJlY29yZGVyOiBTY29wZVJlY29yZGVyKTogdm9pZDtcbiAgZGV0YWNoU2NvcGVSZWNvcmRlcj8ocmVjb3JkZXJJZDogc3RyaW5nKTogdm9pZDtcbiAgZ2V0U2NvcGVSZWNvcmRlcnM/KCk6IFNjb3BlUmVjb3JkZXJbXTtcbiAgdXNlU2hhcmVkUmVkYWN0ZWRLZXlzPyhrZXlzOiBTZXQ8c3RyaW5nPik6IHZvaWQ7XG4gIHVzZVJlZGFjdGlvblBvbGljeT8ocG9saWN5OiBSZWRhY3Rpb25Qb2xpY3kpOiB2b2lkO1xuICAvKiogVGhlIHJ1bidzIGNvcnJlbGF0aW9uLCBzdGFtcGVkIG9uIGV2ZXJ5IHNjb3BlIGFuZCBlbWl0IGV2ZW50IHRoaXMgc2NvcGUgZmlyZXMgKDEwLjEpLiAqL1xuICB1c2VDb3JyZWxhdGlvbj8oY29ycmVsYXRpb246IFJ1bkNvcnJlbGF0aW9uIHwgdW5kZWZpbmVkKTogdm9pZDtcbiAgZ2V0UmVkYWN0ZWRLZXlzPygpOiBTZXQ8c3RyaW5nPjtcbiAgbm90aWZ5U3RhZ2VTdGFydD8oKTogdm9pZDtcbiAgbm90aWZ5U3RhZ2VFbmQ/KGR1cmF0aW9uPzogbnVtYmVyKTogdm9pZDtcbiAgbm90aWZ5UGF1c2U/KGRhdGE/OiB1bmtub3duKTogdm9pZDtcbiAgZ2V0VmFsdWU/KGtleT86IHN0cmluZyk6IHVua25vd247XG4gIHNldFZhbHVlPyhrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24sIHNob3VsZFJlZGFjdD86IGJvb2xlYW4sIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY29wZVJ1bnRpbWUge1xuICByZWFkb25seSB0YXJnZXQ6IFNjb3BlUnVudGltZVRhcmdldDtcbiAgLyoqIFRoZSBzY29wZSBhbHJlYWR5IHJvdXRlcyBwcm9wZXJ0eSBhc3NpZ25tZW50cyBpbnRvIG1hbmFnZWQgc3RhdGUuICovXG4gIHJlYWRvbmx5IGhhbmRsZXNBc3NpZ25tZW50czogYm9vbGVhbjtcbiAgLyoqIEluc3RhbGwgdGhpcyBleGVjdXRpb24ncyBicmVhayBjYWxsYmFjaywgaWYgdGhlIHNjb3BlIGV4cG9zZXMgb25lLiAqL1xuICByZWFkb25seSBzZXRCcmVhaz86IChicmVha1BpcGVsaW5lOiAocmVhc29uPzogc3RyaW5nKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5jb25zdCBydW50aW1lcyA9IG5ldyBXZWFrTWFwPG9iamVjdCwgUmVhZG9ubHk8U2NvcGVSdW50aW1lPj4oKTtcblxuZnVuY3Rpb24gaXNPYmplY3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBvYmplY3Qge1xuICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBhIGN1c3RvbSBzY29wZSdzIGVuZ2luZS1mYWNpbmcgcG9ydCBhbmQgcmV0dXJuIHRoZSBTQU1FIHNjb3BlLlxuICogUmVnaXN0cmF0aW9uIG5ldmVyIHJlYWRzLCB3cml0ZXMgb3IgZW51bWVyYXRlcyBwcm9wZXJ0aWVzIG9uIGBzY29wZWAuXG4gKiBSZS1yZWdpc3RlcmluZyBleHBsaWNpdGx5IHJlcGxhY2VzIGl0cyBiaW5kaW5nLiBUaGUgZGVzY3JpcHRvciBpcyBjb3BpZWRcbiAqIGFuZCBmcm96ZW47IHRoZSB0YXJnZXQgaXRzZWxmIHJlbWFpbnMgbGl2ZSBhbmQgYmVsb25ncyB0byBpdHMgcHJvdmlkZXIuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGZhY2FkZSA9IG5ldyBTY29wZUZhY2FkZShjb250ZXh0LCBzdGFnZU5hbWUsIGlucHV0LCBlbnYpO1xuICogcmV0dXJuIHJlZ2lzdGVyU2NvcGVSdW50aW1lKG15UHJveHksIHsgdGFyZ2V0OiBmYWNhZGUsIGhhbmRsZXNBc3NpZ25tZW50czogdHJ1ZSB9KTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyU2NvcGVSdW50aW1lPFQgZXh0ZW5kcyBvYmplY3Q+KHNjb3BlOiBULCBydW50aW1lOiBTY29wZVJ1bnRpbWUpOiBUIHtcbiAgaWYgKCFpc09iamVjdChzY29wZSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlZ2lzdGVyU2NvcGVSdW50aW1lOiBzY29wZSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICBpZiAoIXJ1bnRpbWUgfHwgIWlzT2JqZWN0KHJ1bnRpbWUudGFyZ2V0KSB8fCB0eXBlb2YgcnVudGltZS5oYW5kbGVzQXNzaWdubWVudHMgIT09ICdib29sZWFuJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlZ2lzdGVyU2NvcGVSdW50aW1lOiBwcm92aWRlIGEgdGFyZ2V0IHBvcnQgYW5kIGJvb2xlYW4gaGFuZGxlc0Fzc2lnbm1lbnRzJyk7XG4gIH1cbiAgaWYgKHJ1bnRpbWUuc2V0QnJlYWsgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgcnVudGltZS5zZXRCcmVhayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlZ2lzdGVyU2NvcGVSdW50aW1lOiBzZXRCcmVhayBtdXN0IGJlIGEgZnVuY3Rpb24gd2hlbiBzdXBwbGllZCcpO1xuICB9XG4gIHJ1bnRpbWVzLnNldChcbiAgICBzY29wZSxcbiAgICBPYmplY3QuZnJlZXplKHtcbiAgICAgIHRhcmdldDogcnVudGltZS50YXJnZXQsXG4gICAgICBoYW5kbGVzQXNzaWdubWVudHM6IHJ1bnRpbWUuaGFuZGxlc0Fzc2lnbm1lbnRzLFxuICAgICAgc2V0QnJlYWs6IHJ1bnRpbWUuc2V0QnJlYWssXG4gICAgfSksXG4gICk7XG4gIHJldHVybiBzY29wZTtcbn1cblxuLyoqIEBpbnRlcm5hbCBPcHRpb25hbCBvbmx5IGZvciB3cmFwcGVycyB0aGF0IGFsc28gd29yayBvdXRzaWRlIHRoZSBlbmdpbmUuICovXG5leHBvcnQgZnVuY3Rpb24gc2NvcGVSdW50aW1lRm9yKHNjb3BlOiB1bmtub3duKTogUmVhZG9ubHk8U2NvcGVSdW50aW1lPiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpc09iamVjdChzY29wZSkgPyBydW50aW1lcy5nZXQoc2NvcGUpIDogdW5kZWZpbmVkO1xufVxuXG5jb25zdCBVTlJFR0lTVEVSRUQgPVxuICAnW2Zvb3RwcmludF0gVW5yZWdpc3RlcmVkIHNjb3BlLiBDdXN0b20gc2NvcGUgZmFjdG9yaWVzIG11c3QgY2FsbCByZWdpc3RlclNjb3BlUnVudGltZShzY29wZSwgJyArXG4gICd7IHRhcmdldCwgaGFuZGxlc0Fzc2lnbm1lbnRzIH0pIGZyb20gZm9vdHByaW50anMvYWR2YW5jZWQuIFNjb3BlRmFjYWRlIGFuZCBidWlsdC1pbiBzY29wZSBmYWN0b3JpZXMgcmVnaXN0ZXIgYXV0b21hdGljYWxseS4nO1xuXG5jb25zdCBVTlJFR0lTVEVSRURfREVDSVNJT04gPVxuICBcIltmb290cHJpbnRdIGRlY2lkZSgpL3NlbGVjdCgpIG5lZWRzIHRoZSBzdGFnZSdzIHNjb3BlICh0aGUgb2JqZWN0IHlvdXIgc3RhZ2UgZnVuY3Rpb24gcmVjZWl2ZXMpLCBcIiArXG4gICdub3QgYSBwbGFpbiBvYmplY3QuIEEgaGFuZC1idWlsdCBzY29wZSBtdXN0IGJlIHJlZ2lzdGVyZWQgd2l0aCByZWdpc3RlclNjb3BlUnVudGltZShzY29wZSwgJyArXG4gICd7IHRhcmdldCwgaGFuZGxlc0Fzc2lnbm1lbnRzIH0pIGZyb20gZm9vdHByaW50anMvYWR2YW5jZWQuJztcblxuLyoqIEBpbnRlcm5hbCBObyBtZXRob2QtbmFtZSBndWVzc2luZzogYSBtaXNzaW5nIHJlZ2lzdHJhdGlvbiBpcyBhbiBleHBsaWNpdCBtaWdyYXRpb24gZXJyb3IuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZVNjb3BlUnVudGltZShzY29wZTogdW5rbm93biwgbWVzc2FnZTogc3RyaW5nID0gVU5SRUdJU1RFUkVEKTogUmVhZG9ubHk8U2NvcGVSdW50aW1lPiB7XG4gIGNvbnN0IHJ1bnRpbWUgPSBzY29wZVJ1bnRpbWVGb3Ioc2NvcGUpO1xuICBpZiAocnVudGltZSkgcmV0dXJuIHJ1bnRpbWU7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IobWVzc2FnZSk7XG59XG5cbi8qKiBAaW50ZXJuYWwgZGVjaWRlKCkvc2VsZWN0KCkgYXNrZWQgb3V0c2lkZSBhIHN0YWdlOiBuYW1lIFRIRU0sIG5vdCB0aGUgY3VzdG9tLWZhY3RvcnkgbWlncmF0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVEZWNpc2lvblNjb3BlUnVudGltZShzY29wZTogdW5rbm93bik6IFJlYWRvbmx5PFNjb3BlUnVudGltZT4ge1xuICByZXR1cm4gcmVxdWlyZVNjb3BlUnVudGltZShzY29wZSwgVU5SRUdJU1RFUkVEX0RFQ0lTSU9OKTtcbn1cbiJdfQ==
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Architecture follows composition-over-inheritance: Recorders are
|
|
6
6
|
* attached to Scope instances to observe read/write/commit operations.
|
|
7
7
|
*/
|
|
8
|
+
import type { RunCorrelation } from '../attempt/types.js';
|
|
8
9
|
import type { StructuredErrorInfo } from '../errors/errorInfo.js';
|
|
9
10
|
export interface RecorderContext {
|
|
10
11
|
stageName: string;
|
|
@@ -14,6 +15,11 @@ export interface RecorderContext {
|
|
|
14
15
|
runtimeStageId: string;
|
|
15
16
|
pipelineId: string;
|
|
16
17
|
timestamp: number;
|
|
18
|
+
/**
|
|
19
|
+
* The run's correlation (10.1) — the same frozen object as `TraversalContext.correlation` on the flow events
|
|
20
|
+
* and `getSnapshot().correlation`. Absent — no key — when the run's env gave none.
|
|
21
|
+
*/
|
|
22
|
+
readonly correlation?: RunCorrelation;
|
|
17
23
|
}
|
|
18
24
|
export interface ReadEvent extends RecorderContext {
|
|
19
25
|
key?: string;
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
* attached to Scope instances to observe read/write/commit operations.
|
|
7
7
|
*/
|
|
8
8
|
export {};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2NvcGUgVHlwZSBEZWZpbml0aW9uc1xuICpcbiAqIENvcmUgdHlwZXMgZm9yIHRoZSBjb21wb3NhYmxlIFNjb3BlIHN5c3RlbSB3aXRoIHBsdWdnYWJsZSBSZWNvcmRlcnMuXG4gKiBBcmNoaXRlY3R1cmUgZm9sbG93cyBjb21wb3NpdGlvbi1vdmVyLWluaGVyaXRhbmNlOiBSZWNvcmRlcnMgYXJlXG4gKiBhdHRhY2hlZCB0byBTY29wZSBpbnN0YW5jZXMgdG8gb2JzZXJ2ZSByZWFkL3dyaXRlL2NvbW1pdCBvcGVyYXRpb25zLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUnVuQ29ycmVsYXRpb24gfSBmcm9tICcuLi9hdHRlbXB0L3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4uL2Vycm9ycy9lcnJvckluZm8uanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFdmVudCBUeXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZGVyQ29udGV4dCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogU3RhYmxlIHN0YWdlIGlkZW50aWZpZXIgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogVW5pcXVlIHBlci1leGVjdXRpb24tc3RlcCBpZGVudGlmaWVyLiBGb3JtYXQ6IFtzdWJmbG93UGF0aC9dc3RhZ2VJZCNleGVjdXRpb25JbmRleCAqL1xuICBydW50aW1lU3RhZ2VJZDogc3RyaW5nO1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHJ1bidzIGNvcnJlbGF0aW9uICgxMC4xKSDigJQgdGhlIHNhbWUgZnJvemVuIG9iamVjdCBhcyBgVHJhdmVyc2FsQ29udGV4dC5jb3JyZWxhdGlvbmAgb24gdGhlIGZsb3cgZXZlbnRzXG4gICAqIGFuZCBgZ2V0U25hcHNob3QoKS5jb3JyZWxhdGlvbmAuIEFic2VudCDigJQgbm8ga2V5IOKAlCB3aGVuIHRoZSBydW4ncyBlbnYgZ2F2ZSBub25lLlxuICAgKi9cbiAgcmVhZG9ubHkgY29ycmVsYXRpb24/OiBSdW5Db3JyZWxhdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkRXZlbnQgZXh0ZW5kcyBSZWNvcmRlckNvbnRleHQge1xuICBrZXk/OiBzdHJpbmc7XG4gIHZhbHVlOiB1bmtub3duO1xuICAvKiogVHJ1ZSB3aGVuIHRoZSB2YWx1ZSBoYXMgYmVlbiByZWRhY3RlZCBmb3IgUElJIHByb3RlY3Rpb24uICovXG4gIHJlZGFjdGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZUV2ZW50IGV4dGVuZHMgUmVjb3JkZXJDb250ZXh0IHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiB1bmtub3duO1xuICBvcGVyYXRpb246ICdzZXQnIHwgJ3VwZGF0ZScgfCAnZGVsZXRlJztcbiAgLyoqIFRydWUgd2hlbiB0aGUgdmFsdWUgaGFzIGJlZW4gcmVkYWN0ZWQgZm9yIFBJSSBwcm90ZWN0aW9uLiAqL1xuICByZWRhY3RlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWl0RXZlbnQgZXh0ZW5kcyBSZWNvcmRlckNvbnRleHQge1xuICBtdXRhdGlvbnM6IEFycmF5PHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogdW5rbm93bjtcbiAgICBvcGVyYXRpb246ICdzZXQnIHwgJ3VwZGF0ZScgfCAnZGVsZXRlJztcbiAgfT47XG59XG5cbi8qKlxuICogQSByZWNvcmRlciB0aHJldyBpbiBhIHNjb3BlLWNoYW5uZWwgaG9vayAoYG9wZXJhdGlvbmAgc2F5cyB3aGljaCBraW5kOlxuICogYSByZWFkLCBhIHdyaXRlLCBvciBhIGNvbW1pdCBob29rKS4gRGVsaXZlcmVkIHRvIGV2ZXJ5IHJlY29yZGVyIG9uIHRoZVxuICogc2NvcGUgY2hhbm5lbCwgaW5saW5lIGFuZCBkZWZlcnJlZCBhbGlrZSAoYHJlY29yZGVyL2hvb2tzLnRzIMK3XG4gKiByZWNvcmRlckZhaWx1cmVFdmVudGApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yRXZlbnQgZXh0ZW5kcyBSZWNvcmRlckNvbnRleHQge1xuICAvKipcbiAgICogV2hhdCB0aGUgcmVjb3JkZXIgdGhyZXcsIGluIHRoZSBzdHJ1Y3R1cmVkIGZvcm0gKDkuMzkuMCk6IGBtZXNzYWdlYCBhbmRcbiAgICogYG5hbWVgIHJlYWQgYXMgYmVmb3JlOyBgcmF3YCBpcyB0aGUgdGhyb3duIHZhbHVlIGl0c2VsZiAoYW4gYEVycm9yYCwgYVxuICAgKiBzdHJpbmcsIGFueXRoaW5nKS4gT25lIHNoYXBlIG9uIGV2ZXJ5IHBhdGgg4oCUIHVudGlsIDkuMzguMCB0aGUgaW5saW5lXG4gICAqIHBhdGhzIHBhc3NlZCB0aGUgcmF3IHRocm93biB2YWx1ZSBhbmQgdGhlIGRlZmVycmVkIHRpZXIgYSBgbmV3IEVycm9yKC4uLilgLlxuICAgKi9cbiAgZXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIG9wZXJhdGlvbjogJ3JlYWQnIHwgJ3dyaXRlJyB8ICdjb21taXQnO1xuICBrZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgYCdzY29wZSdgIG9uIGV2ZXJ5IGVuZ2luZS1kaXNwYXRjaGVkXG4gICAqIGV2ZW50LiBgaXNGbG93RXZlbnQoKWAgY2hlY2tzIGl0IGZpcnN0IChiYWNrbG9nIEIzKTsgb3B0aW9uYWwgc29cbiAgICogY29uc3VtZXItZmFicmljYXRlZCBldmVudHMgKHRlc3RzLCByZXBsYXlzKSByZW1haW4gdHlwZS12YWxpZCBhbmQgZmFsbFxuICAgKiBiYWNrIHRvIHRoZSBsZWdhY3kgcGlwZWxpbmVJZC1wcmVzZW5jZSBoZXVyaXN0aWMuXG4gICAqL1xuICBjaGFubmVsPzogJ3Njb3BlJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFnZUV2ZW50IGV4dGVuZHMgUmVjb3JkZXJDb250ZXh0IHtcbiAgZHVyYXRpb24/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF1c2VFdmVudCBleHRlbmRzIFJlY29yZGVyQ29udGV4dCB7XG4gIHBhdXNlRGF0YT86IHVua25vd247XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ3Njb3BlJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXN1bWVFdmVudCBleHRlbmRzIFJlY29yZGVyQ29udGV4dCB7XG4gIGhhc0lucHV0OiBib29sZWFuO1xuICAvKiogVGhlIHBhdXNlZCBleGVjdXRpb24gdGhpcyByZXN1bWUgY29udGludWVzICg5LjM3LjApIOKAlCBzZWUgYFRyYXZlcnNhbENvbnRleHQucmVzdW1lZEZyb21gLiAqL1xuICByZXN1bWVkRnJvbT86IGltcG9ydCgnLi4vZW5naW5lL25hcnJhdGl2ZS90eXBlcy5qcycpLlJlc3VtZUxpbms7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ3Njb3BlJztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUmVkYWN0aW9uIFBvbGljeVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIGBSZWRhY3Rpb25Qb2xpY3lgIGFuZCBgUmVkYWN0aW9uUmVwb3J0YCBhcmUgT1dORUQgYnkgYG1lbW9yeS9yZWRhY3Rpb24udHNgXG4gKiAodGhlIE9ORSBvd25lciBvZiB0aGUgdmVyZGljdCDigJQgc2VlIHRoZSBsYXcgdGhlcmUpOyB0aGV5IGFyZSByZS1leHBvcnRlZFxuICogaGVyZSBzbyB0aGUgcHVibGljIHBhdGggYGZvb3RwcmludGpzYCDihpIgYFJlZGFjdGlvblBvbGljeWAgaXMgdW5jaGFuZ2VkLlxuICovXG5leHBvcnQgdHlwZSB7IFJlZGFjdGlvblBvbGljeSwgUmVkYWN0aW9uUmVwb3J0IH0gZnJvbSAnLi4vbWVtb3J5L3JlZGFjdGlvbi5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNjb3BlUmVjb3JkZXIgSW50ZXJmYWNlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBzY29wZSBvcGVyYXRpb25zLlxuICpcbiAqIEFsbCBtZXRob2RzIGFyZSBvcHRpb25hbCDigJQgaW1wbGVtZW50IG9ubHkgdGhlIGhvb2tzIHlvdSBuZWVkLlxuICogUmVjb3JkZXJzIGFyZSBpbnZva2VkIHN5bmNocm9ub3VzbHkgaW4gYXR0YWNobWVudCBvcmRlci5cbiAqIElmIGEgcmVjb3JkZXIgdGhyb3dzLCB0aGUgZXJyb3IgaXMgY2F1Z2h0IGFuZCBwYXNzZWQgdG8gb25FcnJvclxuICogaG9va3Mgb2Ygb3RoZXIgcmVjb3JkZXJzOyB0aGUgc2NvcGUgb3BlcmF0aW9uIGNvbnRpbnVlcyBub3JtYWxseS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZVJlY29yZGVyIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgb25SZWFkPyhldmVudDogUmVhZEV2ZW50KTogdm9pZDtcbiAgb25Xcml0ZT8oZXZlbnQ6IFdyaXRlRXZlbnQpOiB2b2lkO1xuICBvbkNvbW1pdD8oZXZlbnQ6IENvbW1pdEV2ZW50KTogdm9pZDtcbiAgb25FcnJvcj8oZXZlbnQ6IEVycm9yRXZlbnQpOiB2b2lkO1xuICBvblN0YWdlU3RhcnQ/KGV2ZW50OiBTdGFnZUV2ZW50KTogdm9pZDtcbiAgb25TdGFnZUVuZD8oZXZlbnQ6IFN0YWdlRXZlbnQpOiB2b2lkO1xuICBvblBhdXNlPyhldmVudDogUGF1c2VFdmVudCk6IHZvaWQ7XG4gIG9uUmVzdW1lPyhldmVudDogUmVzdW1lRXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogRmlyZXMgZm9yIGV2ZXJ5IGBzY29wZS4kZW1pdChuYW1lLCBwYXlsb2FkKWAgY2FsbCBkdXJpbmcgYSBzdGFnZS5cbiAgICogT3B0aW9uYWwg4oCUIGltcGxlbWVudCBvbmx5IGlmIHlvdSB3YW50IHRvIG9ic2VydmUgY29uc3VtZXItZW1pdHRlZFxuICAgKiBzdHJ1Y3R1cmVkIGV2ZW50cy4gU2VlIGBFbWl0UmVjb3JkZXJgIGZvciB0aGUgZm9jdXNlZCBpbnRlcmZhY2VcbiAgICogKHN0cnVjdHVyYWxseSBjb21wYXRpYmxlOyB0aGlzIGZpZWxkIGlzIHRoZSBzYW1lIHNoYXBlKS5cbiAgICpcbiAgICogQHNlZSBFbWl0UmVjb3JkZXIgaW4gYHNyYy9saWIvcmVjb3JkZXIvRW1pdFJlY29yZGVyLnRzYFxuICAgKi9cbiAgb25FbWl0PyhldmVudDogaW1wb3J0KCcuLi9yZWNvcmRlci9FbWl0UmVjb3JkZXIuanMnKS5FbWl0RXZlbnQpOiB2b2lkO1xuICAvKiogUmVzZXQgc3RhdGUgYmVmb3JlIGVhY2ggZXhlY3V0b3IucnVuKCkg4oCUIHByZXZlbnRzIGNyb3NzLXJ1biBhY2N1bXVsYXRpb24uICovXG4gIGNsZWFyPygpOiB2b2lkO1xuICAvKiogRXhwb3NlIGNvbGxlY3RlZCBkYXRhIGZvciBpbmNsdXNpb24gaW4gZXhlY3V0b3IuZ2V0U25hcHNob3QoKS5yZWNvcmRlcnMuICovXG4gIHRvU25hcHNob3Q/KCk6IGltcG9ydCgnLi4vcmVjb3JkZXIvc25hcHNob3QuanMnKS5SZWNvcmRlckJ1bmRsZTtcbn1cbiJdfQ==
|