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
|
@@ -47,4 +47,130 @@ export function errorSentence(ctx) {
|
|
|
47
47
|
export function validationSentence(details) {
|
|
48
48
|
return ` Validation issues: ${details}.`;
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Whether the narrative tells an attempt (P1b). A STAGE series of ONE attempt — a stage run on the attempt runner
|
|
52
|
+
* only because of a `timeoutMs` or the run's deadline — that succeeded or paused says nothing the stage's own line
|
|
53
|
+
* does not, so it is not told (its record is still on the tree and the hook). Every other attempt is — every call
|
|
54
|
+
* and every observed attempt too (P2): the stage's own line never mentions them.
|
|
55
|
+
*/
|
|
56
|
+
export function isAttemptTold(record) {
|
|
57
|
+
return record.kind !== 'stage' || record.of !== 1 || (record.outcome !== 'ok' && record.outcome !== 'paused');
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* One attempt of a retried stage, as one sentence (10.1): its outcome and duration, the cause of a failure
|
|
61
|
+
* (`category: message`, the category left out when it is `unknown`), and the decision — the wait before a retry,
|
|
62
|
+
* or why the series stopped. The error is the record's SERVED message, so a redacted error reads redacted here.
|
|
63
|
+
* Under a run deadline the decision also says the time left (P1b).
|
|
64
|
+
*
|
|
65
|
+
* Attempt 1 of 3 at Fetch rate failed in 812ms (rate-limited: 429), retrying in 4s.
|
|
66
|
+
* Attempt 3 of 3 at Fetch rate succeeded in 31ms.
|
|
67
|
+
* Attempt 1 of 4 at Charge card failed in 120ms (permanent: card declined); stopped: retryOn declined.
|
|
68
|
+
* Attempt 2 of 3 at Fetch rate timed out after 40s, retrying in 2s (70s left).
|
|
69
|
+
* Attempt 2 of 4 at Charge card timed out after 20s; stopped: no time left (300ms left, next wait 2s).
|
|
70
|
+
*/
|
|
71
|
+
export function attemptSentence(stageName, record) {
|
|
72
|
+
if (record.kind === 'call')
|
|
73
|
+
return callSentence(record);
|
|
74
|
+
if (record.kind === 'observed')
|
|
75
|
+
return observedSentence(record);
|
|
76
|
+
const ceiling = record.of !== undefined ? ` of ${record.of}` : '';
|
|
77
|
+
return `Attempt ${record.attempt}${ceiling} at ${stageName} ${attemptOutcome(record)}${effectClause(record)}${attemptDecision(record)}.`;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* One attempt of a call a stage made (`scope.$call`, P2), by its target — a single call (`attempts: 1`) says only
|
|
81
|
+
* how it went, since "attempt 1 of 1" and "no attempts left" add nothing:
|
|
82
|
+
*
|
|
83
|
+
* Call inventory.lookup succeeded in 12ms.
|
|
84
|
+
* Call stripe.quotes.create, attempt 1 of 3, failed in 812ms (rate-limited: 429), retrying in 4s.
|
|
85
|
+
*/
|
|
86
|
+
function callSentence(record) {
|
|
87
|
+
const target = record.target ?? 'call';
|
|
88
|
+
if (record.of === 1) {
|
|
89
|
+
const decision = record.reason === 'exhausted' ? '' : attemptDecision(record);
|
|
90
|
+
return `Call ${target} ${attemptOutcome(record)}${effectClause(record)}${decision}.`;
|
|
91
|
+
}
|
|
92
|
+
const ceiling = record.of !== undefined ? ` of ${record.of}` : '';
|
|
93
|
+
return `Call ${target}, attempt ${record.attempt}${ceiling}, ${attemptOutcome(record)}${effectClause(record)}${attemptDecision(record)}.`;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* One attempt an outside system ran on its own, as its adapter reported it (`observed()`, P2). No decision clause:
|
|
97
|
+
* the system decided what followed, not the library.
|
|
98
|
+
*
|
|
99
|
+
* Observed: the stripe SDK made attempt 2 of 3, failed in 600ms (server: busy).
|
|
100
|
+
*/
|
|
101
|
+
function observedSentence(record) {
|
|
102
|
+
const who = record.source === undefined || record.source === 'sdk'
|
|
103
|
+
? `the ${record.target ?? 'outside'} SDK`
|
|
104
|
+
: `${record.target ?? 'outside'} (${record.source})`;
|
|
105
|
+
const ceiling = record.of !== undefined ? ` of ${record.of}` : '';
|
|
106
|
+
return `Observed: ${who} made attempt ${record.attempt}${ceiling}, ${attemptOutcome(record)}.`;
|
|
107
|
+
}
|
|
108
|
+
function attemptOutcome(record) {
|
|
109
|
+
const took = formatDuration(record.durationMs);
|
|
110
|
+
switch (record.outcome) {
|
|
111
|
+
case 'ok':
|
|
112
|
+
return `succeeded in ${took}`;
|
|
113
|
+
case 'timeout':
|
|
114
|
+
return `timed out after ${took}`;
|
|
115
|
+
case 'paused':
|
|
116
|
+
return `paused after ${took}`;
|
|
117
|
+
case 'aborted':
|
|
118
|
+
return `was aborted after ${took}${record.error ? ` (${record.error.message})` : ''}`;
|
|
119
|
+
default:
|
|
120
|
+
return `failed in ${took}${attemptCause(record)}`;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* A touching attempt whose effect is unknown says so (P3) — the outcome alone ("failed", "timed out") would read as
|
|
125
|
+
* "nothing happened", and nothing may be retried blindly on that reading. `applied` and `none` add nothing the
|
|
126
|
+
* outcome does not say. Absent on a target that touches nothing (byte identity).
|
|
127
|
+
*
|
|
128
|
+
* Attempt 2 of 2 at Charge card timed out after 20s, effect on stripe unknown; stopped: no attempts left.
|
|
129
|
+
*/
|
|
130
|
+
function effectClause(record) {
|
|
131
|
+
return record.effect === 'unknown' && record.system !== undefined ? `, effect on ${record.system} unknown` : '';
|
|
132
|
+
}
|
|
133
|
+
function attemptCause(record) {
|
|
134
|
+
if (!record.error)
|
|
135
|
+
return '';
|
|
136
|
+
const category = record.category && record.category !== 'unknown' ? `${record.category}: ` : '';
|
|
137
|
+
return ` (${category}${record.error.message})`;
|
|
138
|
+
}
|
|
139
|
+
function attemptDecision(record) {
|
|
140
|
+
if (record.next === 'retry') {
|
|
141
|
+
const left = record.timeLeftMs !== undefined ? ` (${formatDuration(Math.max(0, record.timeLeftMs))} left)` : '';
|
|
142
|
+
return (record.delayMs ? `, retrying in ${formatDuration(record.delayMs)}` : ', retrying immediately') + left;
|
|
143
|
+
}
|
|
144
|
+
if (record.next === 'done')
|
|
145
|
+
return '';
|
|
146
|
+
switch (record.reason) {
|
|
147
|
+
case 'exhausted':
|
|
148
|
+
return '; stopped: no attempts left';
|
|
149
|
+
case 'declined':
|
|
150
|
+
// A throwing predicate is "do not retry" too — but it is a broken predicate, not a verdict.
|
|
151
|
+
return record.retryOnThrew ? '; stopped: retryOn threw' : '; stopped: retryOn declined';
|
|
152
|
+
case 'no-time-left': {
|
|
153
|
+
const facts = [
|
|
154
|
+
...(record.timeLeftMs !== undefined ? [`${formatDuration(Math.max(0, record.timeLeftMs))} left`] : []),
|
|
155
|
+
...(record.delayMs !== undefined ? [`next wait ${formatDuration(record.delayMs)}`] : []),
|
|
156
|
+
];
|
|
157
|
+
return `; stopped: no time left${facts.length > 0 ? ` (${facts.join(', ')})` : ''}`;
|
|
158
|
+
}
|
|
159
|
+
case 'aborted':
|
|
160
|
+
// An attempt that threw the abort's own reason already says it ("was aborted"); an attempt that failed on
|
|
161
|
+
// its own while the run aborted says its failure, then why the series stopped.
|
|
162
|
+
return record.outcome === 'aborted' ? '' : '; stopped: the run was aborted';
|
|
163
|
+
case 'paused':
|
|
164
|
+
// The outcome already says it.
|
|
165
|
+
return '';
|
|
166
|
+
default:
|
|
167
|
+
return `; stopped: ${record.reason}`;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/** A duration as the narrative says it: whole milliseconds under a second, seconds (one decimal at most) above. */
|
|
171
|
+
export function formatDuration(ms) {
|
|
172
|
+
if (ms < 1_000)
|
|
173
|
+
return `${Math.round(ms)}ms`;
|
|
174
|
+
return `${Number((ms / 1_000).toFixed(1))}s`;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudGVuY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvbmFycmF0aXZlL2Zvcm1hdHRpbmcvc2VudGVuY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUEwRDtJQUMxRixPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDO0FBQ3ZHLENBQUM7QUFFRCxxRkFBcUY7QUFDckYsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEdBQXdFO0lBQ3ZHLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDOUIsSUFBSSxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQyxPQUFPLE1BQU0sR0FBRyxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsU0FBUyxpQkFBaUIsVUFBVSxHQUFHLENBQUM7SUFDL0UsQ0FBQztJQUNELElBQUksR0FBRyxDQUFDLFdBQVc7UUFBRSxPQUFPLE1BQU0sR0FBRyxDQUFDLFdBQVcsY0FBYyxVQUFVLEdBQUcsQ0FBQztJQUM3RSxJQUFJLEdBQUcsQ0FBQyxTQUFTO1FBQUUsT0FBTyx3QkFBd0IsR0FBRyxDQUFDLFNBQVMsMkJBQTJCLFVBQVUsR0FBRyxDQUFDO0lBQ3hHLE9BQU8sK0NBQStDLFVBQVUsR0FBRyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQXNCO0lBQ2pELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sZ0JBQWdCLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxvQkFBb0IsS0FBSyxHQUFHLENBQUM7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QUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RHLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDekYsQ0FBQztZQUNGLE9BQU8sMEJBQTBCLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEYsQ0FBQztRQUNELEtBQUssU0FBUztZQUNaLDBHQUEwRztZQUMxRywrRUFBK0U7WUFDL0UsT0FBTyxNQUFNLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQztRQUM5RSxLQUFLLFFBQVE7WUFDWCwrQkFBK0I7WUFDL0IsT0FBTyxFQUFFLENBQUM7UUFDWjtZQUNFLE9BQU8sY0FBYyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDekMsQ0FBQztBQUNILENBQUM7QUFFRCxtSEFBbUg7QUFDbkgsTUFBTSxVQUFVLGNBQWMsQ0FBQyxFQUFVO0lBQ3ZDLElBQUksRUFBRSxHQUFHLEtBQUs7UUFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQzdDLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFNoYXJlZCBFbmdsaXNoIHNlbnRlbmNlIGJvZGllcywgd2l0aCBubyBldmVudCBjYXB0dXJlIG9yIHJlY29yZGVyIHN0YXRlLiAqL1xuaW1wb3J0IHR5cGUgeyBBdHRlbXB0UmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vYXR0ZW1wdC90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25Jc3N1ZSB9IGZyb20gJy4uLy4uLy4uL3NjaGVtYS9lcnJvcnMuanMnO1xuaW1wb3J0IHR5cGUge1xuICBCcmVha1JlbmRlckNvbnRleHQsXG4gIERlY2lzaW9uUmVuZGVyQ29udGV4dCxcbiAgRXJyb3JSZW5kZXJDb250ZXh0LFxuICBGb3JrUmVuZGVyQ29udGV4dCxcbiAgTG9vcFJlbmRlckNvbnRleHQsXG4gIFN0YWdlUmVuZGVyQ29udGV4dCxcbn0gZnJvbSAnLi4vbmFycmF0aXZlVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBGbG93UmVzdW1lRXZlbnQgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXh0U3RhZ2VTZW50ZW5jZShjdHg6IFBpY2s8U3RhZ2VSZW5kZXJDb250ZXh0LCAnc3RhZ2VOYW1lJyB8ICdkZXNjcmlwdGlvbic+KTogc3RyaW5nIHtcbiAgcmV0dXJuIGN0eC5kZXNjcmlwdGlvbiA/IGBOZXh0IHN0ZXA6ICR7Y3R4LmRlc2NyaXB0aW9ufS5gIDogYE5leHQsIGl0IG1vdmVkIG9uIHRvICR7Y3R4LnN0YWdlTmFtZX0uYDtcbn1cblxuLyoqIEV2aWRlbmNlIHRha2VzIHByZWNlZGVuY2UgYXQgdGhlIENvbWJpbmVkIHJlY29yZGVyOyB0aGlzIGlzIG9ubHkgaXRzIGZhbGxiYWNrLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY2lzaW9uU2VudGVuY2UoY3R4OiBQaWNrPERlY2lzaW9uUmVuZGVyQ29udGV4dCwgJ2Nob3NlbicgfCAnZGVzY3JpcHRpb24nIHwgJ3JhdGlvbmFsZSc+KTogc3RyaW5nIHtcbiAgY29uc3QgYnJhbmNoTmFtZSA9IGN0eC5jaG9zZW47XG4gIGlmIChjdHguZGVzY3JpcHRpb24gJiYgY3R4LnJhdGlvbmFsZSkge1xuICAgIHJldHVybiBgSXQgJHtjdHguZGVzY3JpcHRpb259OiAke2N0eC5yYXRpb25hbGV9LCBzbyBpdCBjaG9zZSAke2JyYW5jaE5hbWV9LmA7XG4gIH1cbiAgaWYgKGN0eC5kZXNjcmlwdGlvbikgcmV0dXJuIGBJdCAke2N0eC5kZXNjcmlwdGlvbn0gYW5kIGNob3NlICR7YnJhbmNoTmFtZX0uYDtcbiAgaWYgKGN0eC5yYXRpb25hbGUpIHJldHVybiBgQSBkZWNpc2lvbiB3YXMgbWFkZTogJHtjdHgucmF0aW9uYWxlfSwgc28gdGhlIHBhdGggdGFrZW4gd2FzICR7YnJhbmNoTmFtZX0uYDtcbiAgcmV0dXJuIGBBIGRlY2lzaW9uIHdhcyBtYWRlLCBhbmQgdGhlIHBhdGggdGFrZW4gd2FzICR7YnJhbmNoTmFtZX0uYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcmtTZW50ZW5jZShjdHg6IEZvcmtSZW5kZXJDb250ZXh0KTogc3RyaW5nIHtcbiAgY29uc3QgbmFtZXMgPSBjdHguY2hpbGRyZW4uam9pbignLCAnKTtcbiAgcmV0dXJuIGBGb3JraW5nIGludG8gJHtjdHguY2hpbGRyZW4ubGVuZ3RofSBwYXJhbGxlbCBwYXRoczogJHtuYW1lc30uYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvb3BTZW50ZW5jZShjdHg6IExvb3BSZW5kZXJDb250ZXh0KTogc3RyaW5nIHtcbiAgcmV0dXJuIGN0eC5kZXNjcmlwdGlvblxuICAgID8gYE9uIHBhc3MgJHtjdHguaXRlcmF0aW9ufTogJHtjdHguZGVzY3JpcHRpb259IGFnYWluLmBcbiAgICA6IGBPbiBwYXNzICR7Y3R4Lml0ZXJhdGlvbn0gdGhyb3VnaCAke2N0eC50YXJnZXR9LmA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBicmVha1NlbnRlbmNlKGN0eDogQnJlYWtSZW5kZXJDb250ZXh0KTogc3RyaW5nIHtcbiAgcmV0dXJuIGBFeGVjdXRpb24gc3RvcHBlZCBhdCAke2N0eC5zdGFnZU5hbWV9LmA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXVzZVNlbnRlbmNlKGN0eDogUGljazxCcmVha1JlbmRlckNvbnRleHQsICdzdGFnZU5hbWUnPik6IHN0cmluZyB7XG4gIHJldHVybiBgRXhlY3V0aW9uIHBhdXNlZCBhdCAke2N0eC5zdGFnZU5hbWV9LmA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXN1bWVTZW50ZW5jZShjdHg6IFBpY2s8Rmxvd1Jlc3VtZUV2ZW50LCAnc3RhZ2VOYW1lJyB8ICdoYXNJbnB1dCc+KTogc3RyaW5nIHtcbiAgY29uc3Qgc3VmZml4ID0gY3R4Lmhhc0lucHV0ID8gJyB3aXRoIGlucHV0LicgOiAnLic7XG4gIHJldHVybiBgRXhlY3V0aW9uIHJlc3VtZWQgYXQgJHtjdHguc3RhZ2VOYW1lfSR7c3VmZml4fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0aW9uRGV0YWlscyhpc3N1ZXM6IHJlYWRvbmx5IFZhbGlkYXRpb25Jc3N1ZVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzc3Vlc1xuICAgIC5tYXAoKGlzc3VlKSA9PiB7XG4gICAgICBjb25zdCBwYXRoID0gaXNzdWUucGF0aC5sZW5ndGggPiAwID8gaXNzdWUucGF0aC5qb2luKCcuJykgOiAnKHJvb3QpJztcbiAgICAgIHJldHVybiBgJHtwYXRofTogJHtpc3N1ZS5tZXNzYWdlfWA7XG4gICAgfSlcbiAgICAuam9pbignOyAnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVycm9yU2VudGVuY2UoY3R4OiBQaWNrPEVycm9yUmVuZGVyQ29udGV4dCwgJ3N0YWdlTmFtZScgfCAnbWVzc2FnZSc+KTogc3RyaW5nIHtcbiAgcmV0dXJuIGBBbiBlcnJvciBvY2N1cnJlZCBhdCAke2N0eC5zdGFnZU5hbWV9OiAke2N0eC5tZXNzYWdlfS5gO1xufVxuXG4vKiogQ2FsbGVycyByZXRhaW4gdGhlaXIgZGlzdGluY3QgcnVsZXMgZm9yIHdoZXRoZXIgdG8gZGlzcGxheSBlbXB0eSBkZXRhaWxzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRpb25TZW50ZW5jZShkZXRhaWxzOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCBWYWxpZGF0aW9uIGlzc3VlczogJHtkZXRhaWxzfS5gO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIG5hcnJhdGl2ZSB0ZWxscyBhbiBhdHRlbXB0IChQMWIpLiBBIFNUQUdFIHNlcmllcyBvZiBPTkUgYXR0ZW1wdCDigJQgYSBzdGFnZSBydW4gb24gdGhlIGF0dGVtcHQgcnVubmVyXG4gKiBvbmx5IGJlY2F1c2Ugb2YgYSBgdGltZW91dE1zYCBvciB0aGUgcnVuJ3MgZGVhZGxpbmUg4oCUIHRoYXQgc3VjY2VlZGVkIG9yIHBhdXNlZCBzYXlzIG5vdGhpbmcgdGhlIHN0YWdlJ3Mgb3duIGxpbmVcbiAqIGRvZXMgbm90LCBzbyBpdCBpcyBub3QgdG9sZCAoaXRzIHJlY29yZCBpcyBzdGlsbCBvbiB0aGUgdHJlZSBhbmQgdGhlIGhvb2spLiBFdmVyeSBvdGhlciBhdHRlbXB0IGlzIOKAlCBldmVyeSBjYWxsXG4gKiBhbmQgZXZlcnkgb2JzZXJ2ZWQgYXR0ZW1wdCB0b28gKFAyKTogdGhlIHN0YWdlJ3Mgb3duIGxpbmUgbmV2ZXIgbWVudGlvbnMgdGhlbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQXR0ZW1wdFRvbGQocmVjb3JkOiBBdHRlbXB0UmVjb3JkKTogYm9vbGVhbiB7XG4gIHJldHVybiByZWNvcmQua2luZCAhPT0gJ3N0YWdlJyB8fCByZWNvcmQub2YgIT09IDEgfHwgKHJlY29yZC5vdXRjb21lICE9PSAnb2snICYmIHJlY29yZC5vdXRjb21lICE9PSAncGF1c2VkJyk7XG59XG5cbi8qKlxuICogT25lIGF0dGVtcHQgb2YgYSByZXRyaWVkIHN0YWdlLCBhcyBvbmUgc2VudGVuY2UgKDEwLjEpOiBpdHMgb3V0Y29tZSBhbmQgZHVyYXRpb24sIHRoZSBjYXVzZSBvZiBhIGZhaWx1cmVcbiAqIChgY2F0ZWdvcnk6IG1lc3NhZ2VgLCB0aGUgY2F0ZWdvcnkgbGVmdCBvdXQgd2hlbiBpdCBpcyBgdW5rbm93bmApLCBhbmQgdGhlIGRlY2lzaW9uIOKAlCB0aGUgd2FpdCBiZWZvcmUgYSByZXRyeSxcbiAqIG9yIHdoeSB0aGUgc2VyaWVzIHN0b3BwZWQuIFRoZSBlcnJvciBpcyB0aGUgcmVjb3JkJ3MgU0VSVkVEIG1lc3NhZ2UsIHNvIGEgcmVkYWN0ZWQgZXJyb3IgcmVhZHMgcmVkYWN0ZWQgaGVyZS5cbiAqIFVuZGVyIGEgcnVuIGRlYWRsaW5lIHRoZSBkZWNpc2lvbiBhbHNvIHNheXMgdGhlIHRpbWUgbGVmdCAoUDFiKS5cbiAqXG4gKiAgIEF0dGVtcHQgMSBvZiAzIGF0IEZldGNoIHJhdGUgZmFpbGVkIGluIDgxMm1zIChyYXRlLWxpbWl0ZWQ6IDQyOSksIHJldHJ5aW5nIGluIDRzLlxuICogICBBdHRlbXB0IDMgb2YgMyBhdCBGZXRjaCByYXRlIHN1Y2NlZWRlZCBpbiAzMW1zLlxuICogICBBdHRlbXB0IDEgb2YgNCBhdCBDaGFyZ2UgY2FyZCBmYWlsZWQgaW4gMTIwbXMgKHBlcm1hbmVudDogY2FyZCBkZWNsaW5lZCk7IHN0b3BwZWQ6IHJldHJ5T24gZGVjbGluZWQuXG4gKiAgIEF0dGVtcHQgMiBvZiAzIGF0IEZldGNoIHJhdGUgdGltZWQgb3V0IGFmdGVyIDQwcywgcmV0cnlpbmcgaW4gMnMgKDcwcyBsZWZ0KS5cbiAqICAgQXR0ZW1wdCAyIG9mIDQgYXQgQ2hhcmdlIGNhcmQgdGltZWQgb3V0IGFmdGVyIDIwczsgc3RvcHBlZDogbm8gdGltZSBsZWZ0ICgzMDBtcyBsZWZ0LCBuZXh0IHdhaXQgMnMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0ZW1wdFNlbnRlbmNlKHN0YWdlTmFtZTogc3RyaW5nLCByZWNvcmQ6IEF0dGVtcHRSZWNvcmQpOiBzdHJpbmcge1xuICBpZiAocmVjb3JkLmtpbmQgPT09ICdjYWxsJykgcmV0dXJuIGNhbGxTZW50ZW5jZShyZWNvcmQpO1xuICBpZiAocmVjb3JkLmtpbmQgPT09ICdvYnNlcnZlZCcpIHJldHVybiBvYnNlcnZlZFNlbnRlbmNlKHJlY29yZCk7XG4gIGNvbnN0IGNlaWxpbmcgPSByZWNvcmQub2YgIT09IHVuZGVmaW5lZCA/IGAgb2YgJHtyZWNvcmQub2Z9YCA6ICcnO1xuICByZXR1cm4gYEF0dGVtcHQgJHtyZWNvcmQuYXR0ZW1wdH0ke2NlaWxpbmd9IGF0ICR7c3RhZ2VOYW1lfSAke2F0dGVtcHRPdXRjb21lKHJlY29yZCl9JHtlZmZlY3RDbGF1c2UoXG4gICAgcmVjb3JkLFxuICApfSR7YXR0ZW1wdERlY2lzaW9uKHJlY29yZCl9LmA7XG59XG5cbi8qKlxuICogT25lIGF0dGVtcHQgb2YgYSBjYWxsIGEgc3RhZ2UgbWFkZSAoYHNjb3BlLiRjYWxsYCwgUDIpLCBieSBpdHMgdGFyZ2V0IOKAlCBhIHNpbmdsZSBjYWxsIChgYXR0ZW1wdHM6IDFgKSBzYXlzIG9ubHlcbiAqIGhvdyBpdCB3ZW50LCBzaW5jZSBcImF0dGVtcHQgMSBvZiAxXCIgYW5kIFwibm8gYXR0ZW1wdHMgbGVmdFwiIGFkZCBub3RoaW5nOlxuICpcbiAqICAgQ2FsbCBpbnZlbnRvcnkubG9va3VwIHN1Y2NlZWRlZCBpbiAxMm1zLlxuICogICBDYWxsIHN0cmlwZS5xdW90ZXMuY3JlYXRlLCBhdHRlbXB0IDEgb2YgMywgZmFpbGVkIGluIDgxMm1zIChyYXRlLWxpbWl0ZWQ6IDQyOSksIHJldHJ5aW5nIGluIDRzLlxuICovXG5mdW5jdGlvbiBjYWxsU2VudGVuY2UocmVjb3JkOiBBdHRlbXB0UmVjb3JkKTogc3RyaW5nIHtcbiAgY29uc3QgdGFyZ2V0ID0gcmVjb3JkLnRhcmdldCA/PyAnY2FsbCc7XG4gIGlmIChyZWNvcmQub2YgPT09IDEpIHtcbiAgICBjb25zdCBkZWNpc2lvbiA9IHJlY29yZC5yZWFzb24gPT09ICdleGhhdXN0ZWQnID8gJycgOiBhdHRlbXB0RGVjaXNpb24ocmVjb3JkKTtcbiAgICByZXR1cm4gYENhbGwgJHt0YXJnZXR9ICR7YXR0ZW1wdE91dGNvbWUocmVjb3JkKX0ke2VmZmVjdENsYXVzZShyZWNvcmQpfSR7ZGVjaXNpb259LmA7XG4gIH1cbiAgY29uc3QgY2VpbGluZyA9IHJlY29yZC5vZiAhPT0gdW5kZWZpbmVkID8gYCBvZiAke3JlY29yZC5vZn1gIDogJyc7XG4gIHJldHVybiBgQ2FsbCAke3RhcmdldH0sIGF0dGVtcHQgJHtyZWNvcmQuYXR0ZW1wdH0ke2NlaWxpbmd9LCAke2F0dGVtcHRPdXRjb21lKHJlY29yZCl9JHtlZmZlY3RDbGF1c2UoXG4gICAgcmVjb3JkLFxuICApfSR7YXR0ZW1wdERlY2lzaW9uKHJlY29yZCl9LmA7XG59XG5cbi8qKlxuICogT25lIGF0dGVtcHQgYW4gb3V0c2lkZSBzeXN0ZW0gcmFuIG9uIGl0cyBvd24sIGFzIGl0cyBhZGFwdGVyIHJlcG9ydGVkIGl0IChgb2JzZXJ2ZWQoKWAsIFAyKS4gTm8gZGVjaXNpb24gY2xhdXNlOlxuICogdGhlIHN5c3RlbSBkZWNpZGVkIHdoYXQgZm9sbG93ZWQsIG5vdCB0aGUgbGlicmFyeS5cbiAqXG4gKiAgIE9ic2VydmVkOiB0aGUgc3RyaXBlIFNESyBtYWRlIGF0dGVtcHQgMiBvZiAzLCBmYWlsZWQgaW4gNjAwbXMgKHNlcnZlcjogYnVzeSkuXG4gKi9cbmZ1bmN0aW9uIG9ic2VydmVkU2VudGVuY2UocmVjb3JkOiBBdHRlbXB0UmVjb3JkKTogc3RyaW5nIHtcbiAgY29uc3Qgd2hvID1cbiAgICByZWNvcmQuc291cmNlID09PSB1bmRlZmluZWQgfHwgcmVjb3JkLnNvdXJjZSA9PT0gJ3NkaydcbiAgICAgID8gYHRoZSAke3JlY29yZC50YXJnZXQgPz8gJ291dHNpZGUnfSBTREtgXG4gICAgICA6IGAke3JlY29yZC50YXJnZXQgPz8gJ291dHNpZGUnfSAoJHtyZWNvcmQuc291cmNlfSlgO1xuICBjb25zdCBjZWlsaW5nID0gcmVjb3JkLm9mICE9PSB1bmRlZmluZWQgPyBgIG9mICR7cmVjb3JkLm9mfWAgOiAnJztcbiAgcmV0dXJuIGBPYnNlcnZlZDogJHt3aG99IG1hZGUgYXR0ZW1wdCAke3JlY29yZC5hdHRlbXB0fSR7Y2VpbGluZ30sICR7YXR0ZW1wdE91dGNvbWUocmVjb3JkKX0uYDtcbn1cblxuZnVuY3Rpb24gYXR0ZW1wdE91dGNvbWUocmVjb3JkOiBBdHRlbXB0UmVjb3JkKTogc3RyaW5nIHtcbiAgY29uc3QgdG9vayA9IGZvcm1hdER1cmF0aW9uKHJlY29yZC5kdXJhdGlvbk1zKTtcbiAgc3dpdGNoIChyZWNvcmQub3V0Y29tZSkge1xuICAgIGNhc2UgJ29rJzpcbiAgICAgIHJldHVybiBgc3VjY2VlZGVkIGluICR7dG9va31gO1xuICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgcmV0dXJuIGB0aW1lZCBvdXQgYWZ0ZXIgJHt0b29rfWA7XG4gICAgY2FzZSAncGF1c2VkJzpcbiAgICAgIHJldHVybiBgcGF1c2VkIGFmdGVyICR7dG9va31gO1xuICAgIGNhc2UgJ2Fib3J0ZWQnOlxuICAgICAgcmV0dXJuIGB3YXMgYWJvcnRlZCBhZnRlciAke3Rvb2t9JHtyZWNvcmQuZXJyb3IgPyBgICgke3JlY29yZC5lcnJvci5tZXNzYWdlfSlgIDogJyd9YDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGBmYWlsZWQgaW4gJHt0b29rfSR7YXR0ZW1wdENhdXNlKHJlY29yZCl9YDtcbiAgfVxufVxuXG4vKipcbiAqIEEgdG91Y2hpbmcgYXR0ZW1wdCB3aG9zZSBlZmZlY3QgaXMgdW5rbm93biBzYXlzIHNvIChQMykg4oCUIHRoZSBvdXRjb21lIGFsb25lIChcImZhaWxlZFwiLCBcInRpbWVkIG91dFwiKSB3b3VsZCByZWFkIGFzXG4gKiBcIm5vdGhpbmcgaGFwcGVuZWRcIiwgYW5kIG5vdGhpbmcgbWF5IGJlIHJldHJpZWQgYmxpbmRseSBvbiB0aGF0IHJlYWRpbmcuIGBhcHBsaWVkYCBhbmQgYG5vbmVgIGFkZCBub3RoaW5nIHRoZVxuICogb3V0Y29tZSBkb2VzIG5vdCBzYXkuIEFic2VudCBvbiBhIHRhcmdldCB0aGF0IHRvdWNoZXMgbm90aGluZyAoYnl0ZSBpZGVudGl0eSkuXG4gKlxuICogICBBdHRlbXB0IDIgb2YgMiBhdCBDaGFyZ2UgY2FyZCB0aW1lZCBvdXQgYWZ0ZXIgMjBzLCBlZmZlY3Qgb24gc3RyaXBlIHVua25vd247IHN0b3BwZWQ6IG5vIGF0dGVtcHRzIGxlZnQuXG4gKi9cbmZ1bmN0aW9uIGVmZmVjdENsYXVzZShyZWNvcmQ6IEF0dGVtcHRSZWNvcmQpOiBzdHJpbmcge1xuICByZXR1cm4gcmVjb3JkLmVmZmVjdCA9PT0gJ3Vua25vd24nICYmIHJlY29yZC5zeXN0ZW0gIT09IHVuZGVmaW5lZCA/IGAsIGVmZmVjdCBvbiAke3JlY29yZC5zeXN0ZW19IHVua25vd25gIDogJyc7XG59XG5cbmZ1bmN0aW9uIGF0dGVtcHRDYXVzZShyZWNvcmQ6IEF0dGVtcHRSZWNvcmQpOiBzdHJpbmcge1xuICBpZiAoIXJlY29yZC5lcnJvcikgcmV0dXJuICcnO1xuICBjb25zdCBjYXRlZ29yeSA9IHJlY29yZC5jYXRlZ29yeSAmJiByZWNvcmQuY2F0ZWdvcnkgIT09ICd1bmtub3duJyA/IGAke3JlY29yZC5jYXRlZ29yeX06IGAgOiAnJztcbiAgcmV0dXJuIGAgKCR7Y2F0ZWdvcnl9JHtyZWNvcmQuZXJyb3IubWVzc2FnZX0pYDtcbn1cblxuZnVuY3Rpb24gYXR0ZW1wdERlY2lzaW9uKHJlY29yZDogQXR0ZW1wdFJlY29yZCk6IHN0cmluZyB7XG4gIGlmIChyZWNvcmQubmV4dCA9PT0gJ3JldHJ5Jykge1xuICAgIGNvbnN0IGxlZnQgPSByZWNvcmQudGltZUxlZnRNcyAhPT0gdW5kZWZpbmVkID8gYCAoJHtmb3JtYXREdXJhdGlvbihNYXRoLm1heCgwLCByZWNvcmQudGltZUxlZnRNcykpfSBsZWZ0KWAgOiAnJztcbiAgICByZXR1cm4gKHJlY29yZC5kZWxheU1zID8gYCwgcmV0cnlpbmcgaW4gJHtmb3JtYXREdXJhdGlvbihyZWNvcmQuZGVsYXlNcyl9YCA6ICcsIHJldHJ5aW5nIGltbWVkaWF0ZWx5JykgKyBsZWZ0O1xuICB9XG4gIGlmIChyZWNvcmQubmV4dCA9PT0gJ2RvbmUnKSByZXR1cm4gJyc7XG4gIHN3aXRjaCAocmVjb3JkLnJlYXNvbikge1xuICAgIGNhc2UgJ2V4aGF1c3RlZCc6XG4gICAgICByZXR1cm4gJzsgc3RvcHBlZDogbm8gYXR0ZW1wdHMgbGVmdCc7XG4gICAgY2FzZSAnZGVjbGluZWQnOlxuICAgICAgLy8gQSB0aHJvd2luZyBwcmVkaWNhdGUgaXMgXCJkbyBub3QgcmV0cnlcIiB0b28g4oCUIGJ1dCBpdCBpcyBhIGJyb2tlbiBwcmVkaWNhdGUsIG5vdCBhIHZlcmRpY3QuXG4gICAgICByZXR1cm4gcmVjb3JkLnJldHJ5T25UaHJldyA/ICc7IHN0b3BwZWQ6IHJldHJ5T24gdGhyZXcnIDogJzsgc3RvcHBlZDogcmV0cnlPbiBkZWNsaW5lZCc7XG4gICAgY2FzZSAnbm8tdGltZS1sZWZ0Jzoge1xuICAgICAgY29uc3QgZmFjdHMgPSBbXG4gICAgICAgIC4uLihyZWNvcmQudGltZUxlZnRNcyAhPT0gdW5kZWZpbmVkID8gW2Ake2Zvcm1hdER1cmF0aW9uKE1hdGgubWF4KDAsIHJlY29yZC50aW1lTGVmdE1zKSl9IGxlZnRgXSA6IFtdKSxcbiAgICAgICAgLi4uKHJlY29yZC5kZWxheU1zICE9PSB1bmRlZmluZWQgPyBbYG5leHQgd2FpdCAke2Zvcm1hdER1cmF0aW9uKHJlY29yZC5kZWxheU1zKX1gXSA6IFtdKSxcbiAgICAgIF07XG4gICAgICByZXR1cm4gYDsgc3RvcHBlZDogbm8gdGltZSBsZWZ0JHtmYWN0cy5sZW5ndGggPiAwID8gYCAoJHtmYWN0cy5qb2luKCcsICcpfSlgIDogJyd9YDtcbiAgICB9XG4gICAgY2FzZSAnYWJvcnRlZCc6XG4gICAgICAvLyBBbiBhdHRlbXB0IHRoYXQgdGhyZXcgdGhlIGFib3J0J3Mgb3duIHJlYXNvbiBhbHJlYWR5IHNheXMgaXQgKFwid2FzIGFib3J0ZWRcIik7IGFuIGF0dGVtcHQgdGhhdCBmYWlsZWQgb25cbiAgICAgIC8vIGl0cyBvd24gd2hpbGUgdGhlIHJ1biBhYm9ydGVkIHNheXMgaXRzIGZhaWx1cmUsIHRoZW4gd2h5IHRoZSBzZXJpZXMgc3RvcHBlZC5cbiAgICAgIHJldHVybiByZWNvcmQub3V0Y29tZSA9PT0gJ2Fib3J0ZWQnID8gJycgOiAnOyBzdG9wcGVkOiB0aGUgcnVuIHdhcyBhYm9ydGVkJztcbiAgICBjYXNlICdwYXVzZWQnOlxuICAgICAgLy8gVGhlIG91dGNvbWUgYWxyZWFkeSBzYXlzIGl0LlxuICAgICAgcmV0dXJuICcnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYDsgc3RvcHBlZDogJHtyZWNvcmQucmVhc29ufWA7XG4gIH1cbn1cblxuLyoqIEEgZHVyYXRpb24gYXMgdGhlIG5hcnJhdGl2ZSBzYXlzIGl0OiB3aG9sZSBtaWxsaXNlY29uZHMgdW5kZXIgYSBzZWNvbmQsIHNlY29uZHMgKG9uZSBkZWNpbWFsIGF0IG1vc3QpIGFib3ZlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdER1cmF0aW9uKG1zOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAobXMgPCAxXzAwMCkgcmV0dXJuIGAke01hdGgucm91bmQobXMpfW1zYDtcbiAgcmV0dXJuIGAke051bWJlcigobXMgLyAxXzAwMCkudG9GaXhlZCgxKSl9c2A7XG59XG4iXX0=
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export type { CombinedNarrativeRecorderOptions } from './CombinedNarrativeRecorder.js';
|
|
2
2
|
export { CombinedNarrativeRecorder } from './CombinedNarrativeRecorder.js';
|
|
3
|
-
export type { BreakRenderContext, CombinedNarrativeEntry, CombinedNarrativeOptions, DecisionRenderContext, EmitRenderContext, ErrorRenderContext, ForkRenderContext, LoopRenderContext, NarrativeFormatter, OpRenderContext, SelectedRenderContext, StageRenderContext, SubflowRenderContext, } from './narrativeTypes.js';
|
|
3
|
+
export type { AttemptRenderContext, BreakRenderContext, CombinedNarrativeEntry, CombinedNarrativeOptions, DecisionRenderContext, EmitRenderContext, ErrorRenderContext, ForkRenderContext, LoopRenderContext, NarrativeFormatter, OpRenderContext, SelectedRenderContext, StageRenderContext, SubflowRenderContext, } from './narrativeTypes.js';
|
|
4
4
|
export { NullControlFlowNarrativeGenerator } from './NullControlFlowNarrativeGenerator.js';
|
|
5
5
|
export type { IControlFlowNarrative } from './types.js';
|
|
6
6
|
export { FlowRecorderDispatcher } from './FlowRecorderDispatcher.js';
|
|
7
7
|
export { NarrativeFlowRecorder } from './NarrativeFlowRecorder.js';
|
|
8
|
-
export type { FlowBreakEvent, FlowDecisionEvent, FlowErrorEvent, FlowForkEvent, FlowLoopEvent, FlowNextEvent, FlowRecorder, FlowRunEvent, FlowRunFailedEvent, FlowSelectedEvent, FlowStageEvent, FlowSubflowEvent, } from './types.js';
|
|
8
|
+
export type { FlowAttemptEvent, FlowBreakEvent, FlowDecisionEvent, FlowErrorEvent, FlowForkEvent, FlowLoopEvent, FlowNextEvent, FlowRecorder, FlowRunEvent, FlowRunFailedEvent, FlowSelectedEvent, FlowStageEvent, FlowSubflowEvent, } from './types.js';
|
|
9
9
|
export { AdaptiveNarrativeFlowRecorder } from './recorders/AdaptiveNarrativeFlowRecorder.js';
|
|
10
10
|
export { MilestoneNarrativeFlowRecorder } from './recorders/MilestoneNarrativeFlowRecorder.js';
|
|
11
11
|
export { ProgressiveNarrativeFlowRecorder } from './recorders/ProgressiveNarrativeFlowRecorder.js';
|
|
@@ -11,4 +11,4 @@ export { RLENarrativeFlowRecorder } from './recorders/RLENarrativeFlowRecorder.j
|
|
|
11
11
|
export { SeparateNarrativeFlowRecorder } from './recorders/SeparateNarrativeFlowRecorder.js';
|
|
12
12
|
export { SilentNarrativeFlowRecorder } from './recorders/SilentNarrativeFlowRecorder.js';
|
|
13
13
|
export { WindowedNarrativeFlowRecorder } from './recorders/WindowedNarrativeFlowRecorder.js';
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFpQjNFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRzNGLHNCQUFzQjtBQUN0QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQWlCbkUsK0VBQStFO0FBQy9FLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlck9wdGlvbnMgfSBmcm9tICcuL0NvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlciB9IGZyb20gJy4vQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlci5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEF0dGVtcHRSZW5kZXJDb250ZXh0LFxuICBCcmVha1JlbmRlckNvbnRleHQsXG4gIENvbWJpbmVkTmFycmF0aXZlRW50cnksXG4gIENvbWJpbmVkTmFycmF0aXZlT3B0aW9ucyxcbiAgRGVjaXNpb25SZW5kZXJDb250ZXh0LFxuICBFbWl0UmVuZGVyQ29udGV4dCxcbiAgRXJyb3JSZW5kZXJDb250ZXh0LFxuICBGb3JrUmVuZGVyQ29udGV4dCxcbiAgTG9vcFJlbmRlckNvbnRleHQsXG4gIE5hcnJhdGl2ZUZvcm1hdHRlcixcbiAgT3BSZW5kZXJDb250ZXh0LFxuICBTZWxlY3RlZFJlbmRlckNvbnRleHQsXG4gIFN0YWdlUmVuZGVyQ29udGV4dCxcbiAgU3ViZmxvd1JlbmRlckNvbnRleHQsXG59IGZyb20gJy4vbmFycmF0aXZlVHlwZXMuanMnO1xuZXhwb3J0IHsgTnVsbENvbnRyb2xGbG93TmFycmF0aXZlR2VuZXJhdG9yIH0gZnJvbSAnLi9OdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3IuanMnO1xuZXhwb3J0IHR5cGUgeyBJQ29udHJvbEZsb3dOYXJyYXRpdmUgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLy8gRmxvd1JlY29yZGVyIHN5c3RlbVxuZXhwb3J0IHsgRmxvd1JlY29yZGVyRGlzcGF0Y2hlciB9IGZyb20gJy4vRmxvd1JlY29yZGVyRGlzcGF0Y2hlci5qcyc7XG5leHBvcnQgeyBOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL05hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEZsb3dBdHRlbXB0RXZlbnQsXG4gIEZsb3dCcmVha0V2ZW50LFxuICBGbG93RGVjaXNpb25FdmVudCxcbiAgRmxvd0Vycm9yRXZlbnQsXG4gIEZsb3dGb3JrRXZlbnQsXG4gIEZsb3dMb29wRXZlbnQsXG4gIEZsb3dOZXh0RXZlbnQsXG4gIEZsb3dSZWNvcmRlcixcbiAgRmxvd1J1bkV2ZW50LFxuICBGbG93UnVuRmFpbGVkRXZlbnQsXG4gIEZsb3dTZWxlY3RlZEV2ZW50LFxuICBGbG93U3RhZ2VFdmVudCxcbiAgRmxvd1N1YmZsb3dFdmVudCxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8vIEJ1aWx0LWluIEZsb3dSZWNvcmRlciBzdHJhdGVnaWVzICh0cmVlLXNoYWtlYWJsZSDigJQgb25seSBpbXBvcnRlZCBjb2RlIHNoaXBzKVxuZXhwb3J0IHsgQWRhcHRpdmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL3JlY29yZGVycy9BZGFwdGl2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBNaWxlc3RvbmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL3JlY29yZGVycy9NaWxlc3RvbmVOYXJyYXRpdmVGbG93UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgUHJvZ3Jlc3NpdmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL3JlY29yZGVycy9Qcm9ncmVzc2l2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBSTEVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL3JlY29yZGVycy9STEVOYXJyYXRpdmVGbG93UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgU2VwYXJhdGVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL3JlY29yZGVycy9TZXBhcmF0ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBTaWxlbnROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL3JlY29yZGVycy9TaWxlbnROYXJyYXRpdmVGbG93UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgV2luZG93ZWROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL3JlY29yZGVycy9XaW5kb3dlZE5hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG4iXX0=
|
|
@@ -5,12 +5,19 @@
|
|
|
5
5
|
* The CombinedNarrativeBuilder class was removed in v1.0.
|
|
6
6
|
* Use CombinedNarrativeRecorder (auto-attached by setEnableNarrative()) instead.
|
|
7
7
|
*/
|
|
8
|
+
import type { AttemptRecord } from '../../attempt/types.js';
|
|
8
9
|
export interface CombinedNarrativeEntry {
|
|
9
10
|
type: 'stage' | 'step' | 'condition' | 'fork' | 'selector' | 'subflow' | 'loop' | 'break' | 'error' | 'pause' | 'resume' | 'emit'
|
|
10
|
-
/** A failed attempt
|
|
11
|
-
*
|
|
12
|
-
* the
|
|
13
|
-
|
|
11
|
+
/** A failed attempt that was retried — rendered by 9.15–10.0 only. Since
|
|
12
|
+
* 10.1 the built-in narrative renders one `'attempt'` line per attempt
|
|
13
|
+
* instead; the member stays so a narrative stored by an earlier release
|
|
14
|
+
* still type-checks. */
|
|
15
|
+
| 'retry'
|
|
16
|
+
/** One attempt of a stage with a declared retry policy (10.1): its outcome,
|
|
17
|
+
* duration, cause and decision. A depth-1 sub-item of its stage, IN ORDER
|
|
18
|
+
* between the attempts' reads and writes; for a stage that failed, the
|
|
19
|
+
* lines follow its `'error'` entry. */
|
|
20
|
+
| 'attempt';
|
|
14
21
|
text: string;
|
|
15
22
|
depth: number;
|
|
16
23
|
stageName?: string;
|
|
@@ -108,21 +115,14 @@ export interface ErrorRenderContext {
|
|
|
108
115
|
validationIssues?: string;
|
|
109
116
|
}
|
|
110
117
|
/**
|
|
111
|
-
* Context passed to `NarrativeFormatter.
|
|
112
|
-
*
|
|
113
|
-
* for attempts followed by another attempt; the final failure goes to
|
|
114
|
-
* `renderError`.
|
|
118
|
+
* Context passed to `NarrativeFormatter.renderAttempt` — one attempt of a stage
|
|
119
|
+
* with a declared retry policy (10.1), whatever its outcome.
|
|
115
120
|
*/
|
|
116
|
-
export interface
|
|
121
|
+
export interface AttemptRenderContext {
|
|
122
|
+
/** The stage the attempt ran. */
|
|
117
123
|
stageName: string;
|
|
118
|
-
/**
|
|
119
|
-
|
|
120
|
-
/** Total attempts the policy allows, including the first. */
|
|
121
|
-
maxAttempts: number;
|
|
122
|
-
/** Milliseconds waited before the next attempt. `0` = immediate. */
|
|
123
|
-
delayMs: number;
|
|
124
|
-
/** The failed attempt's error message. */
|
|
125
|
-
message: string;
|
|
124
|
+
/** The attempt: outcome, duration, category, the served error, and the retry-or-stop decision. */
|
|
125
|
+
record: AttemptRecord;
|
|
126
126
|
}
|
|
127
127
|
/**
|
|
128
128
|
* Context passed to `NarrativeFormatter.renderEmit` — fires for every
|
|
@@ -193,11 +193,17 @@ export interface NarrativeFormatter {
|
|
|
193
193
|
renderBreak?(ctx: BreakRenderContext): string;
|
|
194
194
|
renderError?(ctx: ErrorRenderContext): string;
|
|
195
195
|
/**
|
|
196
|
-
* Format a retried
|
|
197
|
-
* sub-item of its stage,
|
|
198
|
-
*
|
|
196
|
+
* Format one attempt of a retried stage (10.1) into a narrative line — a
|
|
197
|
+
* depth-1 sub-item of its stage, between the attempts' reads and writes (for
|
|
198
|
+
* a stage that failed for good, beneath its error line). It replaces the
|
|
199
|
+
* 9.15–10.0 `renderRetry`, which is removed: this line says "retrying" too.
|
|
200
|
+
*
|
|
201
|
+
* - `string` → use as the narrative line
|
|
202
|
+
* - `null` → deliberately exclude this entry
|
|
203
|
+
* - `undefined` → fall back to the library's default sentence
|
|
204
|
+
* (`Attempt 2 of 3 at Fetch failed in 12ms (…), retrying in 1s.`)
|
|
199
205
|
*/
|
|
200
|
-
|
|
206
|
+
renderAttempt?(ctx: AttemptRenderContext): string | null | undefined;
|
|
201
207
|
/**
|
|
202
208
|
* Format a consumer-emitted event (from `scope.$emit(name, payload)`)
|
|
203
209
|
* into a narrative line.
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
* Use CombinedNarrativeRecorder (auto-attached by setEnableNarrative()) instead.
|
|
7
7
|
*/
|
|
8
8
|
export {};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFycmF0aXZlVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvbmFycmF0aXZlVHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBuYXJyYXRpdmVUeXBlcyDigJQgU2hhcmVkIHR5cGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBuYXJyYXRpdmUgcmVjb3JkZXIgc3lzdGVtLlxuICpcbiAqIFByZXZpb3VzbHk6IENvbWJpbmVkTmFycmF0aXZlQnVpbGRlci50cyAoZmlsZSByZW5hbWVkIGluIHBvc3QtcmVsZWFzZSBjbGVhbnVwKS5cbiAqIFRoZSBDb21iaW5lZE5hcnJhdGl2ZUJ1aWxkZXIgY2xhc3Mgd2FzIHJlbW92ZWQgaW4gdjEuMC5cbiAqIFVzZSBDb21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyIChhdXRvLWF0dGFjaGVkIGJ5IHNldEVuYWJsZU5hcnJhdGl2ZSgpKSBpbnN0ZWFkLlxuICovXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVHlwZXMgKGtlcHQg4oCUIHVzZWQgYnkgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlciwgRmxvd0NoYXJ0RXhlY3V0b3IsIGV0Yy4pXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5IHtcbiAgdHlwZTpcbiAgICB8ICdzdGFnZSdcbiAgICB8ICdzdGVwJ1xuICAgIHwgJ2NvbmRpdGlvbidcbiAgICB8ICdmb3JrJ1xuICAgIHwgJ3NlbGVjdG9yJ1xuICAgIHwgJ3N1YmZsb3cnXG4gICAgfCAnbG9vcCdcbiAgICB8ICdicmVhaydcbiAgICB8ICdlcnJvcidcbiAgICB8ICdwYXVzZSdcbiAgICB8ICdyZXN1bWUnXG4gICAgfCAnZW1pdCdcbiAgICAvKiogQSBmYWlsZWQgYXR0ZW1wdCBhdCBhIHN0YWdlIHdpdGggYSBkZWNsYXJlZCByZXRyeSBwb2xpY3ksIHdoaWNoIHdhc1xuICAgICAqICByZXRyaWVkLiBSZW5kZXJlZCBhcyBhIGRlcHRoLTEgc3ViLWl0ZW0gb2YgaXRzIHN0YWdlLCBJTiBPUkRFUiBiZXR3ZWVuXG4gICAgICogIHRoZSBhdHRlbXB0cycgcmVhZHMgYW5kIHdyaXRlcy4gKi9cbiAgICB8ICdyZXRyeSc7XG4gIHRleHQ6IHN0cmluZztcbiAgZGVwdGg6IG51bWJlcjtcbiAgc3RhZ2VOYW1lPzogc3RyaW5nO1xuICAvKiogU3RhYmxlIHN0YWdlIGlkZW50aWZpZXIgZnJvbSB0aGUgYnVpbGRlciAobWF0Y2hlcyBzcGVjIG5vZGUgaWQpLiBVc2UgZm9yIFVJIHN5bmMuICovXG4gIHN0YWdlSWQ/OiBzdHJpbmc7XG4gIC8qKiBVbmlxdWUgcGVyLWV4ZWN1dGlvbi1zdGVwIGlkZW50aWZpZXIuIEZvcm1hdDogW3N1YmZsb3dQYXRoL11zdGFnZUlkI2V4ZWN1dGlvbkluZGV4LlxuICAgKiAgTGlua3MgbmFycmF0aXZlIGVudHJpZXMgdG8gcmVjb3JkZXIgTWFwIGVudHJpZXMgZm9yIE8oMSkgdGltZS10cmF2ZWwgbG9va3VwLlxuICAgKiAgVW5kZWZpbmVkIG9ubHkgd2hlbiBUcmF2ZXJzYWxDb250ZXh0IGlzIGFic2VudCBmcm9tIHRoZSBzb3VyY2UgZXZlbnQuICovXG4gIHJ1bnRpbWVTdGFnZUlkPzogc3RyaW5nO1xuICBzdGVwTnVtYmVyPzogbnVtYmVyO1xuICAvKiogU3ViZmxvdyBJRCB3aGVuIHRoaXMgZW50cnkgd2FzIGdlbmVyYXRlZCBpbnNpZGUgYSBzdWJmbG93LiBVbmRlZmluZWQgZm9yIHJvb3QtbGV2ZWwuICovXG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqIERpcmVjdGlvbiBmb3Igc3ViZmxvdyBlbnRyaWVzOiAnZW50cnknIHdoZW4gZW50ZXJpbmcsICdleGl0JyB3aGVuIGxlYXZpbmcuXG4gICAqICBPbmx5IHByZXNlbnQgb24gZW50cmllcyB3aXRoIHR5cGUgPT09ICdzdWJmbG93Jy4gVXNlIHRoaXMgaW5zdGVhZCBvZiB0ZXh0IHNjYW5uaW5nLiAqL1xuICBkaXJlY3Rpb24/OiAnZW50cnknIHwgJ2V4aXQnO1xuICAvKiogU2NvcGUga2V5IHRoYXQgd2FzIHJlYWQgb3Igd3JpdHRlbi4gT25seSBwcmVzZW50IG9uICdzdGVwJyBlbnRyaWVzLlxuICAgKiAgVXNlIHRoaXMgZm9yIHN0cnVjdHVyZWQgZGF0YSBleHRyYWN0aW9uIChlLmcuLCBncm91bmRpbmcgYW5hbHlzaXMpXG4gICAqICBpbnN0ZWFkIG9mIG1hdGNoaW5nIG9uIHJlbmRlcmVkIHRleHQgc3RyaW5ncy4gKi9cbiAga2V5Pzogc3RyaW5nO1xuICAvKiogUmF3IHZhbHVlIGZyb20gdGhlIHNjb3BlIGV2ZW50IOKAlCBhdmFpbGFibGUgZm9yIHByb2dyYW1tYXRpYyBhY2Nlc3MgYW5kIGN1c3RvbSBmb3JtYXR0aW5nLlxuICAgKiAgT25seSBwcmVzZW50IG9uICdzdGVwJyBlbnRyaWVzIChyZWFkL3dyaXRlIG9wcykuIFRoaXMgaXMgYSBsaXZlIHJlZmVyZW5jZSwgbm90IGEgY2xvbmUuXG4gICAqICBXaGVuIHVzaW5nIFNjb3BlRmFjYWRlLCByZWRhY3RlZCBrZXlzIHdpbGwgaGF2ZSB2YWx1ZSAnW1JFREFDVEVEXScgKHNhbml0aXplZCB1cHN0cmVhbVxuICAgKiAgYnkgU2NvcGVGYWNhZGUgYmVmb3JlIGRpc3BhdGNoaW5nIGV2ZW50cyDigJQgdGhlIHJlY29yZGVyIGRvZXMgbm90IGVuZm9yY2UgcmVkYWN0aW9uKS4gKi9cbiAgcmF3VmFsdWU/OiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbWJpbmVkTmFycmF0aXZlT3B0aW9ucyB7XG4gIGluY2x1ZGVTdGVwTnVtYmVycz86IGJvb2xlYW47XG4gIGluY2x1ZGVWYWx1ZXM/OiBib29sZWFuO1xuICBpbmRlbnQ/OiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTmFycmF0aXZlRm9ybWF0dGVyIOKAlCBQbHVnZ2FibGUgZm9ybWF0dGluZyBmb3IgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJTdGFnZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VSZW5kZXJDb250ZXh0IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIHN0YWdlTnVtYmVyOiBudW1iZXI7XG4gIGlzRmlyc3Q6IGJvb2xlYW47XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogTG9vcCBpdGVyYXRpb24gbnVtYmVyICgxLWJhc2VkKS4gUHJlc2VudCB3aGVuIHRoaXMgc3RhZ2UgaXMgdmlzaXRlZCB2aWEgbG9vcFRvKCkuICovXG4gIGxvb3BJdGVyYXRpb24/OiBudW1iZXI7XG4gIC8qKiBUcnVlIGZvciB0aGUgc3RhZ2UgYSByZXN1bWUgcmUtZW50ZXJlZDogaXRzIGFycml2YWwgd2FzIGFscmVhZHkgdG9sZCBieSB0aGUgcmVzdW1lIGVudHJ5LiAqL1xuICByZXN1bWVkPzogYm9vbGVhbjtcbn1cblxuLyoqIENvbnRleHQgcGFzc2VkIHRvIHJlbmRlck9wLiBSZXR1cm4gbnVsbCB0byBleGNsdWRlIHRoZSBlbnRyeS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BSZW5kZXJDb250ZXh0IHtcbiAgdHlwZTogJ3JlYWQnIHwgJ3dyaXRlJztcbiAga2V5OiBzdHJpbmc7XG4gIHJhd1ZhbHVlOiB1bmtub3duO1xuICB2YWx1ZVN1bW1hcnk6IHN0cmluZztcbiAgb3BlcmF0aW9uPzogJ3NldCcgfCAndXBkYXRlJyB8ICdkZWxldGUnO1xuICBzdGVwTnVtYmVyOiBudW1iZXI7XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJEZWNpc2lvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVjaXNpb25SZW5kZXJDb250ZXh0IHtcbiAgZGVjaWRlcjogc3RyaW5nO1xuICBjaG9zZW46IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHJhdGlvbmFsZT86IHN0cmluZztcbiAgLyoqIFJhdyBldmlkZW5jZSBmcm9tIGRlY2lkZSgpL3NlbGVjdCgpIOKAlCBhdmFpbGFibGUgZm9yIGN1c3RvbSByZW5kZXJpbmcuICovXG4gIGV2aWRlbmNlPzogdW5rbm93bjtcbn1cblxuLyoqIENvbnRleHQgcGFzc2VkIHRvIHJlbmRlckZvcmsuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcmtSZW5kZXJDb250ZXh0IHtcbiAgY2hpbGRyZW46IHN0cmluZ1tdO1xufVxuXG4vKiogQ29udGV4dCBwYXNzZWQgdG8gcmVuZGVyU3ViZmxvdy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3ViZmxvd1JlbmRlckNvbnRleHQge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRpcmVjdGlvbjogJ2VudHJ5JyB8ICdleGl0JztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBNYXBwZWQgaW5wdXQgdmFsdWVzIHNlbnQgaW50byB0aGUgc3ViZmxvdy4gUHJlc2VudCBvbiBlbnRyeS4gKi9cbiAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFN1YmZsb3cgc2hhcmVkIHN0YXRlIGF0IGV4aXQuIFByZXNlbnQgb24gZXhpdC4gKi9cbiAgb3V0cHV0U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqIENvbnRleHQgcGFzc2VkIHRvIHJlbmRlckxvb3AuICovXG5leHBvcnQgaW50ZXJmYWNlIExvb3BSZW5kZXJDb250ZXh0IHtcbiAgdGFyZ2V0OiBzdHJpbmc7XG4gIGl0ZXJhdGlvbjogbnVtYmVyO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqIENvbnRleHQgcGFzc2VkIHRvIHJlbmRlckJyZWFrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCcmVha1JlbmRlckNvbnRleHQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbn1cblxuLyoqIENvbnRleHQgcGFzc2VkIHRvIHJlbmRlclNlbGVjdGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RlZFJlbmRlckNvbnRleHQge1xuICBzZWxlY3RlZDogc3RyaW5nW107XG4gIHRvdGFsOiBudW1iZXI7XG4gIC8qKiBSYXcgZXZpZGVuY2UgZnJvbSBzZWxlY3QoKSDigJQgYXZhaWxhYmxlIGZvciBjdXN0b20gcmVuZGVyaW5nLiAqL1xuICBldmlkZW5jZT86IHVua25vd247XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJFcnJvci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JSZW5kZXJDb250ZXh0IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdmFsaWRhdGlvbklzc3Vlcz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb250ZXh0IHBhc3NlZCB0byBgTmFycmF0aXZlRm9ybWF0dGVyLnJlbmRlclJldHJ5YCDigJQgb25lIGZhaWxlZCBhdHRlbXB0IGF0IGFcbiAqIHN0YWdlIHdpdGggYSBkZWNsYXJlZCByZXRyeSBwb2xpY3ksIHdoaWNoIHRoZSBlbmdpbmUgdGhlbiByZXRyaWVkLiBGaXJlcyBvbmx5XG4gKiBmb3IgYXR0ZW1wdHMgZm9sbG93ZWQgYnkgYW5vdGhlciBhdHRlbXB0OyB0aGUgZmluYWwgZmFpbHVyZSBnb2VzIHRvXG4gKiBgcmVuZGVyRXJyb3JgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5UmVuZGVyQ29udGV4dCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogV2hpY2ggYXR0ZW1wdCBqdXN0IGZhaWxlZCwgMS1iYXNlZC4gKi9cbiAgYXR0ZW1wdDogbnVtYmVyO1xuICAvKiogVG90YWwgYXR0ZW1wdHMgdGhlIHBvbGljeSBhbGxvd3MsIGluY2x1ZGluZyB0aGUgZmlyc3QuICovXG4gIG1heEF0dGVtcHRzOiBudW1iZXI7XG4gIC8qKiBNaWxsaXNlY29uZHMgd2FpdGVkIGJlZm9yZSB0aGUgbmV4dCBhdHRlbXB0LiBgMGAgPSBpbW1lZGlhdGUuICovXG4gIGRlbGF5TXM6IG51bWJlcjtcbiAgLyoqIFRoZSBmYWlsZWQgYXR0ZW1wdCdzIGVycm9yIG1lc3NhZ2UuICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb250ZXh0IHBhc3NlZCB0byBgTmFycmF0aXZlRm9ybWF0dGVyLnJlbmRlckVtaXRgIOKAlCBmaXJlcyBmb3IgZXZlcnlcbiAqIGNvbnN1bWVyLWVtaXR0ZWQgZXZlbnQgKGBzY29wZS4kZW1pdChuYW1lLCBwYXlsb2FkKWApLiBDYXJyaWVzIHRoZSBmdWxsXG4gKiBgRW1pdEV2ZW50YCBzaGFwZSBzbyBmb3JtYXR0ZXJzIGNhbiByZW5kZXIgbmFtZSArIHBheWxvYWQgd2l0aCBmdWxsXG4gKiBjb250ZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtaXRSZW5kZXJDb250ZXh0IHtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXlsb2FkOiB1bmtub3duO1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgcnVudGltZVN0YWdlSWQ6IHN0cmluZztcbiAgc3ViZmxvd1BhdGg6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICAvKiogU3VtbWFyeSBzdHJpbmcg4oCUIHRoZSBsaWJyYXJ5J3MgZGVmYXVsdCB0cnVuY2F0ZWQgcGF5bG9hZCBwcmV2aWV3LiAqL1xuICBwYXlsb2FkU3VtbWFyeTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBsdWdnYWJsZSBmb3JtYXR0ZXIgZm9yIG5hcnJhdGl2ZSBvdXRwdXQuIFR1cm5zIHN0cnVjdHVyZWQgZXZlbnQgY29udGV4dFxuICogb2JqZWN0cyBpbnRvIHRoZSB0ZXh0IGxpbmVzIHRoYXQgbWFrZSB1cCB0aGUgbmFycmF0aXZlIGFycmF5LlxuICpcbiAqICMjIFdoeSBcIkZvcm1hdHRlclwiLCBub3QgXCJSZW5kZXJlclwiXG4gKlxuICogSW4gd2ViIHRlcm1pbm9sb2d5IFwicmVuZGVyZXJcIiB1c3VhbGx5IG1lYW5zIFwidHVybiBkYXRhIGludG8gYSB2aXNpYmxlIFVJXCJcbiAqIChwaXhlbHMsIERPTSwgSFRNTCkuIFRoaXMgaW50ZXJmYWNlIGRvZXMgc29tZXRoaW5nIHNtYWxsZXI6IGl0IGNvbnZlcnRzXG4gKiBldmVudCBjb250ZXh0IGludG8gYSB0ZXh0IHN0cmluZy4gVGhhdCBpcyBtb3JlIGFjY3VyYXRlbHkgY2FsbGVkIGFcbiAqICpmb3JtYXR0ZXIqLlxuICpcbiAqICMjIEJlaGF2aW91clxuICpcbiAqIEVhY2ggbWV0aG9kIGlzIG9wdGlvbmFsIOKAlCB1bmltcGxlbWVudGVkIG1ldGhvZHMgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0XG4gKiBFbmdsaXNoIGZvcm1hdHRlci4gUmV0dXJuIGBudWxsYCBmcm9tIGByZW5kZXJPcGAgdG8gZXhjbHVkZSB0aGF0IGVudHJ5XG4gKiBmcm9tIHRoZSBuYXJyYXRpdmUgZW50aXJlbHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlYyA9IG5hcnJhdGl2ZSh7XG4gKiAgIHJlbmRlcmVyOiB7XG4gKiAgICAgcmVuZGVyT3AoY3R4KSB7XG4gKiAgICAgICBpZiAoY3R4LmtleS5zdGFydHNXaXRoKCdfaW50ZXJuYWwnKSkgcmV0dXJuIG51bGw7IC8vIGZpbHRlciBvdXQgaW50ZXJuYWwga2V5c1xuICogICAgICAgcmV0dXJuIGAke2N0eC50eXBlID09PSAncmVhZCcgPyAnUmVhZCcgOiAnV3JvdGUnfSAke2N0eC5rZXl9OiAke2N0eC52YWx1ZVN1bW1hcnl9YDtcbiAqICAgICB9LFxuICogICB9LFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXJyYXRpdmVGb3JtYXR0ZXIge1xuICByZW5kZXJTdGFnZT8oY3R4OiBTdGFnZVJlbmRlckNvbnRleHQpOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGb3JtYXQgYW4gb3AgKHNjb3BlIHJlYWQvd3JpdGUsIG9yIHN1YmZsb3ctaW5wdXQga2V5KSBpbnRvIGEgbmFycmF0aXZlIGxpbmUuXG4gICAqXG4gICAqICAgLSBgc3RyaW5nYCAgICDihpIgdXNlIGFzIHRoZSBuYXJyYXRpdmUgbGluZVxuICAgKiAgIC0gYG51bGxgICAgICAg4oaSIGRlbGliZXJhdGVseSBleGNsdWRlIHRoaXMgZW50cnkgZnJvbSB0aGUgbmFycmF0aXZlXG4gICAqICAgLSBgdW5kZWZpbmVkYCDihpIgdGhpcyBmb3JtYXR0ZXIgZG9lcyBub3QgaGFuZGxlIHRoaXMgb3A7IGZhbGwgYmFjayB0b1xuICAgKiAgICAgICAgICAgICAgICAgICB0aGUgbGlicmFyeSdzIGRlZmF1bHQgdGVtcGxhdGVcbiAgICpcbiAgICogVGhlIGB1bmRlZmluZWRgIHJldHVybiBsZXRzIGEgZG9tYWluLWF3YXJlIGZvcm1hdHRlciBoYW5kbGUgb25seSB0aGVcbiAgICoga2V5cyBpdCBrbm93cyBhYm91dCBhbmQgbGVhdmUgdGhlIHJlc3QgdG8gdGhlIGxpYnJhcnkgZGVmYXVsdCDigJQgd2l0aG91dFxuICAgKiBoYXZpbmcgdG8gcmUtaW1wbGVtZW50IHRoZSB3aG9sZSBkZWZhdWx0IGlubGluZS5cbiAgICovXG4gIHJlbmRlck9wPyhjdHg6IE9wUmVuZGVyQ29udGV4dCk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHJlbmRlckRlY2lzaW9uPyhjdHg6IERlY2lzaW9uUmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgcmVuZGVyRm9yaz8oY3R4OiBGb3JrUmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgcmVuZGVyU2VsZWN0ZWQ/KGN0eDogU2VsZWN0ZWRSZW5kZXJDb250ZXh0KTogc3RyaW5nO1xuICByZW5kZXJTdWJmbG93PyhjdHg6IFN1YmZsb3dSZW5kZXJDb250ZXh0KTogc3RyaW5nO1xuICByZW5kZXJMb29wPyhjdHg6IExvb3BSZW5kZXJDb250ZXh0KTogc3RyaW5nO1xuICByZW5kZXJCcmVhaz8oY3R4OiBCcmVha1JlbmRlckNvbnRleHQpOiBzdHJpbmc7XG4gIHJlbmRlckVycm9yPyhjdHg6IEVycm9yUmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgLyoqXG4gICAqIEZvcm1hdCBhIHJldHJpZWQgYXR0ZW1wdCBpbnRvIGEgbmFycmF0aXZlIGxpbmUuIFJlbmRlcmVkIGFzIGEgZGVwdGgtMVxuICAgKiBzdWItaXRlbSBvZiBpdHMgc3RhZ2UsIHBvc2l0aW9uZWQgYmV0d2VlbiB0aGUgYXR0ZW1wdHMnIHJlYWRzIGFuZCB3cml0ZXNcbiAgICogc28gdGhlIG5hcnJhdGl2ZSByZWFkcyBpbiB0aGUgb3JkZXIgdGhpbmdzIGFjdHVhbGx5IGhhcHBlbmVkLlxuICAgKi9cbiAgcmVuZGVyUmV0cnk/KGN0eDogUmV0cnlSZW5kZXJDb250ZXh0KTogc3RyaW5nO1xuICAvKipcbiAgICogRm9ybWF0IGEgY29uc3VtZXItZW1pdHRlZCBldmVudCAoZnJvbSBgc2NvcGUuJGVtaXQobmFtZSwgcGF5bG9hZClgKVxuICAgKiBpbnRvIGEgbmFycmF0aXZlIGxpbmUuXG4gICAqXG4gICAqICAgLSBgc3RyaW5nYCAgICDihpIgdXNlIGFzIHRoZSBuYXJyYXRpdmUgbGluZVxuICAgKiAgIC0gYG51bGxgICAgICAg4oaSIGRlbGliZXJhdGVseSBleGNsdWRlIHRoaXMgZW50cnlcbiAgICogICAtIGB1bmRlZmluZWRgIOKGkiB0aGlzIGZvcm1hdHRlciBkb2VzIG5vdCBoYW5kbGUgdGhpcyBlbWl0OyBmYWxsIGJhY2tcbiAgICogICAgICAgICAgICAgICAgICAgdG8gdGhlIGxpYnJhcnkncyBkZWZhdWx0IHRlbXBsYXRlXG4gICAqXG4gICAqIFR5cGljYWwgcGF0dGVybjogc3dpdGNoIG9uIGBjdHgubmFtZWAgKG9yIGEgcHJlZml4IG9mIGl0KSBhbmQgcmV0dXJuIGFcbiAgICogZG9tYWluLXNwZWNpZmljIHRleHQgbGluZSBmb3IgdGhlIGV2ZW50IHR5cGVzIHlvdSBjYXJlIGFib3V0OyByZXR1cm5cbiAgICogYHVuZGVmaW5lZGAgZm9yIGV2ZXJ5dGhpbmcgZWxzZSBzbyB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSBoYW5kbGVzIGl0LlxuICAgKi9cbiAgcmVuZGVyRW1pdD8oY3R4OiBFbWl0UmVuZGVyQ29udGV4dCk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFycmF0aXZlVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvbmFycmF0aXZlVHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBuYXJyYXRpdmVUeXBlcyDigJQgU2hhcmVkIHR5cGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBuYXJyYXRpdmUgcmVjb3JkZXIgc3lzdGVtLlxuICpcbiAqIFByZXZpb3VzbHk6IENvbWJpbmVkTmFycmF0aXZlQnVpbGRlci50cyAoZmlsZSByZW5hbWVkIGluIHBvc3QtcmVsZWFzZSBjbGVhbnVwKS5cbiAqIFRoZSBDb21iaW5lZE5hcnJhdGl2ZUJ1aWxkZXIgY2xhc3Mgd2FzIHJlbW92ZWQgaW4gdjEuMC5cbiAqIFVzZSBDb21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyIChhdXRvLWF0dGFjaGVkIGJ5IHNldEVuYWJsZU5hcnJhdGl2ZSgpKSBpbnN0ZWFkLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXR0ZW1wdFJlY29yZCB9IGZyb20gJy4uLy4uL2F0dGVtcHQvdHlwZXMuanMnO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFR5cGVzIChrZXB0IOKAlCB1c2VkIGJ5IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIsIEZsb3dDaGFydEV4ZWN1dG9yLCBldGMuKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB7XG4gIHR5cGU6XG4gICAgfCAnc3RhZ2UnXG4gICAgfCAnc3RlcCdcbiAgICB8ICdjb25kaXRpb24nXG4gICAgfCAnZm9yaydcbiAgICB8ICdzZWxlY3RvcidcbiAgICB8ICdzdWJmbG93J1xuICAgIHwgJ2xvb3AnXG4gICAgfCAnYnJlYWsnXG4gICAgfCAnZXJyb3InXG4gICAgfCAncGF1c2UnXG4gICAgfCAncmVzdW1lJ1xuICAgIHwgJ2VtaXQnXG4gICAgLyoqIEEgZmFpbGVkIGF0dGVtcHQgdGhhdCB3YXMgcmV0cmllZCDigJQgcmVuZGVyZWQgYnkgOS4xNeKAkzEwLjAgb25seS4gU2luY2VcbiAgICAgKiAgMTAuMSB0aGUgYnVpbHQtaW4gbmFycmF0aXZlIHJlbmRlcnMgb25lIGAnYXR0ZW1wdCdgIGxpbmUgcGVyIGF0dGVtcHRcbiAgICAgKiAgaW5zdGVhZDsgdGhlIG1lbWJlciBzdGF5cyBzbyBhIG5hcnJhdGl2ZSBzdG9yZWQgYnkgYW4gZWFybGllciByZWxlYXNlXG4gICAgICogIHN0aWxsIHR5cGUtY2hlY2tzLiAqL1xuICAgIHwgJ3JldHJ5J1xuICAgIC8qKiBPbmUgYXR0ZW1wdCBvZiBhIHN0YWdlIHdpdGggYSBkZWNsYXJlZCByZXRyeSBwb2xpY3kgKDEwLjEpOiBpdHMgb3V0Y29tZSxcbiAgICAgKiAgZHVyYXRpb24sIGNhdXNlIGFuZCBkZWNpc2lvbi4gQSBkZXB0aC0xIHN1Yi1pdGVtIG9mIGl0cyBzdGFnZSwgSU4gT1JERVJcbiAgICAgKiAgYmV0d2VlbiB0aGUgYXR0ZW1wdHMnIHJlYWRzIGFuZCB3cml0ZXM7IGZvciBhIHN0YWdlIHRoYXQgZmFpbGVkLCB0aGVcbiAgICAgKiAgbGluZXMgZm9sbG93IGl0cyBgJ2Vycm9yJ2AgZW50cnkuICovXG4gICAgfCAnYXR0ZW1wdCc7XG4gIHRleHQ6IHN0cmluZztcbiAgZGVwdGg6IG51bWJlcjtcbiAgc3RhZ2VOYW1lPzogc3RyaW5nO1xuICAvKiogU3RhYmxlIHN0YWdlIGlkZW50aWZpZXIgZnJvbSB0aGUgYnVpbGRlciAobWF0Y2hlcyBzcGVjIG5vZGUgaWQpLiBVc2UgZm9yIFVJIHN5bmMuICovXG4gIHN0YWdlSWQ/OiBzdHJpbmc7XG4gIC8qKiBVbmlxdWUgcGVyLWV4ZWN1dGlvbi1zdGVwIGlkZW50aWZpZXIuIEZvcm1hdDogW3N1YmZsb3dQYXRoL11zdGFnZUlkI2V4ZWN1dGlvbkluZGV4LlxuICAgKiAgTGlua3MgbmFycmF0aXZlIGVudHJpZXMgdG8gcmVjb3JkZXIgTWFwIGVudHJpZXMgZm9yIE8oMSkgdGltZS10cmF2ZWwgbG9va3VwLlxuICAgKiAgVW5kZWZpbmVkIG9ubHkgd2hlbiBUcmF2ZXJzYWxDb250ZXh0IGlzIGFic2VudCBmcm9tIHRoZSBzb3VyY2UgZXZlbnQuICovXG4gIHJ1bnRpbWVTdGFnZUlkPzogc3RyaW5nO1xuICBzdGVwTnVtYmVyPzogbnVtYmVyO1xuICAvKiogU3ViZmxvdyBJRCB3aGVuIHRoaXMgZW50cnkgd2FzIGdlbmVyYXRlZCBpbnNpZGUgYSBzdWJmbG93LiBVbmRlZmluZWQgZm9yIHJvb3QtbGV2ZWwuICovXG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqIERpcmVjdGlvbiBmb3Igc3ViZmxvdyBlbnRyaWVzOiAnZW50cnknIHdoZW4gZW50ZXJpbmcsICdleGl0JyB3aGVuIGxlYXZpbmcuXG4gICAqICBPbmx5IHByZXNlbnQgb24gZW50cmllcyB3aXRoIHR5cGUgPT09ICdzdWJmbG93Jy4gVXNlIHRoaXMgaW5zdGVhZCBvZiB0ZXh0IHNjYW5uaW5nLiAqL1xuICBkaXJlY3Rpb24/OiAnZW50cnknIHwgJ2V4aXQnO1xuICAvKiogU2NvcGUga2V5IHRoYXQgd2FzIHJlYWQgb3Igd3JpdHRlbi4gT25seSBwcmVzZW50IG9uICdzdGVwJyBlbnRyaWVzLlxuICAgKiAgVXNlIHRoaXMgZm9yIHN0cnVjdHVyZWQgZGF0YSBleHRyYWN0aW9uIChlLmcuLCBncm91bmRpbmcgYW5hbHlzaXMpXG4gICAqICBpbnN0ZWFkIG9mIG1hdGNoaW5nIG9uIHJlbmRlcmVkIHRleHQgc3RyaW5ncy4gKi9cbiAga2V5Pzogc3RyaW5nO1xuICAvKiogUmF3IHZhbHVlIGZyb20gdGhlIHNjb3BlIGV2ZW50IOKAlCBhdmFpbGFibGUgZm9yIHByb2dyYW1tYXRpYyBhY2Nlc3MgYW5kIGN1c3RvbSBmb3JtYXR0aW5nLlxuICAgKiAgT25seSBwcmVzZW50IG9uICdzdGVwJyBlbnRyaWVzIChyZWFkL3dyaXRlIG9wcykuIFRoaXMgaXMgYSBsaXZlIHJlZmVyZW5jZSwgbm90IGEgY2xvbmUuXG4gICAqICBXaGVuIHVzaW5nIFNjb3BlRmFjYWRlLCByZWRhY3RlZCBrZXlzIHdpbGwgaGF2ZSB2YWx1ZSAnW1JFREFDVEVEXScgKHNhbml0aXplZCB1cHN0cmVhbVxuICAgKiAgYnkgU2NvcGVGYWNhZGUgYmVmb3JlIGRpc3BhdGNoaW5nIGV2ZW50cyDigJQgdGhlIHJlY29yZGVyIGRvZXMgbm90IGVuZm9yY2UgcmVkYWN0aW9uKS4gKi9cbiAgcmF3VmFsdWU/OiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbWJpbmVkTmFycmF0aXZlT3B0aW9ucyB7XG4gIGluY2x1ZGVTdGVwTnVtYmVycz86IGJvb2xlYW47XG4gIGluY2x1ZGVWYWx1ZXM/OiBib29sZWFuO1xuICBpbmRlbnQ/OiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTmFycmF0aXZlRm9ybWF0dGVyIOKAlCBQbHVnZ2FibGUgZm9ybWF0dGluZyBmb3IgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJTdGFnZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VSZW5kZXJDb250ZXh0IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIHN0YWdlTnVtYmVyOiBudW1iZXI7XG4gIGlzRmlyc3Q6IGJvb2xlYW47XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogTG9vcCBpdGVyYXRpb24gbnVtYmVyICgxLWJhc2VkKS4gUHJlc2VudCB3aGVuIHRoaXMgc3RhZ2UgaXMgdmlzaXRlZCB2aWEgbG9vcFRvKCkuICovXG4gIGxvb3BJdGVyYXRpb24/OiBudW1iZXI7XG4gIC8qKiBUcnVlIGZvciB0aGUgc3RhZ2UgYSByZXN1bWUgcmUtZW50ZXJlZDogaXRzIGFycml2YWwgd2FzIGFscmVhZHkgdG9sZCBieSB0aGUgcmVzdW1lIGVudHJ5LiAqL1xuICByZXN1bWVkPzogYm9vbGVhbjtcbn1cblxuLyoqIENvbnRleHQgcGFzc2VkIHRvIHJlbmRlck9wLiBSZXR1cm4gbnVsbCB0byBleGNsdWRlIHRoZSBlbnRyeS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BSZW5kZXJDb250ZXh0IHtcbiAgdHlwZTogJ3JlYWQnIHwgJ3dyaXRlJztcbiAga2V5OiBzdHJpbmc7XG4gIHJhd1ZhbHVlOiB1bmtub3duO1xuICB2YWx1ZVN1bW1hcnk6IHN0cmluZztcbiAgb3BlcmF0aW9uPzogJ3NldCcgfCAndXBkYXRlJyB8ICdkZWxldGUnO1xuICBzdGVwTnVtYmVyOiBudW1iZXI7XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJEZWNpc2lvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVjaXNpb25SZW5kZXJDb250ZXh0IHtcbiAgZGVjaWRlcjogc3RyaW5nO1xuICBjaG9zZW46IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHJhdGlvbmFsZT86IHN0cmluZztcbiAgLyoqIFJhdyBldmlkZW5jZSBmcm9tIGRlY2lkZSgpL3NlbGVjdCgpIOKAlCBhdmFpbGFibGUgZm9yIGN1c3RvbSByZW5kZXJpbmcuICovXG4gIGV2aWRlbmNlPzogdW5rbm93bjtcbn1cblxuLyoqIENvbnRleHQgcGFzc2VkIHRvIHJlbmRlckZvcmsuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcmtSZW5kZXJDb250ZXh0IHtcbiAgY2hpbGRyZW46IHN0cmluZ1tdO1xufVxuXG4vKiogQ29udGV4dCBwYXNzZWQgdG8gcmVuZGVyU3ViZmxvdy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3ViZmxvd1JlbmRlckNvbnRleHQge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRpcmVjdGlvbjogJ2VudHJ5JyB8ICdleGl0JztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBNYXBwZWQgaW5wdXQgdmFsdWVzIHNlbnQgaW50byB0aGUgc3ViZmxvdy4gUHJlc2VudCBvbiBlbnRyeS4gKi9cbiAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFN1YmZsb3cgc2hhcmVkIHN0YXRlIGF0IGV4aXQuIFByZXNlbnQgb24gZXhpdC4gKi9cbiAgb3V0cHV0U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqIENvbnRleHQgcGFzc2VkIHRvIHJlbmRlckxvb3AuICovXG5leHBvcnQgaW50ZXJmYWNlIExvb3BSZW5kZXJDb250ZXh0IHtcbiAgdGFyZ2V0OiBzdHJpbmc7XG4gIGl0ZXJhdGlvbjogbnVtYmVyO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqIENvbnRleHQgcGFzc2VkIHRvIHJlbmRlckJyZWFrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCcmVha1JlbmRlckNvbnRleHQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbn1cblxuLyoqIENvbnRleHQgcGFzc2VkIHRvIHJlbmRlclNlbGVjdGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RlZFJlbmRlckNvbnRleHQge1xuICBzZWxlY3RlZDogc3RyaW5nW107XG4gIHRvdGFsOiBudW1iZXI7XG4gIC8qKiBSYXcgZXZpZGVuY2UgZnJvbSBzZWxlY3QoKSDigJQgYXZhaWxhYmxlIGZvciBjdXN0b20gcmVuZGVyaW5nLiAqL1xuICBldmlkZW5jZT86IHVua25vd247XG59XG5cbi8qKiBDb250ZXh0IHBhc3NlZCB0byByZW5kZXJFcnJvci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JSZW5kZXJDb250ZXh0IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdmFsaWRhdGlvbklzc3Vlcz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb250ZXh0IHBhc3NlZCB0byBgTmFycmF0aXZlRm9ybWF0dGVyLnJlbmRlckF0dGVtcHRgIOKAlCBvbmUgYXR0ZW1wdCBvZiBhIHN0YWdlXG4gKiB3aXRoIGEgZGVjbGFyZWQgcmV0cnkgcG9saWN5ICgxMC4xKSwgd2hhdGV2ZXIgaXRzIG91dGNvbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0ZW1wdFJlbmRlckNvbnRleHQge1xuICAvKiogVGhlIHN0YWdlIHRoZSBhdHRlbXB0IHJhbi4gKi9cbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgYXR0ZW1wdDogb3V0Y29tZSwgZHVyYXRpb24sIGNhdGVnb3J5LCB0aGUgc2VydmVkIGVycm9yLCBhbmQgdGhlIHJldHJ5LW9yLXN0b3AgZGVjaXNpb24uICovXG4gIHJlY29yZDogQXR0ZW1wdFJlY29yZDtcbn1cblxuLyoqXG4gKiBDb250ZXh0IHBhc3NlZCB0byBgTmFycmF0aXZlRm9ybWF0dGVyLnJlbmRlckVtaXRgIOKAlCBmaXJlcyBmb3IgZXZlcnlcbiAqIGNvbnN1bWVyLWVtaXR0ZWQgZXZlbnQgKGBzY29wZS4kZW1pdChuYW1lLCBwYXlsb2FkKWApLiBDYXJyaWVzIHRoZSBmdWxsXG4gKiBgRW1pdEV2ZW50YCBzaGFwZSBzbyBmb3JtYXR0ZXJzIGNhbiByZW5kZXIgbmFtZSArIHBheWxvYWQgd2l0aCBmdWxsXG4gKiBjb250ZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtaXRSZW5kZXJDb250ZXh0IHtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXlsb2FkOiB1bmtub3duO1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgcnVudGltZVN0YWdlSWQ6IHN0cmluZztcbiAgc3ViZmxvd1BhdGg6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICAvKiogU3VtbWFyeSBzdHJpbmcg4oCUIHRoZSBsaWJyYXJ5J3MgZGVmYXVsdCB0cnVuY2F0ZWQgcGF5bG9hZCBwcmV2aWV3LiAqL1xuICBwYXlsb2FkU3VtbWFyeTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBsdWdnYWJsZSBmb3JtYXR0ZXIgZm9yIG5hcnJhdGl2ZSBvdXRwdXQuIFR1cm5zIHN0cnVjdHVyZWQgZXZlbnQgY29udGV4dFxuICogb2JqZWN0cyBpbnRvIHRoZSB0ZXh0IGxpbmVzIHRoYXQgbWFrZSB1cCB0aGUgbmFycmF0aXZlIGFycmF5LlxuICpcbiAqICMjIFdoeSBcIkZvcm1hdHRlclwiLCBub3QgXCJSZW5kZXJlclwiXG4gKlxuICogSW4gd2ViIHRlcm1pbm9sb2d5IFwicmVuZGVyZXJcIiB1c3VhbGx5IG1lYW5zIFwidHVybiBkYXRhIGludG8gYSB2aXNpYmxlIFVJXCJcbiAqIChwaXhlbHMsIERPTSwgSFRNTCkuIFRoaXMgaW50ZXJmYWNlIGRvZXMgc29tZXRoaW5nIHNtYWxsZXI6IGl0IGNvbnZlcnRzXG4gKiBldmVudCBjb250ZXh0IGludG8gYSB0ZXh0IHN0cmluZy4gVGhhdCBpcyBtb3JlIGFjY3VyYXRlbHkgY2FsbGVkIGFcbiAqICpmb3JtYXR0ZXIqLlxuICpcbiAqICMjIEJlaGF2aW91clxuICpcbiAqIEVhY2ggbWV0aG9kIGlzIG9wdGlvbmFsIOKAlCB1bmltcGxlbWVudGVkIG1ldGhvZHMgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0XG4gKiBFbmdsaXNoIGZvcm1hdHRlci4gUmV0dXJuIGBudWxsYCBmcm9tIGByZW5kZXJPcGAgdG8gZXhjbHVkZSB0aGF0IGVudHJ5XG4gKiBmcm9tIHRoZSBuYXJyYXRpdmUgZW50aXJlbHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlYyA9IG5hcnJhdGl2ZSh7XG4gKiAgIHJlbmRlcmVyOiB7XG4gKiAgICAgcmVuZGVyT3AoY3R4KSB7XG4gKiAgICAgICBpZiAoY3R4LmtleS5zdGFydHNXaXRoKCdfaW50ZXJuYWwnKSkgcmV0dXJuIG51bGw7IC8vIGZpbHRlciBvdXQgaW50ZXJuYWwga2V5c1xuICogICAgICAgcmV0dXJuIGAke2N0eC50eXBlID09PSAncmVhZCcgPyAnUmVhZCcgOiAnV3JvdGUnfSAke2N0eC5rZXl9OiAke2N0eC52YWx1ZVN1bW1hcnl9YDtcbiAqICAgICB9LFxuICogICB9LFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXJyYXRpdmVGb3JtYXR0ZXIge1xuICByZW5kZXJTdGFnZT8oY3R4OiBTdGFnZVJlbmRlckNvbnRleHQpOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGb3JtYXQgYW4gb3AgKHNjb3BlIHJlYWQvd3JpdGUsIG9yIHN1YmZsb3ctaW5wdXQga2V5KSBpbnRvIGEgbmFycmF0aXZlIGxpbmUuXG4gICAqXG4gICAqICAgLSBgc3RyaW5nYCAgICDihpIgdXNlIGFzIHRoZSBuYXJyYXRpdmUgbGluZVxuICAgKiAgIC0gYG51bGxgICAgICAg4oaSIGRlbGliZXJhdGVseSBleGNsdWRlIHRoaXMgZW50cnkgZnJvbSB0aGUgbmFycmF0aXZlXG4gICAqICAgLSBgdW5kZWZpbmVkYCDihpIgdGhpcyBmb3JtYXR0ZXIgZG9lcyBub3QgaGFuZGxlIHRoaXMgb3A7IGZhbGwgYmFjayB0b1xuICAgKiAgICAgICAgICAgICAgICAgICB0aGUgbGlicmFyeSdzIGRlZmF1bHQgdGVtcGxhdGVcbiAgICpcbiAgICogVGhlIGB1bmRlZmluZWRgIHJldHVybiBsZXRzIGEgZG9tYWluLWF3YXJlIGZvcm1hdHRlciBoYW5kbGUgb25seSB0aGVcbiAgICoga2V5cyBpdCBrbm93cyBhYm91dCBhbmQgbGVhdmUgdGhlIHJlc3QgdG8gdGhlIGxpYnJhcnkgZGVmYXVsdCDigJQgd2l0aG91dFxuICAgKiBoYXZpbmcgdG8gcmUtaW1wbGVtZW50IHRoZSB3aG9sZSBkZWZhdWx0IGlubGluZS5cbiAgICovXG4gIHJlbmRlck9wPyhjdHg6IE9wUmVuZGVyQ29udGV4dCk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHJlbmRlckRlY2lzaW9uPyhjdHg6IERlY2lzaW9uUmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgcmVuZGVyRm9yaz8oY3R4OiBGb3JrUmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgcmVuZGVyU2VsZWN0ZWQ/KGN0eDogU2VsZWN0ZWRSZW5kZXJDb250ZXh0KTogc3RyaW5nO1xuICByZW5kZXJTdWJmbG93PyhjdHg6IFN1YmZsb3dSZW5kZXJDb250ZXh0KTogc3RyaW5nO1xuICByZW5kZXJMb29wPyhjdHg6IExvb3BSZW5kZXJDb250ZXh0KTogc3RyaW5nO1xuICByZW5kZXJCcmVhaz8oY3R4OiBCcmVha1JlbmRlckNvbnRleHQpOiBzdHJpbmc7XG4gIHJlbmRlckVycm9yPyhjdHg6IEVycm9yUmVuZGVyQ29udGV4dCk6IHN0cmluZztcbiAgLyoqXG4gICAqIEZvcm1hdCBvbmUgYXR0ZW1wdCBvZiBhIHJldHJpZWQgc3RhZ2UgKDEwLjEpIGludG8gYSBuYXJyYXRpdmUgbGluZSDigJQgYVxuICAgKiBkZXB0aC0xIHN1Yi1pdGVtIG9mIGl0cyBzdGFnZSwgYmV0d2VlbiB0aGUgYXR0ZW1wdHMnIHJlYWRzIGFuZCB3cml0ZXMgKGZvclxuICAgKiBhIHN0YWdlIHRoYXQgZmFpbGVkIGZvciBnb29kLCBiZW5lYXRoIGl0cyBlcnJvciBsaW5lKS4gSXQgcmVwbGFjZXMgdGhlXG4gICAqIDkuMTXigJMxMC4wIGByZW5kZXJSZXRyeWAsIHdoaWNoIGlzIHJlbW92ZWQ6IHRoaXMgbGluZSBzYXlzIFwicmV0cnlpbmdcIiB0b28uXG4gICAqXG4gICAqICAgLSBgc3RyaW5nYCAgICDihpIgdXNlIGFzIHRoZSBuYXJyYXRpdmUgbGluZVxuICAgKiAgIC0gYG51bGxgICAgICAg4oaSIGRlbGliZXJhdGVseSBleGNsdWRlIHRoaXMgZW50cnlcbiAgICogICAtIGB1bmRlZmluZWRgIOKGkiBmYWxsIGJhY2sgdG8gdGhlIGxpYnJhcnkncyBkZWZhdWx0IHNlbnRlbmNlXG4gICAqICAgICAgICAgICAgICAgICAgIChgQXR0ZW1wdCAyIG9mIDMgYXQgRmV0Y2ggZmFpbGVkIGluIDEybXMgKOKApiksIHJldHJ5aW5nIGluIDFzLmApXG4gICAqL1xuICByZW5kZXJBdHRlbXB0PyhjdHg6IEF0dGVtcHRSZW5kZXJDb250ZXh0KTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEZvcm1hdCBhIGNvbnN1bWVyLWVtaXR0ZWQgZXZlbnQgKGZyb20gYHNjb3BlLiRlbWl0KG5hbWUsIHBheWxvYWQpYClcbiAgICogaW50byBhIG5hcnJhdGl2ZSBsaW5lLlxuICAgKlxuICAgKiAgIC0gYHN0cmluZ2AgICAg4oaSIHVzZSBhcyB0aGUgbmFycmF0aXZlIGxpbmVcbiAgICogICAtIGBudWxsYCAgICAgIOKGkiBkZWxpYmVyYXRlbHkgZXhjbHVkZSB0aGlzIGVudHJ5XG4gICAqICAgLSBgdW5kZWZpbmVkYCDihpIgdGhpcyBmb3JtYXR0ZXIgZG9lcyBub3QgaGFuZGxlIHRoaXMgZW1pdDsgZmFsbCBiYWNrXG4gICAqICAgICAgICAgICAgICAgICAgIHRvIHRoZSBsaWJyYXJ5J3MgZGVmYXVsdCB0ZW1wbGF0ZVxuICAgKlxuICAgKiBUeXBpY2FsIHBhdHRlcm46IHN3aXRjaCBvbiBgY3R4Lm5hbWVgIChvciBhIHByZWZpeCBvZiBpdCkgYW5kIHJldHVybiBhXG4gICAqIGRvbWFpbi1zcGVjaWZpYyB0ZXh0IGxpbmUgZm9yIHRoZSBldmVudCB0eXBlcyB5b3UgY2FyZSBhYm91dDsgcmV0dXJuXG4gICAqIGB1bmRlZmluZWRgIGZvciBldmVyeXRoaW5nIGVsc2Ugc28gdGhlIGRlZmF1bHQgdGVtcGxhdGUgaGFuZGxlcyBpdC5cbiAgICovXG4gIHJlbmRlckVtaXQ/KGN0eDogRW1pdFJlbmRlckNvbnRleHQpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xufVxuIl19
|
|
@@ -9,6 +9,14 @@
|
|
|
9
9
|
* The manifest reflects only subflows that were actually entered during
|
|
10
10
|
* execution — unvisited branches are not included.
|
|
11
11
|
*
|
|
12
|
+
* Attempts (10.1): a stage whose retry series retried, gave up or timed out gets a row —
|
|
13
|
+
* `{ stageId, stageName, runtimeStageId, attempts: AttemptSummary }` — on the
|
|
14
|
+
* entry of the subflow it ran in (`ManifestEntry.attempts`). The manifest has
|
|
15
|
+
* no entry for the top-level chart, so a top-level stage's row (or one whose
|
|
16
|
+
* subflow entry this recorder never saw) is served by `getRootAttempts()` and
|
|
17
|
+
* rides the snapshot bundle's `meta.rootAttempts` (absent when empty — the
|
|
18
|
+
* bundle's `data` keeps its shape).
|
|
19
|
+
*
|
|
12
20
|
* @example
|
|
13
21
|
* ```typescript
|
|
14
22
|
* const manifest = new ManifestFlowRecorder();
|
|
@@ -22,7 +30,18 @@
|
|
|
22
30
|
* const spec = manifest.getSpec('sf-credit-check');
|
|
23
31
|
* ```
|
|
24
32
|
*/
|
|
25
|
-
import type {
|
|
33
|
+
import type { AttemptSummary } from '../../../attempt/types.js';
|
|
34
|
+
import type { FlowAttemptEvent, FlowRecorder, FlowSubflowEvent, FlowSubflowRegisteredEvent } from '../types.js';
|
|
35
|
+
/** One stage execution whose retry series retried, gave up or timed out, at a glance. */
|
|
36
|
+
export interface ManifestAttemptRow {
|
|
37
|
+
/** Stable stage id (path-prefixed inside a subflow). */
|
|
38
|
+
stageId: string;
|
|
39
|
+
stageName: string;
|
|
40
|
+
/** The execution — the series' `runtimeStageId`. */
|
|
41
|
+
runtimeStageId: string;
|
|
42
|
+
/** The series at a glance — equal to the stage's `StageSnapshot.attemptSummary`. */
|
|
43
|
+
attempts: AttemptSummary;
|
|
44
|
+
}
|
|
26
45
|
/** A single entry in the subflow manifest tree. */
|
|
27
46
|
export interface ManifestEntry {
|
|
28
47
|
/** Subflow identifier — use for on-demand spec lookup. */
|
|
@@ -33,6 +52,8 @@ export interface ManifestEntry {
|
|
|
33
52
|
description?: string;
|
|
34
53
|
/** Nested subflows entered within this subflow. */
|
|
35
54
|
children: ManifestEntry[];
|
|
55
|
+
/** Stages run directly in this subflow whose series retried, gave up or timed out — absent when none did. */
|
|
56
|
+
attempts?: ManifestAttemptRow[];
|
|
36
57
|
}
|
|
37
58
|
export declare class ManifestFlowRecorder implements FlowRecorder {
|
|
38
59
|
readonly id: string;
|
|
@@ -42,12 +63,31 @@ export declare class ManifestFlowRecorder implements FlowRecorder {
|
|
|
42
63
|
private roots;
|
|
43
64
|
/** Full specs stored from dynamic registration events. */
|
|
44
65
|
private specs;
|
|
66
|
+
/**
|
|
67
|
+
* Open entries by subflowId — where a stage's row lands. Not the stack: parallel subflow siblings exit out of
|
|
68
|
+
* stack order, so the entry a row belongs to may no longer be on it.
|
|
69
|
+
*/
|
|
70
|
+
private openEntries;
|
|
71
|
+
/** Rows of top-level stages — the manifest has no entry for the top-level chart. */
|
|
72
|
+
private rootAttempts;
|
|
73
|
+
/** Per-series tallies of the series that retried, gave up or timed out. */
|
|
74
|
+
private readonly attemptBook;
|
|
45
75
|
constructor(id?: string);
|
|
46
76
|
onSubflowEntry(event: FlowSubflowEvent): void;
|
|
47
|
-
onSubflowExit(
|
|
77
|
+
onSubflowExit(event: FlowSubflowEvent): void;
|
|
78
|
+
/**
|
|
79
|
+
* A series' row lands once, when it ends, on the open entry of the subflow the stage ran in; a top-level
|
|
80
|
+
* stage's (or one whose entry this recorder never saw) on the root rows.
|
|
81
|
+
*/
|
|
82
|
+
onAttempt(event: FlowAttemptEvent): void;
|
|
48
83
|
onSubflowRegistered(event: FlowSubflowRegisteredEvent): void;
|
|
49
84
|
/** Returns the manifest tree — lightweight, suitable for snapshot inclusion. */
|
|
50
85
|
getManifest(): ManifestEntry[];
|
|
86
|
+
/**
|
|
87
|
+
* Rows of top-level stages whose series retried, gave up or timed out, in the order the series ended — plus any row of a
|
|
88
|
+
* subflow stage whose entry this recorder never saw (its path-prefixed `stageId` says where it ran).
|
|
89
|
+
*/
|
|
90
|
+
getRootAttempts(): ManifestAttemptRow[];
|
|
51
91
|
/**
|
|
52
92
|
* Returns the full spec for a dynamically-registered subflow.
|
|
53
93
|
* Only populated for subflows auto-registered at runtime (via StageNode
|
|
@@ -59,6 +99,9 @@ export declare class ManifestFlowRecorder implements FlowRecorder {
|
|
|
59
99
|
/** Returns all stored spec IDs. */
|
|
60
100
|
getSpecIds(): string[];
|
|
61
101
|
toSnapshot(): {
|
|
102
|
+
meta?: {
|
|
103
|
+
rootAttempts: ManifestAttemptRow[];
|
|
104
|
+
} | undefined;
|
|
62
105
|
name: string;
|
|
63
106
|
description: string;
|
|
64
107
|
preferredOperation: "translate";
|
|
@@ -9,6 +9,14 @@
|
|
|
9
9
|
* The manifest reflects only subflows that were actually entered during
|
|
10
10
|
* execution — unvisited branches are not included.
|
|
11
11
|
*
|
|
12
|
+
* Attempts (10.1): a stage whose retry series retried, gave up or timed out gets a row —
|
|
13
|
+
* `{ stageId, stageName, runtimeStageId, attempts: AttemptSummary }` — on the
|
|
14
|
+
* entry of the subflow it ran in (`ManifestEntry.attempts`). The manifest has
|
|
15
|
+
* no entry for the top-level chart, so a top-level stage's row (or one whose
|
|
16
|
+
* subflow entry this recorder never saw) is served by `getRootAttempts()` and
|
|
17
|
+
* rides the snapshot bundle's `meta.rootAttempts` (absent when empty — the
|
|
18
|
+
* bundle's `data` keeps its shape).
|
|
19
|
+
*
|
|
12
20
|
* @example
|
|
13
21
|
* ```typescript
|
|
14
22
|
* const manifest = new ManifestFlowRecorder();
|
|
@@ -22,6 +30,7 @@
|
|
|
22
30
|
* const spec = manifest.getSpec('sf-credit-check');
|
|
23
31
|
* ```
|
|
24
32
|
*/
|
|
33
|
+
import { AttemptSeriesBook, subflowOfAttempt } from '../../../recorder/attemptSeries.js';
|
|
25
34
|
export class ManifestFlowRecorder {
|
|
26
35
|
id;
|
|
27
36
|
/** Stack tracks nesting depth — current subflow is top of stack. */
|
|
@@ -30,6 +39,15 @@ export class ManifestFlowRecorder {
|
|
|
30
39
|
roots = [];
|
|
31
40
|
/** Full specs stored from dynamic registration events. */
|
|
32
41
|
specs = new Map();
|
|
42
|
+
/**
|
|
43
|
+
* Open entries by subflowId — where a stage's row lands. Not the stack: parallel subflow siblings exit out of
|
|
44
|
+
* stack order, so the entry a row belongs to may no longer be on it.
|
|
45
|
+
*/
|
|
46
|
+
openEntries = new Map();
|
|
47
|
+
/** Rows of top-level stages — the manifest has no entry for the top-level chart. */
|
|
48
|
+
rootAttempts = [];
|
|
49
|
+
/** Per-series tallies of the series that retried, gave up or timed out. */
|
|
50
|
+
attemptBook = new AttemptSeriesBook();
|
|
33
51
|
constructor(id) {
|
|
34
52
|
this.id = id ?? 'manifest';
|
|
35
53
|
}
|
|
@@ -41,8 +59,10 @@ export class ManifestFlowRecorder {
|
|
|
41
59
|
children: [],
|
|
42
60
|
};
|
|
43
61
|
this.stack.push(entry);
|
|
62
|
+
this.openEntries.set(entry.subflowId, entry);
|
|
44
63
|
}
|
|
45
|
-
onSubflowExit(
|
|
64
|
+
onSubflowExit(event) {
|
|
65
|
+
this.openEntries.delete(event.subflowId ?? event.name);
|
|
46
66
|
const completed = this.stack.pop();
|
|
47
67
|
if (!completed)
|
|
48
68
|
return;
|
|
@@ -54,6 +74,28 @@ export class ManifestFlowRecorder {
|
|
|
54
74
|
this.roots.push(completed);
|
|
55
75
|
}
|
|
56
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* A series' row lands once, when it ends, on the open entry of the subflow the stage ran in; a top-level
|
|
79
|
+
* stage's (or one whose entry this recorder never saw) on the root rows.
|
|
80
|
+
*/
|
|
81
|
+
onAttempt(event) {
|
|
82
|
+
const summary = this.attemptBook.add(event.record)?.summary;
|
|
83
|
+
if (!summary)
|
|
84
|
+
return;
|
|
85
|
+
const row = {
|
|
86
|
+
stageId: event.stageId,
|
|
87
|
+
stageName: event.stageName,
|
|
88
|
+
runtimeStageId: event.record.series,
|
|
89
|
+
attempts: summary,
|
|
90
|
+
};
|
|
91
|
+
const owner = this.openEntries.get(subflowOfAttempt(event) ?? '');
|
|
92
|
+
// A row whose subflow entry this recorder never saw (attached mid-run) is kept with the top-level rows — its
|
|
93
|
+
// path-prefixed `stageId` still says where it ran — never dropped.
|
|
94
|
+
if (owner)
|
|
95
|
+
(owner.attempts ??= []).push(row);
|
|
96
|
+
else
|
|
97
|
+
this.rootAttempts.push(row);
|
|
98
|
+
}
|
|
57
99
|
onSubflowRegistered(event) {
|
|
58
100
|
if (event.specStructure && !this.specs.has(event.subflowId)) {
|
|
59
101
|
this.specs.set(event.subflowId, event.specStructure);
|
|
@@ -63,6 +105,13 @@ export class ManifestFlowRecorder {
|
|
|
63
105
|
getManifest() {
|
|
64
106
|
return [...this.roots];
|
|
65
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Rows of top-level stages whose series retried, gave up or timed out, in the order the series ended — plus any row of a
|
|
110
|
+
* subflow stage whose entry this recorder never saw (its path-prefixed `stageId` says where it ran).
|
|
111
|
+
*/
|
|
112
|
+
getRootAttempts() {
|
|
113
|
+
return [...this.rootAttempts];
|
|
114
|
+
}
|
|
66
115
|
/**
|
|
67
116
|
* Returns the full spec for a dynamically-registered subflow.
|
|
68
117
|
* Only populated for subflows auto-registered at runtime (via StageNode
|
|
@@ -83,6 +132,7 @@ export class ManifestFlowRecorder {
|
|
|
83
132
|
description: 'Translator (FlowRecorder) — subflow catalog built during traversal',
|
|
84
133
|
preferredOperation: 'translate',
|
|
85
134
|
data: this.getManifest(),
|
|
135
|
+
...(this.rootAttempts.length > 0 && { meta: { rootAttempts: this.getRootAttempts() } }),
|
|
86
136
|
};
|
|
87
137
|
}
|
|
88
138
|
/** Clears state for reuse. */
|
|
@@ -90,6 +140,9 @@ export class ManifestFlowRecorder {
|
|
|
90
140
|
this.stack = [];
|
|
91
141
|
this.roots = [];
|
|
92
142
|
this.specs.clear();
|
|
143
|
+
this.openEntries = new Map();
|
|
144
|
+
this.rootAttempts = [];
|
|
145
|
+
this.attemptBook.clear();
|
|
93
146
|
}
|
|
94
147
|
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFuaWZlc3RGbG93UmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvcmVjb3JkZXJzL01hbmlmZXN0Rmxvd1JlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQWdCSCxNQUFNLE9BQU8sb0JBQW9CO0lBQ3RCLEVBQUUsQ0FBUztJQUVwQixvRUFBb0U7SUFDNUQsS0FBSyxHQUFvQixFQUFFLENBQUM7SUFDcEMsK0RBQStEO0lBQ3ZELEtBQUssR0FBb0IsRUFBRSxDQUFDO0lBQ3BDLDBEQUEwRDtJQUNsRCxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFFM0MsWUFBWSxFQUFXO1FBQ3JCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQXVCO1FBQ3BDLE1BQU0sS0FBSyxHQUFrQjtZQUMzQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSTtZQUN4QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFFBQVEsRUFBRSxFQUFFO1NBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBd0I7UUFDcEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFFdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWlDO1FBQ25ELElBQUksS0FBSyxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRUQsZ0ZBQWdGO0lBQ2hGLFdBQVc7UUFDVCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE9BQU8sQ0FBQyxTQUFpQjtRQUN2QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsVUFBVTtRQUNSLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPO1lBQ0wsSUFBSSxFQUFFLFVBQVU7WUFDaEIsV0FBVyxFQUFFLG9FQUFvRTtZQUNqRixrQkFBa0IsRUFBRSxXQUFvQjtZQUN4QyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRTtTQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVELDhCQUE4QjtJQUM5QixLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1hbmlmZXN0Rmxvd1JlY29yZGVyIOKAlCBCdWlsZHMgYSBsaWdodHdlaWdodCBzdWJmbG93IG1hbmlmZXN0IGR1cmluZyB0cmF2ZXJzYWwuXG4gKlxuICogQ29sbGVjdHMgc3ViZmxvdyBtZXRhZGF0YSAoSUQsIG5hbWUsIGRlc2NyaXB0aW9uKSBhcyBhIHNpZGUgZWZmZWN0IG9mXG4gKiBvYnNlcnZpbmcgdHJhdmVyc2FsIGV2ZW50cy4gUHJvZHVjZXMgYSB0cmVlIHN0cnVjdHVyZSBzdWl0YWJsZSBmb3IgTExNXG4gKiBuYXZpZ2F0aW9uOiBsaWdodHdlaWdodCBlbm91Z2ggdG8gaW5jbHVkZSBpbiBzbmFwc2hvdHMsIHdpdGggb24tZGVtYW5kXG4gKiBhY2Nlc3MgdG8gZnVsbCBzcGVjcyB2aWEgZ2V0U3BlYygpLlxuICpcbiAqIFRoZSBtYW5pZmVzdCByZWZsZWN0cyBvbmx5IHN1YmZsb3dzIHRoYXQgd2VyZSBhY3R1YWxseSBlbnRlcmVkIGR1cmluZ1xuICogZXhlY3V0aW9uIOKAlCB1bnZpc2l0ZWQgYnJhbmNoZXMgYXJlIG5vdCBpbmNsdWRlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWFuaWZlc3QgPSBuZXcgTWFuaWZlc3RGbG93UmVjb3JkZXIoKTtcbiAqIGV4ZWN1dG9yLmF0dGFjaEZsb3dSZWNvcmRlcihtYW5pZmVzdCk7XG4gKiBhd2FpdCBleGVjdXRvci5ydW4oeyBpbnB1dDogZGF0YSB9KTtcbiAqXG4gKiAvLyBMaWdodHdlaWdodCB0cmVlIG9mIHN1YmZsb3cgSURzICsgZGVzY3JpcHRpb25zXG4gKiBjb25zdCB0cmVlID0gbWFuaWZlc3QuZ2V0TWFuaWZlc3QoKTtcbiAqXG4gKiAvLyBGdWxsIHNwZWMgZm9yIGEgc3BlY2lmaWMgc3ViZmxvdyAoaWYgYXZhaWxhYmxlKVxuICogY29uc3Qgc3BlYyA9IG1hbmlmZXN0LmdldFNwZWMoJ3NmLWNyZWRpdC1jaGVjaycpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBGbG93UmVjb3JkZXIsIEZsb3dTdWJmbG93RXZlbnQsIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50IH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKiogQSBzaW5nbGUgZW50cnkgaW4gdGhlIHN1YmZsb3cgbWFuaWZlc3QgdHJlZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFuaWZlc3RFbnRyeSB7XG4gIC8qKiBTdWJmbG93IGlkZW50aWZpZXIg4oCUIHVzZSBmb3Igb24tZGVtYW5kIHNwZWMgbG9va3VwLiAqL1xuICBzdWJmbG93SWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG5hbWUuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIEJ1aWxkLXRpbWUgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHN1YmZsb3cgZG9lcy4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBOZXN0ZWQgc3ViZmxvd3MgZW50ZXJlZCB3aXRoaW4gdGhpcyBzdWJmbG93LiAqL1xuICBjaGlsZHJlbjogTWFuaWZlc3RFbnRyeVtdO1xufVxuXG5leHBvcnQgY2xhc3MgTWFuaWZlc3RGbG93UmVjb3JkZXIgaW1wbGVtZW50cyBGbG93UmVjb3JkZXIge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKiBTdGFjayB0cmFja3MgbmVzdGluZyBkZXB0aCDigJQgY3VycmVudCBzdWJmbG93IGlzIHRvcCBvZiBzdGFjay4gKi9cbiAgcHJpdmF0ZSBzdGFjazogTWFuaWZlc3RFbnRyeVtdID0gW107XG4gIC8qKiBSb290LWxldmVsIHN1YmZsb3dzIChub3QgbmVzdGVkIGluc2lkZSBhbm90aGVyIHN1YmZsb3cpLiAqL1xuICBwcml2YXRlIHJvb3RzOiBNYW5pZmVzdEVudHJ5W10gPSBbXTtcbiAgLyoqIEZ1bGwgc3BlY3Mgc3RvcmVkIGZyb20gZHluYW1pYyByZWdpc3RyYXRpb24gZXZlbnRzLiAqL1xuICBwcml2YXRlIHNwZWNzID0gbmV3IE1hcDxzdHJpbmcsIHVua25vd24+KCk7XG5cbiAgY29uc3RydWN0b3IoaWQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkID0gaWQgPz8gJ21hbmlmZXN0JztcbiAgfVxuXG4gIG9uU3ViZmxvd0VudHJ5KGV2ZW50OiBGbG93U3ViZmxvd0V2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZW50cnk6IE1hbmlmZXN0RW50cnkgPSB7XG4gICAgICBzdWJmbG93SWQ6IGV2ZW50LnN1YmZsb3dJZCA/PyBldmVudC5uYW1lLFxuICAgICAgbmFtZTogZXZlbnQubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBldmVudC5kZXNjcmlwdGlvbixcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICB9O1xuICAgIHRoaXMuc3RhY2sucHVzaChlbnRyeSk7XG4gIH1cblxuICBvblN1YmZsb3dFeGl0KF9ldmVudDogRmxvd1N1YmZsb3dFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBsZXRlZCA9IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgaWYgKCFjb21wbGV0ZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXTtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChjb21wbGV0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvb3RzLnB1c2goY29tcGxldGVkKTtcbiAgICB9XG4gIH1cblxuICBvblN1YmZsb3dSZWdpc3RlcmVkKGV2ZW50OiBGbG93U3ViZmxvd1JlZ2lzdGVyZWRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5zcGVjU3RydWN0dXJlICYmICF0aGlzLnNwZWNzLmhhcyhldmVudC5zdWJmbG93SWQpKSB7XG4gICAgICB0aGlzLnNwZWNzLnNldChldmVudC5zdWJmbG93SWQsIGV2ZW50LnNwZWNTdHJ1Y3R1cmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBtYW5pZmVzdCB0cmVlIOKAlCBsaWdodHdlaWdodCwgc3VpdGFibGUgZm9yIHNuYXBzaG90IGluY2x1c2lvbi4gKi9cbiAgZ2V0TWFuaWZlc3QoKTogTWFuaWZlc3RFbnRyeVtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMucm9vdHNdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZ1bGwgc3BlYyBmb3IgYSBkeW5hbWljYWxseS1yZWdpc3RlcmVkIHN1YmZsb3cuXG4gICAqIE9ubHkgcG9wdWxhdGVkIGZvciBzdWJmbG93cyBhdXRvLXJlZ2lzdGVyZWQgYXQgcnVudGltZSAodmlhIFN0YWdlTm9kZVxuICAgKiByZXR1cm4gd2l0aCBzdWJmbG93RGVmKS4gU3RhdGljYWxseS1jb25maWd1cmVkIHN1YmZsb3dzIGFyZSBub3QgaW5jbHVkZWRcbiAgICogZXZlbiBpZiB0aGV5IGFwcGVhciBpbiBnZXRNYW5pZmVzdCgpLiBVc2UgRmxvd0NoYXJ0LmJ1aWxkVGltZVN0cnVjdHVyZVxuICAgKiB0byBhY2Nlc3Mgc3RhdGljYWxseS1kZWZpbmVkIHN1YmZsb3cgc3BlY3MuXG4gICAqL1xuICBnZXRTcGVjKHN1YmZsb3dJZDogc3RyaW5nKTogdW5rbm93biB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3BlY3MuZ2V0KHN1YmZsb3dJZCk7XG4gIH1cblxuICAvKiogUmV0dXJucyBhbGwgc3RvcmVkIHNwZWMgSURzLiAqL1xuICBnZXRTcGVjSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnNwZWNzLmtleXMoKSk7XG4gIH1cblxuICB0b1NuYXBzaG90KCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnTWFuaWZlc3QnLFxuICAgICAgZGVzY3JpcHRpb246ICdUcmFuc2xhdG9yIChGbG93UmVjb3JkZXIpIOKAlCBzdWJmbG93IGNhdGFsb2cgYnVpbHQgZHVyaW5nIHRyYXZlcnNhbCcsXG4gICAgICBwcmVmZXJyZWRPcGVyYXRpb246ICd0cmFuc2xhdGUnIGFzIGNvbnN0LFxuICAgICAgZGF0YTogdGhpcy5nZXRNYW5pZmVzdCgpLFxuICAgIH07XG4gIH1cblxuICAvKiogQ2xlYXJzIHN0YXRlIGZvciByZXVzZS4gKi9cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFjayA9IFtdO1xuICAgIHRoaXMucm9vdHMgPSBbXTtcbiAgICB0aGlzLnNwZWNzLmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFuaWZlc3RGbG93UmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvcmVjb3JkZXJzL01hbmlmZXN0Rmxvd1JlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBR0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUE0QnpGLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsRUFBRSxDQUFTO0lBRXBCLG9FQUFvRTtJQUM1RCxLQUFLLEdBQW9CLEVBQUUsQ0FBQztJQUNwQywrREFBK0Q7SUFDdkQsS0FBSyxHQUFvQixFQUFFLENBQUM7SUFDcEMsMERBQTBEO0lBQ2xELEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUMzQzs7O09BR0c7SUFDSyxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7SUFDdkQsb0ZBQW9GO0lBQzVFLFlBQVksR0FBeUIsRUFBRSxDQUFDO0lBQ2hELDJFQUEyRTtJQUMxRCxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBRXZELFlBQVksRUFBVztRQUNyQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUF1QjtRQUNwQyxNQUFNLEtBQUssR0FBa0I7WUFDM0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLElBQUk7WUFDeEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBdUI7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFFdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxLQUF1QjtRQUMvQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDO1FBQzVELElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUNyQixNQUFNLEdBQUcsR0FBdUI7WUFDOUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixjQUFjLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO1lBQ25DLFFBQVEsRUFBRSxPQUFPO1NBQ2xCLENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRSw2R0FBNkc7UUFDN0csbUVBQW1FO1FBQ25FLElBQUksS0FBSztZQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7O1lBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFpQztRQUNuRCxJQUFJLEtBQUssQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGdGQUFnRjtJQUNoRixXQUFXO1FBQ1QsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxPQUFPLENBQUMsU0FBaUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLFVBQVU7UUFDUixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTztZQUNMLElBQUksRUFBRSxVQUFVO1lBQ2hCLFdBQVcsRUFBRSxvRUFBb0U7WUFDakYsa0JBQWtCLEVBQUUsV0FBb0I7WUFDeEMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDeEIsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ3hGLENBQUM7SUFDSixDQUFDO0lBRUQsOEJBQThCO0lBQzlCLEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWFuaWZlc3RGbG93UmVjb3JkZXIg4oCUIEJ1aWxkcyBhIGxpZ2h0d2VpZ2h0IHN1YmZsb3cgbWFuaWZlc3QgZHVyaW5nIHRyYXZlcnNhbC5cbiAqXG4gKiBDb2xsZWN0cyBzdWJmbG93IG1ldGFkYXRhIChJRCwgbmFtZSwgZGVzY3JpcHRpb24pIGFzIGEgc2lkZSBlZmZlY3Qgb2ZcbiAqIG9ic2VydmluZyB0cmF2ZXJzYWwgZXZlbnRzLiBQcm9kdWNlcyBhIHRyZWUgc3RydWN0dXJlIHN1aXRhYmxlIGZvciBMTE1cbiAqIG5hdmlnYXRpb246IGxpZ2h0d2VpZ2h0IGVub3VnaCB0byBpbmNsdWRlIGluIHNuYXBzaG90cywgd2l0aCBvbi1kZW1hbmRcbiAqIGFjY2VzcyB0byBmdWxsIHNwZWNzIHZpYSBnZXRTcGVjKCkuXG4gKlxuICogVGhlIG1hbmlmZXN0IHJlZmxlY3RzIG9ubHkgc3ViZmxvd3MgdGhhdCB3ZXJlIGFjdHVhbGx5IGVudGVyZWQgZHVyaW5nXG4gKiBleGVjdXRpb24g4oCUIHVudmlzaXRlZCBicmFuY2hlcyBhcmUgbm90IGluY2x1ZGVkLlxuICpcbiAqIEF0dGVtcHRzICgxMC4xKTogYSBzdGFnZSB3aG9zZSByZXRyeSBzZXJpZXMgcmV0cmllZCwgZ2F2ZSB1cCBvciB0aW1lZCBvdXQgZ2V0cyBhIHJvdyDigJRcbiAqIGB7IHN0YWdlSWQsIHN0YWdlTmFtZSwgcnVudGltZVN0YWdlSWQsIGF0dGVtcHRzOiBBdHRlbXB0U3VtbWFyeSB9YCDigJQgb24gdGhlXG4gKiBlbnRyeSBvZiB0aGUgc3ViZmxvdyBpdCByYW4gaW4gKGBNYW5pZmVzdEVudHJ5LmF0dGVtcHRzYCkuIFRoZSBtYW5pZmVzdCBoYXNcbiAqIG5vIGVudHJ5IGZvciB0aGUgdG9wLWxldmVsIGNoYXJ0LCBzbyBhIHRvcC1sZXZlbCBzdGFnZSdzIHJvdyAob3Igb25lIHdob3NlXG4gKiBzdWJmbG93IGVudHJ5IHRoaXMgcmVjb3JkZXIgbmV2ZXIgc2F3KSBpcyBzZXJ2ZWQgYnkgYGdldFJvb3RBdHRlbXB0cygpYCBhbmRcbiAqIHJpZGVzIHRoZSBzbmFwc2hvdCBidW5kbGUncyBgbWV0YS5yb290QXR0ZW1wdHNgIChhYnNlbnQgd2hlbiBlbXB0eSDigJQgdGhlXG4gKiBidW5kbGUncyBgZGF0YWAga2VlcHMgaXRzIHNoYXBlKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWFuaWZlc3QgPSBuZXcgTWFuaWZlc3RGbG93UmVjb3JkZXIoKTtcbiAqIGV4ZWN1dG9yLmF0dGFjaEZsb3dSZWNvcmRlcihtYW5pZmVzdCk7XG4gKiBhd2FpdCBleGVjdXRvci5ydW4oeyBpbnB1dDogZGF0YSB9KTtcbiAqXG4gKiAvLyBMaWdodHdlaWdodCB0cmVlIG9mIHN1YmZsb3cgSURzICsgZGVzY3JpcHRpb25zXG4gKiBjb25zdCB0cmVlID0gbWFuaWZlc3QuZ2V0TWFuaWZlc3QoKTtcbiAqXG4gKiAvLyBGdWxsIHNwZWMgZm9yIGEgc3BlY2lmaWMgc3ViZmxvdyAoaWYgYXZhaWxhYmxlKVxuICogY29uc3Qgc3BlYyA9IG1hbmlmZXN0LmdldFNwZWMoJ3NmLWNyZWRpdC1jaGVjaycpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBdHRlbXB0U3VtbWFyeSB9IGZyb20gJy4uLy4uLy4uL2F0dGVtcHQvdHlwZXMuanMnO1xuaW1wb3J0IHsgQXR0ZW1wdFNlcmllc0Jvb2ssIHN1YmZsb3dPZkF0dGVtcHQgfSBmcm9tICcuLi8uLi8uLi9yZWNvcmRlci9hdHRlbXB0U2VyaWVzLmpzJztcbmltcG9ydCB0eXBlIHsgRmxvd0F0dGVtcHRFdmVudCwgRmxvd1JlY29yZGVyLCBGbG93U3ViZmxvd0V2ZW50LCBGbG93U3ViZmxvd1JlZ2lzdGVyZWRFdmVudCB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLyoqIE9uZSBzdGFnZSBleGVjdXRpb24gd2hvc2UgcmV0cnkgc2VyaWVzIHJldHJpZWQsIGdhdmUgdXAgb3IgdGltZWQgb3V0LCBhdCBhIGdsYW5jZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFuaWZlc3RBdHRlbXB0Um93IHtcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZCAocGF0aC1wcmVmaXhlZCBpbnNpZGUgYSBzdWJmbG93KS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFRoZSBleGVjdXRpb24g4oCUIHRoZSBzZXJpZXMnIGBydW50aW1lU3RhZ2VJZGAuICovXG4gIHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBUaGUgc2VyaWVzIGF0IGEgZ2xhbmNlIOKAlCBlcXVhbCB0byB0aGUgc3RhZ2UncyBgU3RhZ2VTbmFwc2hvdC5hdHRlbXB0U3VtbWFyeWAuICovXG4gIGF0dGVtcHRzOiBBdHRlbXB0U3VtbWFyeTtcbn1cblxuLyoqIEEgc2luZ2xlIGVudHJ5IGluIHRoZSBzdWJmbG93IG1hbmlmZXN0IHRyZWUuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hbmlmZXN0RW50cnkge1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyIOKAlCB1c2UgZm9yIG9uLWRlbWFuZCBzcGVjIGxvb2t1cC4gKi9cbiAgc3ViZmxvd0lkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBuYW1lLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBCdWlsZC10aW1lIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhpcyBzdWJmbG93IGRvZXMuICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogTmVzdGVkIHN1YmZsb3dzIGVudGVyZWQgd2l0aGluIHRoaXMgc3ViZmxvdy4gKi9cbiAgY2hpbGRyZW46IE1hbmlmZXN0RW50cnlbXTtcbiAgLyoqIFN0YWdlcyBydW4gZGlyZWN0bHkgaW4gdGhpcyBzdWJmbG93IHdob3NlIHNlcmllcyByZXRyaWVkLCBnYXZlIHVwIG9yIHRpbWVkIG91dCDigJQgYWJzZW50IHdoZW4gbm9uZSBkaWQuICovXG4gIGF0dGVtcHRzPzogTWFuaWZlc3RBdHRlbXB0Um93W107XG59XG5cbmV4cG9ydCBjbGFzcyBNYW5pZmVzdEZsb3dSZWNvcmRlciBpbXBsZW1lbnRzIEZsb3dSZWNvcmRlciB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqIFN0YWNrIHRyYWNrcyBuZXN0aW5nIGRlcHRoIOKAlCBjdXJyZW50IHN1YmZsb3cgaXMgdG9wIG9mIHN0YWNrLiAqL1xuICBwcml2YXRlIHN0YWNrOiBNYW5pZmVzdEVudHJ5W10gPSBbXTtcbiAgLyoqIFJvb3QtbGV2ZWwgc3ViZmxvd3MgKG5vdCBuZXN0ZWQgaW5zaWRlIGFub3RoZXIgc3ViZmxvdykuICovXG4gIHByaXZhdGUgcm9vdHM6IE1hbmlmZXN0RW50cnlbXSA9IFtdO1xuICAvKiogRnVsbCBzcGVjcyBzdG9yZWQgZnJvbSBkeW5hbWljIHJlZ2lzdHJhdGlvbiBldmVudHMuICovXG4gIHByaXZhdGUgc3BlY3MgPSBuZXcgTWFwPHN0cmluZywgdW5rbm93bj4oKTtcbiAgLyoqXG4gICAqIE9wZW4gZW50cmllcyBieSBzdWJmbG93SWQg4oCUIHdoZXJlIGEgc3RhZ2UncyByb3cgbGFuZHMuIE5vdCB0aGUgc3RhY2s6IHBhcmFsbGVsIHN1YmZsb3cgc2libGluZ3MgZXhpdCBvdXQgb2ZcbiAgICogc3RhY2sgb3JkZXIsIHNvIHRoZSBlbnRyeSBhIHJvdyBiZWxvbmdzIHRvIG1heSBubyBsb25nZXIgYmUgb24gaXQuXG4gICAqL1xuICBwcml2YXRlIG9wZW5FbnRyaWVzID0gbmV3IE1hcDxzdHJpbmcsIE1hbmlmZXN0RW50cnk+KCk7XG4gIC8qKiBSb3dzIG9mIHRvcC1sZXZlbCBzdGFnZXMg4oCUIHRoZSBtYW5pZmVzdCBoYXMgbm8gZW50cnkgZm9yIHRoZSB0b3AtbGV2ZWwgY2hhcnQuICovXG4gIHByaXZhdGUgcm9vdEF0dGVtcHRzOiBNYW5pZmVzdEF0dGVtcHRSb3dbXSA9IFtdO1xuICAvKiogUGVyLXNlcmllcyB0YWxsaWVzIG9mIHRoZSBzZXJpZXMgdGhhdCByZXRyaWVkLCBnYXZlIHVwIG9yIHRpbWVkIG91dC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBhdHRlbXB0Qm9vayA9IG5ldyBBdHRlbXB0U2VyaWVzQm9vaygpO1xuXG4gIGNvbnN0cnVjdG9yKGlkPzogc3RyaW5nKSB7XG4gICAgdGhpcy5pZCA9IGlkID8/ICdtYW5pZmVzdCc7XG4gIH1cblxuICBvblN1YmZsb3dFbnRyeShldmVudDogRmxvd1N1YmZsb3dFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJ5OiBNYW5pZmVzdEVudHJ5ID0ge1xuICAgICAgc3ViZmxvd0lkOiBldmVudC5zdWJmbG93SWQgPz8gZXZlbnQubmFtZSxcbiAgICAgIG5hbWU6IGV2ZW50Lm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogZXZlbnQuZGVzY3JpcHRpb24sXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgfTtcbiAgICB0aGlzLnN0YWNrLnB1c2goZW50cnkpO1xuICAgIHRoaXMub3BlbkVudHJpZXMuc2V0KGVudHJ5LnN1YmZsb3dJZCwgZW50cnkpO1xuICB9XG5cbiAgb25TdWJmbG93RXhpdChldmVudDogRmxvd1N1YmZsb3dFdmVudCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkVudHJpZXMuZGVsZXRlKGV2ZW50LnN1YmZsb3dJZCA/PyBldmVudC5uYW1lKTtcbiAgICBjb25zdCBjb21wbGV0ZWQgPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgIGlmICghY29tcGxldGVkKSByZXR1cm47XG5cbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV07XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2goY29tcGxldGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb290cy5wdXNoKGNvbXBsZXRlZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEEgc2VyaWVzJyByb3cgbGFuZHMgb25jZSwgd2hlbiBpdCBlbmRzLCBvbiB0aGUgb3BlbiBlbnRyeSBvZiB0aGUgc3ViZmxvdyB0aGUgc3RhZ2UgcmFuIGluOyBhIHRvcC1sZXZlbFxuICAgKiBzdGFnZSdzIChvciBvbmUgd2hvc2UgZW50cnkgdGhpcyByZWNvcmRlciBuZXZlciBzYXcpIG9uIHRoZSByb290IHJvd3MuXG4gICAqL1xuICBvbkF0dGVtcHQoZXZlbnQ6IEZsb3dBdHRlbXB0RXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5hdHRlbXB0Qm9vay5hZGQoZXZlbnQucmVjb3JkKT8uc3VtbWFyeTtcbiAgICBpZiAoIXN1bW1hcnkpIHJldHVybjtcbiAgICBjb25zdCByb3c6IE1hbmlmZXN0QXR0ZW1wdFJvdyA9IHtcbiAgICAgIHN0YWdlSWQ6IGV2ZW50LnN0YWdlSWQsXG4gICAgICBzdGFnZU5hbWU6IGV2ZW50LnN0YWdlTmFtZSxcbiAgICAgIHJ1bnRpbWVTdGFnZUlkOiBldmVudC5yZWNvcmQuc2VyaWVzLFxuICAgICAgYXR0ZW1wdHM6IHN1bW1hcnksXG4gICAgfTtcbiAgICBjb25zdCBvd25lciA9IHRoaXMub3BlbkVudHJpZXMuZ2V0KHN1YmZsb3dPZkF0dGVtcHQoZXZlbnQpID8/ICcnKTtcbiAgICAvLyBBIHJvdyB3aG9zZSBzdWJmbG93IGVudHJ5IHRoaXMgcmVjb3JkZXIgbmV2ZXIgc2F3IChhdHRhY2hlZCBtaWQtcnVuKSBpcyBrZXB0IHdpdGggdGhlIHRvcC1sZXZlbCByb3dzIOKAlCBpdHNcbiAgICAvLyBwYXRoLXByZWZpeGVkIGBzdGFnZUlkYCBzdGlsbCBzYXlzIHdoZXJlIGl0IHJhbiDigJQgbmV2ZXIgZHJvcHBlZC5cbiAgICBpZiAob3duZXIpIChvd25lci5hdHRlbXB0cyA/Pz0gW10pLnB1c2gocm93KTtcbiAgICBlbHNlIHRoaXMucm9vdEF0dGVtcHRzLnB1c2gocm93KTtcbiAgfVxuXG4gIG9uU3ViZmxvd1JlZ2lzdGVyZWQoZXZlbnQ6IEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnNwZWNTdHJ1Y3R1cmUgJiYgIXRoaXMuc3BlY3MuaGFzKGV2ZW50LnN1YmZsb3dJZCkpIHtcbiAgICAgIHRoaXMuc3BlY3Muc2V0KGV2ZW50LnN1YmZsb3dJZCwgZXZlbnQuc3BlY1N0cnVjdHVyZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIG1hbmlmZXN0IHRyZWUg4oCUIGxpZ2h0d2VpZ2h0LCBzdWl0YWJsZSBmb3Igc25hcHNob3QgaW5jbHVzaW9uLiAqL1xuICBnZXRNYW5pZmVzdCgpOiBNYW5pZmVzdEVudHJ5W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5yb290c107XG4gIH1cblxuICAvKipcbiAgICogUm93cyBvZiB0b3AtbGV2ZWwgc3RhZ2VzIHdob3NlIHNlcmllcyByZXRyaWVkLCBnYXZlIHVwIG9yIHRpbWVkIG91dCwgaW4gdGhlIG9yZGVyIHRoZSBzZXJpZXMgZW5kZWQg4oCUIHBsdXMgYW55IHJvdyBvZiBhXG4gICAqIHN1YmZsb3cgc3RhZ2Ugd2hvc2UgZW50cnkgdGhpcyByZWNvcmRlciBuZXZlciBzYXcgKGl0cyBwYXRoLXByZWZpeGVkIGBzdGFnZUlkYCBzYXlzIHdoZXJlIGl0IHJhbikuXG4gICAqL1xuICBnZXRSb290QXR0ZW1wdHMoKTogTWFuaWZlc3RBdHRlbXB0Um93W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5yb290QXR0ZW1wdHNdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZ1bGwgc3BlYyBmb3IgYSBkeW5hbWljYWxseS1yZWdpc3RlcmVkIHN1YmZsb3cuXG4gICAqIE9ubHkgcG9wdWxhdGVkIGZvciBzdWJmbG93cyBhdXRvLXJlZ2lzdGVyZWQgYXQgcnVudGltZSAodmlhIFN0YWdlTm9kZVxuICAgKiByZXR1cm4gd2l0aCBzdWJmbG93RGVmKS4gU3RhdGljYWxseS1jb25maWd1cmVkIHN1YmZsb3dzIGFyZSBub3QgaW5jbHVkZWRcbiAgICogZXZlbiBpZiB0aGV5IGFwcGVhciBpbiBnZXRNYW5pZmVzdCgpLiBVc2UgRmxvd0NoYXJ0LmJ1aWxkVGltZVN0cnVjdHVyZVxuICAgKiB0byBhY2Nlc3Mgc3RhdGljYWxseS1kZWZpbmVkIHN1YmZsb3cgc3BlY3MuXG4gICAqL1xuICBnZXRTcGVjKHN1YmZsb3dJZDogc3RyaW5nKTogdW5rbm93biB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3BlY3MuZ2V0KHN1YmZsb3dJZCk7XG4gIH1cblxuICAvKiogUmV0dXJucyBhbGwgc3RvcmVkIHNwZWMgSURzLiAqL1xuICBnZXRTcGVjSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnNwZWNzLmtleXMoKSk7XG4gIH1cblxuICB0b1NuYXBzaG90KCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnTWFuaWZlc3QnLFxuICAgICAgZGVzY3JpcHRpb246ICdUcmFuc2xhdG9yIChGbG93UmVjb3JkZXIpIOKAlCBzdWJmbG93IGNhdGFsb2cgYnVpbHQgZHVyaW5nIHRyYXZlcnNhbCcsXG4gICAgICBwcmVmZXJyZWRPcGVyYXRpb246ICd0cmFuc2xhdGUnIGFzIGNvbnN0LFxuICAgICAgZGF0YTogdGhpcy5nZXRNYW5pZmVzdCgpLFxuICAgICAgLi4uKHRoaXMucm9vdEF0dGVtcHRzLmxlbmd0aCA+IDAgJiYgeyBtZXRhOiB7IHJvb3RBdHRlbXB0czogdGhpcy5nZXRSb290QXR0ZW1wdHMoKSB9IH0pLFxuICAgIH07XG4gIH1cblxuICAvKiogQ2xlYXJzIHN0YXRlIGZvciByZXVzZS4gKi9cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFjayA9IFtdO1xuICAgIHRoaXMucm9vdHMgPSBbXTtcbiAgICB0aGlzLnNwZWNzLmNsZWFyKCk7XG4gICAgdGhpcy5vcGVuRW50cmllcyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLnJvb3RBdHRlbXB0cyA9IFtdO1xuICAgIHRoaXMuYXR0ZW1wdEJvb2suY2xlYXIoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { AdaptiveNarrativeFlowRecorder } from './AdaptiveNarrativeFlowRecorder.js';
|
|
2
|
-
export type { ManifestEntry } from './ManifestFlowRecorder.js';
|
|
2
|
+
export type { ManifestAttemptRow, ManifestEntry } from './ManifestFlowRecorder.js';
|
|
3
3
|
export { ManifestFlowRecorder } from './ManifestFlowRecorder.js';
|
|
4
4
|
export { MilestoneNarrativeFlowRecorder } from './MilestoneNarrativeFlowRecorder.js';
|
|
5
5
|
export { ProgressiveNarrativeFlowRecorder } from './ProgressiveNarrativeFlowRecorder.js';
|