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
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Dependency: type-only imports from engine/ and scope/ (zero runtime cost).
|
|
9
9
|
*/
|
|
10
|
+
import type { AttemptContext, CallOptions, RetryPolicy } from '../attempt/types.js';
|
|
11
|
+
import type { FlowChart } from '../builder/types.js';
|
|
12
|
+
import type { DetachDriver, DetachHandle } from '../detach/types.js';
|
|
10
13
|
import type { ExecutionEnv } from '../engine/types.js';
|
|
11
14
|
import type { ScopeRecorder } from '../scope/types.js';
|
|
12
15
|
export interface ReactiveTarget {
|
|
@@ -27,6 +30,10 @@ export interface ReactiveTarget {
|
|
|
27
30
|
getValueSilent?(key?: string): unknown;
|
|
28
31
|
getArgs<T = Record<string, unknown>>(): T;
|
|
29
32
|
getEnv(): Readonly<ExecutionEnv>;
|
|
33
|
+
/** The attempt the stage function runs in — its signal, its cap and the time left (P1b). */
|
|
34
|
+
getAttempt(): AttemptContext;
|
|
35
|
+
/** A call to an outside system on the attempt runner, recorded under this stage (P2). */
|
|
36
|
+
call<R>(target: string, fn: (attempt: AttemptContext) => Promise<R> | R, policy?: RetryPolicy, options?: CallOptions): Promise<R>;
|
|
30
37
|
attachScopeRecorder(recorder: ScopeRecorder): void;
|
|
31
38
|
detachScopeRecorder(recorderId: string): void;
|
|
32
39
|
getScopeRecorders(): ScopeRecorder[];
|
|
@@ -36,8 +43,8 @@ export interface ReactiveTarget {
|
|
|
36
43
|
addMetric(name: string, value: unknown): void;
|
|
37
44
|
addEval(name: string, value: unknown): void;
|
|
38
45
|
emitEvent(name: string, payload?: unknown): void;
|
|
39
|
-
detachAndJoinLater(driver:
|
|
40
|
-
detachAndForget(driver:
|
|
46
|
+
detachAndJoinLater(driver: DetachDriver, child: FlowChart, input?: unknown): DetachHandle;
|
|
47
|
+
detachAndForget(driver: DetachDriver, child: FlowChart, input?: unknown): void;
|
|
41
48
|
}
|
|
42
49
|
export interface ScopeMethods {
|
|
43
50
|
$getValue(key: string): unknown;
|
|
@@ -48,6 +55,31 @@ export interface ScopeMethods {
|
|
|
48
55
|
$read(dotPath: string): unknown;
|
|
49
56
|
$getArgs<T = Record<string, unknown>>(): T;
|
|
50
57
|
$getEnv(): Readonly<ExecutionEnv>;
|
|
58
|
+
/**
|
|
59
|
+
* The attempt this stage function runs in (P1b): `attempt` / `of`, the `signal` to pass to `fetch` and SDK
|
|
60
|
+
* calls (it aborts at the attempt's cap, the run's deadline, or a cancellation), and `timeLeftMs()` — the
|
|
61
|
+
* milliseconds before the run's deadline (`Infinity` without one; reading it with a deadline marks the stage's
|
|
62
|
+
* commit `untrackedSources: ['env']`). A stage with no retry policy and no deadline is attempt 1 of 1.
|
|
63
|
+
*/
|
|
64
|
+
$attempt(): AttemptContext;
|
|
65
|
+
/**
|
|
66
|
+
* A call to an outside system, made inside this stage (P2): `fn` runs on the attempt runner under `policy`
|
|
67
|
+
* (none = ONE attempt — still recorded), and every attempt is an `AttemptRecord` of kind `'call'` on this
|
|
68
|
+
* stage's node and on `onAttempt`, with its timing, outcome, category and decision. It runs under this stage
|
|
69
|
+
* attempt's time and signal — pass `t.signal` on. `target` is a NAME from code (1–128 characters, no control
|
|
70
|
+
* character), never a value. A malformed call (target, `fn`, policy) or one from an attempt that already ended
|
|
71
|
+
* THROWS at the call, synchronously, like every scope refusal — it is the stage's code breaking its contract; a
|
|
72
|
+
* call that runs and fails REJECTS with its last attempt's own error. A call that changes an outside system
|
|
73
|
+
* declares it in `options` (`{ touches, idempotencyKey }`, P3): a touching call that may retry needs a key, every
|
|
74
|
+
* record carries its `effect`, and a call that ends without an answer after any attempt of unknown effect rejects
|
|
75
|
+
* with `UnknownEffectError`.
|
|
76
|
+
*
|
|
77
|
+
* ```typescript
|
|
78
|
+
* const quote = await scope.$call('stripe.quotes.create', (t) => stripe.quotes.create(body, { signal: t.signal }),
|
|
79
|
+
* { attempts: 3, timeoutMs: 10_000 });
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
$call<R>(target: string, fn: (attempt: AttemptContext) => Promise<R> | R, policy?: RetryPolicy, options?: CallOptions): Promise<R>;
|
|
51
83
|
$debug(key: string, value: unknown): void;
|
|
52
84
|
$log(value: unknown): void;
|
|
53
85
|
$error(key: string, value: unknown): void;
|
|
@@ -129,8 +161,8 @@ export interface ScopeMethods {
|
|
|
129
161
|
* ```
|
|
130
162
|
*/
|
|
131
163
|
$emit(name: string, payload?: unknown): void;
|
|
132
|
-
$detachAndJoinLater(driver:
|
|
133
|
-
$detachAndForget(driver:
|
|
164
|
+
$detachAndJoinLater(driver: DetachDriver, child: FlowChart, input?: unknown): DetachHandle;
|
|
165
|
+
$detachAndForget(driver: DetachDriver, child: FlowChart, input?: unknown): void;
|
|
134
166
|
/**
|
|
135
167
|
* Stop the current execution context.
|
|
136
168
|
*
|
|
@@ -17,6 +17,8 @@ export const SCOPE_METHOD_NAMES = new Set([
|
|
|
17
17
|
'$read',
|
|
18
18
|
'$getArgs',
|
|
19
19
|
'$getEnv',
|
|
20
|
+
'$attempt',
|
|
21
|
+
'$call',
|
|
20
22
|
'$debug',
|
|
21
23
|
'$log',
|
|
22
24
|
'$error',
|
|
@@ -32,4 +34,4 @@ export const SCOPE_METHOD_NAMES = new Set([
|
|
|
32
34
|
'$detachAndForget',
|
|
33
35
|
'$toRaw',
|
|
34
36
|
]);
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JlYWN0aXZlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBK1BILCtFQUErRTtBQUMvRSx1RUFBdUU7QUFFdkUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQVM7SUFDaEQsV0FBVztJQUNYLFdBQVc7SUFDWCxTQUFTO0lBQ1QsU0FBUztJQUNULE9BQU87SUFDUCxVQUFVO0lBQ1YsU0FBUztJQUNULFFBQVE7SUFDUixNQUFNO0lBQ04sUUFBUTtJQUNSLFNBQVM7SUFDVCxPQUFPO0lBQ1Asc0JBQXNCO0lBQ3RCLHNCQUFzQjtJQUN0QixvQkFBb0I7SUFDcEIsYUFBYTtJQUNiLFFBQVE7SUFDUixPQUFPO0lBQ1AscUJBQXFCO0lBQ3JCLGtCQUFrQjtJQUNsQixRQUFRO0NBQ1QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiByZWFjdGl2ZS90eXBlcyAtLSBUeXBlIGRlZmluaXRpb25zIGZvciB0aGUgVHlwZWRTY29wZTxUPiByZWFjdGl2ZSBwcm94eSBzeXN0ZW0uXG4gKlxuICogVHlwZWRTY29wZTxUPiB3cmFwcyBhIFJlYWN0aXZlVGFyZ2V0IChTY29wZUZhY2FkZSkgaW4gYSBQcm94eSB0aGF0IHByb3ZpZGVzXG4gKiB0eXBlZCBwcm9wZXJ0eSBhY2Nlc3MuIEFsbCBzY29wZSBpbmZyYXN0cnVjdHVyZSBtZXRob2RzIGFyZSAkLXByZWZpeGVkIHRvXG4gKiBhdm9pZCBjb2xsaXNpb25zIHdpdGggdXNlciBzdGF0ZSBrZXlzLlxuICpcbiAqIERlcGVuZGVuY3k6IHR5cGUtb25seSBpbXBvcnRzIGZyb20gZW5naW5lLyBhbmQgc2NvcGUvICh6ZXJvIHJ1bnRpbWUgY29zdCkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBFeGVjdXRpb25FbnYgfSBmcm9tICcuLi9lbmdpbmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTY29wZVJlY29yZGVyIH0gZnJvbSAnLi4vc2NvcGUvdHlwZXMuanMnO1xuXG4vLyAtLSBSZWFjdGl2ZVRhcmdldCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNaW5pbXVtIHByb3RvY29sIHJlcXVpcmVkIGJ5IFR5cGVkU2NvcGUgLS0gYSBjdXJhdGVkIHN1YnNldCBvZiBTY29wZUZhY2FkZSdzXG4vLyBwdWJsaWMgQVBJLiBOb3QgYSBmdWxsIG1pcnJvcjogZXhjbHVkZXMgaW50ZXJuYWwvcmVkYWN0aW9uIG1ldGhvZHMgdGhhdCBhcmVcbi8vIGhhbmRsZWQgYXQgdGhlIGV4ZWN1dG9yIGxldmVsICh1c2VSZWRhY3Rpb25Qb2xpY3ksIHVzZVNoYXJlZFJlZGFjdGVkS2V5cywgZXRjLilcbi8vIGFuZCBpbmZyYXN0cnVjdHVyZSBtZXRob2RzIChnZXRQaXBlbGluZUlkLCBzZXRHbG9iYWwsIGdldEdsb2JhbCwgZXRjLikuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RpdmVUYXJnZXQge1xuICAvLyBTdGF0ZSBhY2Nlc3MgKHRyYWNrZWQgYnkgcmVjb3JkZXJzKVxuICBnZXRWYWx1ZShrZXk/OiBzdHJpbmcpOiB1bmtub3duO1xuICBzZXRWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24sIHNob3VsZFJlZGFjdD86IGJvb2xlYW4sIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZDtcbiAgdXBkYXRlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBkZXNjcmlwdGlvbj86IHN0cmluZyk6IHZvaWQ7XG4gIGRlbGV0ZVZhbHVlKGtleTogc3RyaW5nLCBkZXNjcmlwdGlvbj86IHN0cmluZyk6IHZvaWQ7XG5cbiAgLy8gTm9uLXRyYWNraW5nIHN0YXRlIGluc3BlY3Rpb24gKGZvciBwcm94eSBpbnRlcm5hbHMg4oCUIG5vIHJlY29yZGVyIGRpc3BhdGNoKVxuICAvKiogUmV0dXJucyBhbGwgc3RhdGUga2V5cyB3aXRob3V0IGZpcmluZyBvblJlYWQuIFVzZWQgYnkgb3duS2V5cy9oYXMgdHJhcHMuICovXG4gIGdldFN0YXRlS2V5cz8oKTogc3RyaW5nW107XG4gIC8qKiBDaGVjayBrZXkgZXhpc3RlbmNlIHdpdGhvdXQgZmlyaW5nIG9uUmVhZC4gVXNlZCBieSBoYXMgdHJhcC4gKi9cbiAgaGFzS2V5PyhrZXk6IHN0cmluZyk6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSZWFkIHN0YXRlIHdpdGhvdXQgZmlyaW5nIG9uUmVhZC4gVXNlZCBieSBhcnJheSBwcm94eSBnZXRDdXJyZW50KCkgYW5kLFxuICAgKiBzaW5jZSA5LjIyLjAsIGJ5IGV2ZXJ5IG5lc3RlZCAvIGVsZW1lbnQgLyB0ZXJtaW5hbCBwcm94eSdzIExJVkUgcmVhZFxuICAgKiAoYGxpdmVWaWV3LnRzYCkuIEEgdGFyZ2V0IHdpdGhvdXQgaXQgZmFsbHMgYmFjayB0byB0aGUgdHJhY2tlZCByZWFkLCBzb1xuICAgKiBlYWNoIG5lc3RlZCBhY2Nlc3MgdGhlbiBmaXJlcyBvblJlYWQg4oCUIHByb3ZpZGUgaXQgKFNjb3BlRmFjYWRlIGRvZXMpLlxuICAgKi9cbiAgZ2V0VmFsdWVTaWxlbnQ/KGtleT86IHN0cmluZyk6IHVua25vd247XG5cbiAgLy8gSW5wdXQgJiBlbnZpcm9ubWVudCAocmVhZG9ubHksIE5PVCB0cmFja2VkKVxuICBnZXRBcmdzPFQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKTogVDtcbiAgZ2V0RW52KCk6IFJlYWRvbmx5PEV4ZWN1dGlvbkVudj47XG5cbiAgLy8gU2NvcGVSZWNvcmRlciBtYW5hZ2VtZW50XG4gIGF0dGFjaFNjb3BlUmVjb3JkZXIocmVjb3JkZXI6IFNjb3BlUmVjb3JkZXIpOiB2b2lkO1xuICBkZXRhY2hTY29wZVJlY29yZGVyKHJlY29yZGVySWQ6IHN0cmluZyk6IHZvaWQ7XG4gIGdldFNjb3BlUmVjb3JkZXJzKCk6IFNjb3BlUmVjb3JkZXJbXTtcblxuICAvLyBEaWFnbm9zdGljc1xuICBhZGREZWJ1Z0luZm8oa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgYWRkRGVidWdNZXNzYWdlKHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgYWRkRXJyb3JJbmZvKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIGFkZE1ldHJpYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgYWRkRXZhbChuYW1lOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcblxuICAvLyBFbWl0IGNoYW5uZWwgKFBoYXNlIDMpIOKAlCBzdHJ1Y3R1cmVkIHVzZXItYXV0aG9yZWQgZXZlbnRzIHRvIEVtaXRSZWNvcmRlcnMuXG4gIGVtaXRFdmVudChuYW1lOiBzdHJpbmcsIHBheWxvYWQ/OiB1bmtub3duKTogdm9pZDtcblxuICAvLyBEZXRhY2ggKFQ0KSDigJQgZmlyZS1hbmQtZm9yZ2V0IGNoaWxkIGZsb3djaGFydHMuIFNjb3BlRmFjYWRlXG4gIC8vIGRlbGVnYXRlcyB0byBgZGV0YWNoL3NwYXduYCwgbWludGluZyByZWZJZHMgZnJvbSB0aGlzIHN0YWdlJ3NcbiAgLy8gcnVudGltZVN0YWdlSWQgZm9yIGRpYWdub3N0aWMgY29ycmVsYXRpb24uXG4gIGRldGFjaEFuZEpvaW5MYXRlcihcbiAgICBkcml2ZXI6IGltcG9ydCgnLi4vZGV0YWNoL3R5cGVzLmpzJykuRGV0YWNoRHJpdmVyLFxuICAgIGNoaWxkOiBpbXBvcnQoJy4uL2J1aWxkZXIvdHlwZXMuanMnKS5GbG93Q2hhcnQsXG4gICAgaW5wdXQ/OiB1bmtub3duLFxuICApOiBpbXBvcnQoJy4uL2RldGFjaC90eXBlcy5qcycpLkRldGFjaEhhbmRsZTtcblxuICBkZXRhY2hBbmRGb3JnZXQoXG4gICAgZHJpdmVyOiBpbXBvcnQoJy4uL2RldGFjaC90eXBlcy5qcycpLkRldGFjaERyaXZlcixcbiAgICBjaGlsZDogaW1wb3J0KCcuLi9idWlsZGVyL3R5cGVzLmpzJykuRmxvd0NoYXJ0LFxuICAgIGlucHV0PzogdW5rbm93bixcbiAgKTogdm9pZDtcbn1cblxuLy8gLS0gU2NvcGVNZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gJC1wcmVmaXhlZCBlc2NhcGUgaGF0Y2hlcy4gTm9uLWVudW1lcmFibGUgb24gdGhlIHByb3h5IC0tIGRvbid0IGFwcGVhciBpblxuLy8gT2JqZWN0LmtleXMoKSwgZGVzdHJ1Y3R1cmluZywgb3IgZm9yLi4uaW4uIE9ubHkgc3RhdGUga2V5cyBhcmUgdmlzaWJsZS5cblxuZXhwb3J0IGludGVyZmFjZSBTY29wZU1ldGhvZHMge1xuICAvLyBTdGF0ZSAodW50eXBlZCBlc2NhcGUgaGF0Y2ggLS0gZm9yIGR5bmFtaWMga2V5cywgcmVkYWN0aW9uLCBkZXNjcmlwdGlvbilcbiAgJGdldFZhbHVlKGtleTogc3RyaW5nKTogdW5rbm93bjtcbiAgJHNldFZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgc2hvdWxkUmVkYWN0PzogYm9vbGVhbiwgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiB2b2lkO1xuICAkdXBkYXRlKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiB2b2lkO1xuICAkZGVsZXRlKGtleTogc3RyaW5nLCBkZXNjcmlwdGlvbj86IHN0cmluZyk6IHZvaWQ7XG4gIC8qKiBQcm94eS1zeW50aGVzaXplZDogY2FsbHMgZ2V0VmFsdWUocm9vdEtleSkgdGhlbiB3YWxrcyB0aGUgbmVzdGVkIHBhdGggKGxvZGFzaC5nZXQtc3R5bGUsIG5vIGxvZGFzaCBkZXApLiBOb3QgYSBkaXJlY3QgZGVsZWdhdGlvbi4gKi9cbiAgJHJlYWQoZG90UGF0aDogc3RyaW5nKTogdW5rbm93bjtcblxuICAvLyBJbnB1dCAmIGVudmlyb25tZW50IChyZWFkb25seSlcbiAgJGdldEFyZ3M8VCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpOiBUO1xuICAkZ2V0RW52KCk6IFJlYWRvbmx5PEV4ZWN1dGlvbkVudj47XG5cbiAgLy8gT2JzZXJ2YWJpbGl0eSDigJQgbGVnYWN5IGRpYWdub3N0aWMgcHJpbWl0aXZlcy5cbiAgLy9cbiAgLy8gQXMgb2YgUGhhc2UgMyB0aGVzZSBBTFNPIGRpc3BhdGNoIG9uIHRoZSBlbWl0IGNoYW5uZWwgKGluIGFkZGl0aW9uIHRvXG4gIC8vIHRoZWlyIGV4aXN0aW5nIGBEaWFnbm9zdGljQ29sbGVjdG9yYCBzaWRlLWJhZyB3cml0ZXMgZm9yIHNuYXBzaG90XG4gIC8vIGluY2x1c2lvbikuIEFueSBhdHRhY2hlZCBgRW1pdFJlY29yZGVyYCB3aWxsIHNlZSB0aGVzZSBldmVudHMgd2l0aFxuICAvLyB0aGUgY29ycmVzcG9uZGluZyBuYW1lc3BhY2VkIG5hbWVzOlxuICAvL1xuICAvLyAgICRkZWJ1ZyhrZXksIHZhbHVlKSAgICAtPiBlbWl0cyBgbG9nLmRlYnVnLiR7a2V5fWBcbiAgLy8gICAkZXJyb3Ioa2V5LCB2YWx1ZSkgICAgLT4gZW1pdHMgYGxvZy5lcnJvci4ke2tleX1gXG4gIC8vICAgJG1ldHJpYyhuYW1lLCB2YWx1ZSkgIC0+IGVtaXRzIGBtZXRyaWMuJHtuYW1lfWBcbiAgLy8gICAkZXZhbCAobmFtZSwgdmFsdWUpICAgLT4gZW1pdHMgYGV2YWwuJHtuYW1lfWBcbiAgLy8gICAkbG9nKHZhbHVlKSAgICAgICAgICAgLT4gZW1pdHMgYGxvZy5kZWJ1Zy5tZXNzYWdlc2BcbiAgLy9cbiAgLy8gVGhpcyBtYWtlcyB0aGUgY2FsbHMgb2JzZXJ2YWJsZSBpbiByZWFsIHRpbWUg4oCUIG5vIGxvc3Mgb2YgYmFja3dhcmRcbiAgLy8gY29tcGF0OyB0aGUgc2lkZSBiYWcgY29udGludWVzIHRvIHBvcHVsYXRlIGZvciBjb25zdW1lcnMgdGhhdCBpbnNwZWN0XG4gIC8vIHRoZSBzbmFwc2hvdCBkaXJlY3RseS5cbiAgJGRlYnVnKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gICRsb2codmFsdWU6IHVua25vd24pOiB2b2lkO1xuICAkZXJyb3Ioa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgJG1ldHJpYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgJGV2YWwobmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG5cbiAgLy8gU2NvcGVSZWNvcmRlciBtYW5hZ2VtZW50XG4gICRhdHRhY2hTY29wZVJlY29yZGVyKHJlY29yZGVyOiBTY29wZVJlY29yZGVyKTogdm9pZDtcbiAgJGRldGFjaFNjb3BlUmVjb3JkZXIocmVjb3JkZXJJZDogc3RyaW5nKTogdm9pZDtcbiAgJGdldFNjb3BlUmVjb3JkZXJzKCk6IFNjb3BlUmVjb3JkZXJbXTtcblxuICAvKipcbiAgICogQmF0Y2gtbXV0YXRlIGFuIGFycmF5IGtleSBpbiBhIHNpbmdsZSBjbG9uZSt3cml0ZSBjeWNsZS5cbiAgICpcbiAgICogRXZlcnkgYHNjb3BlLml0ZW1zLnB1c2goeClgIGNsb25lcyB0aGUgZW50aXJlIGFycmF5IGFuZCBjb21taXRzIGl0IOKAlCBPKE4pIHBlciBjYWxsLlxuICAgKiBGb3IgTiBtdXRhdGlvbnMgb24gYW4gTS1sZW5ndGggYXJyYXkgdGhhdCBpcyBPKE7Dl00pLiBVc2UgYCRiYXRjaEFycmF5YCB0byBjbG9uZSBvbmNlLFxuICAgKiBhcHBseSBhbGwgbXV0YXRpb25zIGluc2lkZSBgZm5gLCB0aGVuIGNvbW1pdCBvbmNlIOKAlCBPKE0pIHRvdGFsLlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIEJlZm9yZTogMTAwMCBjbG9uZXMgw5cgZ3Jvd2luZyBhcnJheSA9IE8oTsKyKVxuICAgKiBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgc2NvcGUuaXRlbXMucHVzaChpKTtcbiAgICpcbiAgICogLy8gQWZ0ZXI6IDEgY2xvbmUgKyAxIGNvbW1pdCA9IE8oTilcbiAgICogc2NvcGUuJGJhdGNoQXJyYXkoJ2l0ZW1zJywgKGFycikgPT4ge1xuICAgKiAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSBhcnIucHVzaChpKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBgZm5gIHJlY2VpdmVzIGEgcGxhaW4gKG5vbi1wcm94eSkgbXV0YWJsZSAqKmRlZXAgY29weSoqIChgc3RydWN0dXJlZENsb25lYCkgb2YgdGhlXG4gICAqIGN1cnJlbnQgYXJyYXkg4oCUIFwiY2xvbmUgb25jZVwiIG1lYW5zIHRoZSBlbGVtZW50cyB0b28uIE11dGF0aW5nIGFuIGVsZW1lbnQgaW5zaWRlIGBmbmBcbiAgICogKGBhcnJbMF0ubiA9IDlgKSBjaGFuZ2VzIHRoZSBjb3B5IGFuZCBsYW5kcyBpbiB0aGUgb25lIGNvbW1pdHRlZCB3cml0ZTsgdGhlIHZhbHVlIGluXG4gICAqIHN0YXRlIGlzIG5ldmVyIHRvdWNoZWQgKDkuMjIuMCDigJQgYSBzaGFsbG93IGNvcHkgdXNlZCB0byBzaGFyZSB0aGUgY29tbWl0dGVkIGVsZW1lbnRzLFxuICAgKiBzbyBhbiBlbGVtZW50IGVkaXQgY2hhbmdlZCBjb21taXR0ZWQgc3RhdGUgaW4gcGxhY2Ugd2l0aCBubyB0cmFjZSByb3cpLlxuICAgKlxuICAgKiBNdXRhdGlvbnMgaW5zaWRlIGBmbmAgYXJlIE5PVCB0cmFja2VkIGluZGl2aWR1YWxseSDigJQgb25seSB0aGUgZmluYWwgY29tbWl0dGVkIGFycmF5XG4gICAqIGFwcGVhcnMgaW4gdGhlIG5hcnJhdGl2ZSBhcyBhIHNpbmdsZSB3cml0ZS4gSWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYW5cbiAgICogYXJyYXksIGBmbmAgcmVjZWl2ZXMgYW4gZW1wdHkgYXJyYXkgYW5kIHRoZSByZXN1bHQgaXMgY29tbWl0dGVkIGFzIHRoZSBuZXcgdmFsdWUuXG4gICAqXG4gICAqIElmIGBmbmAgdGhyb3dzLCBgc2V0VmFsdWVgIGlzIG5ldmVyIGNhbGxlZCBhbmQgc3RhdGUgcmVtYWlucyB1bmNoYW5nZWQgKGF0b21pYyBvblxuICAgKiBlcnJvcikuIFRoZSBleGNlcHRpb24gcHJvcGFnYXRlcyB0byB0aGUgY2FsbGVyLlxuICAgKlxuICAgKiBga2V5YCBpcyB1bnR5cGVkIChgc3RyaW5nYCkg4oCUIFR5cGVTY3JpcHQgd2lsbCBub3QgY2F0Y2ggdHlwb3MuIGBhcnJgIGlzIHR5cGVkIGFzXG4gICAqIGB1bmtub3duW11gIGJlY2F1c2UgYFNjb3BlTWV0aG9kc2AgaXMgbm90IHBhcmFtZXRlcml6ZWQgYnkgYFRgOyBjYXN0IGluc2lkZSBgZm5gXG4gICAqIHdoZW4gZWxlbWVudCB0eXBlcyBhcmUga25vd246IGAoYXJyIGFzIHN0cmluZ1tdKS5wdXNoKHgpYC5cbiAgICovXG4gICRiYXRjaEFycmF5KGtleTogc3RyaW5nLCBmbjogKGFycjogdW5rbm93bltdKSA9PiB2b2lkKTogdm9pZDtcblxuICAvLyBPYnNlcnZhYmlsaXR5IOKAlCBFbWl0IGNoYW5uZWwgKFBoYXNlIDMpXG4gIC8qKlxuICAgKiBGaXJlIGEgc3RydWN0dXJlZCBldmVudCB0byBldmVyeSBhdHRhY2hlZCByZWNvcmRlciBpbXBsZW1lbnRpbmdcbiAgICogYG9uRW1pdGAuIFRoZSBwcmltYXJ5IHByaW1pdGl2ZSBmb3IgY29uc3VtZXItYXV0aG9yZWQgb2JzZXJ2YWJpbGl0eVxuICAgKiBldmVudHMgKExMTSB0b2tlbnMsIGJpbGxpbmcgbWV0cmljcywgZG9tYWluIG1pbGVzdG9uZXMsIGV0Yy4pIHRoYXRcbiAgICogc2hvdWxkbid0IGxpdmUgaW4gc2NvcGUgc3RhdGUuXG4gICAqXG4gICAqIFN5bmNocm9ub3VzLCBwYXNzLXRocm91Z2gg4oCUIGRlbGl2ZXJlZCB0byByZWNvcmRlcnMgaW1tZWRpYXRlbHksIGluXG4gICAqIGNhbGwgb3JkZXIuIFplcm8tYWxsb2NhdGlvbiB3aGVuIG5vIHJlY29yZGVycyBhcmUgYXR0YWNoZWQuXG4gICAqXG4gICAqICMjIE5hbWluZyBjb252ZW50aW9uXG4gICAqXG4gICAqIFVzZSBoaWVyYXJjaGljYWwgZG90dGVkIG5hbWVzOiBgJzxuYW1lc3BhY2U+LjxjYXRlZ29yeT4uPGV2ZW50PidgLlxuICAgKiBFeGFtcGxlczpcbiAgICogICAtIGAnYWdlbnRmb290cHJpbnQubGxtLnRva2VucydgXG4gICAqICAgLSBgJ215YXBwLmJpbGxpbmcuc3BlbmQnYFxuICAgKiAgIC0gYCdhdXRoLmNoZWNrLmRlbmllZCdgXG4gICAqXG4gICAqIFRoZSBsaWJyYXJ5IHN0YXlzIHZvY2FidWxhcnktYWdub3N0aWMg4oCUIG5vIGNlbnRyYWwgcmVnaXN0cnksIG5vXG4gICAqIHJlc2VydmVkIHByZWZpeGVzLiBOYW1lc3BhY2UgcHJlZml4ZXMgcHJldmVudCBjb2xsaXNpb25zIGFjcm9zc1xuICAgKiBsaWJyYXJpZXMgYW5kIGFwcHMgbmF0dXJhbGx5LlxuICAgKlxuICAgKiAjIyBSZWRhY3Rpb25cbiAgICpcbiAgICogSWYgYFJlZGFjdGlvblBvbGljeS5lbWl0UGF0dGVybnNgIG1hdGNoZXMgdGhlIG5hbWUsIHRoZSBwYXlsb2FkIGlzXG4gICAqIHJlcGxhY2VkIHdpdGggYCdbUkVEQUNURURdJ2AgYmVmb3JlIGRpc3BhdGNoLiBObyByZWNvcmRlciBldmVyIHNlZXNcbiAgICogdGhlIHJhdyB2YWx1ZSBmb3IgcmVkYWN0ZWQgZXZlbnQgbmFtZXMuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gQ29uc3VtZXItY2hvc2VuIGV2ZW50IGlkZW50aWZpZXIgKHNlZSBuYW1pbmcgY29udmVudGlvbikuXG4gICAqIEBwYXJhbSBwYXlsb2FkIC0gU3RydWN0dXJlZCBkYXRhIHRvIGF0dGFjaC4gU2hhcGUgaXMgdXAgdG8gdGhlXG4gICAqICAgY29uc3VtZXI7IGxpYnJhcnkgdHJlYXRzIGl0IGFzIG9wYXF1ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBzY29wZS4kZW1pdCgnYWdlbnRmb290cHJpbnQubGxtLnRva2VucycsIHsgaW5wdXQ6IDEwMCwgb3V0cHV0OiA1MCB9KTtcbiAgICogc2NvcGUuJGVtaXQoJ215YXBwLmRlY2lzaW9uJywgeyBicmFuY2g6ICdhcHByb3ZlZCcsIGNvbmZpZGVuY2U6IDAuOTIgfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgJGVtaXQobmFtZTogc3RyaW5nLCBwYXlsb2FkPzogdW5rbm93bik6IHZvaWQ7XG5cbiAgLy8gRGV0YWNoIOKAlCBmaXJlLWFuZC1mb3JnZXQgY2hpbGQgZmxvd2NoYXJ0IGV4ZWN1dGlvbi5cbiAgLy9cbiAgLy8gYCRkZXRhY2hBbmRKb2luTGF0ZXIoZHJpdmVyLCBjaGlsZCwgaW5wdXQ/KWAgc2NoZWR1bGVzIHRoZSBjaGlsZCB2aWFcbiAgLy8gdGhlIGdpdmVuIGRyaXZlciBhbmQgcmV0dXJucyBhIGBEZXRhY2hIYW5kbGVgIHRoZSBjb25zdW1lciBjYW4gcmVhZFxuICAvLyBzeW5jaHJvbm91c2x5IChgLnN0YXR1c2ApIG9yIGF3YWl0IChgLndhaXQoKWApLiBUaGUgcGFyZW50IHN0YWdlXG4gIC8vIGRvZXMgTk9UIGJsb2NrIG9uIHRoZSBjaGlsZCDigJQgaXQgcmV0dXJucyB0byB0aGUgYWdlbnQgbG9vcCB0aGVcbiAgLy8gbW9tZW50IHRoZSBkcml2ZXIncyBgc2NoZWR1bGUoKWAgcmV0dXJucyAocGFzc2l2ZSByZWNvcmRlciBydWxlKS5cbiAgLy9cbiAgLy8gYCRkZXRhY2hBbmRGb3JnZXQoZHJpdmVyLCBjaGlsZCwgaW5wdXQ/KWAgZGlzY2FyZHMgdGhlIGhhbmRsZSDigJRcbiAgLy8gdXNlZnVsIGZvciBmaXJlLWFuZC1mb3JnZXQgdGVsZW1ldHJ5IHdoZXJlIHRoZSBjYWxsZXIgbmV2ZXIgbmVlZHNcbiAgLy8gdG8ga25vdyBob3cgdGhlIGNoaWxkIGZpbmlzaGVkLiBFcnJvcnMgc3RpbGwgbGFuZCBvbiB0aGUgKG5vdy1cbiAgLy8gZHJvcHBlZCkgaGFuZGxlIGFuZCBnbyBzaWxlbnQgdW5sZXNzIGFuIG9ic2VydmVyIHN1cmZhY2VzIHRoZW0uXG4gIC8vXG4gIC8vIERyaXZlciBpcyBSRVFVSVJFRCDigJQgdGhlcmUncyBubyBsaWJyYXJ5LWRlZmF1bHQuIFBhc3MgZS5nLlxuICAvLyBgbWljcm90YXNrQmF0Y2hEcml2ZXJgIChmcm9tICdmb290cHJpbnRqcy9kZXRhY2gnKSBvciB5b3VyIG93blxuICAvLyBjdXN0b20gZHJpdmVyLiBFeHBsaWNpdCBwYXNzaW5nIGF2b2lkcyBnbG9iYWwgc3RhdGUgYW5kIGtlZXBzIHRoZVxuICAvLyBlbmdpbmUgZnJlZSBvZiBkcml2ZXIgaW1wb3J0cy5cbiAgJGRldGFjaEFuZEpvaW5MYXRlcihcbiAgICBkcml2ZXI6IGltcG9ydCgnLi4vZGV0YWNoL3R5cGVzLmpzJykuRGV0YWNoRHJpdmVyLFxuICAgIGNoaWxkOiBpbXBvcnQoJy4uL2J1aWxkZXIvdHlwZXMuanMnKS5GbG93Q2hhcnQsXG4gICAgaW5wdXQ/OiB1bmtub3duLFxuICApOiBpbXBvcnQoJy4uL2RldGFjaC90eXBlcy5qcycpLkRldGFjaEhhbmRsZTtcblxuICAkZGV0YWNoQW5kRm9yZ2V0KFxuICAgIGRyaXZlcjogaW1wb3J0KCcuLi9kZXRhY2gvdHlwZXMuanMnKS5EZXRhY2hEcml2ZXIsXG4gICAgY2hpbGQ6IGltcG9ydCgnLi4vYnVpbGRlci90eXBlcy5qcycpLkZsb3dDaGFydCxcbiAgICBpbnB1dD86IHVua25vd24sXG4gICk6IHZvaWQ7XG5cbiAgLy8gUGlwZWxpbmUgY29udHJvbFxuICAvKipcbiAgICogU3RvcCB0aGUgY3VycmVudCBleGVjdXRpb24gY29udGV4dC5cbiAgICpcbiAgICogLSAqKkluIGEgdG9wLWxldmVsIGNoYXJ0OioqIHRoZSB0cmF2ZXJzZXIgZXhpdHMgY2xlYW5seSBhZnRlciB0aGlzIHN0YWdlXG4gICAqICAgY29tcGxldGVzLlxuICAgKiAtICoqSW5zaWRlIGEgc3ViZmxvdzoqKiBieSBkZWZhdWx0LCBvbmx5IHRoZSBzdWJmbG93J3Mgb3duIGV4ZWN1dGlvblxuICAgKiAgIHN0b3BzOyBjb250cm9sIHJldHVybnMgdG8gdGhlIHBhcmVudCBhcyBub3JtYWwuIElmIHRoZSBzdWJmbG93IGlzXG4gICAqICAgbW91bnRlZCB3aXRoIGBwcm9wYWdhdGVCcmVhazogdHJ1ZWAsIHRoZSBicmVhayBzaWduYWwgKGFuZCBpdHNcbiAgICogICBvcHRpb25hbCByZWFzb24pIHByb3BhZ2F0ZXMgdXAgdG8gdGhlIHBhcmVudCBzY29wZSwgdGVybWluYXRpbmcgdGhlXG4gICAqICAgb3V0ZXIgbG9vcCB0b28uIFNlZSBgU3ViZmxvd01vdW50T3B0aW9ucy5wcm9wYWdhdGVCcmVha2AuXG4gICAqXG4gICAqIEBwYXJhbSByZWFzb24gLSBPcHRpb25hbCBmcmVlLWZvcm0gc3RyaW5nIGRlc2NyaWJpbmcgd2h5IHRoZSBicmVha1xuICAgKiAgIGhhcHBlbmVkLiBQcm9wYWdhdGVzIHRvIGBGbG93QnJlYWtFdmVudC5yZWFzb25gIHNvIHJlY29yZGVycyBhbmRcbiAgICogICBjdXN0b20gbmFycmF0aXZlcyBjYW4gc3VyZmFjZSBpdC4gRGVmYXVsdHMgdG8gdW5kZWZpbmVkLlxuICAgKi9cbiAgJGJyZWFrKHJlYXNvbj86IHN0cmluZyk6IHZvaWQ7XG5cbiAgLy8gRXNjYXBlIGhhdGNoIC0tIHVud3JhcCB0byB1bmRlcmx5aW5nIFJlYWN0aXZlVGFyZ2V0XG4gICR0b1JhdygpOiBSZWFjdGl2ZVRhcmdldDtcbn1cblxuLy8gLS0gVHlwZWRTY29wZTxUPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGhlIGNvbnN1bWVyLWZhY2luZyB0eXBlLiBUIGlzIHRoZSB1c2VyJ3Mgc3RhdGUgaW50ZXJmYWNlLlxuLy8gUHJvcGVydHkgYWNjZXNzIGlzIHR5cGVkOyAkLW1ldGhvZHMgcHJvdmlkZSBlc2NhcGUgaGF0Y2hlcy5cblxuZXhwb3J0IHR5cGUgVHlwZWRTY29wZTxUIGV4dGVuZHMgb2JqZWN0ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0gVCAmIFNjb3BlTWV0aG9kcztcblxuLy8gLS0gUmVhY3RpdmVPcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29uZmlndXJhdGlvbiBwYXNzZWQgdG8gY3JlYXRlVHlwZWRTY29wZS5cblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdGl2ZU9wdGlvbnMge1xuICAvKipcbiAgICogUGlwZWxpbmUgYnJlYWsgZnVuY3Rpb24g4oCUIGluamVjdGVkIGJ5IFN0YWdlUnVubmVyIGFmdGVyIHNjb3BlIGNyZWF0aW9uLlxuICAgKiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlYXNvbiBzdHJpbmcgdGhhdCBwcm9wYWdhdGVzIHRvIGBGbG93QnJlYWtFdmVudGBcbiAgICogYW5kICh3aGVuIGBwcm9wYWdhdGVCcmVha2AgaXMgc2V0IG9uIGEgbW91bnQpIHVwIHRvIHRoZSBwYXJlbnQgc2NvcGUuXG4gICAqL1xuICBicmVha1BpcGVsaW5lPzogKHJlYXNvbj86IHN0cmluZykgPT4gdm9pZDtcbn1cblxuLy8gLS0gSW50ZXJuYWw6ICQtbWV0aG9kIG5hbWUgc2V0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVXNlZCBieSB0aGUgUHJveHkgZ2V0IHRyYXAgdG8gZGlzdGluZ3Vpc2ggJC1tZXRob2RzIGZyb20gc3RhdGUga2V5cy5cblxuZXhwb3J0IGNvbnN0IFNDT1BFX01FVEhPRF9OQU1FUyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gICckZ2V0VmFsdWUnLFxuICAnJHNldFZhbHVlJyxcbiAgJyR1cGRhdGUnLFxuICAnJGRlbGV0ZScsXG4gICckcmVhZCcsXG4gICckZ2V0QXJncycsXG4gICckZ2V0RW52JyxcbiAgJyRkZWJ1ZycsXG4gICckbG9nJyxcbiAgJyRlcnJvcicsXG4gICckbWV0cmljJyxcbiAgJyRldmFsJyxcbiAgJyRhdHRhY2hTY29wZVJlY29yZGVyJyxcbiAgJyRkZXRhY2hTY29wZVJlY29yZGVyJyxcbiAgJyRnZXRTY29wZVJlY29yZGVycycsXG4gICckYmF0Y2hBcnJheScsXG4gICckYnJlYWsnLFxuICAnJGVtaXQnLFxuICAnJGRldGFjaEFuZEpvaW5MYXRlcicsXG4gICckZGV0YWNoQW5kRm9yZ2V0JyxcbiAgJyR0b1JhdycsXG5dKTtcbiJdfQ==
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JlYWN0aXZlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBeVJILCtFQUErRTtBQUMvRSx1RUFBdUU7QUFFdkUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQVM7SUFDaEQsV0FBVztJQUNYLFdBQVc7SUFDWCxTQUFTO0lBQ1QsU0FBUztJQUNULE9BQU87SUFDUCxVQUFVO0lBQ1YsU0FBUztJQUNULFVBQVU7SUFDVixPQUFPO0lBQ1AsUUFBUTtJQUNSLE1BQU07SUFDTixRQUFRO0lBQ1IsU0FBUztJQUNULE9BQU87SUFDUCxzQkFBc0I7SUFDdEIsc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQixhQUFhO0lBQ2IsUUFBUTtJQUNSLE9BQU87SUFDUCxxQkFBcUI7SUFDckIsa0JBQWtCO0lBQ2xCLFFBQVE7Q0FDVCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHJlYWN0aXZlL3R5cGVzIC0tIFR5cGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBUeXBlZFNjb3BlPFQ+IHJlYWN0aXZlIHByb3h5IHN5c3RlbS5cbiAqXG4gKiBUeXBlZFNjb3BlPFQ+IHdyYXBzIGEgUmVhY3RpdmVUYXJnZXQgKFNjb3BlRmFjYWRlKSBpbiBhIFByb3h5IHRoYXQgcHJvdmlkZXNcbiAqIHR5cGVkIHByb3BlcnR5IGFjY2Vzcy4gQWxsIHNjb3BlIGluZnJhc3RydWN0dXJlIG1ldGhvZHMgYXJlICQtcHJlZml4ZWQgdG9cbiAqIGF2b2lkIGNvbGxpc2lvbnMgd2l0aCB1c2VyIHN0YXRlIGtleXMuXG4gKlxuICogRGVwZW5kZW5jeTogdHlwZS1vbmx5IGltcG9ydHMgZnJvbSBlbmdpbmUvIGFuZCBzY29wZS8gKHplcm8gcnVudGltZSBjb3N0KS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEF0dGVtcHRDb250ZXh0LCBDYWxsT3B0aW9ucywgUmV0cnlQb2xpY3kgfSBmcm9tICcuLi9hdHRlbXB0L3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgRmxvd0NoYXJ0IH0gZnJvbSAnLi4vYnVpbGRlci90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IERldGFjaERyaXZlciwgRGV0YWNoSGFuZGxlIH0gZnJvbSAnLi4vZGV0YWNoL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgRXhlY3V0aW9uRW52IH0gZnJvbSAnLi4vZW5naW5lL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU2NvcGVSZWNvcmRlciB9IGZyb20gJy4uL3Njb3BlL3R5cGVzLmpzJztcblxuLy8gLS0gUmVhY3RpdmVUYXJnZXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTWluaW11bSBwcm90b2NvbCByZXF1aXJlZCBieSBUeXBlZFNjb3BlIC0tIGEgY3VyYXRlZCBzdWJzZXQgb2YgU2NvcGVGYWNhZGUnc1xuLy8gcHVibGljIEFQSS4gTm90IGEgZnVsbCBtaXJyb3I6IGV4Y2x1ZGVzIGludGVybmFsL3JlZGFjdGlvbiBtZXRob2RzIHRoYXQgYXJlXG4vLyBoYW5kbGVkIGF0IHRoZSBleGVjdXRvciBsZXZlbCAodXNlUmVkYWN0aW9uUG9saWN5LCB1c2VTaGFyZWRSZWRhY3RlZEtleXMsIGV0Yy4pXG4vLyBhbmQgaW5mcmFzdHJ1Y3R1cmUgbWV0aG9kcyAoZ2V0UGlwZWxpbmVJZCwgc2V0R2xvYmFsLCBnZXRHbG9iYWwsIGV0Yy4pLlxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aXZlVGFyZ2V0IHtcbiAgLy8gU3RhdGUgYWNjZXNzICh0cmFja2VkIGJ5IHJlY29yZGVycylcbiAgZ2V0VmFsdWUoa2V5Pzogc3RyaW5nKTogdW5rbm93bjtcbiAgc2V0VmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBzaG91bGRSZWRhY3Q/OiBib29sZWFuLCBkZXNjcmlwdGlvbj86IHN0cmluZyk6IHZvaWQ7XG4gIHVwZGF0ZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiB2b2lkO1xuICBkZWxldGVWYWx1ZShrZXk6IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8vIE5vbi10cmFja2luZyBzdGF0ZSBpbnNwZWN0aW9uIChmb3IgcHJveHkgaW50ZXJuYWxzIOKAlCBubyByZWNvcmRlciBkaXNwYXRjaClcbiAgLyoqIFJldHVybnMgYWxsIHN0YXRlIGtleXMgd2l0aG91dCBmaXJpbmcgb25SZWFkLiBVc2VkIGJ5IG93bktleXMvaGFzIHRyYXBzLiAqL1xuICBnZXRTdGF0ZUtleXM/KCk6IHN0cmluZ1tdO1xuICAvKiogQ2hlY2sga2V5IGV4aXN0ZW5jZSB3aXRob3V0IGZpcmluZyBvblJlYWQuIFVzZWQgYnkgaGFzIHRyYXAuICovXG4gIGhhc0tleT8oa2V5OiBzdHJpbmcpOiBib29sZWFuO1xuICAvKipcbiAgICogUmVhZCBzdGF0ZSB3aXRob3V0IGZpcmluZyBvblJlYWQuIFVzZWQgYnkgYXJyYXkgcHJveHkgZ2V0Q3VycmVudCgpIGFuZCxcbiAgICogc2luY2UgOS4yMi4wLCBieSBldmVyeSBuZXN0ZWQgLyBlbGVtZW50IC8gdGVybWluYWwgcHJveHkncyBMSVZFIHJlYWRcbiAgICogKGBsaXZlVmlldy50c2ApLiBBIHRhcmdldCB3aXRob3V0IGl0IGZhbGxzIGJhY2sgdG8gdGhlIHRyYWNrZWQgcmVhZCwgc29cbiAgICogZWFjaCBuZXN0ZWQgYWNjZXNzIHRoZW4gZmlyZXMgb25SZWFkIOKAlCBwcm92aWRlIGl0IChTY29wZUZhY2FkZSBkb2VzKS5cbiAgICovXG4gIGdldFZhbHVlU2lsZW50PyhrZXk/OiBzdHJpbmcpOiB1bmtub3duO1xuXG4gIC8vIElucHV0ICYgZW52aXJvbm1lbnQgKHJlYWRvbmx5LCBOT1QgdHJhY2tlZClcbiAgZ2V0QXJnczxUID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCk6IFQ7XG4gIGdldEVudigpOiBSZWFkb25seTxFeGVjdXRpb25FbnY+O1xuICAvKiogVGhlIGF0dGVtcHQgdGhlIHN0YWdlIGZ1bmN0aW9uIHJ1bnMgaW4g4oCUIGl0cyBzaWduYWwsIGl0cyBjYXAgYW5kIHRoZSB0aW1lIGxlZnQgKFAxYikuICovXG4gIGdldEF0dGVtcHQoKTogQXR0ZW1wdENvbnRleHQ7XG4gIC8qKiBBIGNhbGwgdG8gYW4gb3V0c2lkZSBzeXN0ZW0gb24gdGhlIGF0dGVtcHQgcnVubmVyLCByZWNvcmRlZCB1bmRlciB0aGlzIHN0YWdlIChQMikuICovXG4gIGNhbGw8Uj4oXG4gICAgdGFyZ2V0OiBzdHJpbmcsXG4gICAgZm46IChhdHRlbXB0OiBBdHRlbXB0Q29udGV4dCkgPT4gUHJvbWlzZTxSPiB8IFIsXG4gICAgcG9saWN5PzogUmV0cnlQb2xpY3ksXG4gICAgb3B0aW9ucz86IENhbGxPcHRpb25zLFxuICApOiBQcm9taXNlPFI+O1xuXG4gIC8vIFNjb3BlUmVjb3JkZXIgbWFuYWdlbWVudFxuICBhdHRhY2hTY29wZVJlY29yZGVyKHJlY29yZGVyOiBTY29wZVJlY29yZGVyKTogdm9pZDtcbiAgZGV0YWNoU2NvcGVSZWNvcmRlcihyZWNvcmRlcklkOiBzdHJpbmcpOiB2b2lkO1xuICBnZXRTY29wZVJlY29yZGVycygpOiBTY29wZVJlY29yZGVyW107XG5cbiAgLy8gRGlhZ25vc3RpY3NcbiAgYWRkRGVidWdJbmZvKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIGFkZERlYnVnTWVzc2FnZSh2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIGFkZEVycm9ySW5mbyhrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICBhZGRNZXRyaWMobmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIGFkZEV2YWwobmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG5cbiAgLy8gRW1pdCBjaGFubmVsIChQaGFzZSAzKSDigJQgc3RydWN0dXJlZCB1c2VyLWF1dGhvcmVkIGV2ZW50cyB0byBFbWl0UmVjb3JkZXJzLlxuICBlbWl0RXZlbnQobmFtZTogc3RyaW5nLCBwYXlsb2FkPzogdW5rbm93bik6IHZvaWQ7XG5cbiAgLy8gRGV0YWNoIChUNCkg4oCUIGZpcmUtYW5kLWZvcmdldCBjaGlsZCBmbG93Y2hhcnRzLiBTY29wZUZhY2FkZVxuICAvLyBkZWxlZ2F0ZXMgdG8gYGRldGFjaC9zcGF3bmAsIG1pbnRpbmcgcmVmSWRzIGZyb20gdGhpcyBzdGFnZSdzXG4gIC8vIHJ1bnRpbWVTdGFnZUlkIGZvciBkaWFnbm9zdGljIGNvcnJlbGF0aW9uLlxuICBkZXRhY2hBbmRKb2luTGF0ZXIoZHJpdmVyOiBEZXRhY2hEcml2ZXIsIGNoaWxkOiBGbG93Q2hhcnQsIGlucHV0PzogdW5rbm93bik6IERldGFjaEhhbmRsZTtcblxuICBkZXRhY2hBbmRGb3JnZXQoZHJpdmVyOiBEZXRhY2hEcml2ZXIsIGNoaWxkOiBGbG93Q2hhcnQsIGlucHV0PzogdW5rbm93bik6IHZvaWQ7XG59XG5cbi8vIC0tIFNjb3BlTWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vICQtcHJlZml4ZWQgZXNjYXBlIGhhdGNoZXMuIE5vbi1lbnVtZXJhYmxlIG9uIHRoZSBwcm94eSAtLSBkb24ndCBhcHBlYXIgaW5cbi8vIE9iamVjdC5rZXlzKCksIGRlc3RydWN0dXJpbmcsIG9yIGZvci4uLmluLiBPbmx5IHN0YXRlIGtleXMgYXJlIHZpc2libGUuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVNZXRob2RzIHtcbiAgLy8gU3RhdGUgKHVudHlwZWQgZXNjYXBlIGhhdGNoIC0tIGZvciBkeW5hbWljIGtleXMsIHJlZGFjdGlvbiwgZGVzY3JpcHRpb24pXG4gICRnZXRWYWx1ZShrZXk6IHN0cmluZyk6IHVua25vd247XG4gICRzZXRWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24sIHNob3VsZFJlZGFjdD86IGJvb2xlYW4sIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZDtcbiAgJHVwZGF0ZShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24sIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZDtcbiAgJGRlbGV0ZShrZXk6IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiB2b2lkO1xuICAvKiogUHJveHktc3ludGhlc2l6ZWQ6IGNhbGxzIGdldFZhbHVlKHJvb3RLZXkpIHRoZW4gd2Fsa3MgdGhlIG5lc3RlZCBwYXRoIChsb2Rhc2guZ2V0LXN0eWxlLCBubyBsb2Rhc2ggZGVwKS4gTm90IGEgZGlyZWN0IGRlbGVnYXRpb24uICovXG4gICRyZWFkKGRvdFBhdGg6IHN0cmluZyk6IHVua25vd247XG5cbiAgLy8gSW5wdXQgJiBlbnZpcm9ubWVudCAocmVhZG9ubHkpXG4gICRnZXRBcmdzPFQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKTogVDtcbiAgJGdldEVudigpOiBSZWFkb25seTxFeGVjdXRpb25FbnY+O1xuICAvKipcbiAgICogVGhlIGF0dGVtcHQgdGhpcyBzdGFnZSBmdW5jdGlvbiBydW5zIGluIChQMWIpOiBgYXR0ZW1wdGAgLyBgb2ZgLCB0aGUgYHNpZ25hbGAgdG8gcGFzcyB0byBgZmV0Y2hgIGFuZCBTREtcbiAgICogY2FsbHMgKGl0IGFib3J0cyBhdCB0aGUgYXR0ZW1wdCdzIGNhcCwgdGhlIHJ1bidzIGRlYWRsaW5lLCBvciBhIGNhbmNlbGxhdGlvbiksIGFuZCBgdGltZUxlZnRNcygpYCDigJQgdGhlXG4gICAqIG1pbGxpc2Vjb25kcyBiZWZvcmUgdGhlIHJ1bidzIGRlYWRsaW5lIChgSW5maW5pdHlgIHdpdGhvdXQgb25lOyByZWFkaW5nIGl0IHdpdGggYSBkZWFkbGluZSBtYXJrcyB0aGUgc3RhZ2Unc1xuICAgKiBjb21taXQgYHVudHJhY2tlZFNvdXJjZXM6IFsnZW52J11gKS4gQSBzdGFnZSB3aXRoIG5vIHJldHJ5IHBvbGljeSBhbmQgbm8gZGVhZGxpbmUgaXMgYXR0ZW1wdCAxIG9mIDEuXG4gICAqL1xuICAkYXR0ZW1wdCgpOiBBdHRlbXB0Q29udGV4dDtcbiAgLyoqXG4gICAqIEEgY2FsbCB0byBhbiBvdXRzaWRlIHN5c3RlbSwgbWFkZSBpbnNpZGUgdGhpcyBzdGFnZSAoUDIpOiBgZm5gIHJ1bnMgb24gdGhlIGF0dGVtcHQgcnVubmVyIHVuZGVyIGBwb2xpY3lgXG4gICAqIChub25lID0gT05FIGF0dGVtcHQg4oCUIHN0aWxsIHJlY29yZGVkKSwgYW5kIGV2ZXJ5IGF0dGVtcHQgaXMgYW4gYEF0dGVtcHRSZWNvcmRgIG9mIGtpbmQgYCdjYWxsJ2Agb24gdGhpc1xuICAgKiBzdGFnZSdzIG5vZGUgYW5kIG9uIGBvbkF0dGVtcHRgLCB3aXRoIGl0cyB0aW1pbmcsIG91dGNvbWUsIGNhdGVnb3J5IGFuZCBkZWNpc2lvbi4gSXQgcnVucyB1bmRlciB0aGlzIHN0YWdlXG4gICAqIGF0dGVtcHQncyB0aW1lIGFuZCBzaWduYWwg4oCUIHBhc3MgYHQuc2lnbmFsYCBvbi4gYHRhcmdldGAgaXMgYSBOQU1FIGZyb20gY29kZSAoMeKAkzEyOCBjaGFyYWN0ZXJzLCBubyBjb250cm9sXG4gICAqIGNoYXJhY3RlciksIG5ldmVyIGEgdmFsdWUuIEEgbWFsZm9ybWVkIGNhbGwgKHRhcmdldCwgYGZuYCwgcG9saWN5KSBvciBvbmUgZnJvbSBhbiBhdHRlbXB0IHRoYXQgYWxyZWFkeSBlbmRlZFxuICAgKiBUSFJPV1MgYXQgdGhlIGNhbGwsIHN5bmNocm9ub3VzbHksIGxpa2UgZXZlcnkgc2NvcGUgcmVmdXNhbCDigJQgaXQgaXMgdGhlIHN0YWdlJ3MgY29kZSBicmVha2luZyBpdHMgY29udHJhY3Q7IGFcbiAgICogY2FsbCB0aGF0IHJ1bnMgYW5kIGZhaWxzIFJFSkVDVFMgd2l0aCBpdHMgbGFzdCBhdHRlbXB0J3Mgb3duIGVycm9yLiBBIGNhbGwgdGhhdCBjaGFuZ2VzIGFuIG91dHNpZGUgc3lzdGVtXG4gICAqIGRlY2xhcmVzIGl0IGluIGBvcHRpb25zYCAoYHsgdG91Y2hlcywgaWRlbXBvdGVuY3lLZXkgfWAsIFAzKTogYSB0b3VjaGluZyBjYWxsIHRoYXQgbWF5IHJldHJ5IG5lZWRzIGEga2V5LCBldmVyeVxuICAgKiByZWNvcmQgY2FycmllcyBpdHMgYGVmZmVjdGAsIGFuZCBhIGNhbGwgdGhhdCBlbmRzIHdpdGhvdXQgYW4gYW5zd2VyIGFmdGVyIGFueSBhdHRlbXB0IG9mIHVua25vd24gZWZmZWN0IHJlamVjdHNcbiAgICogd2l0aCBgVW5rbm93bkVmZmVjdEVycm9yYC5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBxdW90ZSA9IGF3YWl0IHNjb3BlLiRjYWxsKCdzdHJpcGUucXVvdGVzLmNyZWF0ZScsICh0KSA9PiBzdHJpcGUucXVvdGVzLmNyZWF0ZShib2R5LCB7IHNpZ25hbDogdC5zaWduYWwgfSksXG4gICAqICAgeyBhdHRlbXB0czogMywgdGltZW91dE1zOiAxMF8wMDAgfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgJGNhbGw8Uj4oXG4gICAgdGFyZ2V0OiBzdHJpbmcsXG4gICAgZm46IChhdHRlbXB0OiBBdHRlbXB0Q29udGV4dCkgPT4gUHJvbWlzZTxSPiB8IFIsXG4gICAgcG9saWN5PzogUmV0cnlQb2xpY3ksXG4gICAgb3B0aW9ucz86IENhbGxPcHRpb25zLFxuICApOiBQcm9taXNlPFI+O1xuXG4gIC8vIE9ic2VydmFiaWxpdHkg4oCUIGxlZ2FjeSBkaWFnbm9zdGljIHByaW1pdGl2ZXMuXG4gIC8vXG4gIC8vIEFzIG9mIFBoYXNlIDMgdGhlc2UgQUxTTyBkaXNwYXRjaCBvbiB0aGUgZW1pdCBjaGFubmVsIChpbiBhZGRpdGlvbiB0b1xuICAvLyB0aGVpciBleGlzdGluZyBgRGlhZ25vc3RpY0NvbGxlY3RvcmAgc2lkZS1iYWcgd3JpdGVzIGZvciBzbmFwc2hvdFxuICAvLyBpbmNsdXNpb24pLiBBbnkgYXR0YWNoZWQgYEVtaXRSZWNvcmRlcmAgd2lsbCBzZWUgdGhlc2UgZXZlbnRzIHdpdGhcbiAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgbmFtZXNwYWNlZCBuYW1lczpcbiAgLy9cbiAgLy8gICAkZGVidWcoa2V5LCB2YWx1ZSkgICAgLT4gZW1pdHMgYGxvZy5kZWJ1Zy4ke2tleX1gXG4gIC8vICAgJGVycm9yKGtleSwgdmFsdWUpICAgIC0+IGVtaXRzIGBsb2cuZXJyb3IuJHtrZXl9YFxuICAvLyAgICRtZXRyaWMobmFtZSwgdmFsdWUpICAtPiBlbWl0cyBgbWV0cmljLiR7bmFtZX1gXG4gIC8vICAgJGV2YWwgKG5hbWUsIHZhbHVlKSAgIC0+IGVtaXRzIGBldmFsLiR7bmFtZX1gXG4gIC8vICAgJGxvZyh2YWx1ZSkgICAgICAgICAgIC0+IGVtaXRzIGBsb2cuZGVidWcubWVzc2FnZXNgXG4gIC8vXG4gIC8vIFRoaXMgbWFrZXMgdGhlIGNhbGxzIG9ic2VydmFibGUgaW4gcmVhbCB0aW1lIOKAlCBubyBsb3NzIG9mIGJhY2t3YXJkXG4gIC8vIGNvbXBhdDsgdGhlIHNpZGUgYmFnIGNvbnRpbnVlcyB0byBwb3B1bGF0ZSBmb3IgY29uc3VtZXJzIHRoYXQgaW5zcGVjdFxuICAvLyB0aGUgc25hcHNob3QgZGlyZWN0bHkuXG4gICRkZWJ1ZyhrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICAkbG9nKHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgJGVycm9yKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gICRtZXRyaWMobmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gICRldmFsKG5hbWU6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuXG4gIC8vIFNjb3BlUmVjb3JkZXIgbWFuYWdlbWVudFxuICAkYXR0YWNoU2NvcGVSZWNvcmRlcihyZWNvcmRlcjogU2NvcGVSZWNvcmRlcik6IHZvaWQ7XG4gICRkZXRhY2hTY29wZVJlY29yZGVyKHJlY29yZGVySWQ6IHN0cmluZyk6IHZvaWQ7XG4gICRnZXRTY29wZVJlY29yZGVycygpOiBTY29wZVJlY29yZGVyW107XG5cbiAgLyoqXG4gICAqIEJhdGNoLW11dGF0ZSBhbiBhcnJheSBrZXkgaW4gYSBzaW5nbGUgY2xvbmUrd3JpdGUgY3ljbGUuXG4gICAqXG4gICAqIEV2ZXJ5IGBzY29wZS5pdGVtcy5wdXNoKHgpYCBjbG9uZXMgdGhlIGVudGlyZSBhcnJheSBhbmQgY29tbWl0cyBpdCDigJQgTyhOKSBwZXIgY2FsbC5cbiAgICogRm9yIE4gbXV0YXRpb25zIG9uIGFuIE0tbGVuZ3RoIGFycmF5IHRoYXQgaXMgTyhOw5dNKS4gVXNlIGAkYmF0Y2hBcnJheWAgdG8gY2xvbmUgb25jZSxcbiAgICogYXBwbHkgYWxsIG11dGF0aW9ucyBpbnNpZGUgYGZuYCwgdGhlbiBjb21taXQgb25jZSDigJQgTyhNKSB0b3RhbC5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBCZWZvcmU6IDEwMDAgY2xvbmVzIMOXIGdyb3dpbmcgYXJyYXkgPSBPKE7CsilcbiAgICogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHNjb3BlLml0ZW1zLnB1c2goaSk7XG4gICAqXG4gICAqIC8vIEFmdGVyOiAxIGNsb25lICsgMSBjb21taXQgPSBPKE4pXG4gICAqIHNjb3BlLiRiYXRjaEFycmF5KCdpdGVtcycsIChhcnIpID0+IHtcbiAgICogICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgYXJyLnB1c2goaSk7XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogYGZuYCByZWNlaXZlcyBhIHBsYWluIChub24tcHJveHkpIG11dGFibGUgKipkZWVwIGNvcHkqKiAoYHN0cnVjdHVyZWRDbG9uZWApIG9mIHRoZVxuICAgKiBjdXJyZW50IGFycmF5IOKAlCBcImNsb25lIG9uY2VcIiBtZWFucyB0aGUgZWxlbWVudHMgdG9vLiBNdXRhdGluZyBhbiBlbGVtZW50IGluc2lkZSBgZm5gXG4gICAqIChgYXJyWzBdLm4gPSA5YCkgY2hhbmdlcyB0aGUgY29weSBhbmQgbGFuZHMgaW4gdGhlIG9uZSBjb21taXR0ZWQgd3JpdGU7IHRoZSB2YWx1ZSBpblxuICAgKiBzdGF0ZSBpcyBuZXZlciB0b3VjaGVkICg5LjIyLjAg4oCUIGEgc2hhbGxvdyBjb3B5IHVzZWQgdG8gc2hhcmUgdGhlIGNvbW1pdHRlZCBlbGVtZW50cyxcbiAgICogc28gYW4gZWxlbWVudCBlZGl0IGNoYW5nZWQgY29tbWl0dGVkIHN0YXRlIGluIHBsYWNlIHdpdGggbm8gdHJhY2Ugcm93KS5cbiAgICpcbiAgICogTXV0YXRpb25zIGluc2lkZSBgZm5gIGFyZSBOT1QgdHJhY2tlZCBpbmRpdmlkdWFsbHkg4oCUIG9ubHkgdGhlIGZpbmFsIGNvbW1pdHRlZCBhcnJheVxuICAgKiBhcHBlYXJzIGluIHRoZSBuYXJyYXRpdmUgYXMgYSBzaW5nbGUgd3JpdGUuIElmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFuXG4gICAqIGFycmF5LCBgZm5gIHJlY2VpdmVzIGFuIGVtcHR5IGFycmF5IGFuZCB0aGUgcmVzdWx0IGlzIGNvbW1pdHRlZCBhcyB0aGUgbmV3IHZhbHVlLlxuICAgKlxuICAgKiBJZiBgZm5gIHRocm93cywgYHNldFZhbHVlYCBpcyBuZXZlciBjYWxsZWQgYW5kIHN0YXRlIHJlbWFpbnMgdW5jaGFuZ2VkIChhdG9taWMgb25cbiAgICogZXJyb3IpLiBUaGUgZXhjZXB0aW9uIHByb3BhZ2F0ZXMgdG8gdGhlIGNhbGxlci5cbiAgICpcbiAgICogYGtleWAgaXMgdW50eXBlZCAoYHN0cmluZ2ApIOKAlCBUeXBlU2NyaXB0IHdpbGwgbm90IGNhdGNoIHR5cG9zLiBgYXJyYCBpcyB0eXBlZCBhc1xuICAgKiBgdW5rbm93bltdYCBiZWNhdXNlIGBTY29wZU1ldGhvZHNgIGlzIG5vdCBwYXJhbWV0ZXJpemVkIGJ5IGBUYDsgY2FzdCBpbnNpZGUgYGZuYFxuICAgKiB3aGVuIGVsZW1lbnQgdHlwZXMgYXJlIGtub3duOiBgKGFyciBhcyBzdHJpbmdbXSkucHVzaCh4KWAuXG4gICAqL1xuICAkYmF0Y2hBcnJheShrZXk6IHN0cmluZywgZm46IChhcnI6IHVua25vd25bXSkgPT4gdm9pZCk6IHZvaWQ7XG5cbiAgLy8gT2JzZXJ2YWJpbGl0eSDigJQgRW1pdCBjaGFubmVsIChQaGFzZSAzKVxuICAvKipcbiAgICogRmlyZSBhIHN0cnVjdHVyZWQgZXZlbnQgdG8gZXZlcnkgYXR0YWNoZWQgcmVjb3JkZXIgaW1wbGVtZW50aW5nXG4gICAqIGBvbkVtaXRgLiBUaGUgcHJpbWFyeSBwcmltaXRpdmUgZm9yIGNvbnN1bWVyLWF1dGhvcmVkIG9ic2VydmFiaWxpdHlcbiAgICogZXZlbnRzIChMTE0gdG9rZW5zLCBiaWxsaW5nIG1ldHJpY3MsIGRvbWFpbiBtaWxlc3RvbmVzLCBldGMuKSB0aGF0XG4gICAqIHNob3VsZG4ndCBsaXZlIGluIHNjb3BlIHN0YXRlLlxuICAgKlxuICAgKiBTeW5jaHJvbm91cywgcGFzcy10aHJvdWdoIOKAlCBkZWxpdmVyZWQgdG8gcmVjb3JkZXJzIGltbWVkaWF0ZWx5LCBpblxuICAgKiBjYWxsIG9yZGVyLiBaZXJvLWFsbG9jYXRpb24gd2hlbiBubyByZWNvcmRlcnMgYXJlIGF0dGFjaGVkLlxuICAgKlxuICAgKiAjIyBOYW1pbmcgY29udmVudGlvblxuICAgKlxuICAgKiBVc2UgaGllcmFyY2hpY2FsIGRvdHRlZCBuYW1lczogYCc8bmFtZXNwYWNlPi48Y2F0ZWdvcnk+LjxldmVudD4nYC5cbiAgICogRXhhbXBsZXM6XG4gICAqICAgLSBgJ2FnZW50Zm9vdHByaW50LmxsbS50b2tlbnMnYFxuICAgKiAgIC0gYCdteWFwcC5iaWxsaW5nLnNwZW5kJ2BcbiAgICogICAtIGAnYXV0aC5jaGVjay5kZW5pZWQnYFxuICAgKlxuICAgKiBUaGUgbGlicmFyeSBzdGF5cyB2b2NhYnVsYXJ5LWFnbm9zdGljIOKAlCBubyBjZW50cmFsIHJlZ2lzdHJ5LCBub1xuICAgKiByZXNlcnZlZCBwcmVmaXhlcy4gTmFtZXNwYWNlIHByZWZpeGVzIHByZXZlbnQgY29sbGlzaW9ucyBhY3Jvc3NcbiAgICogbGlicmFyaWVzIGFuZCBhcHBzIG5hdHVyYWxseS5cbiAgICpcbiAgICogIyMgUmVkYWN0aW9uXG4gICAqXG4gICAqIElmIGBSZWRhY3Rpb25Qb2xpY3kuZW1pdFBhdHRlcm5zYCBtYXRjaGVzIHRoZSBuYW1lLCB0aGUgcGF5bG9hZCBpc1xuICAgKiByZXBsYWNlZCB3aXRoIGAnW1JFREFDVEVEXSdgIGJlZm9yZSBkaXNwYXRjaC4gTm8gcmVjb3JkZXIgZXZlciBzZWVzXG4gICAqIHRoZSByYXcgdmFsdWUgZm9yIHJlZGFjdGVkIGV2ZW50IG5hbWVzLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIENvbnN1bWVyLWNob3NlbiBldmVudCBpZGVudGlmaWVyIChzZWUgbmFtaW5nIGNvbnZlbnRpb24pLlxuICAgKiBAcGFyYW0gcGF5bG9hZCAtIFN0cnVjdHVyZWQgZGF0YSB0byBhdHRhY2guIFNoYXBlIGlzIHVwIHRvIHRoZVxuICAgKiAgIGNvbnN1bWVyOyBsaWJyYXJ5IHRyZWF0cyBpdCBhcyBvcGFxdWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogc2NvcGUuJGVtaXQoJ2FnZW50Zm9vdHByaW50LmxsbS50b2tlbnMnLCB7IGlucHV0OiAxMDAsIG91dHB1dDogNTAgfSk7XG4gICAqIHNjb3BlLiRlbWl0KCdteWFwcC5kZWNpc2lvbicsIHsgYnJhbmNoOiAnYXBwcm92ZWQnLCBjb25maWRlbmNlOiAwLjkyIH0pO1xuICAgKiBgYGBcbiAgICovXG4gICRlbWl0KG5hbWU6IHN0cmluZywgcGF5bG9hZD86IHVua25vd24pOiB2b2lkO1xuXG4gIC8vIERldGFjaCDigJQgZmlyZS1hbmQtZm9yZ2V0IGNoaWxkIGZsb3djaGFydCBleGVjdXRpb24uXG4gIC8vXG4gIC8vIGAkZGV0YWNoQW5kSm9pbkxhdGVyKGRyaXZlciwgY2hpbGQsIGlucHV0PylgIHNjaGVkdWxlcyB0aGUgY2hpbGQgdmlhXG4gIC8vIHRoZSBnaXZlbiBkcml2ZXIgYW5kIHJldHVybnMgYSBgRGV0YWNoSGFuZGxlYCB0aGUgY29uc3VtZXIgY2FuIHJlYWRcbiAgLy8gc3luY2hyb25vdXNseSAoYC5zdGF0dXNgKSBvciBhd2FpdCAoYC53YWl0KClgKS4gVGhlIHBhcmVudCBzdGFnZVxuICAvLyBkb2VzIE5PVCBibG9jayBvbiB0aGUgY2hpbGQg4oCUIGl0IHJldHVybnMgdG8gdGhlIGFnZW50IGxvb3AgdGhlXG4gIC8vIG1vbWVudCB0aGUgZHJpdmVyJ3MgYHNjaGVkdWxlKClgIHJldHVybnMgKHBhc3NpdmUgcmVjb3JkZXIgcnVsZSkuXG4gIC8vXG4gIC8vIGAkZGV0YWNoQW5kRm9yZ2V0KGRyaXZlciwgY2hpbGQsIGlucHV0PylgIGRpc2NhcmRzIHRoZSBoYW5kbGUg4oCUXG4gIC8vIHVzZWZ1bCBmb3IgZmlyZS1hbmQtZm9yZ2V0IHRlbGVtZXRyeSB3aGVyZSB0aGUgY2FsbGVyIG5ldmVyIG5lZWRzXG4gIC8vIHRvIGtub3cgaG93IHRoZSBjaGlsZCBmaW5pc2hlZC4gRXJyb3JzIHN0aWxsIGxhbmQgb24gdGhlIChub3ctXG4gIC8vIGRyb3BwZWQpIGhhbmRsZSBhbmQgZ28gc2lsZW50IHVubGVzcyBhbiBvYnNlcnZlciBzdXJmYWNlcyB0aGVtLlxuICAvL1xuICAvLyBEcml2ZXIgaXMgUkVRVUlSRUQg4oCUIHRoZXJlJ3Mgbm8gbGlicmFyeS1kZWZhdWx0LiBQYXNzIGUuZy5cbiAgLy8gYG1pY3JvdGFza0JhdGNoRHJpdmVyYCAoZnJvbSAnZm9vdHByaW50anMvZGV0YWNoJykgb3IgeW91ciBvd25cbiAgLy8gY3VzdG9tIGRyaXZlci4gRXhwbGljaXQgcGFzc2luZyBhdm9pZHMgZ2xvYmFsIHN0YXRlIGFuZCBrZWVwcyB0aGVcbiAgLy8gZW5naW5lIGZyZWUgb2YgZHJpdmVyIGltcG9ydHMuXG4gICRkZXRhY2hBbmRKb2luTGF0ZXIoZHJpdmVyOiBEZXRhY2hEcml2ZXIsIGNoaWxkOiBGbG93Q2hhcnQsIGlucHV0PzogdW5rbm93bik6IERldGFjaEhhbmRsZTtcblxuICAkZGV0YWNoQW5kRm9yZ2V0KGRyaXZlcjogRGV0YWNoRHJpdmVyLCBjaGlsZDogRmxvd0NoYXJ0LCBpbnB1dD86IHVua25vd24pOiB2b2lkO1xuXG4gIC8vIFBpcGVsaW5lIGNvbnRyb2xcbiAgLyoqXG4gICAqIFN0b3AgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGNvbnRleHQuXG4gICAqXG4gICAqIC0gKipJbiBhIHRvcC1sZXZlbCBjaGFydDoqKiB0aGUgdHJhdmVyc2VyIGV4aXRzIGNsZWFubHkgYWZ0ZXIgdGhpcyBzdGFnZVxuICAgKiAgIGNvbXBsZXRlcy5cbiAgICogLSAqKkluc2lkZSBhIHN1YmZsb3c6KiogYnkgZGVmYXVsdCwgb25seSB0aGUgc3ViZmxvdydzIG93biBleGVjdXRpb25cbiAgICogICBzdG9wczsgY29udHJvbCByZXR1cm5zIHRvIHRoZSBwYXJlbnQgYXMgbm9ybWFsLiBJZiB0aGUgc3ViZmxvdyBpc1xuICAgKiAgIG1vdW50ZWQgd2l0aCBgcHJvcGFnYXRlQnJlYWs6IHRydWVgLCB0aGUgYnJlYWsgc2lnbmFsIChhbmQgaXRzXG4gICAqICAgb3B0aW9uYWwgcmVhc29uKSBwcm9wYWdhdGVzIHVwIHRvIHRoZSBwYXJlbnQgc2NvcGUsIHRlcm1pbmF0aW5nIHRoZVxuICAgKiAgIG91dGVyIGxvb3AgdG9vLiBTZWUgYFN1YmZsb3dNb3VudE9wdGlvbnMucHJvcGFnYXRlQnJlYWtgLlxuICAgKlxuICAgKiBAcGFyYW0gcmVhc29uIC0gT3B0aW9uYWwgZnJlZS1mb3JtIHN0cmluZyBkZXNjcmliaW5nIHdoeSB0aGUgYnJlYWtcbiAgICogICBoYXBwZW5lZC4gUHJvcGFnYXRlcyB0byBgRmxvd0JyZWFrRXZlbnQucmVhc29uYCBzbyByZWNvcmRlcnMgYW5kXG4gICAqICAgY3VzdG9tIG5hcnJhdGl2ZXMgY2FuIHN1cmZhY2UgaXQuIERlZmF1bHRzIHRvIHVuZGVmaW5lZC5cbiAgICovXG4gICRicmVhayhyZWFzb24/OiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8vIEVzY2FwZSBoYXRjaCAtLSB1bndyYXAgdG8gdW5kZXJseWluZyBSZWFjdGl2ZVRhcmdldFxuICAkdG9SYXcoKTogUmVhY3RpdmVUYXJnZXQ7XG59XG5cbi8vIC0tIFR5cGVkU2NvcGU8VD4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoZSBjb25zdW1lci1mYWNpbmcgdHlwZS4gVCBpcyB0aGUgdXNlcidzIHN0YXRlIGludGVyZmFjZS5cbi8vIFByb3BlcnR5IGFjY2VzcyBpcyB0eXBlZDsgJC1tZXRob2RzIHByb3ZpZGUgZXNjYXBlIGhhdGNoZXMuXG5cbmV4cG9ydCB0eXBlIFR5cGVkU2NvcGU8VCBleHRlbmRzIG9iamVjdCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IFQgJiBTY29wZU1ldGhvZHM7XG5cbi8vIC0tIFJlYWN0aXZlT3B0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbmZpZ3VyYXRpb24gcGFzc2VkIHRvIGNyZWF0ZVR5cGVkU2NvcGUuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RpdmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFBpcGVsaW5lIGJyZWFrIGZ1bmN0aW9uIOKAlCBpbmplY3RlZCBieSBTdGFnZVJ1bm5lciBhZnRlciBzY29wZSBjcmVhdGlvbi5cbiAgICogQWNjZXB0cyBhbiBvcHRpb25hbCByZWFzb24gc3RyaW5nIHRoYXQgcHJvcGFnYXRlcyB0byBgRmxvd0JyZWFrRXZlbnRgXG4gICAqIGFuZCAod2hlbiBgcHJvcGFnYXRlQnJlYWtgIGlzIHNldCBvbiBhIG1vdW50KSB1cCB0byB0aGUgcGFyZW50IHNjb3BlLlxuICAgKi9cbiAgYnJlYWtQaXBlbGluZT86IChyZWFzb24/OiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbi8vIC0tIEludGVybmFsOiAkLW1ldGhvZCBuYW1lIHNldCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFVzZWQgYnkgdGhlIFByb3h5IGdldCB0cmFwIHRvIGRpc3Rpbmd1aXNoICQtbWV0aG9kcyBmcm9tIHN0YXRlIGtleXMuXG5cbmV4cG9ydCBjb25zdCBTQ09QRV9NRVRIT0RfTkFNRVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICAnJGdldFZhbHVlJyxcbiAgJyRzZXRWYWx1ZScsXG4gICckdXBkYXRlJyxcbiAgJyRkZWxldGUnLFxuICAnJHJlYWQnLFxuICAnJGdldEFyZ3MnLFxuICAnJGdldEVudicsXG4gICckYXR0ZW1wdCcsXG4gICckY2FsbCcsXG4gICckZGVidWcnLFxuICAnJGxvZycsXG4gICckZXJyb3InLFxuICAnJG1ldHJpYycsXG4gICckZXZhbCcsXG4gICckYXR0YWNoU2NvcGVSZWNvcmRlcicsXG4gICckZGV0YWNoU2NvcGVSZWNvcmRlcicsXG4gICckZ2V0U2NvcGVSZWNvcmRlcnMnLFxuICAnJGJhdGNoQXJyYXknLFxuICAnJGJyZWFrJyxcbiAgJyRlbWl0JyxcbiAgJyRkZXRhY2hBbmRKb2luTGF0ZXInLFxuICAnJGRldGFjaEFuZEZvcmdldCcsXG4gICckdG9SYXcnLFxuXSk7XG4iXX0=
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { FlowAttemptEvent, FlowDecisionEvent, FlowPauseEvent, FlowRecorder, FlowRunEvent, FlowRunFailedEvent } from '../engine/narrative/types.js';
|
|
2
|
+
import type { AttemptAggregate, AttemptDecisionRow, AttemptQuery, AttemptRecorderOptions, AttemptStorageStats, AttemptStore, PhysicalAttemptRow } from './attemptMetricsTypes.js';
|
|
3
|
+
export declare class AttemptRecorder implements FlowRecorder {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
private readonly rows;
|
|
6
|
+
private readonly logical;
|
|
7
|
+
private readonly starts;
|
|
8
|
+
private reads;
|
|
9
|
+
private readonly pending;
|
|
10
|
+
private readonly exemplars;
|
|
11
|
+
private readonly maxRows;
|
|
12
|
+
private readonly maxPending;
|
|
13
|
+
private readonly timeoutMs;
|
|
14
|
+
private readonly store?;
|
|
15
|
+
private failed;
|
|
16
|
+
private dropped;
|
|
17
|
+
private omittedRows;
|
|
18
|
+
constructor(options?: AttemptRecorderOptions);
|
|
19
|
+
onRunStart(event: FlowRunEvent): void;
|
|
20
|
+
onRunEnd(event: FlowRunEvent): void;
|
|
21
|
+
onPause(event: FlowPauseEvent): void;
|
|
22
|
+
onRunFailed(event: FlowRunFailedEvent): void;
|
|
23
|
+
private end;
|
|
24
|
+
onAttempt(event: FlowAttemptEvent): void;
|
|
25
|
+
onDecision(event: FlowDecisionEvent): void;
|
|
26
|
+
private collect;
|
|
27
|
+
storage(): AttemptStorageStats;
|
|
28
|
+
flush(): Promise<AttemptStorageStats>;
|
|
29
|
+
byTarget(): AttemptAggregate['byTarget'];
|
|
30
|
+
byRun(): AttemptAggregate['byRun'];
|
|
31
|
+
slowest(target: string, limit?: number): import("./attemptMetricsTypes.js").AttemptMetricRef[];
|
|
32
|
+
series(series: string, runId?: string): {
|
|
33
|
+
attempts: PhysicalAttemptRow[];
|
|
34
|
+
decisions: AttemptDecisionRow[];
|
|
35
|
+
};
|
|
36
|
+
aggregate(supplied?: AttemptQuery): Promise<AttemptAggregate>;
|
|
37
|
+
private readStored;
|
|
38
|
+
toSnapshot(): {
|
|
39
|
+
name: string;
|
|
40
|
+
data: {
|
|
41
|
+
byTarget: Map<string, import("./attemptMetricsTypes.js").AttemptStats>;
|
|
42
|
+
byRun: Map<string, import("./attemptMetricsTypes.js").AttemptRunStats>;
|
|
43
|
+
};
|
|
44
|
+
meta: {
|
|
45
|
+
projection: string;
|
|
46
|
+
exemplars: number;
|
|
47
|
+
rows: number;
|
|
48
|
+
maxRows: number;
|
|
49
|
+
storage: AttemptStorageStats;
|
|
50
|
+
workTime: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
toOTel(): {
|
|
54
|
+
resourceMetrics: {
|
|
55
|
+
resource: {
|
|
56
|
+
attributes: never[];
|
|
57
|
+
};
|
|
58
|
+
scopeMetrics: {
|
|
59
|
+
scope: {
|
|
60
|
+
name: string;
|
|
61
|
+
};
|
|
62
|
+
metrics: ({
|
|
63
|
+
name: string;
|
|
64
|
+
unit: string;
|
|
65
|
+
description: string;
|
|
66
|
+
histogram: {
|
|
67
|
+
aggregationTemporality: number;
|
|
68
|
+
dataPoints: {
|
|
69
|
+
attributes: {
|
|
70
|
+
key: string;
|
|
71
|
+
value: {
|
|
72
|
+
stringValue: string;
|
|
73
|
+
};
|
|
74
|
+
}[];
|
|
75
|
+
startTimeUnixNano: string;
|
|
76
|
+
timeUnixNano: string;
|
|
77
|
+
count: string;
|
|
78
|
+
sum: number;
|
|
79
|
+
explicitBounds: number[];
|
|
80
|
+
bucketCounts: string[];
|
|
81
|
+
exemplars: {
|
|
82
|
+
traceId?: string | undefined;
|
|
83
|
+
asDouble: number;
|
|
84
|
+
timeUnixNano: string;
|
|
85
|
+
filteredAttributes: {
|
|
86
|
+
key: string;
|
|
87
|
+
value: {
|
|
88
|
+
stringValue: string;
|
|
89
|
+
};
|
|
90
|
+
}[];
|
|
91
|
+
}[];
|
|
92
|
+
}[];
|
|
93
|
+
};
|
|
94
|
+
sum?: undefined;
|
|
95
|
+
} | {
|
|
96
|
+
name: string;
|
|
97
|
+
unit: string;
|
|
98
|
+
sum: {
|
|
99
|
+
aggregationTemporality: number;
|
|
100
|
+
isMonotonic: boolean;
|
|
101
|
+
dataPoints: {
|
|
102
|
+
attributes: {
|
|
103
|
+
key: string;
|
|
104
|
+
value: {
|
|
105
|
+
stringValue: string;
|
|
106
|
+
};
|
|
107
|
+
}[];
|
|
108
|
+
startTimeUnixNano: string;
|
|
109
|
+
timeUnixNano: string;
|
|
110
|
+
asDouble: number;
|
|
111
|
+
exemplars: {
|
|
112
|
+
asDouble: number;
|
|
113
|
+
traceId?: string | undefined;
|
|
114
|
+
timeUnixNano: string;
|
|
115
|
+
filteredAttributes: {
|
|
116
|
+
key: string;
|
|
117
|
+
value: {
|
|
118
|
+
stringValue: string;
|
|
119
|
+
};
|
|
120
|
+
}[];
|
|
121
|
+
}[];
|
|
122
|
+
}[];
|
|
123
|
+
};
|
|
124
|
+
description?: undefined;
|
|
125
|
+
histogram?: undefined;
|
|
126
|
+
})[];
|
|
127
|
+
}[];
|
|
128
|
+
}[];
|
|
129
|
+
};
|
|
130
|
+
/** Clear completed local projections; active/paused evidence and bounded ownership survive executor auto-clear. */
|
|
131
|
+
clear(): void;
|
|
132
|
+
}
|
|
133
|
+
/** Bounded reference adapter for tests/local use; apps supply their own database adapter. */
|
|
134
|
+
export declare function memoryStore(options?: {
|
|
135
|
+
readonly maxRows?: number;
|
|
136
|
+
}): AttemptStore & {
|
|
137
|
+
stats(): {
|
|
138
|
+
rows: number;
|
|
139
|
+
omittedRows: number;
|
|
140
|
+
};
|
|
141
|
+
};
|