@invinite-org/chartlang-runtime 1.0.2 → 1.1.1
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/CHANGELOG.md +101 -0
- package/README.md +10 -2
- package/dist/buildComputeContext.js.map +1 -1
- package/dist/createScriptRunner.d.ts +55 -4
- package/dist/createScriptRunner.d.ts.map +1 -1
- package/dist/createScriptRunner.js +103 -35
- package/dist/createScriptRunner.js.map +1 -1
- package/dist/dep/DepOutputStore.d.ts +92 -0
- package/dist/dep/DepOutputStore.d.ts.map +1 -0
- package/dist/dep/DepOutputStore.js +0 -0
- package/dist/dep/DepOutputStore.js.map +1 -0
- package/dist/dep/DepRunner.d.ts +146 -0
- package/dist/dep/DepRunner.d.ts.map +1 -0
- package/dist/dep/DepRunner.js +243 -0
- package/dist/dep/DepRunner.js.map +1 -0
- package/dist/dep/depOutput.d.ts +50 -0
- package/dist/dep/depOutput.d.ts.map +1 -0
- package/dist/dep/depOutput.js +92 -0
- package/dist/dep/depOutput.js.map +1 -0
- package/dist/dep/emissionFilter.d.ts +70 -0
- package/dist/dep/emissionFilter.d.ts.map +1 -0
- package/dist/dep/emissionFilter.js +105 -0
- package/dist/dep/emissionFilter.js.map +1 -0
- package/dist/dep/index.d.ts +8 -0
- package/dist/dep/index.d.ts.map +1 -0
- package/dist/dep/index.js +7 -0
- package/dist/dep/index.js.map +1 -0
- package/dist/emit/alert.js.map +1 -1
- package/dist/emit/alertConditionEmission.js.map +1 -1
- package/dist/emit/applyPlotOverride.d.ts +24 -0
- package/dist/emit/applyPlotOverride.d.ts.map +1 -0
- package/dist/emit/applyPlotOverride.js +48 -0
- package/dist/emit/applyPlotOverride.js.map +1 -0
- package/dist/emit/draw/annotations/arrow.js +1 -1
- package/dist/emit/draw/annotations/arrow.js.map +1 -1
- package/dist/emit/draw/annotations/arrowMarkDown.js +1 -1
- package/dist/emit/draw/annotations/arrowMarkDown.js.map +1 -1
- package/dist/emit/draw/annotations/arrowMarkUp.js +1 -1
- package/dist/emit/draw/annotations/arrowMarkUp.js.map +1 -1
- package/dist/emit/draw/annotations/arrowMarker.js +1 -1
- package/dist/emit/draw/annotations/arrowMarker.js.map +1 -1
- package/dist/emit/draw/annotations/text.js +1 -1
- package/dist/emit/draw/annotations/text.js.map +1 -1
- package/dist/emit/draw/boxes/circle.js +1 -1
- package/dist/emit/draw/boxes/circle.js.map +1 -1
- package/dist/emit/draw/boxes/ellipse.d.ts +1 -1
- package/dist/emit/draw/boxes/ellipse.js +1 -1
- package/dist/emit/draw/boxes/ellipse.js.map +1 -1
- package/dist/emit/draw/boxes/marker.js +1 -1
- package/dist/emit/draw/boxes/marker.js.map +1 -1
- package/dist/emit/draw/boxes/path.d.ts +1 -1
- package/dist/emit/draw/boxes/path.js +1 -1
- package/dist/emit/draw/boxes/path.js.map +1 -1
- package/dist/emit/draw/boxes/polyline.d.ts +1 -1
- package/dist/emit/draw/boxes/polyline.js +1 -1
- package/dist/emit/draw/boxes/polyline.js.map +1 -1
- package/dist/emit/draw/boxes/rectangle.js +1 -1
- package/dist/emit/draw/boxes/rectangle.js.map +1 -1
- package/dist/emit/draw/boxes/rotatedRectangle.js +1 -1
- package/dist/emit/draw/boxes/rotatedRectangle.js.map +1 -1
- package/dist/emit/draw/boxes/triangle.d.ts +1 -1
- package/dist/emit/draw/boxes/triangle.js +1 -1
- package/dist/emit/draw/boxes/triangle.js.map +1 -1
- package/dist/emit/draw/channels/disjointChannel.js +1 -1
- package/dist/emit/draw/channels/disjointChannel.js.map +1 -1
- package/dist/emit/draw/channels/flatTopBottom.d.ts +1 -2
- package/dist/emit/draw/channels/flatTopBottom.d.ts.map +1 -1
- package/dist/emit/draw/channels/flatTopBottom.js +1 -1
- package/dist/emit/draw/channels/flatTopBottom.js.map +1 -1
- package/dist/emit/draw/channels/regressionTrend.d.ts +3 -4
- package/dist/emit/draw/channels/regressionTrend.d.ts.map +1 -1
- package/dist/emit/draw/channels/regressionTrend.js +1 -1
- package/dist/emit/draw/channels/regressionTrend.js.map +1 -1
- package/dist/emit/draw/channels/trendChannel.js +1 -1
- package/dist/emit/draw/channels/trendChannel.js.map +1 -1
- package/dist/emit/draw/containers/frame.d.ts +1 -1
- package/dist/emit/draw/containers/frame.js +2 -2
- package/dist/emit/draw/containers/frame.js.map +1 -1
- package/dist/emit/draw/containers/group.d.ts +1 -2
- package/dist/emit/draw/containers/group.d.ts.map +1 -1
- package/dist/emit/draw/containers/group.js +2 -2
- package/dist/emit/draw/containers/group.js.map +1 -1
- package/dist/emit/draw/curves/arc.js +1 -1
- package/dist/emit/draw/curves/arc.js.map +1 -1
- package/dist/emit/draw/curves/brush.js +1 -1
- package/dist/emit/draw/curves/brush.js.map +1 -1
- package/dist/emit/draw/curves/curve.js +1 -1
- package/dist/emit/draw/curves/curve.js.map +1 -1
- package/dist/emit/draw/curves/doubleCurve.js +1 -1
- package/dist/emit/draw/curves/doubleCurve.js.map +1 -1
- package/dist/emit/draw/curves/highlighter.js +1 -1
- package/dist/emit/draw/curves/highlighter.js.map +1 -1
- package/dist/emit/draw/curves/pen.js +1 -1
- package/dist/emit/draw/curves/pen.js.map +1 -1
- package/dist/emit/draw/cycles/cyclicLines.js +1 -1
- package/dist/emit/draw/cycles/cyclicLines.js.map +1 -1
- package/dist/emit/draw/cycles/sineLine.js +1 -1
- package/dist/emit/draw/cycles/sineLine.js.map +1 -1
- package/dist/emit/draw/cycles/timeCycles.js +1 -1
- package/dist/emit/draw/cycles/timeCycles.js.map +1 -1
- package/dist/emit/draw/elliott/elliottCorrectionWave.js +1 -1
- package/dist/emit/draw/elliott/elliottCorrectionWave.js.map +1 -1
- package/dist/emit/draw/elliott/elliottDoubleCombo.js +1 -1
- package/dist/emit/draw/elliott/elliottDoubleCombo.js.map +1 -1
- package/dist/emit/draw/elliott/elliottImpulseWave.js +1 -1
- package/dist/emit/draw/elliott/elliottImpulseWave.js.map +1 -1
- package/dist/emit/draw/elliott/elliottTriangleWave.js +1 -1
- package/dist/emit/draw/elliott/elliottTriangleWave.js.map +1 -1
- package/dist/emit/draw/elliott/elliottTripleCombo.js +1 -1
- package/dist/emit/draw/elliott/elliottTripleCombo.js.map +1 -1
- package/dist/emit/draw/fibA/fibChannel.js +1 -1
- package/dist/emit/draw/fibA/fibChannel.js.map +1 -1
- package/dist/emit/draw/fibA/fibRetracement.js +1 -1
- package/dist/emit/draw/fibA/fibRetracement.js.map +1 -1
- package/dist/emit/draw/fibA/fibTimeZone.d.ts +1 -2
- package/dist/emit/draw/fibA/fibTimeZone.d.ts.map +1 -1
- package/dist/emit/draw/fibA/fibTimeZone.js +1 -1
- package/dist/emit/draw/fibA/fibTimeZone.js.map +1 -1
- package/dist/emit/draw/fibA/fibTrendExtension.js +1 -1
- package/dist/emit/draw/fibA/fibTrendExtension.js.map +1 -1
- package/dist/emit/draw/fibA/fibWedge.js +1 -1
- package/dist/emit/draw/fibA/fibWedge.js.map +1 -1
- package/dist/emit/draw/fibB/fibCircles.d.ts +1 -2
- package/dist/emit/draw/fibB/fibCircles.d.ts.map +1 -1
- package/dist/emit/draw/fibB/fibCircles.js +1 -1
- package/dist/emit/draw/fibB/fibCircles.js.map +1 -1
- package/dist/emit/draw/fibB/fibSpeedArcs.js +1 -1
- package/dist/emit/draw/fibB/fibSpeedArcs.js.map +1 -1
- package/dist/emit/draw/fibB/fibSpeedFan.js +1 -1
- package/dist/emit/draw/fibB/fibSpeedFan.js.map +1 -1
- package/dist/emit/draw/fibB/fibSpiral.d.ts +1 -2
- package/dist/emit/draw/fibB/fibSpiral.d.ts.map +1 -1
- package/dist/emit/draw/fibB/fibSpiral.js +1 -1
- package/dist/emit/draw/fibB/fibSpiral.js.map +1 -1
- package/dist/emit/draw/fibB/fibTrendTime.d.ts +1 -2
- package/dist/emit/draw/fibB/fibTrendTime.d.ts.map +1 -1
- package/dist/emit/draw/fibB/fibTrendTime.js +1 -1
- package/dist/emit/draw/fibB/fibTrendTime.js.map +1 -1
- package/dist/emit/draw/gann/gannBox.js +1 -1
- package/dist/emit/draw/gann/gannBox.js.map +1 -1
- package/dist/emit/draw/gann/gannFan.js +1 -1
- package/dist/emit/draw/gann/gannFan.js.map +1 -1
- package/dist/emit/draw/gann/gannSquare.js +1 -1
- package/dist/emit/draw/gann/gannSquare.js.map +1 -1
- package/dist/emit/draw/gann/gannSquareFixed.js +1 -1
- package/dist/emit/draw/gann/gannSquareFixed.js.map +1 -1
- package/dist/emit/draw/handle.d.ts +2 -2
- package/dist/emit/draw/handle.js +2 -2
- package/dist/emit/draw/handle.js.map +1 -1
- package/dist/emit/draw/index.js.map +1 -1
- package/dist/emit/draw/lines/crossLine.js +1 -1
- package/dist/emit/draw/lines/crossLine.js.map +1 -1
- package/dist/emit/draw/lines/horizontalLine.d.ts +1 -1
- package/dist/emit/draw/lines/horizontalLine.js +1 -1
- package/dist/emit/draw/lines/horizontalLine.js.map +1 -1
- package/dist/emit/draw/lines/horizontalRay.js +1 -1
- package/dist/emit/draw/lines/horizontalRay.js.map +1 -1
- package/dist/emit/draw/lines/line.d.ts +1 -1
- package/dist/emit/draw/lines/line.d.ts.map +1 -1
- package/dist/emit/draw/lines/line.js +2 -3
- package/dist/emit/draw/lines/line.js.map +1 -1
- package/dist/emit/draw/lines/trendAngle.js +1 -1
- package/dist/emit/draw/lines/trendAngle.js.map +1 -1
- package/dist/emit/draw/lines/verticalLine.js +1 -1
- package/dist/emit/draw/lines/verticalLine.js.map +1 -1
- package/dist/emit/draw/namespace.d.ts +1 -1
- package/dist/emit/draw/namespace.js +1 -1
- package/dist/emit/draw/namespace.js.map +1 -1
- package/dist/emit/draw/patterns/abcdPattern.js +1 -1
- package/dist/emit/draw/patterns/abcdPattern.js.map +1 -1
- package/dist/emit/draw/patterns/cypherPattern.d.ts +1 -2
- package/dist/emit/draw/patterns/cypherPattern.d.ts.map +1 -1
- package/dist/emit/draw/patterns/cypherPattern.js +1 -1
- package/dist/emit/draw/patterns/cypherPattern.js.map +1 -1
- package/dist/emit/draw/patterns/headAndShoulders.js +1 -1
- package/dist/emit/draw/patterns/headAndShoulders.js.map +1 -1
- package/dist/emit/draw/patterns/threeDrivesPattern.js +1 -1
- package/dist/emit/draw/patterns/threeDrivesPattern.js.map +1 -1
- package/dist/emit/draw/patterns/trianglePattern.d.ts +1 -1
- package/dist/emit/draw/patterns/trianglePattern.js +1 -1
- package/dist/emit/draw/patterns/trianglePattern.js.map +1 -1
- package/dist/emit/draw/patterns/xabcdPattern.js +1 -1
- package/dist/emit/draw/patterns/xabcdPattern.js.map +1 -1
- package/dist/emit/draw/pitchforks/pitchfan.js +1 -1
- package/dist/emit/draw/pitchforks/pitchfan.js.map +1 -1
- package/dist/emit/draw/pitchforks/pitchfork.d.ts +1 -1
- package/dist/emit/draw/pitchforks/pitchfork.js +2 -2
- package/dist/emit/draw/pitchforks/pitchfork.js.map +1 -1
- package/dist/emit/draw/pushDrawing.js.map +1 -1
- package/dist/emit/draw/subIdAllocator.d.ts +1 -1
- package/dist/emit/draw/subIdAllocator.js +1 -1
- package/dist/emit/draw/subIdAllocator.js.map +1 -1
- package/dist/emit/draw/table/table.d.ts +1 -1
- package/dist/emit/draw/table/table.js.map +1 -1
- package/dist/emit/emissionsQueue.js.map +1 -1
- package/dist/emit/hash.js.map +1 -1
- package/dist/emit/hline.d.ts +6 -4
- package/dist/emit/hline.d.ts.map +1 -1
- package/dist/emit/hline.js +5 -2
- package/dist/emit/hline.js.map +1 -1
- package/dist/emit/index.d.ts +2 -1
- package/dist/emit/index.d.ts.map +1 -1
- package/dist/emit/index.js +2 -1
- package/dist/emit/index.js.map +1 -1
- package/dist/emit/logEmission.js.map +1 -1
- package/dist/emit/paneResolver.d.ts +52 -11
- package/dist/emit/paneResolver.d.ts.map +1 -1
- package/dist/emit/paneResolver.js +69 -26
- package/dist/emit/paneResolver.js.map +1 -1
- package/dist/emit/plot.d.ts.map +1 -1
- package/dist/emit/plot.js +2 -1
- package/dist/emit/plot.js.map +1 -1
- package/dist/emit/runtimeError.js.map +1 -1
- package/dist/execution/dispose.d.ts.map +1 -1
- package/dist/execution/dispose.js +7 -0
- package/dist/execution/dispose.js.map +1 -1
- package/dist/execution/drain.js.map +1 -1
- package/dist/execution/index.js.map +1 -1
- package/dist/execution/onBarClose.d.ts +9 -13
- package/dist/execution/onBarClose.d.ts.map +1 -1
- package/dist/execution/onBarClose.js +28 -59
- package/dist/execution/onBarClose.js.map +1 -1
- package/dist/execution/onBarTick.d.ts +4 -10
- package/dist/execution/onBarTick.d.ts.map +1 -1
- package/dist/execution/onBarTick.js +24 -57
- package/dist/execution/onBarTick.js.map +1 -1
- package/dist/execution/onHistory.js.map +1 -1
- package/dist/execution/runComputeStep.d.ts +68 -0
- package/dist/execution/runComputeStep.d.ts.map +1 -0
- package/dist/execution/runComputeStep.js +96 -0
- package/dist/execution/runComputeStep.js.map +1 -0
- package/dist/execution/secondaryStream.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/inputs/index.js.map +1 -1
- package/dist/inputs/resolveInputs.js.map +1 -1
- package/dist/internal.d.ts +12 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +14 -0
- package/dist/internal.js.map +1 -0
- package/dist/persistentStateStore.js.map +1 -1
- package/dist/persistentStateStore.runtime.d.ts +18 -4
- package/dist/persistentStateStore.runtime.d.ts.map +1 -1
- package/dist/persistentStateStore.runtime.js +111 -18
- package/dist/persistentStateStore.runtime.js.map +1 -1
- package/dist/persistentStateStore.validate.d.ts +11 -1
- package/dist/persistentStateStore.validate.d.ts.map +1 -1
- package/dist/persistentStateStore.validate.js +32 -3
- package/dist/persistentStateStore.validate.js.map +1 -1
- package/dist/primitives.js.map +1 -1
- package/dist/request/alignHtfSeriesCache.js.map +1 -1
- package/dist/request/alignHtfSeriesToLtf.d.ts +2 -2
- package/dist/request/alignHtfSeriesToLtf.js +2 -2
- package/dist/request/alignHtfSeriesToLtf.js.map +1 -1
- package/dist/request/bucketLtfBarsByMainContainment.js.map +1 -1
- package/dist/request/bucketLtfBarsCache.js.map +1 -1
- package/dist/request/index.js.map +1 -1
- package/dist/request/lowerTf.js.map +1 -1
- package/dist/request/pushOnce.js.map +1 -1
- package/dist/request/requestNamespace.js.map +1 -1
- package/dist/request/security.js.map +1 -1
- package/dist/request/streamBars.js.map +1 -1
- package/dist/ringBuffer.d.ts +2 -2
- package/dist/ringBuffer.js +1 -1
- package/dist/ringBuffer.js.map +1 -1
- package/dist/runtimeContext.d.ts +65 -7
- package/dist/runtimeContext.d.ts.map +1 -1
- package/dist/runtimeContext.js.map +1 -1
- package/dist/seriesView.d.ts +1 -1
- package/dist/seriesView.js +1 -1
- package/dist/seriesView.js.map +1 -1
- package/dist/state/index.js.map +1 -1
- package/dist/state/lifecycle.js.map +1 -1
- package/dist/state/stateNamespace.d.ts.map +1 -1
- package/dist/state/stateNamespace.js +13 -2
- package/dist/state/stateNamespace.js.map +1 -1
- package/dist/state/stateSlot.js.map +1 -1
- package/dist/stateStore.d.ts +7 -4
- package/dist/stateStore.d.ts.map +1 -1
- package/dist/stateStore.js.map +1 -1
- package/dist/streamState.d.ts +1 -1
- package/dist/streamState.js +1 -1
- package/dist/streamState.js.map +1 -1
- package/dist/ta/adl.js +2 -2
- package/dist/ta/adl.js.map +1 -1
- package/dist/ta/adr.d.ts +3 -3
- package/dist/ta/adr.js +5 -5
- package/dist/ta/adr.js.map +1 -1
- package/dist/ta/adx.d.ts +1 -1
- package/dist/ta/adx.js +3 -3
- package/dist/ta/adx.js.map +1 -1
- package/dist/ta/alma.d.ts +3 -3
- package/dist/ta/alma.js +5 -5
- package/dist/ta/alma.js.map +1 -1
- package/dist/ta/anchoredVolumeProfile.js.map +1 -1
- package/dist/ta/anchoredVwap.d.ts +1 -1
- package/dist/ta/anchoredVwap.js +3 -3
- package/dist/ta/anchoredVwap.js.map +1 -1
- package/dist/ta/ao.js +2 -2
- package/dist/ta/ao.js.map +1 -1
- package/dist/ta/aroon.js +2 -2
- package/dist/ta/aroon.js.map +1 -1
- package/dist/ta/aroonOsc.js +2 -2
- package/dist/ta/aroonOsc.js.map +1 -1
- package/dist/ta/atr.d.ts +1 -1
- package/dist/ta/atr.js +3 -3
- package/dist/ta/atr.js.map +1 -1
- package/dist/ta/barssince.js +1 -1
- package/dist/ta/barssince.js.map +1 -1
- package/dist/ta/bb.d.ts +1 -1
- package/dist/ta/bb.js +3 -3
- package/dist/ta/bb.js.map +1 -1
- package/dist/ta/bbPercentB.js +2 -2
- package/dist/ta/bbPercentB.js.map +1 -1
- package/dist/ta/bbw.js +2 -2
- package/dist/ta/bbw.js.map +1 -1
- package/dist/ta/bop.js +2 -2
- package/dist/ta/bop.js.map +1 -1
- package/dist/ta/cci.js +2 -2
- package/dist/ta/cci.js.map +1 -1
- package/dist/ta/chaikinOsc.d.ts +1 -1
- package/dist/ta/chaikinOsc.js +3 -3
- package/dist/ta/chaikinOsc.js.map +1 -1
- package/dist/ta/chandeKrollStop.d.ts +1 -1
- package/dist/ta/chandeKrollStop.js +3 -3
- package/dist/ta/chandeKrollStop.js.map +1 -1
- package/dist/ta/chandelier.d.ts +1 -1
- package/dist/ta/chandelier.js +3 -3
- package/dist/ta/chandelier.js.map +1 -1
- package/dist/ta/change.js +1 -1
- package/dist/ta/change.js.map +1 -1
- package/dist/ta/chop.js +2 -2
- package/dist/ta/chop.js.map +1 -1
- package/dist/ta/cmf.js +2 -2
- package/dist/ta/cmf.js.map +1 -1
- package/dist/ta/cmo.js +2 -2
- package/dist/ta/cmo.js.map +1 -1
- package/dist/ta/connorsRsi.d.ts +1 -1
- package/dist/ta/connorsRsi.js +3 -3
- package/dist/ta/connorsRsi.js.map +1 -1
- package/dist/ta/coppock.js +2 -2
- package/dist/ta/coppock.js.map +1 -1
- package/dist/ta/crossover.d.ts +1 -1
- package/dist/ta/crossover.js +2 -2
- package/dist/ta/crossover.js.map +1 -1
- package/dist/ta/crossunder.d.ts +1 -1
- package/dist/ta/crossunder.js +2 -2
- package/dist/ta/crossunder.js.map +1 -1
- package/dist/ta/dema.js +2 -2
- package/dist/ta/dema.js.map +1 -1
- package/dist/ta/dmi.d.ts +1 -1
- package/dist/ta/dmi.js +3 -3
- package/dist/ta/dmi.js.map +1 -1
- package/dist/ta/donchian.js +2 -2
- package/dist/ta/donchian.js.map +1 -1
- package/dist/ta/dpo.js +2 -2
- package/dist/ta/dpo.js.map +1 -1
- package/dist/ta/ema.d.ts +1 -1
- package/dist/ta/ema.js +3 -3
- package/dist/ta/ema.js.map +1 -1
- package/dist/ta/envelope.js +2 -2
- package/dist/ta/envelope.js.map +1 -1
- package/dist/ta/eom.d.ts +1 -1
- package/dist/ta/eom.js +3 -3
- package/dist/ta/eom.js.map +1 -1
- package/dist/ta/fisher.js +2 -2
- package/dist/ta/fisher.js.map +1 -1
- package/dist/ta/fixedRangeVolumeProfile.js.map +1 -1
- package/dist/ta/highest.js +1 -1
- package/dist/ta/highest.js.map +1 -1
- package/dist/ta/historicalVolatility.d.ts +1 -1
- package/dist/ta/historicalVolatility.js +3 -3
- package/dist/ta/historicalVolatility.js.map +1 -1
- package/dist/ta/hma.js +2 -2
- package/dist/ta/hma.js.map +1 -1
- package/dist/ta/ichimoku.d.ts +1 -1
- package/dist/ta/ichimoku.js +3 -3
- package/dist/ta/ichimoku.js.map +1 -1
- package/dist/ta/index.js.map +1 -1
- package/dist/ta/kama.js +2 -2
- package/dist/ta/kama.js.map +1 -1
- package/dist/ta/keltner.js +2 -2
- package/dist/ta/keltner.js.map +1 -1
- package/dist/ta/klinger.js +2 -2
- package/dist/ta/klinger.js.map +1 -1
- package/dist/ta/kst.js +2 -2
- package/dist/ta/kst.js.map +1 -1
- package/dist/ta/lib/adxFromDi.js +2 -2
- package/dist/ta/lib/adxFromDi.js.map +1 -1
- package/dist/ta/lib/applyOffset.js +2 -2
- package/dist/ta/lib/applyOffset.js.map +1 -1
- package/dist/ta/lib/computeMa.js +2 -2
- package/dist/ta/lib/computeMa.js.map +1 -1
- package/dist/ta/lib/computeMaOfFloat64.js +2 -2
- package/dist/ta/lib/computeMaOfFloat64.js.map +1 -1
- package/dist/ta/lib/directionalState.js +2 -2
- package/dist/ta/lib/directionalState.js.map +1 -1
- package/dist/ta/lib/donchianMid.js +2 -2
- package/dist/ta/lib/donchianMid.js.map +1 -1
- package/dist/ta/lib/emaFloat64.js +2 -2
- package/dist/ta/lib/emaFloat64.js.map +1 -1
- package/dist/ta/lib/linearRegression.js +2 -2
- package/dist/ta/lib/linearRegression.js.map +1 -1
- package/dist/ta/lib/maTypes.js.map +1 -1
- package/dist/ta/lib/pearson.js +2 -2
- package/dist/ta/lib/pearson.js.map +1 -1
- package/dist/ta/lib/pickCandleSource.js +2 -2
- package/dist/ta/lib/pickCandleSource.js.map +1 -1
- package/dist/ta/lib/readSourceField.js +2 -2
- package/dist/ta/lib/readSourceField.js.map +1 -1
- package/dist/ta/lib/rollingStddev.js +2 -2
- package/dist/ta/lib/rollingStddev.js.map +1 -1
- package/dist/ta/lib/smaFloat64.js +2 -2
- package/dist/ta/lib/smaFloat64.js.map +1 -1
- package/dist/ta/lib/smmaFloat64.js +2 -2
- package/dist/ta/lib/smmaFloat64.js.map +1 -1
- package/dist/ta/lib/sourceValue.js.map +1 -1
- package/dist/ta/lib/trSeries.js +2 -2
- package/dist/ta/lib/trSeries.js.map +1 -1
- package/dist/ta/lib/volume-profile/bucketEdges.js.map +1 -1
- package/dist/ta/lib/volume-profile/bucketizeVolume.js.map +1 -1
- package/dist/ta/lib/volume-profile/developingSeries.js.map +1 -1
- package/dist/ta/lib/volume-profile/index.js.map +1 -1
- package/dist/ta/lib/volume-profile/intercept.js.map +1 -1
- package/dist/ta/lib/volume-profile/scaffold.js.map +1 -1
- package/dist/ta/lib/volume-profile/tooHeavy.js.map +1 -1
- package/dist/ta/lib/volume-profile/types.js.map +1 -1
- package/dist/ta/lib/volume-profile/valueArea.js.map +1 -1
- package/dist/ta/lib/volume-profile/volumeProfileShared.js.map +1 -1
- package/dist/ta/lib/vwmaFloat64.js +2 -2
- package/dist/ta/lib/vwmaFloat64.js.map +1 -1
- package/dist/ta/lib/wilderDirectional.js +2 -2
- package/dist/ta/lib/wilderDirectional.js.map +1 -1
- package/dist/ta/lib/wilderSmoothing.js +2 -2
- package/dist/ta/lib/wilderSmoothing.js.map +1 -1
- package/dist/ta/lib/wmaFloat64.js +2 -2
- package/dist/ta/lib/wmaFloat64.js.map +1 -1
- package/dist/ta/lowest.js +1 -1
- package/dist/ta/lowest.js.map +1 -1
- package/dist/ta/lsma.js +2 -2
- package/dist/ta/lsma.js.map +1 -1
- package/dist/ta/maRibbon.js +2 -2
- package/dist/ta/maRibbon.js.map +1 -1
- package/dist/ta/macd.d.ts +1 -1
- package/dist/ta/macd.js +4 -4
- package/dist/ta/macd.js.map +1 -1
- package/dist/ta/massIndex.d.ts +1 -1
- package/dist/ta/massIndex.js +3 -3
- package/dist/ta/massIndex.js.map +1 -1
- package/dist/ta/mcginley.js +2 -2
- package/dist/ta/mcginley.js.map +1 -1
- package/dist/ta/median.js +2 -2
- package/dist/ta/median.js.map +1 -1
- package/dist/ta/mfi.d.ts +1 -1
- package/dist/ta/mfi.js +3 -3
- package/dist/ta/mfi.js.map +1 -1
- package/dist/ta/momentum.js +2 -2
- package/dist/ta/momentum.js.map +1 -1
- package/dist/ta/netVolume.d.ts +1 -1
- package/dist/ta/netVolume.js +3 -3
- package/dist/ta/netVolume.js.map +1 -1
- package/dist/ta/nvi.d.ts +1 -1
- package/dist/ta/nvi.js +3 -3
- package/dist/ta/nvi.js.map +1 -1
- package/dist/ta/nz.js +1 -1
- package/dist/ta/nz.js.map +1 -1
- package/dist/ta/obv.js +2 -2
- package/dist/ta/obv.js.map +1 -1
- package/dist/ta/persistence.js.map +1 -1
- package/dist/ta/pivotsHighLow.js +2 -2
- package/dist/ta/pivotsHighLow.js.map +1 -1
- package/dist/ta/pivotsStandard.d.ts +1 -1
- package/dist/ta/pivotsStandard.js +3 -3
- package/dist/ta/pivotsStandard.js.map +1 -1
- package/dist/ta/pmo.js +2 -2
- package/dist/ta/pmo.js.map +1 -1
- package/dist/ta/ppo.d.ts +1 -1
- package/dist/ta/ppo.js +3 -3
- package/dist/ta/ppo.js.map +1 -1
- package/dist/ta/psar.js +2 -2
- package/dist/ta/psar.js.map +1 -1
- package/dist/ta/pvi.d.ts +1 -1
- package/dist/ta/pvi.js +3 -3
- package/dist/ta/pvi.js.map +1 -1
- package/dist/ta/pvo.d.ts +1 -1
- package/dist/ta/pvo.js +3 -3
- package/dist/ta/pvo.js.map +1 -1
- package/dist/ta/pvt.d.ts +1 -1
- package/dist/ta/pvt.js +3 -3
- package/dist/ta/pvt.js.map +1 -1
- package/dist/ta/registry.js.map +1 -1
- package/dist/ta/roc.js +2 -2
- package/dist/ta/roc.js.map +1 -1
- package/dist/ta/rsi.d.ts +1 -1
- package/dist/ta/rsi.js +3 -3
- package/dist/ta/rsi.js.map +1 -1
- package/dist/ta/rvgi.js +2 -2
- package/dist/ta/rvgi.js.map +1 -1
- package/dist/ta/rvi.d.ts +1 -1
- package/dist/ta/rvi.js +3 -3
- package/dist/ta/rvi.js.map +1 -1
- package/dist/ta/sessionVolumeProfile.js.map +1 -1
- package/dist/ta/sma.d.ts +1 -1
- package/dist/ta/sma.js +3 -3
- package/dist/ta/sma.js.map +1 -1
- package/dist/ta/smi.js +2 -2
- package/dist/ta/smi.js.map +1 -1
- package/dist/ta/smma.js +2 -2
- package/dist/ta/smma.js.map +1 -1
- package/dist/ta/stdev.d.ts +1 -1
- package/dist/ta/stdev.js +3 -3
- package/dist/ta/stdev.js.map +1 -1
- package/dist/ta/stoch.js +2 -2
- package/dist/ta/stoch.js.map +1 -1
- package/dist/ta/stochRsi.js +2 -2
- package/dist/ta/stochRsi.js.map +1 -1
- package/dist/ta/supertrend.d.ts +1 -1
- package/dist/ta/supertrend.js +3 -3
- package/dist/ta/supertrend.js.map +1 -1
- package/dist/ta/tema.js +2 -2
- package/dist/ta/tema.js.map +1 -1
- package/dist/ta/trendStrengthIndex.d.ts +2 -2
- package/dist/ta/trendStrengthIndex.js +4 -4
- package/dist/ta/trendStrengthIndex.js.map +1 -1
- package/dist/ta/trix.d.ts +1 -1
- package/dist/ta/trix.js +3 -3
- package/dist/ta/trix.js.map +1 -1
- package/dist/ta/tsi.js +2 -2
- package/dist/ta/tsi.js.map +1 -1
- package/dist/ta/ulcerIndex.js +2 -2
- package/dist/ta/ulcerIndex.js.map +1 -1
- package/dist/ta/ultimateOsc.js +2 -2
- package/dist/ta/ultimateOsc.js.map +1 -1
- package/dist/ta/valuewhen.js +1 -1
- package/dist/ta/valuewhen.js.map +1 -1
- package/dist/ta/visibleRangeVolumeProfile.d.ts +2 -2
- package/dist/ta/visibleRangeVolumeProfile.js +2 -2
- package/dist/ta/visibleRangeVolumeProfile.js.map +1 -1
- package/dist/ta/vol.js +2 -2
- package/dist/ta/vol.js.map +1 -1
- package/dist/ta/volatilityStop.d.ts +1 -1
- package/dist/ta/volatilityStop.js +3 -3
- package/dist/ta/volatilityStop.js.map +1 -1
- package/dist/ta/vortex.d.ts +1 -1
- package/dist/ta/vortex.js +3 -3
- package/dist/ta/vortex.js.map +1 -1
- package/dist/ta/vwap.d.ts +3 -3
- package/dist/ta/vwap.js +5 -5
- package/dist/ta/vwap.js.map +1 -1
- package/dist/ta/vwma.js +2 -2
- package/dist/ta/vwma.js.map +1 -1
- package/dist/ta/williamsFractal.js +2 -2
- package/dist/ta/williamsFractal.js.map +1 -1
- package/dist/ta/williamsR.js +2 -2
- package/dist/ta/williamsR.js.map +1 -1
- package/dist/ta/wma.js +2 -2
- package/dist/ta/wma.js.map +1 -1
- package/dist/ta/zigZag.js +2 -2
- package/dist/ta/zigZag.js.map +1 -1
- package/dist/views/barstateView.js.map +1 -1
- package/dist/views/index.js.map +1 -1
- package/dist/views/refreshRuntimeViews.js.map +1 -1
- package/dist/views/symInfoView.js.map +1 -1
- package/dist/views/timeframeView.js.map +1 -1
- package/package.json +7 -3
|
@@ -1,37 +1,46 @@
|
|
|
1
1
|
// Copyright (c) 2026 Invinite. Licensed under the MIT License.
|
|
2
2
|
// See the LICENSE file in the repo root for full license text.
|
|
3
3
|
import { pushDiagnostic } from "./emissionsQueue.js";
|
|
4
|
+
const SANITISE_PANE_KEY = /[^a-zA-Z0-9_-]/g;
|
|
4
5
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `
|
|
6
|
+
* Derive the stable non-overlay pane key for a script from its
|
|
7
|
+
* manifest name. The name is sanitised (`/[^a-zA-Z0-9_-]/g` → `-`) so
|
|
8
|
+
* it fits the `string` shape on `PlotEmission.pane` and cannot collide
|
|
9
|
+
* with the `script:` prefix structure (e.g. a `:` in the name becomes
|
|
10
|
+
* `-`); an empty name falls back to `"script:default"`. Both the
|
|
11
|
+
* primary runner and every dep / sibling sub-runner key off this so a
|
|
12
|
+
* script's distinct name yields a distinct subpane.
|
|
8
13
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
14
|
+
* @since 0.2
|
|
15
|
+
* @stable
|
|
16
|
+
* @example
|
|
17
|
+
* // resolveScriptPane({ name: "RSI Cross", ... }) === "script:RSI-Cross"
|
|
18
|
+
* // resolveScriptPane({ name: "", ... }) === "script:default"
|
|
19
|
+
*/
|
|
20
|
+
export function resolveScriptPane(manifest) {
|
|
21
|
+
const sanitised = manifest.name.replace(SANITISE_PANE_KEY, "-");
|
|
22
|
+
return `script:${sanitised === "" ? "default" : sanitised}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Resolve a script's mount-time default pane from `manifest.overlay`.
|
|
26
|
+
* `overlay` absent / `true` → `"overlay"` (the price pane); `overlay
|
|
27
|
+
* === false` → the script-owned subpane key from
|
|
28
|
+
* {@link resolveScriptPane}. The runner sets `RuntimeContext.defaultPane`
|
|
29
|
+
* to this once at mount; {@link resolvePane} reads it for any `plot()` /
|
|
30
|
+
* `hline()` call with no explicit `pane`.
|
|
13
31
|
*
|
|
14
|
-
* @since 0.
|
|
32
|
+
* @since 0.2
|
|
33
|
+
* @stable
|
|
15
34
|
* @example
|
|
16
|
-
* //
|
|
17
|
-
* //
|
|
18
|
-
* // pane === "overlay"
|
|
35
|
+
* // resolveDefaultPane({ name: "x", overlay: false, ... }) === "script:x"
|
|
36
|
+
* // resolveDefaultPane({ name: "x", ... }) === "overlay"
|
|
19
37
|
*/
|
|
20
|
-
export function
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (ctx.capabilities.subPanes >= 1)
|
|
25
|
-
|
|
26
|
-
kind: "diagnostic",
|
|
27
|
-
severity: "warning",
|
|
28
|
-
code: "unsupported-pane",
|
|
29
|
-
message: `Pane "${pane}" requested but Phase-1 runtime flattens to overlay.`,
|
|
30
|
-
slotId,
|
|
31
|
-
bar: ctx.barIndex(),
|
|
32
|
-
});
|
|
33
|
-
return "overlay";
|
|
34
|
-
}
|
|
38
|
+
export function resolveDefaultPane(manifest) {
|
|
39
|
+
return manifest.overlay === false ? resolveScriptPane(manifest) : "overlay";
|
|
40
|
+
}
|
|
41
|
+
function resolveNamedPane(pane, ctx, slotId) {
|
|
42
|
+
if (ctx.capabilities.subPanes >= 1)
|
|
43
|
+
return pane;
|
|
35
44
|
pushDiagnostic(ctx.emissions, {
|
|
36
45
|
kind: "diagnostic",
|
|
37
46
|
severity: "warning",
|
|
@@ -42,4 +51,38 @@ export function resolvePane(requested, ctx, slotId) {
|
|
|
42
51
|
});
|
|
43
52
|
return "overlay";
|
|
44
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Resolve the pane a `plot()` / `hline()` call routes to. Four
|
|
56
|
+
* branches:
|
|
57
|
+
* - `"overlay"` → `"overlay"` (the price pane; never folds).
|
|
58
|
+
* - `undefined` → `ctx.defaultPane` (the script's mount-time default
|
|
59
|
+
* from `manifest.overlay`).
|
|
60
|
+
* - `"new"` → `ctx.scriptPane` (one stable subpane per script, so
|
|
61
|
+
* every `"new"` callsite in a script joins the same subpane).
|
|
62
|
+
* - any other string → returned unchanged when
|
|
63
|
+
* `capabilities.subPanes >= 1`; otherwise folded to `"overlay"`
|
|
64
|
+
* with an `unsupported-pane` diagnostic (the bare-bones adapter
|
|
65
|
+
* compat path).
|
|
66
|
+
*
|
|
67
|
+
* The Phase-1 signature returned the literal `"overlay"` and folded every
|
|
68
|
+
* non-overlay request; the four-branch router widens the return type to
|
|
69
|
+
* `string` and the new `undefined` / `"new"` / named-pass-through
|
|
70
|
+
* branches arrive at `@since 0.2`.
|
|
71
|
+
*
|
|
72
|
+
* @since 0.2
|
|
73
|
+
* @stable
|
|
74
|
+
* @example
|
|
75
|
+
* // import { resolvePane } from "@invinite-org/chartlang-runtime/emit";
|
|
76
|
+
* // const pane = resolvePane("rsi", ctx, "demo.ts:1:1#0");
|
|
77
|
+
* // pane === "rsi" // when ctx.capabilities.subPanes >= 1
|
|
78
|
+
*/
|
|
79
|
+
export function resolvePane(requested, ctx, slotId) {
|
|
80
|
+
if (requested === "overlay")
|
|
81
|
+
return "overlay";
|
|
82
|
+
if (requested === undefined)
|
|
83
|
+
return ctx.defaultPane;
|
|
84
|
+
if (requested === "new")
|
|
85
|
+
return resolveNamedPane(ctx.scriptPane, ctx, slotId);
|
|
86
|
+
return resolveNamedPane(requested, ctx, slotId);
|
|
87
|
+
}
|
|
45
88
|
//# sourceMappingURL=paneResolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paneResolver.js","sourceRoot":"","sources":["../../src/emit/paneResolver.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;
|
|
1
|
+
{"version":3,"file":"paneResolver.js","sourceRoot":"","sources":["../../src/emit/paneResolver.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAE5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAwB;IACtD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAChE,OAAO,UAAU,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAwB;IACvD,OAAO,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,GAAmB,EAAE,MAAc;IACvE,IAAI,GAAG,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE;QAC1B,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,uCAAuC,IAAI,sBAAsB;QAC1E,MAAM;QACN,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;KACtB,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,WAAW,CACvB,SAA6B,EAC7B,GAAmB,EACnB,MAAc;IAEd,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,WAAW,CAAC;IACpD,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9E,OAAO,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { ScriptManifest } from \"@invinite-org/chartlang-core\";\n\nimport type { RuntimeContext } from \"../runtimeContext.js\";\nimport { pushDiagnostic } from \"./emissionsQueue.js\";\n\nconst SANITISE_PANE_KEY = /[^a-zA-Z0-9_-]/g;\n\n/**\n * Derive the stable non-overlay pane key for a script from its\n * manifest name. The name is sanitised (`/[^a-zA-Z0-9_-]/g` → `-`) so\n * it fits the `string` shape on `PlotEmission.pane` and cannot collide\n * with the `script:` prefix structure (e.g. a `:` in the name becomes\n * `-`); an empty name falls back to `\"script:default\"`. Both the\n * primary runner and every dep / sibling sub-runner key off this so a\n * script's distinct name yields a distinct subpane.\n *\n * @since 0.2\n * @stable\n * @example\n * // resolveScriptPane({ name: \"RSI Cross\", ... }) === \"script:RSI-Cross\"\n * // resolveScriptPane({ name: \"\", ... }) === \"script:default\"\n */\nexport function resolveScriptPane(manifest: ScriptManifest): string {\n const sanitised = manifest.name.replace(SANITISE_PANE_KEY, \"-\");\n return `script:${sanitised === \"\" ? \"default\" : sanitised}`;\n}\n\n/**\n * Resolve a script's mount-time default pane from `manifest.overlay`.\n * `overlay` absent / `true` → `\"overlay\"` (the price pane); `overlay\n * === false` → the script-owned subpane key from\n * {@link resolveScriptPane}. The runner sets `RuntimeContext.defaultPane`\n * to this once at mount; {@link resolvePane} reads it for any `plot()` /\n * `hline()` call with no explicit `pane`.\n *\n * @since 0.2\n * @stable\n * @example\n * // resolveDefaultPane({ name: \"x\", overlay: false, ... }) === \"script:x\"\n * // resolveDefaultPane({ name: \"x\", ... }) === \"overlay\"\n */\nexport function resolveDefaultPane(manifest: ScriptManifest): string {\n return manifest.overlay === false ? resolveScriptPane(manifest) : \"overlay\";\n}\n\nfunction resolveNamedPane(pane: string, ctx: RuntimeContext, slotId: string): string {\n if (ctx.capabilities.subPanes >= 1) return pane;\n pushDiagnostic(ctx.emissions, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"unsupported-pane\",\n message: `Adapter declares subPanes: 0; pane \"${pane}\" folded to overlay.`,\n slotId,\n bar: ctx.barIndex(),\n });\n return \"overlay\";\n}\n\n/**\n * Resolve the pane a `plot()` / `hline()` call routes to. Four\n * branches:\n * - `\"overlay\"` → `\"overlay\"` (the price pane; never folds).\n * - `undefined` → `ctx.defaultPane` (the script's mount-time default\n * from `manifest.overlay`).\n * - `\"new\"` → `ctx.scriptPane` (one stable subpane per script, so\n * every `\"new\"` callsite in a script joins the same subpane).\n * - any other string → returned unchanged when\n * `capabilities.subPanes >= 1`; otherwise folded to `\"overlay\"`\n * with an `unsupported-pane` diagnostic (the bare-bones adapter\n * compat path).\n *\n * The Phase-1 signature returned the literal `\"overlay\"` and folded every\n * non-overlay request; the four-branch router widens the return type to\n * `string` and the new `undefined` / `\"new\"` / named-pass-through\n * branches arrive at `@since 0.2`.\n *\n * @since 0.2\n * @stable\n * @example\n * // import { resolvePane } from \"@invinite-org/chartlang-runtime/emit\";\n * // const pane = resolvePane(\"rsi\", ctx, \"demo.ts:1:1#0\");\n * // pane === \"rsi\" // when ctx.capabilities.subPanes >= 1\n */\nexport function resolvePane(\n requested: string | undefined,\n ctx: RuntimeContext,\n slotId: string,\n): string {\n if (requested === \"overlay\") return \"overlay\";\n if (requested === undefined) return ctx.defaultPane;\n if (requested === \"new\") return resolveNamedPane(ctx.scriptPane, ctx, slotId);\n return resolveNamedPane(requested, ctx, slotId);\n}\n"]}
|
package/dist/emit/plot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plot.d.ts","sourceRoot":"","sources":["../../src/emit/plot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plot.d.ts","sourceRoot":"","sources":["../../src/emit/plot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAwHrE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;AAC5E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC"}
|
package/dist/emit/plot.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright (c) 2026 Invinite. Licensed under the MIT License.
|
|
2
2
|
// See the LICENSE file in the repo root for full license text.
|
|
3
3
|
import { ACTIVE_RUNTIME_CONTEXT } from "../runtimeContext.js";
|
|
4
|
+
import { applyPlotOverride } from "./applyPlotOverride.js";
|
|
4
5
|
import { pushDiagnostic, pushPlot } from "./emissionsQueue.js";
|
|
5
6
|
import { resolvePane } from "./paneResolver.js";
|
|
6
7
|
const OUTSIDE_CTX_MESSAGE = "plot called outside an active script step";
|
|
@@ -99,7 +100,7 @@ function plotImpl(ctx, slotId, value, opts) {
|
|
|
99
100
|
meta: {},
|
|
100
101
|
pane,
|
|
101
102
|
};
|
|
102
|
-
pushPlot(ctx.emissions, emission);
|
|
103
|
+
pushPlot(ctx.emissions, applyPlotOverride(emission, ctx.plotOverrides[slotId]));
|
|
103
104
|
}
|
|
104
105
|
/**
|
|
105
106
|
* Implementation signature for {@link plot}. Branches on
|
package/dist/emit/plot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plot.js","sourceRoot":"","sources":["../../src/emit/plot.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,sBAAsB,EAAuB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,mBAAmB,GAAG,2CAA2C,CAAC;AAExE,SAAS,cAAc,CAAC,CAAU;IAC9B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAChC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,YAAY,CAAC,KAA8B;IAChD,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IACnE,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED,SAAS,UAAU,CAAC,IAAc;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO;YACH,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO;SACvC,CAAC;IACN,CAAC;IACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,WAAW;YACZ,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;QAChE,KAAK,QAAQ;YACT,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACpE,KAAK,OAAO;YACR,OAAO;gBACH,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;aACxE,CAAC;QACN,KAAK,WAAW;YACZ,OAAO;gBACH,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;aACxE,CAAC;QACN,KAAK,OAAO;YACR,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3E,KAAK,iBAAiB;YAClB,OAAO;gBACH,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;aAC5D,CAAC;QACN,KAAK,cAAc;YACf,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACxD,KAAK,UAAU;YACX,OAAO;gBACH,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;aAClE,CAAC;QACN,KAAK,WAAW;YACZ,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACrD,KAAK,sBAAsB;YACvB,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACpE,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,iBAAiB;YAClB,OAAO;gBACH,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;gBAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO;aACvC,CAAC;IACV,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CACb,GAAmB,EACnB,MAAc,EACd,KAA8B,EAC9B,IAAc;IAEd,MAAM,KAAK,GAAc,UAAU,CAAC,IAAI,CAAC,CAAC;IAE1C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE;YAC1B,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,oCAAoC,KAAK,CAAC,IAAI,IAAI;YAC3D,MAAM;YACN,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;SACtB,CAAC,CAAC;QACH,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAiB;QAC3B,IAAI,EAAE,MAAM;QACZ,MAAM;QACN,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,KAAK;QACL,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;QACzB,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;QAC1B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QACzB,IAAI,EAAE,EAAE;QACR,IAAI;KACP,CAAC;IAEF,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AA6CD;;;;;;;;;GASG;AACH,MAAM,UAAU,IAAI,CAChB,IAAsC,EACtC,IAAyC,EACzC,IAAe;IAEf,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC/C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC"}
|
|
1
|
+
{"version":3,"file":"plot.js","sourceRoot":"","sources":["../../src/emit/plot.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { PlotEmission, PlotStyle } from \"@invinite-org/chartlang-adapter-kit\";\nimport type { PlotOpts, Series } from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT, type RuntimeContext } from \"../runtimeContext.js\";\nimport { applyPlotOverride } from \"./applyPlotOverride.js\";\nimport { pushDiagnostic, pushPlot } from \"./emissionsQueue.js\";\nimport { resolvePane } from \"./paneResolver.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"plot called outside an active script step\";\n\nfunction isSeriesNumber(v: unknown): v is Series<number> {\n return typeof v === \"object\" && v !== null && \"current\" in v;\n}\n\nfunction isNumberOrSeries(v: unknown): v is number | Series<number> {\n return typeof v === \"number\" || isSeriesNumber(v);\n}\n\nfunction resolveValue(value: number | Series<number>): number | null {\n const resolved = typeof value === \"number\" ? value : value.current;\n return Number.isFinite(resolved) ? resolved : null;\n}\n\nfunction buildStyle(opts: PlotOpts): PlotStyle {\n const style = opts.style;\n if (style === undefined) {\n return {\n kind: \"line\",\n lineWidth: opts.lineWidth ?? 1,\n lineStyle: opts.lineStyle ?? \"solid\",\n };\n }\n switch (style.kind) {\n case \"histogram\":\n return { kind: \"histogram\", baseline: style.baseline ?? 0 };\n case \"marker\":\n return { kind: \"marker\", shape: style.shape, size: style.size };\n case \"shape\":\n return {\n kind: \"shape\",\n shape: style.shape,\n size: style.size,\n ...(style.location === undefined ? {} : { location: style.location }),\n };\n case \"character\":\n return {\n kind: \"character\",\n char: style.char,\n size: style.size,\n ...(style.location === undefined ? {} : { location: style.location }),\n };\n case \"arrow\":\n return { kind: \"arrow\", direction: style.direction, size: style.size };\n case \"candle-override\":\n return {\n kind: \"candle-override\",\n bull: style.bull,\n bear: style.bear,\n ...(style.doji === undefined ? {} : { doji: style.doji }),\n };\n case \"bar-override\":\n return { kind: \"bar-override\", color: style.color };\n case \"bg-color\":\n return {\n kind: \"bg-color\",\n color: style.color,\n ...(style.transp === undefined ? {} : { transp: style.transp }),\n };\n case \"bar-color\":\n return { kind: \"bar-color\", color: style.color };\n case \"horizontal-histogram\":\n return { kind: \"horizontal-histogram\", buckets: style.buckets };\n case \"line\":\n case \"step-line\":\n case \"horizontal-line\":\n return {\n kind: style.kind,\n lineWidth: opts.lineWidth ?? 1,\n lineStyle: opts.lineStyle ?? \"solid\",\n };\n }\n}\n\nfunction plotImpl(\n ctx: RuntimeContext,\n slotId: string,\n value: number | Series<number>,\n opts: PlotOpts,\n): void {\n const style: PlotStyle = buildStyle(opts);\n\n if (!ctx.capabilities.plots.has(style.kind)) {\n pushDiagnostic(ctx.emissions, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"unsupported-plot-kind\",\n message: `Adapter cannot render plot kind \"${style.kind}\".`,\n slotId,\n bar: ctx.barIndex(),\n });\n return;\n }\n\n const pane = resolvePane(opts.pane, ctx, slotId);\n\n const emission: PlotEmission = {\n kind: \"plot\",\n slotId,\n title: opts.title ?? \"\",\n style,\n bar: ctx.barIndex(),\n time: ctx.stream.bar.time,\n value: resolveValue(value),\n color: opts.color ?? null,\n meta: {},\n pane,\n };\n\n pushPlot(ctx.emissions, applyPlotOverride(emission, ctx.plotOverrides[slotId]));\n}\n\n/**\n * Emit a plot line for the current bar (script-facing overload).\n *\n * The runtime export is dual-signature: scripts call `plot(value, opts?)`\n * (the surface declared on `@invinite-org/chartlang-core`'s\n * `ComputeContext`), and Task 2's compiler transformer rewrites every\n * callsite to inject the compiler-issued slot id as the leading\n * argument — see the sibling `plot(slotId, value, opts?)` overload.\n * A direct invocation without a slot id (i.e. outside a compiled\n * bundle) throws the sentinel error.\n *\n * Plot kind is always `\"line\"` in Phase 1; `\"horizontal-line\"` ships\n * via the sibling {@link hline} primitive. Phase 2+ extends the `kind`\n * variants additively.\n *\n * @since 0.1\n * @example\n * import { defineIndicator, ta, plot } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"EMA(20)\",\n * apiVersion: 1,\n * compute({ bar, ta, plot }) {\n * plot(ta.ema(bar.close, 20), { color: \"#26a69a\", title: \"EMA\" });\n * },\n * });\n */\nexport function plot(value: number | Series<number>, opts?: PlotOpts): void;\n/**\n * Emit a plot line for the current bar (compiler-injected overload).\n *\n * Task 2's callsite-id transformer rewrites every script-side\n * `plot(value, opts?)` into `plot(slotId, value, opts?)`. The runtime\n * branches on `typeof arg1 === \"string\"` so the compiler-emitted\n * bundle dispatches here directly.\n *\n * @since 0.1\n * @example\n * // Internal — the compiler rewrites every script callsite, e.g.\n * // `plot(close)` becomes `plot(\"demo.chart.ts:5:13#0\", close)`.\n * // const fn: typeof plot = plot;\n * // void fn;\n */\nexport function plot(slotId: string, value: number | Series<number>, opts?: PlotOpts): void;\n/**\n * Implementation signature for {@link plot}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.1\n * @example\n * // const fn: typeof plot = plot;\n * // void fn;\n */\nexport function plot(\n arg1: string | number | Series<number>,\n arg2?: number | Series<number> | PlotOpts,\n arg3?: PlotOpts,\n): void {\n if (typeof arg1 !== \"string\") {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (!ctx) throw new Error(OUTSIDE_CTX_MESSAGE);\n if (!isNumberOrSeries(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n plotImpl(ctx, arg1, arg2, arg3 ?? {});\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeError.js","sourceRoot":"","sources":["../../src/emit/runtimeError.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,MAAM,sBAAsB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAO5D;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC3C,OAAO,CACH,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,UAAU,IAAI,GAAG;QAChB,GAAuC,CAAC,QAAQ,KAAK,sBAAsB;QAC5E,SAAS,IAAI,GAAG;QAChB,OAAQ,GAAsC,CAAC,OAAO,KAAK,QAAQ,CACtE,CAAC;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"runtimeError.js","sourceRoot":"","sources":["../../src/emit/runtimeError.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,MAAM,sBAAsB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAO5D;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC3C,OAAO,CACH,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,UAAU,IAAI,GAAG;QAChB,GAAuC,CAAC,QAAQ,KAAK,sBAAsB;QAC5E,SAAS,IAAI,GAAG;QAChB,OAAQ,GAAsC,CAAC,OAAO,KAAK,QAAQ,CACtE,CAAC;AACN,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nconst RUNTIME_ERROR_SENTINEL = Symbol(\"runtime-error-halt\");\n\ntype RuntimeErrorHalt = Readonly<{\n sentinel: typeof RUNTIME_ERROR_SENTINEL;\n message: string;\n}>;\n\n/**\n * Create the private sentinel thrown by `runtime.error(...)`.\n *\n * @since 0.5\n * @stable\n * @example\n * const halt = makeRuntimeErrorHalt(\"invariant\");\n * void halt;\n */\nexport function makeRuntimeErrorHalt(message: string): RuntimeErrorHalt {\n return Object.freeze({ sentinel: RUNTIME_ERROR_SENTINEL, message });\n}\n\n/**\n * Identify the private `runtime.error(...)` halt sentinel.\n *\n * @since 0.5\n * @stable\n * @example\n * const hit = isRuntimeErrorHalt(makeRuntimeErrorHalt(\"x\"));\n * void hit;\n */\nexport function isRuntimeErrorHalt(err: unknown): err is RuntimeErrorHalt {\n return (\n typeof err === \"object\" &&\n err !== null &&\n \"sentinel\" in err &&\n (err as { readonly sentinel?: unknown }).sentinel === RUNTIME_ERROR_SENTINEL &&\n \"message\" in err &&\n typeof (err as { readonly message?: unknown }).message === \"string\"\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispose.d.ts","sourceRoot":"","sources":["../../src/execution/dispose.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"dispose.d.ts","sourceRoot":"","sources":["../../src/execution/dispose.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAuChD"}
|
|
@@ -22,6 +22,13 @@ import { flushStateSlots } from "../state/index.js";
|
|
|
22
22
|
* // dispose(state);
|
|
23
23
|
*/
|
|
24
24
|
export function dispose(state) {
|
|
25
|
+
for (const dep of state.depRunners) {
|
|
26
|
+
dispose(dep.state);
|
|
27
|
+
}
|
|
28
|
+
for (const sibling of state.siblingRunners) {
|
|
29
|
+
dispose(sibling.state);
|
|
30
|
+
}
|
|
31
|
+
state.depOutputStore?.dispose();
|
|
25
32
|
flushStateSlots(state.runtimeContext);
|
|
26
33
|
for (const buf of Object.values(state.mainStream.ohlcv)) {
|
|
27
34
|
buf.reset();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispose.js","sourceRoot":"","sources":["../../src/execution/dispose.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAkB;IACtC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QAClE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACjC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC;IACjC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC1C,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAClD,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC9C,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACjD,KAAK,CAAC,cAAc,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;IACvD,KAAK,CAAC,cAAc,CAAC,4BAA4B,CAAC,KAAK,EAAE,CAAC;IAC1D,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACjD,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAClD,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC;IAC5D,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;IACvB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"dispose.js","sourceRoot":"","sources":["../../src/execution/dispose.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAkB;IACtC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC;IAChC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QAClE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACjC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC;IACjC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC1C,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAClD,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC9C,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACjD,KAAK,CAAC,cAAc,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;IACvD,KAAK,CAAC,cAAc,CAAC,4BAA4B,CAAC,KAAK,EAAE,CAAC;IAC1D,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACjD,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAClD,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC;IAC5D,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;IACvB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AACvB,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { RunnerState } from \"../createScriptRunner.js\";\nimport { flushStateSlots } from \"../state/index.js\";\n\n/**\n * Tear down the runner's buffers and state. After `dispose`:\n *\n * - Every OHLCV ring buffer's `length` is 0 (via `RingBufferLike.reset`).\n * - The `taSlots` map is empty (Task 7 primitives lose their hidden\n * state).\n * - Runtime `state.*` slots are flushed into `StateStore`, then the\n * runner-local slot map is cleared. The backing `StateStore` remains\n * host-owned so warm restart can restore the snapshot.\n * - The four emission arrays are reset to empty (`drain()` after\n * `dispose` returns empty arrays).\n *\n * `state.barIndex` is NOT reset — `dispose` is one-shot. Re-use after\n * `dispose` is not supported and not tested.\n *\n * @since 0.1\n * @example\n * // import { dispose } from \"@invinite-org/chartlang-runtime\";\n * // dispose(state);\n */\nexport function dispose(state: RunnerState): void {\n for (const dep of state.depRunners) {\n dispose(dep.state);\n }\n for (const sibling of state.siblingRunners) {\n dispose(sibling.state);\n }\n state.depOutputStore?.dispose();\n flushStateSlots(state.runtimeContext);\n for (const buf of Object.values(state.mainStream.ohlcv)) {\n buf.reset();\n }\n for (const stream of state.runtimeContext.secondaryStreams.values()) {\n for (const buf of Object.values(stream.ohlcv)) {\n buf.reset();\n }\n stream.taSlots.clear();\n }\n state.mainStream.taSlots.clear();\n state.emissions.plots = [];\n state.emissions.drawings = [];\n state.emissions.alerts = [];\n state.emissions.diagnostics = [];\n state.runtimeContext.drawingSlots.clear();\n state.runtimeContext.drawingSubIdCounters.clear();\n state.runtimeContext.stateSlots.clear();\n state.runtimeContext.secondaryStreams.clear();\n state.runtimeContext.requestSecurityBars.clear();\n state.runtimeContext.requestSecurityAlignments.clear();\n state.runtimeContext.requestSecurityAscendingBars.clear();\n state.runtimeContext.requestLowerTfViews.clear();\n state.runtimeContext.diagnosedRequestKeys.clear();\n state.runtimeContext.diagnosedInputKeys.clear();\n const counters = state.runtimeContext.drawingBucketCounters;\n counters.lines = 0;\n counters.labels = 0;\n counters.boxes = 0;\n counters.polylines = 0;\n counters.other = 0;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drain.js","sourceRoot":"","sources":["../../src/execution/drain.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAM/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,KAAK,CAAC,KAAkB;IACpC,MAAM,GAAG,GAAoB,MAAM,CAAC,MAAM,CAAC;QACvC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;QAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;QAClC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;QAC9B,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE;QACtD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;QAC1B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW;QACxC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;QAChC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;KAC/B,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,EAAE,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;IAC1B,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC;IACjC,OAAO,GAAG,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"drain.js","sourceRoot":"","sources":["../../src/execution/drain.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAM/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,KAAK,CAAC,KAAkB;IACpC,MAAM,GAAG,GAAoB,MAAM,CAAC,MAAM,CAAC;QACvC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;QAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;QAClC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;QAC9B,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE;QACtD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;QAC1B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW;QACxC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;QAChC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;KAC/B,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,EAAE,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;IAC1B,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC;IACjC,OAAO,GAAG,CAAC;AACf,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { RunnerEmissions } from \"@invinite-org/chartlang-adapter-kit\";\n\nimport type { RunnerState } from \"../createScriptRunner.js\";\n\n/**\n * Snapshot and reset. Returns the runner's currently-accumulated\n * emissions as a frozen `RunnerEmissions` object, then clears the\n * runner's queues by reassigning each array to a fresh empty array —\n * the adapter holds the snapshot's arrays, the runner gets fresh\n * containers for the next step.\n *\n * A second `drain` immediately after the first returns empty arrays\n * but the same `fromBar` / `toBar` (those are not reset until the next\n * step). The §6.7 invariant 4 (\"queues cleared at start of every step\")\n * is enforced by `onBarClose` / `onBarTick`, not by `drain`.\n *\n * @since 0.1\n * @example\n * // import { drain } from \"@invinite-org/chartlang-runtime\";\n * // const emissions = drain(state);\n * // void emissions.plots;\n */\nexport function drain(state: RunnerState): RunnerEmissions {\n const out: RunnerEmissions = Object.freeze({\n plots: state.emissions.plots,\n drawings: state.emissions.drawings,\n alerts: state.emissions.alerts,\n alertConditions: state.emissions.alertConditions ?? [],\n logs: state.emissions.logs,\n diagnostics: state.emissions.diagnostics,\n fromBar: state.emissions.fromBar,\n toBar: state.emissions.toBar,\n });\n state.emissions.plots = [];\n state.emissions.drawings = [];\n state.emissions.alerts = [];\n state.emissions.alertConditions = [];\n state.emissions.logs = [];\n state.emissions.diagnostics = [];\n return out;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nexport { drain } from \"./drain.js\";\nexport { dispose } from \"./dispose.js\";\nexport { onBarClose } from \"./onBarClose.js\";\nexport { onBarTick } from \"./onBarTick.js\";\nexport { onHistory } from \"./onHistory.js\";\n"]}
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
import type { Bar } from "@invinite-org/chartlang-core";
|
|
2
2
|
import type { RunnerState } from "../createScriptRunner.js";
|
|
3
|
-
import {
|
|
3
|
+
import type { EventKind } from "../views/index.js";
|
|
4
4
|
/**
|
|
5
5
|
* §6.7 main step. Appends every OHLCV ring buffer, mutates the runner's
|
|
6
|
-
* shared `BarView` in place,
|
|
7
|
-
* runs the
|
|
8
|
-
*
|
|
6
|
+
* shared `BarView` in place, walks the bundle's dep + sibling sub-runners
|
|
7
|
+
* (no-op for single-script callers), then runs the primary's `compute`.
|
|
8
|
+
* If any dep halted this bar, the primary's plot / drawing / alert / log
|
|
9
|
+
* queues are dropped (diagnostics stay).
|
|
9
10
|
*
|
|
10
|
-
* The
|
|
11
|
-
* `
|
|
12
|
-
*
|
|
13
|
-
* values either way.
|
|
11
|
+
* The four §6.7 invariants hold at the end of the primary's compute.
|
|
12
|
+
* `barIndex` advances exactly once per close. Errors thrown by `compute`
|
|
13
|
+
* propagate out of `onBarClose`; the host (Task 9) owns containment.
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
* `compute` propagate out of `onBarClose`; the host (Task 9) owns
|
|
17
|
-
* containment.
|
|
18
|
-
*
|
|
19
|
-
* @since 0.1
|
|
15
|
+
* @since 0.1 — extended to walk dep + sibling sub-runners in 0.7.
|
|
20
16
|
* @example
|
|
21
17
|
* // import { onBarClose } from "@invinite-org/chartlang-runtime";
|
|
22
18
|
* // await onBarClose(state, rawBar);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onBarClose.d.ts","sourceRoot":"","sources":["../../src/execution/onBarClose.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"onBarClose.d.ts","sourceRoot":"","sources":["../../src/execution/onBarClose.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAWnD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,UAAU,CAC5B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,GAAG,EACX,SAAS,GAAE,SAAmB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
// Copyright (c) 2026 Invinite. Licensed under the MIT License.
|
|
2
2
|
// See the LICENSE file in the repo root for full license text.
|
|
3
|
-
import {
|
|
4
|
-
import { isRuntimeErrorHalt, pushDiagnostic } from "../emit/index.js";
|
|
5
|
-
import { resetSubIdCounters } from "../emit/draw/index.js";
|
|
6
|
-
import { ACTIVE_RUNTIME_CONTEXT } from "../runtimeContext.js";
|
|
7
|
-
import { commitStateSlots, flushStateSlots } from "../state/index.js";
|
|
3
|
+
import { runDepStep, runSiblingStep } from "../dep/index.js";
|
|
8
4
|
import { appendBarToStream, updateFallbackViewport } from "../streamState.js";
|
|
9
|
-
import {
|
|
5
|
+
import { resetBarEmissions, runComputeBody } from "./runComputeStep.js";
|
|
6
|
+
function clearVisualEmissions(state) {
|
|
7
|
+
state.emissions.plots = [];
|
|
8
|
+
state.emissions.drawings = [];
|
|
9
|
+
state.emissions.alerts = [];
|
|
10
|
+
state.emissions.alertConditions = [];
|
|
11
|
+
state.emissions.logs = [];
|
|
12
|
+
}
|
|
10
13
|
/**
|
|
11
14
|
* §6.7 main step. Appends every OHLCV ring buffer, mutates the runner's
|
|
12
|
-
* shared `BarView` in place,
|
|
13
|
-
* runs the
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* The derived sources (`hl2` / `hlc3` / `ohlc4` / `hlcc4`) come from
|
|
17
|
-
* `rawBar` directly — cheaper than `ohlcv.X.at(0)` and sidesteps
|
|
18
|
-
* `noNonNullAssertion`. The buffer and the `BarView` carry identical
|
|
19
|
-
* values either way.
|
|
15
|
+
* shared `BarView` in place, walks the bundle's dep + sibling sub-runners
|
|
16
|
+
* (no-op for single-script callers), then runs the primary's `compute`.
|
|
17
|
+
* If any dep halted this bar, the primary's plot / drawing / alert / log
|
|
18
|
+
* queues are dropped (diagnostics stay).
|
|
20
19
|
*
|
|
21
|
-
*
|
|
22
|
-
* `
|
|
23
|
-
* containment.
|
|
20
|
+
* The four §6.7 invariants hold at the end of the primary's compute.
|
|
21
|
+
* `barIndex` advances exactly once per close. Errors thrown by `compute`
|
|
22
|
+
* propagate out of `onBarClose`; the host (Task 9) owns containment.
|
|
24
23
|
*
|
|
25
|
-
* @since 0.1
|
|
24
|
+
* @since 0.1 — extended to walk dep + sibling sub-runners in 0.7.
|
|
26
25
|
* @example
|
|
27
26
|
* // import { onBarClose } from "@invinite-org/chartlang-runtime";
|
|
28
27
|
* // await onBarClose(state, rawBar);
|
|
@@ -30,48 +29,18 @@ import { refreshRuntimeViews } from "../views/index.js";
|
|
|
30
29
|
export async function onBarClose(state, rawBar, eventKind = "close") {
|
|
31
30
|
appendBarToStream(state.mainStream, rawBar);
|
|
32
31
|
updateFallbackViewport(state.mainStream);
|
|
33
|
-
state.
|
|
34
|
-
state
|
|
35
|
-
state.
|
|
36
|
-
state.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
state.runtimeContext.requestSecurityAlignments.clear();
|
|
42
|
-
state.runtimeContext.requestSecurityAscendingBars.clear();
|
|
43
|
-
state.runtimeContext.logBudget = 0;
|
|
44
|
-
state.runtimeContext.logBudgetExceededDiagnosed = false;
|
|
45
|
-
ACTIVE_RUNTIME_CONTEXT.current = state.runtimeContext;
|
|
46
|
-
state.runtimeContext.isTick = false;
|
|
47
|
-
try {
|
|
48
|
-
resetSubIdCounters(state.runtimeContext);
|
|
49
|
-
refreshRuntimeViews(state, eventKind);
|
|
50
|
-
try {
|
|
51
|
-
await Promise.resolve(state.compute(buildComputeContext(state)));
|
|
52
|
-
commitStateSlots(state.runtimeContext);
|
|
53
|
-
flushStateSlots(state.runtimeContext);
|
|
54
|
-
}
|
|
55
|
-
catch (err) {
|
|
56
|
-
if (!isRuntimeErrorHalt(err))
|
|
57
|
-
throw err;
|
|
58
|
-
state.emissions.plots = [];
|
|
59
|
-
state.emissions.drawings = [];
|
|
60
|
-
state.emissions.alerts = [];
|
|
61
|
-
state.emissions.alertConditions = [];
|
|
62
|
-
state.emissions.logs = [];
|
|
63
|
-
pushDiagnostic(state.emissions, {
|
|
64
|
-
kind: "diagnostic",
|
|
65
|
-
severity: "error",
|
|
66
|
-
code: "runtime-error-thrown",
|
|
67
|
-
message: err.message,
|
|
68
|
-
slotId: null,
|
|
69
|
-
bar: state.barIndex,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
32
|
+
state.depErroredThisBar = false;
|
|
33
|
+
resetBarEmissions(state);
|
|
34
|
+
state.depOutputStore?.beginBar();
|
|
35
|
+
for (const dep of state.depRunners) {
|
|
36
|
+
await runDepStep(dep, state, rawBar, eventKind, false);
|
|
37
|
+
}
|
|
38
|
+
for (const sibling of state.siblingRunners) {
|
|
39
|
+
await runSiblingStep(sibling, state, rawBar, eventKind, false);
|
|
72
40
|
}
|
|
73
|
-
|
|
74
|
-
|
|
41
|
+
await runComputeBody({ state, eventKind, isTick: false });
|
|
42
|
+
if (state.depErroredThisBar) {
|
|
43
|
+
clearVisualEmissions(state);
|
|
75
44
|
}
|
|
76
45
|
state.barIndex += 1;
|
|
77
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onBarClose.js","sourceRoot":"","sources":["../../src/execution/onBarClose.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;
|
|
1
|
+
{"version":3,"file":"onBarClose.js","sourceRoot":"","sources":["../../src/execution/onBarClose.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAExE,SAAS,oBAAoB,CAAC,KAAkB;IAC5C,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,EAAE,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,KAAkB,EAClB,MAAW,EACX,YAAuB,OAAO;IAE9B,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5C,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEzC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAChC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzB,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { Bar } from \"@invinite-org/chartlang-core\";\n\nimport type { RunnerState } from \"../createScriptRunner.js\";\nimport { runDepStep, runSiblingStep } from \"../dep/index.js\";\nimport { appendBarToStream, updateFallbackViewport } from \"../streamState.js\";\nimport type { EventKind } from \"../views/index.js\";\nimport { resetBarEmissions, runComputeBody } from \"./runComputeStep.js\";\n\nfunction clearVisualEmissions(state: RunnerState): void {\n state.emissions.plots = [];\n state.emissions.drawings = [];\n state.emissions.alerts = [];\n state.emissions.alertConditions = [];\n state.emissions.logs = [];\n}\n\n/**\n * §6.7 main step. Appends every OHLCV ring buffer, mutates the runner's\n * shared `BarView` in place, walks the bundle's dep + sibling sub-runners\n * (no-op for single-script callers), then runs the primary's `compute`.\n * If any dep halted this bar, the primary's plot / drawing / alert / log\n * queues are dropped (diagnostics stay).\n *\n * The four §6.7 invariants hold at the end of the primary's compute.\n * `barIndex` advances exactly once per close. Errors thrown by `compute`\n * propagate out of `onBarClose`; the host (Task 9) owns containment.\n *\n * @since 0.1 — extended to walk dep + sibling sub-runners in 0.7.\n * @example\n * // import { onBarClose } from \"@invinite-org/chartlang-runtime\";\n * // await onBarClose(state, rawBar);\n */\nexport async function onBarClose(\n state: RunnerState,\n rawBar: Bar,\n eventKind: EventKind = \"close\",\n): Promise<void> {\n appendBarToStream(state.mainStream, rawBar);\n updateFallbackViewport(state.mainStream);\n\n state.depErroredThisBar = false;\n resetBarEmissions(state);\n state.depOutputStore?.beginBar();\n\n for (const dep of state.depRunners) {\n await runDepStep(dep, state, rawBar, eventKind, false);\n }\n for (const sibling of state.siblingRunners) {\n await runSiblingStep(sibling, state, rawBar, eventKind, false);\n }\n\n await runComputeBody({ state, eventKind, isTick: false });\n\n if (state.depErroredThisBar) {\n clearVisualEmissions(state);\n }\n\n state.barIndex += 1;\n}\n"]}
|
|
@@ -2,20 +2,14 @@ import type { Bar } from "@invinite-org/chartlang-core";
|
|
|
2
2
|
import type { RunnerState } from "../createScriptRunner.js";
|
|
3
3
|
/**
|
|
4
4
|
* §6.7 tick path. Replaces the head slot on every close-side OHLCV
|
|
5
|
-
* buffer
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* preceding `onBarClose`.
|
|
9
|
-
*
|
|
10
|
-
* The runtime exposes `state.runtimeContext.isTick = true` for the
|
|
11
|
-
* duration of `compute`. Task 7 stateful primitives read this flag to
|
|
12
|
-
* switch between `append` and `replaceHead` slot updates. `isTick` is
|
|
13
|
-
* reset to `false` in the finally block regardless of compute outcome.
|
|
5
|
+
* buffer — does NOT advance the buffer length. `time` and `open` are
|
|
6
|
+
* NOT replaced. Walks the bundle's dep + sibling sub-runners (no-op for
|
|
7
|
+
* single-script callers) before driving the primary's `compute`.
|
|
14
8
|
*
|
|
15
9
|
* `state.barIndex` is NOT incremented — consecutive ticks share the
|
|
16
10
|
* in-progress bar's index.
|
|
17
11
|
*
|
|
18
|
-
* @since 0.1
|
|
12
|
+
* @since 0.1 — extended to walk dep + sibling sub-runners in 0.7.
|
|
19
13
|
* @example
|
|
20
14
|
* // import { onBarTick } from "@invinite-org/chartlang-runtime";
|
|
21
15
|
* // await onBarTick(state, tickBar);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onBarTick.d.ts","sourceRoot":"","sources":["../../src/execution/onBarTick.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"onBarTick.d.ts","sourceRoot":"","sources":["../../src/execution/onBarTick.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAa5D;;;;;;;;;;;;;GAaG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB9E"}
|
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
// Copyright (c) 2026 Invinite. Licensed under the MIT License.
|
|
2
2
|
// See the LICENSE file in the repo root for full license text.
|
|
3
|
-
import {
|
|
4
|
-
import { isRuntimeErrorHalt, pushDiagnostic } from "../emit/index.js";
|
|
5
|
-
import { resetSubIdCounters } from "../emit/draw/index.js";
|
|
6
|
-
import { ACTIVE_RUNTIME_CONTEXT } from "../runtimeContext.js";
|
|
7
|
-
import { resetTentativeStateSlots } from "../state/index.js";
|
|
3
|
+
import { runDepStep, runSiblingStep } from "../dep/index.js";
|
|
8
4
|
import { replaceTickHead, updateFallbackViewport } from "../streamState.js";
|
|
9
|
-
import {
|
|
5
|
+
import { resetBarEmissions, runComputeBody } from "./runComputeStep.js";
|
|
6
|
+
function clearVisualEmissions(state) {
|
|
7
|
+
state.emissions.plots = [];
|
|
8
|
+
state.emissions.drawings = [];
|
|
9
|
+
state.emissions.alerts = [];
|
|
10
|
+
state.emissions.alertConditions = [];
|
|
11
|
+
state.emissions.logs = [];
|
|
12
|
+
}
|
|
10
13
|
/**
|
|
11
14
|
* §6.7 tick path. Replaces the head slot on every close-side OHLCV
|
|
12
|
-
* buffer
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* preceding `onBarClose`.
|
|
16
|
-
*
|
|
17
|
-
* The runtime exposes `state.runtimeContext.isTick = true` for the
|
|
18
|
-
* duration of `compute`. Task 7 stateful primitives read this flag to
|
|
19
|
-
* switch between `append` and `replaceHead` slot updates. `isTick` is
|
|
20
|
-
* reset to `false` in the finally block regardless of compute outcome.
|
|
15
|
+
* buffer — does NOT advance the buffer length. `time` and `open` are
|
|
16
|
+
* NOT replaced. Walks the bundle's dep + sibling sub-runners (no-op for
|
|
17
|
+
* single-script callers) before driving the primary's `compute`.
|
|
21
18
|
*
|
|
22
19
|
* `state.barIndex` is NOT incremented — consecutive ticks share the
|
|
23
20
|
* in-progress bar's index.
|
|
24
21
|
*
|
|
25
|
-
* @since 0.1
|
|
22
|
+
* @since 0.1 — extended to walk dep + sibling sub-runners in 0.7.
|
|
26
23
|
* @example
|
|
27
24
|
* // import { onBarTick } from "@invinite-org/chartlang-runtime";
|
|
28
25
|
* // await onBarTick(state, tickBar);
|
|
@@ -30,48 +27,18 @@ import { refreshRuntimeViews } from "../views/index.js";
|
|
|
30
27
|
export async function onBarTick(state, rawBar) {
|
|
31
28
|
replaceTickHead(state.mainStream, rawBar);
|
|
32
29
|
updateFallbackViewport(state.mainStream);
|
|
33
|
-
state.
|
|
34
|
-
state
|
|
35
|
-
state.
|
|
36
|
-
state.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
state.runtimeContext.requestSecurityAlignments.clear();
|
|
42
|
-
state.runtimeContext.requestSecurityAscendingBars.clear();
|
|
43
|
-
state.runtimeContext.logBudget = 0;
|
|
44
|
-
state.runtimeContext.logBudgetExceededDiagnosed = false;
|
|
45
|
-
ACTIVE_RUNTIME_CONTEXT.current = state.runtimeContext;
|
|
46
|
-
state.runtimeContext.isTick = true;
|
|
47
|
-
try {
|
|
48
|
-
resetSubIdCounters(state.runtimeContext);
|
|
49
|
-
resetTentativeStateSlots(state.runtimeContext);
|
|
50
|
-
refreshRuntimeViews(state, "tick");
|
|
51
|
-
try {
|
|
52
|
-
await Promise.resolve(state.compute(buildComputeContext(state)));
|
|
53
|
-
}
|
|
54
|
-
catch (err) {
|
|
55
|
-
if (!isRuntimeErrorHalt(err))
|
|
56
|
-
throw err;
|
|
57
|
-
state.emissions.plots = [];
|
|
58
|
-
state.emissions.drawings = [];
|
|
59
|
-
state.emissions.alerts = [];
|
|
60
|
-
state.emissions.alertConditions = [];
|
|
61
|
-
state.emissions.logs = [];
|
|
62
|
-
pushDiagnostic(state.emissions, {
|
|
63
|
-
kind: "diagnostic",
|
|
64
|
-
severity: "error",
|
|
65
|
-
code: "runtime-error-thrown",
|
|
66
|
-
message: err.message,
|
|
67
|
-
slotId: null,
|
|
68
|
-
bar: state.barIndex,
|
|
69
|
-
});
|
|
70
|
-
}
|
|
30
|
+
state.depErroredThisBar = false;
|
|
31
|
+
resetBarEmissions(state);
|
|
32
|
+
state.depOutputStore?.beginBar();
|
|
33
|
+
for (const dep of state.depRunners) {
|
|
34
|
+
await runDepStep(dep, state, rawBar, "tick", true);
|
|
35
|
+
}
|
|
36
|
+
for (const sibling of state.siblingRunners) {
|
|
37
|
+
await runSiblingStep(sibling, state, rawBar, "tick", true);
|
|
71
38
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
39
|
+
await runComputeBody({ state, eventKind: "tick", isTick: true });
|
|
40
|
+
if (state.depErroredThisBar) {
|
|
41
|
+
clearVisualEmissions(state);
|
|
75
42
|
}
|
|
76
43
|
}
|
|
77
44
|
//# sourceMappingURL=onBarTick.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onBarTick.js","sourceRoot":"","sources":["../../src/execution/onBarTick.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;
|
|
1
|
+
{"version":3,"file":"onBarTick.js","sourceRoot":"","sources":["../../src/execution/onBarTick.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAExE,SAAS,oBAAoB,CAAC,KAAkB;IAC5C,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,EAAE,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB,EAAE,MAAW;IAC3D,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1C,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEzC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAChC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzB,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;AACL,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { Bar } from \"@invinite-org/chartlang-core\";\n\nimport type { RunnerState } from \"../createScriptRunner.js\";\nimport { runDepStep, runSiblingStep } from \"../dep/index.js\";\nimport { replaceTickHead, updateFallbackViewport } from \"../streamState.js\";\nimport { resetBarEmissions, runComputeBody } from \"./runComputeStep.js\";\n\nfunction clearVisualEmissions(state: RunnerState): void {\n state.emissions.plots = [];\n state.emissions.drawings = [];\n state.emissions.alerts = [];\n state.emissions.alertConditions = [];\n state.emissions.logs = [];\n}\n\n/**\n * §6.7 tick path. Replaces the head slot on every close-side OHLCV\n * buffer — does NOT advance the buffer length. `time` and `open` are\n * NOT replaced. Walks the bundle's dep + sibling sub-runners (no-op for\n * single-script callers) before driving the primary's `compute`.\n *\n * `state.barIndex` is NOT incremented — consecutive ticks share the\n * in-progress bar's index.\n *\n * @since 0.1 — extended to walk dep + sibling sub-runners in 0.7.\n * @example\n * // import { onBarTick } from \"@invinite-org/chartlang-runtime\";\n * // await onBarTick(state, tickBar);\n */\nexport async function onBarTick(state: RunnerState, rawBar: Bar): Promise<void> {\n replaceTickHead(state.mainStream, rawBar);\n updateFallbackViewport(state.mainStream);\n\n state.depErroredThisBar = false;\n resetBarEmissions(state);\n state.depOutputStore?.beginBar();\n\n for (const dep of state.depRunners) {\n await runDepStep(dep, state, rawBar, \"tick\", true);\n }\n for (const sibling of state.siblingRunners) {\n await runSiblingStep(sibling, state, rawBar, \"tick\", true);\n }\n\n await runComputeBody({ state, eventKind: \"tick\", isTick: true });\n\n if (state.depErroredThisBar) {\n clearVisualEmissions(state);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onHistory.js","sourceRoot":"","sources":["../../src/execution/onHistory.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB,EAAE,IAAwB;IACxE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;IACtC,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACpC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,eAAe,CAAC;IAClD,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;IAC1C,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAClC,qEAAqE;AACzE,CAAC"}
|
|
1
|
+
{"version":3,"file":"onHistory.js","sourceRoot":"","sources":["../../src/execution/onHistory.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB,EAAE,IAAwB;IACxE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;IACtC,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACpC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,eAAe,CAAC;IAClD,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;IAC1C,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAClC,qEAAqE;AACzE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { Bar } from \"@invinite-org/chartlang-core\";\n\nimport type { RunnerState } from \"../createScriptRunner.js\";\nimport { onBarClose } from \"./onBarClose.js\";\n\n/**\n * Bulk-fill warmup. Walks `bars` forward and runs `onBarClose` per\n * entry, preserving the §6.4 determinism contract (every bar passes\n * through `compute` in source order). A Phase-2 optimisation could\n * pre-fill ring buffers without re-running compute, but stay correct\n * first.\n *\n * Emissions accumulate across the bulk walk: PLAN §6.1 promises\n * `drain()` returns every emission \"since the last drain\", but\n * `onBarClose` resets the per-bar queues at the top of each bar. Without\n * the accumulator below, a host that pushes a `{ kind: \"history\", bars }`\n * event and drains once afterwards (as `canvas2d-adapter` does) would\n * only see the final bar's emissions. We seed the accumulators from\n * the pre-history queues so an undrained prior emission isn't silently\n * dropped, then write the merged arrays back at the end. `fromBar`\n * reverts to the first bar of the walk; `toBar` is left as the final\n * `onBarClose` set it (the last bar's index).\n *\n * Errors thrown by `compute` propagate immediately — subsequent bars\n * do not run. The host (Task 9) owns containment + reporting.\n *\n * @since 0.1\n * @example\n * // import { onHistory } from \"@invinite-org/chartlang-runtime\";\n * // await onHistory(state, historicalBars);\n * // const out = drain(state); // every bar's emissions, not just the last.\n */\nexport async function onHistory(state: RunnerState, bars: ReadonlyArray<Bar>): Promise<void> {\n if (bars.length === 0) return;\n const fromBar = state.barIndex;\n const plots = state.emissions.plots;\n const drawings = state.emissions.drawings;\n const alerts = state.emissions.alerts;\n const alertConditions = state.emissions.alertConditions ?? [];\n const logs = state.emissions.logs;\n const diagnostics = state.emissions.diagnostics;\n for (const bar of bars) {\n await onBarClose(state, bar, \"history\");\n plots.push(...state.emissions.plots);\n drawings.push(...state.emissions.drawings);\n alerts.push(...state.emissions.alerts);\n alertConditions.push(...(state.emissions.alertConditions ?? []));\n logs.push(...state.emissions.logs);\n diagnostics.push(...state.emissions.diagnostics);\n }\n state.emissions.plots = plots;\n state.emissions.drawings = drawings;\n state.emissions.alerts = alerts;\n state.emissions.alertConditions = alertConditions;\n state.emissions.logs = logs;\n state.emissions.diagnostics = diagnostics;\n state.emissions.fromBar = fromBar;\n // `toBar` was set to the last bar's index by the final `onBarClose`.\n}\n"]}
|