@forgecharts/sdk 1.1.23 → 1.1.28

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 (562) hide show
  1. package/dist/__tests__/backwardCompatibility.test.d.ts +14 -0
  2. package/dist/__tests__/backwardCompatibility.test.d.ts.map +1 -0
  3. package/dist/__tests__/backwardCompatibility.test.js +159 -0
  4. package/dist/__tests__/backwardCompatibility.test.js.map +1 -0
  5. package/dist/__tests__/candleInvariant.test.d.ts +20 -0
  6. package/dist/__tests__/candleInvariant.test.d.ts.map +1 -0
  7. package/dist/__tests__/candleInvariant.test.js +415 -0
  8. package/dist/__tests__/candleInvariant.test.js.map +1 -0
  9. package/dist/__tests__/public-api-surface.d.ts +13 -0
  10. package/dist/__tests__/public-api-surface.d.ts.map +1 -0
  11. package/{src/__tests__/public-api-surface.ts → dist/__tests__/public-api-surface.js} +4 -42
  12. package/dist/__tests__/public-api-surface.js.map +1 -0
  13. package/dist/__tests__/timeframeBoundary.test.d.ts +17 -0
  14. package/dist/__tests__/timeframeBoundary.test.d.ts.map +1 -0
  15. package/dist/__tests__/timeframeBoundary.test.js +452 -0
  16. package/dist/__tests__/timeframeBoundary.test.js.map +1 -0
  17. package/dist/api/DrawingManager.d.ts +20 -0
  18. package/dist/api/DrawingManager.d.ts.map +1 -0
  19. package/dist/api/DrawingManager.js +190 -0
  20. package/dist/api/DrawingManager.js.map +1 -0
  21. package/dist/api/EventBus.d.ts +19 -0
  22. package/dist/api/EventBus.d.ts.map +1 -0
  23. package/dist/api/EventBus.js +44 -0
  24. package/dist/api/EventBus.js.map +1 -0
  25. package/dist/api/IndicatorDAG.d.ts +85 -0
  26. package/dist/api/IndicatorDAG.d.ts.map +1 -0
  27. package/dist/api/IndicatorDAG.js +316 -0
  28. package/dist/api/IndicatorDAG.js.map +1 -0
  29. package/dist/api/IndicatorRegistry.d.ts +22 -0
  30. package/dist/api/IndicatorRegistry.d.ts.map +1 -0
  31. package/dist/api/IndicatorRegistry.js +39 -0
  32. package/dist/api/IndicatorRegistry.js.map +1 -0
  33. package/dist/api/LayoutManager.d.ts +30 -0
  34. package/dist/api/LayoutManager.d.ts.map +1 -0
  35. package/dist/api/LayoutManager.js +51 -0
  36. package/dist/api/LayoutManager.js.map +1 -0
  37. package/dist/api/PaneManager.d.ts +42 -0
  38. package/dist/api/PaneManager.d.ts.map +1 -0
  39. package/dist/api/PaneManager.js +119 -0
  40. package/dist/api/PaneManager.js.map +1 -0
  41. package/dist/api/ReferenceAPI.d.ts +78 -0
  42. package/dist/api/ReferenceAPI.d.ts.map +1 -0
  43. package/dist/api/ReferenceAPI.js +153 -0
  44. package/dist/api/ReferenceAPI.js.map +1 -0
  45. package/dist/api/TChart.d.ts +345 -0
  46. package/dist/api/TChart.d.ts.map +1 -0
  47. package/dist/api/TChart.js +765 -0
  48. package/dist/api/TChart.js.map +1 -0
  49. package/{src/api/createChart.ts → dist/api/createChart.d.ts} +2 -7
  50. package/dist/api/createChart.d.ts.map +1 -0
  51. package/dist/api/createChart.js +42 -0
  52. package/dist/api/createChart.js.map +1 -0
  53. package/dist/api/drawing tools/fib gann menu/fibRetracement.d.ts +4 -0
  54. package/dist/api/drawing tools/fib gann menu/fibRetracement.d.ts.map +1 -0
  55. package/dist/api/drawing tools/fib gann menu/fibRetracement.js +22 -0
  56. package/dist/api/drawing tools/fib gann menu/fibRetracement.js.map +1 -0
  57. package/dist/api/drawing tools/lines menu/crossLine.d.ts +4 -0
  58. package/dist/api/drawing tools/lines menu/crossLine.d.ts.map +1 -0
  59. package/dist/api/drawing tools/lines menu/crossLine.js +16 -0
  60. package/dist/api/drawing tools/lines menu/crossLine.js.map +1 -0
  61. package/dist/api/drawing tools/lines menu/disjointChannel.d.ts +17 -0
  62. package/dist/api/drawing tools/lines menu/disjointChannel.d.ts.map +1 -0
  63. package/dist/api/drawing tools/lines menu/disjointChannel.js +59 -0
  64. package/dist/api/drawing tools/lines menu/disjointChannel.js.map +1 -0
  65. package/dist/api/drawing tools/lines menu/extendedLine.d.ts +4 -0
  66. package/dist/api/drawing tools/lines menu/extendedLine.d.ts.map +1 -0
  67. package/dist/api/drawing tools/lines menu/extendedLine.js +17 -0
  68. package/dist/api/drawing tools/lines menu/extendedLine.js.map +1 -0
  69. package/dist/api/drawing tools/lines menu/flatTopBottom.d.ts +4 -0
  70. package/dist/api/drawing tools/lines menu/flatTopBottom.d.ts.map +1 -0
  71. package/dist/api/drawing tools/lines menu/flatTopBottom.js +41 -0
  72. package/dist/api/drawing tools/lines menu/flatTopBottom.js.map +1 -0
  73. package/dist/api/drawing tools/lines menu/horizontal.d.ts +4 -0
  74. package/dist/api/drawing tools/lines menu/horizontal.d.ts.map +1 -0
  75. package/dist/api/drawing tools/lines menu/horizontal.js +19 -0
  76. package/dist/api/drawing tools/lines menu/horizontal.js.map +1 -0
  77. package/dist/api/drawing tools/lines menu/horizontalRay.d.ts +4 -0
  78. package/dist/api/drawing tools/lines menu/horizontalRay.d.ts.map +1 -0
  79. package/dist/api/drawing tools/lines menu/horizontalRay.js +20 -0
  80. package/dist/api/drawing tools/lines menu/horizontalRay.js.map +1 -0
  81. package/dist/api/drawing tools/lines menu/infoLine.d.ts +4 -0
  82. package/dist/api/drawing tools/lines menu/infoLine.d.ts.map +1 -0
  83. package/dist/api/drawing tools/lines menu/infoLine.js +107 -0
  84. package/dist/api/drawing tools/lines menu/infoLine.js.map +1 -0
  85. package/dist/api/drawing tools/lines menu/insidePitchfork.d.ts +4 -0
  86. package/dist/api/drawing tools/lines menu/insidePitchfork.d.ts.map +1 -0
  87. package/dist/api/drawing tools/lines menu/insidePitchfork.js +31 -0
  88. package/dist/api/drawing tools/lines menu/insidePitchfork.js.map +1 -0
  89. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.d.ts +4 -0
  90. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.d.ts.map +1 -0
  91. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.js +15 -0
  92. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.js.map +1 -0
  93. package/dist/api/drawing tools/lines menu/parallelChannel.d.ts +4 -0
  94. package/dist/api/drawing tools/lines menu/parallelChannel.d.ts.map +1 -0
  95. package/dist/api/drawing tools/lines menu/parallelChannel.js +43 -0
  96. package/dist/api/drawing tools/lines menu/parallelChannel.js.map +1 -0
  97. package/dist/api/drawing tools/lines menu/pitchfork.d.ts +4 -0
  98. package/dist/api/drawing tools/lines menu/pitchfork.d.ts.map +1 -0
  99. package/dist/api/drawing tools/lines menu/pitchfork.js +12 -0
  100. package/dist/api/drawing tools/lines menu/pitchfork.js.map +1 -0
  101. package/dist/api/drawing tools/lines menu/ray.d.ts +4 -0
  102. package/dist/api/drawing tools/lines menu/ray.d.ts.map +1 -0
  103. package/dist/api/drawing tools/lines menu/ray.js +23 -0
  104. package/dist/api/drawing tools/lines menu/ray.js.map +1 -0
  105. package/dist/api/drawing tools/lines menu/regressionTrend.d.ts +4 -0
  106. package/dist/api/drawing tools/lines menu/regressionTrend.d.ts.map +1 -0
  107. package/dist/api/drawing tools/lines menu/regressionTrend.js +127 -0
  108. package/dist/api/drawing tools/lines menu/regressionTrend.js.map +1 -0
  109. package/dist/api/drawing tools/lines menu/schiffPitchfork.d.ts +4 -0
  110. package/dist/api/drawing tools/lines menu/schiffPitchfork.d.ts.map +1 -0
  111. package/dist/api/drawing tools/lines menu/schiffPitchfork.js +15 -0
  112. package/dist/api/drawing tools/lines menu/schiffPitchfork.js.map +1 -0
  113. package/dist/api/drawing tools/lines menu/trendAngle.d.ts +4 -0
  114. package/dist/api/drawing tools/lines menu/trendAngle.d.ts.map +1 -0
  115. package/dist/api/drawing tools/lines menu/trendAngle.js +51 -0
  116. package/dist/api/drawing tools/lines menu/trendAngle.js.map +1 -0
  117. package/dist/api/drawing tools/lines menu/trendline.d.ts +4 -0
  118. package/dist/api/drawing tools/lines menu/trendline.d.ts.map +1 -0
  119. package/dist/api/drawing tools/lines menu/trendline.js +11 -0
  120. package/dist/api/drawing tools/lines menu/trendline.js.map +1 -0
  121. package/dist/api/drawing tools/lines menu/vertical.d.ts +4 -0
  122. package/dist/api/drawing tools/lines menu/vertical.d.ts.map +1 -0
  123. package/dist/api/drawing tools/lines menu/vertical.js +11 -0
  124. package/dist/api/drawing tools/lines menu/vertical.js.map +1 -0
  125. package/dist/api/drawing tools/pointers menu/crosshair.d.ts +16 -0
  126. package/dist/api/drawing tools/pointers menu/crosshair.d.ts.map +1 -0
  127. package/{src/api/drawing tools/pointers menu/crosshair.ts → dist/api/drawing tools/pointers menu/crosshair.js } +6 -7
  128. package/dist/api/drawing tools/pointers menu/crosshair.js.map +1 -0
  129. package/dist/api/drawing tools/pointers menu/cursor.d.ts +15 -0
  130. package/dist/api/drawing tools/pointers menu/cursor.d.ts.map +1 -0
  131. package/{src/api/drawing tools/pointers menu/cursor.ts → dist/api/drawing tools/pointers menu/cursor.js } +7 -8
  132. package/dist/api/drawing tools/pointers menu/cursor.js.map +1 -0
  133. package/dist/api/drawing tools/pointers menu/demonstration.d.ts +30 -0
  134. package/dist/api/drawing tools/pointers menu/demonstration.d.ts.map +1 -0
  135. package/{src/api/drawing tools/pointers menu/demonstration.ts → dist/api/drawing tools/pointers menu/demonstration.js } +9 -14
  136. package/dist/api/drawing tools/pointers menu/demonstration.js.map +1 -0
  137. package/dist/api/drawing tools/pointers menu/dot.d.ts +23 -0
  138. package/dist/api/drawing tools/pointers menu/dot.d.ts.map +1 -0
  139. package/{src/api/drawing tools/pointers menu/dot.ts → dist/api/drawing tools/pointers menu/dot.js } +8 -11
  140. package/dist/api/drawing tools/pointers menu/dot.js.map +1 -0
  141. package/dist/api/drawing tools/shapes menu/rectangle.d.ts +4 -0
  142. package/dist/api/drawing tools/shapes menu/rectangle.d.ts.map +1 -0
  143. package/dist/api/drawing tools/shapes menu/rectangle.js +19 -0
  144. package/dist/api/drawing tools/shapes menu/rectangle.js.map +1 -0
  145. package/dist/api/drawing tools/shapes menu/text.d.ts +4 -0
  146. package/dist/api/drawing tools/shapes menu/text.d.ts.map +1 -0
  147. package/dist/api/drawing tools/shapes menu/text.js +25 -0
  148. package/dist/api/drawing tools/shapes menu/text.js.map +1 -0
  149. package/dist/api/drawingUtils.d.ts +22 -0
  150. package/dist/api/drawingUtils.d.ts.map +1 -0
  151. package/dist/api/drawingUtils.js +83 -0
  152. package/dist/api/drawingUtils.js.map +1 -0
  153. package/dist/core/CanvasLayer.d.ts +26 -0
  154. package/dist/core/CanvasLayer.d.ts.map +1 -0
  155. package/dist/core/CanvasLayer.js +56 -0
  156. package/dist/core/CanvasLayer.js.map +1 -0
  157. package/dist/core/Chart.d.ts +164 -0
  158. package/dist/core/Chart.d.ts.map +1 -0
  159. package/dist/core/Chart.js +839 -0
  160. package/dist/core/Chart.js.map +1 -0
  161. package/dist/core/CoordTransform.d.ts +168 -0
  162. package/dist/core/CoordTransform.d.ts.map +1 -0
  163. package/dist/core/CoordTransform.js +224 -0
  164. package/dist/core/CoordTransform.js.map +1 -0
  165. package/dist/core/Crosshair.d.ts +30 -0
  166. package/dist/core/Crosshair.d.ts.map +1 -0
  167. package/dist/core/Crosshair.js +186 -0
  168. package/dist/core/Crosshair.js.map +1 -0
  169. package/dist/core/IndicatorEngine.d.ts +51 -0
  170. package/dist/core/IndicatorEngine.d.ts.map +1 -0
  171. package/dist/core/IndicatorEngine.js +181 -0
  172. package/dist/core/IndicatorEngine.js.map +1 -0
  173. package/dist/core/InteractionManager.d.ts +197 -0
  174. package/dist/core/InteractionManager.d.ts.map +1 -0
  175. package/dist/core/InteractionManager.js +698 -0
  176. package/dist/core/InteractionManager.js.map +1 -0
  177. package/dist/core/PriceScale.d.ts +27 -0
  178. package/dist/core/PriceScale.d.ts.map +1 -0
  179. package/dist/core/PriceScale.js +113 -0
  180. package/dist/core/PriceScale.js.map +1 -0
  181. package/dist/core/Series.d.ts +40 -0
  182. package/dist/core/Series.d.ts.map +1 -0
  183. package/dist/core/Series.js +114 -0
  184. package/dist/core/Series.js.map +1 -0
  185. package/dist/core/TimeScale.d.ts +43 -0
  186. package/dist/core/TimeScale.d.ts.map +1 -0
  187. package/dist/core/TimeScale.js +150 -0
  188. package/dist/core/TimeScale.js.map +1 -0
  189. package/dist/datafeed/DatafeedConnector.d.ts +89 -0
  190. package/dist/datafeed/DatafeedConnector.d.ts.map +1 -0
  191. package/dist/datafeed/DatafeedConnector.js +268 -0
  192. package/dist/datafeed/DatafeedConnector.js.map +1 -0
  193. package/dist/engine/CandleEngine.d.ts +207 -0
  194. package/dist/engine/CandleEngine.d.ts.map +1 -0
  195. package/dist/engine/CandleEngine.js +318 -0
  196. package/dist/engine/CandleEngine.js.map +1 -0
  197. package/dist/engine/__tests__/CandleEngine.test.d.ts +2 -0
  198. package/dist/engine/__tests__/CandleEngine.test.d.ts.map +1 -0
  199. package/dist/engine/__tests__/CandleEngine.test.js +300 -0
  200. package/dist/engine/__tests__/CandleEngine.test.js.map +1 -0
  201. package/dist/engine/candleInvariants.d.ts +66 -0
  202. package/dist/engine/candleInvariants.d.ts.map +1 -0
  203. package/dist/engine/candleInvariants.js +134 -0
  204. package/dist/engine/candleInvariants.js.map +1 -0
  205. package/{src/engine/mergeUtils.ts → dist/engine/mergeUtils.d.ts} +15 -52
  206. package/dist/engine/mergeUtils.d.ts.map +1 -0
  207. package/dist/engine/mergeUtils.js +64 -0
  208. package/dist/engine/mergeUtils.js.map +1 -0
  209. package/dist/engine/timeframeUtils.d.ts +80 -0
  210. package/dist/engine/timeframeUtils.d.ts.map +1 -0
  211. package/{src/engine/timeframeUtils.ts → dist/engine/timeframeUtils.js} +30 -48
  212. package/dist/engine/timeframeUtils.js.map +1 -0
  213. package/dist/index.d.ts +40 -0
  214. package/dist/index.d.ts.map +1 -0
  215. package/dist/index.js +49 -0
  216. package/dist/index.js.map +1 -0
  217. package/dist/internal.d.ts +29 -0
  218. package/dist/internal.d.ts.map +1 -0
  219. package/{src/internal.ts → dist/internal.js} +2 -11
  220. package/dist/internal.js.map +1 -0
  221. package/dist/licensing/ChartRuntimeResolver.d.ts +233 -0
  222. package/dist/licensing/ChartRuntimeResolver.d.ts.map +1 -0
  223. package/dist/licensing/ChartRuntimeResolver.js +310 -0
  224. package/dist/licensing/ChartRuntimeResolver.js.map +1 -0
  225. package/dist/licensing/LicenseManager.d.ts +55 -0
  226. package/dist/licensing/LicenseManager.d.ts.map +1 -0
  227. package/dist/licensing/LicenseManager.js +114 -0
  228. package/dist/licensing/LicenseManager.js.map +1 -0
  229. package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts +13 -0
  230. package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts.map +1 -0
  231. package/dist/licensing/__tests__/ChartRuntimeResolver.test.js +177 -0
  232. package/dist/licensing/__tests__/ChartRuntimeResolver.test.js.map +1 -0
  233. package/dist/licensing/__tests__/LicenseManager.test.d.ts +12 -0
  234. package/dist/licensing/__tests__/LicenseManager.test.d.ts.map +1 -0
  235. package/dist/licensing/__tests__/LicenseManager.test.js +153 -0
  236. package/dist/licensing/__tests__/LicenseManager.test.js.map +1 -0
  237. package/dist/licensing/licenseTypes.d.ts +18 -0
  238. package/dist/licensing/licenseTypes.d.ts.map +1 -0
  239. package/dist/licensing/licenseTypes.js +2 -0
  240. package/dist/licensing/licenseTypes.js.map +1 -0
  241. package/dist/pine/PineCompiler.d.ts +35 -0
  242. package/dist/pine/PineCompiler.d.ts.map +1 -0
  243. package/dist/pine/PineCompiler.js +44 -0
  244. package/dist/pine/PineCompiler.js.map +1 -0
  245. package/dist/pine/diagnostics.d.ts +20 -0
  246. package/dist/pine/diagnostics.d.ts.map +1 -0
  247. package/dist/pine/diagnostics.js +11 -0
  248. package/dist/pine/diagnostics.js.map +1 -0
  249. package/{src/pine/index.ts → dist/pine/index.d.ts} +4 -3
  250. package/dist/pine/index.d.ts.map +1 -0
  251. package/dist/pine/index.js +5 -0
  252. package/dist/pine/index.js.map +1 -0
  253. package/dist/pine/pine-ast.d.ts +142 -0
  254. package/dist/pine/pine-ast.d.ts.map +1 -0
  255. package/dist/pine/pine-ast.js +19 -0
  256. package/dist/pine/pine-ast.js.map +1 -0
  257. package/dist/pine/pine-lexer.d.ts +41 -0
  258. package/dist/pine/pine-lexer.d.ts.map +1 -0
  259. package/dist/pine/pine-lexer.js +249 -0
  260. package/dist/pine/pine-lexer.js.map +1 -0
  261. package/dist/pine/pine-parser.d.ts +51 -0
  262. package/dist/pine/pine-parser.d.ts.map +1 -0
  263. package/dist/pine/pine-parser.js +416 -0
  264. package/dist/pine/pine-parser.js.map +1 -0
  265. package/dist/pine/pine-transpiler.d.ts +33 -0
  266. package/dist/pine/pine-transpiler.d.ts.map +1 -0
  267. package/dist/pine/pine-transpiler.js +260 -0
  268. package/dist/pine/pine-transpiler.js.map +1 -0
  269. package/dist/pixi/LayerName.d.ts +18 -0
  270. package/dist/pixi/LayerName.d.ts.map +1 -0
  271. package/dist/pixi/LayerName.js +35 -0
  272. package/dist/pixi/LayerName.js.map +1 -0
  273. package/dist/pixi/PixiCandlestickRenderer.d.ts +23 -0
  274. package/dist/pixi/PixiCandlestickRenderer.d.ts.map +1 -0
  275. package/dist/pixi/PixiCandlestickRenderer.js +107 -0
  276. package/dist/pixi/PixiCandlestickRenderer.js.map +1 -0
  277. package/dist/pixi/PixiChart.d.ts +72 -0
  278. package/dist/pixi/PixiChart.d.ts.map +1 -0
  279. package/dist/pixi/PixiChart.js +367 -0
  280. package/dist/pixi/PixiChart.js.map +1 -0
  281. package/dist/pixi/PixiCrosshairRenderer.d.ts +29 -0
  282. package/dist/pixi/PixiCrosshairRenderer.d.ts.map +1 -0
  283. package/dist/pixi/PixiCrosshairRenderer.js +110 -0
  284. package/dist/pixi/PixiCrosshairRenderer.js.map +1 -0
  285. package/dist/pixi/PixiDrawingRenderer.d.ts +17 -0
  286. package/dist/pixi/PixiDrawingRenderer.d.ts.map +1 -0
  287. package/dist/pixi/PixiDrawingRenderer.js +111 -0
  288. package/dist/pixi/PixiDrawingRenderer.js.map +1 -0
  289. package/dist/pixi/PixiGridRenderer.d.ts +22 -0
  290. package/dist/pixi/PixiGridRenderer.d.ts.map +1 -0
  291. package/dist/pixi/PixiGridRenderer.js +114 -0
  292. package/dist/pixi/PixiGridRenderer.js.map +1 -0
  293. package/dist/pixi/PixiLayerManager.d.ts +56 -0
  294. package/dist/pixi/PixiLayerManager.d.ts.map +1 -0
  295. package/dist/pixi/PixiLayerManager.js +92 -0
  296. package/dist/pixi/PixiLayerManager.js.map +1 -0
  297. package/dist/react/canvas/ChartCanvas.d.ts +85 -0
  298. package/dist/react/canvas/ChartCanvas.d.ts.map +1 -0
  299. package/dist/react/canvas/ChartCanvas.js +604 -0
  300. package/dist/react/canvas/ChartCanvas.js.map +1 -0
  301. package/dist/react/canvas/ChartContextMenu.d.ts +18 -0
  302. package/dist/react/canvas/ChartContextMenu.d.ts.map +1 -0
  303. package/dist/react/canvas/ChartContextMenu.js +5 -0
  304. package/dist/react/canvas/ChartContextMenu.js.map +1 -0
  305. package/dist/react/canvas/ChartSettingsDialog.d.ts +25 -0
  306. package/dist/react/canvas/ChartSettingsDialog.d.ts.map +1 -0
  307. package/dist/react/canvas/ChartSettingsDialog.js +28 -0
  308. package/dist/react/canvas/ChartSettingsDialog.js.map +1 -0
  309. package/dist/react/canvas/IndicatorLabel.d.ts +21 -0
  310. package/dist/react/canvas/IndicatorLabel.d.ts.map +1 -0
  311. package/dist/react/canvas/IndicatorLabel.js +196 -0
  312. package/dist/react/canvas/IndicatorLabel.js.map +1 -0
  313. package/dist/react/canvas/IndicatorPane.d.ts +32 -0
  314. package/dist/react/canvas/IndicatorPane.d.ts.map +1 -0
  315. package/dist/react/canvas/IndicatorPane.js +395 -0
  316. package/dist/react/canvas/IndicatorPane.js.map +1 -0
  317. package/dist/react/canvas/PointerOverlay.d.ts +23 -0
  318. package/dist/react/canvas/PointerOverlay.d.ts.map +1 -0
  319. package/dist/react/canvas/PointerOverlay.js +61 -0
  320. package/dist/react/canvas/PointerOverlay.js.map +1 -0
  321. package/dist/react/canvas/toolbars/LeftToolbar.d.ts +19 -0
  322. package/dist/react/canvas/toolbars/LeftToolbar.d.ts.map +1 -0
  323. package/dist/react/canvas/toolbars/LeftToolbar.js +407 -0
  324. package/dist/react/canvas/toolbars/LeftToolbar.js.map +1 -0
  325. package/dist/react/hooks/useChartCapabilities.d.ts +21 -0
  326. package/dist/react/hooks/useChartCapabilities.d.ts.map +1 -0
  327. package/dist/react/hooks/useChartCapabilities.js +66 -0
  328. package/dist/react/hooks/useChartCapabilities.js.map +1 -0
  329. package/dist/react/index.d.ts +30 -0
  330. package/dist/react/index.d.ts.map +1 -0
  331. package/dist/react/index.js +28 -0
  332. package/dist/react/index.js.map +1 -0
  333. package/dist/react/internal.d.ts +38 -0
  334. package/dist/react/internal.d.ts.map +1 -0
  335. package/dist/react/internal.js +44 -0
  336. package/dist/react/internal.js.map +1 -0
  337. package/dist/react/shell/ManagedAppShell.d.ts +91 -0
  338. package/dist/react/shell/ManagedAppShell.d.ts.map +1 -0
  339. package/dist/react/shell/ManagedAppShell.js +440 -0
  340. package/dist/react/shell/ManagedAppShell.js.map +1 -0
  341. package/dist/react/trading/TradingBridge.d.ts +86 -0
  342. package/dist/react/trading/TradingBridge.d.ts.map +1 -0
  343. package/dist/react/trading/TradingBridge.js +73 -0
  344. package/dist/react/trading/TradingBridge.js.map +1 -0
  345. package/dist/react/workspace/ChartWorkspace.d.ts +73 -0
  346. package/dist/react/workspace/ChartWorkspace.d.ts.map +1 -0
  347. package/dist/react/workspace/ChartWorkspace.js +42 -0
  348. package/dist/react/workspace/ChartWorkspace.js.map +1 -0
  349. package/dist/react/workspace/FloatingPanel.d.ts +18 -0
  350. package/dist/react/workspace/FloatingPanel.d.ts.map +1 -0
  351. package/dist/react/workspace/FloatingPanel.js +82 -0
  352. package/dist/react/workspace/FloatingPanel.js.map +1 -0
  353. package/dist/react/workspace/IndicatorsDialog.d.ts +8 -0
  354. package/dist/react/workspace/IndicatorsDialog.d.ts.map +1 -0
  355. package/dist/react/workspace/IndicatorsDialog.js +121 -0
  356. package/dist/react/workspace/IndicatorsDialog.js.map +1 -0
  357. package/dist/react/workspace/LayoutMenu.d.ts +33 -0
  358. package/dist/react/workspace/LayoutMenu.d.ts.map +1 -0
  359. package/dist/react/workspace/LayoutMenu.js +113 -0
  360. package/dist/react/workspace/LayoutMenu.js.map +1 -0
  361. package/dist/react/workspace/SymbolSearchDialog.d.ts +10 -0
  362. package/dist/react/workspace/SymbolSearchDialog.d.ts.map +1 -0
  363. package/dist/react/workspace/SymbolSearchDialog.js +245 -0
  364. package/dist/react/workspace/SymbolSearchDialog.js.map +1 -0
  365. package/dist/react/workspace/TabBar.d.ts +17 -0
  366. package/dist/react/workspace/TabBar.d.ts.map +1 -0
  367. package/dist/react/workspace/TabBar.js +29 -0
  368. package/dist/react/workspace/TabBar.js.map +1 -0
  369. package/dist/react/workspace/toolbars/BottomToolbar.d.ts +19 -0
  370. package/dist/react/workspace/toolbars/BottomToolbar.d.ts.map +1 -0
  371. package/dist/react/workspace/toolbars/BottomToolbar.js +236 -0
  372. package/dist/react/workspace/toolbars/BottomToolbar.js.map +1 -0
  373. package/dist/react/workspace/toolbars/RightToolbar.d.ts +8 -0
  374. package/dist/react/workspace/toolbars/RightToolbar.d.ts.map +1 -0
  375. package/dist/react/workspace/toolbars/RightToolbar.js +18 -0
  376. package/dist/react/workspace/toolbars/RightToolbar.js.map +1 -0
  377. package/dist/react/workspace/toolbars/TopToolbar.d.ts +41 -0
  378. package/dist/react/workspace/toolbars/TopToolbar.d.ts.map +1 -0
  379. package/dist/react/workspace/toolbars/TopToolbar.js +82 -0
  380. package/dist/react/workspace/toolbars/TopToolbar.js.map +1 -0
  381. package/dist/renderers/CandlestickRenderer.d.ts +13 -0
  382. package/dist/renderers/CandlestickRenderer.d.ts.map +1 -0
  383. package/dist/renderers/CandlestickRenderer.js +98 -0
  384. package/dist/renderers/CandlestickRenderer.js.map +1 -0
  385. package/dist/renderers/HistogramRenderer.d.ts +11 -0
  386. package/dist/renderers/HistogramRenderer.d.ts.map +1 -0
  387. package/dist/renderers/HistogramRenderer.js +50 -0
  388. package/dist/renderers/HistogramRenderer.js.map +1 -0
  389. package/dist/renderers/LineRenderer.d.ts +12 -0
  390. package/dist/renderers/LineRenderer.d.ts.map +1 -0
  391. package/dist/renderers/LineRenderer.js +64 -0
  392. package/dist/renderers/LineRenderer.js.map +1 -0
  393. package/dist/theme/colors.d.ts +4 -0
  394. package/dist/theme/colors.d.ts.map +1 -0
  395. package/dist/theme/colors.js +19 -0
  396. package/dist/theme/colors.js.map +1 -0
  397. package/dist/tools/barDivergenceCheck.d.ts +120 -0
  398. package/dist/tools/barDivergenceCheck.d.ts.map +1 -0
  399. package/dist/tools/barDivergenceCheck.js +200 -0
  400. package/dist/tools/barDivergenceCheck.js.map +1 -0
  401. package/dist/trading/TradingOverlayStore.d.ts +86 -0
  402. package/dist/trading/TradingOverlayStore.d.ts.map +1 -0
  403. package/dist/trading/TradingOverlayStore.js +139 -0
  404. package/dist/trading/TradingOverlayStore.js.map +1 -0
  405. package/dist/trading/UnmanagedIngestion.d.ts +91 -0
  406. package/dist/trading/UnmanagedIngestion.d.ts.map +1 -0
  407. package/dist/trading/UnmanagedIngestion.js +114 -0
  408. package/dist/trading/UnmanagedIngestion.js.map +1 -0
  409. package/dist/trading/__tests__/ManagedTradingController.test.d.ts +18 -0
  410. package/dist/trading/__tests__/ManagedTradingController.test.d.ts.map +1 -0
  411. package/dist/trading/__tests__/ManagedTradingController.test.js +271 -0
  412. package/dist/trading/__tests__/ManagedTradingController.test.js.map +1 -0
  413. package/dist/trading/__tests__/TradingOverlayStore.test.d.ts +16 -0
  414. package/dist/trading/__tests__/TradingOverlayStore.test.d.ts.map +1 -0
  415. package/dist/trading/__tests__/TradingOverlayStore.test.js +267 -0
  416. package/dist/trading/__tests__/TradingOverlayStore.test.js.map +1 -0
  417. package/dist/trading/__tests__/UnmanagedIngestion.test.d.ts +16 -0
  418. package/dist/trading/__tests__/UnmanagedIngestion.test.d.ts.map +1 -0
  419. package/dist/trading/__tests__/UnmanagedIngestion.test.js +170 -0
  420. package/dist/trading/__tests__/UnmanagedIngestion.test.js.map +1 -0
  421. package/dist/trading/managed/ManagedTradingController.d.ts +110 -0
  422. package/dist/trading/managed/ManagedTradingController.d.ts.map +1 -0
  423. package/dist/trading/managed/ManagedTradingController.js +247 -0
  424. package/dist/trading/managed/ManagedTradingController.js.map +1 -0
  425. package/dist/trading/managed/managedCapabilities.d.ts +45 -0
  426. package/dist/trading/managed/managedCapabilities.d.ts.map +1 -0
  427. package/dist/trading/managed/managedCapabilities.js +79 -0
  428. package/dist/trading/managed/managedCapabilities.js.map +1 -0
  429. package/dist/trading/managed/managedTypes.d.ts +122 -0
  430. package/dist/trading/managed/managedTypes.d.ts.map +1 -0
  431. package/dist/trading/managed/managedTypes.js +13 -0
  432. package/dist/trading/managed/managedTypes.js.map +1 -0
  433. package/dist/trading/tradingTypes.d.ts +89 -0
  434. package/dist/trading/tradingTypes.d.ts.map +1 -0
  435. package/dist/trading/tradingTypes.js +8 -0
  436. package/dist/trading/tradingTypes.js.map +1 -0
  437. package/dist/tscript/TScriptIndicator.d.ts +41 -0
  438. package/dist/tscript/TScriptIndicator.d.ts.map +1 -0
  439. package/dist/tscript/TScriptIndicator.js +47 -0
  440. package/dist/tscript/TScriptIndicator.js.map +1 -0
  441. package/dist/tscript/ast.d.ts +89 -0
  442. package/dist/tscript/ast.d.ts.map +1 -0
  443. package/dist/tscript/ast.js +22 -0
  444. package/dist/tscript/ast.js.map +1 -0
  445. package/dist/tscript/lexer.d.ts +36 -0
  446. package/dist/tscript/lexer.d.ts.map +1 -0
  447. package/dist/tscript/lexer.js +187 -0
  448. package/dist/tscript/lexer.js.map +1 -0
  449. package/dist/tscript/parser.d.ts +50 -0
  450. package/dist/tscript/parser.d.ts.map +1 -0
  451. package/dist/tscript/parser.js +318 -0
  452. package/dist/tscript/parser.js.map +1 -0
  453. package/dist/tscript/runtime.d.ts +123 -0
  454. package/dist/tscript/runtime.d.ts.map +1 -0
  455. package/dist/tscript/runtime.js +475 -0
  456. package/dist/tscript/runtime.js.map +1 -0
  457. package/dist/tscript/series.d.ts +49 -0
  458. package/dist/tscript/series.d.ts.map +1 -0
  459. package/dist/tscript/series.js +79 -0
  460. package/dist/tscript/series.js.map +1 -0
  461. package/dist/types/IChart.d.ts +48 -0
  462. package/dist/types/IChart.d.ts.map +1 -0
  463. package/dist/types/IChart.js +2 -0
  464. package/dist/types/IChart.js.map +1 -0
  465. package/{src/types/IRenderer.ts → dist/types/IRenderer.d.ts} +2 -8
  466. package/dist/types/IRenderer.d.ts.map +1 -0
  467. package/dist/types/IRenderer.js +2 -0
  468. package/dist/types/IRenderer.js.map +1 -0
  469. package/dist/types/ISeries.d.ts +26 -0
  470. package/dist/types/ISeries.d.ts.map +1 -0
  471. package/dist/types/ISeries.js +2 -0
  472. package/dist/types/ISeries.js.map +1 -0
  473. package/package.json +32 -4
  474. package/src/__tests__/backwardCompatibility.test.ts +0 -191
  475. package/src/__tests__/candleInvariant.test.ts +0 -500
  476. package/src/__tests__/timeframeBoundary.test.ts +0 -583
  477. package/src/api/DrawingManager.ts +0 -188
  478. package/src/api/EventBus.ts +0 -53
  479. package/src/api/IndicatorDAG.ts +0 -389
  480. package/src/api/IndicatorRegistry.ts +0 -47
  481. package/src/api/LayoutManager.ts +0 -72
  482. package/src/api/PaneManager.ts +0 -129
  483. package/src/api/ReferenceAPI.ts +0 -195
  484. package/src/api/TChart.ts +0 -881
  485. package/src/api/drawing tools/fib gann menu/fibRetracement.ts +0 -27
  486. package/src/api/drawing tools/lines menu/crossLine.ts +0 -21
  487. package/src/api/drawing tools/lines menu/disjointChannel.ts +0 -74
  488. package/src/api/drawing tools/lines menu/extendedLine.ts +0 -22
  489. package/src/api/drawing tools/lines menu/flatTopBottom.ts +0 -45
  490. package/src/api/drawing tools/lines menu/horizontal.ts +0 -24
  491. package/src/api/drawing tools/lines menu/horizontalRay.ts +0 -25
  492. package/src/api/drawing tools/lines menu/infoLine.ts +0 -127
  493. package/src/api/drawing tools/lines menu/insidePitchfork.ts +0 -21
  494. package/src/api/drawing tools/lines menu/modifiedSchiffPitchfork.ts +0 -18
  495. package/src/api/drawing tools/lines menu/parallelChannel.ts +0 -47
  496. package/src/api/drawing tools/lines menu/pitchfork.ts +0 -15
  497. package/src/api/drawing tools/lines menu/ray.ts +0 -28
  498. package/src/api/drawing tools/lines menu/regressionTrend.ts +0 -157
  499. package/src/api/drawing tools/lines menu/schiffPitchfork.ts +0 -18
  500. package/src/api/drawing tools/lines menu/trendAngle.ts +0 -64
  501. package/src/api/drawing tools/lines menu/trendline.ts +0 -16
  502. package/src/api/drawing tools/lines menu/vertical.ts +0 -16
  503. package/src/api/drawing tools/shapes menu/rectangle.ts +0 -24
  504. package/src/api/drawing tools/shapes menu/text.ts +0 -30
  505. package/src/api/drawingUtils.ts +0 -82
  506. package/src/core/CanvasLayer.ts +0 -77
  507. package/src/core/Chart.ts +0 -917
  508. package/src/core/CoordTransform.ts +0 -282
  509. package/src/core/Crosshair.ts +0 -207
  510. package/src/core/IndicatorEngine.ts +0 -216
  511. package/src/core/InteractionManager.ts +0 -899
  512. package/src/core/PriceScale.ts +0 -133
  513. package/src/core/Series.ts +0 -132
  514. package/src/core/TimeScale.ts +0 -175
  515. package/src/datafeed/DatafeedConnector.ts +0 -300
  516. package/src/engine/CandleEngine.ts +0 -458
  517. package/src/engine/__tests__/CandleEngine.test.ts +0 -402
  518. package/src/engine/candleInvariants.ts +0 -172
  519. package/src/index.ts +0 -190
  520. package/src/licensing/ChartRuntimeResolver.ts +0 -380
  521. package/src/licensing/LicenseManager.ts +0 -131
  522. package/src/licensing/__tests__/ChartRuntimeResolver.test.ts +0 -207
  523. package/src/licensing/__tests__/LicenseManager.test.ts +0 -180
  524. package/src/licensing/licenseTypes.ts +0 -19
  525. package/src/pine/PineCompiler.ts +0 -68
  526. package/src/pine/diagnostics.ts +0 -30
  527. package/src/pine/pine-ast.ts +0 -163
  528. package/src/pine/pine-lexer.ts +0 -265
  529. package/src/pine/pine-parser.ts +0 -439
  530. package/src/pine/pine-transpiler.ts +0 -301
  531. package/src/pixi/LayerName.ts +0 -35
  532. package/src/pixi/PixiCandlestickRenderer.ts +0 -125
  533. package/src/pixi/PixiChart.ts +0 -425
  534. package/src/pixi/PixiCrosshairRenderer.ts +0 -134
  535. package/src/pixi/PixiDrawingRenderer.ts +0 -121
  536. package/src/pixi/PixiGridRenderer.ts +0 -136
  537. package/src/pixi/PixiLayerManager.ts +0 -102
  538. package/src/renderers/CandlestickRenderer.ts +0 -130
  539. package/src/renderers/HistogramRenderer.ts +0 -63
  540. package/src/renderers/LineRenderer.ts +0 -77
  541. package/src/theme/colors.ts +0 -21
  542. package/src/tools/barDivergenceCheck.ts +0 -305
  543. package/src/trading/TradingOverlayStore.ts +0 -161
  544. package/src/trading/UnmanagedIngestion.ts +0 -156
  545. package/src/trading/__tests__/ManagedTradingController.test.ts +0 -338
  546. package/src/trading/__tests__/TradingOverlayStore.test.ts +0 -323
  547. package/src/trading/__tests__/UnmanagedIngestion.test.ts +0 -205
  548. package/src/trading/managed/ManagedTradingController.ts +0 -292
  549. package/src/trading/managed/managedCapabilities.ts +0 -98
  550. package/src/trading/managed/managedTypes.ts +0 -151
  551. package/src/trading/tradingTypes.ts +0 -135
  552. package/src/tscript/TScriptIndicator.ts +0 -54
  553. package/src/tscript/ast.ts +0 -105
  554. package/src/tscript/lexer.ts +0 -190
  555. package/src/tscript/parser.ts +0 -334
  556. package/src/tscript/runtime.ts +0 -525
  557. package/src/tscript/series.ts +0 -84
  558. package/src/types/IChart.ts +0 -56
  559. package/src/types/ISeries.ts +0 -30
  560. package/tsconfig.json +0 -22
  561. package/tsup.config.ts +0 -15
  562. package/vitest.config.ts +0 -25
