@363045841yyt/klinechart-core 0.8.11-alpha.0 → 0.8.12
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/alerts/createAlertController.d.ts +30 -0
- package/dist/alerts/createAlertController.d.ts.map +1 -0
- package/dist/alerts/createAlertController.js +261 -0
- package/dist/alerts/createAlertController.js.map +1 -0
- package/dist/alerts/index.d.ts +5 -0
- package/dist/alerts/index.d.ts.map +1 -0
- package/dist/alerts/index.js +4 -0
- package/dist/alerts/index.js.map +1 -0
- package/dist/alerts/predicates.d.ts +28 -0
- package/dist/alerts/predicates.d.ts.map +1 -0
- package/dist/alerts/predicates.js +211 -0
- package/dist/alerts/predicates.js.map +1 -0
- package/dist/alerts/rollingVolume.d.ts +15 -0
- package/dist/alerts/rollingVolume.d.ts.map +1 -0
- package/dist/alerts/rollingVolume.js +42 -0
- package/dist/alerts/rollingVolume.js.map +1 -0
- package/dist/alerts/ruleSchema.d.ts +42 -0
- package/dist/alerts/ruleSchema.d.ts.map +1 -0
- package/dist/alerts/ruleSchema.js +240 -0
- package/dist/alerts/ruleSchema.js.map +1 -0
- package/dist/alerts/types.d.ts +169 -0
- package/dist/alerts/types.d.ts.map +1 -0
- package/dist/alerts/types.js +24 -0
- package/dist/alerts/types.js.map +1 -0
- package/dist/chartTypes/heikinAshi.d.ts +49 -0
- package/dist/chartTypes/heikinAshi.d.ts.map +1 -0
- package/dist/chartTypes/heikinAshi.js +94 -0
- package/dist/chartTypes/heikinAshi.js.map +1 -0
- package/dist/chartTypes/index.d.ts +6 -0
- package/dist/chartTypes/index.d.ts.map +1 -0
- package/dist/chartTypes/index.js +5 -0
- package/dist/chartTypes/index.js.map +1 -0
- package/dist/chartTypes/pointAndFigure.d.ts +83 -0
- package/dist/chartTypes/pointAndFigure.d.ts.map +1 -0
- package/dist/chartTypes/pointAndFigure.js +159 -0
- package/dist/chartTypes/pointAndFigure.js.map +1 -0
- package/dist/chartTypes/rangeBars.d.ts +61 -0
- package/dist/chartTypes/rangeBars.d.ts.map +1 -0
- package/dist/chartTypes/rangeBars.js +181 -0
- package/dist/chartTypes/rangeBars.js.map +1 -0
- package/dist/chartTypes/renko.d.ts +94 -0
- package/dist/chartTypes/renko.d.ts.map +1 -0
- package/dist/chartTypes/renko.js +207 -0
- package/dist/chartTypes/renko.js.map +1 -0
- package/dist/chartTypes/types.d.ts +97 -0
- package/dist/chartTypes/types.d.ts.map +1 -0
- package/dist/chartTypes/types.js +39 -0
- package/dist/chartTypes/types.js.map +1 -0
- package/dist/components/anchoredVwap/computeAnchoredVwap.d.ts +76 -0
- package/dist/components/anchoredVwap/computeAnchoredVwap.d.ts.map +1 -0
- package/dist/components/anchoredVwap/computeAnchoredVwap.js +155 -0
- package/dist/components/anchoredVwap/computeAnchoredVwap.js.map +1 -0
- package/dist/components/anchoredVwap/createAnchoredVwapController.d.ts +28 -0
- package/dist/components/anchoredVwap/createAnchoredVwapController.d.ts.map +1 -0
- package/dist/components/anchoredVwap/createAnchoredVwapController.js +282 -0
- package/dist/components/anchoredVwap/createAnchoredVwapController.js.map +1 -0
- package/dist/components/anchoredVwap/index.d.ts +11 -0
- package/dist/components/anchoredVwap/index.d.ts.map +1 -0
- package/dist/components/anchoredVwap/index.js +10 -0
- package/dist/components/anchoredVwap/index.js.map +1 -0
- package/dist/components/anchoredVwap/types.d.ts +171 -0
- package/dist/components/anchoredVwap/types.d.ts.map +1 -0
- package/dist/components/anchoredVwap/types.js +25 -0
- package/dist/components/anchoredVwap/types.js.map +1 -0
- package/dist/components/crosshairSync/createCrosshairSync.d.ts +94 -0
- package/dist/components/crosshairSync/createCrosshairSync.d.ts.map +1 -0
- package/dist/components/crosshairSync/createCrosshairSync.js +118 -0
- package/dist/components/crosshairSync/createCrosshairSync.js.map +1 -0
- package/dist/components/crosshairSync/index.d.ts +2 -0
- package/dist/components/crosshairSync/index.d.ts.map +1 -0
- package/dist/components/crosshairSync/index.js +2 -0
- package/dist/components/crosshairSync/index.js.map +1 -0
- package/dist/components/footprint/aggressor.d.ts +89 -0
- package/dist/components/footprint/aggressor.d.ts.map +1 -0
- package/dist/components/footprint/aggressor.js +106 -0
- package/dist/components/footprint/aggressor.js.map +1 -0
- package/dist/components/footprint/createFootprintController.d.ts +29 -0
- package/dist/components/footprint/createFootprintController.d.ts.map +1 -0
- package/dist/components/footprint/createFootprintController.js +264 -0
- package/dist/components/footprint/createFootprintController.js.map +1 -0
- package/dist/components/footprint/index.d.ts +7 -0
- package/dist/components/footprint/index.d.ts.map +1 -0
- package/dist/components/footprint/index.js +4 -0
- package/dist/components/footprint/index.js.map +1 -0
- package/dist/components/footprint/perBarStats.d.ts +63 -0
- package/dist/components/footprint/perBarStats.d.ts.map +1 -0
- package/dist/components/footprint/perBarStats.js +123 -0
- package/dist/components/footprint/perBarStats.js.map +1 -0
- package/dist/components/footprint/types.d.ts +197 -0
- package/dist/components/footprint/types.d.ts.map +1 -0
- package/dist/components/footprint/types.js +23 -0
- package/dist/components/footprint/types.js.map +1 -0
- package/dist/components/mtfOverlay/alignToBaseIndex.d.ts +45 -0
- package/dist/components/mtfOverlay/alignToBaseIndex.d.ts.map +1 -0
- package/dist/components/mtfOverlay/alignToBaseIndex.js +92 -0
- package/dist/components/mtfOverlay/alignToBaseIndex.js.map +1 -0
- package/dist/components/mtfOverlay/createMtfController.d.ts +7 -0
- package/dist/components/mtfOverlay/createMtfController.d.ts.map +1 -0
- package/dist/components/mtfOverlay/createMtfController.js +134 -0
- package/dist/components/mtfOverlay/createMtfController.js.map +1 -0
- package/dist/components/mtfOverlay/index.d.ts +19 -0
- package/dist/components/mtfOverlay/index.d.ts.map +1 -0
- package/dist/components/mtfOverlay/index.js +18 -0
- package/dist/components/mtfOverlay/index.js.map +1 -0
- package/dist/components/mtfOverlay/resampleBars.d.ts +37 -0
- package/dist/components/mtfOverlay/resampleBars.d.ts.map +1 -0
- package/dist/components/mtfOverlay/resampleBars.js +93 -0
- package/dist/components/mtfOverlay/resampleBars.js.map +1 -0
- package/dist/components/mtfOverlay/types.d.ts +132 -0
- package/dist/components/mtfOverlay/types.d.ts.map +1 -0
- package/dist/components/mtfOverlay/types.js +22 -0
- package/dist/components/mtfOverlay/types.js.map +1 -0
- package/dist/components/orderBookHeatmap/createHeatmapController.d.ts +21 -0
- package/dist/components/orderBookHeatmap/createHeatmapController.d.ts.map +1 -0
- package/dist/components/orderBookHeatmap/createHeatmapController.js +234 -0
- package/dist/components/orderBookHeatmap/createHeatmapController.js.map +1 -0
- package/dist/components/orderBookHeatmap/createOrderBookState.d.ts +18 -0
- package/dist/components/orderBookHeatmap/createOrderBookState.d.ts.map +1 -0
- package/dist/components/orderBookHeatmap/createOrderBookState.js +102 -0
- package/dist/components/orderBookHeatmap/createOrderBookState.js.map +1 -0
- package/dist/components/orderBookHeatmap/deltaArchive.d.ts +25 -0
- package/dist/components/orderBookHeatmap/deltaArchive.d.ts.map +1 -0
- package/dist/components/orderBookHeatmap/deltaArchive.js +106 -0
- package/dist/components/orderBookHeatmap/deltaArchive.js.map +1 -0
- package/dist/components/orderBookHeatmap/index.d.ts +13 -0
- package/dist/components/orderBookHeatmap/index.d.ts.map +1 -0
- package/dist/components/orderBookHeatmap/index.js +12 -0
- package/dist/components/orderBookHeatmap/index.js.map +1 -0
- package/dist/components/orderBookHeatmap/logColorScale.d.ts +20 -0
- package/dist/components/orderBookHeatmap/logColorScale.d.ts.map +1 -0
- package/dist/components/orderBookHeatmap/logColorScale.js +71 -0
- package/dist/components/orderBookHeatmap/logColorScale.js.map +1 -0
- package/dist/components/orderBookHeatmap/snapshotRing.d.ts +16 -0
- package/dist/components/orderBookHeatmap/snapshotRing.d.ts.map +1 -0
- package/dist/components/orderBookHeatmap/snapshotRing.js +61 -0
- package/dist/components/orderBookHeatmap/snapshotRing.js.map +1 -0
- package/dist/components/orderBookHeatmap/types.d.ts +128 -0
- package/dist/components/orderBookHeatmap/types.d.ts.map +1 -0
- package/dist/components/orderBookHeatmap/types.js +16 -0
- package/dist/components/orderBookHeatmap/types.js.map +1 -0
- package/dist/components/volumeProfile/binning.d.ts +54 -0
- package/dist/components/volumeProfile/binning.d.ts.map +1 -0
- package/dist/components/volumeProfile/binning.js +123 -0
- package/dist/components/volumeProfile/binning.js.map +1 -0
- package/dist/components/volumeProfile/createVolumeProfileController.d.ts +31 -0
- package/dist/components/volumeProfile/createVolumeProfileController.d.ts.map +1 -0
- package/dist/components/volumeProfile/createVolumeProfileController.js +179 -0
- package/dist/components/volumeProfile/createVolumeProfileController.js.map +1 -0
- package/dist/components/volumeProfile/index.d.ts +6 -0
- package/dist/components/volumeProfile/index.d.ts.map +1 -0
- package/dist/components/volumeProfile/index.js +5 -0
- package/dist/components/volumeProfile/index.js.map +1 -0
- package/dist/components/volumeProfile/poc.d.ts +35 -0
- package/dist/components/volumeProfile/poc.d.ts.map +1 -0
- package/dist/components/volumeProfile/poc.js +51 -0
- package/dist/components/volumeProfile/poc.js.map +1 -0
- package/dist/components/volumeProfile/types.d.ts +138 -0
- package/dist/components/volumeProfile/types.d.ts.map +1 -0
- package/dist/components/volumeProfile/types.js +19 -0
- package/dist/components/volumeProfile/types.js.map +1 -0
- package/dist/components/volumeProfile/valueArea.d.ts +58 -0
- package/dist/components/volumeProfile/valueArea.d.ts.map +1 -0
- package/dist/components/volumeProfile/valueArea.js +172 -0
- package/dist/components/volumeProfile/valueArea.js.map +1 -0
- package/dist/controllers/createChartController.d.ts.map +1 -1
- package/dist/controllers/createChartController.js +22 -11
- package/dist/controllers/createChartController.js.map +1 -1
- package/dist/controllers/types.d.ts +3 -1
- package/dist/controllers/types.d.ts.map +1 -1
- package/dist/data-fetchers/baostock.d.ts.map +1 -1
- package/dist/data-fetchers/baostock.js +2 -1
- package/dist/data-fetchers/baostock.js.map +1 -1
- package/dist/data-fetchers/dataBuffer.effects.d.ts.map +1 -1
- package/dist/data-fetchers/dataBuffer.effects.js +2 -1
- package/dist/data-fetchers/dataBuffer.effects.js.map +1 -1
- package/dist/data-fetchers/fetcherDefinitionRegistry.d.ts.map +1 -1
- package/dist/data-fetchers/fetcherDefinitionRegistry.js +2 -1
- package/dist/data-fetchers/fetcherDefinitionRegistry.js.map +1 -1
- package/dist/data-fetchers/gotdx.js +4 -3
- package/dist/data-fetchers/gotdx.js.map +1 -1
- package/dist/data-fetchers/router.d.ts.map +1 -1
- package/dist/data-fetchers/router.js +4 -3
- package/dist/data-fetchers/router.js.map +1 -1
- package/dist/data-fetchers/tradingview.js +3 -2
- package/dist/data-fetchers/tradingview.js.map +1 -1
- package/dist/engine/chart.d.ts +13 -0
- package/dist/engine/chart.d.ts.map +1 -1
- package/dist/engine/chart.js +109 -0
- package/dist/engine/chart.js.map +1 -1
- package/dist/engine/data/chartDataManager.d.ts +1 -0
- package/dist/engine/data/chartDataManager.d.ts.map +1 -1
- package/dist/engine/data/chartDataManager.js +27 -4
- package/dist/engine/data/chartDataManager.js.map +1 -1
- package/dist/engine/drawing/toolConfig.d.ts.map +1 -1
- package/dist/engine/drawing/toolConfig.js +2 -1
- package/dist/engine/drawing/toolConfig.js.map +1 -1
- package/dist/engine/indicators/chartIndicatorManager.d.ts.map +1 -1
- package/dist/engine/indicators/chartIndicatorManager.js +2 -1
- package/dist/engine/indicators/chartIndicatorManager.js.map +1 -1
- package/dist/engine/indicators/indicatorDefinitionRegistry.d.ts.map +1 -1
- package/dist/engine/indicators/indicatorDefinitionRegistry.js +2 -1
- package/dist/engine/indicators/indicatorDefinitionRegistry.js.map +1 -1
- package/dist/engine/indicators/indicatorMetadata.d.ts.map +1 -1
- package/dist/engine/indicators/indicatorMetadata.js +2 -1
- package/dist/engine/indicators/indicatorMetadata.js.map +1 -1
- package/dist/engine/indicators/indicatorRegistry.d.ts.map +1 -1
- package/dist/engine/indicators/indicatorRegistry.js +6 -5
- package/dist/engine/indicators/indicatorRegistry.js.map +1 -1
- package/dist/engine/indicators/registerBuiltins.d.ts.map +1 -1
- package/dist/engine/indicators/registerBuiltins.js +2 -1
- package/dist/engine/indicators/registerBuiltins.js.map +1 -1
- package/dist/engine/indicators/scheduler.d.ts +6 -0
- package/dist/engine/indicators/scheduler.d.ts.map +1 -1
- package/dist/engine/indicators/scheduler.js +12 -0
- package/dist/engine/indicators/scheduler.js.map +1 -1
- package/dist/engine/indicators/soa.d.ts.map +1 -1
- package/dist/engine/indicators/soa.js +2 -1
- package/dist/engine/indicators/soa.js.map +1 -1
- package/dist/engine/indicators/stateComposer.d.ts.map +1 -1
- package/dist/engine/indicators/stateComposer.js +2 -1
- package/dist/engine/indicators/stateComposer.js.map +1 -1
- package/dist/engine/subPaneManager.d.ts.map +1 -1
- package/dist/engine/subPaneManager.js +2 -1
- package/dist/engine/subPaneManager.js.map +1 -1
- package/dist/engine/utils/chartZoomController.d.ts +2 -0
- package/dist/engine/utils/chartZoomController.d.ts.map +1 -1
- package/dist/engine/utils/chartZoomController.js +5 -1
- package/dist/engine/utils/chartZoomController.js.map +1 -1
- package/dist/errors-help.d.ts +72 -0
- package/dist/errors-help.d.ts.map +1 -0
- package/dist/errors-help.js +149 -0
- package/dist/errors-help.js.map +1 -0
- package/dist/errors.d.ts +64 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +61 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -1
- package/dist/indicators/alma.d.ts +27 -0
- package/dist/indicators/alma.d.ts.map +1 -0
- package/dist/indicators/alma.js +36 -0
- package/dist/indicators/alma.js.map +1 -0
- package/dist/indicators/awesomeOscillator.d.ts +19 -0
- package/dist/indicators/awesomeOscillator.d.ts.map +1 -0
- package/dist/indicators/awesomeOscillator.js +36 -0
- package/dist/indicators/awesomeOscillator.js.map +1 -0
- package/dist/indicators/dpo.d.ts +17 -0
- package/dist/indicators/dpo.d.ts.map +1 -0
- package/dist/indicators/dpo.js +24 -0
- package/dist/indicators/dpo.js.map +1 -0
- package/dist/indicators/fisherTransform.d.ts +26 -0
- package/dist/indicators/fisherTransform.d.ts.map +1 -0
- package/dist/indicators/fisherTransform.js +44 -0
- package/dist/indicators/fisherTransform.js.map +1 -0
- package/dist/indicators/frama.d.ts +25 -0
- package/dist/indicators/frama.d.ts.map +1 -0
- package/dist/indicators/frama.js +61 -0
- package/dist/indicators/frama.js.map +1 -0
- package/dist/indicators/index.d.ts +24 -0
- package/dist/indicators/index.d.ts.map +1 -0
- package/dist/indicators/index.js +26 -0
- package/dist/indicators/index.js.map +1 -0
- package/dist/indicators/lsma.d.ts +21 -0
- package/dist/indicators/lsma.d.ts.map +1 -0
- package/dist/indicators/lsma.js +37 -0
- package/dist/indicators/lsma.js.map +1 -0
- package/dist/indicators/schaffTrendCycle.d.ts +24 -0
- package/dist/indicators/schaffTrendCycle.d.ts.map +1 -0
- package/dist/indicators/schaffTrendCycle.js +70 -0
- package/dist/indicators/schaffTrendCycle.js.map +1 -0
- package/dist/indicators/stochRSI.d.ts +24 -0
- package/dist/indicators/stochRSI.d.ts.map +1 -0
- package/dist/indicators/stochRSI.js +86 -0
- package/dist/indicators/stochRSI.js.map +1 -0
- package/dist/indicators/t3.d.ts +31 -0
- package/dist/indicators/t3.d.ts.map +1 -0
- package/dist/indicators/t3.js +63 -0
- package/dist/indicators/t3.js.map +1 -0
- package/dist/indicators/ultimateOscillator.d.ts +26 -0
- package/dist/indicators/ultimateOscillator.d.ts.map +1 -0
- package/dist/indicators/ultimateOscillator.js +59 -0
- package/dist/indicators/ultimateOscillator.js.map +1 -0
- package/dist/indicators/vidya.d.ts +24 -0
- package/dist/indicators/vidya.d.ts.map +1 -0
- package/dist/indicators/vidya.js +54 -0
- package/dist/indicators/vidya.js.map +1 -0
- package/dist/indicators/zlema.d.ts +16 -0
- package/dist/indicators/zlema.d.ts.map +1 -0
- package/dist/indicators/zlema.js +26 -0
- package/dist/indicators/zlema.js.map +1 -0
- package/dist/input/gesture.d.ts +125 -0
- package/dist/input/gesture.d.ts.map +1 -0
- package/dist/input/gesture.js +249 -0
- package/dist/input/gesture.js.map +1 -0
- package/dist/input/index.d.ts +9 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/index.js +9 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/keyboard.d.ts +140 -0
- package/dist/input/keyboard.d.ts.map +1 -0
- package/dist/input/keyboard.js +260 -0
- package/dist/input/keyboard.js.map +1 -0
- package/dist/mcp/chartBridge.d.ts +2 -2
- package/dist/mcp/chartBridge.d.ts.map +1 -1
- package/dist/mcp/chartBridge.js +27 -21
- package/dist/mcp/chartBridge.js.map +1 -1
- package/dist/plugin/PluginHost.d.ts +0 -3
- package/dist/plugin/PluginHost.d.ts.map +1 -1
- package/dist/plugin/PluginHost.js +7 -3
- package/dist/plugin/PluginHost.js.map +1 -1
- package/dist/plugin/PluginRegistry.d.ts +0 -3
- package/dist/plugin/PluginRegistry.d.ts.map +1 -1
- package/dist/plugin/PluginRegistry.js +5 -1
- package/dist/plugin/PluginRegistry.js.map +1 -1
- package/dist/render/Renderer.d.ts +116 -0
- package/dist/render/Renderer.d.ts.map +1 -0
- package/dist/render/Renderer.js +31 -0
- package/dist/render/Renderer.js.map +1 -0
- package/dist/render/SurfaceBackend.d.ts +83 -0
- package/dist/render/SurfaceBackend.d.ts.map +1 -0
- package/dist/render/SurfaceBackend.js +27 -0
- package/dist/render/SurfaceBackend.js.map +1 -0
- package/dist/render/index.d.ts +12 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +11 -0
- package/dist/render/index.js.map +1 -0
- package/dist/renderer-tier/detectRendererTier.d.ts +57 -0
- package/dist/renderer-tier/detectRendererTier.d.ts.map +1 -0
- package/dist/renderer-tier/detectRendererTier.js +143 -0
- package/dist/renderer-tier/detectRendererTier.js.map +1 -0
- package/dist/renderer-tier/index.d.ts +12 -0
- package/dist/renderer-tier/index.d.ts.map +1 -0
- package/dist/renderer-tier/index.js +12 -0
- package/dist/renderer-tier/index.js.map +1 -0
- package/dist/renderer-tier/selectBackend.d.ts +106 -0
- package/dist/renderer-tier/selectBackend.d.ts.map +1 -0
- package/dist/renderer-tier/selectBackend.js +113 -0
- package/dist/renderer-tier/selectBackend.js.map +1 -0
- package/dist/renderer-tier/types.d.ts +50 -0
- package/dist/renderer-tier/types.d.ts.map +1 -0
- package/dist/renderer-tier/types.js +24 -0
- package/dist/renderer-tier/types.js.map +1 -0
- package/dist/replay/createReplayController.d.ts +3 -0
- package/dist/replay/createReplayController.d.ts.map +1 -0
- package/dist/replay/createReplayController.js +251 -0
- package/dist/replay/createReplayController.js.map +1 -0
- package/dist/replay/index.d.ts +5 -0
- package/dist/replay/index.d.ts.map +1 -0
- package/dist/replay/index.js +3 -0
- package/dist/replay/index.js.map +1 -0
- package/dist/replay/timeline.d.ts +50 -0
- package/dist/replay/timeline.d.ts.map +1 -0
- package/dist/replay/timeline.js +104 -0
- package/dist/replay/timeline.js.map +1 -0
- package/dist/replay/types.d.ts +94 -0
- package/dist/replay/types.d.ts.map +1 -0
- package/dist/replay/types.js +21 -0
- package/dist/replay/types.js.map +1 -0
- package/dist/scale/anchoredZoom.d.ts +64 -0
- package/dist/scale/anchoredZoom.d.ts.map +1 -0
- package/dist/scale/anchoredZoom.js +67 -0
- package/dist/scale/anchoredZoom.js.map +1 -0
- package/dist/scale/createPriceScale.d.ts +49 -0
- package/dist/scale/createPriceScale.d.ts.map +1 -0
- package/dist/scale/createPriceScale.js +175 -0
- package/dist/scale/createPriceScale.js.map +1 -0
- package/dist/scale/createTimeScale.d.ts +27 -0
- package/dist/scale/createTimeScale.d.ts.map +1 -0
- package/dist/scale/createTimeScale.js +139 -0
- package/dist/scale/createTimeScale.js.map +1 -0
- package/dist/scale/index.d.ts +6 -0
- package/dist/scale/index.d.ts.map +1 -0
- package/dist/scale/index.js +5 -0
- package/dist/scale/index.js.map +1 -0
- package/dist/scale/originShift.d.ts +69 -0
- package/dist/scale/originShift.d.ts.map +1 -0
- package/dist/scale/originShift.js +41 -0
- package/dist/scale/originShift.js.map +1 -0
- package/dist/scale/types.d.ts +90 -0
- package/dist/scale/types.d.ts.map +1 -0
- package/dist/scale/types.js +17 -0
- package/dist/scale/types.js.map +1 -0
- package/dist/scene/createScene.d.ts +22 -0
- package/dist/scene/createScene.d.ts.map +1 -0
- package/dist/scene/createScene.js +114 -0
- package/dist/scene/createScene.js.map +1 -0
- package/dist/scene/index.d.ts +13 -0
- package/dist/scene/index.d.ts.map +1 -0
- package/dist/scene/index.js +11 -0
- package/dist/scene/index.js.map +1 -0
- package/dist/scene/layerRegistry.d.ts +83 -0
- package/dist/scene/layerRegistry.d.ts.map +1 -0
- package/dist/scene/layerRegistry.js +43 -0
- package/dist/scene/layerRegistry.js.map +1 -0
- package/dist/scene/types.d.ts +128 -0
- package/dist/scene/types.d.ts.map +1 -0
- package/dist/scene/types.js +21 -0
- package/dist/scene/types.js.map +1 -0
- package/dist/scheduler/createFrameBudget.d.ts +91 -0
- package/dist/scheduler/createFrameBudget.d.ts.map +1 -0
- package/dist/scheduler/createFrameBudget.js +232 -0
- package/dist/scheduler/createFrameBudget.js.map +1 -0
- package/dist/scheduler/index.d.ts +2 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +2 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/tokens/themeToCssVars.d.ts.map +1 -1
- package/dist/tokens/themeToCssVars.js +2 -28
- package/dist/tokens/themeToCssVars.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
- package/src/__bench__/indicators.bench.ts +215 -0
- package/src/__bench__/orderBookHeatmap.bench.ts +68 -0
- package/src/__bench__/scale.bench.ts +80 -0
- package/src/__bench__/signal.bench.ts +41 -0
- package/src/__bench__/volumeProfile.bench.ts +66 -0
- package/src/__tests__/errors-help.test.ts +184 -0
- package/src/__tests__/errors.test.ts +187 -0
- package/src/alerts/__tests__/controller.test.ts +231 -0
- package/src/alerts/__tests__/predicates.test.ts +374 -0
- package/src/alerts/__tests__/ruleSchema.test.ts +180 -0
- package/src/alerts/createAlertController.ts +312 -0
- package/src/alerts/index.ts +18 -0
- package/src/alerts/predicates.ts +231 -0
- package/src/alerts/rollingVolume.ts +51 -0
- package/src/alerts/ruleSchema.ts +278 -0
- package/src/alerts/types.ts +177 -0
- package/src/chartTypes/__tests__/heikinAshi.test.ts +122 -0
- package/src/chartTypes/__tests__/pointAndFigure.test.ts +167 -0
- package/src/chartTypes/__tests__/rangeBars.test.ts +146 -0
- package/src/chartTypes/__tests__/renko.test.ts +160 -0
- package/src/chartTypes/heikinAshi.ts +116 -0
- package/src/chartTypes/index.ts +5 -0
- package/src/chartTypes/pointAndFigure.ts +278 -0
- package/src/chartTypes/rangeBars.ts +303 -0
- package/src/chartTypes/renko.ts +311 -0
- package/src/chartTypes/types.ts +99 -0
- package/src/components/anchoredVwap/__tests__/computeAnchoredVwap.test.ts +331 -0
- package/src/components/anchoredVwap/__tests__/controller.test.ts +430 -0
- package/src/components/anchoredVwap/computeAnchoredVwap.ts +174 -0
- package/src/components/anchoredVwap/createAnchoredVwapController.ts +358 -0
- package/src/components/anchoredVwap/index.ts +17 -0
- package/src/components/anchoredVwap/types.ts +187 -0
- package/src/components/crosshairSync/__tests__/crosshairSync.test.ts +261 -0
- package/src/components/crosshairSync/createCrosshairSync.ts +187 -0
- package/src/components/crosshairSync/index.ts +5 -0
- package/src/components/footprint/__tests__/aggressor.test.ts +127 -0
- package/src/components/footprint/__tests__/controller.test.ts +130 -0
- package/src/components/footprint/__tests__/perBarStats.test.ts +114 -0
- package/src/components/footprint/aggressor.ts +165 -0
- package/src/components/footprint/createFootprintController.ts +338 -0
- package/src/components/footprint/index.ts +21 -0
- package/src/components/footprint/perBarStats.ts +137 -0
- package/src/components/footprint/types.ts +232 -0
- package/src/components/mtfOverlay/__tests__/alignToBaseIndex.test.ts +103 -0
- package/src/components/mtfOverlay/__tests__/controller.test.ts +172 -0
- package/src/components/mtfOverlay/__tests__/resampleBars.test.ts +106 -0
- package/src/components/mtfOverlay/alignToBaseIndex.ts +108 -0
- package/src/components/mtfOverlay/createMtfController.ts +180 -0
- package/src/components/mtfOverlay/index.ts +26 -0
- package/src/components/mtfOverlay/resampleBars.ts +134 -0
- package/src/components/mtfOverlay/types.ts +148 -0
- package/src/components/orderBookHeatmap/__tests__/controller.test.ts +237 -0
- package/src/components/orderBookHeatmap/__tests__/deltaArchive.test.ts +88 -0
- package/src/components/orderBookHeatmap/__tests__/logColorScale.test.ts +69 -0
- package/src/components/orderBookHeatmap/__tests__/orderBookState.test.ts +113 -0
- package/src/components/orderBookHeatmap/__tests__/snapshotRing.test.ts +53 -0
- package/src/components/orderBookHeatmap/computeShader.wgsl.md +130 -0
- package/src/components/orderBookHeatmap/createHeatmapController.ts +273 -0
- package/src/components/orderBookHeatmap/createOrderBookState.ts +116 -0
- package/src/components/orderBookHeatmap/deltaArchive.ts +113 -0
- package/src/components/orderBookHeatmap/index.ts +25 -0
- package/src/components/orderBookHeatmap/logColorScale.ts +77 -0
- package/src/components/orderBookHeatmap/snapshotRing.ts +65 -0
- package/src/components/orderBookHeatmap/types.ts +168 -0
- package/src/components/volumeProfile/__tests__/binning.test.ts +133 -0
- package/src/components/volumeProfile/__tests__/poc.test.ts +44 -0
- package/src/components/volumeProfile/__tests__/valueArea.test.ts +177 -0
- package/src/components/volumeProfile/binning.ts +133 -0
- package/src/components/volumeProfile/createVolumeProfileController.ts +213 -0
- package/src/components/volumeProfile/index.ts +12 -0
- package/src/components/volumeProfile/poc.ts +53 -0
- package/src/components/volumeProfile/types.ts +148 -0
- package/src/components/volumeProfile/valueArea.ts +187 -0
- package/src/controllers/createChartController.ts +23 -10
- package/src/controllers/types.ts +5 -1
- package/src/data-fetchers/baostock.ts +2 -1
- package/src/data-fetchers/dataBuffer.effects.ts +3 -1
- package/src/data-fetchers/fetcherDefinitionRegistry.ts +2 -1
- package/src/data-fetchers/gotdx.ts +4 -3
- package/src/data-fetchers/router.ts +6 -3
- package/src/data-fetchers/tradingview.ts +3 -2
- package/src/engine/chart.ts +126 -3
- package/src/engine/data/chartDataManager.ts +26 -4
- package/src/engine/drawing/toolConfig.ts +2 -1
- package/src/engine/indicators/chartIndicatorManager.ts +2 -1
- package/src/engine/indicators/indicatorDefinitionRegistry.ts +2 -1
- package/src/engine/indicators/indicatorMetadata.ts +2 -1
- package/src/engine/indicators/indicatorRegistry.ts +6 -5
- package/src/engine/indicators/registerBuiltins.ts +2 -1
- package/src/engine/indicators/scheduler.ts +15 -0
- package/src/engine/indicators/soa.ts +2 -1
- package/src/engine/indicators/stateComposer.ts +2 -1
- package/src/engine/subPaneManager.ts +2 -1
- package/src/engine/utils/chartZoomController.ts +7 -1
- package/src/errors-help.ts +218 -0
- package/src/errors.ts +128 -0
- package/src/index.ts +37 -0
- package/src/indicators/__tests__/maFamily.test.ts +159 -0
- package/src/indicators/__tests__/oscillators.test.ts +150 -0
- package/src/indicators/alma.ts +61 -0
- package/src/indicators/awesomeOscillator.ts +54 -0
- package/src/indicators/dpo.ts +37 -0
- package/src/indicators/fisherTransform.ts +63 -0
- package/src/indicators/frama.ts +87 -0
- package/src/indicators/index.ts +39 -0
- package/src/indicators/lsma.ts +58 -0
- package/src/indicators/schaffTrendCycle.ts +92 -0
- package/src/indicators/stochRSI.ts +108 -0
- package/src/indicators/t3.ts +96 -0
- package/src/indicators/ultimateOscillator.ts +83 -0
- package/src/indicators/vidya.ts +80 -0
- package/src/indicators/zlema.ts +41 -0
- package/src/input/__tests__/gesture.test.ts +271 -0
- package/src/input/__tests__/keyboard.test.ts +317 -0
- package/src/input/gesture.ts +357 -0
- package/src/input/index.ts +26 -0
- package/src/input/keyboard.ts +373 -0
- package/src/mcp/chartBridge.ts +98 -72
- package/src/plugin/PluginHost.ts +4 -3
- package/src/plugin/PluginRegistry.ts +2 -1
- package/src/render/Renderer.ts +127 -0
- package/src/render/SurfaceBackend.ts +94 -0
- package/src/render/__tests__/contract.test.ts +176 -0
- package/src/render/index.ts +27 -0
- package/src/renderer-tier/__tests__/detectRendererTier.test.ts +180 -0
- package/src/renderer-tier/__tests__/selectBackend.test.ts +253 -0
- package/src/renderer-tier/detectRendererTier.ts +168 -0
- package/src/renderer-tier/index.ts +30 -0
- package/src/renderer-tier/selectBackend.ts +201 -0
- package/src/renderer-tier/types.ts +59 -0
- package/src/replay/__tests__/controller.test.ts +309 -0
- package/src/replay/__tests__/timeline.test.ts +99 -0
- package/src/replay/createReplayController.ts +302 -0
- package/src/replay/index.ts +15 -0
- package/src/replay/timeline.ts +106 -0
- package/src/replay/types.ts +107 -0
- package/src/scale/__tests__/anchoredZoom.test.ts +125 -0
- package/src/scale/__tests__/originShift.test.ts +97 -0
- package/src/scale/__tests__/priceScale.test.ts +219 -0
- package/src/scale/__tests__/timeScale.test.ts +119 -0
- package/src/scale/anchoredZoom.ts +104 -0
- package/src/scale/createPriceScale.ts +226 -0
- package/src/scale/createTimeScale.ts +150 -0
- package/src/scale/index.ts +9 -0
- package/src/scale/originShift.ts +111 -0
- package/src/scale/types.ts +100 -0
- package/src/scene/__tests__/layerRegistry.test.ts +207 -0
- package/src/scene/__tests__/scene.test.ts +411 -0
- package/src/scene/createScene.ts +117 -0
- package/src/scene/index.ts +29 -0
- package/src/scene/layerRegistry.ts +117 -0
- package/src/scene/types.ts +143 -0
- package/src/scheduler/__tests__/createFrameBudget.test.ts +315 -0
- package/src/scheduler/createFrameBudget.ts +316 -0
- package/src/scheduler/index.ts +7 -0
- package/src/tokens/themeToCssVars.ts +3 -1
- package/src/version.ts +1 -1
- package/dist/data-fetchers/gotdx/gotdx.d.ts +0 -7
- package/dist/data-fetchers/gotdx/gotdx.d.ts.map +0 -1
- package/dist/data-fetchers/gotdx/gotdx.js +0 -7
- package/dist/data-fetchers/gotdx/gotdx.js.map +0 -1
- package/src/data-fetchers/gotdx/gotdx.ts +0 -6
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyboard shortcut registry — framework-agnostic, signal-based.
|
|
3
|
+
*
|
|
4
|
+
* Why this exists: every chart library either hard-codes shortcuts (TV-style
|
|
5
|
+
* inflexibility) or punts to the host app (every adapter reinvents the
|
|
6
|
+
* wheel). The registry below is the shared primitive: controllers and
|
|
7
|
+
* adapters publish `ShortcutDef[]`s, host apps query by combo, and the
|
|
8
|
+
* normalisation/conflict layer lives in one place.
|
|
9
|
+
*
|
|
10
|
+
* Design choices:
|
|
11
|
+
*
|
|
12
|
+
* - Combos are STRINGS like `'Mod+K'`, `'Shift+ArrowRight'`,
|
|
13
|
+
* `'Alt+Mod+0'`. Parsed deterministically; whitespace ignored;
|
|
14
|
+
* modifier order in the source doesn't matter (`'Shift+Mod+K'`
|
|
15
|
+
* and `'Mod+Shift+K'` normalise to the same canonical form).
|
|
16
|
+
*
|
|
17
|
+
* - `Mod` is platform-agnostic: maps to `Meta` on macOS and `Ctrl`
|
|
18
|
+
* elsewhere. Host apps query with their own `KeyboardEvent` and
|
|
19
|
+
* the registry hands back the matching shortcut.
|
|
20
|
+
*
|
|
21
|
+
* - Conflict detection: registering two `ShortcutDef`s with the same
|
|
22
|
+
* normalised combo throws `KLineChartError('INPUT_SHORTCUT_CONFLICT')`.
|
|
23
|
+
* Pulls the prior registration into the error message so the
|
|
24
|
+
* developer sees both ids.
|
|
25
|
+
*
|
|
26
|
+
* - The signal-based shape mirrors every other controller in this
|
|
27
|
+
* package (alerts, indicators, drawing). Subscribers — typically
|
|
28
|
+
* a debug-overlay or settings UI — see the live registration list.
|
|
29
|
+
*
|
|
30
|
+
* - Pure data: no `addEventListener`, no `window` access. The bridge
|
|
31
|
+
* to DOM events is the *consumer's* job, and a one-liner:
|
|
32
|
+
*
|
|
33
|
+
* document.addEventListener('keydown', e => {
|
|
34
|
+
* const hit = registry.findByKeyboardEvent(e)
|
|
35
|
+
* if (hit !== null) {
|
|
36
|
+
* e.preventDefault()
|
|
37
|
+
* runCommand(hit.command, hit.args)
|
|
38
|
+
* }
|
|
39
|
+
* })
|
|
40
|
+
*/
|
|
41
|
+
import { createSignal } from '../reactivity';
|
|
42
|
+
import { KLineChartError } from '../errors';
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Parser
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
const MODIFIER_TOKENS = new Set([
|
|
47
|
+
'mod',
|
|
48
|
+
'ctrl',
|
|
49
|
+
'control',
|
|
50
|
+
'meta',
|
|
51
|
+
'cmd',
|
|
52
|
+
'command',
|
|
53
|
+
'alt',
|
|
54
|
+
'option',
|
|
55
|
+
'shift',
|
|
56
|
+
]);
|
|
57
|
+
/**
|
|
58
|
+
* Parse a combo source string into the normalised {@link ParsedCombo}.
|
|
59
|
+
* Throws `KLineChartError('INVALID_PARAM')` on malformed input — empty,
|
|
60
|
+
* modifiers without a key, unknown modifier token.
|
|
61
|
+
*/
|
|
62
|
+
export function parseCombo(source) {
|
|
63
|
+
if (typeof source !== 'string' || source.trim() === '') {
|
|
64
|
+
throw new KLineChartError('INVALID_PARAM', `parseCombo: empty combo`);
|
|
65
|
+
}
|
|
66
|
+
const tokens = source
|
|
67
|
+
.split('+')
|
|
68
|
+
.map((t) => t.trim())
|
|
69
|
+
.filter((t) => t.length > 0);
|
|
70
|
+
if (tokens.length === 0) {
|
|
71
|
+
throw new KLineChartError('INVALID_PARAM', `parseCombo: no tokens in ${JSON.stringify(source)}`);
|
|
72
|
+
}
|
|
73
|
+
let requiresMod = false;
|
|
74
|
+
let ctrlKey = false;
|
|
75
|
+
let metaKey = false;
|
|
76
|
+
let altKey = false;
|
|
77
|
+
let shiftKey = false;
|
|
78
|
+
let keyToken = null;
|
|
79
|
+
for (const t of tokens) {
|
|
80
|
+
const lower = t.toLowerCase();
|
|
81
|
+
if (MODIFIER_TOKENS.has(lower)) {
|
|
82
|
+
switch (lower) {
|
|
83
|
+
case 'mod':
|
|
84
|
+
requiresMod = true;
|
|
85
|
+
break;
|
|
86
|
+
case 'ctrl':
|
|
87
|
+
case 'control':
|
|
88
|
+
ctrlKey = true;
|
|
89
|
+
break;
|
|
90
|
+
case 'meta':
|
|
91
|
+
case 'cmd':
|
|
92
|
+
case 'command':
|
|
93
|
+
metaKey = true;
|
|
94
|
+
break;
|
|
95
|
+
case 'alt':
|
|
96
|
+
case 'option':
|
|
97
|
+
altKey = true;
|
|
98
|
+
break;
|
|
99
|
+
case 'shift':
|
|
100
|
+
shiftKey = true;
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
// Non-modifier token — must be the (single) key.
|
|
106
|
+
if (keyToken !== null) {
|
|
107
|
+
throw new KLineChartError('INVALID_PARAM', `parseCombo: multiple keys in ${JSON.stringify(source)} — combos take exactly one non-modifier`);
|
|
108
|
+
}
|
|
109
|
+
keyToken = t;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (keyToken === null) {
|
|
113
|
+
throw new KLineChartError('INVALID_PARAM', `parseCombo: ${JSON.stringify(source)} has only modifiers, no key`);
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
key: keyToken,
|
|
117
|
+
requiresMod,
|
|
118
|
+
ctrlKey,
|
|
119
|
+
metaKey,
|
|
120
|
+
altKey,
|
|
121
|
+
shiftKey,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Canonicalise a combo source string. Sorts modifiers into the
|
|
126
|
+
* canonical order (Mod, Ctrl, Meta, Alt, Shift) and lower-cases
|
|
127
|
+
* single-letter keys. `'shift+mod+k'` → `'Mod+Shift+K'`.
|
|
128
|
+
*/
|
|
129
|
+
export function canonicalCombo(source) {
|
|
130
|
+
const p = parseCombo(source);
|
|
131
|
+
const out = [];
|
|
132
|
+
if (p.requiresMod)
|
|
133
|
+
out.push('Mod');
|
|
134
|
+
if (p.ctrlKey)
|
|
135
|
+
out.push('Ctrl');
|
|
136
|
+
if (p.metaKey)
|
|
137
|
+
out.push('Meta');
|
|
138
|
+
if (p.altKey)
|
|
139
|
+
out.push('Alt');
|
|
140
|
+
if (p.shiftKey)
|
|
141
|
+
out.push('Shift');
|
|
142
|
+
out.push(p.key.length === 1 ? p.key.toUpperCase() : p.key);
|
|
143
|
+
return out.join('+');
|
|
144
|
+
}
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
// Platform detection
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
148
|
+
function detectPlatform() {
|
|
149
|
+
const nav = globalThis.navigator;
|
|
150
|
+
const platform = nav?.platform ?? nav?.userAgent ?? '';
|
|
151
|
+
return /mac/i.test(platform) ? 'mac' : 'other';
|
|
152
|
+
}
|
|
153
|
+
// ---------------------------------------------------------------------------
|
|
154
|
+
// Factory
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
export function createShortcutRegistry(opts) {
|
|
157
|
+
const platformIsMac = opts?.platform !== undefined ? opts.platform === 'mac' : detectPlatform() === 'mac';
|
|
158
|
+
const byCanonical = new Map();
|
|
159
|
+
const byId = new Map(); // id → canonical
|
|
160
|
+
const shortcuts = createSignal([]);
|
|
161
|
+
let disposed = false;
|
|
162
|
+
function publish() {
|
|
163
|
+
shortcuts.set([...byCanonical.values()]);
|
|
164
|
+
}
|
|
165
|
+
function register(def) {
|
|
166
|
+
if (disposed)
|
|
167
|
+
return;
|
|
168
|
+
if (def.id === '' || typeof def.id !== 'string') {
|
|
169
|
+
throw new KLineChartError('INVALID_PARAM', `ShortcutRegistry.register: def.id must be a non-empty string`);
|
|
170
|
+
}
|
|
171
|
+
const canonical = canonicalCombo(def.combo);
|
|
172
|
+
const existing = byCanonical.get(canonical);
|
|
173
|
+
if (existing !== undefined && existing.id !== def.id) {
|
|
174
|
+
throw new KLineChartError('INVALID_PARAM', `ShortcutRegistry.register: combo ${JSON.stringify(canonical)} is already bound to id ${JSON.stringify(existing.id)} — unregister it before re-binding to ${JSON.stringify(def.id)}`);
|
|
175
|
+
}
|
|
176
|
+
// Re-registering the same id with a new combo: drop the old binding.
|
|
177
|
+
const prevCanonical = byId.get(def.id);
|
|
178
|
+
if (prevCanonical !== undefined && prevCanonical !== canonical) {
|
|
179
|
+
byCanonical.delete(prevCanonical);
|
|
180
|
+
}
|
|
181
|
+
byCanonical.set(canonical, def);
|
|
182
|
+
byId.set(def.id, canonical);
|
|
183
|
+
publish();
|
|
184
|
+
}
|
|
185
|
+
function unregister(id) {
|
|
186
|
+
if (disposed)
|
|
187
|
+
return;
|
|
188
|
+
const canonical = byId.get(id);
|
|
189
|
+
if (canonical === undefined)
|
|
190
|
+
return;
|
|
191
|
+
byCanonical.delete(canonical);
|
|
192
|
+
byId.delete(id);
|
|
193
|
+
publish();
|
|
194
|
+
}
|
|
195
|
+
function findByCombo(combo) {
|
|
196
|
+
if (disposed)
|
|
197
|
+
return null;
|
|
198
|
+
return byCanonical.get(canonicalCombo(combo)) ?? null;
|
|
199
|
+
}
|
|
200
|
+
function findByKeyboardEvent(event) {
|
|
201
|
+
if (disposed)
|
|
202
|
+
return null;
|
|
203
|
+
for (const def of byCanonical.values()) {
|
|
204
|
+
const parsed = parseCombo(def.combo);
|
|
205
|
+
// Modifier match — Mod expands to platform-correct modifier.
|
|
206
|
+
const modOk = parsed.requiresMod
|
|
207
|
+
? platformIsMac
|
|
208
|
+
? event.metaKey && !event.ctrlKey
|
|
209
|
+
: event.ctrlKey && !event.metaKey
|
|
210
|
+
: true;
|
|
211
|
+
if (!modOk)
|
|
212
|
+
continue;
|
|
213
|
+
// Explicit Ctrl / Meta / Alt / Shift must match exactly UNLESS
|
|
214
|
+
// requiresMod already accounts for the platform modifier.
|
|
215
|
+
const ctrlOk = parsed.requiresMod
|
|
216
|
+
? !platformIsMac
|
|
217
|
+
? event.ctrlKey
|
|
218
|
+
: event.ctrlKey === parsed.ctrlKey
|
|
219
|
+
: event.ctrlKey === parsed.ctrlKey;
|
|
220
|
+
const metaOk = parsed.requiresMod
|
|
221
|
+
? platformIsMac
|
|
222
|
+
? event.metaKey
|
|
223
|
+
: event.metaKey === parsed.metaKey
|
|
224
|
+
: event.metaKey === parsed.metaKey;
|
|
225
|
+
const altOk = event.altKey === parsed.altKey;
|
|
226
|
+
const shiftOk = event.shiftKey === parsed.shiftKey;
|
|
227
|
+
// Key match: case-insensitive for single-letter keys, exact for
|
|
228
|
+
// named keys (ArrowRight, F5, ...).
|
|
229
|
+
const keyOk = parsed.key.length === 1
|
|
230
|
+
? parsed.key.toLowerCase() === event.key.toLowerCase()
|
|
231
|
+
: parsed.key === event.key;
|
|
232
|
+
if (!ctrlOk || !metaOk || !altOk || !shiftOk || !keyOk)
|
|
233
|
+
continue;
|
|
234
|
+
if (def.when !== undefined && !def.when())
|
|
235
|
+
continue;
|
|
236
|
+
return def;
|
|
237
|
+
}
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
function canonical(combo) {
|
|
241
|
+
return canonicalCombo(combo);
|
|
242
|
+
}
|
|
243
|
+
function dispose() {
|
|
244
|
+
if (disposed)
|
|
245
|
+
return;
|
|
246
|
+
disposed = true;
|
|
247
|
+
byCanonical.clear();
|
|
248
|
+
byId.clear();
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
shortcuts,
|
|
252
|
+
register,
|
|
253
|
+
unregister,
|
|
254
|
+
findByCombo,
|
|
255
|
+
findByKeyboardEvent,
|
|
256
|
+
canonical,
|
|
257
|
+
dispose,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=keyboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../src/input/keyboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,8 +20,8 @@ export declare class ChartBridge {
|
|
|
20
20
|
private readonly onToolCall;
|
|
21
21
|
private readonly wsImpl;
|
|
22
22
|
private ws;
|
|
23
|
-
private
|
|
24
|
-
private
|
|
23
|
+
private _heartbeatFiber;
|
|
24
|
+
private _reconnectFiber;
|
|
25
25
|
private _reconnectAttempt;
|
|
26
26
|
private destroyed;
|
|
27
27
|
private listeners;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chartBridge.d.ts","sourceRoot":"","sources":["../../src/mcp/chartBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,qBAAqB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"chartBridge.d.ts","sourceRoot":"","sources":["../../src/mcp/chartBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,qBAAqB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAK3F,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,eAAe,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC;AAED,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,cAAc,GACd,OAAO,GACP,cAAc,CAAA;AAElB,KAAK,cAAc,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;AAElD,qBAAa,WAAW;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAE5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,SAAS,CAAmD;IAEpE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;IAC9B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;gBAEd,OAAO,EAAE,kBAAkB;IAWvC,OAAO,CAAC,KAAK,CAAQ;IAEf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkE9B,UAAU,IAAI,IAAI;IAOlB,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,aAAa;YAmBP,gBAAgB;IAU9B,OAAO,CAAC,UAAU;IAUlB,eAAe,CACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAClD,IAAI;IAUP,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,IAAI;IAIZ,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,IAAI;IAQhE,GAAG,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;CAG5D"}
|
package/dist/mcp/chartBridge.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { KLineChartError } from '../errors';
|
|
1
2
|
import { generateUUID } from '../utils/uuid';
|
|
3
|
+
import { Effect, Fiber, pipe, Schedule } from 'effect';
|
|
2
4
|
export class ChartBridge {
|
|
3
5
|
sessionId;
|
|
4
6
|
autoReconnect;
|
|
@@ -8,8 +10,8 @@ export class ChartBridge {
|
|
|
8
10
|
onToolCall;
|
|
9
11
|
wsImpl;
|
|
10
12
|
ws = null;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
_heartbeatFiber = null;
|
|
14
|
+
_reconnectFiber = null;
|
|
13
15
|
_reconnectAttempt = 0;
|
|
14
16
|
destroyed = false;
|
|
15
17
|
listeners = new Map();
|
|
@@ -32,7 +34,7 @@ export class ChartBridge {
|
|
|
32
34
|
if (this.destroyed)
|
|
33
35
|
return;
|
|
34
36
|
this.disconnect();
|
|
35
|
-
|
|
37
|
+
await Effect.runPromise(pipe(Effect.async((resume) => {
|
|
36
38
|
try {
|
|
37
39
|
const ws = new this.wsImpl(this.wsUrl);
|
|
38
40
|
ws.onopen = () => {
|
|
@@ -43,7 +45,7 @@ export class ChartBridge {
|
|
|
43
45
|
this.startHeartbeat();
|
|
44
46
|
this.onConnected?.();
|
|
45
47
|
this.emit('connected');
|
|
46
|
-
|
|
48
|
+
resume(Effect.succeed(undefined));
|
|
47
49
|
};
|
|
48
50
|
ws.onmessage = (event) => {
|
|
49
51
|
let msg;
|
|
@@ -67,16 +69,20 @@ export class ChartBridge {
|
|
|
67
69
|
};
|
|
68
70
|
ws.onerror = () => {
|
|
69
71
|
console.error(`[ChartBridge] WS error — connection failed`);
|
|
70
|
-
const err = new
|
|
72
|
+
const err = new KLineChartError('FETCH_FAILED', 'WebSocket connection failed');
|
|
71
73
|
this.onError?.(err);
|
|
72
74
|
this.emit('error', err);
|
|
73
|
-
|
|
75
|
+
resume(Effect.fail(err));
|
|
74
76
|
};
|
|
75
77
|
}
|
|
76
78
|
catch (err) {
|
|
77
|
-
|
|
79
|
+
resume(Effect.fail(err));
|
|
78
80
|
}
|
|
79
|
-
})
|
|
81
|
+
}), Effect.timeout('15 seconds'), Effect.mapError((err) => {
|
|
82
|
+
if (err instanceof KLineChartError)
|
|
83
|
+
return err;
|
|
84
|
+
return new KLineChartError('FETCH_FAILED', `Connection failed: ${String(err)}`);
|
|
85
|
+
})));
|
|
80
86
|
}
|
|
81
87
|
disconnect() {
|
|
82
88
|
this.ws?.close();
|
|
@@ -130,37 +136,37 @@ export class ChartBridge {
|
|
|
130
136
|
}
|
|
131
137
|
startHeartbeat() {
|
|
132
138
|
this.stopHeartbeat();
|
|
133
|
-
this.
|
|
139
|
+
this._heartbeatFiber = Effect.runFork(pipe(Effect.repeat(Effect.sync(() => {
|
|
134
140
|
if (this.ws?.readyState === 1) {
|
|
135
141
|
this.ws.send(JSON.stringify({ type: 'ping' }));
|
|
136
142
|
}
|
|
137
|
-
}, this.heartbeatInterval);
|
|
143
|
+
}), Schedule.fixed(this.heartbeatInterval)), Effect.asVoid));
|
|
138
144
|
}
|
|
139
145
|
stopHeartbeat() {
|
|
140
|
-
if (this.
|
|
141
|
-
|
|
142
|
-
this.
|
|
146
|
+
if (this._heartbeatFiber) {
|
|
147
|
+
Fiber.interrupt(this._heartbeatFiber);
|
|
148
|
+
this._heartbeatFiber = null;
|
|
143
149
|
}
|
|
144
150
|
}
|
|
145
151
|
scheduleReconnect() {
|
|
146
152
|
this.cancelReconnect();
|
|
147
|
-
const base = this.reconnectDelay;
|
|
148
153
|
const attempt = this._reconnectAttempt;
|
|
154
|
+
this._reconnectAttempt = attempt + 1;
|
|
155
|
+
const base = this.reconnectDelay;
|
|
149
156
|
const exponential = Math.min(base * Math.pow(2, attempt), this.maxReconnectDelay);
|
|
150
157
|
const jitter = 0.5 + Math.random() * 0.5;
|
|
151
158
|
const delay = Math.round(exponential * jitter);
|
|
152
|
-
this.
|
|
153
|
-
console.info(`[ChartBridge] reconnect scheduled in ${delay}ms (attempt ${attempt + 1})`);
|
|
154
|
-
this.reconnectTimer = setTimeout(() => {
|
|
159
|
+
this._reconnectFiber = Effect.runFork(pipe(Effect.sleep(delay), Effect.tap(() => Effect.sync(() => {
|
|
155
160
|
if (!this.destroyed) {
|
|
161
|
+
console.info(`[ChartBridge] reconnect scheduled in ${delay}ms (attempt ${attempt + 1})`);
|
|
156
162
|
this.connect().catch(() => { });
|
|
157
163
|
}
|
|
158
|
-
}
|
|
164
|
+
}))));
|
|
159
165
|
}
|
|
160
166
|
cancelReconnect() {
|
|
161
|
-
if (this.
|
|
162
|
-
|
|
163
|
-
this.
|
|
167
|
+
if (this._reconnectFiber) {
|
|
168
|
+
Fiber.interrupt(this._reconnectFiber);
|
|
169
|
+
this._reconnectFiber = null;
|
|
164
170
|
}
|
|
165
171
|
}
|
|
166
172
|
emit(event, ...args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chartBridge.js","sourceRoot":"","sources":["../../src/mcp/chartBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"chartBridge.js","sourceRoot":"","sources":["../../src/mcp/chartBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginHost.d.ts","sourceRoot":"","sources":["../../src/plugin/PluginHost.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PluginHost.d.ts","sourceRoot":"","sources":["../../src/plugin/PluginHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 插件宿主 - 核心管理类
|
|
3
|
+
*/
|
|
4
|
+
import { KLineChartError } from '../errors';
|
|
1
5
|
import { PluginRegistry } from './PluginRegistry';
|
|
2
6
|
import { EventBus } from './EventBus';
|
|
3
7
|
import { HookSystem } from './HookSystem';
|
|
@@ -91,7 +95,7 @@ export class PluginHostImpl {
|
|
|
91
95
|
async use(plugin, config) {
|
|
92
96
|
this.ensureNotDestroyed();
|
|
93
97
|
if (this.registry.has(plugin.name)) {
|
|
94
|
-
throw new
|
|
98
|
+
throw new KLineChartError('INVALID_STATE', `Plugin "${plugin.name}" is already installed`);
|
|
95
99
|
}
|
|
96
100
|
try {
|
|
97
101
|
// 注册插件
|
|
@@ -123,7 +127,7 @@ export class PluginHostImpl {
|
|
|
123
127
|
this.ensureNotDestroyed();
|
|
124
128
|
const descriptor = this.registry.get(name);
|
|
125
129
|
if (!descriptor) {
|
|
126
|
-
throw new
|
|
130
|
+
throw new KLineChartError('INVALID_STATE', `Plugin "${name}" is not installed`);
|
|
127
131
|
}
|
|
128
132
|
try {
|
|
129
133
|
// 触发卸载前钩子
|
|
@@ -185,7 +189,7 @@ export class PluginHostImpl {
|
|
|
185
189
|
}
|
|
186
190
|
ensureNotDestroyed() {
|
|
187
191
|
if (this.isDestroyed) {
|
|
188
|
-
throw new
|
|
192
|
+
throw new KLineChartError('DISPOSED', 'PluginHost has been destroyed');
|
|
189
193
|
}
|
|
190
194
|
}
|
|
191
195
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginHost.js","sourceRoot":"","sources":["../../src/plugin/PluginHost.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PluginHost.js","sourceRoot":"","sources":["../../src/plugin/PluginHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginRegistry.d.ts","sourceRoot":"","sources":["../../src/plugin/PluginRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PluginRegistry.d.ts","sourceRoot":"","sources":["../../src/plugin/PluginRegistry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAEpE,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA2C;IAE1D;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB;IAmB5E;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI/C;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIjE;;OAEG;IACH,MAAM,IAAI,gBAAgB,EAAE;IAI5B;;OAEG;IACH,UAAU,IAAI,gBAAgB,EAAE;IAIhC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAUlE;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 插件注册表
|
|
3
|
+
*/
|
|
4
|
+
import { KLineChartError } from '../errors';
|
|
1
5
|
export class PluginRegistry {
|
|
2
6
|
plugins = new Map();
|
|
3
7
|
/**
|
|
@@ -5,7 +9,7 @@ export class PluginRegistry {
|
|
|
5
9
|
*/
|
|
6
10
|
register(plugin, config) {
|
|
7
11
|
if (this.plugins.has(plugin.name)) {
|
|
8
|
-
throw new
|
|
12
|
+
throw new KLineChartError('INVALID_STATE', `Plugin "${plugin.name}" is already registered`);
|
|
9
13
|
}
|
|
10
14
|
const descriptor = {
|
|
11
15
|
plugin,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginRegistry.js","sourceRoot":"","sources":["../../src/plugin/PluginRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PluginRegistry.js","sourceRoot":"","sources":["../../src/plugin/PluginRegistry.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAG3C,MAAM,OAAO,cAAc;IACjB,OAAO,GAAkC,IAAI,GAAG,EAAE,CAAA;IAE1D;;OAEG;IACH,QAAQ,CAAC,MAAc,EAAE,MAAgC;QACvD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,eAAe,CAAC,eAAe,EAAE,WAAW,MAAM,CAAC,IAAI,yBAAyB,CAAC,CAAA;QAC7F,CAAC;QAED,MAAM,UAAU,GAAqB;YACnC,MAAM;YACN,MAAM,EAAE;gBACN,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,CAAC;gBACX,GAAG,MAAM;aACV;YACD,KAAK,EAAE,YAA2B;SACnC,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QACzC,OAAO,UAAU,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,SAAS,CAA4B,IAAY;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAuB,CAAA;IACxD,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC,CAAA;IACjE,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAY,EAAE,KAAkB,EAAE,KAAa;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,GAAG,KAAK,CAAA;YACxB,IAAI,KAAK,EAAE,CAAC;gBACV,UAAU,CAAC,KAAK,GAAG,KAAK,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;CACF"}
|