@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,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChartRuntimeResolver
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for runtime capability queries.
|
|
5
|
+
* Mode is always derived from the installed LicenseManager state — it is
|
|
6
|
+
* never passed in by chart config, ensuring clients cannot bypass the
|
|
7
|
+
* license-driven mode selection.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* import { ChartRuntimeResolver } from '@forgecharts/sdk';
|
|
11
|
+
* const resolver = ChartRuntimeResolver.getInstance();
|
|
12
|
+
*
|
|
13
|
+
* resolver.isManagedMode() // true when a managed license is active
|
|
14
|
+
* resolver.isUnmanagedMode() // true when no license or unmanaged license
|
|
15
|
+
* resolver.canUseOrderEntry() // built-in order entry UI
|
|
16
|
+
* resolver.canUseExternalIngestion() // external data ingestion APIs
|
|
17
|
+
* resolver.canRenderOverlays() // overlay rendering
|
|
18
|
+
* resolver.canUseIndicators() // indicator panel
|
|
19
|
+
* resolver.canUseManagedTrading() // managed broker / execution hooks
|
|
20
|
+
* resolver.canUseDraggableOrders() // drag-to-price order placement
|
|
21
|
+
* resolver.canUseBracketOrders() // bracket / OCO order support
|
|
22
|
+
*
|
|
23
|
+
* Capability matrix
|
|
24
|
+
* ─────────────────────────────────────────────────────
|
|
25
|
+
* Capability unmanaged managed
|
|
26
|
+
* ─────────────────────────────────────────────────────
|
|
27
|
+
* externalIngestion ✓ ✗ (managed feed owns data)
|
|
28
|
+
* overlays ✓ ✓ (both modes render overlays)
|
|
29
|
+
* indicators ✓ ✓
|
|
30
|
+
* orderEntry ✗ ✓ (requires managed license)
|
|
31
|
+
* managedTrading ✗ ✓
|
|
32
|
+
* draggableOrders ✗ ✓
|
|
33
|
+
* bracketOrders ✗ ✓
|
|
34
|
+
* ─────────────────────────────────────────────────────
|
|
35
|
+
*
|
|
36
|
+
* Feature flags in the LicensePayload can further restrict capabilities
|
|
37
|
+
* within a mode. A managed license with `orderEntry: false` will still
|
|
38
|
+
* return false from canUseOrderEntry().
|
|
39
|
+
*/
|
|
40
|
+
export declare class ChartRuntimeResolver {
|
|
41
|
+
#private;
|
|
42
|
+
private static instance;
|
|
43
|
+
/** Always read from the singleton LicenseManager — never store a copy. */
|
|
44
|
+
private get lm();
|
|
45
|
+
private constructor();
|
|
46
|
+
static getInstance(): ChartRuntimeResolver;
|
|
47
|
+
/** True when the active license is in managed mode. */
|
|
48
|
+
isManagedMode(): boolean;
|
|
49
|
+
/** True when no license is installed or the license is in unmanaged mode. */
|
|
50
|
+
isUnmanagedMode(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* External data ingestion APIs (e.g. pushing tick data from an external broker).
|
|
53
|
+
* Available in unmanaged mode only — in managed mode the built-in feed owns data.
|
|
54
|
+
* Override via `unmanagedIngestion` feature flag on a managed license if needed.
|
|
55
|
+
*/
|
|
56
|
+
canUseExternalIngestion(): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Overlay rendering from external state (price levels, zones, signals).
|
|
59
|
+
* Enabled in both modes by default; can be restricted via feature flag.
|
|
60
|
+
*/
|
|
61
|
+
canRenderOverlays(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Indicator panel / computations.
|
|
64
|
+
* Enabled in both modes by default; can be restricted via feature flag.
|
|
65
|
+
*/
|
|
66
|
+
canUseIndicators(): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Built-in order entry UI hooks.
|
|
69
|
+
* Requires managed mode AND the `orderEntry` feature flag (or no flag restriction).
|
|
70
|
+
*/
|
|
71
|
+
canUseOrderEntry(): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Managed trading service hooks (broker execution, position management).
|
|
74
|
+
* Requires managed mode AND the `managedTrading` feature flag (or no flag restriction).
|
|
75
|
+
*/
|
|
76
|
+
canUseManagedTrading(): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Drag-to-price order placement.
|
|
79
|
+
* Requires managed mode AND the `draggableOrders` feature flag (or no flag restriction).
|
|
80
|
+
*/
|
|
81
|
+
canUseDraggableOrders(): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Bracket / OCO order support.
|
|
84
|
+
* Requires managed mode AND the `bracketOrders` feature flag (or no flag restriction).
|
|
85
|
+
*/
|
|
86
|
+
canUseBracketOrders(): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Whether to render the order entry tool in the toolbar.
|
|
89
|
+
* Hidden in unmanaged mode — requires managed license with order entry.
|
|
90
|
+
*/
|
|
91
|
+
canRenderOrderEntry(): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Whether to render Buy / Sell action buttons on the chart or toolbar.
|
|
94
|
+
* Hidden in unmanaged mode — order placement requires managed license.
|
|
95
|
+
*/
|
|
96
|
+
canRenderBuySellButtons(): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Whether to render the order ticket panel (entry form / DOM entry).
|
|
99
|
+
* Requires managed mode with order entry enabled.
|
|
100
|
+
*/
|
|
101
|
+
canRenderOrderTicket(): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Whether to render bracket order controls (TP, SL, OCO).
|
|
104
|
+
* Requires managed mode with order entry AND the bracketOrders feature flag.
|
|
105
|
+
* If order entry itself is disabled, bracket controls are also hidden.
|
|
106
|
+
*/
|
|
107
|
+
canRenderBracketControls(): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Whether to render order modification controls (drag-to-modify, edit panel).
|
|
110
|
+
* Requires managed mode with order entry AND the draggableOrders feature flag.
|
|
111
|
+
* If order entry itself is disabled, modification controls are also hidden.
|
|
112
|
+
*/
|
|
113
|
+
canRenderOrderModificationControls(): boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Whether to render the managed trading control panel as a whole.
|
|
116
|
+
* Guards the container that holds buy/sell, order ticket, bracket controls, etc.
|
|
117
|
+
*/
|
|
118
|
+
canRenderManagedTradingControls(): boolean;
|
|
119
|
+
/**
|
|
120
|
+
* True when the chart is in external-overlay-only (unmanaged) mode.
|
|
121
|
+
* Drives rendering of the external data overlay panel while suppressing
|
|
122
|
+
* all order entry UI elements.
|
|
123
|
+
*/
|
|
124
|
+
canRenderExternalOverlayOnlyMode(): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Positions are always rendered regardless of license mode.
|
|
127
|
+
* Data flows from TradingOverlayStore (host-pushed in unmanaged,
|
|
128
|
+
* ManagedTradingController-driven in managed).
|
|
129
|
+
*/
|
|
130
|
+
canRenderPositions(): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Execution fills are always rendered regardless of license mode.
|
|
133
|
+
*/
|
|
134
|
+
canRenderFills(): boolean;
|
|
135
|
+
/**
|
|
136
|
+
* Candles are always rendered — unaffected by license mode.
|
|
137
|
+
* The RapidAPI datafeed remains active in all modes.
|
|
138
|
+
*/
|
|
139
|
+
canRenderCandles(): boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Indicator panel follows the `indicators` feature flag.
|
|
142
|
+
* Enabled in both modes by default.
|
|
143
|
+
*/
|
|
144
|
+
canRenderIndicators(): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Drawing tools are always available regardless of license mode.
|
|
147
|
+
*/
|
|
148
|
+
canRenderDrawings(): boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Returns the full capability set as a plain object — useful for logging,
|
|
151
|
+
* debug panels, or passing state to React context in one call.
|
|
152
|
+
*/
|
|
153
|
+
getCapabilities(): ChartCapabilities;
|
|
154
|
+
}
|
|
155
|
+
export interface ChartCapabilities {
|
|
156
|
+
mode: 'managed' | 'unmanaged';
|
|
157
|
+
externalIngestion: boolean;
|
|
158
|
+
overlays: boolean;
|
|
159
|
+
indicators: boolean;
|
|
160
|
+
orderEntry: boolean;
|
|
161
|
+
managedTrading: boolean;
|
|
162
|
+
draggableOrders: boolean;
|
|
163
|
+
bracketOrders: boolean;
|
|
164
|
+
/** Show the order entry tool in toolbars (managed only). */
|
|
165
|
+
renderOrderEntry: boolean;
|
|
166
|
+
/** Show Buy / Sell action buttons (managed only). */
|
|
167
|
+
renderBuySellButtons: boolean;
|
|
168
|
+
/** Show the order ticket / entry form (managed only). */
|
|
169
|
+
renderOrderTicket: boolean;
|
|
170
|
+
/** Show bracket order controls — TP, SL, OCO (managed + bracketOrders). */
|
|
171
|
+
renderBracketControls: boolean;
|
|
172
|
+
/** Show order modification controls — drag handles, edit panel (managed + draggableOrders). */
|
|
173
|
+
renderOrderModificationControls: boolean;
|
|
174
|
+
/** Show the entire managed trading panel as a composite gate. */
|
|
175
|
+
renderManagedTradingControls: boolean;
|
|
176
|
+
/** True when operating in external-overlay-only (unmanaged) mode. */
|
|
177
|
+
renderExternalOverlayOnly: boolean;
|
|
178
|
+
/** Positions always rendered — data controlled by TradingOverlayStore. */
|
|
179
|
+
renderPositions: boolean;
|
|
180
|
+
/** Execution fills always rendered. */
|
|
181
|
+
renderFills: boolean;
|
|
182
|
+
/** Candles always rendered — RapidAPI datafeed unaffected by mode. */
|
|
183
|
+
renderCandles: boolean;
|
|
184
|
+
/** Indicators follow the `indicators` feature flag (both modes). */
|
|
185
|
+
renderIndicators: boolean;
|
|
186
|
+
/** Drawing tools always available regardless of license mode. */
|
|
187
|
+
renderDrawings: boolean;
|
|
188
|
+
}
|
|
189
|
+
/** True when a managed license is active. */
|
|
190
|
+
export declare const isManagedMode: () => boolean;
|
|
191
|
+
/** True when no license or unmanaged license is active (safe default). */
|
|
192
|
+
export declare const isUnmanagedMode: () => boolean;
|
|
193
|
+
/** External data ingestion APIs (unmanaged mode only by default). */
|
|
194
|
+
export declare const canUseExternalIngestion: () => boolean;
|
|
195
|
+
/** Overlay rendering — enabled in both modes. */
|
|
196
|
+
export declare const canRenderOverlays: () => boolean;
|
|
197
|
+
/** Indicator computations — enabled in both modes. */
|
|
198
|
+
export declare const canUseIndicators: () => boolean;
|
|
199
|
+
/** Built-in order entry UI — managed mode only. */
|
|
200
|
+
export declare const canUseOrderEntry: () => boolean;
|
|
201
|
+
/** Managed trading service hooks — managed mode only. */
|
|
202
|
+
export declare const canUseManagedTrading: () => boolean;
|
|
203
|
+
/** Drag-to-price order placement — managed mode only. */
|
|
204
|
+
export declare const canUseDraggableOrders: () => boolean;
|
|
205
|
+
/** Bracket / OCO order support — managed mode only. */
|
|
206
|
+
export declare const canUseBracketOrders: () => boolean;
|
|
207
|
+
/** Full capability snapshot as a plain object. */
|
|
208
|
+
export declare const getCapabilities: () => ChartCapabilities;
|
|
209
|
+
/** Whether to render the order entry tool in toolbars (managed only). */
|
|
210
|
+
export declare const canRenderOrderEntry: () => boolean;
|
|
211
|
+
/** Whether to render Buy/Sell buttons (managed only). */
|
|
212
|
+
export declare const canRenderBuySellButtons: () => boolean;
|
|
213
|
+
/** Whether to render the order ticket panel (managed only). */
|
|
214
|
+
export declare const canRenderOrderTicket: () => boolean;
|
|
215
|
+
/** Whether to render bracket / OCO controls (managed + bracketOrders feature). */
|
|
216
|
+
export declare const canRenderBracketControls: () => boolean;
|
|
217
|
+
/** Whether to render drag/edit order modification controls (managed + draggableOrders). */
|
|
218
|
+
export declare const canRenderOrderModificationControls: () => boolean;
|
|
219
|
+
/** Whether to render the managed trading control panel (managed only). */
|
|
220
|
+
export declare const canRenderManagedTradingControls: () => boolean;
|
|
221
|
+
/** True when in external-overlay-only (unmanaged) mode — hides all order-entry UI. */
|
|
222
|
+
export declare const canRenderExternalOverlayOnlyMode: () => boolean;
|
|
223
|
+
/** Positions always rendered regardless of mode. */
|
|
224
|
+
export declare const canRenderPositions: () => boolean;
|
|
225
|
+
/** Execution fills always rendered regardless of mode. */
|
|
226
|
+
export declare const canRenderFills: () => boolean;
|
|
227
|
+
/** Candles always rendered — RapidAPI datafeed unaffected by mode. */
|
|
228
|
+
export declare const canRenderCandles: () => boolean;
|
|
229
|
+
/** Indicators follow the indicators feature flag (both modes by default). */
|
|
230
|
+
export declare const canRenderIndicators: () => boolean;
|
|
231
|
+
/** Drawing tools always available regardless of license mode. */
|
|
232
|
+
export declare const canRenderDrawings: () => boolean;
|
|
233
|
+
//# sourceMappingURL=ChartRuntimeResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartRuntimeResolver.d.ts","sourceRoot":"","sources":["../../src/licensing/ChartRuntimeResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { LicenseFeatures, LicenseMode, LicensePayload } from './licenseTypes';
|
|
2
|
+
/**
|
|
3
|
+
* LicenseManager — single source of truth for chart mode and feature access.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* const lm = LicenseManager.getInstance();
|
|
7
|
+
* await lm.validateLicense('my-key');
|
|
8
|
+
* lm.getMode(); // 'managed' | 'unmanaged'
|
|
9
|
+
* lm.hasFeature('orderEntry');
|
|
10
|
+
*/
|
|
11
|
+
export declare class LicenseManager {
|
|
12
|
+
private static instance;
|
|
13
|
+
private payload;
|
|
14
|
+
private readonly subscribers;
|
|
15
|
+
private constructor();
|
|
16
|
+
/**
|
|
17
|
+
* Subscribe to license state changes (loadLicense, validateLicense, clear).
|
|
18
|
+
* Returns an unsubscribe function — call it to stop receiving notifications.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const unsub = LicenseManager.getInstance().subscribe(() => {
|
|
22
|
+
* console.log('license changed', lm.getMode());
|
|
23
|
+
* });
|
|
24
|
+
* // later:
|
|
25
|
+
* unsub();
|
|
26
|
+
*/
|
|
27
|
+
subscribe(cb: () => void): () => void;
|
|
28
|
+
private notify;
|
|
29
|
+
static getInstance(): LicenseManager;
|
|
30
|
+
/**
|
|
31
|
+
* Validate a license key against the licensing endpoint.
|
|
32
|
+
*
|
|
33
|
+
* @param key The raw license key entered by the user.
|
|
34
|
+
* @param verifyUrl Full URL of the forgecharts-admin verify endpoint,
|
|
35
|
+
* e.g. "http://licenses.example.com:4100/api/public/license/verify"
|
|
36
|
+
*/
|
|
37
|
+
validateLicense(key: string, verifyUrl: string): Promise<LicensePayload>;
|
|
38
|
+
/** Load a pre-validated payload (e.g. from cache / localStorage). */
|
|
39
|
+
loadLicense(payload: LicensePayload): void;
|
|
40
|
+
/** Return the currently loaded payload, or null if none. */
|
|
41
|
+
getLicense(): LicensePayload | null;
|
|
42
|
+
/**
|
|
43
|
+
* The chart mode driven by the active license.
|
|
44
|
+
* Defaults to 'unmanaged' so no managed features appear without a valid
|
|
45
|
+
* managed license.
|
|
46
|
+
*/
|
|
47
|
+
getMode(): LicenseMode;
|
|
48
|
+
/** Return the feature flags for the active license. */
|
|
49
|
+
getFeatures(): LicenseFeatures;
|
|
50
|
+
/** Check whether a specific feature is enabled on the active license. */
|
|
51
|
+
hasFeature(name: keyof LicenseFeatures): boolean;
|
|
52
|
+
/** Clear the current license state (returns to safe unmanaged defaults). */
|
|
53
|
+
clear(): void;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=LicenseManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LicenseManager.d.ts","sourceRoot":"","sources":["../../src/licensing/LicenseManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKnF;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA+B;IAEtD,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAE1D,OAAO;IAEP;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAKrC,OAAO,CAAC,MAAM;IAMd,MAAM,CAAC,WAAW,IAAI,cAAc;IAOpC;;;;;;OAMG;IACG,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAqC9E,qEAAqE;IACrE,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAK1C,4DAA4D;IAC5D,UAAU,IAAI,cAAc,GAAG,IAAI;IAInC;;;;OAIG;IACH,OAAO,IAAI,WAAW;IAItB,uDAAuD;IACvD,WAAW,IAAI,eAAe;IAI9B,yEAAyE;IACzE,UAAU,CAAC,IAAI,EAAE,MAAM,eAAe,GAAG,OAAO;IAIhD,4EAA4E;IAC5E,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChartRuntimeResolver — unit tests
|
|
3
|
+
*
|
|
4
|
+
* Covers:
|
|
5
|
+
* - No license → unmanaged, all managed UI hidden, overlays/indicators/drawings visible
|
|
6
|
+
* - Unmanaged license → same as no license for UI gating
|
|
7
|
+
* - Managed license → all managed UI visible, external ingestion blocked
|
|
8
|
+
* - Feature flags override defaults within a mode
|
|
9
|
+
* - getCapabilities() snapshot is consistent with individual methods
|
|
10
|
+
* - Module-level convenience functions alias correctly
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=ChartRuntimeResolver.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartRuntimeResolver.test.d.ts","sourceRoot":"","sources":["../../../src/licensing/__tests__/ChartRuntimeResolver.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LicenseManager — unit tests
|
|
3
|
+
*
|
|
4
|
+
* Covers:
|
|
5
|
+
* - Default mode is 'unmanaged' with no license installed
|
|
6
|
+
* - loadLicense drives mode and features correctly
|
|
7
|
+
* - validateLicense resolves a payload (placeholder logic)
|
|
8
|
+
* - clear() resets to safe unmanaged defaults
|
|
9
|
+
* - subscribe/unsubscribe fires on every mutation
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=LicenseManager.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LicenseManager.test.d.ts","sourceRoot":"","sources":["../../../src/licensing/__tests__/LicenseManager.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type LicenseMode = 'managed' | 'unmanaged';
|
|
2
|
+
export interface LicenseFeatures {
|
|
3
|
+
orderEntry?: boolean;
|
|
4
|
+
overlays?: boolean;
|
|
5
|
+
indicators?: boolean;
|
|
6
|
+
managedTrading?: boolean;
|
|
7
|
+
unmanagedIngestion?: boolean;
|
|
8
|
+
draggableOrders?: boolean;
|
|
9
|
+
bracketOrders?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface LicensePayload {
|
|
12
|
+
licenseKey: string;
|
|
13
|
+
mode: LicenseMode;
|
|
14
|
+
plan?: string;
|
|
15
|
+
expires?: string;
|
|
16
|
+
features?: LicenseFeatures;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=licenseTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"licenseTypes.d.ts","sourceRoot":"","sources":["../../src/licensing/licenseTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PineCompiler — public entry point for the Pine Script compatibility layer.
|
|
3
|
+
*
|
|
4
|
+
* Pipeline:
|
|
5
|
+
* Pine source → PineLexer → PineToken[] → PineParser → PineProgram
|
|
6
|
+
* → PineTranspiler → TScript source → TScriptIndicator runtime
|
|
7
|
+
*/
|
|
8
|
+
import type { Diagnostic } from './diagnostics';
|
|
9
|
+
import type { OHLCV } from '@forgecharts/types';
|
|
10
|
+
import type { IndicatorPoint } from '../core/IndicatorEngine';
|
|
11
|
+
export type { Diagnostic };
|
|
12
|
+
export type { DiagnosticSeverity } from './diagnostics';
|
|
13
|
+
export interface PineCompileResult {
|
|
14
|
+
/** The transpiled TScript source string. */
|
|
15
|
+
readonly tscript: string;
|
|
16
|
+
readonly diagnostics: readonly Diagnostic[];
|
|
17
|
+
/** `true` when there are no error-severity diagnostics. */
|
|
18
|
+
readonly ok: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare class PineCompiler {
|
|
21
|
+
/**
|
|
22
|
+
* Compile Pine Script source to TScript.
|
|
23
|
+
* Parse errors throw a `SyntaxError`; semantic problems populate diagnostics.
|
|
24
|
+
*/
|
|
25
|
+
compile(pineSource: string): PineCompileResult;
|
|
26
|
+
/**
|
|
27
|
+
* Convenience: compile + run against a bar series.
|
|
28
|
+
* Returns the plot outputs and any diagnostics.
|
|
29
|
+
*/
|
|
30
|
+
static run(pineSource: string, bars: readonly OHLCV[]): {
|
|
31
|
+
plots: IndicatorPoint[][];
|
|
32
|
+
diagnostics: readonly Diagnostic[];
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=PineCompiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PineCompiler.d.ts","sourceRoot":"","sources":["../../src/pine/PineCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAY,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,YAAY,EAAE,UAAU,EAAE,CAAC;AAC3B,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,EAAM,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5C,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,EAAW,OAAO,CAAC;CAC/B;AAED,qBAAa,YAAY;IACvB;;;OAGG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB;IAgB9C;;;OAGG;IACH,MAAM,CAAC,GAAG,CACR,UAAU,EAAE,MAAM,EAClB,IAAI,EAAQ,SAAS,KAAK,EAAE,GAC3B;QAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC;QAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAA;KAAE;CAYrE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Diagnostic emitted by the Pine compiler pipeline. */
|
|
2
|
+
export type DiagnosticSeverity = 'error' | 'warning' | 'info';
|
|
3
|
+
export interface Diagnostic {
|
|
4
|
+
readonly severity: DiagnosticSeverity;
|
|
5
|
+
readonly message: string;
|
|
6
|
+
readonly line: number;
|
|
7
|
+
readonly col: number;
|
|
8
|
+
/** Machine-readable code, e.g. 'PINE_UNSUPPORTED_FN' */
|
|
9
|
+
readonly code: string;
|
|
10
|
+
}
|
|
11
|
+
export declare class DiagnosticBag {
|
|
12
|
+
private readonly _diags;
|
|
13
|
+
add(severity: DiagnosticSeverity, message: string, loc: {
|
|
14
|
+
line: number;
|
|
15
|
+
col: number;
|
|
16
|
+
}, code: string): void;
|
|
17
|
+
get diagnostics(): readonly Diagnostic[];
|
|
18
|
+
hasErrors(): boolean;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/pine/diagnostics.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAG,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAM,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAO,MAAM,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAM,MAAM,CAAC;CAC3B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,GAAG,CACD,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAG,MAAM,EAChB,GAAG,EAAO;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EACvC,IAAI,EAAM,MAAM,GACf,IAAI;IAIP,IAAI,WAAW,IAAI,SAAS,UAAU,EAAE,CAAwB;IAEhE,SAAS,IAAI,OAAO;CAGrB"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { PineParser }
|
|
1
|
+
export { PineParser } from './pine-parser';
|
|
2
2
|
export { PineTranspiler } from './pine-transpiler';
|
|
3
|
-
export { DiagnosticBag }
|
|
4
|
-
export { PineCompiler }
|
|
3
|
+
export { DiagnosticBag } from './diagnostics';
|
|
4
|
+
export { PineCompiler } from './PineCompiler';
|
|
5
5
|
export type { Diagnostic, DiagnosticSeverity } from './diagnostics';
|
|
6
6
|
export type { PineCompileResult } from './PineCompiler';
|
|
7
7
|
export type { PineProgram, PineStmt, PineExpr } from './pine-ast';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pine/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAU,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAO,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAQ,gBAAgB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pine Script AST types — subset understood by the ForgeCharts Pine compat layer.
|
|
3
|
+
*
|
|
4
|
+
* Supported Pine v5 constructs:
|
|
5
|
+
* indicator(title, overlay?, ...)
|
|
6
|
+
* input(defval, title?, ...) / input.int() / input.float() / input.bool() / input.source()
|
|
7
|
+
* ta.sma() ta.ema() ta.wma() ta.rma() ta.rsi() ta.macd()
|
|
8
|
+
* ta.stdev() ta.highest() ta.lowest() ta.change() ta.mom() ta.atr()
|
|
9
|
+
* ta.crossover() ta.crossunder() ta.barssince()
|
|
10
|
+
* math.abs() math.max() math.min() math.round() math.floor() math.ceil()
|
|
11
|
+
* math.sqrt() math.log() math.pow() math.sign()
|
|
12
|
+
* plot() plotshape()
|
|
13
|
+
* nz() na()
|
|
14
|
+
* if / else blocks
|
|
15
|
+
* var declarations
|
|
16
|
+
* ternary a ? b : c
|
|
17
|
+
*/
|
|
18
|
+
export type Loc = {
|
|
19
|
+
line: number;
|
|
20
|
+
col: number;
|
|
21
|
+
};
|
|
22
|
+
export type PineNumberLit = {
|
|
23
|
+
kind: 'PineNumberLit';
|
|
24
|
+
value: number;
|
|
25
|
+
loc: Loc;
|
|
26
|
+
};
|
|
27
|
+
export type PineStringLit = {
|
|
28
|
+
kind: 'PineStringLit';
|
|
29
|
+
value: string;
|
|
30
|
+
loc: Loc;
|
|
31
|
+
};
|
|
32
|
+
export type PineBoolLit = {
|
|
33
|
+
kind: 'PineBoolLit';
|
|
34
|
+
value: boolean;
|
|
35
|
+
loc: Loc;
|
|
36
|
+
};
|
|
37
|
+
export type PineColorLit = {
|
|
38
|
+
kind: 'PineColorLit';
|
|
39
|
+
value: string;
|
|
40
|
+
loc: Loc;
|
|
41
|
+
};
|
|
42
|
+
export type PineNa = {
|
|
43
|
+
kind: 'PineNa';
|
|
44
|
+
loc: Loc;
|
|
45
|
+
};
|
|
46
|
+
export type PineIdent = {
|
|
47
|
+
kind: 'PineIdent';
|
|
48
|
+
name: string;
|
|
49
|
+
loc: Loc;
|
|
50
|
+
};
|
|
51
|
+
/** Namespaced call: ta.sma(src, len) or math.abs(x) */
|
|
52
|
+
export type PineNsCall = {
|
|
53
|
+
kind: 'PineNsCall';
|
|
54
|
+
namespace: string;
|
|
55
|
+
fn: string;
|
|
56
|
+
args: PineExpr[];
|
|
57
|
+
namedArgs: Map<string, PineExpr>;
|
|
58
|
+
loc: Loc;
|
|
59
|
+
};
|
|
60
|
+
/** Plain function call: sma(src, len), indicator(...), plot(...) */
|
|
61
|
+
export type PineCall = {
|
|
62
|
+
kind: 'PineCall';
|
|
63
|
+
fn: string;
|
|
64
|
+
args: PineExpr[];
|
|
65
|
+
namedArgs: Map<string, PineExpr>;
|
|
66
|
+
loc: Loc;
|
|
67
|
+
};
|
|
68
|
+
export type PineIndex = {
|
|
69
|
+
kind: 'PineIndex';
|
|
70
|
+
series: PineExpr;
|
|
71
|
+
index: PineExpr;
|
|
72
|
+
loc: Loc;
|
|
73
|
+
};
|
|
74
|
+
export type PineBinary = {
|
|
75
|
+
kind: 'PineBinary';
|
|
76
|
+
op: '+' | '-' | '*' | '/' | '%' | '<' | '>' | '<=' | '>=' | '==' | '!=' | 'and' | 'or';
|
|
77
|
+
left: PineExpr;
|
|
78
|
+
right: PineExpr;
|
|
79
|
+
loc: Loc;
|
|
80
|
+
};
|
|
81
|
+
export type PineUnary = {
|
|
82
|
+
kind: 'PineUnary';
|
|
83
|
+
op: '-' | 'not';
|
|
84
|
+
operand: PineExpr;
|
|
85
|
+
loc: Loc;
|
|
86
|
+
};
|
|
87
|
+
export type PineTernary = {
|
|
88
|
+
kind: 'PineTernary';
|
|
89
|
+
condition: PineExpr;
|
|
90
|
+
consequent: PineExpr;
|
|
91
|
+
alternate: PineExpr;
|
|
92
|
+
loc: Loc;
|
|
93
|
+
};
|
|
94
|
+
/** Member access: color.red, bar_index, etc. — resolved at transpile time */
|
|
95
|
+
export type PineMember = {
|
|
96
|
+
kind: 'PineMember';
|
|
97
|
+
object: string;
|
|
98
|
+
prop: string;
|
|
99
|
+
loc: Loc;
|
|
100
|
+
};
|
|
101
|
+
export type PineExpr = PineNumberLit | PineStringLit | PineBoolLit | PineColorLit | PineNa | PineIdent | PineNsCall | PineCall | PineIndex | PineBinary | PineUnary | PineTernary | PineMember;
|
|
102
|
+
export type PineIndicatorDecl = {
|
|
103
|
+
kind: 'PineIndicatorDecl';
|
|
104
|
+
args: PineExpr[];
|
|
105
|
+
namedArgs: Map<string, PineExpr>;
|
|
106
|
+
loc: Loc;
|
|
107
|
+
};
|
|
108
|
+
/** var / varip declaration */
|
|
109
|
+
export type PineVarDecl = {
|
|
110
|
+
kind: 'PineVarDecl';
|
|
111
|
+
modifier: 'var' | 'varip';
|
|
112
|
+
name: string;
|
|
113
|
+
typeHint?: string;
|
|
114
|
+
value: PineExpr;
|
|
115
|
+
loc: Loc;
|
|
116
|
+
};
|
|
117
|
+
export type PineAssign = {
|
|
118
|
+
kind: 'PineAssign';
|
|
119
|
+
name: string;
|
|
120
|
+
op: '=' | ':=';
|
|
121
|
+
value: PineExpr;
|
|
122
|
+
loc: Loc;
|
|
123
|
+
};
|
|
124
|
+
export type PineExprStmt = {
|
|
125
|
+
kind: 'PineExprStmt';
|
|
126
|
+
expr: PineExpr;
|
|
127
|
+
loc: Loc;
|
|
128
|
+
};
|
|
129
|
+
export type PineIf = {
|
|
130
|
+
kind: 'PineIf';
|
|
131
|
+
condition: PineExpr;
|
|
132
|
+
then: PineStmt[];
|
|
133
|
+
else_: PineStmt[];
|
|
134
|
+
loc: Loc;
|
|
135
|
+
};
|
|
136
|
+
export type PineStmt = PineIndicatorDecl | PineVarDecl | PineAssign | PineExprStmt | PineIf;
|
|
137
|
+
export type PineProgram = {
|
|
138
|
+
kind: 'PineProgram';
|
|
139
|
+
version: number;
|
|
140
|
+
stmts: PineStmt[];
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=pine-ast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pine-ast.d.ts","sourceRoot":"","sources":["../../src/pine/pine-ast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,MAAM,MAAM,GAAG,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAIhD,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC;AAC/E,MAAM,MAAM,WAAW,GAAK;IAAE,IAAI,EAAE,aAAa,CAAC;IAAG,KAAK,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC;AAChF,MAAM,MAAM,YAAY,GAAI;IAAE,IAAI,EAAE,cAAc,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC;AAC/E,MAAM,MAAM,MAAM,GAAU;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC;AAIzD,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAG,GAAG,CAAC;CACX,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAO,YAAY,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAS,MAAM,CAAC;IAClB,IAAI,EAAO,QAAQ,EAAE,CAAC;IACtB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,GAAG,EAAQ,GAAG,CAAC;CAChB,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAO,UAAU,CAAC;IACtB,EAAE,EAAS,MAAM,CAAC;IAClB,IAAI,EAAO,QAAQ,EAAE,CAAC;IACtB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,GAAG,EAAQ,GAAG,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAI,WAAW,CAAC;IACpB,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAG,QAAQ,CAAC;IACjB,GAAG,EAAK,GAAG,CAAC;CACb,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,GAAG,KAAK,GAAG,IAAI,CAAC;IAC1F,IAAI,EAAG,QAAQ,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAI,GAAG,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAK,WAAW,CAAC;IACrB,EAAE,EAAO,GAAG,GAAG,KAAK,CAAC;IACrB,OAAO,EAAE,QAAQ,CAAC;IAClB,GAAG,EAAM,GAAG,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAQ,aAAa,CAAC;IAC1B,SAAS,EAAG,QAAQ,CAAC;IACrB,UAAU,EAAE,QAAQ,CAAC;IACrB,SAAS,EAAG,QAAQ,CAAC;IACrB,GAAG,EAAS,GAAG,CAAC;CACjB,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAI,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAI,MAAM,CAAC;IACf,GAAG,EAAK,GAAG,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,QAAQ,GAChB,aAAa,GACb,aAAa,GACb,WAAW,GACX,YAAY,GACZ,MAAM,GACN,SAAS,GACT,UAAU,GACV,QAAQ,GACR,SAAS,GACT,UAAU,GACV,SAAS,GACT,WAAW,GACX,UAAU,CAAC;AAIf,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAK,mBAAmB,CAAC;IAC7B,IAAI,EAAK,QAAQ,EAAE,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,GAAG,EAAM,GAAG,CAAC;CACd,CAAC;AAEF,8BAA8B;AAC9B,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAO,aAAa,CAAC;IACzB,QAAQ,EAAG,KAAK,GAAG,OAAO,CAAC;IAC3B,IAAI,EAAO,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAM,QAAQ,CAAC;IACpB,GAAG,EAAQ,GAAG,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAG,YAAY,CAAC;IACpB,IAAI,EAAG,MAAM,CAAC;IACd,EAAE,EAAK,GAAG,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAI,GAAG,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAG,GAAG,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAQ,QAAQ,CAAC;IACrB,SAAS,EAAG,QAAQ,CAAC;IACrB,IAAI,EAAQ,QAAQ,EAAE,CAAC;IACvB,KAAK,EAAO,QAAQ,EAAE,CAAC;IACvB,GAAG,EAAS,GAAG,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAChB,iBAAiB,GACjB,WAAW,GACX,UAAU,GACV,YAAY,GACZ,MAAM,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAK,aAAa,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAI,QAAQ,EAAE,CAAC;CACrB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pine Script Lexer — tokenises a Pine v5 source string.
|
|
3
|
+
*
|
|
4
|
+
* Differences vs TScript lexer:
|
|
5
|
+
* - `//@version=N` comment is parsed for the version number
|
|
6
|
+
* - `color.red`, `ta.sma`, `math.abs` — namespace.member chains
|
|
7
|
+
* - `:=` reassignment operator
|
|
8
|
+
* - Indentation-based block structure (INDENT / DEDENT tokens)
|
|
9
|
+
* - `var` / `varip` keywords
|
|
10
|
+
* - `=>` (function body arrow, for single-line user functions — recognised
|
|
11
|
+
* but not fully transpiled; emits an diagnostic)
|
|
12
|
+
*/
|
|
13
|
+
export type PineTok = 'NUMBER' | 'STRING' | 'BOOL' | 'COLOR' | 'IDENT' | 'PLUS' | 'MINUS' | 'STAR' | 'SLASH' | 'PERCENT' | 'LT' | 'GT' | 'LTE' | 'GTE' | 'EQEQ' | 'NEQ' | 'QMARK' | 'COLON' | 'ARROW' | 'ASSIGN' | 'REASSIGN' | 'DOT' | 'LPAREN' | 'RPAREN' | 'LBRACKET' | 'RBRACKET' | 'COMMA' | 'INDENT' | 'DEDENT' | 'NEWLINE' | 'EOF';
|
|
14
|
+
export type PineToken = {
|
|
15
|
+
kind: PineTok;
|
|
16
|
+
value: string;
|
|
17
|
+
line: number;
|
|
18
|
+
col: number;
|
|
19
|
+
};
|
|
20
|
+
export declare class PineLexer {
|
|
21
|
+
private _src;
|
|
22
|
+
private _pos;
|
|
23
|
+
private _line;
|
|
24
|
+
private _col;
|
|
25
|
+
/** Version extracted from `//@version=N` */
|
|
26
|
+
version: number;
|
|
27
|
+
constructor(src: string);
|
|
28
|
+
tokenize(): PineToken[];
|
|
29
|
+
private _rawTokenize;
|
|
30
|
+
private _injectIndents;
|
|
31
|
+
private _make;
|
|
32
|
+
private _peek;
|
|
33
|
+
private _adv;
|
|
34
|
+
private _isDigit;
|
|
35
|
+
private _isAlpha;
|
|
36
|
+
private _isAlphaNum;
|
|
37
|
+
private _readNumber;
|
|
38
|
+
private _readString;
|
|
39
|
+
private _readIdent;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=pine-lexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pine-lexer.d.ts","sourceRoot":"","sources":["../../src/pine/pine-lexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,OAAO,GACf,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GACtC,OAAO,GACP,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,GAAG,OAAO,GAC3B,QAAQ,GAAG,UAAU,GACrB,KAAK,GACL,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAC7C,OAAO,GACP,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAC/B,KAAK,CAAC;AAEV,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAG,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAG,MAAM,CAAC;IACd,GAAG,EAAI,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,IAAI,CAAgB;IAE5B,4CAA4C;IAC5C,OAAO,SAAK;gBAEA,GAAG,EAAE,MAAM;IAIvB,QAAQ,IAAI,SAAS,EAAE;IASvB,OAAO,CAAC,YAAY;IAoFpB,OAAO,CAAC,cAAc;IA2DtB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,UAAU;CAYnB"}
|