@forgecharts/sdk 1.1.27 → 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 (581) 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} +1 -10
  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/{src/react/index.ts → dist/react/index.js} +1 -24
  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/{src/react/internal.ts → dist/react/internal.js} +1 -19
  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 +5 -1
  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/react/canvas/ChartCanvas.tsx +0 -984
  539. package/src/react/canvas/ChartContextMenu.tsx +0 -60
  540. package/src/react/canvas/ChartSettingsDialog.tsx +0 -133
  541. package/src/react/canvas/IndicatorLabel.tsx +0 -347
  542. package/src/react/canvas/IndicatorPane.tsx +0 -503
  543. package/src/react/canvas/PointerOverlay.tsx +0 -126
  544. package/src/react/canvas/toolbars/LeftToolbar.tsx +0 -1096
  545. package/src/react/hooks/useChartCapabilities.ts +0 -76
  546. package/src/react/shell/ManagedAppShell.tsx +0 -699
  547. package/src/react/trading/TradingBridge.ts +0 -156
  548. package/src/react/workspace/ChartWorkspace.tsx +0 -228
  549. package/src/react/workspace/FloatingPanel.tsx +0 -131
  550. package/src/react/workspace/IndicatorsDialog.tsx +0 -246
  551. package/src/react/workspace/LayoutMenu.tsx +0 -345
  552. package/src/react/workspace/SymbolSearchDialog.tsx +0 -377
  553. package/src/react/workspace/TabBar.tsx +0 -87
  554. package/src/react/workspace/toolbars/BottomToolbar.tsx +0 -372
  555. package/src/react/workspace/toolbars/RightToolbar.tsx +0 -46
  556. package/src/react/workspace/toolbars/TopToolbar.tsx +0 -431
  557. package/src/renderers/CandlestickRenderer.ts +0 -130
  558. package/src/renderers/HistogramRenderer.ts +0 -63
  559. package/src/renderers/LineRenderer.ts +0 -77
  560. package/src/theme/colors.ts +0 -21
  561. package/src/tools/barDivergenceCheck.ts +0 -305
  562. package/src/trading/TradingOverlayStore.ts +0 -161
  563. package/src/trading/UnmanagedIngestion.ts +0 -156
  564. package/src/trading/__tests__/ManagedTradingController.test.ts +0 -338
  565. package/src/trading/__tests__/TradingOverlayStore.test.ts +0 -323
  566. package/src/trading/__tests__/UnmanagedIngestion.test.ts +0 -205
  567. package/src/trading/managed/ManagedTradingController.ts +0 -292
  568. package/src/trading/managed/managedCapabilities.ts +0 -98
  569. package/src/trading/managed/managedTypes.ts +0 -151
  570. package/src/trading/tradingTypes.ts +0 -135
  571. package/src/tscript/TScriptIndicator.ts +0 -54
  572. package/src/tscript/ast.ts +0 -105
  573. package/src/tscript/lexer.ts +0 -190
  574. package/src/tscript/parser.ts +0 -334
  575. package/src/tscript/runtime.ts +0 -525
  576. package/src/tscript/series.ts +0 -84
  577. package/src/types/IChart.ts +0 -56
  578. package/src/types/ISeries.ts +0 -30
  579. package/tsconfig.json +0 -23
  580. package/tsup.config.ts +0 -16
  581. package/vitest.config.ts +0 -25
