@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.
Files changed (578) hide show
  1. package/dist/alerts/createAlertController.d.ts +30 -0
  2. package/dist/alerts/createAlertController.d.ts.map +1 -0
  3. package/dist/alerts/createAlertController.js +261 -0
  4. package/dist/alerts/createAlertController.js.map +1 -0
  5. package/dist/alerts/index.d.ts +5 -0
  6. package/dist/alerts/index.d.ts.map +1 -0
  7. package/dist/alerts/index.js +4 -0
  8. package/dist/alerts/index.js.map +1 -0
  9. package/dist/alerts/predicates.d.ts +28 -0
  10. package/dist/alerts/predicates.d.ts.map +1 -0
  11. package/dist/alerts/predicates.js +211 -0
  12. package/dist/alerts/predicates.js.map +1 -0
  13. package/dist/alerts/rollingVolume.d.ts +15 -0
  14. package/dist/alerts/rollingVolume.d.ts.map +1 -0
  15. package/dist/alerts/rollingVolume.js +42 -0
  16. package/dist/alerts/rollingVolume.js.map +1 -0
  17. package/dist/alerts/ruleSchema.d.ts +42 -0
  18. package/dist/alerts/ruleSchema.d.ts.map +1 -0
  19. package/dist/alerts/ruleSchema.js +240 -0
  20. package/dist/alerts/ruleSchema.js.map +1 -0
  21. package/dist/alerts/types.d.ts +169 -0
  22. package/dist/alerts/types.d.ts.map +1 -0
  23. package/dist/alerts/types.js +24 -0
  24. package/dist/alerts/types.js.map +1 -0
  25. package/dist/chartTypes/heikinAshi.d.ts +49 -0
  26. package/dist/chartTypes/heikinAshi.d.ts.map +1 -0
  27. package/dist/chartTypes/heikinAshi.js +94 -0
  28. package/dist/chartTypes/heikinAshi.js.map +1 -0
  29. package/dist/chartTypes/index.d.ts +6 -0
  30. package/dist/chartTypes/index.d.ts.map +1 -0
  31. package/dist/chartTypes/index.js +5 -0
  32. package/dist/chartTypes/index.js.map +1 -0
  33. package/dist/chartTypes/pointAndFigure.d.ts +83 -0
  34. package/dist/chartTypes/pointAndFigure.d.ts.map +1 -0
  35. package/dist/chartTypes/pointAndFigure.js +159 -0
  36. package/dist/chartTypes/pointAndFigure.js.map +1 -0
  37. package/dist/chartTypes/rangeBars.d.ts +61 -0
  38. package/dist/chartTypes/rangeBars.d.ts.map +1 -0
  39. package/dist/chartTypes/rangeBars.js +181 -0
  40. package/dist/chartTypes/rangeBars.js.map +1 -0
  41. package/dist/chartTypes/renko.d.ts +94 -0
  42. package/dist/chartTypes/renko.d.ts.map +1 -0
  43. package/dist/chartTypes/renko.js +207 -0
  44. package/dist/chartTypes/renko.js.map +1 -0
  45. package/dist/chartTypes/types.d.ts +97 -0
  46. package/dist/chartTypes/types.d.ts.map +1 -0
  47. package/dist/chartTypes/types.js +39 -0
  48. package/dist/chartTypes/types.js.map +1 -0
  49. package/dist/components/anchoredVwap/computeAnchoredVwap.d.ts +76 -0
  50. package/dist/components/anchoredVwap/computeAnchoredVwap.d.ts.map +1 -0
  51. package/dist/components/anchoredVwap/computeAnchoredVwap.js +155 -0
  52. package/dist/components/anchoredVwap/computeAnchoredVwap.js.map +1 -0
  53. package/dist/components/anchoredVwap/createAnchoredVwapController.d.ts +28 -0
  54. package/dist/components/anchoredVwap/createAnchoredVwapController.d.ts.map +1 -0
  55. package/dist/components/anchoredVwap/createAnchoredVwapController.js +282 -0
  56. package/dist/components/anchoredVwap/createAnchoredVwapController.js.map +1 -0
  57. package/dist/components/anchoredVwap/index.d.ts +11 -0
  58. package/dist/components/anchoredVwap/index.d.ts.map +1 -0
  59. package/dist/components/anchoredVwap/index.js +10 -0
  60. package/dist/components/anchoredVwap/index.js.map +1 -0
  61. package/dist/components/anchoredVwap/types.d.ts +171 -0
  62. package/dist/components/anchoredVwap/types.d.ts.map +1 -0
  63. package/dist/components/anchoredVwap/types.js +25 -0
  64. package/dist/components/anchoredVwap/types.js.map +1 -0
  65. package/dist/components/crosshairSync/createCrosshairSync.d.ts +94 -0
  66. package/dist/components/crosshairSync/createCrosshairSync.d.ts.map +1 -0
  67. package/dist/components/crosshairSync/createCrosshairSync.js +118 -0
  68. package/dist/components/crosshairSync/createCrosshairSync.js.map +1 -0
  69. package/dist/components/crosshairSync/index.d.ts +2 -0
  70. package/dist/components/crosshairSync/index.d.ts.map +1 -0
  71. package/dist/components/crosshairSync/index.js +2 -0
  72. package/dist/components/crosshairSync/index.js.map +1 -0
  73. package/dist/components/footprint/aggressor.d.ts +89 -0
  74. package/dist/components/footprint/aggressor.d.ts.map +1 -0
  75. package/dist/components/footprint/aggressor.js +106 -0
  76. package/dist/components/footprint/aggressor.js.map +1 -0
  77. package/dist/components/footprint/createFootprintController.d.ts +29 -0
  78. package/dist/components/footprint/createFootprintController.d.ts.map +1 -0
  79. package/dist/components/footprint/createFootprintController.js +264 -0
  80. package/dist/components/footprint/createFootprintController.js.map +1 -0
  81. package/dist/components/footprint/index.d.ts +7 -0
  82. package/dist/components/footprint/index.d.ts.map +1 -0
  83. package/dist/components/footprint/index.js +4 -0
  84. package/dist/components/footprint/index.js.map +1 -0
  85. package/dist/components/footprint/perBarStats.d.ts +63 -0
  86. package/dist/components/footprint/perBarStats.d.ts.map +1 -0
  87. package/dist/components/footprint/perBarStats.js +123 -0
  88. package/dist/components/footprint/perBarStats.js.map +1 -0
  89. package/dist/components/footprint/types.d.ts +197 -0
  90. package/dist/components/footprint/types.d.ts.map +1 -0
  91. package/dist/components/footprint/types.js +23 -0
  92. package/dist/components/footprint/types.js.map +1 -0
  93. package/dist/components/mtfOverlay/alignToBaseIndex.d.ts +45 -0
  94. package/dist/components/mtfOverlay/alignToBaseIndex.d.ts.map +1 -0
  95. package/dist/components/mtfOverlay/alignToBaseIndex.js +92 -0
  96. package/dist/components/mtfOverlay/alignToBaseIndex.js.map +1 -0
  97. package/dist/components/mtfOverlay/createMtfController.d.ts +7 -0
  98. package/dist/components/mtfOverlay/createMtfController.d.ts.map +1 -0
  99. package/dist/components/mtfOverlay/createMtfController.js +134 -0
  100. package/dist/components/mtfOverlay/createMtfController.js.map +1 -0
  101. package/dist/components/mtfOverlay/index.d.ts +19 -0
  102. package/dist/components/mtfOverlay/index.d.ts.map +1 -0
  103. package/dist/components/mtfOverlay/index.js +18 -0
  104. package/dist/components/mtfOverlay/index.js.map +1 -0
  105. package/dist/components/mtfOverlay/resampleBars.d.ts +37 -0
  106. package/dist/components/mtfOverlay/resampleBars.d.ts.map +1 -0
  107. package/dist/components/mtfOverlay/resampleBars.js +93 -0
  108. package/dist/components/mtfOverlay/resampleBars.js.map +1 -0
  109. package/dist/components/mtfOverlay/types.d.ts +132 -0
  110. package/dist/components/mtfOverlay/types.d.ts.map +1 -0
  111. package/dist/components/mtfOverlay/types.js +22 -0
  112. package/dist/components/mtfOverlay/types.js.map +1 -0
  113. package/dist/components/orderBookHeatmap/createHeatmapController.d.ts +21 -0
  114. package/dist/components/orderBookHeatmap/createHeatmapController.d.ts.map +1 -0
  115. package/dist/components/orderBookHeatmap/createHeatmapController.js +234 -0
  116. package/dist/components/orderBookHeatmap/createHeatmapController.js.map +1 -0
  117. package/dist/components/orderBookHeatmap/createOrderBookState.d.ts +18 -0
  118. package/dist/components/orderBookHeatmap/createOrderBookState.d.ts.map +1 -0
  119. package/dist/components/orderBookHeatmap/createOrderBookState.js +102 -0
  120. package/dist/components/orderBookHeatmap/createOrderBookState.js.map +1 -0
  121. package/dist/components/orderBookHeatmap/deltaArchive.d.ts +25 -0
  122. package/dist/components/orderBookHeatmap/deltaArchive.d.ts.map +1 -0
  123. package/dist/components/orderBookHeatmap/deltaArchive.js +106 -0
  124. package/dist/components/orderBookHeatmap/deltaArchive.js.map +1 -0
  125. package/dist/components/orderBookHeatmap/index.d.ts +13 -0
  126. package/dist/components/orderBookHeatmap/index.d.ts.map +1 -0
  127. package/dist/components/orderBookHeatmap/index.js +12 -0
  128. package/dist/components/orderBookHeatmap/index.js.map +1 -0
  129. package/dist/components/orderBookHeatmap/logColorScale.d.ts +20 -0
  130. package/dist/components/orderBookHeatmap/logColorScale.d.ts.map +1 -0
  131. package/dist/components/orderBookHeatmap/logColorScale.js +71 -0
  132. package/dist/components/orderBookHeatmap/logColorScale.js.map +1 -0
  133. package/dist/components/orderBookHeatmap/snapshotRing.d.ts +16 -0
  134. package/dist/components/orderBookHeatmap/snapshotRing.d.ts.map +1 -0
  135. package/dist/components/orderBookHeatmap/snapshotRing.js +61 -0
  136. package/dist/components/orderBookHeatmap/snapshotRing.js.map +1 -0
  137. package/dist/components/orderBookHeatmap/types.d.ts +128 -0
  138. package/dist/components/orderBookHeatmap/types.d.ts.map +1 -0
  139. package/dist/components/orderBookHeatmap/types.js +16 -0
  140. package/dist/components/orderBookHeatmap/types.js.map +1 -0
  141. package/dist/components/volumeProfile/binning.d.ts +54 -0
  142. package/dist/components/volumeProfile/binning.d.ts.map +1 -0
  143. package/dist/components/volumeProfile/binning.js +123 -0
  144. package/dist/components/volumeProfile/binning.js.map +1 -0
  145. package/dist/components/volumeProfile/createVolumeProfileController.d.ts +31 -0
  146. package/dist/components/volumeProfile/createVolumeProfileController.d.ts.map +1 -0
  147. package/dist/components/volumeProfile/createVolumeProfileController.js +179 -0
  148. package/dist/components/volumeProfile/createVolumeProfileController.js.map +1 -0
  149. package/dist/components/volumeProfile/index.d.ts +6 -0
  150. package/dist/components/volumeProfile/index.d.ts.map +1 -0
  151. package/dist/components/volumeProfile/index.js +5 -0
  152. package/dist/components/volumeProfile/index.js.map +1 -0
  153. package/dist/components/volumeProfile/poc.d.ts +35 -0
  154. package/dist/components/volumeProfile/poc.d.ts.map +1 -0
  155. package/dist/components/volumeProfile/poc.js +51 -0
  156. package/dist/components/volumeProfile/poc.js.map +1 -0
  157. package/dist/components/volumeProfile/types.d.ts +138 -0
  158. package/dist/components/volumeProfile/types.d.ts.map +1 -0
  159. package/dist/components/volumeProfile/types.js +19 -0
  160. package/dist/components/volumeProfile/types.js.map +1 -0
  161. package/dist/components/volumeProfile/valueArea.d.ts +58 -0
  162. package/dist/components/volumeProfile/valueArea.d.ts.map +1 -0
  163. package/dist/components/volumeProfile/valueArea.js +172 -0
  164. package/dist/components/volumeProfile/valueArea.js.map +1 -0
  165. package/dist/controllers/createChartController.d.ts.map +1 -1
  166. package/dist/controllers/createChartController.js +22 -11
  167. package/dist/controllers/createChartController.js.map +1 -1
  168. package/dist/controllers/types.d.ts +3 -1
  169. package/dist/controllers/types.d.ts.map +1 -1
  170. package/dist/data-fetchers/baostock.d.ts.map +1 -1
  171. package/dist/data-fetchers/baostock.js +2 -1
  172. package/dist/data-fetchers/baostock.js.map +1 -1
  173. package/dist/data-fetchers/dataBuffer.effects.d.ts.map +1 -1
  174. package/dist/data-fetchers/dataBuffer.effects.js +2 -1
  175. package/dist/data-fetchers/dataBuffer.effects.js.map +1 -1
  176. package/dist/data-fetchers/fetcherDefinitionRegistry.d.ts.map +1 -1
  177. package/dist/data-fetchers/fetcherDefinitionRegistry.js +2 -1
  178. package/dist/data-fetchers/fetcherDefinitionRegistry.js.map +1 -1
  179. package/dist/data-fetchers/gotdx.js +4 -3
  180. package/dist/data-fetchers/gotdx.js.map +1 -1
  181. package/dist/data-fetchers/router.d.ts.map +1 -1
  182. package/dist/data-fetchers/router.js +4 -3
  183. package/dist/data-fetchers/router.js.map +1 -1
  184. package/dist/data-fetchers/tradingview.js +3 -2
  185. package/dist/data-fetchers/tradingview.js.map +1 -1
  186. package/dist/engine/chart.d.ts +13 -0
  187. package/dist/engine/chart.d.ts.map +1 -1
  188. package/dist/engine/chart.js +109 -0
  189. package/dist/engine/chart.js.map +1 -1
  190. package/dist/engine/data/chartDataManager.d.ts +1 -0
  191. package/dist/engine/data/chartDataManager.d.ts.map +1 -1
  192. package/dist/engine/data/chartDataManager.js +27 -4
  193. package/dist/engine/data/chartDataManager.js.map +1 -1
  194. package/dist/engine/drawing/toolConfig.d.ts.map +1 -1
  195. package/dist/engine/drawing/toolConfig.js +2 -1
  196. package/dist/engine/drawing/toolConfig.js.map +1 -1
  197. package/dist/engine/indicators/chartIndicatorManager.d.ts.map +1 -1
  198. package/dist/engine/indicators/chartIndicatorManager.js +2 -1
  199. package/dist/engine/indicators/chartIndicatorManager.js.map +1 -1
  200. package/dist/engine/indicators/indicatorDefinitionRegistry.d.ts.map +1 -1
  201. package/dist/engine/indicators/indicatorDefinitionRegistry.js +2 -1
  202. package/dist/engine/indicators/indicatorDefinitionRegistry.js.map +1 -1
  203. package/dist/engine/indicators/indicatorMetadata.d.ts.map +1 -1
  204. package/dist/engine/indicators/indicatorMetadata.js +2 -1
  205. package/dist/engine/indicators/indicatorMetadata.js.map +1 -1
  206. package/dist/engine/indicators/indicatorRegistry.d.ts.map +1 -1
  207. package/dist/engine/indicators/indicatorRegistry.js +6 -5
  208. package/dist/engine/indicators/indicatorRegistry.js.map +1 -1
  209. package/dist/engine/indicators/registerBuiltins.d.ts.map +1 -1
  210. package/dist/engine/indicators/registerBuiltins.js +2 -1
  211. package/dist/engine/indicators/registerBuiltins.js.map +1 -1
  212. package/dist/engine/indicators/scheduler.d.ts +6 -0
  213. package/dist/engine/indicators/scheduler.d.ts.map +1 -1
  214. package/dist/engine/indicators/scheduler.js +12 -0
  215. package/dist/engine/indicators/scheduler.js.map +1 -1
  216. package/dist/engine/indicators/soa.d.ts.map +1 -1
  217. package/dist/engine/indicators/soa.js +2 -1
  218. package/dist/engine/indicators/soa.js.map +1 -1
  219. package/dist/engine/indicators/stateComposer.d.ts.map +1 -1
  220. package/dist/engine/indicators/stateComposer.js +2 -1
  221. package/dist/engine/indicators/stateComposer.js.map +1 -1
  222. package/dist/engine/subPaneManager.d.ts.map +1 -1
  223. package/dist/engine/subPaneManager.js +2 -1
  224. package/dist/engine/subPaneManager.js.map +1 -1
  225. package/dist/engine/utils/chartZoomController.d.ts +2 -0
  226. package/dist/engine/utils/chartZoomController.d.ts.map +1 -1
  227. package/dist/engine/utils/chartZoomController.js +5 -1
  228. package/dist/engine/utils/chartZoomController.js.map +1 -1
  229. package/dist/errors-help.d.ts +72 -0
  230. package/dist/errors-help.d.ts.map +1 -0
  231. package/dist/errors-help.js +149 -0
  232. package/dist/errors-help.js.map +1 -0
  233. package/dist/errors.d.ts +64 -0
  234. package/dist/errors.d.ts.map +1 -0
  235. package/dist/errors.js +61 -0
  236. package/dist/errors.js.map +1 -0
  237. package/dist/index.d.ts +18 -0
  238. package/dist/index.d.ts.map +1 -1
  239. package/dist/index.js +22 -0
  240. package/dist/index.js.map +1 -1
  241. package/dist/indicators/alma.d.ts +27 -0
  242. package/dist/indicators/alma.d.ts.map +1 -0
  243. package/dist/indicators/alma.js +36 -0
  244. package/dist/indicators/alma.js.map +1 -0
  245. package/dist/indicators/awesomeOscillator.d.ts +19 -0
  246. package/dist/indicators/awesomeOscillator.d.ts.map +1 -0
  247. package/dist/indicators/awesomeOscillator.js +36 -0
  248. package/dist/indicators/awesomeOscillator.js.map +1 -0
  249. package/dist/indicators/dpo.d.ts +17 -0
  250. package/dist/indicators/dpo.d.ts.map +1 -0
  251. package/dist/indicators/dpo.js +24 -0
  252. package/dist/indicators/dpo.js.map +1 -0
  253. package/dist/indicators/fisherTransform.d.ts +26 -0
  254. package/dist/indicators/fisherTransform.d.ts.map +1 -0
  255. package/dist/indicators/fisherTransform.js +44 -0
  256. package/dist/indicators/fisherTransform.js.map +1 -0
  257. package/dist/indicators/frama.d.ts +25 -0
  258. package/dist/indicators/frama.d.ts.map +1 -0
  259. package/dist/indicators/frama.js +61 -0
  260. package/dist/indicators/frama.js.map +1 -0
  261. package/dist/indicators/index.d.ts +24 -0
  262. package/dist/indicators/index.d.ts.map +1 -0
  263. package/dist/indicators/index.js +26 -0
  264. package/dist/indicators/index.js.map +1 -0
  265. package/dist/indicators/lsma.d.ts +21 -0
  266. package/dist/indicators/lsma.d.ts.map +1 -0
  267. package/dist/indicators/lsma.js +37 -0
  268. package/dist/indicators/lsma.js.map +1 -0
  269. package/dist/indicators/schaffTrendCycle.d.ts +24 -0
  270. package/dist/indicators/schaffTrendCycle.d.ts.map +1 -0
  271. package/dist/indicators/schaffTrendCycle.js +70 -0
  272. package/dist/indicators/schaffTrendCycle.js.map +1 -0
  273. package/dist/indicators/stochRSI.d.ts +24 -0
  274. package/dist/indicators/stochRSI.d.ts.map +1 -0
  275. package/dist/indicators/stochRSI.js +86 -0
  276. package/dist/indicators/stochRSI.js.map +1 -0
  277. package/dist/indicators/t3.d.ts +31 -0
  278. package/dist/indicators/t3.d.ts.map +1 -0
  279. package/dist/indicators/t3.js +63 -0
  280. package/dist/indicators/t3.js.map +1 -0
  281. package/dist/indicators/ultimateOscillator.d.ts +26 -0
  282. package/dist/indicators/ultimateOscillator.d.ts.map +1 -0
  283. package/dist/indicators/ultimateOscillator.js +59 -0
  284. package/dist/indicators/ultimateOscillator.js.map +1 -0
  285. package/dist/indicators/vidya.d.ts +24 -0
  286. package/dist/indicators/vidya.d.ts.map +1 -0
  287. package/dist/indicators/vidya.js +54 -0
  288. package/dist/indicators/vidya.js.map +1 -0
  289. package/dist/indicators/zlema.d.ts +16 -0
  290. package/dist/indicators/zlema.d.ts.map +1 -0
  291. package/dist/indicators/zlema.js +26 -0
  292. package/dist/indicators/zlema.js.map +1 -0
  293. package/dist/input/gesture.d.ts +125 -0
  294. package/dist/input/gesture.d.ts.map +1 -0
  295. package/dist/input/gesture.js +249 -0
  296. package/dist/input/gesture.js.map +1 -0
  297. package/dist/input/index.d.ts +9 -0
  298. package/dist/input/index.d.ts.map +1 -0
  299. package/dist/input/index.js +9 -0
  300. package/dist/input/index.js.map +1 -0
  301. package/dist/input/keyboard.d.ts +140 -0
  302. package/dist/input/keyboard.d.ts.map +1 -0
  303. package/dist/input/keyboard.js +260 -0
  304. package/dist/input/keyboard.js.map +1 -0
  305. package/dist/mcp/chartBridge.d.ts +2 -2
  306. package/dist/mcp/chartBridge.d.ts.map +1 -1
  307. package/dist/mcp/chartBridge.js +27 -21
  308. package/dist/mcp/chartBridge.js.map +1 -1
  309. package/dist/plugin/PluginHost.d.ts +0 -3
  310. package/dist/plugin/PluginHost.d.ts.map +1 -1
  311. package/dist/plugin/PluginHost.js +7 -3
  312. package/dist/plugin/PluginHost.js.map +1 -1
  313. package/dist/plugin/PluginRegistry.d.ts +0 -3
  314. package/dist/plugin/PluginRegistry.d.ts.map +1 -1
  315. package/dist/plugin/PluginRegistry.js +5 -1
  316. package/dist/plugin/PluginRegistry.js.map +1 -1
  317. package/dist/render/Renderer.d.ts +116 -0
  318. package/dist/render/Renderer.d.ts.map +1 -0
  319. package/dist/render/Renderer.js +31 -0
  320. package/dist/render/Renderer.js.map +1 -0
  321. package/dist/render/SurfaceBackend.d.ts +83 -0
  322. package/dist/render/SurfaceBackend.d.ts.map +1 -0
  323. package/dist/render/SurfaceBackend.js +27 -0
  324. package/dist/render/SurfaceBackend.js.map +1 -0
  325. package/dist/render/index.d.ts +12 -0
  326. package/dist/render/index.d.ts.map +1 -0
  327. package/dist/render/index.js +11 -0
  328. package/dist/render/index.js.map +1 -0
  329. package/dist/renderer-tier/detectRendererTier.d.ts +57 -0
  330. package/dist/renderer-tier/detectRendererTier.d.ts.map +1 -0
  331. package/dist/renderer-tier/detectRendererTier.js +143 -0
  332. package/dist/renderer-tier/detectRendererTier.js.map +1 -0
  333. package/dist/renderer-tier/index.d.ts +12 -0
  334. package/dist/renderer-tier/index.d.ts.map +1 -0
  335. package/dist/renderer-tier/index.js +12 -0
  336. package/dist/renderer-tier/index.js.map +1 -0
  337. package/dist/renderer-tier/selectBackend.d.ts +106 -0
  338. package/dist/renderer-tier/selectBackend.d.ts.map +1 -0
  339. package/dist/renderer-tier/selectBackend.js +113 -0
  340. package/dist/renderer-tier/selectBackend.js.map +1 -0
  341. package/dist/renderer-tier/types.d.ts +50 -0
  342. package/dist/renderer-tier/types.d.ts.map +1 -0
  343. package/dist/renderer-tier/types.js +24 -0
  344. package/dist/renderer-tier/types.js.map +1 -0
  345. package/dist/replay/createReplayController.d.ts +3 -0
  346. package/dist/replay/createReplayController.d.ts.map +1 -0
  347. package/dist/replay/createReplayController.js +251 -0
  348. package/dist/replay/createReplayController.js.map +1 -0
  349. package/dist/replay/index.d.ts +5 -0
  350. package/dist/replay/index.d.ts.map +1 -0
  351. package/dist/replay/index.js +3 -0
  352. package/dist/replay/index.js.map +1 -0
  353. package/dist/replay/timeline.d.ts +50 -0
  354. package/dist/replay/timeline.d.ts.map +1 -0
  355. package/dist/replay/timeline.js +104 -0
  356. package/dist/replay/timeline.js.map +1 -0
  357. package/dist/replay/types.d.ts +94 -0
  358. package/dist/replay/types.d.ts.map +1 -0
  359. package/dist/replay/types.js +21 -0
  360. package/dist/replay/types.js.map +1 -0
  361. package/dist/scale/anchoredZoom.d.ts +64 -0
  362. package/dist/scale/anchoredZoom.d.ts.map +1 -0
  363. package/dist/scale/anchoredZoom.js +67 -0
  364. package/dist/scale/anchoredZoom.js.map +1 -0
  365. package/dist/scale/createPriceScale.d.ts +49 -0
  366. package/dist/scale/createPriceScale.d.ts.map +1 -0
  367. package/dist/scale/createPriceScale.js +175 -0
  368. package/dist/scale/createPriceScale.js.map +1 -0
  369. package/dist/scale/createTimeScale.d.ts +27 -0
  370. package/dist/scale/createTimeScale.d.ts.map +1 -0
  371. package/dist/scale/createTimeScale.js +139 -0
  372. package/dist/scale/createTimeScale.js.map +1 -0
  373. package/dist/scale/index.d.ts +6 -0
  374. package/dist/scale/index.d.ts.map +1 -0
  375. package/dist/scale/index.js +5 -0
  376. package/dist/scale/index.js.map +1 -0
  377. package/dist/scale/originShift.d.ts +69 -0
  378. package/dist/scale/originShift.d.ts.map +1 -0
  379. package/dist/scale/originShift.js +41 -0
  380. package/dist/scale/originShift.js.map +1 -0
  381. package/dist/scale/types.d.ts +90 -0
  382. package/dist/scale/types.d.ts.map +1 -0
  383. package/dist/scale/types.js +17 -0
  384. package/dist/scale/types.js.map +1 -0
  385. package/dist/scene/createScene.d.ts +22 -0
  386. package/dist/scene/createScene.d.ts.map +1 -0
  387. package/dist/scene/createScene.js +114 -0
  388. package/dist/scene/createScene.js.map +1 -0
  389. package/dist/scene/index.d.ts +13 -0
  390. package/dist/scene/index.d.ts.map +1 -0
  391. package/dist/scene/index.js +11 -0
  392. package/dist/scene/index.js.map +1 -0
  393. package/dist/scene/layerRegistry.d.ts +83 -0
  394. package/dist/scene/layerRegistry.d.ts.map +1 -0
  395. package/dist/scene/layerRegistry.js +43 -0
  396. package/dist/scene/layerRegistry.js.map +1 -0
  397. package/dist/scene/types.d.ts +128 -0
  398. package/dist/scene/types.d.ts.map +1 -0
  399. package/dist/scene/types.js +21 -0
  400. package/dist/scene/types.js.map +1 -0
  401. package/dist/scheduler/createFrameBudget.d.ts +91 -0
  402. package/dist/scheduler/createFrameBudget.d.ts.map +1 -0
  403. package/dist/scheduler/createFrameBudget.js +232 -0
  404. package/dist/scheduler/createFrameBudget.js.map +1 -0
  405. package/dist/scheduler/index.d.ts +2 -0
  406. package/dist/scheduler/index.d.ts.map +1 -0
  407. package/dist/scheduler/index.js +2 -0
  408. package/dist/scheduler/index.js.map +1 -0
  409. package/dist/tokens/themeToCssVars.d.ts.map +1 -1
  410. package/dist/tokens/themeToCssVars.js +2 -28
  411. package/dist/tokens/themeToCssVars.js.map +1 -1
  412. package/dist/version.d.ts +1 -1
  413. package/dist/version.d.ts.map +1 -1
  414. package/dist/version.js +1 -1
  415. package/dist/version.js.map +1 -1
  416. package/package.json +1 -1
  417. package/src/__bench__/indicators.bench.ts +215 -0
  418. package/src/__bench__/orderBookHeatmap.bench.ts +68 -0
  419. package/src/__bench__/scale.bench.ts +80 -0
  420. package/src/__bench__/signal.bench.ts +41 -0
  421. package/src/__bench__/volumeProfile.bench.ts +66 -0
  422. package/src/__tests__/errors-help.test.ts +184 -0
  423. package/src/__tests__/errors.test.ts +187 -0
  424. package/src/alerts/__tests__/controller.test.ts +231 -0
  425. package/src/alerts/__tests__/predicates.test.ts +374 -0
  426. package/src/alerts/__tests__/ruleSchema.test.ts +180 -0
  427. package/src/alerts/createAlertController.ts +312 -0
  428. package/src/alerts/index.ts +18 -0
  429. package/src/alerts/predicates.ts +231 -0
  430. package/src/alerts/rollingVolume.ts +51 -0
  431. package/src/alerts/ruleSchema.ts +278 -0
  432. package/src/alerts/types.ts +177 -0
  433. package/src/chartTypes/__tests__/heikinAshi.test.ts +122 -0
  434. package/src/chartTypes/__tests__/pointAndFigure.test.ts +167 -0
  435. package/src/chartTypes/__tests__/rangeBars.test.ts +146 -0
  436. package/src/chartTypes/__tests__/renko.test.ts +160 -0
  437. package/src/chartTypes/heikinAshi.ts +116 -0
  438. package/src/chartTypes/index.ts +5 -0
  439. package/src/chartTypes/pointAndFigure.ts +278 -0
  440. package/src/chartTypes/rangeBars.ts +303 -0
  441. package/src/chartTypes/renko.ts +311 -0
  442. package/src/chartTypes/types.ts +99 -0
  443. package/src/components/anchoredVwap/__tests__/computeAnchoredVwap.test.ts +331 -0
  444. package/src/components/anchoredVwap/__tests__/controller.test.ts +430 -0
  445. package/src/components/anchoredVwap/computeAnchoredVwap.ts +174 -0
  446. package/src/components/anchoredVwap/createAnchoredVwapController.ts +358 -0
  447. package/src/components/anchoredVwap/index.ts +17 -0
  448. package/src/components/anchoredVwap/types.ts +187 -0
  449. package/src/components/crosshairSync/__tests__/crosshairSync.test.ts +261 -0
  450. package/src/components/crosshairSync/createCrosshairSync.ts +187 -0
  451. package/src/components/crosshairSync/index.ts +5 -0
  452. package/src/components/footprint/__tests__/aggressor.test.ts +127 -0
  453. package/src/components/footprint/__tests__/controller.test.ts +130 -0
  454. package/src/components/footprint/__tests__/perBarStats.test.ts +114 -0
  455. package/src/components/footprint/aggressor.ts +165 -0
  456. package/src/components/footprint/createFootprintController.ts +338 -0
  457. package/src/components/footprint/index.ts +21 -0
  458. package/src/components/footprint/perBarStats.ts +137 -0
  459. package/src/components/footprint/types.ts +232 -0
  460. package/src/components/mtfOverlay/__tests__/alignToBaseIndex.test.ts +103 -0
  461. package/src/components/mtfOverlay/__tests__/controller.test.ts +172 -0
  462. package/src/components/mtfOverlay/__tests__/resampleBars.test.ts +106 -0
  463. package/src/components/mtfOverlay/alignToBaseIndex.ts +108 -0
  464. package/src/components/mtfOverlay/createMtfController.ts +180 -0
  465. package/src/components/mtfOverlay/index.ts +26 -0
  466. package/src/components/mtfOverlay/resampleBars.ts +134 -0
  467. package/src/components/mtfOverlay/types.ts +148 -0
  468. package/src/components/orderBookHeatmap/__tests__/controller.test.ts +237 -0
  469. package/src/components/orderBookHeatmap/__tests__/deltaArchive.test.ts +88 -0
  470. package/src/components/orderBookHeatmap/__tests__/logColorScale.test.ts +69 -0
  471. package/src/components/orderBookHeatmap/__tests__/orderBookState.test.ts +113 -0
  472. package/src/components/orderBookHeatmap/__tests__/snapshotRing.test.ts +53 -0
  473. package/src/components/orderBookHeatmap/computeShader.wgsl.md +130 -0
  474. package/src/components/orderBookHeatmap/createHeatmapController.ts +273 -0
  475. package/src/components/orderBookHeatmap/createOrderBookState.ts +116 -0
  476. package/src/components/orderBookHeatmap/deltaArchive.ts +113 -0
  477. package/src/components/orderBookHeatmap/index.ts +25 -0
  478. package/src/components/orderBookHeatmap/logColorScale.ts +77 -0
  479. package/src/components/orderBookHeatmap/snapshotRing.ts +65 -0
  480. package/src/components/orderBookHeatmap/types.ts +168 -0
  481. package/src/components/volumeProfile/__tests__/binning.test.ts +133 -0
  482. package/src/components/volumeProfile/__tests__/poc.test.ts +44 -0
  483. package/src/components/volumeProfile/__tests__/valueArea.test.ts +177 -0
  484. package/src/components/volumeProfile/binning.ts +133 -0
  485. package/src/components/volumeProfile/createVolumeProfileController.ts +213 -0
  486. package/src/components/volumeProfile/index.ts +12 -0
  487. package/src/components/volumeProfile/poc.ts +53 -0
  488. package/src/components/volumeProfile/types.ts +148 -0
  489. package/src/components/volumeProfile/valueArea.ts +187 -0
  490. package/src/controllers/createChartController.ts +23 -10
  491. package/src/controllers/types.ts +5 -1
  492. package/src/data-fetchers/baostock.ts +2 -1
  493. package/src/data-fetchers/dataBuffer.effects.ts +3 -1
  494. package/src/data-fetchers/fetcherDefinitionRegistry.ts +2 -1
  495. package/src/data-fetchers/gotdx.ts +4 -3
  496. package/src/data-fetchers/router.ts +6 -3
  497. package/src/data-fetchers/tradingview.ts +3 -2
  498. package/src/engine/chart.ts +126 -3
  499. package/src/engine/data/chartDataManager.ts +26 -4
  500. package/src/engine/drawing/toolConfig.ts +2 -1
  501. package/src/engine/indicators/chartIndicatorManager.ts +2 -1
  502. package/src/engine/indicators/indicatorDefinitionRegistry.ts +2 -1
  503. package/src/engine/indicators/indicatorMetadata.ts +2 -1
  504. package/src/engine/indicators/indicatorRegistry.ts +6 -5
  505. package/src/engine/indicators/registerBuiltins.ts +2 -1
  506. package/src/engine/indicators/scheduler.ts +15 -0
  507. package/src/engine/indicators/soa.ts +2 -1
  508. package/src/engine/indicators/stateComposer.ts +2 -1
  509. package/src/engine/subPaneManager.ts +2 -1
  510. package/src/engine/utils/chartZoomController.ts +7 -1
  511. package/src/errors-help.ts +218 -0
  512. package/src/errors.ts +128 -0
  513. package/src/index.ts +37 -0
  514. package/src/indicators/__tests__/maFamily.test.ts +159 -0
  515. package/src/indicators/__tests__/oscillators.test.ts +150 -0
  516. package/src/indicators/alma.ts +61 -0
  517. package/src/indicators/awesomeOscillator.ts +54 -0
  518. package/src/indicators/dpo.ts +37 -0
  519. package/src/indicators/fisherTransform.ts +63 -0
  520. package/src/indicators/frama.ts +87 -0
  521. package/src/indicators/index.ts +39 -0
  522. package/src/indicators/lsma.ts +58 -0
  523. package/src/indicators/schaffTrendCycle.ts +92 -0
  524. package/src/indicators/stochRSI.ts +108 -0
  525. package/src/indicators/t3.ts +96 -0
  526. package/src/indicators/ultimateOscillator.ts +83 -0
  527. package/src/indicators/vidya.ts +80 -0
  528. package/src/indicators/zlema.ts +41 -0
  529. package/src/input/__tests__/gesture.test.ts +271 -0
  530. package/src/input/__tests__/keyboard.test.ts +317 -0
  531. package/src/input/gesture.ts +357 -0
  532. package/src/input/index.ts +26 -0
  533. package/src/input/keyboard.ts +373 -0
  534. package/src/mcp/chartBridge.ts +98 -72
  535. package/src/plugin/PluginHost.ts +4 -3
  536. package/src/plugin/PluginRegistry.ts +2 -1
  537. package/src/render/Renderer.ts +127 -0
  538. package/src/render/SurfaceBackend.ts +94 -0
  539. package/src/render/__tests__/contract.test.ts +176 -0
  540. package/src/render/index.ts +27 -0
  541. package/src/renderer-tier/__tests__/detectRendererTier.test.ts +180 -0
  542. package/src/renderer-tier/__tests__/selectBackend.test.ts +253 -0
  543. package/src/renderer-tier/detectRendererTier.ts +168 -0
  544. package/src/renderer-tier/index.ts +30 -0
  545. package/src/renderer-tier/selectBackend.ts +201 -0
  546. package/src/renderer-tier/types.ts +59 -0
  547. package/src/replay/__tests__/controller.test.ts +309 -0
  548. package/src/replay/__tests__/timeline.test.ts +99 -0
  549. package/src/replay/createReplayController.ts +302 -0
  550. package/src/replay/index.ts +15 -0
  551. package/src/replay/timeline.ts +106 -0
  552. package/src/replay/types.ts +107 -0
  553. package/src/scale/__tests__/anchoredZoom.test.ts +125 -0
  554. package/src/scale/__tests__/originShift.test.ts +97 -0
  555. package/src/scale/__tests__/priceScale.test.ts +219 -0
  556. package/src/scale/__tests__/timeScale.test.ts +119 -0
  557. package/src/scale/anchoredZoom.ts +104 -0
  558. package/src/scale/createPriceScale.ts +226 -0
  559. package/src/scale/createTimeScale.ts +150 -0
  560. package/src/scale/index.ts +9 -0
  561. package/src/scale/originShift.ts +111 -0
  562. package/src/scale/types.ts +100 -0
  563. package/src/scene/__tests__/layerRegistry.test.ts +207 -0
  564. package/src/scene/__tests__/scene.test.ts +411 -0
  565. package/src/scene/createScene.ts +117 -0
  566. package/src/scene/index.ts +29 -0
  567. package/src/scene/layerRegistry.ts +117 -0
  568. package/src/scene/types.ts +143 -0
  569. package/src/scheduler/__tests__/createFrameBudget.test.ts +315 -0
  570. package/src/scheduler/createFrameBudget.ts +316 -0
  571. package/src/scheduler/index.ts +7 -0
  572. package/src/tokens/themeToCssVars.ts +3 -1
  573. package/src/version.ts +1 -1
  574. package/dist/data-fetchers/gotdx/gotdx.d.ts +0 -7
  575. package/dist/data-fetchers/gotdx/gotdx.d.ts.map +0 -1
  576. package/dist/data-fetchers/gotdx/gotdx.js +0 -7
  577. package/dist/data-fetchers/gotdx/gotdx.js.map +0 -1
  578. package/src/data-fetchers/gotdx/gotdx.ts +0 -6
