@forgecharts/sdk 1.1.27 → 1.1.29
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/dist/__tests__/backwardCompatibility.test.d.ts +14 -0
- package/dist/__tests__/backwardCompatibility.test.d.ts.map +1 -0
- package/dist/__tests__/candleInvariant.test.d.ts +20 -0
- package/dist/__tests__/candleInvariant.test.d.ts.map +1 -0
- package/dist/__tests__/public-api-surface.d.ts +13 -0
- package/dist/__tests__/public-api-surface.d.ts.map +1 -0
- package/dist/__tests__/timeframeBoundary.test.d.ts +17 -0
- package/dist/__tests__/timeframeBoundary.test.d.ts.map +1 -0
- package/dist/api/DrawingManager.d.ts +20 -0
- package/dist/api/DrawingManager.d.ts.map +1 -0
- package/dist/api/EventBus.d.ts +19 -0
- package/dist/api/EventBus.d.ts.map +1 -0
- package/dist/api/IndicatorDAG.d.ts +85 -0
- package/dist/api/IndicatorDAG.d.ts.map +1 -0
- package/dist/api/IndicatorRegistry.d.ts +22 -0
- package/dist/api/IndicatorRegistry.d.ts.map +1 -0
- package/dist/api/LayoutManager.d.ts +30 -0
- package/dist/api/LayoutManager.d.ts.map +1 -0
- package/dist/api/PaneManager.d.ts +42 -0
- package/dist/api/PaneManager.d.ts.map +1 -0
- package/dist/api/ReferenceAPI.d.ts +78 -0
- package/dist/api/ReferenceAPI.d.ts.map +1 -0
- package/dist/api/TChart.d.ts +345 -0
- package/dist/api/TChart.d.ts.map +1 -0
- package/{src/api/createChart.ts → dist/api/createChart.d.ts} +2 -7
- package/dist/api/createChart.d.ts.map +1 -0
- package/dist/api/drawing tools/fib gann menu/fibRetracement.d.ts +4 -0
- package/dist/api/drawing tools/fib gann menu/fibRetracement.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/crossLine.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/crossLine.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/disjointChannel.d.ts +17 -0
- package/dist/api/drawing tools/lines menu/disjointChannel.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/extendedLine.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/extendedLine.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/flatTopBottom.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/flatTopBottom.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/horizontal.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/horizontal.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/horizontalRay.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/horizontalRay.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/infoLine.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/infoLine.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/insidePitchfork.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/insidePitchfork.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/parallelChannel.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/parallelChannel.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/pitchfork.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/pitchfork.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/ray.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/ray.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/regressionTrend.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/regressionTrend.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/schiffPitchfork.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/schiffPitchfork.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/trendAngle.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/trendAngle.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/trendline.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/trendline.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/vertical.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/vertical.d.ts.map +1 -0
- package/{src/api/drawing tools/pointers menu/crosshair.ts → dist/api/drawing tools/pointers menu/crosshair.d.ts } +8 -9
- package/dist/api/drawing tools/pointers menu/crosshair.d.ts.map +1 -0
- package/dist/api/drawing tools/pointers menu/cursor.d.ts +15 -0
- package/dist/api/drawing tools/pointers menu/cursor.d.ts.map +1 -0
- package/{src/api/drawing tools/pointers menu/demonstration.ts → dist/api/drawing tools/pointers menu/demonstration.d.ts } +12 -17
- package/dist/api/drawing tools/pointers menu/demonstration.d.ts.map +1 -0
- package/{src/api/drawing tools/pointers menu/dot.ts → dist/api/drawing tools/pointers menu/dot.d.ts } +10 -13
- package/dist/api/drawing tools/pointers menu/dot.d.ts.map +1 -0
- package/dist/api/drawing tools/shapes menu/rectangle.d.ts +4 -0
- package/dist/api/drawing tools/shapes menu/rectangle.d.ts.map +1 -0
- package/dist/api/drawing tools/shapes menu/text.d.ts +4 -0
- package/dist/api/drawing tools/shapes menu/text.d.ts.map +1 -0
- package/dist/api/drawingUtils.d.ts +22 -0
- package/dist/api/drawingUtils.d.ts.map +1 -0
- package/dist/core/CanvasLayer.d.ts +26 -0
- package/dist/core/CanvasLayer.d.ts.map +1 -0
- package/dist/core/Chart.d.ts +164 -0
- package/dist/core/Chart.d.ts.map +1 -0
- package/dist/core/CoordTransform.d.ts +168 -0
- package/dist/core/CoordTransform.d.ts.map +1 -0
- package/dist/core/Crosshair.d.ts +30 -0
- package/dist/core/Crosshair.d.ts.map +1 -0
- package/dist/core/IndicatorEngine.d.ts +51 -0
- package/dist/core/IndicatorEngine.d.ts.map +1 -0
- package/dist/core/InteractionManager.d.ts +197 -0
- package/dist/core/InteractionManager.d.ts.map +1 -0
- package/dist/core/PriceScale.d.ts +27 -0
- package/dist/core/PriceScale.d.ts.map +1 -0
- package/dist/core/Series.d.ts +40 -0
- package/dist/core/Series.d.ts.map +1 -0
- package/dist/core/TimeScale.d.ts +43 -0
- package/dist/core/TimeScale.d.ts.map +1 -0
- package/dist/datafeed/DatafeedConnector.d.ts +89 -0
- package/dist/datafeed/DatafeedConnector.d.ts.map +1 -0
- package/dist/engine/CandleEngine.d.ts +207 -0
- package/dist/engine/CandleEngine.d.ts.map +1 -0
- package/dist/engine/__tests__/CandleEngine.test.d.ts +2 -0
- package/dist/engine/__tests__/CandleEngine.test.d.ts.map +1 -0
- package/dist/engine/candleInvariants.d.ts +66 -0
- package/dist/engine/candleInvariants.d.ts.map +1 -0
- package/{src/engine/mergeUtils.ts → dist/engine/mergeUtils.d.ts} +15 -52
- package/dist/engine/mergeUtils.d.ts.map +1 -0
- package/dist/engine/timeframeUtils.d.ts +80 -0
- package/dist/engine/timeframeUtils.d.ts.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8101 -0
- package/dist/index.js.map +1 -0
- package/{src/internal.ts → dist/internal.d.ts} +1 -13
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +8852 -0
- package/dist/internal.js.map +1 -0
- package/dist/licensing/ChartRuntimeResolver.d.ts +233 -0
- package/dist/licensing/ChartRuntimeResolver.d.ts.map +1 -0
- package/dist/licensing/LicenseManager.d.ts +55 -0
- package/dist/licensing/LicenseManager.d.ts.map +1 -0
- package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts +13 -0
- package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts.map +1 -0
- package/dist/licensing/__tests__/LicenseManager.test.d.ts +12 -0
- package/dist/licensing/__tests__/LicenseManager.test.d.ts.map +1 -0
- package/dist/licensing/licenseTypes.d.ts +18 -0
- package/dist/licensing/licenseTypes.d.ts.map +1 -0
- package/dist/pine/PineCompiler.d.ts +35 -0
- package/dist/pine/PineCompiler.d.ts.map +1 -0
- package/dist/pine/diagnostics.d.ts +20 -0
- package/dist/pine/diagnostics.d.ts.map +1 -0
- package/{src/pine/index.ts → dist/pine/index.d.ts} +4 -3
- package/dist/pine/index.d.ts.map +1 -0
- package/dist/pine/pine-ast.d.ts +142 -0
- package/dist/pine/pine-ast.d.ts.map +1 -0
- package/dist/pine/pine-lexer.d.ts +41 -0
- package/dist/pine/pine-lexer.d.ts.map +1 -0
- package/dist/pine/pine-parser.d.ts +51 -0
- package/dist/pine/pine-parser.d.ts.map +1 -0
- package/dist/pine/pine-transpiler.d.ts +33 -0
- package/dist/pine/pine-transpiler.d.ts.map +1 -0
- package/dist/pixi/LayerName.d.ts +18 -0
- package/dist/pixi/LayerName.d.ts.map +1 -0
- package/dist/pixi/PixiCandlestickRenderer.d.ts +23 -0
- package/dist/pixi/PixiCandlestickRenderer.d.ts.map +1 -0
- package/dist/pixi/PixiChart.d.ts +72 -0
- package/dist/pixi/PixiChart.d.ts.map +1 -0
- package/dist/pixi/PixiCrosshairRenderer.d.ts +29 -0
- package/dist/pixi/PixiCrosshairRenderer.d.ts.map +1 -0
- package/dist/pixi/PixiDrawingRenderer.d.ts +17 -0
- package/dist/pixi/PixiDrawingRenderer.d.ts.map +1 -0
- package/dist/pixi/PixiGridRenderer.d.ts +22 -0
- package/dist/pixi/PixiGridRenderer.d.ts.map +1 -0
- package/dist/pixi/PixiLayerManager.d.ts +56 -0
- package/dist/pixi/PixiLayerManager.d.ts.map +1 -0
- package/dist/react/canvas/ChartCanvas.d.ts +85 -0
- package/dist/react/canvas/ChartCanvas.d.ts.map +1 -0
- package/dist/react/canvas/ChartContextMenu.d.ts +18 -0
- package/dist/react/canvas/ChartContextMenu.d.ts.map +1 -0
- package/dist/react/canvas/ChartSettingsDialog.d.ts +25 -0
- package/dist/react/canvas/ChartSettingsDialog.d.ts.map +1 -0
- package/dist/react/canvas/IndicatorLabel.d.ts +21 -0
- package/dist/react/canvas/IndicatorLabel.d.ts.map +1 -0
- package/dist/react/canvas/IndicatorPane.d.ts +32 -0
- package/dist/react/canvas/IndicatorPane.d.ts.map +1 -0
- package/dist/react/canvas/PointerOverlay.d.ts +23 -0
- package/dist/react/canvas/PointerOverlay.d.ts.map +1 -0
- package/dist/react/canvas/toolbars/LeftToolbar.d.ts +19 -0
- package/dist/react/canvas/toolbars/LeftToolbar.d.ts.map +1 -0
- package/dist/react/hooks/useChartCapabilities.d.ts +21 -0
- package/dist/react/hooks/useChartCapabilities.d.ts.map +1 -0
- package/{src/react/index.ts → dist/react/index.d.ts} +2 -23
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +11559 -0
- package/dist/react/index.js.map +1 -0
- package/{src/react/internal.ts → dist/react/internal.d.ts} +2 -26
- package/dist/react/internal.d.ts.map +1 -0
- package/dist/react/internal.js +12148 -0
- package/dist/react/internal.js.map +1 -0
- package/dist/react/shell/ManagedAppShell.d.ts +91 -0
- package/dist/react/shell/ManagedAppShell.d.ts.map +1 -0
- package/dist/react/trading/TradingBridge.d.ts +86 -0
- package/dist/react/trading/TradingBridge.d.ts.map +1 -0
- package/dist/react/workspace/ChartWorkspace.d.ts +73 -0
- package/dist/react/workspace/ChartWorkspace.d.ts.map +1 -0
- package/dist/react/workspace/FloatingPanel.d.ts +18 -0
- package/dist/react/workspace/FloatingPanel.d.ts.map +1 -0
- package/dist/react/workspace/IndicatorsDialog.d.ts +8 -0
- package/dist/react/workspace/IndicatorsDialog.d.ts.map +1 -0
- package/dist/react/workspace/LayoutMenu.d.ts +33 -0
- package/dist/react/workspace/LayoutMenu.d.ts.map +1 -0
- package/dist/react/workspace/SymbolSearchDialog.d.ts +10 -0
- package/dist/react/workspace/SymbolSearchDialog.d.ts.map +1 -0
- package/dist/react/workspace/TabBar.d.ts +17 -0
- package/dist/react/workspace/TabBar.d.ts.map +1 -0
- package/dist/react/workspace/toolbars/BottomToolbar.d.ts +19 -0
- package/dist/react/workspace/toolbars/BottomToolbar.d.ts.map +1 -0
- package/dist/react/workspace/toolbars/RightToolbar.d.ts +8 -0
- package/dist/react/workspace/toolbars/RightToolbar.d.ts.map +1 -0
- package/dist/react/workspace/toolbars/TopToolbar.d.ts +41 -0
- package/dist/react/workspace/toolbars/TopToolbar.d.ts.map +1 -0
- package/dist/renderers/CandlestickRenderer.d.ts +13 -0
- package/dist/renderers/CandlestickRenderer.d.ts.map +1 -0
- package/dist/renderers/HistogramRenderer.d.ts +11 -0
- package/dist/renderers/HistogramRenderer.d.ts.map +1 -0
- package/dist/renderers/LineRenderer.d.ts +12 -0
- package/dist/renderers/LineRenderer.d.ts.map +1 -0
- package/dist/theme/colors.d.ts +4 -0
- package/dist/theme/colors.d.ts.map +1 -0
- package/dist/tools/barDivergenceCheck.d.ts +120 -0
- package/dist/tools/barDivergenceCheck.d.ts.map +1 -0
- package/dist/trading/TradingOverlayStore.d.ts +86 -0
- package/dist/trading/TradingOverlayStore.d.ts.map +1 -0
- package/dist/trading/UnmanagedIngestion.d.ts +91 -0
- package/dist/trading/UnmanagedIngestion.d.ts.map +1 -0
- package/dist/trading/__tests__/ManagedTradingController.test.d.ts +18 -0
- package/dist/trading/__tests__/ManagedTradingController.test.d.ts.map +1 -0
- package/dist/trading/__tests__/TradingOverlayStore.test.d.ts +16 -0
- package/dist/trading/__tests__/TradingOverlayStore.test.d.ts.map +1 -0
- package/dist/trading/__tests__/UnmanagedIngestion.test.d.ts +16 -0
- package/dist/trading/__tests__/UnmanagedIngestion.test.d.ts.map +1 -0
- package/dist/trading/managed/ManagedTradingController.d.ts +110 -0
- package/dist/trading/managed/ManagedTradingController.d.ts.map +1 -0
- package/dist/trading/managed/managedCapabilities.d.ts +45 -0
- package/dist/trading/managed/managedCapabilities.d.ts.map +1 -0
- package/dist/trading/managed/managedTypes.d.ts +122 -0
- package/dist/trading/managed/managedTypes.d.ts.map +1 -0
- package/dist/trading/tradingTypes.d.ts +89 -0
- package/dist/trading/tradingTypes.d.ts.map +1 -0
- package/dist/tscript/TScriptIndicator.d.ts +41 -0
- package/dist/tscript/TScriptIndicator.d.ts.map +1 -0
- package/dist/tscript/ast.d.ts +89 -0
- package/dist/tscript/ast.d.ts.map +1 -0
- package/dist/tscript/lexer.d.ts +36 -0
- package/dist/tscript/lexer.d.ts.map +1 -0
- package/dist/tscript/parser.d.ts +50 -0
- package/dist/tscript/parser.d.ts.map +1 -0
- package/dist/tscript/runtime.d.ts +123 -0
- package/dist/tscript/runtime.d.ts.map +1 -0
- package/dist/tscript/series.d.ts +49 -0
- package/dist/tscript/series.d.ts.map +1 -0
- package/dist/types/IChart.d.ts +48 -0
- package/dist/types/IChart.d.ts.map +1 -0
- package/{src/types/IRenderer.ts → dist/types/IRenderer.d.ts} +2 -8
- package/dist/types/IRenderer.d.ts.map +1 -0
- package/dist/types/ISeries.d.ts +26 -0
- package/dist/types/ISeries.d.ts.map +1 -0
- package/package.json +5 -1
- package/src/__tests__/backwardCompatibility.test.ts +0 -191
- package/src/__tests__/candleInvariant.test.ts +0 -500
- package/src/__tests__/public-api-surface.ts +0 -76
- package/src/__tests__/timeframeBoundary.test.ts +0 -583
- package/src/api/DrawingManager.ts +0 -188
- package/src/api/EventBus.ts +0 -53
- package/src/api/IndicatorDAG.ts +0 -389
- package/src/api/IndicatorRegistry.ts +0 -47
- package/src/api/LayoutManager.ts +0 -72
- package/src/api/PaneManager.ts +0 -129
- package/src/api/ReferenceAPI.ts +0 -195
- package/src/api/TChart.ts +0 -881
- package/src/api/drawing tools/fib gann menu/fibRetracement.ts +0 -27
- package/src/api/drawing tools/lines menu/crossLine.ts +0 -21
- package/src/api/drawing tools/lines menu/disjointChannel.ts +0 -74
- package/src/api/drawing tools/lines menu/extendedLine.ts +0 -22
- package/src/api/drawing tools/lines menu/flatTopBottom.ts +0 -45
- package/src/api/drawing tools/lines menu/horizontal.ts +0 -24
- package/src/api/drawing tools/lines menu/horizontalRay.ts +0 -25
- package/src/api/drawing tools/lines menu/infoLine.ts +0 -127
- package/src/api/drawing tools/lines menu/insidePitchfork.ts +0 -21
- package/src/api/drawing tools/lines menu/modifiedSchiffPitchfork.ts +0 -18
- package/src/api/drawing tools/lines menu/parallelChannel.ts +0 -47
- package/src/api/drawing tools/lines menu/pitchfork.ts +0 -15
- package/src/api/drawing tools/lines menu/ray.ts +0 -28
- package/src/api/drawing tools/lines menu/regressionTrend.ts +0 -157
- package/src/api/drawing tools/lines menu/schiffPitchfork.ts +0 -18
- package/src/api/drawing tools/lines menu/trendAngle.ts +0 -64
- package/src/api/drawing tools/lines menu/trendline.ts +0 -16
- package/src/api/drawing tools/lines menu/vertical.ts +0 -16
- package/src/api/drawing tools/pointers menu/cursor.ts +0 -16
- package/src/api/drawing tools/shapes menu/rectangle.ts +0 -24
- package/src/api/drawing tools/shapes menu/text.ts +0 -30
- package/src/api/drawingUtils.ts +0 -82
- package/src/core/CanvasLayer.ts +0 -77
- package/src/core/Chart.ts +0 -917
- package/src/core/CoordTransform.ts +0 -282
- package/src/core/Crosshair.ts +0 -207
- package/src/core/IndicatorEngine.ts +0 -216
- package/src/core/InteractionManager.ts +0 -899
- package/src/core/PriceScale.ts +0 -133
- package/src/core/Series.ts +0 -132
- package/src/core/TimeScale.ts +0 -175
- package/src/datafeed/DatafeedConnector.ts +0 -300
- package/src/engine/CandleEngine.ts +0 -458
- package/src/engine/__tests__/CandleEngine.test.ts +0 -402
- package/src/engine/candleInvariants.ts +0 -172
- package/src/engine/timeframeUtils.ts +0 -118
- package/src/index.ts +0 -190
- package/src/licensing/ChartRuntimeResolver.ts +0 -380
- package/src/licensing/LicenseManager.ts +0 -131
- package/src/licensing/__tests__/ChartRuntimeResolver.test.ts +0 -207
- package/src/licensing/__tests__/LicenseManager.test.ts +0 -180
- package/src/licensing/licenseTypes.ts +0 -19
- package/src/pine/PineCompiler.ts +0 -68
- package/src/pine/diagnostics.ts +0 -30
- package/src/pine/pine-ast.ts +0 -163
- package/src/pine/pine-lexer.ts +0 -265
- package/src/pine/pine-parser.ts +0 -439
- package/src/pine/pine-transpiler.ts +0 -301
- package/src/pixi/LayerName.ts +0 -35
- package/src/pixi/PixiCandlestickRenderer.ts +0 -125
- package/src/pixi/PixiChart.ts +0 -425
- package/src/pixi/PixiCrosshairRenderer.ts +0 -134
- package/src/pixi/PixiDrawingRenderer.ts +0 -121
- package/src/pixi/PixiGridRenderer.ts +0 -136
- package/src/pixi/PixiLayerManager.ts +0 -102
- package/src/react/canvas/ChartCanvas.tsx +0 -984
- package/src/react/canvas/ChartContextMenu.tsx +0 -60
- package/src/react/canvas/ChartSettingsDialog.tsx +0 -133
- package/src/react/canvas/IndicatorLabel.tsx +0 -347
- package/src/react/canvas/IndicatorPane.tsx +0 -503
- package/src/react/canvas/PointerOverlay.tsx +0 -126
- package/src/react/canvas/toolbars/LeftToolbar.tsx +0 -1096
- package/src/react/hooks/useChartCapabilities.ts +0 -76
- package/src/react/shell/ManagedAppShell.tsx +0 -699
- package/src/react/trading/TradingBridge.ts +0 -156
- package/src/react/workspace/ChartWorkspace.tsx +0 -228
- package/src/react/workspace/FloatingPanel.tsx +0 -131
- package/src/react/workspace/IndicatorsDialog.tsx +0 -246
- package/src/react/workspace/LayoutMenu.tsx +0 -345
- package/src/react/workspace/SymbolSearchDialog.tsx +0 -377
- package/src/react/workspace/TabBar.tsx +0 -87
- package/src/react/workspace/toolbars/BottomToolbar.tsx +0 -372
- package/src/react/workspace/toolbars/RightToolbar.tsx +0 -46
- package/src/react/workspace/toolbars/TopToolbar.tsx +0 -431
- package/src/renderers/CandlestickRenderer.ts +0 -130
- package/src/renderers/HistogramRenderer.ts +0 -63
- package/src/renderers/LineRenderer.ts +0 -77
- package/src/theme/colors.ts +0 -21
- package/src/tools/barDivergenceCheck.ts +0 -305
- package/src/trading/TradingOverlayStore.ts +0 -161
- package/src/trading/UnmanagedIngestion.ts +0 -156
- package/src/trading/__tests__/ManagedTradingController.test.ts +0 -338
- package/src/trading/__tests__/TradingOverlayStore.test.ts +0 -323
- package/src/trading/__tests__/UnmanagedIngestion.test.ts +0 -205
- package/src/trading/managed/ManagedTradingController.ts +0 -292
- package/src/trading/managed/managedCapabilities.ts +0 -98
- package/src/trading/managed/managedTypes.ts +0 -151
- package/src/trading/tradingTypes.ts +0 -135
- package/src/tscript/TScriptIndicator.ts +0 -54
- package/src/tscript/ast.ts +0 -105
- package/src/tscript/lexer.ts +0 -190
- package/src/tscript/parser.ts +0 -334
- package/src/tscript/runtime.ts +0 -525
- package/src/tscript/series.ts +0 -84
- package/src/types/IChart.ts +0 -56
- package/src/types/ISeries.ts +0 -30
- package/tsconfig.json +0 -23
- package/tsup.config.ts +0 -16
- package/vitest.config.ts +0 -25
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managedTypes.d.ts","sourceRoot":"","sources":["../../../src/trading/managed/managedTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,+CAA+C;AAC/C,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAEhE,0BAA0B;AAC1B,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,YAAY,CAAC;AAEjF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,SAAS,CAAC;IAEhB,IAAI,EAAE,gBAAgB,CAAC;IAEvB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,GAAG,EAAE,MAAM,CAAC;IAEZ,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAG,MAAM,CAAC;IACpB,GAAG,CAAC,EAAS,MAAM,CAAC;IACpB,KAAK,CAAC,EAAO,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,KAAK,EAAE,eAAe,CAAC;IAEvB,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAQ,QAAQ,CAAC;IACtB,QAAQ,EAAK,QAAQ,CAAC;IACtB,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,6DAA6D;IAC7D,OAAO,EAAM,MAAM,CAAC;CACrB;AAID;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,qFAAqF;IACrF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtD;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3E;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC5E"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared trading overlay types used by both unmanaged and managed modes.
|
|
3
|
+
*
|
|
4
|
+
* These are the canonical data shapes the overlay engine, ingestion layer,
|
|
5
|
+
* and future managed trading service all operate on.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Normalised candle data accepted by the unmanaged ingestion API.
|
|
9
|
+
* `time` may be Unix seconds or milliseconds — the engine auto-detects.
|
|
10
|
+
*/
|
|
11
|
+
export interface CandleInput {
|
|
12
|
+
time: number;
|
|
13
|
+
open: number;
|
|
14
|
+
high: number;
|
|
15
|
+
low: number;
|
|
16
|
+
close: number;
|
|
17
|
+
volume?: number;
|
|
18
|
+
/** True when the candle is confirmed closed (next candle has opened). */
|
|
19
|
+
isClosed?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/** Visual role of the order line on the chart. */
|
|
22
|
+
export type OrderRole = 'entry' | 'stop_loss' | 'take_profit' | 'limit' | 'stop' | 'other';
|
|
23
|
+
/** Order side. */
|
|
24
|
+
export type OrderSide = 'buy' | 'sell';
|
|
25
|
+
/** Lifecycle status of the order. */
|
|
26
|
+
export type OrderStatus = 'pending' | 'open' | 'filled' | 'partial' | 'cancelled' | 'rejected' | 'expired';
|
|
27
|
+
export interface ChartOrder {
|
|
28
|
+
/** Unique order identifier — used as the primary key for upsert / remove. */
|
|
29
|
+
id: string;
|
|
30
|
+
/** Visual role — drives line colour and label. */
|
|
31
|
+
role: OrderRole;
|
|
32
|
+
side: OrderSide;
|
|
33
|
+
status: OrderStatus;
|
|
34
|
+
/** Limit / trigger price in the chart's native price unit. */
|
|
35
|
+
price: number;
|
|
36
|
+
/** Order quantity in the instrument's native lot / contract unit. */
|
|
37
|
+
qty: number;
|
|
38
|
+
/**
|
|
39
|
+
* Optional group identifier.
|
|
40
|
+
* Orders sharing a `groupId` are visually associated (e.g. bracket legs).
|
|
41
|
+
* The SDK does NOT manage execution rules — grouping is visual only.
|
|
42
|
+
*/
|
|
43
|
+
groupId?: string;
|
|
44
|
+
/** Human-readable label shown next to the order line. */
|
|
45
|
+
label?: string;
|
|
46
|
+
/** ISO-8601 string or Unix timestamp (ms) when the order was placed. */
|
|
47
|
+
timestamp?: number | string;
|
|
48
|
+
/** Arbitrary client metadata — not used by the renderer. */
|
|
49
|
+
meta?: Record<string, unknown>;
|
|
50
|
+
}
|
|
51
|
+
export type PositionSide = 'long' | 'short';
|
|
52
|
+
export type PositionStatus = 'open' | 'closed' | 'partial';
|
|
53
|
+
export interface ChartPosition {
|
|
54
|
+
/** Unique position identifier. */
|
|
55
|
+
id: string;
|
|
56
|
+
side: PositionSide;
|
|
57
|
+
status: PositionStatus;
|
|
58
|
+
/** Average entry price. */
|
|
59
|
+
entryPrice: number;
|
|
60
|
+
/** Net open quantity (absolute value; sign is encoded in `side`). */
|
|
61
|
+
qty: number;
|
|
62
|
+
/** Current mark / last price (used to compute unrealized P&L). */
|
|
63
|
+
markPrice?: number;
|
|
64
|
+
/** Unrealized P&L in the account's currency. */
|
|
65
|
+
unrealizedPnl?: number;
|
|
66
|
+
/** Optional: link associated order ids (e.g. stop-loss, take-profit). */
|
|
67
|
+
linkedOrderIds?: string[];
|
|
68
|
+
/** Human-readable label. */
|
|
69
|
+
label?: string;
|
|
70
|
+
/** Arbitrary client metadata. */
|
|
71
|
+
meta?: Record<string, unknown>;
|
|
72
|
+
}
|
|
73
|
+
export type FillSide = 'buy' | 'sell';
|
|
74
|
+
export interface ExecutionFill {
|
|
75
|
+
/** Unique fill / execution identifier. */
|
|
76
|
+
id: string;
|
|
77
|
+
/** ID of the parent order, if known. */
|
|
78
|
+
orderId?: string;
|
|
79
|
+
side: FillSide;
|
|
80
|
+
/** Execution price. */
|
|
81
|
+
price: number;
|
|
82
|
+
/** Filled quantity. */
|
|
83
|
+
qty: number;
|
|
84
|
+
/** Unix timestamp in milliseconds when the fill was reported. */
|
|
85
|
+
timestamp: number;
|
|
86
|
+
/** Arbitrary client metadata. */
|
|
87
|
+
meta?: Record<string, unknown>;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=tradingTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tradingTypes.d.ts","sourceRoot":"","sources":["../../src/trading/tradingTypes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAK,MAAM,CAAC;IAChB,IAAI,EAAK,MAAM,CAAC;IAChB,IAAI,EAAK,MAAM,CAAC;IAChB,GAAG,EAAM,MAAM,CAAC;IAChB,KAAK,EAAI,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,kDAAkD;AAClD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3F,kBAAkB;AAClB,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvC,qCAAqC;AACrC,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,MAAM,GACN,QAAQ,GACR,SAAS,GACT,WAAW,GACX,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,UAAU;IACzB,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IAEX,kDAAkD;IAClD,IAAI,EAAE,SAAS,CAAC;IAEhB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IAEpB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IAEd,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAID,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IAEvB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IAEnB,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IAEZ,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAID,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IAEX,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,IAAI,EAAE,QAAQ,CAAC;IAEf,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IAEd,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IAEZ,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TScriptIndicator — compiles and executes a TScript program, exposing its
|
|
3
|
+
* plot() outputs as IndicatorPoint arrays compatible with the DAG DAGResult format.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* const ind = new TScriptIndicator(`
|
|
8
|
+
* indicator("My SMA")
|
|
9
|
+
* length = input(14)
|
|
10
|
+
* value = sma(close, length)
|
|
11
|
+
* plot(value)
|
|
12
|
+
* `);
|
|
13
|
+
*
|
|
14
|
+
* const plots = ind.run(bars);
|
|
15
|
+
* // plots[0] → IndicatorPoint[] for the first plot() call
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import type { OHLCV } from '@forgecharts/types';
|
|
19
|
+
import type { IndicatorPoint } from '../core/IndicatorEngine';
|
|
20
|
+
export declare class TScriptIndicator {
|
|
21
|
+
private readonly _runtime;
|
|
22
|
+
/** Title from the `indicator("...")` declaration, or `'Script'` if absent. */
|
|
23
|
+
readonly title: string;
|
|
24
|
+
constructor(src: string);
|
|
25
|
+
/**
|
|
26
|
+
* Execute the script over the full bar history.
|
|
27
|
+
*
|
|
28
|
+
* Each call resets internal state and replays every bar from scratch,
|
|
29
|
+
* ensuring the output is deterministic regardless of prior calls.
|
|
30
|
+
*
|
|
31
|
+
* @returns array of plot series — `plots[0]` corresponds to the first
|
|
32
|
+
* `plot()` call in source, `plots[1]` to the second, etc.
|
|
33
|
+
*/
|
|
34
|
+
run(bars: readonly OHLCV[]): IndicatorPoint[][];
|
|
35
|
+
/**
|
|
36
|
+
* Reset all persistent series state (ring buffers) without re-parsing.
|
|
37
|
+
* Call when the chart symbol or timeframe changes.
|
|
38
|
+
*/
|
|
39
|
+
reset(): void;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=TScriptIndicator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TScriptIndicator.d.ts","sourceRoot":"","sources":["../../src/tscript/TScriptIndicator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,GAAG,EAAE,MAAM;IAKvB;;;;;;;;OAQG;IACH,GAAG,CAAC,IAAI,EAAE,SAAS,KAAK,EAAE,GAAG,cAAc,EAAE,EAAE;IAI/C;;;OAGG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TScript Abstract Syntax Tree node types.
|
|
3
|
+
*
|
|
4
|
+
* Grammar (simplified):
|
|
5
|
+
* program → stmt*
|
|
6
|
+
* stmt → indicator_decl | assign | expr_stmt
|
|
7
|
+
* assign → IDENT '=' expr
|
|
8
|
+
* indicator → 'indicator' '(' STRING ')'
|
|
9
|
+
* expr → ternary
|
|
10
|
+
* ternary → or ('?' expr ':' expr)?
|
|
11
|
+
* or → and ('or' and)*
|
|
12
|
+
* and → not ('and' not)*
|
|
13
|
+
* not → 'not' comparison | comparison
|
|
14
|
+
* comparison → addition (('<'|'>'|'<='|'>='|'=='|'!=') addition)*
|
|
15
|
+
* addition → multiplication (('+' | '-') multiplication)*
|
|
16
|
+
* multiplication→ unary (('*' | '/' | '%') unary)*
|
|
17
|
+
* unary → '-' unary | primary
|
|
18
|
+
* primary → NUMBER | STRING | BOOL | IDENT ('[' expr ']')? | call | '(' expr ')'
|
|
19
|
+
* call → IDENT '(' args ')'
|
|
20
|
+
*/
|
|
21
|
+
export type NumberLit = {
|
|
22
|
+
kind: 'NumberLit';
|
|
23
|
+
value: number;
|
|
24
|
+
};
|
|
25
|
+
export type StringLit = {
|
|
26
|
+
kind: 'StringLit';
|
|
27
|
+
value: string;
|
|
28
|
+
};
|
|
29
|
+
export type BoolLit = {
|
|
30
|
+
kind: 'BoolLit';
|
|
31
|
+
value: boolean;
|
|
32
|
+
};
|
|
33
|
+
export type Identifier = {
|
|
34
|
+
kind: 'Identifier';
|
|
35
|
+
name: string;
|
|
36
|
+
};
|
|
37
|
+
export type IndexExpr = {
|
|
38
|
+
kind: 'IndexExpr';
|
|
39
|
+
series: Expr;
|
|
40
|
+
index: Expr;
|
|
41
|
+
};
|
|
42
|
+
export type CallExpr = {
|
|
43
|
+
kind: 'CallExpr';
|
|
44
|
+
callee: string;
|
|
45
|
+
args: Expr[];
|
|
46
|
+
};
|
|
47
|
+
export type BinaryExpr = {
|
|
48
|
+
kind: 'BinaryExpr';
|
|
49
|
+
op: '+' | '-' | '*' | '/' | '%' | '<' | '>' | '<=' | '>=' | '==' | '!=';
|
|
50
|
+
left: Expr;
|
|
51
|
+
right: Expr;
|
|
52
|
+
};
|
|
53
|
+
export type UnaryExpr = {
|
|
54
|
+
kind: 'UnaryExpr';
|
|
55
|
+
op: '-' | 'not';
|
|
56
|
+
operand: Expr;
|
|
57
|
+
};
|
|
58
|
+
export type TernaryExpr = {
|
|
59
|
+
kind: 'TernaryExpr';
|
|
60
|
+
condition: Expr;
|
|
61
|
+
consequent: Expr;
|
|
62
|
+
alternate: Expr;
|
|
63
|
+
};
|
|
64
|
+
export type LogicalExpr = {
|
|
65
|
+
kind: 'LogicalExpr';
|
|
66
|
+
op: 'and' | 'or';
|
|
67
|
+
left: Expr;
|
|
68
|
+
right: Expr;
|
|
69
|
+
};
|
|
70
|
+
export type Expr = NumberLit | StringLit | BoolLit | Identifier | IndexExpr | CallExpr | BinaryExpr | UnaryExpr | TernaryExpr | LogicalExpr;
|
|
71
|
+
export type IndicatorDecl = {
|
|
72
|
+
kind: 'IndicatorDecl';
|
|
73
|
+
title: string;
|
|
74
|
+
};
|
|
75
|
+
export type AssignStmt = {
|
|
76
|
+
kind: 'AssignStmt';
|
|
77
|
+
name: string;
|
|
78
|
+
value: Expr;
|
|
79
|
+
};
|
|
80
|
+
export type ExprStmt = {
|
|
81
|
+
kind: 'ExprStmt';
|
|
82
|
+
expr: Expr;
|
|
83
|
+
};
|
|
84
|
+
export type Stmt = IndicatorDecl | AssignStmt | ExprStmt;
|
|
85
|
+
export type Program = {
|
|
86
|
+
kind: 'Program';
|
|
87
|
+
stmts: Stmt[];
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=ast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/tscript/ast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,MAAM,MAAM,SAAS,GAAI;IAAE,IAAI,EAAE,WAAW,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/D,MAAM,MAAM,SAAS,GAAI;IAAE,IAAI,EAAE,WAAW,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/D,MAAM,MAAM,OAAO,GAAM;IAAE,IAAI,EAAE,SAAS,CAAC;IAAI,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAChE,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAI9D,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAI,WAAW,CAAC;IACpB,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAG,IAAI,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAG,UAAU,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAI,IAAI,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAG,YAAY,CAAC;IACpB,EAAE,EAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3E,IAAI,EAAG,IAAI,CAAC;IACZ,KAAK,EAAE,IAAI,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAI,WAAW,CAAC;IACpB,EAAE,EAAM,GAAG,GAAG,KAAK,CAAC;IACpB,OAAO,EAAE,IAAI,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAQ,aAAa,CAAC;IAC1B,SAAS,EAAG,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,EAAG,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAG,aAAa,CAAC;IACrB,EAAE,EAAK,KAAK,GAAG,IAAI,CAAC;IACpB,IAAI,EAAG,IAAI,CAAC;IACZ,KAAK,EAAE,IAAI,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,IAAI,GACZ,SAAS,GACT,SAAS,GACT,OAAO,GACP,UAAU,GACV,SAAS,GACT,QAAQ,GACR,UAAU,GACV,SAAS,GACT,WAAW,GACX,WAAW,CAAC;AAIhB,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAG,eAAe,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAG,YAAY,CAAC;IACpB,IAAI,EAAG,MAAM,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEzD,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAG,SAAS,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TScript Lexer — converts source text into a flat token stream.
|
|
3
|
+
*
|
|
4
|
+
* Token types:
|
|
5
|
+
* NUMBER — 42, 3.14, .5
|
|
6
|
+
* STRING — "hello" or 'hello'
|
|
7
|
+
* BOOL — true / false
|
|
8
|
+
* IDENT — identifier or keyword
|
|
9
|
+
* OP — single/double-char operator
|
|
10
|
+
* LPAREN, RPAREN, LBRACKET, RBRACKET, COMMA, EQ, NEWLINE
|
|
11
|
+
* EOF
|
|
12
|
+
*/
|
|
13
|
+
export type TokenKind = 'NUMBER' | 'STRING' | 'BOOL' | 'IDENT' | 'PLUS' | 'MINUS' | 'STAR' | 'SLASH' | 'PERCENT' | 'LT' | 'GT' | 'LTE' | 'GTE' | 'EQEQ' | 'NEQ' | 'QMARK' | 'COLON' | 'LPAREN' | 'RPAREN' | 'LBRACKET' | 'RBRACKET' | 'COMMA' | 'EQ' | 'NEWLINE' | 'EOF';
|
|
14
|
+
export type Token = {
|
|
15
|
+
kind: TokenKind;
|
|
16
|
+
value: string;
|
|
17
|
+
line: number;
|
|
18
|
+
col: number;
|
|
19
|
+
};
|
|
20
|
+
export declare class Lexer {
|
|
21
|
+
private _src;
|
|
22
|
+
private _pos;
|
|
23
|
+
private _line;
|
|
24
|
+
private _col;
|
|
25
|
+
constructor(src: string);
|
|
26
|
+
tokenize(): Token[];
|
|
27
|
+
private _make;
|
|
28
|
+
private _peek;
|
|
29
|
+
private _isAlpha;
|
|
30
|
+
private _isAlphaNum;
|
|
31
|
+
private _skipWhitespaceAndComments;
|
|
32
|
+
private _readNumber;
|
|
33
|
+
private _readString;
|
|
34
|
+
private _readIdent;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=lexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../src/tscript/lexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,SAAS,GACjB,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GACtC,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAC/C,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAC5C,OAAO,GAAG,OAAO,GACjB,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAC7C,OAAO,GAAG,IAAI,GACd,SAAS,GAAG,KAAK,CAAC;AAEtB,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAI,SAAS,CAAC;IAClB,KAAK,EAAG,MAAM,CAAC;IACf,IAAI,EAAI,MAAM,CAAC;IACf,GAAG,EAAK,MAAM,CAAC;CAChB,CAAC;AAKF,qBAAa,KAAK;IAChB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,IAAI,CAAc;gBAEd,GAAG,EAAE,MAAM;IAIvB,QAAQ,IAAI,KAAK,EAAE;IAmEnB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,0BAA0B;IAmBlC,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,UAAU;CAenB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TScript Parser — recursive-descent, produces a typed AST.
|
|
3
|
+
*
|
|
4
|
+
* Precedence (low → high):
|
|
5
|
+
* ternary ? :
|
|
6
|
+
* or
|
|
7
|
+
* and
|
|
8
|
+
* not
|
|
9
|
+
* comparison < > <= >= == !=
|
|
10
|
+
* addition + -
|
|
11
|
+
* multiply * / %
|
|
12
|
+
* unary - (prefix)
|
|
13
|
+
* primary literals, identifiers, index [], call()
|
|
14
|
+
*/
|
|
15
|
+
import type { Program } from './ast';
|
|
16
|
+
export declare class Parser {
|
|
17
|
+
private _tokens;
|
|
18
|
+
private _pos;
|
|
19
|
+
constructor(src: string);
|
|
20
|
+
parse(): Program;
|
|
21
|
+
private _stmt;
|
|
22
|
+
private _indicatorDecl;
|
|
23
|
+
private _assign;
|
|
24
|
+
private _exprStmt;
|
|
25
|
+
private _expr;
|
|
26
|
+
private _ternary;
|
|
27
|
+
private _or;
|
|
28
|
+
private _and;
|
|
29
|
+
private _not;
|
|
30
|
+
private _comparison;
|
|
31
|
+
private _addition;
|
|
32
|
+
private _multiplication;
|
|
33
|
+
private _unary;
|
|
34
|
+
private _primary;
|
|
35
|
+
private _callExpr;
|
|
36
|
+
private _binop;
|
|
37
|
+
private _current;
|
|
38
|
+
private _advance;
|
|
39
|
+
private _check;
|
|
40
|
+
private _checkIdent;
|
|
41
|
+
private _peekKind;
|
|
42
|
+
private _match;
|
|
43
|
+
private _consume;
|
|
44
|
+
private _consumeIdent;
|
|
45
|
+
private _consumeNewlineOrEOF;
|
|
46
|
+
private _skipNewlines;
|
|
47
|
+
private _collapseNewlines;
|
|
48
|
+
private _isStatementBoundary;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/tscript/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,OAAO,EAKR,MAAM,OAAO,CAAC;AAIf,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAa;gBAEb,GAAG,EAAE,MAAM;IAMvB,KAAK,IAAI,OAAO;IAYhB,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,GAAG;IAWX,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,QAAQ;IAgEhB,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,oBAAoB;CAC7B"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TScript Runtime — tree-walking interpreter.
|
|
3
|
+
*
|
|
4
|
+
* Execution model
|
|
5
|
+
* ───────────────
|
|
6
|
+
* A TScript program is executed once per compiled bar in left-to-right,
|
|
7
|
+
* top-to-bottom statement order. The runtime keeps a persistent `Scope`
|
|
8
|
+
* so that `Series` variables accumulate history across bars.
|
|
9
|
+
*
|
|
10
|
+
* Built-in series (available in every script):
|
|
11
|
+
* open, high, low, close, volume, hl2, hlc3, ohlc4, bar_index
|
|
12
|
+
*
|
|
13
|
+
* Built-in TA functions:
|
|
14
|
+
* sma(src, length) — simple moving average
|
|
15
|
+
* ema(src, length) — exponential moving average
|
|
16
|
+
* wma(src, length) — weighted moving average
|
|
17
|
+
* rma(src, length) — Wilder's (RMA) moving average
|
|
18
|
+
* stdev(src, length) — rolling standard deviation
|
|
19
|
+
* highest(src, n) — rolling max over n bars
|
|
20
|
+
* lowest(src, n) — rolling min over n bars
|
|
21
|
+
* change(src, n?) — src - src[n] (default n=1)
|
|
22
|
+
* mom(src, length) — momentum = change(src, length)
|
|
23
|
+
* atr(length) — Average True Range
|
|
24
|
+
* crossover(a, b) — a crosses above b
|
|
25
|
+
* crossunder(a, b) — a crosses below b
|
|
26
|
+
* nz(x, y?) — replace NaN with y (default 0)
|
|
27
|
+
* na(x) — true if x is NaN
|
|
28
|
+
* abs(x) — Math.abs
|
|
29
|
+
* max(...) — Math.max over args
|
|
30
|
+
* min(...) — Math.min over args
|
|
31
|
+
* round(x) — Math.round
|
|
32
|
+
* floor(x) — Math.floor
|
|
33
|
+
* ceil(x) — Math.ceil
|
|
34
|
+
* sqrt(x) — Math.sqrt
|
|
35
|
+
* log(x) — Math.log
|
|
36
|
+
* pow(x, y) — Math.pow
|
|
37
|
+
* sign(x) — Math.sign
|
|
38
|
+
*
|
|
39
|
+
* Built-in utility functions:
|
|
40
|
+
* input(default, ...) — returns the default value (params resolved externally)
|
|
41
|
+
* plot(value, ...) — records a value for the current bar
|
|
42
|
+
* barssince(cond) — bars since condition was true
|
|
43
|
+
*/
|
|
44
|
+
import type { OHLCV } from '@forgecharts/types';
|
|
45
|
+
import { Series } from './series';
|
|
46
|
+
import type { IndicatorPoint } from '../core/IndicatorEngine';
|
|
47
|
+
/** A TScript value is a number, boolean, string, or Series. */
|
|
48
|
+
export type TValue = number | boolean | string | Series;
|
|
49
|
+
/** Scope maps variable names to their TScript values. */
|
|
50
|
+
export type Scope = Map<string, TValue>;
|
|
51
|
+
/** Result produced by a single script execution run. */
|
|
52
|
+
export type ScriptResult = {
|
|
53
|
+
/** Title from indicator("...") declaration. */
|
|
54
|
+
title: string;
|
|
55
|
+
/** Collected plot() calls for this run, in declaration order. */
|
|
56
|
+
plots: IndicatorPoint[][];
|
|
57
|
+
};
|
|
58
|
+
export declare class TScriptRuntime {
|
|
59
|
+
private readonly _program;
|
|
60
|
+
private readonly _scope;
|
|
61
|
+
private readonly _plotSeries;
|
|
62
|
+
title: string;
|
|
63
|
+
constructor(src: string);
|
|
64
|
+
/**
|
|
65
|
+
* Execute one bar.
|
|
66
|
+
*
|
|
67
|
+
* Call this in chronological order for every OHLCV bar.
|
|
68
|
+
* The runtime updates all built-in series with the bar's OHLCV values,
|
|
69
|
+
* then re-executes the full program body.
|
|
70
|
+
*
|
|
71
|
+
* @returns the current values of all `plot()` series after this bar.
|
|
72
|
+
*/
|
|
73
|
+
execBar(bar: OHLCV, barIndex: number): void;
|
|
74
|
+
/**
|
|
75
|
+
* Run the full bar history and return IndicatorPoint arrays indexed by
|
|
76
|
+
* plot() call order.
|
|
77
|
+
*
|
|
78
|
+
* @param bars chronologically ordered OHLCV array
|
|
79
|
+
*/
|
|
80
|
+
run(bars: readonly OHLCV[]): IndicatorPoint[][];
|
|
81
|
+
/**
|
|
82
|
+
* Snapshot the current plot series as IndicatorPoint arrays.
|
|
83
|
+
* Must be called after `run()` or after the last `execBar()`.
|
|
84
|
+
* @param bars the same bar array passed to run() — used for timestamps.
|
|
85
|
+
*/
|
|
86
|
+
getPlots(bars: readonly OHLCV[]): IndicatorPoint[][];
|
|
87
|
+
/** Reset all persistent series state (call on symbol/timeframe change). */
|
|
88
|
+
reset(): void;
|
|
89
|
+
private _execStmt;
|
|
90
|
+
private _execAssign;
|
|
91
|
+
private _evalExpr;
|
|
92
|
+
private _evalIdent;
|
|
93
|
+
private _evalIndex;
|
|
94
|
+
private _evalBinary;
|
|
95
|
+
private _evalUnary;
|
|
96
|
+
private _evalTernary;
|
|
97
|
+
private _evalLogical;
|
|
98
|
+
private _plotIdx;
|
|
99
|
+
private _evalCall;
|
|
100
|
+
/** Resolve a call argument as a Series (wrapping scalar if needed). */
|
|
101
|
+
private _argSeries;
|
|
102
|
+
private _argInt;
|
|
103
|
+
private _ta_sma;
|
|
104
|
+
private _ta_ema;
|
|
105
|
+
private _ta_wma;
|
|
106
|
+
private _ta_rma;
|
|
107
|
+
private _ta_stdev;
|
|
108
|
+
private _ta_rolling;
|
|
109
|
+
private _ta_change;
|
|
110
|
+
private _ta_atr;
|
|
111
|
+
private _ta_crossover;
|
|
112
|
+
private _ta_crossunder;
|
|
113
|
+
private _ta_barssince;
|
|
114
|
+
/** Persistent scalar state for stateful TA functions (EMA, RMA, ATR). */
|
|
115
|
+
private readonly _internalState;
|
|
116
|
+
private _getInternalNum;
|
|
117
|
+
private _setInternal;
|
|
118
|
+
/** Push a value into a named built-in Series, creating it if needed. */
|
|
119
|
+
private _pushBuiltin;
|
|
120
|
+
/** Compute a simple rolling average directly from a Series (no state). */
|
|
121
|
+
private _smaOfSeries;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/tscript/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AASlC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAI9D,+DAA+D;AAC/D,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAExD,yDAAyD;AACzD,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAExC,wDAAwD;AACxD,MAAM,MAAM,YAAY,GAAG;IACzB,+CAA+C;IAC/C,KAAK,EAAG,MAAM,CAAC;IACf,iEAAiE;IACjE,KAAK,EAAG,cAAc,EAAE,EAAE,CAAC;CAC5B,CAAC;AAoBF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAG7C,KAAK,EAAE,MAAM,CAAY;gBAEb,GAAG,EAAE,MAAM;IAYvB;;;;;;;;OAQG;IACH,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAqB3C;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,SAAS,KAAK,EAAE,GAAG,cAAc,EAAE,EAAE;IAQ/C;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,KAAK,EAAE,GAAG,cAAc,EAAE,EAAE;IAapD,2EAA2E;IAC3E,KAAK,IAAI,IAAI;IAUb,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,QAAQ,CAAK;IAErB,OAAO,CAAC,SAAS;IA0EjB,uEAAuE;IACvE,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,OAAO;IAqBf,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,aAAa;IAUrB,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAE5D,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,YAAY;IAIpB,wEAAwE;IACxE,OAAO,CAAC,YAAY;IASpB,0EAA0E;IAC1E,OAAO,CAAC,YAAY;CAKrB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TScript Series — fixed-capacity ring buffer for historical bar data.
|
|
3
|
+
*
|
|
4
|
+
* Access pattern mirrors Pine Script:
|
|
5
|
+
* series.value — current (bar 0) value
|
|
6
|
+
* series.get(0) — same as .value
|
|
7
|
+
* series.get(1) — 1 bar ago
|
|
8
|
+
* series.get(n) — n bars ago (returns NaN if out of range)
|
|
9
|
+
*
|
|
10
|
+
* Internally the ring buffer stores the `capacity` most recent values in a
|
|
11
|
+
* circular array, so `.push()` is O(1) with no allocation after warm-up.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const s = new Series(500);
|
|
16
|
+
* s.push(1); s.push(2); s.push(3);
|
|
17
|
+
* s.get(0); // 3 (current)
|
|
18
|
+
* s.get(1); // 2 (one bar ago)
|
|
19
|
+
* s.get(2); // 1 (two bars ago)
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare class Series {
|
|
23
|
+
private readonly _buf;
|
|
24
|
+
private readonly _cap;
|
|
25
|
+
private _head;
|
|
26
|
+
private _len;
|
|
27
|
+
constructor(capacity?: number);
|
|
28
|
+
/** Append a new value at the current bar position. */
|
|
29
|
+
push(value: number): void;
|
|
30
|
+
/**
|
|
31
|
+
* Retrieve a historical value.
|
|
32
|
+
* @param lookback 0 = current bar, 1 = previous bar, etc.
|
|
33
|
+
*/
|
|
34
|
+
get(lookback: number): number;
|
|
35
|
+
/** Alias for get(0). */
|
|
36
|
+
get value(): number;
|
|
37
|
+
/** Number of values stored (up to capacity). */
|
|
38
|
+
get length(): number;
|
|
39
|
+
/** Ring-buffer capacity. */
|
|
40
|
+
get capacity(): number;
|
|
41
|
+
/**
|
|
42
|
+
* Snapshot: returns all stored values in chronological order
|
|
43
|
+
* (oldest first, newest last).
|
|
44
|
+
*/
|
|
45
|
+
toArray(): number[];
|
|
46
|
+
/** Reset the buffer (e.g. on symbol change). */
|
|
47
|
+
reset(): void;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=series.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"series.d.ts","sourceRoot":"","sources":["../../src/tscript/series.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,IAAI,CAAc;gBAEd,QAAQ,SAAO;IAK3B,sDAAsD;IACtD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMzB;;;OAGG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAO7B,wBAAwB;IACxB,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,gDAAgD;IAChD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,4BAA4B;IAC5B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;OAGG;IACH,OAAO,IAAI,MAAM,EAAE;IAQnB,gDAAgD;IAChD,KAAK,IAAI,IAAI;CAKd"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { SeriesOptions } from '@forgecharts/types';
|
|
2
|
+
import type { ISeries } from './ISeries';
|
|
3
|
+
import type { CoordTransform } from '../core/CoordTransform';
|
|
4
|
+
export interface IChart {
|
|
5
|
+
/**
|
|
6
|
+
* Adds a new series to the chart and returns a handle for data management.
|
|
7
|
+
*/
|
|
8
|
+
addSeries(options: SeriesOptions): ISeries;
|
|
9
|
+
/**
|
|
10
|
+
* Removes a previously added series.
|
|
11
|
+
*/
|
|
12
|
+
removeSeries(series: ISeries): void;
|
|
13
|
+
/**
|
|
14
|
+
* Registers a plugin that participates in the render loop.
|
|
15
|
+
*/
|
|
16
|
+
addPlugin(plugin: IChartPlugin): void;
|
|
17
|
+
/**
|
|
18
|
+
* Deregisters a plugin.
|
|
19
|
+
*/
|
|
20
|
+
removePlugin(plugin: IChartPlugin): void;
|
|
21
|
+
/**
|
|
22
|
+
* Applies partial chart options at runtime (theme, scale options, etc.).
|
|
23
|
+
*/
|
|
24
|
+
applyOptions(options: import('@forgecharts/types').ChartOptions): void;
|
|
25
|
+
/**
|
|
26
|
+
* Manually sets the canvas dimensions. Usually called from ResizeObserver.
|
|
27
|
+
*/
|
|
28
|
+
resize(width: number, height: number): void;
|
|
29
|
+
/**
|
|
30
|
+
* Tears down all resources and removes canvas elements from the DOM.
|
|
31
|
+
*/
|
|
32
|
+
destroy(): void;
|
|
33
|
+
/**
|
|
34
|
+
* Returns the coordinate transform for pixel ↔ data conversions.
|
|
35
|
+
* The returned instance is kept up-to-date across resizes; callers may
|
|
36
|
+
* hold a stable reference.
|
|
37
|
+
*/
|
|
38
|
+
transform(): CoordTransform;
|
|
39
|
+
}
|
|
40
|
+
export interface IChartPlugin {
|
|
41
|
+
/** Called once when the plugin is added to a chart. */
|
|
42
|
+
onAttach(chart: IChart): void;
|
|
43
|
+
/** Called once when the plugin is removed from a chart. */
|
|
44
|
+
onDetach(): void;
|
|
45
|
+
/** Called every animation frame after series are rendered. */
|
|
46
|
+
onRender(): void;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=IChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IChart.d.ts","sourceRoot":"","sources":["../../src/types/IChart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC;IAE3C;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAEpC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAEtC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAEzC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,oBAAoB,EAAE,YAAY,GAAG,IAAI,CAAC;IAEvE;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;;;OAIG;IACH,SAAS,IAAI,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2DAA2D;IAC3D,QAAQ,IAAI,IAAI,CAAC;IACjB,8DAA8D;IAC9D,QAAQ,IAAI,IAAI,CAAC;CAClB"}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import type { OHLCV, SeriesOptions, Viewport, Rect } from '@forgecharts/types';
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* IRenderer — contract for all series drawing strategies.
|
|
5
4
|
* Each renderer receives only what it needs: bars, viewport, and target rect.
|
|
6
5
|
* No DOM or Chart references — pure canvas drawing.
|
|
7
6
|
*/
|
|
8
7
|
export interface IRenderer {
|
|
9
|
-
|
|
10
|
-
ctx: CanvasRenderingContext2D,
|
|
11
|
-
bars: readonly OHLCV[],
|
|
12
|
-
viewport: Viewport,
|
|
13
|
-
rect: Rect,
|
|
14
|
-
options: SeriesOptions,
|
|
15
|
-
): void;
|
|
8
|
+
draw(ctx: CanvasRenderingContext2D, bars: readonly OHLCV[], viewport: Viewport, rect: Rect, options: SeriesOptions): void;
|
|
16
9
|
}
|
|
10
|
+
//# sourceMappingURL=IRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IRenderer.d.ts","sourceRoot":"","sources":["../../src/types/IRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,CACF,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,SAAS,KAAK,EAAE,EACtB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,aAAa,GACrB,IAAI,CAAC;CACT"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { OHLCV, SeriesOptions } from '@forgecharts/types';
|
|
2
|
+
export interface ISeries {
|
|
3
|
+
/**
|
|
4
|
+
* Replaces the entire dataset. Data need not be pre-sorted.
|
|
5
|
+
*/
|
|
6
|
+
setData(data: readonly OHLCV[]): void;
|
|
7
|
+
/**
|
|
8
|
+
* Appends or updates the last bar.
|
|
9
|
+
* If bar.time === last bar's time, the bar is updated (real-time tick).
|
|
10
|
+
* Otherwise, the bar is appended.
|
|
11
|
+
*/
|
|
12
|
+
update(bar: OHLCV): void;
|
|
13
|
+
/**
|
|
14
|
+
* Returns the current dataset (sorted ascending by time).
|
|
15
|
+
*/
|
|
16
|
+
data(): readonly OHLCV[];
|
|
17
|
+
/**
|
|
18
|
+
* Merges partial options into the series configuration.
|
|
19
|
+
*/
|
|
20
|
+
applyOptions(options: Partial<SeriesOptions>): void;
|
|
21
|
+
/**
|
|
22
|
+
* Returns the current fully-resolved series options.
|
|
23
|
+
*/
|
|
24
|
+
options(): SeriesOptions;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=ISeries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ISeries.d.ts","sourceRoot":"","sources":["../../src/types/ISeries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,KAAK,EAAE,GAAG,IAAI,CAAC;IAEtC;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC;IAEzB;;OAEG;IACH,IAAI,IAAI,SAAS,KAAK,EAAE,CAAC;IAEzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IAEpD;;OAEG;IACH,OAAO,IAAI,aAAa,CAAC;CAC1B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forgecharts/sdk",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.29",
|
|
4
4
|
"description": "ForgeCharts SDK — canvas-based charting engine, no third-party chart libraries",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,6 +35,10 @@
|
|
|
35
35
|
"require": "./dist/react/internal.js"
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
|
+
"files": [
|
|
39
|
+
"dist",
|
|
40
|
+
"README.md"
|
|
41
|
+
],
|
|
38
42
|
"sideEffects": false,
|
|
39
43
|
"scripts": {
|
|
40
44
|
"build": "tsup --no-dts && tsc --build --force tsconfig.json",
|