@@ -0,0 +1,475 @@
1
+ /**
2
+ * TScript Runtime — tree-walking interpreter.
3
+ *
4
+ * Execution model
5
+ * ───────────────
6
+ * A TScript program is executed once per compiled bar in left-to-right,
7
+ * top-to-bottom statement order. The runtime keeps a persistent `Scope`
8
+ * so that `Series` variables accumulate history across bars.
9
+ *
10
+ * Built-in series (available in every script):
11
+ * open, high, low, close, volume, hl2, hlc3, ohlc4, bar_index
12
+ *
13
+ * Built-in TA functions:
14
+ * sma(src, length) — simple moving average
15
+ * ema(src, length) — exponential moving average
16
+ * wma(src, length) — weighted moving average
17
+ * rma(src, length) — Wilder's (RMA) moving average
18
+ * stdev(src, length) — rolling standard deviation
19
+ * highest(src, n) — rolling max over n bars
20
+ * lowest(src, n) — rolling min over n bars
21
+ * change(src, n?) — src - src[n] (default n=1)
22
+ * mom(src, length) — momentum = change(src, length)
23
+ * atr(length) — Average True Range
24
+ * crossover(a, b) — a crosses above b
25
+ * crossunder(a, b) — a crosses below b
26
+ * nz(x, y?) — replace NaN with y (default 0)
27
+ * na(x) — true if x is NaN
28
+ * abs(x) — Math.abs
29
+ * max(...) — Math.max over args
30
+ * min(...) — Math.min over args
31
+ * round(x) — Math.round
32
+ * floor(x) — Math.floor
33
+ * ceil(x) — Math.ceil
34
+ * sqrt(x) — Math.sqrt
35
+ * log(x) — Math.log
36
+ * pow(x, y) — Math.pow
37
+ * sign(x) — Math.sign
38
+ *
39
+ * Built-in utility functions:
40
+ * input(default, ...) — returns the default value (params resolved externally)
41
+ * plot(value, ...) — records a value for the current bar
42
+ * barssince(cond) — bars since condition was true
43
+ */
44
+ import { Series } from './series';
45
+ import { Parser } from './parser';
46
+ // ─── Scope helpers ────────────────────────────────────────────────────────────
47
+ function _num(v, ctx) {
48
+ if (v instanceof Series)
49
+ return v.value;
50
+ if (typeof v === 'number')
51
+ return v;
52
+ if (typeof v === 'boolean')
53
+ return v ? 1 : 0;
54
+ throw new TypeError(`[TScript] ${ctx}: expected number, got ${typeof v}`);
55
+ }
56
+ function _bool(v) {
57
+ if (v instanceof Series)
58
+ return !isNaN(v.value) && v.value !== 0;
59
+ if (typeof v === 'number')
60
+ return !isNaN(v) && v !== 0;
61
+ if (typeof v === 'boolean')
62
+ return v;
63
+ return Boolean(v);
64
+ }
65
+ // ─── TScriptRuntime ───────────────────────────────────────────────────────────
66
+ export class TScriptRuntime {
67
+ _program;
68
+ _scope = new Map();
69
+ _plotSeries = []; // one entry per plot() call order
70
+ // Public metadata set by indicator() declaration
71
+ title = 'Script';
72
+ constructor(src) {
73
+ this._program = new Parser(src).parse();
74
+ // Extract title from first IndicatorDecl if present
75
+ for (const stmt of this._program.stmts) {
76
+ if (stmt.kind === 'IndicatorDecl') {
77
+ this.title = stmt.title;
78
+ break;
79
+ }
80
+ }
81
+ }
82
+ /**
83
+ * Execute one bar.
84
+ *
85
+ * Call this in chronological order for every OHLCV bar.
86
+ * The runtime updates all built-in series with the bar's OHLCV values,
87
+ * then re-executes the full program body.
88
+ *
89
+ * @returns the current values of all `plot()` series after this bar.
90
+ */
91
+ execBar(bar, barIndex) {
92
+ // ── Push OHLCV values into built-in series ────────────────────────────────
93
+ this._pushBuiltin('open', bar.open);
94
+ this._pushBuiltin('high', bar.high);
95
+ this._pushBuiltin('low', bar.low);
96
+ this._pushBuiltin('close', bar.close);
97
+ this._pushBuiltin('volume', bar.volume);
98
+ this._pushBuiltin('hl2', (bar.high + bar.low) / 2);
99
+ this._pushBuiltin('hlc3', (bar.high + bar.low + bar.close) / 3);
100
+ this._pushBuiltin('ohlc4', (bar.open + bar.high + bar.low + bar.close) / 4);
101
+ this._pushBuiltin('bar_index', barIndex);
102
+ // ── Reset per-bar plot accumulators ───────────────────────────────────────
103
+ this._plotIdx = 0;
104
+ // ── Execute all statements (skipping IndicatorDecl) ──────────────────────
105
+ for (const stmt of this._program.stmts) {
106
+ this._execStmt(stmt);
107
+ }
108
+ }
109
+ /**
110
+ * Run the full bar history and return IndicatorPoint arrays indexed by
111
+ * plot() call order.
112
+ *
113
+ * @param bars chronologically ordered OHLCV array
114
+ */
115
+ run(bars) {
116
+ this.reset();
117
+ for (let i = 0; i < bars.length; i++) {
118
+ this.execBar(bars[i], i);
119
+ }
120
+ return this.getPlots(bars);
121
+ }
122
+ /**
123
+ * Snapshot the current plot series as IndicatorPoint arrays.
124
+ * Must be called after `run()` or after the last `execBar()`.
125
+ * @param bars the same bar array passed to run() — used for timestamps.
126
+ */
127
+ getPlots(bars) {
128
+ return this._plotSeries.map((series) => {
129
+ const values = series.toArray(); // oldest→newest
130
+ const offset = bars.length - values.length;
131
+ return values
132
+ .map((value, i) => ({
133
+ time: bars[offset + i].time,
134
+ value,
135
+ }))
136
+ .filter((p) => !isNaN(p.value));
137
+ });
138
+ }
139
+ /** Reset all persistent series state (call on symbol/timeframe change). */
140
+ reset() {
141
+ for (const v of this._scope.values()) {
142
+ if (v instanceof Series)
143
+ v.reset();
144
+ }
145
+ for (const s of this._plotSeries)
146
+ s.reset();
147
+ this._plotIdx = 0;
148
+ }
149
+ // ─── Private: statement execution ───────────────────────────────────────────
150
+ _execStmt(stmt) {
151
+ switch (stmt.kind) {
152
+ case 'IndicatorDecl': break; // handled at construction
153
+ case 'AssignStmt':
154
+ this._execAssign(stmt);
155
+ break;
156
+ case 'ExprStmt':
157
+ this._evalExpr(stmt.expr);
158
+ break;
159
+ }
160
+ }
161
+ _execAssign(stmt) {
162
+ const rhs = this._evalExpr(stmt.value);
163
+ const existing = this._scope.get(stmt.name);
164
+ if (existing instanceof Series) {
165
+ // Persist a series variable: push the new value each bar
166
+ existing.push(_num(rhs, `assignment to '${stmt.name}'`));
167
+ }
168
+ else {
169
+ // First assignment: if RHS is a number, wrap in a Series for history
170
+ if (typeof rhs === 'number' || rhs instanceof Series) {
171
+ const series = new Series(1000);
172
+ series.push(rhs instanceof Series ? rhs.value : rhs);
173
+ this._scope.set(stmt.name, series);
174
+ }
175
+ else {
176
+ this._scope.set(stmt.name, rhs);
177
+ }
178
+ }
179
+ }
180
+ // ─── Private: expression evaluation ─────────────────────────────────────────
181
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
182
+ _evalExpr(expr) {
183
+ switch (expr.kind) {
184
+ case 'NumberLit': return expr.value;
185
+ case 'StringLit': return expr.value;
186
+ case 'BoolLit': return expr.value;
187
+ case 'Identifier': return this._evalIdent(expr);
188
+ case 'IndexExpr': return this._evalIndex(expr);
189
+ case 'CallExpr': return this._evalCall(expr);
190
+ case 'BinaryExpr': return this._evalBinary(expr);
191
+ case 'UnaryExpr': return this._evalUnary(expr);
192
+ case 'TernaryExpr': return this._evalTernary(expr);
193
+ case 'LogicalExpr': return this._evalLogical(expr);
194
+ }
195
+ }
196
+ _evalIdent(expr) {
197
+ const v = this._scope.get(expr.name);
198
+ if (v === undefined) {
199
+ throw new ReferenceError(`[TScript] Undefined variable '${expr.name}'`);
200
+ }
201
+ // Return the Series itself; callers use _num() to coerce if needed.
202
+ return v;
203
+ }
204
+ _evalIndex(expr) {
205
+ const series = this._evalExpr(expr.series);
206
+ const idx = _num(this._evalExpr(expr.index), 'series index');
207
+ if (!(series instanceof Series)) {
208
+ throw new TypeError('[TScript] Index operator [] can only be applied to a series');
209
+ }
210
+ return series.get(Math.round(idx));
211
+ }
212
+ _evalBinary(expr) {
213
+ const l = _num(this._evalExpr(expr.left), `left of '${expr.op}'`);
214
+ const r = _num(this._evalExpr(expr.right), `right of '${expr.op}'`);
215
+ switch (expr.op) {
216
+ case '+': return l + r;
217
+ case '-': return l - r;
218
+ case '*': return l * r;
219
+ case '/': return r === 0 ? NaN : l / r;
220
+ case '%': return l % r;
221
+ case '<': return l < r;
222
+ case '>': return l > r;
223
+ case '<=': return l <= r;
224
+ case '>=': return l >= r;
225
+ case '==': return l === r;
226
+ case '!=': return l !== r;
227
+ }
228
+ }
229
+ _evalUnary(expr) {
230
+ if (expr.op === 'not')
231
+ return !_bool(this._evalExpr(expr.operand));
232
+ return -_num(this._evalExpr(expr.operand), 'unary -');
233
+ }
234
+ _evalTernary(expr) {
235
+ return _bool(this._evalExpr(expr.condition))
236
+ ? this._evalExpr(expr.consequent)
237
+ : this._evalExpr(expr.alternate);
238
+ }
239
+ _evalLogical(expr) {
240
+ const l = _bool(this._evalExpr(expr.left));
241
+ if (expr.op === 'and')
242
+ return l ? _bool(this._evalExpr(expr.right)) : false;
243
+ return l ? true : _bool(this._evalExpr(expr.right));
244
+ }
245
+ // ─── Built-in function dispatch ──────────────────────────────────────────────
246
+ _plotIdx = 0;
247
+ _evalCall(expr) {
248
+ const fn = expr.callee;
249
+ const args = expr.args;
250
+ switch (fn) {
251
+ // ── Utility ────────────────────────────────────────────────────────────
252
+ case 'input': {
253
+ // input(default) — return default value; full param resolution is external
254
+ if (args.length === 0)
255
+ return 0;
256
+ const def = this._evalExpr(args[0]);
257
+ return typeof def === 'string' ? parseFloat(def) || 0 : _num(def, 'input()');
258
+ }
259
+ case 'plot': {
260
+ const value = _num(this._evalExpr(args[0]), 'plot()');
261
+ const idx = this._plotIdx++;
262
+ if (idx >= this._plotSeries.length) {
263
+ this._plotSeries.push(new Series(1000));
264
+ }
265
+ this._plotSeries[idx].push(value);
266
+ return value;
267
+ }
268
+ case 'na': {
269
+ if (args.length > 0) {
270
+ const v = this._evalExpr(args[0]);
271
+ return typeof v === 'number' ? isNaN(v) : v instanceof Series ? isNaN(v.value) : false;
272
+ }
273
+ return NaN;
274
+ }
275
+ case 'nz': {
276
+ const v = _num(this._evalExpr(args[0]), 'nz()');
277
+ const fallback = args.length > 1 ? _num(this._evalExpr(args[1]), 'nz() fallback') : 0;
278
+ return isNaN(v) ? fallback : v;
279
+ }
280
+ case 'abs': return Math.abs(_num(this._evalExpr(args[0]), 'abs()'));
281
+ case 'round': return Math.round(_num(this._evalExpr(args[0]), 'round()'));
282
+ case 'floor': return Math.floor(_num(this._evalExpr(args[0]), 'floor()'));
283
+ case 'ceil': return Math.ceil(_num(this._evalExpr(args[0]), 'ceil()'));
284
+ case 'sqrt': return Math.sqrt(_num(this._evalExpr(args[0]), 'sqrt()'));
285
+ case 'log': return Math.log(_num(this._evalExpr(args[0]), 'log()'));
286
+ case 'sign': return Math.sign(_num(this._evalExpr(args[0]), 'sign()'));
287
+ case 'pow': {
288
+ const base = _num(this._evalExpr(args[0]), 'pow() base');
289
+ const exp = _num(this._evalExpr(args[1]), 'pow() exponent');
290
+ return Math.pow(base, exp);
291
+ }
292
+ case 'max': return Math.max(...args.map((a) => _num(this._evalExpr(a), 'max()')));
293
+ case 'min': return Math.min(...args.map((a) => _num(this._evalExpr(a), 'min()')));
294
+ // ── TA functions ────────────────────────────────────────────────────────
295
+ case 'sma': return this._ta_sma(args);
296
+ case 'ema': return this._ta_ema(args);
297
+ case 'wma': return this._ta_wma(args);
298
+ case 'rma': return this._ta_rma(args);
299
+ case 'stdev': return this._ta_stdev(args);
300
+ case 'highest': return this._ta_rolling(args, Math.max);
301
+ case 'lowest': return this._ta_rolling(args, Math.min);
302
+ case 'change': return this._ta_change(args);
303
+ case 'mom': return this._ta_change(args);
304
+ case 'atr': return this._ta_atr(args);
305
+ case 'crossover': return this._ta_crossover(args);
306
+ case 'crossunder': return this._ta_crossunder(args);
307
+ case 'barssince': return this._ta_barssince(args);
308
+ default:
309
+ throw new ReferenceError(`[TScript] Unknown function '${fn}'`);
310
+ }
311
+ }
312
+ // ─── TA helpers ──────────────────────────────────────────────────────────────
313
+ /** Resolve a call argument as a Series (wrapping scalar if needed). */
314
+ _argSeries(arg, ctx) {
315
+ const v = this._evalExpr(arg);
316
+ if (v instanceof Series)
317
+ return v;
318
+ if (typeof v === 'number') {
319
+ // Inline scalar: treat as a constant series with only the current value
320
+ const s = new Series(2);
321
+ s.push(v);
322
+ return s;
323
+ }
324
+ throw new TypeError(`[TScript] ${ctx}: expected a series`);
325
+ }
326
+ _argInt(arg, ctx) {
327
+ return Math.round(_num(this._evalExpr(arg), ctx));
328
+ }
329
+ _ta_sma(args) {
330
+ const src = this._argSeries(args[0], 'sma(src)');
331
+ const period = this._argInt(args[1], 'sma(length)');
332
+ if (src.length < period)
333
+ return NaN;
334
+ let sum = 0;
335
+ for (let i = 0; i < period; i++)
336
+ sum += src.get(i);
337
+ return sum / period;
338
+ }
339
+ _ta_ema(args) {
340
+ const src = this._argSeries(args[0], 'ema(src)');
341
+ const period = this._argInt(args[1], 'ema(length)');
342
+ if (src.length < period)
343
+ return NaN;
344
+ // Persistent EMA state: store the last EMA value in a named internal Series
345
+ const stateKey = `__ema_${args[0].kind}_${period}`;
346
+ let prevEMA = this._getInternalNum(stateKey);
347
+ const k = 2 / (period + 1);
348
+ const cur = src.get(0);
349
+ const newEMA = isNaN(prevEMA)
350
+ ? this._smaOfSeries(src, period) // seed with SMA on first valid bar
351
+ : cur * k + prevEMA * (1 - k);
352
+ this._setInternal(stateKey, newEMA);
353
+ return newEMA;
354
+ }
355
+ _ta_wma(args) {
356
+ const src = this._argSeries(args[0], 'wma(src)');
357
+ const period = this._argInt(args[1], 'wma(length)');
358
+ if (src.length < period)
359
+ return NaN;
360
+ const denom = (period * (period + 1)) / 2;
361
+ let sum = 0;
362
+ for (let i = 0; i < period; i++)
363
+ sum += src.get(i) * (period - i);
364
+ return sum / denom;
365
+ }
366
+ _ta_rma(args) {
367
+ // Wilder's RMA: alpha = 1/period
368
+ const src = this._argSeries(args[0], 'rma(src)');
369
+ const period = this._argInt(args[1], 'rma(length)');
370
+ if (src.length < period)
371
+ return NaN;
372
+ const stateKey = `__rma_${args[0].kind}_${period}`;
373
+ let prev = this._getInternalNum(stateKey);
374
+ const alpha = 1 / period;
375
+ const cur = src.get(0);
376
+ const result = isNaN(prev) ? this._smaOfSeries(src, period) : alpha * cur + (1 - alpha) * prev;
377
+ this._setInternal(stateKey, result);
378
+ return result;
379
+ }
380
+ _ta_stdev(args) {
381
+ const src = this._argSeries(args[0], 'stdev(src)');
382
+ const period = this._argInt(args[1], 'stdev(length)');
383
+ if (src.length < period)
384
+ return NaN;
385
+ const mean = this._smaOfSeries(src, period);
386
+ let variance = 0;
387
+ for (let i = 0; i < period; i++) {
388
+ const diff = src.get(i) - mean;
389
+ variance += diff * diff;
390
+ }
391
+ return Math.sqrt(variance / period);
392
+ }
393
+ _ta_rolling(args, fn) {
394
+ const src = this._argSeries(args[0], 'highest/lowest(src)');
395
+ const period = this._argInt(args[1], 'highest/lowest(length)');
396
+ if (src.length < period)
397
+ return NaN;
398
+ let result = src.get(0);
399
+ for (let i = 1; i < period; i++)
400
+ result = fn(result, src.get(i));
401
+ return result;
402
+ }
403
+ _ta_change(args) {
404
+ const src = this._argSeries(args[0], 'change(src)');
405
+ const period = args.length > 1 ? this._argInt(args[1], 'change(length)') : 1;
406
+ if (src.length <= period)
407
+ return NaN;
408
+ return src.get(0) - src.get(period);
409
+ }
410
+ _ta_atr(args) {
411
+ const period = this._argInt(args[0], 'atr(length)');
412
+ const high = this._scope.get('high');
413
+ const low = this._scope.get('low');
414
+ const close = this._scope.get('close');
415
+ if (!(high instanceof Series) || !(low instanceof Series) || !(close instanceof Series)) {
416
+ return NaN;
417
+ }
418
+ if (high.length < 2)
419
+ return NaN;
420
+ const h = high.get(0);
421
+ const l = low.get(0);
422
+ const pc = close.get(1); // previous close
423
+ const tr = Math.max(h - l, Math.abs(h - pc), Math.abs(l - pc));
424
+ const stateKey = `__atr_${period}`;
425
+ let prev = this._getInternalNum(stateKey);
426
+ const alpha = 1 / period;
427
+ const result = isNaN(prev) ? tr : alpha * tr + (1 - alpha) * prev;
428
+ this._setInternal(stateKey, result);
429
+ return result;
430
+ }
431
+ _ta_crossover(args) {
432
+ const a = this._argSeries(args[0], 'crossover(a)');
433
+ const b = this._argSeries(args[1], 'crossover(b)');
434
+ return a.get(0) > b.get(0) && a.get(1) <= b.get(1);
435
+ }
436
+ _ta_crossunder(args) {
437
+ const a = this._argSeries(args[0], 'crossunder(a)');
438
+ const b = this._argSeries(args[1], 'crossunder(b)');
439
+ return a.get(0) < b.get(0) && a.get(1) >= b.get(1);
440
+ }
441
+ _ta_barssince(args) {
442
+ const cond = this._argSeries(args[0], 'barssince(cond)');
443
+ for (let i = 0; i < cond.length; i++) {
444
+ if (_bool(cond.get(i)))
445
+ return i;
446
+ }
447
+ return NaN;
448
+ }
449
+ // ─── Internal state helpers ──────────────────────────────────────────────────
450
+ /** Persistent scalar state for stateful TA functions (EMA, RMA, ATR). */
451
+ _internalState = new Map();
452
+ _getInternalNum(key) {
453
+ return this._internalState.get(key) ?? NaN;
454
+ }
455
+ _setInternal(key, value) {
456
+ this._internalState.set(key, value);
457
+ }
458
+ /** Push a value into a named built-in Series, creating it if needed. */
459
+ _pushBuiltin(name, value) {
460
+ let series = this._scope.get(name);
461
+ if (!(series instanceof Series)) {
462
+ series = new Series(1000);
463
+ this._scope.set(name, series);
464
+ }
465
+ series.push(value);
466
+ }
467
+ /** Compute a simple rolling average directly from a Series (no state). */
468
+ _smaOfSeries(src, period) {
469
+ let sum = 0;
470
+ for (let i = 0; i < period; i++)
471
+ sum += src.get(i);
472
+ return sum / period;
473
+ }
474
+ }
475
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/tscript/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AA0BlC,iFAAiF;AAEjF,SAAS,IAAI,CAAC,CAAS,EAAE,GAAW;IAClC,IAAI,CAAC,YAAY,MAAM;QAAI,OAAO,CAAC,CAAC,KAAK,CAAC;IAC1C,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,IAAI,SAAS,CAAC,aAAa,GAAG,0BAA0B,OAAO,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,KAAK,CAAC,CAAS;IACtB,IAAI,CAAC,YAAY,MAAM;QAAK,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,iFAAiF;AAEjF,MAAM,OAAO,cAAc;IACR,QAAQ,CAAa;IACrB,MAAM,GAAmB,IAAI,GAAG,EAAE,CAAC;IACnC,WAAW,GAAc,EAAE,CAAC,CAAE,kCAAkC;IAEjF,iDAAiD;IACjD,KAAK,GAAW,QAAQ,CAAC;IAEzB,YAAY,GAAW;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QAExC,oDAAoD;QACpD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACxB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,GAAU,EAAE,QAAgB;QAClC,6EAA6E;QAC7E,IAAI,CAAC,YAAY,CAAC,MAAM,EAAQ,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,MAAM,EAAQ,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,KAAK,EAAS,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAO,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAM,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,KAAK,EAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,CAAC,MAAM,EAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,YAAY,CAAC,WAAW,EAAG,QAAQ,CAAC,CAAC;QAE1C,6EAA6E;QAC7E,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAElB,4EAA4E;QAC5E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,IAAsB;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,IAAsB;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,gBAAgB;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3C,OAAO,MAAM;iBACV,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClB,IAAI,EAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI;gBAC7B,KAAK;aACN,CAAC,CAAC;iBACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,KAAK;QACH,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,YAAY,MAAM;gBAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACrC,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW;YAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,+EAA+E;IAEvE,SAAS,CAAC,IAAU;QAC1B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,eAAe,CAAC,CAAC,MAAM,CAAC,0BAA0B;YACvD,KAAK,YAAY;gBAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM;YACpD,KAAK,UAAU;gBAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM;QACzD,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,IAAgB;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,QAAQ,YAAY,MAAM,EAAE,CAAC;YAC/B,yDAAyD;YACzD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,qEAAqE;YACrE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,MAAM,EAAE,CAAC;gBACrD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAE/E,8DAA8D;IACtD,SAAS,CAAC,IAAU;QAC1B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,WAAW,CAAC,CAAE,OAAQ,IAAkB,CAAC,KAAK,CAAC;YACpD,KAAK,WAAW,CAAC,CAAE,OAAQ,IAAkB,CAAC,KAAK,CAAC;YACpD,KAAK,SAAS,CAAC,CAAI,OAAQ,IAAgB,CAAC,KAAK,CAAC;YAClD,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAkB,CAAC,CAAC;YAC9D,KAAK,WAAW,CAAC,CAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAiB,CAAC,CAAC;YAC7D,KAAK,UAAU,CAAC,CAAG,OAAO,IAAI,CAAC,SAAS,CAAC,IAAgB,CAAC,CAAC;YAC3D,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAkB,CAAC,CAAC;YAC/D,KAAK,WAAW,CAAC,CAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAiB,CAAC,CAAC;YAC7D,KAAK,aAAa,CAAC,CAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAmB,CAAC,CAAC;YACjE,KAAK,aAAa,CAAC,CAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAmB,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,IAAgB;QACjC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,cAAc,CAAC,iCAAiC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1E,CAAC;QACD,oEAAoE;QACpE,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,UAAU,CAAC,IAAe;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;QAChE,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,SAAS,CAAC,6DAA6D,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;IAEO,WAAW,CAAC,IAAgB;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAG,YAAY,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACnE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACpE,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;YAChB,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvB,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvB,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvB,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACvC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvB,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvB,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvB,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzB,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzB,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,IAAe;QAChC,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAEO,YAAY,CAAC,IAAiB;QACpC,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAEO,YAAY,CAAC,IAAiB;QACpC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5E,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,gFAAgF;IAExE,QAAQ,GAAG,CAAC,CAAC;IAEb,SAAS,CAAC,IAAc;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvB,QAAQ,EAAE,EAAE,CAAC;YACX,0EAA0E;YAC1E,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,2EAA2E;gBAC3E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,CAAC,CAAC;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;gBACrC,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC/E,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACvD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC5B,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;oBACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnC,OAAO,KAAK,CAAC;YACf,CAAC;YAED,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;oBACnC,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACzF,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC;YAED,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,MAAM,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvF,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC;YAED,KAAK,KAAK,CAAC,CAAG,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YACvE,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YAC3E,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YAC3E,KAAK,MAAM,CAAC,CAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YACzE,KAAK,MAAM,CAAC,CAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YACzE,KAAK,KAAK,CAAC,CAAG,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YACvE,KAAK,MAAM,CAAC,CAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YACzE,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC1D,MAAM,GAAG,GAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;gBAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7B,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAClF,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAElF,2EAA2E;YAC3E,KAAK,KAAK,CAAC,CAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,KAAK,CAAC,CAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,KAAK,CAAC,CAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,KAAK,CAAC,CAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,OAAO,CAAC,CAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3C,KAAK,SAAS,CAAC,CAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACvD,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACvD,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5C,KAAK,KAAK,CAAC,CAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5C,KAAK,KAAK,CAAC,CAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,WAAW,CAAC,CAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACnD,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACpD,KAAK,WAAW,CAAC,CAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAEnD;gBACE,MAAM,IAAI,cAAc,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,gFAAgF;IAEhF,uEAAuE;IAC/D,UAAU,CAAC,GAAS,EAAE,GAAW;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,MAAM;YAAE,OAAO,CAAC,CAAC;QAClC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,wEAAwE;YACxE,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACV,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,aAAa,GAAG,qBAAqB,CAAC,CAAC;IAC7D,CAAC;IAEO,OAAO,CAAC,GAAS,EAAE,GAAW;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IAEO,OAAO,CAAC,IAAY;QAC1B,MAAM,GAAG,GAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,aAAa,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM;YAAE,OAAO,GAAG,CAAC;QACpC,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,GAAG,GAAG,MAAM,CAAC;IACtB,CAAC;IAEO,OAAO,CAAC,IAAY;QAC1B,MAAM,GAAG,GAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,aAAa,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM;YAAE,OAAO,GAAG,CAAC;QACpC,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,SAAS,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;QACpD,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAI,mCAAmC;YACvE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,OAAO,CAAC,IAAY;QAC1B,MAAM,GAAG,GAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,aAAa,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM;YAAE,OAAO,GAAG,CAAC;QACpC,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClE,OAAO,GAAG,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,OAAO,CAAC,IAAY;QAC1B,iCAAiC;QACjC,MAAM,GAAG,GAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,aAAa,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM;YAAE,OAAO,GAAG,CAAC;QACpC,MAAM,QAAQ,GAAG,SAAS,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;QACpD,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;QAC/F,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,SAAS,CAAC,IAAY;QAC5B,MAAM,GAAG,GAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,YAAY,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,eAAe,CAAC,CAAC;QACvD,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM;YAAE,OAAO,GAAG,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC/B,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,WAAW,CAAC,IAAY,EAAE,EAA8B;QAC9D,MAAM,GAAG,GAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,qBAAqB,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,wBAAwB,CAAC,CAAC;QAChE,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM;YAAE,OAAO,GAAG,CAAC;QACpC,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;YAAE,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,UAAU,CAAC,IAAY;QAC7B,MAAM,GAAG,GAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,aAAa,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM;YAAE,OAAO,GAAG,CAAC;QACrC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,OAAO,CAAC,IAAY;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,aAAa,CAAC,CAAC;QACrD,MAAM,IAAI,GAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,GAAG,GAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,KAAK,GAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC,IAAI,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC,EAAE,CAAC;YACxF,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;QAChC,MAAM,CAAC,GAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,GAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;QAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,SAAS,MAAM,EAAE,CAAC;QACnC,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;QAClE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,aAAa,CAAC,IAAY;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,cAAc,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,cAAc,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAEO,cAAc,CAAC,IAAY;QACjC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,eAAe,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,eAAe,CAAC,CAAC;QACrD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAEO,aAAa,CAAC,IAAY;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,iBAAiB,CAAC,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gFAAgF;IAEhF,yEAAyE;IACxD,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEpD,eAAe,CAAC,GAAW;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IAC7C,CAAC;IAEO,YAAY,CAAC,GAAW,EAAE,KAAa;QAC7C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,wEAAwE;IAChE,YAAY,CAAC,IAAY,EAAE,KAAa;QAC9C,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,0EAA0E;IAClE,YAAY,CAAC,GAAW,EAAE,MAAc;QAC9C,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,GAAG,GAAG,MAAM,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * TScript Series — fixed-capacity ring buffer for historical bar data.
3
+ *
4
+ * Access pattern mirrors Pine Script:
5
+ * series.value — current (bar 0) value
6
+ * series.get(0) — same as .value
7
+ * series.get(1) — 1 bar ago
8
+ * series.get(n) — n bars ago (returns NaN if out of range)
9
+ *
10
+ * Internally the ring buffer stores the `capacity` most recent values in a
11
+ * circular array, so `.push()` is O(1) with no allocation after warm-up.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const s = new Series(500);
16
+ * s.push(1); s.push(2); s.push(3);
17
+ * s.get(0); // 3 (current)
18
+ * s.get(1); // 2 (one bar ago)
19
+ * s.get(2); // 1 (two bars ago)
20
+ * ```
21
+ */
22
+ export declare class Series {
23
+ private readonly _buf;
24
+ private readonly _cap;
25
+ private _head;
26
+ private _len;
27
+ constructor(capacity?: number);
28
+ /** Append a new value at the current bar position. */
29
+ push(value: number): void;
30
+ /**
31
+ * Retrieve a historical value.
32
+ * @param lookback 0 = current bar, 1 = previous bar, etc.
33
+ */
34
+ get(lookback: number): number;
35
+ /** Alias for get(0). */
36
+ get value(): number;
37
+ /** Number of values stored (up to capacity). */
38
+ get length(): number;
39
+ /** Ring-buffer capacity. */
40
+ get capacity(): number;
41
+ /**
42
+ * Snapshot: returns all stored values in chronological order
43
+ * (oldest first, newest last).
44
+ */
45
+ toArray(): number[];
46
+ /** Reset the buffer (e.g. on symbol change). */
47
+ reset(): void;
48
+ }
49
+ //# sourceMappingURL=series.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"series.d.ts","sourceRoot":"","sources":["../../src/tscript/series.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,IAAI,CAAc;gBAEd,QAAQ,SAAO;IAK3B,sDAAsD;IACtD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMzB;;;OAGG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAO7B,wBAAwB;IACxB,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,gDAAgD;IAChD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,4BAA4B;IAC5B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;OAGG;IACH,OAAO,IAAI,MAAM,EAAE;IAQnB,gDAAgD;IAChD,KAAK,IAAI,IAAI;CAKd"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * TScript Series — fixed-capacity ring buffer for historical bar data.
3
+ *
4
+ * Access pattern mirrors Pine Script:
5
+ * series.value — current (bar 0) value
6
+ * series.get(0) — same as .value
7
+ * series.get(1) — 1 bar ago
8
+ * series.get(n) — n bars ago (returns NaN if out of range)
9
+ *
10
+ * Internally the ring buffer stores the `capacity` most recent values in a
11
+ * circular array, so `.push()` is O(1) with no allocation after warm-up.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const s = new Series(500);
16
+ * s.push(1); s.push(2); s.push(3);
17
+ * s.get(0); // 3 (current)
18
+ * s.get(1); // 2 (one bar ago)
19
+ * s.get(2); // 1 (two bars ago)
20
+ * ```
21
+ */
22
+ export class Series {
23
+ _buf;
24
+ _cap;
25
+ _head = 0; // index of the NEXT write slot
26
+ _len = 0; // number of values stored so far
27
+ constructor(capacity = 1000) {
28
+ this._cap = capacity;
29
+ this._buf = new Float64Array(capacity).fill(NaN);
30
+ }
31
+ /** Append a new value at the current bar position. */
32
+ push(value) {
33
+ this._buf[this._head] = value;
34
+ this._head = (this._head + 1) % this._cap;
35
+ if (this._len < this._cap)
36
+ this._len++;
37
+ }
38
+ /**
39
+ * Retrieve a historical value.
40
+ * @param lookback 0 = current bar, 1 = previous bar, etc.
41
+ */
42
+ get(lookback) {
43
+ if (lookback < 0 || lookback >= this._len)
44
+ return NaN;
45
+ // Head points to NEXT slot, so current value is at head-1
46
+ const idx = (this._head - 1 - lookback + this._cap * 2) % this._cap;
47
+ return this._buf[idx];
48
+ }
49
+ /** Alias for get(0). */
50
+ get value() {
51
+ return this.get(0);
52
+ }
53
+ /** Number of values stored (up to capacity). */
54
+ get length() {
55
+ return this._len;
56
+ }
57
+ /** Ring-buffer capacity. */
58
+ get capacity() {
59
+ return this._cap;
60
+ }
61
+ /**
62
+ * Snapshot: returns all stored values in chronological order
63
+ * (oldest first, newest last).
64
+ */
65
+ toArray() {
66
+ const out = new Array(this._len);
67
+ for (let i = 0; i < this._len; i++) {
68
+ out[i] = this.get(this._len - 1 - i);
69
+ }
70
+ return out;
71
+ }
72
+ /** Reset the buffer (e.g. on symbol change). */
73
+ reset() {
74
+ this._buf.fill(NaN);
75
+ this._head = 0;
76
+ this._len = 0;
77
+ }
78
+ }
79
+ //# sourceMappingURL=series.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"series.js","sourceRoot":"","sources":["../../src/tscript/series.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,MAAM;IACA,IAAI,CAAe;IACnB,IAAI,CAAS;IACtB,KAAK,GAAW,CAAC,CAAC,CAAG,+BAA+B;IACpD,IAAI,GAAY,CAAC,CAAC,CAAG,iCAAiC;IAE9D,YAAY,QAAQ,GAAG,IAAI;QACzB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,sDAAsD;IACtD,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,QAAgB;QAClB,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,GAAG,CAAC;QACtD,0DAA0D;QAC1D,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC;IACzB,CAAC;IAED,wBAAwB;IACxB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,gDAAgD;IAChD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,4BAA4B;IAC5B,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,MAAM,GAAG,GAAa,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gDAAgD;IAChD,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAI,CAAC,CAAC;IACjB,CAAC;CACF"}