@@ -0,0 +1,116 @@
1
+ /**
2
+ * High-level renderer interface — the drawing primitives the chart's
3
+ * scene layers (candles, volume, indicators, drawings) call into.
4
+ *
5
+ * Both the existing WebGL renderer (currently spread across
6
+ * `src/core/renderers/{candle,subVolume,crosshair,...}.ts`) and the
7
+ * P1 WebGPU renderer implement this contract. v0's WebGL path will
8
+ * be refactored to fit behind it in a follow-up PR (this file ships
9
+ * the contract first; the legacy code is unchanged until the next
10
+ * step is approved).
11
+ *
12
+ * Design notes:
13
+ * - `drawInstances` is the workhorse: render N copies of a unit geometry
14
+ * parameterized by an instance buffer. K-lines, volume bars, footprint
15
+ * cells, heatmap tiles all reduce to instanced primitives — see
16
+ * `docs/ROADMAP.md` §2.3 for the K-line example.
17
+ * - `drawLines` covers MA-style continuous polylines, drawings, axes.
18
+ * - `dispatchCompute` exists only because WebGPU has compute shaders;
19
+ * the WebGL implementation throws on call so callers can feature-detect
20
+ * via `caps.compute`. Volume Profile binning, M4 downsampling, footprint
21
+ * aggregation will use it on the WebGPU path.
22
+ * - `setUniforms` is intentionally schemaless on the interface — the
23
+ * uniform layout is owned by each shader/program. Callers pass a
24
+ * structured object that the backend translates into uniform writes.
25
+ *
26
+ * This file is **pure interface** in this PR; behaviour comes in the
27
+ * next two PRs (Scale interfaces, then a Renderer impl that wraps
28
+ * the existing WebGL primitives).
29
+ */
30
+ import type { SurfaceBackend, SurfaceRegion } from './SurfaceBackend';
31
+ /** Reported by the backend so feature-conditional code can branch. */
32
+ export type RendererCapabilities = {
33
+ /** WebGPU compute shaders available. WebGL backends report false. */
34
+ compute: boolean;
35
+ /** Storage buffers usable as ring buffers / scatter-add targets. */
36
+ storageBuffer: boolean;
37
+ /** Maximum elements per drawInstances call (engine-imposed cap). */
38
+ maxInstances: number;
39
+ /** Friendly name, e.g. "webgl2" or "webgpu". */
40
+ name: string;
41
+ };
42
+ /** Vertex/instance buffer wrapper. Backends own the GPU handle. */
43
+ export type BufferHandle = {
44
+ readonly __brand: 'BufferHandle';
45
+ };
46
+ /** Pipeline / shader program wrapper. */
47
+ export type PipelineHandle = {
48
+ readonly __brand: 'PipelineHandle';
49
+ };
50
+ /** Compute shader handle (WebGPU only). */
51
+ export type ComputePipelineHandle = {
52
+ readonly __brand: 'ComputePipelineHandle';
53
+ };
54
+ export type BufferUsage = 'vertex' | 'instance' | 'index' | 'uniform' | 'storage';
55
+ export type DrawInstancesParams = {
56
+ pipeline: PipelineHandle;
57
+ /** Unit-geometry buffer (e.g. a single rectangle) shared across instances. */
58
+ vertices: BufferHandle;
59
+ /** Per-instance attribute buffer (e.g. one row per K-line). */
60
+ instances: BufferHandle;
61
+ /** Number of instances to draw. */
62
+ instanceCount: number;
63
+ /** Vertices per instance (e.g. 4 for a quad, 6 if using triangles). */
64
+ vertexCount: number;
65
+ /** Uniform block — opaque object the backend reads. */
66
+ uniforms?: Record<string, unknown>;
67
+ };
68
+ export type DrawLinesParams = {
69
+ pipeline: PipelineHandle;
70
+ vertices: BufferHandle;
71
+ vertexCount: number;
72
+ /** Line strip vs disconnected segments. */
73
+ topology?: 'strip' | 'list';
74
+ uniforms?: Record<string, unknown>;
75
+ };
76
+ export type DispatchComputeParams = {
77
+ pipeline: ComputePipelineHandle;
78
+ /** Workgroup counts per axis. */
79
+ workgroups: [number, number?, number?];
80
+ /** Input/output buffer bindings, keyed by binding index. */
81
+ bindings: Record<number, BufferHandle>;
82
+ uniforms?: Record<string, unknown>;
83
+ };
84
+ /**
85
+ * The drawing-primitives interface every backend implements.
86
+ *
87
+ * Backends own the GPU resources; callers receive opaque handles
88
+ * (`BufferHandle`, `PipelineHandle`) and pass them back for draws.
89
+ */
90
+ export interface Renderer {
91
+ /** Underlying surface (for region binding and final composite). */
92
+ readonly surface: SurfaceBackend;
93
+ /** Reported feature flags — caller branches on `caps.compute` etc. */
94
+ readonly caps: RendererCapabilities;
95
+ createBuffer(usage: BufferUsage, sizeBytes: number): BufferHandle;
96
+ writeBuffer(handle: BufferHandle, data: ArrayBufferView, offsetBytes?: number): void;
97
+ destroyBuffer(handle: BufferHandle): void;
98
+ /**
99
+ * Compile a shader pipeline. The exact pipeline descriptor is backend-specific;
100
+ * adapters typically expose factory helpers (e.g. `createCandlePipeline`) that
101
+ * internally call this with the right vertex/fragment sources.
102
+ */
103
+ createPipeline(descriptor: unknown): PipelineHandle;
104
+ destroyPipeline(handle: PipelineHandle): void;
105
+ /** WebGPU only — WebGL implementations MUST throw with a clear message. */
106
+ createComputePipeline(descriptor: unknown): ComputePipelineHandle;
107
+ destroyComputePipeline(handle: ComputePipelineHandle): void;
108
+ beginFrame(region: SurfaceRegion): void;
109
+ drawInstances(params: DrawInstancesParams): void;
110
+ drawLines(params: DrawLinesParams): void;
111
+ /** WebGPU only — WebGL implementations MUST throw. Caller checks caps first. */
112
+ dispatchCompute(params: DispatchComputeParams): void;
113
+ endFrame(): void;
114
+ dispose(): void;
115
+ }
116
+ //# sourceMappingURL=Renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../src/render/Renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * High-level renderer interface — the drawing primitives the chart's
3
+ * scene layers (candles, volume, indicators, drawings) call into.
4
+ *
5
+ * Both the existing WebGL renderer (currently spread across
6
+ * `src/core/renderers/{candle,subVolume,crosshair,...}.ts`) and the
7
+ * P1 WebGPU renderer implement this contract. v0's WebGL path will
8
+ * be refactored to fit behind it in a follow-up PR (this file ships
9
+ * the contract first; the legacy code is unchanged until the next
10
+ * step is approved).
11
+ *
12
+ * Design notes:
13
+ * - `drawInstances` is the workhorse: render N copies of a unit geometry
14
+ * parameterized by an instance buffer. K-lines, volume bars, footprint
15
+ * cells, heatmap tiles all reduce to instanced primitives — see
16
+ * `docs/ROADMAP.md` §2.3 for the K-line example.
17
+ * - `drawLines` covers MA-style continuous polylines, drawings, axes.
18
+ * - `dispatchCompute` exists only because WebGPU has compute shaders;
19
+ * the WebGL implementation throws on call so callers can feature-detect
20
+ * via `caps.compute`. Volume Profile binning, M4 downsampling, footprint
21
+ * aggregation will use it on the WebGPU path.
22
+ * - `setUniforms` is intentionally schemaless on the interface — the
23
+ * uniform layout is owned by each shader/program. Callers pass a
24
+ * structured object that the backend translates into uniform writes.
25
+ *
26
+ * This file is **pure interface** in this PR; behaviour comes in the
27
+ * next two PRs (Scale interfaces, then a Renderer impl that wraps
28
+ * the existing WebGL primitives).
29
+ */
30
+ export {};
31
+ //# sourceMappingURL=Renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Renderer.js","sourceRoot":"","sources":["../../src/render/Renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Low-level GPU surface backend.
3
+ *
4
+ * Abstracts canvas + context lifecycle, viewport / scissor regions, clear,
5
+ * compositing into a 2D canvas overlay, and teardown. Both the existing
6
+ * WebGL surface (`src/core/renderers/webgl/sharedWebGLSurface.ts`) and the
7
+ * P1 WebGPU surface implement this contract.
8
+ *
9
+ * This file is **pure interface** — no implementation. It exists so that:
10
+ *
11
+ * 1. Existing WebGL code can declare conformance via a one-line adapter
12
+ * (see `createLegacyWebGLBackend` below) without changing any behaviour.
13
+ * 2. P1's WebGPU implementation has a fixed target to write against.
14
+ * 3. The higher-level `Renderer` (`./Renderer.ts`) can compose a backend
15
+ * without knowing which GPU API it sits on.
16
+ *
17
+ * Design notes:
18
+ * - All region coordinates are in **logical pixels** with the surface
19
+ * responsible for DPR scaling internally. This matches the existing
20
+ * `WebGLRegion` semantics so the legacy adapter is a transparent pass-through.
21
+ * - `compositeTo` takes a 2D `CanvasRenderingContext2D` because the chart's
22
+ * final composition target is a 2D overlay canvas — WebGL/WebGPU pixels
23
+ * are drawn into the overlay via `drawImage`. Future paths that bypass
24
+ * the 2D overlay (direct-to-screen WebGPU) can leave `compositeTo` as a no-op.
25
+ */
26
+ export type SurfaceRegion = {
27
+ /** logical-pixel X of the region's top-left within the surface */
28
+ x: number;
29
+ /** logical-pixel Y of the region's top-left within the surface */
30
+ y: number;
31
+ /** logical-pixel width */
32
+ width: number;
33
+ /** logical-pixel height */
34
+ height: number;
35
+ /** device pixel ratio used to convert logical → physical */
36
+ dpr: number;
37
+ };
38
+ export type CompositeOptions = {
39
+ /** multiplied into the destination context's globalAlpha (0..1) */
40
+ alpha?: number;
41
+ /** if false, blocks `imageSmoothingEnabled` during the drawImage */
42
+ imageSmoothingEnabled?: boolean;
43
+ };
44
+ /**
45
+ * One GPU surface (WebGL2 today, WebGPU in P1). Stateless w.r.t. drawing
46
+ * primitives — those belong to `Renderer`.
47
+ */
48
+ export interface SurfaceBackend {
49
+ /** Returns false if the underlying context could not be initialised. */
50
+ isAvailable(): boolean;
51
+ /**
52
+ * Resize the underlying canvas's physical (DPR-scaled) drawing buffer.
53
+ * Idempotent when called with the same arguments.
54
+ */
55
+ resize(widthLogical: number, heightLogical: number, dpr: number): void;
56
+ /**
57
+ * Bind a region for subsequent draw commands.
58
+ * Activates scissor + viewport sized to `region`. Returns false if the
59
+ * region is empty or the backend is unavailable.
60
+ */
61
+ bindRegion(region: SurfaceRegion): boolean;
62
+ /**
63
+ * Clear the most recently bound region to transparent black.
64
+ * Must be called after `bindRegion`. Backends MAY no-op if no region
65
+ * is currently bound.
66
+ */
67
+ clearRegion(region: SurfaceRegion): void;
68
+ /**
69
+ * Copy the contents of `region` (in surface coordinates) onto the
70
+ * provided 2D context at its current origin. Used to composite GPU
71
+ * output into the final 2D overlay canvas the user sees.
72
+ *
73
+ * Implementations MUST restore any context state they mutate
74
+ * (`globalAlpha`, `imageSmoothingEnabled`, transform).
75
+ */
76
+ compositeTo(targetCtx: CanvasRenderingContext2D, region: SurfaceRegion, options?: CompositeOptions): void;
77
+ /**
78
+ * Tear down GPU resources. After dispose, all other methods become no-ops.
79
+ * Idempotent.
80
+ */
81
+ dispose(): void;
82
+ }
83
+ //# sourceMappingURL=SurfaceBackend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SurfaceBackend.d.ts","sourceRoot":"","sources":["../../src/render/SurfaceBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,MAAM,aAAa,GAAG;IACxB,kEAAkE;IAClE,CAAC,EAAE,MAAM,CAAA;IACT,kEAAkE;IAClE,CAAC,EAAE,MAAM,CAAA;IACT,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAClC,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,wEAAwE;IACxE,WAAW,IAAI,OAAO,CAAA;IAEtB;;;OAGG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAEtE;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAA;IAE1C;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAExC;;;;;;;OAOG;IACH,WAAW,CACP,SAAS,EAAE,wBAAwB,EACnC,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,gBAAgB,GAC3B,IAAI,CAAA;IAEP;;;OAGG;IACH,OAAO,IAAI,IAAI,CAAA;CAClB"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Low-level GPU surface backend.
3
+ *
4
+ * Abstracts canvas + context lifecycle, viewport / scissor regions, clear,
5
+ * compositing into a 2D canvas overlay, and teardown. Both the existing
6
+ * WebGL surface (`src/core/renderers/webgl/sharedWebGLSurface.ts`) and the
7
+ * P1 WebGPU surface implement this contract.
8
+ *
9
+ * This file is **pure interface** — no implementation. It exists so that:
10
+ *
11
+ * 1. Existing WebGL code can declare conformance via a one-line adapter
12
+ * (see `createLegacyWebGLBackend` below) without changing any behaviour.
13
+ * 2. P1's WebGPU implementation has a fixed target to write against.
14
+ * 3. The higher-level `Renderer` (`./Renderer.ts`) can compose a backend
15
+ * without knowing which GPU API it sits on.
16
+ *
17
+ * Design notes:
18
+ * - All region coordinates are in **logical pixels** with the surface
19
+ * responsible for DPR scaling internally. This matches the existing
20
+ * `WebGLRegion` semantics so the legacy adapter is a transparent pass-through.
21
+ * - `compositeTo` takes a 2D `CanvasRenderingContext2D` because the chart's
22
+ * final composition target is a 2D overlay canvas — WebGL/WebGPU pixels
23
+ * are drawn into the overlay via `drawImage`. Future paths that bypass
24
+ * the 2D overlay (direct-to-screen WebGPU) can leave `compositeTo` as a no-op.
25
+ */
26
+ export {};
27
+ //# sourceMappingURL=SurfaceBackend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SurfaceBackend.js","sourceRoot":"","sources":["../../src/render/SurfaceBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Renderer abstraction barrel.
3
+ *
4
+ * The two interfaces (`SurfaceBackend`, `Renderer`) define the contract every
5
+ * GPU backend implements. v0's WebGL code (in `src/core/renderers/`) will be
6
+ * refactored to fit behind these in a follow-up PR; this PR ships the contract
7
+ * only, so subsequent PRs can land WebGPU and WebGL impls in parallel without
8
+ * either blocking on the other's interface decisions.
9
+ */
10
+ export type { SurfaceBackend, SurfaceRegion, CompositeOptions, } from './SurfaceBackend';
11
+ export type { Renderer, RendererCapabilities, BufferHandle, PipelineHandle, ComputePipelineHandle, BufferUsage, DrawInstancesParams, DrawLinesParams, DispatchComputeParams, } from './Renderer';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EACR,cAAc,EACd,aAAa,EACb,gBAAgB,GACnB,MAAM,kBAAkB,CAAA;AAEzB,YAAY,EACR,QAAQ,EACR,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACxB,MAAM,YAAY,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Renderer abstraction barrel.
3
+ *
4
+ * The two interfaces (`SurfaceBackend`, `Renderer`) define the contract every
5
+ * GPU backend implements. v0's WebGL code (in `src/core/renderers/`) will be
6
+ * refactored to fit behind these in a follow-up PR; this PR ships the contract
7
+ * only, so subsequent PRs can land WebGPU and WebGL impls in parallel without
8
+ * either blocking on the other's interface decisions.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Synchronous renderer tier detection.
3
+ *
4
+ * Probes (in descending capability order):
5
+ *
6
+ * 1. **webgpu** `'gpu' in navigator`. We deliberately do NOT call
7
+ * `navigator.gpu.requestAdapter()` here — that's async
8
+ * and the answer can change between probe and use
9
+ * (e.g. user toggles the WebGPU flag). The renderer
10
+ * should retry adapter acquisition at startup; this
11
+ * sync check is a pre-mount fast path.
12
+ *
13
+ * 2. **webgl2** `canvas.getContext('webgl2') !== null`. Probes a
14
+ * throwaway `<canvas>`; if the browser hard-disabled
15
+ * WebGL (some hardened policies do), this returns
16
+ * null and we fall through.
17
+ *
18
+ * 3. **canvas2d** `canvas.getContext('2d') !== null`. Universal
19
+ * fallback for browsers from the 2010s onwards.
20
+ *
21
+ * 4. **none** None of the above worked — likely SSR (no document)
22
+ * or a sandboxed environment. The caller can decide
23
+ * whether that's an error or a "render nothing" state.
24
+ *
25
+ * All exceptions from a probe are caught and folded into the `reason`
26
+ * field — a probe that throws is treated identically to one that
27
+ * returns false (no tier-skip cascade).
28
+ */
29
+ import { type DetectRendererTierOptions, type RendererTier, type RendererTierResult } from './types';
30
+ /**
31
+ * Detect the best renderer tier available in the current environment.
32
+ *
33
+ * Returns synchronously. Use this at the call site of `createChart` to
34
+ * pick the renderer backend; persist the result if you re-mount, since
35
+ * recomputing is cheap but not free (probing creates a throwaway canvas).
36
+ */
37
+ export declare function detectRendererTier(opts?: DetectRendererTierOptions): RendererTierResult;
38
+ /**
39
+ * Strict variant: throws `KLineChartError('INVALID_STATE')` when no
40
+ * renderable tier is found. Use when you want a hard failure rather
41
+ * than a silent `'none'`.
42
+ */
43
+ export declare function detectRendererTierOrThrow(opts?: DetectRendererTierOptions): RendererTierResult;
44
+ /**
45
+ * Three-way compare on the tier rank. `a > b → 1`, `a < b → -1`, equal → 0.
46
+ *
47
+ * compareRendererTier('webgpu', 'webgl2') === 1
48
+ * compareRendererTier('canvas2d', 'webgl2') === -1
49
+ * compareRendererTier('webgl2', 'webgl2') === 0
50
+ */
51
+ export declare function compareRendererTier(a: RendererTier, b: RendererTier): -1 | 0 | 1;
52
+ /**
53
+ * `tier >= minimum` guard for renderer features that require a floor
54
+ * (e.g. GPU compute volume profile needs `>= 'webgl2'`).
55
+ */
56
+ export declare function isTierAtLeast(tier: RendererTier, minimum: RendererTier): boolean;
57
+ //# sourceMappingURL=detectRendererTier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectRendererTier.d.ts","sourceRoot":"","sources":["../../src/renderer-tier/detectRendererTier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAEH,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EACjB,KAAK,kBAAkB,EAC1B,MAAM,SAAS,CAAA;AAmDhB;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,IAAI,CAAC,EAAE,yBAAyB,GACjC,kBAAkB,CA+BpB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACrC,IAAI,CAAC,EAAE,yBAAyB,GACjC,kBAAkB,CASpB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAMhF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAEhF"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Synchronous renderer tier detection.
3
+ *
4
+ * Probes (in descending capability order):
5
+ *
6
+ * 1. **webgpu** `'gpu' in navigator`. We deliberately do NOT call
7
+ * `navigator.gpu.requestAdapter()` here — that's async
8
+ * and the answer can change between probe and use
9
+ * (e.g. user toggles the WebGPU flag). The renderer
10
+ * should retry adapter acquisition at startup; this
11
+ * sync check is a pre-mount fast path.
12
+ *
13
+ * 2. **webgl2** `canvas.getContext('webgl2') !== null`. Probes a
14
+ * throwaway `<canvas>`; if the browser hard-disabled
15
+ * WebGL (some hardened policies do), this returns
16
+ * null and we fall through.
17
+ *
18
+ * 3. **canvas2d** `canvas.getContext('2d') !== null`. Universal
19
+ * fallback for browsers from the 2010s onwards.
20
+ *
21
+ * 4. **none** None of the above worked — likely SSR (no document)
22
+ * or a sandboxed environment. The caller can decide
23
+ * whether that's an error or a "render nothing" state.
24
+ *
25
+ * All exceptions from a probe are caught and folded into the `reason`
26
+ * field — a probe that throws is treated identically to one that
27
+ * returns false (no tier-skip cascade).
28
+ */
29
+ import { KLineChartError } from '../errors';
30
+ import { RENDERER_TIER_RANK, } from './types';
31
+ // ---------------------------------------------------------------------------
32
+ // Production probes — only run when no override is supplied
33
+ // ---------------------------------------------------------------------------
34
+ function probeWebGpu() {
35
+ const nav = globalThis.navigator;
36
+ if (typeof nav !== 'object' || nav === null)
37
+ return false;
38
+ return 'gpu' in nav;
39
+ }
40
+ function probeWebGl2() {
41
+ const doc = globalThis.document;
42
+ if (typeof doc?.createElement !== 'function')
43
+ return false;
44
+ const canvas = doc.createElement('canvas');
45
+ if (typeof canvas.getContext !== 'function')
46
+ return false;
47
+ return canvas.getContext('webgl2') !== null;
48
+ }
49
+ function probeCanvas2d() {
50
+ const doc = globalThis.document;
51
+ if (typeof doc?.createElement !== 'function')
52
+ return false;
53
+ const canvas = doc.createElement('canvas');
54
+ if (typeof canvas.getContext !== 'function')
55
+ return false;
56
+ return canvas.getContext('2d') !== null;
57
+ }
58
+ // ---------------------------------------------------------------------------
59
+ // runProbe — adapter that turns probe → "ok, false, or error string"
60
+ // ---------------------------------------------------------------------------
61
+ function runProbe(probe) {
62
+ try {
63
+ return { ok: probe() === true, error: null };
64
+ }
65
+ catch (e) {
66
+ const msg = e instanceof Error ? e.message : String(e);
67
+ return { ok: false, error: msg };
68
+ }
69
+ }
70
+ // ---------------------------------------------------------------------------
71
+ // Public API
72
+ // ---------------------------------------------------------------------------
73
+ const TIER_ORDER = ['webgpu', 'webgl2', 'canvas2d'];
74
+ /**
75
+ * Detect the best renderer tier available in the current environment.
76
+ *
77
+ * Returns synchronously. Use this at the call site of `createChart` to
78
+ * pick the renderer backend; persist the result if you re-mount, since
79
+ * recomputing is cheap but not free (probing creates a throwaway canvas).
80
+ */
81
+ export function detectRendererTier(opts) {
82
+ const probes = opts?.probes ?? {};
83
+ const reasonParts = [];
84
+ const tried = [];
85
+ for (const tier of TIER_ORDER) {
86
+ tried.push(tier);
87
+ const probe = tier === 'webgpu'
88
+ ? (probes.webgpu ?? probeWebGpu)
89
+ : tier === 'webgl2'
90
+ ? (probes.webgl2 ?? probeWebGl2)
91
+ : (probes.canvas2d ?? probeCanvas2d);
92
+ const r = runProbe(probe);
93
+ if (r.ok) {
94
+ return {
95
+ tier,
96
+ reason: `selected ${tier} (${reasonParts.length === 0 ? 'first probe succeeded' : reasonParts.join('; ')})`,
97
+ tried: [...tried],
98
+ };
99
+ }
100
+ reasonParts.push(r.error === null ? `${tier}: not available` : `${tier}: threw "${r.error}"`);
101
+ }
102
+ return {
103
+ tier: 'none',
104
+ reason: `no tier available — ${reasonParts.join('; ')}`,
105
+ tried: [...tried],
106
+ };
107
+ }
108
+ /**
109
+ * Strict variant: throws `KLineChartError('INVALID_STATE')` when no
110
+ * renderable tier is found. Use when you want a hard failure rather
111
+ * than a silent `'none'`.
112
+ */
113
+ export function detectRendererTierOrThrow(opts) {
114
+ const r = detectRendererTier(opts);
115
+ if (r.tier === 'none') {
116
+ throw new KLineChartError('INVALID_STATE', `detectRendererTierOrThrow: ${r.reason}`);
117
+ }
118
+ return r;
119
+ }
120
+ /**
121
+ * Three-way compare on the tier rank. `a > b → 1`, `a < b → -1`, equal → 0.
122
+ *
123
+ * compareRendererTier('webgpu', 'webgl2') === 1
124
+ * compareRendererTier('canvas2d', 'webgl2') === -1
125
+ * compareRendererTier('webgl2', 'webgl2') === 0
126
+ */
127
+ export function compareRendererTier(a, b) {
128
+ const ra = RENDERER_TIER_RANK[a];
129
+ const rb = RENDERER_TIER_RANK[b];
130
+ if (ra > rb)
131
+ return 1;
132
+ if (ra < rb)
133
+ return -1;
134
+ return 0;
135
+ }
136
+ /**
137
+ * `tier >= minimum` guard for renderer features that require a floor
138
+ * (e.g. GPU compute volume profile needs `>= 'webgl2'`).
139
+ */
140
+ export function isTierAtLeast(tier, minimum) {
141
+ return compareRendererTier(tier, minimum) >= 0;
142
+ }
143
+ //# sourceMappingURL=detectRendererTier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectRendererTier.js","sourceRoot":"","sources":["../../src/renderer-tier/detectRendererTier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @klinechart-quant/core/renderer-tier — pre-mount renderer tier detection.
3
+ *
4
+ * Used by the `Renderer` factory to pick the highest backend the host
5
+ * environment supports (WebGPU → WebGL2 → Canvas2D → none).
6
+ *
7
+ * See `./detectRendererTier.ts` for design notes.
8
+ */
9
+ export { detectRendererTier, detectRendererTierOrThrow, compareRendererTier, isTierAtLeast, } from './detectRendererTier';
10
+ export { selectBackend, selectBackendOrThrow, type BackendFactory, type BackendRegistry, type BackendSelection, type SelectBackendOptions, } from './selectBackend';
11
+ export { RENDERER_TIER_RANK, type RendererTier, type RendererTierResult, type RendererTierProbes, type DetectRendererTierOptions, } from './types';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer-tier/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACH,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,GAChB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACH,aAAa,EACb,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC5B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACH,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,GACjC,MAAM,SAAS,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @klinechart-quant/core/renderer-tier — pre-mount renderer tier detection.
3
+ *
4
+ * Used by the `Renderer` factory to pick the highest backend the host
5
+ * environment supports (WebGPU → WebGL2 → Canvas2D → none).
6
+ *
7
+ * See `./detectRendererTier.ts` for design notes.
8
+ */
9
+ export { detectRendererTier, detectRendererTierOrThrow, compareRendererTier, isTierAtLeast, } from './detectRendererTier';
10
+ export { selectBackend, selectBackendOrThrow, } from './selectBackend';
11
+ export { RENDERER_TIER_RANK, } from './types';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer-tier/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACH,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,GAChB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACH,aAAa,EACb,oBAAoB,GAKvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACH,kBAAkB,GAKrB,MAAM,SAAS,CAAA"}