@@ -0,0 +1,765 @@
1
+ import { Chart } from '../core/Chart';
2
+ import { EventBus } from './EventBus';
3
+ import { IndicatorRegistry } from './IndicatorRegistry';
4
+ import { LayoutManager } from './LayoutManager';
5
+ import { PaneManager } from './PaneManager';
6
+ import { DatafeedConnector } from '../datafeed/DatafeedConnector';
7
+ import { TradingOverlayStore } from '../trading/TradingOverlayStore';
8
+ import { UnmanagedIngestion } from '../trading/UnmanagedIngestion';
9
+ import { isUnmanagedMode } from '../licensing/ChartRuntimeResolver';
10
+ import { ManagedTradingController } from '../trading/managed/ManagedTradingController';
11
+ /** Candle duration in seconds per timeframe — used for the history-prefetch threshold. */
12
+ const _TF_SECS = {
13
+ '1s': 1, '5s': 5, '10s': 10, '30s': 30,
14
+ '1m': 60, '3m': 180, '5m': 300, '15m': 900, '30m': 1800,
15
+ '1h': 3600, '2h': 7200, '4h': 14400, '6h': 21600, '12h': 43200,
16
+ '1d': 86400, '3d': 259200, '1w': 604800, '1M': 2592000,
17
+ };
18
+ /**
19
+ * TChart — the stable public chart instance returned by `createChart()`.
20
+ *
21
+ * Wraps the internal canvas `Chart` engine and exposes the documented
22
+ * public API. Application code and plugins should only interact with
23
+ * `TChart`/`IPublicChart`; never with the internal `Chart` class directly.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * import { createChart } from '@forgecharts/sdk';
28
+ *
29
+ * const chart = createChart({
30
+ * container: document.getElementById('chart')!,
31
+ * symbol: 'BTCUSDT',
32
+ * interval: '5m',
33
+ * });
34
+ *
35
+ * chart.on('symbolChanged', ({ symbol }) => console.log('Symbol:', symbol));
36
+ *
37
+ * chart.setTheme('light');
38
+ * const id = chart.addIndicator({ type: 'ema', params: { period: 20 } });
39
+ * chart.removeIndicator(id);
40
+ *
41
+ * const layout = chart.saveLayout(); // portable JSON-ready object
42
+ * chart.loadLayout(layout); // restore
43
+ *
44
+ * chart.destroy();
45
+ * ```
46
+ */
47
+ export class TChart {
48
+ _core;
49
+ _bus;
50
+ _indicators;
51
+ _drawings;
52
+ _panes;
53
+ _plugins = [];
54
+ /** Primary price series — created once; fed by the datafeed or directly. */
55
+ _series;
56
+ /** Datafeed connector — null when no datafeed was provided. */
57
+ _connector = null;
58
+ _symbol;
59
+ _interval;
60
+ _theme;
61
+ _destroyed = false;
62
+ /**
63
+ * In-memory auth token. Set via constructor `getAuthToken` callback or
64
+ * directly via `setAuthToken()`. Takes precedence over localStorage.
65
+ */
66
+ _authToken = null;
67
+ _getAuthToken = null;
68
+ _apiUrl;
69
+ // ─ Shared trading overlay store (used by both unmanaged and managed modes) ──
70
+ _overlayStore = new TradingOverlayStore();
71
+ /** Lazy-initialised; only created when first unmanaged ingestion method is called. */
72
+ _unmanagedIngestion = null;
73
+ /** Lazy-initialised; only created when getManagedTrading() is first called. */
74
+ _managedTrading = null;
75
+ /**
76
+ * Returns a Bearer token for API calls. Resolution order:
77
+ * 1. In-memory `_authToken` (set via `setAuthToken()`).
78
+ * 2. `getAuthToken` callback from config (embedder-managed).
79
+ * 3. `localStorage["forgecharts-token"]` (built-in frontend fallback).
80
+ *
81
+ * Returns `null` when no token is available — API calls will be unauthenticated.
82
+ */
83
+ async resolveAuthToken() {
84
+ if (this._authToken)
85
+ return this._authToken;
86
+ if (this._getAuthToken) {
87
+ try {
88
+ return await this._getAuthToken();
89
+ }
90
+ catch {
91
+ return null;
92
+ }
93
+ }
94
+ if (typeof localStorage !== 'undefined') {
95
+ return localStorage.getItem('forgecharts-token');
96
+ }
97
+ return null;
98
+ }
99
+ constructor(config) {
100
+ this._symbol = config.symbol;
101
+ this._apiUrl = config.apiUrl ?? '';
102
+ if (config.getAuthToken)
103
+ this._getAuthToken = config.getAuthToken;
104
+ this._interval = config.interval ?? '1h';
105
+ this._theme = config.theme ?? 'dark';
106
+ this._bus = new EventBus();
107
+ this._indicators = new IndicatorRegistry();
108
+ this._panes = new PaneManager();
109
+ this._core = new Chart(config.container, {
110
+ theme: this._theme,
111
+ handleScroll: !(config.disableScroll ?? false),
112
+ handleScale: !(config.disableZoom ?? false),
113
+ ...(config.crosshair !== undefined ? { crosshair: config.crosshair } : {}),
114
+ });
115
+ // Use the Chart's own DrawingManager so drawings are rendered automatically
116
+ this._drawings = this._core.drawingManager();
117
+ // Wire drawing callbacks
118
+ this._core.onDrawingCommitted = (drawing) => {
119
+ this._bus.emit('drawingCreated', drawing);
120
+ };
121
+ this._core.onDrawingDeleted = (id) => {
122
+ this._bus.emit('drawingRemoved', { id });
123
+ };
124
+ this._core.onDrawingContextMenu = (id, x, y) => {
125
+ this._bus.emit('drawingContextMenu', { id, x, y });
126
+ };
127
+ // Prime the chart with a default candlestick series and retain the reference
128
+ this._series = this._core.addSeries({ type: 'candlestick' });
129
+ // Tell the core chart which timeframe is active (for last-price countdown)
130
+ this._core.setInterval(this._interval);
131
+ // Wire datafeed if provided
132
+ if (config.datafeed !== undefined) {
133
+ this._connector = this._buildConnector(config.datafeed);
134
+ this._connector.connect(this._symbol, this._interval);
135
+ }
136
+ // Lazy-load older history when the user pans/zooms the left edge into view.
137
+ // Fires on every pan/zoom; debounced internally by DatafeedConnector._isLoadingMore.
138
+ this._core.onViewportChanged = () => {
139
+ const connector = this._connector;
140
+ if (!connector)
141
+ return;
142
+ const bars = this._series.data();
143
+ if (bars.length === 0)
144
+ return;
145
+ const oldestBarTime = bars[0].time;
146
+ const { from } = this._core.getViewport().timeRange;
147
+ // Trigger when the viewport left edge is within 30 candles of the oldest loaded bar
148
+ const tfSec = _TF_SECS[this._interval] ?? 3600;
149
+ if (from < oldestBarTime + tfSec * 30) {
150
+ connector.loadMoreHistory(this._symbol, this._interval);
151
+ }
152
+ };
153
+ // Attach plugins provided at construction time
154
+ for (const plugin of config.plugins ?? []) {
155
+ this._attachPlugin(plugin);
156
+ }
157
+ }
158
+ // ─── Getters ─────────────────────────────────────────────────────────────────
159
+ /** Currently displayed symbol. */
160
+ get symbol() {
161
+ return this._symbol;
162
+ }
163
+ /** Currently active interval. */
164
+ get interval() {
165
+ return this._interval;
166
+ }
167
+ /** Currently active theme. */
168
+ get theme() {
169
+ return this._theme;
170
+ }
171
+ // ─── Data access ─────────────────────────────────────────────────────────────
172
+ /** Returns the current bar dataset (sorted ascending by time). */
173
+ getBars() {
174
+ return this._series.data();
175
+ }
176
+ /** Returns the coordinate transform used for pixel ⇔ data conversions. */
177
+ getTransform() {
178
+ return this._core.transform();
179
+ }
180
+ /** Returns the current sub-pane descriptors. */
181
+ getPanes() {
182
+ return this._panes.getPanes();
183
+ }
184
+ /** Returns all active indicator instances. */
185
+ getIndicators() {
186
+ return this._indicators.all();
187
+ }
188
+ /**
189
+ * Resizes a sub-pane by setting its height fraction.
190
+ * Remaining panes absorb the difference proportionally.
191
+ */
192
+ resizePane(id, newFraction) {
193
+ this._assertAlive();
194
+ this._panes.resizePane(id, newFraction);
195
+ }
196
+ // ─── Auth ─────────────────────────────────────────────────────────────────────
197
+ /**
198
+ * Sets a static Bearer token for API calls (layouts, etc.).
199
+ *
200
+ * Call this after your user authenticates. If you prefer token refresh,
201
+ * supply `getAuthToken` in `ChartConfig` instead — that callback is invoked
202
+ * on every API request so you can return a fresh token each time.
203
+ *
204
+ * @example
205
+ * ```ts
206
+ * // After your own login succeeds:
207
+ * const { forgechartsToken } = await myBackend.login(email, password);
208
+ * chart.setAuthToken(forgechartsToken);
209
+ * ```
210
+ */
211
+ setAuthToken(token) {
212
+ this._authToken = token;
213
+ }
214
+ /**
215
+ * Clears the in-memory auth token (e.g. on logout).
216
+ * After calling this the SDK falls back to `getAuthToken` or localStorage.
217
+ */
218
+ clearAuthToken() {
219
+ this._authToken = null;
220
+ }
221
+ // ─── Setters ─────────────────────────────────────────────────────────────────
222
+ /**
223
+ * Changes the displayed symbol.
224
+ * No-ops if the symbol is unchanged.
225
+ * Emits `symbolChanged`.
226
+ */
227
+ setSymbol(symbol) {
228
+ this._assertAlive();
229
+ if (symbol === this._symbol)
230
+ return;
231
+ this._symbol = symbol;
232
+ this._bus.emit('symbolChanged', { symbol });
233
+ this._connector?.reconnect(symbol, this._interval);
234
+ }
235
+ /**
236
+ * Changes the active interval.
237
+ * No-ops if the interval is unchanged.
238
+ * Emits `intervalChanged`.
239
+ */
240
+ setInterval(interval) {
241
+ this._assertAlive();
242
+ if (interval === this._interval)
243
+ return;
244
+ this._interval = interval;
245
+ this._core.setInterval(interval);
246
+ this._bus.emit('intervalChanged', { interval });
247
+ this._connector?.reconnect(this._symbol, interval);
248
+ }
249
+ /**
250
+ * Switches the colour theme.
251
+ * No-ops if the theme is unchanged.
252
+ * Emits `themeChanged`.
253
+ */
254
+ setTheme(theme) {
255
+ this._assertAlive();
256
+ if (theme === this._theme)
257
+ return;
258
+ this._theme = theme;
259
+ this._core.applyOptions({ theme });
260
+ this._bus.emit('themeChanged', { theme });
261
+ }
262
+ /** Updates the timezone used for all time-axis labels. */
263
+ setTimezone(timezone) {
264
+ this._assertAlive();
265
+ this._core.applyOptions({ timezone });
266
+ }
267
+ /**
268
+ * Applies low-level chart options (colors, theme, scales, etc.).
269
+ * Pass `{ colors: { background: '#fff' } }` to change individual canvas colors.
270
+ */
271
+ applyOptions(options) {
272
+ this._assertAlive();
273
+ this._core.applyOptions(options);
274
+ }
275
+ /** Scrolls the viewport so the latest bar is visible at the right edge. */
276
+ scrollToEnd() {
277
+ this._assertAlive();
278
+ this._core.scrollToEnd();
279
+ }
280
+ /**
281
+ * Sets the default viewport: 10 days visible with the latest bar near the
282
+ * right edge (5% empty space on the right for future price action).
283
+ */
284
+ fitDefaultView() {
285
+ this._assertAlive();
286
+ this._core.fitDefaultView();
287
+ }
288
+ /**
289
+ * Resets the price axis to auto-fit mode without changing the time range.
290
+ * Use this after restoring a saved viewport to prevent a stale priceRange
291
+ * from locking the scale at a wrong value (e.g. the default 0–100).
292
+ */
293
+ resetPriceScale() {
294
+ this._assertAlive();
295
+ this._core.resetPriceScale();
296
+ }
297
+ /** Returns the current visible time and price ranges. */
298
+ getViewport() {
299
+ this._assertAlive();
300
+ return this._core.getViewport();
301
+ }
302
+ /** Restores a previously saved viewport (time + price ranges). */
303
+ restoreViewport(v) {
304
+ this._assertAlive();
305
+ this._core.restoreViewport(v);
306
+ }
307
+ // ─── Indicators ──────────────────────────────────────────────────────────────
308
+ /**
309
+ * Registers an indicator and returns its opaque id.
310
+ * Emits `indicatorAdded`.
311
+ *
312
+ * @example
313
+ * ```ts
314
+ * const rsiId = chart.addIndicator({ type: 'rsi', params: { period: 14 } });
315
+ * ```
316
+ */
317
+ addIndicator(config) {
318
+ this._assertAlive();
319
+ const id = this._indicators.add(config);
320
+ // Non-overlay indicators get their own dedicated sub-pane
321
+ if (config.overlay !== true) {
322
+ const label = _indicatorTypeLabel(config.type);
323
+ const paneId = this._panes.createPane(label);
324
+ this._panes.assignIndicator(id, paneId);
325
+ }
326
+ this._bus.emit('indicatorAdded', { id, config });
327
+ return id;
328
+ }
329
+ /**
330
+ * Removes a previously added indicator.
331
+ * Silently no-ops if the id is unknown.
332
+ * Emits `indicatorRemoved`.
333
+ */
334
+ removeIndicator(id) {
335
+ this._assertAlive();
336
+ // Find which pane holds this indicator before removal
337
+ const paneId = this._panes.getPanes().find((p) => p.indicatorIds.includes(id))?.id;
338
+ const removed = this._indicators.remove(id);
339
+ if (removed) {
340
+ this._panes.unassignIndicator(id);
341
+ // Remove the pane if it is now empty
342
+ if (paneId !== undefined) {
343
+ const pane = this._panes.getPanes().find((p) => p.id === paneId);
344
+ if (pane !== undefined && pane.indicatorIds.length === 0) {
345
+ this._panes.removePane(paneId);
346
+ }
347
+ }
348
+ this._bus.emit('indicatorRemoved', { id });
349
+ }
350
+ }
351
+ // ─── Drawings ────────────────────────────────────────────────────────────────
352
+ /**
353
+ * Adds a drawing to the chart and returns its generated id.
354
+ * Emits `drawingCreated`.
355
+ *
356
+ * @example
357
+ * ```ts
358
+ * const id = chart.addDrawing({
359
+ * type: 'trendline',
360
+ * points: [
361
+ * { time: 1700000000, price: 45000 },
362
+ * { time: 1700003600, price: 46000 },
363
+ * ],
364
+ * });
365
+ * ```
366
+ */
367
+ addDrawing(drawing) {
368
+ this._assertAlive();
369
+ const id = this._drawings.add(drawing);
370
+ const full = this._drawings.get(id);
371
+ if (!full)
372
+ throw new Error('[ForgeCharts] DrawingManager failed to store drawing');
373
+ this._bus.emit('drawingCreated', full);
374
+ this._core.markDirty();
375
+ return id;
376
+ }
377
+ /**
378
+ * Removes a single drawing by id.
379
+ * Emits `drawingRemoved`.
380
+ */
381
+ removeDrawing(id) {
382
+ this._assertAlive();
383
+ if (!this._drawings.has(id))
384
+ return;
385
+ this._drawings.remove(id);
386
+ this._bus.emit('drawingRemoved', { id });
387
+ this._core.markDirty();
388
+ }
389
+ /**
390
+ * Activates a drawing tool. Clicks will place anchors on the chart.
391
+ * The tool remains active after each commit (auto-repeat). Press Escape to cancel.
392
+ */
393
+ startDrawingTool(type) {
394
+ this._assertAlive();
395
+ this._core.startDrawingTool(type);
396
+ }
397
+ /** Cancels an active drawing tool and returns to cursor mode. */
398
+ cancelDrawingTool() {
399
+ this._assertAlive();
400
+ this._core.cancelDrawingTool();
401
+ }
402
+ /**
403
+ * Show or hide the SDK crosshair lines.
404
+ * Call with `false` for Arrow mode; `true` for crosshair / dot / demonstration.
405
+ */
406
+ setCrosshairEnabled(enabled) {
407
+ this._assertAlive();
408
+ this._core.setCrosshairEnabled(enabled);
409
+ }
410
+ /** Hides (`true`) or restores (`false`) the native OS cursor for dot / demonstration pointer modes. */
411
+ setNativeCursorHidden(hidden) {
412
+ this._assertAlive();
413
+ this._core.setNativeCursorHidden(hidden);
414
+ }
415
+ /** Deletes the currently selected drawing (if any). */
416
+ deleteSelectedDrawing() {
417
+ this._assertAlive();
418
+ this._core.deleteSelectedDrawing();
419
+ }
420
+ /** Shows or hides all drawings on the chart. */
421
+ setAllDrawingsVisible(v) {
422
+ this._assertAlive();
423
+ this._core.setAllDrawingsVisible(v);
424
+ }
425
+ /** Shows or hides all indicators/series on the chart. */
426
+ setIndicatorsVisible(v) {
427
+ this._assertAlive();
428
+ this._core.setIndicatorsVisible(v);
429
+ }
430
+ /**
431
+ * Removes all drawings from the chart.
432
+ * Emits `drawingsCleared`.
433
+ */
434
+ clearDrawings() {
435
+ this._assertAlive();
436
+ this._drawings.clear();
437
+ this._bus.emit('drawingsCleared', {});
438
+ }
439
+ // ─── Layout ──────────────────────────────────────────────────────────────────
440
+ /**
441
+ * Restores a previously saved layout.
442
+ * Replaces current symbol, interval, theme, indicators, and drawings.
443
+ * Emits `layoutLoaded`.
444
+ */
445
+ loadLayout(layout) {
446
+ this._assertAlive();
447
+ this._symbol = layout.symbol;
448
+ this._interval = layout.interval;
449
+ // Theme (use internal setter to propagate to canvas)
450
+ if (layout.theme !== this._theme) {
451
+ this._theme = layout.theme;
452
+ this._core.applyOptions({ theme: layout.theme });
453
+ }
454
+ // Indicators
455
+ this._indicators.clear();
456
+ for (const inst of layout.indicators) {
457
+ this._indicators.add(inst.config);
458
+ }
459
+ // Drawings — strip old ids and re-add (DrawingManager assigns new ids)
460
+ this._drawings.clear();
461
+ for (const { id: _discarded, ...rest } of layout.drawings) {
462
+ this._drawings.add(rest);
463
+ }
464
+ this._core.markDirty();
465
+ // Panes
466
+ this._panes.clear();
467
+ if (layout.panes !== undefined) {
468
+ this._panes.restore(layout.panes);
469
+ }
470
+ // Viewport — restore time range so the chart opens at the same position.
471
+ // Price is also restored so custom scales are preserved.
472
+ if (layout.viewport) {
473
+ this._core.restoreViewport(layout.viewport);
474
+ }
475
+ this._bus.emit('layoutLoaded', layout);
476
+ }
477
+ /**
478
+ * Serialises the current chart state to a portable layout object.
479
+ * Safe to `JSON.stringify()` for persistence.
480
+ * Emits `layoutSaved`.
481
+ */
482
+ saveLayout() {
483
+ this._assertAlive();
484
+ const panes = this._panes.serialize();
485
+ const layout = LayoutManager.save({
486
+ symbol: this._symbol,
487
+ interval: this._interval,
488
+ theme: this._theme,
489
+ indicators: this._indicators.all(),
490
+ drawings: this._drawings.all(),
491
+ viewport: this._core.getViewport(),
492
+ ...(panes.length > 0 ? { panes } : {}),
493
+ });
494
+ this._bus.emit('layoutSaved', layout);
495
+ return layout;
496
+ }
497
+ // ─── Plugin API ───────────────────────────────────────────────────────────────
498
+ /**
499
+ * Attaches a plugin at runtime.
500
+ *
501
+ * @example
502
+ * ```ts
503
+ * chart.use(new WatermarkPlugin({ text: 'ForgeCharts' }));
504
+ * ```
505
+ */
506
+ use(plugin) {
507
+ this._assertAlive();
508
+ this._attachPlugin(plugin);
509
+ return this;
510
+ }
511
+ /**
512
+ * Detaches a plugin by its `id` property.
513
+ * Silently no-ops if the plugin is not attached.
514
+ */
515
+ eject(pluginId) {
516
+ const idx = this._plugins.findIndex((p) => p.id === pluginId);
517
+ if (idx === -1)
518
+ return this;
519
+ const [removed] = this._plugins.splice(idx, 1);
520
+ removed.onDetach();
521
+ return this;
522
+ }
523
+ // ─── Event bus ────────────────────────────────────────────────────────────────
524
+ /**
525
+ * Subscribes to a chart event.
526
+ *
527
+ * @example
528
+ * ```ts
529
+ * chart.on('symbolChanged', ({ symbol }) => {
530
+ * document.title = symbol;
531
+ * });
532
+ * ```
533
+ */
534
+ on(event, handler) {
535
+ this._bus.on(event, handler);
536
+ return this;
537
+ }
538
+ /**
539
+ * Unsubscribes a previously registered handler.
540
+ * The handler reference must be the same function passed to `on()`.
541
+ */
542
+ off(event, handler) {
543
+ this._bus.off(event, handler);
544
+ return this;
545
+ }
546
+ /**
547
+ * Subscribes to an event for a single invocation.
548
+ * The handler is automatically removed after it fires once.
549
+ */
550
+ once(event, handler) {
551
+ this._bus.once(event, handler);
552
+ return this;
553
+ }
554
+ // ─── Lifecycle ────────────────────────────────────────────────────────────────
555
+ /**
556
+ * Tears down the chart instance:
557
+ * 1. Detaches all plugins
558
+ * 2. Destroys the canvas engine (removes DOM elements)
559
+ * 3. Emits `destroyed`
560
+ * 4. Clears all event listeners
561
+ *
562
+ * After `destroy()` every further method call throws `[ForgeCharts] destroyed`.
563
+ */
564
+ destroy() {
565
+ if (this._destroyed)
566
+ return;
567
+ this._destroyed = true;
568
+ // Tear down datafeed before destroying the canvas so no tick can arrive
569
+ // after series / canvas are gone
570
+ this._connector?.destroy();
571
+ this._connector = null;
572
+ for (const plugin of [...this._plugins]) {
573
+ plugin.onDetach();
574
+ }
575
+ this._plugins.length = 0;
576
+ this._core.destroy();
577
+ this._bus.emit('destroyed', {});
578
+ this._bus.clear();
579
+ }
580
+ // ─── Private ──────────────────────────────────────────────────────────────
581
+ // ─── Unmanaged ingestion ───────────────────────────────────────────────────
582
+ /**
583
+ * Load a full historical bar snapshot in unmanaged mode.
584
+ * Replaces the ingestion engine’s bar array and triggers a chart resync.
585
+ *
586
+ * **Only available in unmanaged mode.** Throws if the active license is managed.
587
+ *
588
+ * Call this once at startup (or after a symbol/interval change) before
589
+ * streaming live candles via `pushCandle()`.
590
+ *
591
+ * @param bars Chronologically ordered (oldest → newest) candle array.
592
+ */
593
+ setHistory(bars) {
594
+ this._assertAlive();
595
+ this._getIngestion().setHistory(bars);
596
+ }
597
+ /**
598
+ * Push a single live candle in unmanaged mode.
599
+ * Follows standard OHLCV merge rules:
600
+ * - same timestamp → update existing bar
601
+ * - newer timestamp → append new bar
602
+ * - older timestamp → silently ignored
603
+ *
604
+ * **Only available in unmanaged mode.** Throws if the active license is managed.
605
+ */
606
+ pushCandle(bar) {
607
+ this._assertAlive();
608
+ this._getIngestion().pushCandle(bar);
609
+ }
610
+ // ─── Trading overlay ─────────────────────────────────────────────────────
611
+ // Shared between unmanaged and managed modes. In unmanaged mode the client
612
+ // provides state externally; in managed mode the managed trading service
613
+ // will drive these via the same store.
614
+ /** Returns the shared trading overlay store (read access for renderers). */
615
+ getOverlayStore() {
616
+ return this._overlayStore;
617
+ }
618
+ /**
619
+ * Alias for {@link getOverlayStore} — canonical name used in documentation
620
+ * and the public SDK contract.
621
+ */
622
+ getTradingOverlayStore() {
623
+ return this._overlayStore;
624
+ }
625
+ // ─ Orders ──
626
+ /** Replace the entire order set on the chart overlay. */
627
+ setOrders(orders) {
628
+ this._assertAlive();
629
+ this._overlayStore.setOrders(orders);
630
+ this._core.markDirty();
631
+ }
632
+ /** Insert or update a single order (matched by `order.id`). */
633
+ upsertOrder(order) {
634
+ this._assertAlive();
635
+ this._overlayStore.upsertOrder(order);
636
+ this._core.markDirty();
637
+ }
638
+ /** Remove an order line by id. Silent no-op if not found. */
639
+ removeOrder(orderId) {
640
+ this._assertAlive();
641
+ this._overlayStore.removeOrder(orderId);
642
+ this._core.markDirty();
643
+ }
644
+ // ─ Positions ──
645
+ /** Replace the entire position set on the chart overlay. */
646
+ setPositions(positions) {
647
+ this._assertAlive();
648
+ this._overlayStore.setPositions(positions);
649
+ this._core.markDirty();
650
+ }
651
+ /** Insert or update a single position (matched by `position.id`). */
652
+ upsertPosition(position) {
653
+ this._assertAlive();
654
+ this._overlayStore.upsertPosition(position);
655
+ this._core.markDirty();
656
+ }
657
+ /** Remove a position marker by id. Silent no-op if not found. */
658
+ removePosition(positionId) {
659
+ this._assertAlive();
660
+ this._overlayStore.removePosition(positionId);
661
+ this._core.markDirty();
662
+ }
663
+ // ─ Fills ──
664
+ /** Append an execution fill marker to the chart. Fills are append-only. */
665
+ pushExecution(fill) {
666
+ this._assertAlive();
667
+ this._overlayStore.pushExecution(fill);
668
+ this._core.markDirty();
669
+ }
670
+ // ─── Managed trading ────────────────────────────────────────────────────
671
+ /**
672
+ * Returns the managed trading controller for this chart instance.
673
+ *
674
+ * The controller is lazily created the first time this is called.
675
+ * It is bound to this chart’s shared overlay store so all managed trades
676
+ * flow into the same visual layer as unmanaged overlays.
677
+ *
678
+ * Call `chart.getManagedTrading().registerProvider(myProvider)` to wire
679
+ * up an execution backend.
680
+ *
681
+ * **Requires a managed-mode license.** The controller’s methods will throw
682
+ * if called without appropriate capability.
683
+ *
684
+ * @example
685
+ * ```ts
686
+ * const mgd = chart.getManagedTrading();
687
+ * mgd.registerProvider(new RithmicProvider(credentials));
688
+ * await mgd.placeOrder({ symbol: 'ES', side: 'buy', type: 'limit', limitPrice: 5200, qty: 1 });
689
+ * ```
690
+ */
691
+ getManagedTrading() {
692
+ this._assertAlive();
693
+ if (!this._managedTrading) {
694
+ this._managedTrading = new ManagedTradingController(this._overlayStore);
695
+ }
696
+ return this._managedTrading;
697
+ }
698
+ _attachPlugin(plugin) {
699
+ this._plugins.push(plugin);
700
+ plugin.onAttach(this);
701
+ }
702
+ _assertAlive() {
703
+ if (this._destroyed) {
704
+ throw new Error('[ForgeCharts] Method called on a destroyed chart instance.');
705
+ }
706
+ }
707
+ /**
708
+ * Returns the UnmanagedIngestion instance, lazily creating it on first call.
709
+ * Wires the ingestion callbacks so live candle updates flow into the chart series.
710
+ */
711
+ _getIngestion() {
712
+ if (!this._unmanagedIngestion) {
713
+ if (!isUnmanagedMode()) {
714
+ throw new Error('[ForgeCharts] External data ingestion is only available in unmanaged mode.');
715
+ }
716
+ this._unmanagedIngestion = new UnmanagedIngestion(this._interval, {
717
+ onBarUpdated: (bar) => {
718
+ this._series.update(bar);
719
+ this._bus.emit('barsUpdated', { count: this._series.data().length });
720
+ },
721
+ onResync: (bars) => {
722
+ this._series.setData(bars);
723
+ this._bus.emit('barsUpdated', { count: bars.length });
724
+ },
725
+ });
726
+ }
727
+ return this._unmanagedIngestion;
728
+ }
729
+ // ─── Datafeed ─────────────────────────────────────────────────────────────────
730
+ _buildConnector(datafeed) {
731
+ return new DatafeedConnector(datafeed, this._series, {
732
+ onLoading: (symbol, interval) => {
733
+ this._bus.emit('dataLoading', { symbol, interval });
734
+ },
735
+ onLoaded: (symbol, interval, count) => {
736
+ this._bus.emit('dataLoaded', { symbol, interval, count });
737
+ this._bus.emit('barsUpdated', { count });
738
+ },
739
+ onError: (symbol, interval, error) => {
740
+ this._bus.emit('dataError', { symbol, interval, error });
741
+ },
742
+ onUpdate: (_bar) => {
743
+ this._bus.emit('barsUpdated', { count: this._series.data().length });
744
+ },
745
+ });
746
+ }
747
+ }
748
+ // ─── Module helpers ───────────────────────────────────────────────────────────
749
+ function _indicatorTypeLabel(type) {
750
+ switch (type) {
751
+ case 'rsi': return 'RSI';
752
+ case 'macd': return 'MACD';
753
+ case 'volume': return 'Volume';
754
+ case 'sma': return 'SMA';
755
+ case 'ema': return 'EMA';
756
+ case 'wma': return 'WMA';
757
+ case 'bbands': return 'BB';
758
+ case 'stochastic': return 'Stoch';
759
+ case 'atr': return 'ATR';
760
+ case 'obv': return 'OBV';
761
+ case 'script': return 'Script';
762
+ default: return type;
763
+ }
764
+ }
765
+ //# sourceMappingURL=TChart.js.map