@invinite-org/chartlang-runtime 1.0.2

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 (984) hide show
  1. package/CHANGELOG.md +2690 -0
  2. package/LICENSE +21 -0
  3. package/README.md +57 -0
  4. package/dist/buildComputeContext.d.ts +21 -0
  5. package/dist/buildComputeContext.d.ts.map +1 -0
  6. package/dist/buildComputeContext.js +48 -0
  7. package/dist/buildComputeContext.js.map +1 -0
  8. package/dist/createScriptRunner.d.ts +111 -0
  9. package/dist/createScriptRunner.d.ts.map +1 -0
  10. package/dist/createScriptRunner.js +234 -0
  11. package/dist/createScriptRunner.js.map +1 -0
  12. package/dist/emit/alert.d.ts +46 -0
  13. package/dist/emit/alert.d.ts.map +1 -0
  14. package/dist/emit/alert.js +71 -0
  15. package/dist/emit/alert.js.map +1 -0
  16. package/dist/emit/alertConditionEmission.d.ts +15 -0
  17. package/dist/emit/alertConditionEmission.d.ts.map +1 -0
  18. package/dist/emit/alertConditionEmission.js +53 -0
  19. package/dist/emit/alertConditionEmission.js.map +1 -0
  20. package/dist/emit/draw/annotations/arrow.d.ts +42 -0
  21. package/dist/emit/draw/annotations/arrow.d.ts.map +1 -0
  22. package/dist/emit/draw/annotations/arrow.js +40 -0
  23. package/dist/emit/draw/annotations/arrow.js.map +1 -0
  24. package/dist/emit/draw/annotations/arrowMarkDown.d.ts +36 -0
  25. package/dist/emit/draw/annotations/arrowMarkDown.d.ts.map +1 -0
  26. package/dist/emit/draw/annotations/arrowMarkDown.js +40 -0
  27. package/dist/emit/draw/annotations/arrowMarkDown.js.map +1 -0
  28. package/dist/emit/draw/annotations/arrowMarkUp.d.ts +36 -0
  29. package/dist/emit/draw/annotations/arrowMarkUp.d.ts.map +1 -0
  30. package/dist/emit/draw/annotations/arrowMarkUp.js +40 -0
  31. package/dist/emit/draw/annotations/arrowMarkUp.js.map +1 -0
  32. package/dist/emit/draw/annotations/arrowMarker.d.ts +40 -0
  33. package/dist/emit/draw/annotations/arrowMarker.d.ts.map +1 -0
  34. package/dist/emit/draw/annotations/arrowMarker.js +40 -0
  35. package/dist/emit/draw/annotations/arrowMarker.js.map +1 -0
  36. package/dist/emit/draw/annotations/text.d.ts +41 -0
  37. package/dist/emit/draw/annotations/text.d.ts.map +1 -0
  38. package/dist/emit/draw/annotations/text.js +44 -0
  39. package/dist/emit/draw/annotations/text.js.map +1 -0
  40. package/dist/emit/draw/boxes/circle.d.ts +42 -0
  41. package/dist/emit/draw/boxes/circle.d.ts.map +1 -0
  42. package/dist/emit/draw/boxes/circle.js +44 -0
  43. package/dist/emit/draw/boxes/circle.js.map +1 -0
  44. package/dist/emit/draw/boxes/ellipse.d.ts +42 -0
  45. package/dist/emit/draw/boxes/ellipse.d.ts.map +1 -0
  46. package/dist/emit/draw/boxes/ellipse.js +40 -0
  47. package/dist/emit/draw/boxes/ellipse.js.map +1 -0
  48. package/dist/emit/draw/boxes/marker.d.ts +43 -0
  49. package/dist/emit/draw/boxes/marker.d.ts.map +1 -0
  50. package/dist/emit/draw/boxes/marker.js +49 -0
  51. package/dist/emit/draw/boxes/marker.js.map +1 -0
  52. package/dist/emit/draw/boxes/path.d.ts +43 -0
  53. package/dist/emit/draw/boxes/path.d.ts.map +1 -0
  54. package/dist/emit/draw/boxes/path.js +40 -0
  55. package/dist/emit/draw/boxes/path.js.map +1 -0
  56. package/dist/emit/draw/boxes/polyline.d.ts +43 -0
  57. package/dist/emit/draw/boxes/polyline.d.ts.map +1 -0
  58. package/dist/emit/draw/boxes/polyline.js +40 -0
  59. package/dist/emit/draw/boxes/polyline.js.map +1 -0
  60. package/dist/emit/draw/boxes/rectangle.d.ts +40 -0
  61. package/dist/emit/draw/boxes/rectangle.d.ts.map +1 -0
  62. package/dist/emit/draw/boxes/rectangle.js +40 -0
  63. package/dist/emit/draw/boxes/rectangle.js.map +1 -0
  64. package/dist/emit/draw/boxes/rotatedRectangle.d.ts +45 -0
  65. package/dist/emit/draw/boxes/rotatedRectangle.d.ts.map +1 -0
  66. package/dist/emit/draw/boxes/rotatedRectangle.js +40 -0
  67. package/dist/emit/draw/boxes/rotatedRectangle.js.map +1 -0
  68. package/dist/emit/draw/boxes/triangle.d.ts +42 -0
  69. package/dist/emit/draw/boxes/triangle.d.ts.map +1 -0
  70. package/dist/emit/draw/boxes/triangle.js +40 -0
  71. package/dist/emit/draw/boxes/triangle.js.map +1 -0
  72. package/dist/emit/draw/channels/disjointChannel.d.ts +43 -0
  73. package/dist/emit/draw/channels/disjointChannel.d.ts.map +1 -0
  74. package/dist/emit/draw/channels/disjointChannel.js +40 -0
  75. package/dist/emit/draw/channels/disjointChannel.js.map +1 -0
  76. package/dist/emit/draw/channels/flatTopBottom.d.ts +44 -0
  77. package/dist/emit/draw/channels/flatTopBottom.d.ts.map +1 -0
  78. package/dist/emit/draw/channels/flatTopBottom.js +40 -0
  79. package/dist/emit/draw/channels/flatTopBottom.js.map +1 -0
  80. package/dist/emit/draw/channels/regressionTrend.d.ts +49 -0
  81. package/dist/emit/draw/channels/regressionTrend.d.ts.map +1 -0
  82. package/dist/emit/draw/channels/regressionTrend.js +44 -0
  83. package/dist/emit/draw/channels/regressionTrend.js.map +1 -0
  84. package/dist/emit/draw/channels/trendChannel.d.ts +43 -0
  85. package/dist/emit/draw/channels/trendChannel.d.ts.map +1 -0
  86. package/dist/emit/draw/channels/trendChannel.js +40 -0
  87. package/dist/emit/draw/channels/trendChannel.js.map +1 -0
  88. package/dist/emit/draw/containers/frame.d.ts +42 -0
  89. package/dist/emit/draw/containers/frame.d.ts.map +1 -0
  90. package/dist/emit/draw/containers/frame.js +47 -0
  91. package/dist/emit/draw/containers/frame.js.map +1 -0
  92. package/dist/emit/draw/containers/group.d.ts +47 -0
  93. package/dist/emit/draw/containers/group.d.ts.map +1 -0
  94. package/dist/emit/draw/containers/group.js +44 -0
  95. package/dist/emit/draw/containers/group.js.map +1 -0
  96. package/dist/emit/draw/curves/arc.d.ts +44 -0
  97. package/dist/emit/draw/curves/arc.d.ts.map +1 -0
  98. package/dist/emit/draw/curves/arc.js +40 -0
  99. package/dist/emit/draw/curves/arc.js.map +1 -0
  100. package/dist/emit/draw/curves/brush.d.ts +44 -0
  101. package/dist/emit/draw/curves/brush.d.ts.map +1 -0
  102. package/dist/emit/draw/curves/brush.js +43 -0
  103. package/dist/emit/draw/curves/brush.js.map +1 -0
  104. package/dist/emit/draw/curves/curve.d.ts +43 -0
  105. package/dist/emit/draw/curves/curve.d.ts.map +1 -0
  106. package/dist/emit/draw/curves/curve.js +40 -0
  107. package/dist/emit/draw/curves/curve.js.map +1 -0
  108. package/dist/emit/draw/curves/doubleCurve.d.ts +46 -0
  109. package/dist/emit/draw/curves/doubleCurve.d.ts.map +1 -0
  110. package/dist/emit/draw/curves/doubleCurve.js +40 -0
  111. package/dist/emit/draw/curves/doubleCurve.js.map +1 -0
  112. package/dist/emit/draw/curves/highlighter.d.ts +43 -0
  113. package/dist/emit/draw/curves/highlighter.d.ts.map +1 -0
  114. package/dist/emit/draw/curves/highlighter.js +43 -0
  115. package/dist/emit/draw/curves/highlighter.js.map +1 -0
  116. package/dist/emit/draw/curves/pen.d.ts +41 -0
  117. package/dist/emit/draw/curves/pen.d.ts.map +1 -0
  118. package/dist/emit/draw/curves/pen.js +40 -0
  119. package/dist/emit/draw/curves/pen.js.map +1 -0
  120. package/dist/emit/draw/cycles/cyclicLines.d.ts +41 -0
  121. package/dist/emit/draw/cycles/cyclicLines.d.ts.map +1 -0
  122. package/dist/emit/draw/cycles/cyclicLines.js +44 -0
  123. package/dist/emit/draw/cycles/cyclicLines.js.map +1 -0
  124. package/dist/emit/draw/cycles/sineLine.d.ts +40 -0
  125. package/dist/emit/draw/cycles/sineLine.d.ts.map +1 -0
  126. package/dist/emit/draw/cycles/sineLine.js +44 -0
  127. package/dist/emit/draw/cycles/sineLine.js.map +1 -0
  128. package/dist/emit/draw/cycles/timeCycles.d.ts +40 -0
  129. package/dist/emit/draw/cycles/timeCycles.d.ts.map +1 -0
  130. package/dist/emit/draw/cycles/timeCycles.js +44 -0
  131. package/dist/emit/draw/cycles/timeCycles.js.map +1 -0
  132. package/dist/emit/draw/elliott/elliottCorrectionWave.d.ts +39 -0
  133. package/dist/emit/draw/elliott/elliottCorrectionWave.d.ts.map +1 -0
  134. package/dist/emit/draw/elliott/elliottCorrectionWave.js +43 -0
  135. package/dist/emit/draw/elliott/elliottCorrectionWave.js.map +1 -0
  136. package/dist/emit/draw/elliott/elliottDoubleCombo.d.ts +44 -0
  137. package/dist/emit/draw/elliott/elliottDoubleCombo.d.ts.map +1 -0
  138. package/dist/emit/draw/elliott/elliottDoubleCombo.js +43 -0
  139. package/dist/emit/draw/elliott/elliottDoubleCombo.js.map +1 -0
  140. package/dist/emit/draw/elliott/elliottImpulseWave.d.ts +42 -0
  141. package/dist/emit/draw/elliott/elliottImpulseWave.d.ts.map +1 -0
  142. package/dist/emit/draw/elliott/elliottImpulseWave.js +43 -0
  143. package/dist/emit/draw/elliott/elliottImpulseWave.js.map +1 -0
  144. package/dist/emit/draw/elliott/elliottTriangleWave.d.ts +41 -0
  145. package/dist/emit/draw/elliott/elliottTriangleWave.d.ts.map +1 -0
  146. package/dist/emit/draw/elliott/elliottTriangleWave.js +43 -0
  147. package/dist/emit/draw/elliott/elliottTriangleWave.js.map +1 -0
  148. package/dist/emit/draw/elliott/elliottTripleCombo.d.ts +44 -0
  149. package/dist/emit/draw/elliott/elliottTripleCombo.d.ts.map +1 -0
  150. package/dist/emit/draw/elliott/elliottTripleCombo.js +47 -0
  151. package/dist/emit/draw/elliott/elliottTripleCombo.js.map +1 -0
  152. package/dist/emit/draw/fibA/fibChannel.d.ts +41 -0
  153. package/dist/emit/draw/fibA/fibChannel.d.ts.map +1 -0
  154. package/dist/emit/draw/fibA/fibChannel.js +40 -0
  155. package/dist/emit/draw/fibA/fibChannel.js.map +1 -0
  156. package/dist/emit/draw/fibA/fibRetracement.d.ts +40 -0
  157. package/dist/emit/draw/fibA/fibRetracement.d.ts.map +1 -0
  158. package/dist/emit/draw/fibA/fibRetracement.js +44 -0
  159. package/dist/emit/draw/fibA/fibRetracement.js.map +1 -0
  160. package/dist/emit/draw/fibA/fibTimeZone.d.ts +41 -0
  161. package/dist/emit/draw/fibA/fibTimeZone.d.ts.map +1 -0
  162. package/dist/emit/draw/fibA/fibTimeZone.js +44 -0
  163. package/dist/emit/draw/fibA/fibTimeZone.js.map +1 -0
  164. package/dist/emit/draw/fibA/fibTrendExtension.d.ts +42 -0
  165. package/dist/emit/draw/fibA/fibTrendExtension.d.ts.map +1 -0
  166. package/dist/emit/draw/fibA/fibTrendExtension.js +44 -0
  167. package/dist/emit/draw/fibA/fibTrendExtension.js.map +1 -0
  168. package/dist/emit/draw/fibA/fibWedge.d.ts +42 -0
  169. package/dist/emit/draw/fibA/fibWedge.d.ts.map +1 -0
  170. package/dist/emit/draw/fibA/fibWedge.js +40 -0
  171. package/dist/emit/draw/fibA/fibWedge.js.map +1 -0
  172. package/dist/emit/draw/fibB/fibCircles.d.ts +41 -0
  173. package/dist/emit/draw/fibB/fibCircles.d.ts.map +1 -0
  174. package/dist/emit/draw/fibB/fibCircles.js +44 -0
  175. package/dist/emit/draw/fibB/fibCircles.js.map +1 -0
  176. package/dist/emit/draw/fibB/fibSpeedArcs.d.ts +39 -0
  177. package/dist/emit/draw/fibB/fibSpeedArcs.d.ts.map +1 -0
  178. package/dist/emit/draw/fibB/fibSpeedArcs.js +44 -0
  179. package/dist/emit/draw/fibB/fibSpeedArcs.js.map +1 -0
  180. package/dist/emit/draw/fibB/fibSpeedFan.d.ts +39 -0
  181. package/dist/emit/draw/fibB/fibSpeedFan.d.ts.map +1 -0
  182. package/dist/emit/draw/fibB/fibSpeedFan.js +44 -0
  183. package/dist/emit/draw/fibB/fibSpeedFan.js.map +1 -0
  184. package/dist/emit/draw/fibB/fibSpiral.d.ts +41 -0
  185. package/dist/emit/draw/fibB/fibSpiral.d.ts.map +1 -0
  186. package/dist/emit/draw/fibB/fibSpiral.js +44 -0
  187. package/dist/emit/draw/fibB/fibSpiral.js.map +1 -0
  188. package/dist/emit/draw/fibB/fibTrendTime.d.ts +45 -0
  189. package/dist/emit/draw/fibB/fibTrendTime.d.ts.map +1 -0
  190. package/dist/emit/draw/fibB/fibTrendTime.js +44 -0
  191. package/dist/emit/draw/fibB/fibTrendTime.js.map +1 -0
  192. package/dist/emit/draw/gann/gannBox.d.ts +39 -0
  193. package/dist/emit/draw/gann/gannBox.d.ts.map +1 -0
  194. package/dist/emit/draw/gann/gannBox.js +44 -0
  195. package/dist/emit/draw/gann/gannBox.js.map +1 -0
  196. package/dist/emit/draw/gann/gannFan.d.ts +39 -0
  197. package/dist/emit/draw/gann/gannFan.d.ts.map +1 -0
  198. package/dist/emit/draw/gann/gannFan.js +44 -0
  199. package/dist/emit/draw/gann/gannFan.js.map +1 -0
  200. package/dist/emit/draw/gann/gannSquare.d.ts +38 -0
  201. package/dist/emit/draw/gann/gannSquare.d.ts.map +1 -0
  202. package/dist/emit/draw/gann/gannSquare.js +44 -0
  203. package/dist/emit/draw/gann/gannSquare.js.map +1 -0
  204. package/dist/emit/draw/gann/gannSquareFixed.d.ts +35 -0
  205. package/dist/emit/draw/gann/gannSquareFixed.d.ts.map +1 -0
  206. package/dist/emit/draw/gann/gannSquareFixed.js +44 -0
  207. package/dist/emit/draw/gann/gannSquareFixed.js.map +1 -0
  208. package/dist/emit/draw/handle.d.ts +37 -0
  209. package/dist/emit/draw/handle.d.ts.map +1 -0
  210. package/dist/emit/draw/handle.js +118 -0
  211. package/dist/emit/draw/handle.js.map +1 -0
  212. package/dist/emit/draw/index.d.ts +5 -0
  213. package/dist/emit/draw/index.d.ts.map +1 -0
  214. package/dist/emit/draw/index.js +13 -0
  215. package/dist/emit/draw/index.js.map +1 -0
  216. package/dist/emit/draw/lines/crossLine.d.ts +37 -0
  217. package/dist/emit/draw/lines/crossLine.d.ts.map +1 -0
  218. package/dist/emit/draw/lines/crossLine.js +40 -0
  219. package/dist/emit/draw/lines/crossLine.js.map +1 -0
  220. package/dist/emit/draw/lines/horizontalLine.d.ts +33 -0
  221. package/dist/emit/draw/lines/horizontalLine.d.ts.map +1 -0
  222. package/dist/emit/draw/lines/horizontalLine.js +40 -0
  223. package/dist/emit/draw/lines/horizontalLine.js.map +1 -0
  224. package/dist/emit/draw/lines/horizontalRay.d.ts +36 -0
  225. package/dist/emit/draw/lines/horizontalRay.d.ts.map +1 -0
  226. package/dist/emit/draw/lines/horizontalRay.js +40 -0
  227. package/dist/emit/draw/lines/horizontalRay.js.map +1 -0
  228. package/dist/emit/draw/lines/line.d.ts +43 -0
  229. package/dist/emit/draw/lines/line.d.ts.map +1 -0
  230. package/dist/emit/draw/lines/line.js +43 -0
  231. package/dist/emit/draw/lines/line.js.map +1 -0
  232. package/dist/emit/draw/lines/trendAngle.d.ts +38 -0
  233. package/dist/emit/draw/lines/trendAngle.d.ts.map +1 -0
  234. package/dist/emit/draw/lines/trendAngle.js +40 -0
  235. package/dist/emit/draw/lines/trendAngle.js.map +1 -0
  236. package/dist/emit/draw/lines/verticalLine.d.ts +33 -0
  237. package/dist/emit/draw/lines/verticalLine.d.ts.map +1 -0
  238. package/dist/emit/draw/lines/verticalLine.js +40 -0
  239. package/dist/emit/draw/lines/verticalLine.js.map +1 -0
  240. package/dist/emit/draw/namespace.d.ts +26 -0
  241. package/dist/emit/draw/namespace.d.ts.map +1 -0
  242. package/dist/emit/draw/namespace.js +186 -0
  243. package/dist/emit/draw/namespace.js.map +1 -0
  244. package/dist/emit/draw/patterns/abcdPattern.d.ts +40 -0
  245. package/dist/emit/draw/patterns/abcdPattern.d.ts.map +1 -0
  246. package/dist/emit/draw/patterns/abcdPattern.js +40 -0
  247. package/dist/emit/draw/patterns/abcdPattern.js.map +1 -0
  248. package/dist/emit/draw/patterns/cypherPattern.d.ts +43 -0
  249. package/dist/emit/draw/patterns/cypherPattern.d.ts.map +1 -0
  250. package/dist/emit/draw/patterns/cypherPattern.js +41 -0
  251. package/dist/emit/draw/patterns/cypherPattern.js.map +1 -0
  252. package/dist/emit/draw/patterns/headAndShoulders.d.ts +42 -0
  253. package/dist/emit/draw/patterns/headAndShoulders.d.ts.map +1 -0
  254. package/dist/emit/draw/patterns/headAndShoulders.js +49 -0
  255. package/dist/emit/draw/patterns/headAndShoulders.js.map +1 -0
  256. package/dist/emit/draw/patterns/threeDrivesPattern.d.ts +43 -0
  257. package/dist/emit/draw/patterns/threeDrivesPattern.d.ts.map +1 -0
  258. package/dist/emit/draw/patterns/threeDrivesPattern.js +44 -0
  259. package/dist/emit/draw/patterns/threeDrivesPattern.js.map +1 -0
  260. package/dist/emit/draw/patterns/trianglePattern.d.ts +41 -0
  261. package/dist/emit/draw/patterns/trianglePattern.d.ts.map +1 -0
  262. package/dist/emit/draw/patterns/trianglePattern.js +50 -0
  263. package/dist/emit/draw/patterns/trianglePattern.js.map +1 -0
  264. package/dist/emit/draw/patterns/xabcdPattern.d.ts +41 -0
  265. package/dist/emit/draw/patterns/xabcdPattern.d.ts.map +1 -0
  266. package/dist/emit/draw/patterns/xabcdPattern.js +40 -0
  267. package/dist/emit/draw/patterns/xabcdPattern.js.map +1 -0
  268. package/dist/emit/draw/pitchforks/pitchfan.d.ts +39 -0
  269. package/dist/emit/draw/pitchforks/pitchfan.d.ts.map +1 -0
  270. package/dist/emit/draw/pitchforks/pitchfan.js +40 -0
  271. package/dist/emit/draw/pitchforks/pitchfan.js.map +1 -0
  272. package/dist/emit/draw/pitchforks/pitchfork.d.ts +51 -0
  273. package/dist/emit/draw/pitchforks/pitchfork.d.ts.map +1 -0
  274. package/dist/emit/draw/pitchforks/pitchfork.js +50 -0
  275. package/dist/emit/draw/pitchforks/pitchfork.js.map +1 -0
  276. package/dist/emit/draw/pushDrawing.d.ts +45 -0
  277. package/dist/emit/draw/pushDrawing.d.ts.map +1 -0
  278. package/dist/emit/draw/pushDrawing.js +107 -0
  279. package/dist/emit/draw/pushDrawing.js.map +1 -0
  280. package/dist/emit/draw/subIdAllocator.d.ts +34 -0
  281. package/dist/emit/draw/subIdAllocator.d.ts.map +1 -0
  282. package/dist/emit/draw/subIdAllocator.js +42 -0
  283. package/dist/emit/draw/subIdAllocator.js.map +1 -0
  284. package/dist/emit/draw/table/table.d.ts +39 -0
  285. package/dist/emit/draw/table/table.d.ts.map +1 -0
  286. package/dist/emit/draw/table/table.js +39 -0
  287. package/dist/emit/draw/table/table.js.map +1 -0
  288. package/dist/emit/emissionsQueue.d.ts +65 -0
  289. package/dist/emit/emissionsQueue.d.ts.map +1 -0
  290. package/dist/emit/emissionsQueue.js +140 -0
  291. package/dist/emit/emissionsQueue.js.map +1 -0
  292. package/dist/emit/hash.d.ts +13 -0
  293. package/dist/emit/hash.d.ts.map +1 -0
  294. package/dist/emit/hash.js +24 -0
  295. package/dist/emit/hash.js.map +1 -0
  296. package/dist/emit/hline.d.ts +42 -0
  297. package/dist/emit/hline.d.ts.map +1 -0
  298. package/dist/emit/hline.js +59 -0
  299. package/dist/emit/hline.js.map +1 -0
  300. package/dist/emit/index.d.ts +11 -0
  301. package/dist/emit/index.d.ts.map +1 -0
  302. package/dist/emit/index.js +13 -0
  303. package/dist/emit/index.js.map +1 -0
  304. package/dist/emit/logEmission.d.ts +25 -0
  305. package/dist/emit/logEmission.d.ts.map +1 -0
  306. package/dist/emit/logEmission.js +127 -0
  307. package/dist/emit/logEmission.js.map +1 -0
  308. package/dist/emit/paneResolver.d.ts +19 -0
  309. package/dist/emit/paneResolver.d.ts.map +1 -0
  310. package/dist/emit/paneResolver.js +45 -0
  311. package/dist/emit/paneResolver.js.map +1 -0
  312. package/dist/emit/plot.d.ts +45 -0
  313. package/dist/emit/plot.d.ts.map +1 -0
  314. package/dist/emit/plot.js +126 -0
  315. package/dist/emit/plot.js.map +1 -0
  316. package/dist/emit/runtimeError.d.ts +27 -0
  317. package/dist/emit/runtimeError.d.ts.map +1 -0
  318. package/dist/emit/runtimeError.js +33 -0
  319. package/dist/emit/runtimeError.js.map +1 -0
  320. package/dist/execution/dispose.d.ts +23 -0
  321. package/dist/execution/dispose.d.ts.map +1 -0
  322. package/dist/execution/dispose.js +57 -0
  323. package/dist/execution/dispose.js.map +1 -0
  324. package/dist/execution/drain.d.ts +22 -0
  325. package/dist/execution/drain.d.ts.map +1 -0
  326. package/dist/execution/drain.js +40 -0
  327. package/dist/execution/drain.js.map +1 -0
  328. package/dist/execution/index.d.ts +6 -0
  329. package/dist/execution/index.d.ts.map +1 -0
  330. package/dist/execution/index.js +8 -0
  331. package/dist/execution/index.js.map +1 -0
  332. package/dist/execution/onBarClose.d.ts +25 -0
  333. package/dist/execution/onBarClose.d.ts.map +1 -0
  334. package/dist/execution/onBarClose.js +78 -0
  335. package/dist/execution/onBarClose.js.map +1 -0
  336. package/dist/execution/onBarTick.d.ts +24 -0
  337. package/dist/execution/onBarTick.d.ts.map +1 -0
  338. package/dist/execution/onBarTick.js +77 -0
  339. package/dist/execution/onBarTick.js.map +1 -0
  340. package/dist/execution/onHistory.d.ts +31 -0
  341. package/dist/execution/onHistory.d.ts.map +1 -0
  342. package/dist/execution/onHistory.js +59 -0
  343. package/dist/execution/onHistory.js.map +1 -0
  344. package/dist/execution/secondaryStream.d.ts +36 -0
  345. package/dist/execution/secondaryStream.d.ts.map +1 -0
  346. package/dist/execution/secondaryStream.js +45 -0
  347. package/dist/execution/secondaryStream.js.map +1 -0
  348. package/dist/index.d.ts +25 -0
  349. package/dist/index.d.ts.map +1 -0
  350. package/dist/index.js +24 -0
  351. package/dist/index.js.map +1 -0
  352. package/dist/inputs/index.d.ts +2 -0
  353. package/dist/inputs/index.d.ts.map +1 -0
  354. package/dist/inputs/index.js +4 -0
  355. package/dist/inputs/index.js.map +1 -0
  356. package/dist/inputs/resolveInputs.d.ts +18 -0
  357. package/dist/inputs/resolveInputs.d.ts.map +1 -0
  358. package/dist/inputs/resolveInputs.js +93 -0
  359. package/dist/inputs/resolveInputs.js.map +1 -0
  360. package/dist/persistentStateStore.d.ts +40 -0
  361. package/dist/persistentStateStore.d.ts.map +1 -0
  362. package/dist/persistentStateStore.js +30 -0
  363. package/dist/persistentStateStore.js.map +1 -0
  364. package/dist/persistentStateStore.runtime.d.ts +57 -0
  365. package/dist/persistentStateStore.runtime.d.ts.map +1 -0
  366. package/dist/persistentStateStore.runtime.js +163 -0
  367. package/dist/persistentStateStore.runtime.js.map +1 -0
  368. package/dist/persistentStateStore.validate.d.ts +14 -0
  369. package/dist/persistentStateStore.validate.d.ts.map +1 -0
  370. package/dist/persistentStateStore.validate.js +63 -0
  371. package/dist/persistentStateStore.validate.js.map +1 -0
  372. package/dist/primitives.d.ts +23 -0
  373. package/dist/primitives.d.ts.map +1 -0
  374. package/dist/primitives.js +25 -0
  375. package/dist/primitives.js.map +1 -0
  376. package/dist/request/alignHtfSeriesCache.d.ts +20 -0
  377. package/dist/request/alignHtfSeriesCache.d.ts.map +1 -0
  378. package/dist/request/alignHtfSeriesCache.js +50 -0
  379. package/dist/request/alignHtfSeriesCache.js.map +1 -0
  380. package/dist/request/alignHtfSeriesToLtf.d.ts +26 -0
  381. package/dist/request/alignHtfSeriesToLtf.d.ts.map +1 -0
  382. package/dist/request/alignHtfSeriesToLtf.js +47 -0
  383. package/dist/request/alignHtfSeriesToLtf.js.map +1 -0
  384. package/dist/request/bucketLtfBarsByMainContainment.d.ts +22 -0
  385. package/dist/request/bucketLtfBarsByMainContainment.d.ts.map +1 -0
  386. package/dist/request/bucketLtfBarsByMainContainment.js +41 -0
  387. package/dist/request/bucketLtfBarsByMainContainment.js.map +1 -0
  388. package/dist/request/bucketLtfBarsCache.d.ts +14 -0
  389. package/dist/request/bucketLtfBarsCache.d.ts.map +1 -0
  390. package/dist/request/bucketLtfBarsCache.js +30 -0
  391. package/dist/request/bucketLtfBarsCache.js.map +1 -0
  392. package/dist/request/index.d.ts +4 -0
  393. package/dist/request/index.d.ts.map +1 -0
  394. package/dist/request/index.js +6 -0
  395. package/dist/request/index.js.map +1 -0
  396. package/dist/request/lowerTf.d.ts +14 -0
  397. package/dist/request/lowerTf.d.ts.map +1 -0
  398. package/dist/request/lowerTf.js +65 -0
  399. package/dist/request/lowerTf.js.map +1 -0
  400. package/dist/request/pushOnce.d.ts +13 -0
  401. package/dist/request/pushOnce.d.ts.map +1 -0
  402. package/dist/request/pushOnce.js +26 -0
  403. package/dist/request/pushOnce.js.map +1 -0
  404. package/dist/request/requestNamespace.d.ts +17 -0
  405. package/dist/request/requestNamespace.d.ts.map +1 -0
  406. package/dist/request/requestNamespace.js +39 -0
  407. package/dist/request/requestNamespace.js.map +1 -0
  408. package/dist/request/security.d.ts +25 -0
  409. package/dist/request/security.d.ts.map +1 -0
  410. package/dist/request/security.js +172 -0
  411. package/dist/request/security.js.map +1 -0
  412. package/dist/request/streamBars.d.ts +27 -0
  413. package/dist/request/streamBars.d.ts.map +1 -0
  414. package/dist/request/streamBars.js +55 -0
  415. package/dist/request/streamBars.js.map +1 -0
  416. package/dist/ringBuffer.d.ts +95 -0
  417. package/dist/ringBuffer.d.ts.map +1 -0
  418. package/dist/ringBuffer.js +146 -0
  419. package/dist/ringBuffer.js.map +1 -0
  420. package/dist/runtimeContext.d.ts +238 -0
  421. package/dist/runtimeContext.d.ts.map +1 -0
  422. package/dist/runtimeContext.js +24 -0
  423. package/dist/runtimeContext.js.map +1 -0
  424. package/dist/seriesView.d.ts +59 -0
  425. package/dist/seriesView.d.ts.map +1 -0
  426. package/dist/seriesView.js +109 -0
  427. package/dist/seriesView.js.map +1 -0
  428. package/dist/state/index.d.ts +6 -0
  429. package/dist/state/index.d.ts.map +1 -0
  430. package/dist/state/index.js +6 -0
  431. package/dist/state/index.js.map +1 -0
  432. package/dist/state/lifecycle.d.ts +75 -0
  433. package/dist/state/lifecycle.d.ts.map +1 -0
  434. package/dist/state/lifecycle.js +87 -0
  435. package/dist/state/lifecycle.js.map +1 -0
  436. package/dist/state/stateNamespace.d.ts +14 -0
  437. package/dist/state/stateNamespace.d.ts.map +1 -0
  438. package/dist/state/stateNamespace.js +56 -0
  439. package/dist/state/stateNamespace.js.map +1 -0
  440. package/dist/state/stateSlot.d.ts +59 -0
  441. package/dist/state/stateSlot.d.ts.map +1 -0
  442. package/dist/state/stateSlot.js +74 -0
  443. package/dist/state/stateSlot.js.map +1 -0
  444. package/dist/stateStore.d.ts +40 -0
  445. package/dist/stateStore.d.ts.map +1 -0
  446. package/dist/stateStore.js +34 -0
  447. package/dist/stateStore.js.map +1 -0
  448. package/dist/streamState.d.ts +178 -0
  449. package/dist/streamState.d.ts.map +1 -0
  450. package/dist/streamState.js +313 -0
  451. package/dist/streamState.js.map +1 -0
  452. package/dist/ta/adl.d.ts +27 -0
  453. package/dist/ta/adl.d.ts.map +1 -0
  454. package/dist/ta/adl.js +92 -0
  455. package/dist/ta/adl.js.map +1 -0
  456. package/dist/ta/adr.d.ts +38 -0
  457. package/dist/ta/adr.d.ts.map +1 -0
  458. package/dist/ta/adr.js +143 -0
  459. package/dist/ta/adr.js.map +1 -0
  460. package/dist/ta/adx.d.ts +31 -0
  461. package/dist/ta/adx.d.ts.map +1 -0
  462. package/dist/ta/adx.js +167 -0
  463. package/dist/ta/adx.js.map +1 -0
  464. package/dist/ta/alma.d.ts +35 -0
  465. package/dist/ta/alma.d.ts.map +1 -0
  466. package/dist/ta/alma.js +121 -0
  467. package/dist/ta/alma.js.map +1 -0
  468. package/dist/ta/anchoredVolumeProfile.d.ts +22 -0
  469. package/dist/ta/anchoredVolumeProfile.d.ts.map +1 -0
  470. package/dist/ta/anchoredVolumeProfile.js +104 -0
  471. package/dist/ta/anchoredVolumeProfile.js.map +1 -0
  472. package/dist/ta/anchoredVwap.d.ts +36 -0
  473. package/dist/ta/anchoredVwap.d.ts.map +1 -0
  474. package/dist/ta/anchoredVwap.js +134 -0
  475. package/dist/ta/anchoredVwap.js.map +1 -0
  476. package/dist/ta/ao.d.ts +21 -0
  477. package/dist/ta/ao.d.ts.map +1 -0
  478. package/dist/ta/ao.js +74 -0
  479. package/dist/ta/ao.js.map +1 -0
  480. package/dist/ta/aroon.d.ts +26 -0
  481. package/dist/ta/aroon.d.ts.map +1 -0
  482. package/dist/ta/aroon.js +166 -0
  483. package/dist/ta/aroon.js.map +1 -0
  484. package/dist/ta/aroonOsc.d.ts +19 -0
  485. package/dist/ta/aroonOsc.d.ts.map +1 -0
  486. package/dist/ta/aroonOsc.js +68 -0
  487. package/dist/ta/aroonOsc.js.map +1 -0
  488. package/dist/ta/atr.d.ts +25 -0
  489. package/dist/ta/atr.d.ts.map +1 -0
  490. package/dist/ta/atr.js +132 -0
  491. package/dist/ta/atr.js.map +1 -0
  492. package/dist/ta/barssince.d.ts +21 -0
  493. package/dist/ta/barssince.d.ts.map +1 -0
  494. package/dist/ta/barssince.js +96 -0
  495. package/dist/ta/barssince.js.map +1 -0
  496. package/dist/ta/bb.d.ts +28 -0
  497. package/dist/ta/bb.d.ts.map +1 -0
  498. package/dist/ta/bb.js +123 -0
  499. package/dist/ta/bb.js.map +1 -0
  500. package/dist/ta/bbPercentB.d.ts +23 -0
  501. package/dist/ta/bbPercentB.d.ts.map +1 -0
  502. package/dist/ta/bbPercentB.js +84 -0
  503. package/dist/ta/bbPercentB.js.map +1 -0
  504. package/dist/ta/bbw.d.ts +23 -0
  505. package/dist/ta/bbw.d.ts.map +1 -0
  506. package/dist/ta/bbw.js +84 -0
  507. package/dist/ta/bbw.js.map +1 -0
  508. package/dist/ta/bop.d.ts +22 -0
  509. package/dist/ta/bop.d.ts.map +1 -0
  510. package/dist/ta/bop.js +75 -0
  511. package/dist/ta/bop.js.map +1 -0
  512. package/dist/ta/cci.d.ts +25 -0
  513. package/dist/ta/cci.d.ts.map +1 -0
  514. package/dist/ta/cci.js +149 -0
  515. package/dist/ta/cci.js.map +1 -0
  516. package/dist/ta/chaikinOsc.d.ts +33 -0
  517. package/dist/ta/chaikinOsc.d.ts.map +1 -0
  518. package/dist/ta/chaikinOsc.js +100 -0
  519. package/dist/ta/chaikinOsc.js.map +1 -0
  520. package/dist/ta/chandeKrollStop.d.ts +36 -0
  521. package/dist/ta/chandeKrollStop.d.ts.map +1 -0
  522. package/dist/ta/chandeKrollStop.js +185 -0
  523. package/dist/ta/chandeKrollStop.js.map +1 -0
  524. package/dist/ta/chandelier.d.ts +36 -0
  525. package/dist/ta/chandelier.d.ts.map +1 -0
  526. package/dist/ta/chandelier.js +114 -0
  527. package/dist/ta/chandelier.js.map +1 -0
  528. package/dist/ta/change.d.ts +19 -0
  529. package/dist/ta/change.d.ts.map +1 -0
  530. package/dist/ta/change.js +83 -0
  531. package/dist/ta/change.js.map +1 -0
  532. package/dist/ta/chop.d.ts +29 -0
  533. package/dist/ta/chop.d.ts.map +1 -0
  534. package/dist/ta/chop.js +167 -0
  535. package/dist/ta/chop.js.map +1 -0
  536. package/dist/ta/cmf.d.ts +26 -0
  537. package/dist/ta/cmf.d.ts.map +1 -0
  538. package/dist/ta/cmf.js +126 -0
  539. package/dist/ta/cmf.js.map +1 -0
  540. package/dist/ta/cmo.d.ts +23 -0
  541. package/dist/ta/cmo.d.ts.map +1 -0
  542. package/dist/ta/cmo.js +130 -0
  543. package/dist/ta/cmo.js.map +1 -0
  544. package/dist/ta/connorsRsi.d.ts +31 -0
  545. package/dist/ta/connorsRsi.d.ts.map +1 -0
  546. package/dist/ta/connorsRsi.js +207 -0
  547. package/dist/ta/connorsRsi.js.map +1 -0
  548. package/dist/ta/coppock.d.ts +25 -0
  549. package/dist/ta/coppock.d.ts.map +1 -0
  550. package/dist/ta/coppock.js +151 -0
  551. package/dist/ta/coppock.js.map +1 -0
  552. package/dist/ta/crossover.d.ts +29 -0
  553. package/dist/ta/crossover.d.ts.map +1 -0
  554. package/dist/ta/crossover.js +108 -0
  555. package/dist/ta/crossover.js.map +1 -0
  556. package/dist/ta/crossunder.d.ts +23 -0
  557. package/dist/ta/crossunder.d.ts.map +1 -0
  558. package/dist/ta/crossunder.js +101 -0
  559. package/dist/ta/crossunder.js.map +1 -0
  560. package/dist/ta/dema.d.ts +25 -0
  561. package/dist/ta/dema.d.ts.map +1 -0
  562. package/dist/ta/dema.js +72 -0
  563. package/dist/ta/dema.js.map +1 -0
  564. package/dist/ta/dmi.d.ts +36 -0
  565. package/dist/ta/dmi.d.ts.map +1 -0
  566. package/dist/ta/dmi.js +107 -0
  567. package/dist/ta/dmi.js.map +1 -0
  568. package/dist/ta/donchian.d.ts +29 -0
  569. package/dist/ta/donchian.d.ts.map +1 -0
  570. package/dist/ta/donchian.js +93 -0
  571. package/dist/ta/donchian.js.map +1 -0
  572. package/dist/ta/dpo.d.ts +25 -0
  573. package/dist/ta/dpo.d.ts.map +1 -0
  574. package/dist/ta/dpo.js +111 -0
  575. package/dist/ta/dpo.js.map +1 -0
  576. package/dist/ta/ema.d.ts +27 -0
  577. package/dist/ta/ema.d.ts.map +1 -0
  578. package/dist/ta/ema.js +116 -0
  579. package/dist/ta/ema.js.map +1 -0
  580. package/dist/ta/envelope.d.ts +29 -0
  581. package/dist/ta/envelope.d.ts.map +1 -0
  582. package/dist/ta/envelope.js +119 -0
  583. package/dist/ta/envelope.js.map +1 -0
  584. package/dist/ta/eom.d.ts +35 -0
  585. package/dist/ta/eom.d.ts.map +1 -0
  586. package/dist/ta/eom.js +185 -0
  587. package/dist/ta/eom.js.map +1 -0
  588. package/dist/ta/fisher.d.ts +33 -0
  589. package/dist/ta/fisher.d.ts.map +1 -0
  590. package/dist/ta/fisher.js +174 -0
  591. package/dist/ta/fisher.js.map +1 -0
  592. package/dist/ta/fixedRangeVolumeProfile.d.ts +30 -0
  593. package/dist/ta/fixedRangeVolumeProfile.d.ts.map +1 -0
  594. package/dist/ta/fixedRangeVolumeProfile.js +141 -0
  595. package/dist/ta/fixedRangeVolumeProfile.js.map +1 -0
  596. package/dist/ta/highest.d.ts +21 -0
  597. package/dist/ta/highest.d.ts.map +1 -0
  598. package/dist/ta/highest.js +131 -0
  599. package/dist/ta/highest.js.map +1 -0
  600. package/dist/ta/historicalVolatility.d.ts +28 -0
  601. package/dist/ta/historicalVolatility.d.ts.map +1 -0
  602. package/dist/ta/historicalVolatility.js +199 -0
  603. package/dist/ta/historicalVolatility.js.map +1 -0
  604. package/dist/ta/hma.d.ts +28 -0
  605. package/dist/ta/hma.d.ts.map +1 -0
  606. package/dist/ta/hma.js +64 -0
  607. package/dist/ta/hma.js.map +1 -0
  608. package/dist/ta/ichimoku.d.ts +42 -0
  609. package/dist/ta/ichimoku.d.ts.map +1 -0
  610. package/dist/ta/ichimoku.js +188 -0
  611. package/dist/ta/ichimoku.js.map +1 -0
  612. package/dist/ta/index.d.ts +5 -0
  613. package/dist/ta/index.d.ts.map +1 -0
  614. package/dist/ta/index.js +5 -0
  615. package/dist/ta/index.js.map +1 -0
  616. package/dist/ta/kama.d.ts +35 -0
  617. package/dist/ta/kama.d.ts.map +1 -0
  618. package/dist/ta/kama.js +141 -0
  619. package/dist/ta/kama.js.map +1 -0
  620. package/dist/ta/keltner.d.ts +31 -0
  621. package/dist/ta/keltner.d.ts.map +1 -0
  622. package/dist/ta/keltner.js +125 -0
  623. package/dist/ta/keltner.js.map +1 -0
  624. package/dist/ta/klinger.d.ts +32 -0
  625. package/dist/ta/klinger.d.ts.map +1 -0
  626. package/dist/ta/klinger.js +165 -0
  627. package/dist/ta/klinger.js.map +1 -0
  628. package/dist/ta/kst.d.ts +31 -0
  629. package/dist/ta/kst.d.ts.map +1 -0
  630. package/dist/ta/kst.js +139 -0
  631. package/dist/ta/kst.js.map +1 -0
  632. package/dist/ta/lib/adxFromDi.d.ts +29 -0
  633. package/dist/ta/lib/adxFromDi.d.ts.map +1 -0
  634. package/dist/ta/lib/adxFromDi.js +72 -0
  635. package/dist/ta/lib/adxFromDi.js.map +1 -0
  636. package/dist/ta/lib/applyOffset.d.ts +19 -0
  637. package/dist/ta/lib/applyOffset.d.ts.map +1 -0
  638. package/dist/ta/lib/applyOffset.js +38 -0
  639. package/dist/ta/lib/applyOffset.js.map +1 -0
  640. package/dist/ta/lib/computeMa.d.ts +25 -0
  641. package/dist/ta/lib/computeMa.d.ts.map +1 -0
  642. package/dist/ta/lib/computeMa.js +43 -0
  643. package/dist/ta/lib/computeMa.js.map +1 -0
  644. package/dist/ta/lib/computeMaOfFloat64.d.ts +24 -0
  645. package/dist/ta/lib/computeMaOfFloat64.d.ts.map +1 -0
  646. package/dist/ta/lib/computeMaOfFloat64.js +45 -0
  647. package/dist/ta/lib/computeMaOfFloat64.js.map +1 -0
  648. package/dist/ta/lib/directionalState.d.ts +90 -0
  649. package/dist/ta/lib/directionalState.d.ts.map +1 -0
  650. package/dist/ta/lib/directionalState.js +204 -0
  651. package/dist/ta/lib/directionalState.js.map +1 -0
  652. package/dist/ta/lib/donchianMid.d.ts +21 -0
  653. package/dist/ta/lib/donchianMid.d.ts.map +1 -0
  654. package/dist/ta/lib/donchianMid.js +56 -0
  655. package/dist/ta/lib/donchianMid.js.map +1 -0
  656. package/dist/ta/lib/emaFloat64.d.ts +22 -0
  657. package/dist/ta/lib/emaFloat64.d.ts.map +1 -0
  658. package/dist/ta/lib/emaFloat64.js +60 -0
  659. package/dist/ta/lib/emaFloat64.js.map +1 -0
  660. package/dist/ta/lib/linearRegression.d.ts +50 -0
  661. package/dist/ta/lib/linearRegression.d.ts.map +1 -0
  662. package/dist/ta/lib/linearRegression.js +86 -0
  663. package/dist/ta/lib/linearRegression.js.map +1 -0
  664. package/dist/ta/lib/maTypes.d.ts +37 -0
  665. package/dist/ta/lib/maTypes.d.ts.map +1 -0
  666. package/dist/ta/lib/maTypes.js +4 -0
  667. package/dist/ta/lib/maTypes.js.map +1 -0
  668. package/dist/ta/lib/pearson.d.ts +31 -0
  669. package/dist/ta/lib/pearson.d.ts.map +1 -0
  670. package/dist/ta/lib/pearson.js +79 -0
  671. package/dist/ta/lib/pearson.js.map +1 -0
  672. package/dist/ta/lib/pickCandleSource.d.ts +24 -0
  673. package/dist/ta/lib/pickCandleSource.d.ts.map +1 -0
  674. package/dist/ta/lib/pickCandleSource.js +45 -0
  675. package/dist/ta/lib/pickCandleSource.js.map +1 -0
  676. package/dist/ta/lib/readSourceField.d.ts +29 -0
  677. package/dist/ta/lib/readSourceField.d.ts.map +1 -0
  678. package/dist/ta/lib/readSourceField.js +37 -0
  679. package/dist/ta/lib/readSourceField.js.map +1 -0
  680. package/dist/ta/lib/rollingStddev.d.ts +22 -0
  681. package/dist/ta/lib/rollingStddev.d.ts.map +1 -0
  682. package/dist/ta/lib/rollingStddev.js +60 -0
  683. package/dist/ta/lib/rollingStddev.js.map +1 -0
  684. package/dist/ta/lib/smaFloat64.d.ts +20 -0
  685. package/dist/ta/lib/smaFloat64.d.ts.map +1 -0
  686. package/dist/ta/lib/smaFloat64.js +59 -0
  687. package/dist/ta/lib/smaFloat64.js.map +1 -0
  688. package/dist/ta/lib/smmaFloat64.d.ts +23 -0
  689. package/dist/ta/lib/smmaFloat64.d.ts.map +1 -0
  690. package/dist/ta/lib/smmaFloat64.js +60 -0
  691. package/dist/ta/lib/smmaFloat64.js.map +1 -0
  692. package/dist/ta/lib/sourceValue.d.ts +31 -0
  693. package/dist/ta/lib/sourceValue.d.ts.map +1 -0
  694. package/dist/ta/lib/sourceValue.js +21 -0
  695. package/dist/ta/lib/sourceValue.js.map +1 -0
  696. package/dist/ta/lib/trSeries.d.ts +48 -0
  697. package/dist/ta/lib/trSeries.d.ts.map +1 -0
  698. package/dist/ta/lib/trSeries.js +81 -0
  699. package/dist/ta/lib/trSeries.js.map +1 -0
  700. package/dist/ta/lib/volume-profile/bucketEdges.d.ts +14 -0
  701. package/dist/ta/lib/volume-profile/bucketEdges.d.ts.map +1 -0
  702. package/dist/ta/lib/volume-profile/bucketEdges.js +42 -0
  703. package/dist/ta/lib/volume-profile/bucketEdges.js.map +1 -0
  704. package/dist/ta/lib/volume-profile/bucketizeVolume.d.ts +26 -0
  705. package/dist/ta/lib/volume-profile/bucketizeVolume.d.ts.map +1 -0
  706. package/dist/ta/lib/volume-profile/bucketizeVolume.js +115 -0
  707. package/dist/ta/lib/volume-profile/bucketizeVolume.js.map +1 -0
  708. package/dist/ta/lib/volume-profile/developingSeries.d.ts +35 -0
  709. package/dist/ta/lib/volume-profile/developingSeries.d.ts.map +1 -0
  710. package/dist/ta/lib/volume-profile/developingSeries.js +97 -0
  711. package/dist/ta/lib/volume-profile/developingSeries.js.map +1 -0
  712. package/dist/ta/lib/volume-profile/index.d.ts +11 -0
  713. package/dist/ta/lib/volume-profile/index.d.ts.map +1 -0
  714. package/dist/ta/lib/volume-profile/index.js +15 -0
  715. package/dist/ta/lib/volume-profile/index.js.map +1 -0
  716. package/dist/ta/lib/volume-profile/intercept.d.ts +15 -0
  717. package/dist/ta/lib/volume-profile/intercept.d.ts.map +1 -0
  718. package/dist/ta/lib/volume-profile/intercept.js +31 -0
  719. package/dist/ta/lib/volume-profile/intercept.js.map +1 -0
  720. package/dist/ta/lib/volume-profile/scaffold.d.ts +165 -0
  721. package/dist/ta/lib/volume-profile/scaffold.d.ts.map +1 -0
  722. package/dist/ta/lib/volume-profile/scaffold.js +209 -0
  723. package/dist/ta/lib/volume-profile/scaffold.js.map +1 -0
  724. package/dist/ta/lib/volume-profile/tooHeavy.d.ts +45 -0
  725. package/dist/ta/lib/volume-profile/tooHeavy.d.ts.map +1 -0
  726. package/dist/ta/lib/volume-profile/tooHeavy.js +92 -0
  727. package/dist/ta/lib/volume-profile/tooHeavy.js.map +1 -0
  728. package/dist/ta/lib/volume-profile/types.d.ts +188 -0
  729. package/dist/ta/lib/volume-profile/types.d.ts.map +1 -0
  730. package/dist/ta/lib/volume-profile/types.js +17 -0
  731. package/dist/ta/lib/volume-profile/types.js.map +1 -0
  732. package/dist/ta/lib/volume-profile/valueArea.d.ts +14 -0
  733. package/dist/ta/lib/volume-profile/valueArea.d.ts.map +1 -0
  734. package/dist/ta/lib/volume-profile/valueArea.js +90 -0
  735. package/dist/ta/lib/volume-profile/valueArea.js.map +1 -0
  736. package/dist/ta/lib/volume-profile/volumeProfileShared.d.ts +35 -0
  737. package/dist/ta/lib/volume-profile/volumeProfileShared.d.ts.map +1 -0
  738. package/dist/ta/lib/volume-profile/volumeProfileShared.js +136 -0
  739. package/dist/ta/lib/volume-profile/volumeProfileShared.js.map +1 -0
  740. package/dist/ta/lib/vwmaFloat64.d.ts +28 -0
  741. package/dist/ta/lib/vwmaFloat64.d.ts.map +1 -0
  742. package/dist/ta/lib/vwmaFloat64.js +70 -0
  743. package/dist/ta/lib/vwmaFloat64.js.map +1 -0
  744. package/dist/ta/lib/wilderDirectional.d.ts +53 -0
  745. package/dist/ta/lib/wilderDirectional.d.ts.map +1 -0
  746. package/dist/ta/lib/wilderDirectional.js +121 -0
  747. package/dist/ta/lib/wilderDirectional.js.map +1 -0
  748. package/dist/ta/lib/wilderSmoothing.d.ts +16 -0
  749. package/dist/ta/lib/wilderSmoothing.d.ts.map +1 -0
  750. package/dist/ta/lib/wilderSmoothing.js +26 -0
  751. package/dist/ta/lib/wilderSmoothing.js.map +1 -0
  752. package/dist/ta/lib/wmaFloat64.d.ts +22 -0
  753. package/dist/ta/lib/wmaFloat64.d.ts.map +1 -0
  754. package/dist/ta/lib/wmaFloat64.js +61 -0
  755. package/dist/ta/lib/wmaFloat64.js.map +1 -0
  756. package/dist/ta/lowest.d.ts +20 -0
  757. package/dist/ta/lowest.d.ts.map +1 -0
  758. package/dist/ta/lowest.js +113 -0
  759. package/dist/ta/lowest.js.map +1 -0
  760. package/dist/ta/lsma.d.ts +31 -0
  761. package/dist/ta/lsma.d.ts.map +1 -0
  762. package/dist/ta/lsma.js +127 -0
  763. package/dist/ta/lsma.js.map +1 -0
  764. package/dist/ta/maRibbon.d.ts +52 -0
  765. package/dist/ta/maRibbon.d.ts.map +1 -0
  766. package/dist/ta/maRibbon.js +125 -0
  767. package/dist/ta/maRibbon.js.map +1 -0
  768. package/dist/ta/macd.d.ts +30 -0
  769. package/dist/ta/macd.d.ts.map +1 -0
  770. package/dist/ta/macd.js +122 -0
  771. package/dist/ta/macd.js.map +1 -0
  772. package/dist/ta/massIndex.d.ts +29 -0
  773. package/dist/ta/massIndex.d.ts.map +1 -0
  774. package/dist/ta/massIndex.js +149 -0
  775. package/dist/ta/massIndex.js.map +1 -0
  776. package/dist/ta/mcginley.d.ts +26 -0
  777. package/dist/ta/mcginley.d.ts.map +1 -0
  778. package/dist/ta/mcginley.js +118 -0
  779. package/dist/ta/mcginley.js.map +1 -0
  780. package/dist/ta/median.d.ts +24 -0
  781. package/dist/ta/median.d.ts.map +1 -0
  782. package/dist/ta/median.js +112 -0
  783. package/dist/ta/median.js.map +1 -0
  784. package/dist/ta/mfi.d.ts +38 -0
  785. package/dist/ta/mfi.d.ts.map +1 -0
  786. package/dist/ta/mfi.js +152 -0
  787. package/dist/ta/mfi.js.map +1 -0
  788. package/dist/ta/momentum.d.ts +21 -0
  789. package/dist/ta/momentum.d.ts.map +1 -0
  790. package/dist/ta/momentum.js +46 -0
  791. package/dist/ta/momentum.js.map +1 -0
  792. package/dist/ta/netVolume.d.ts +31 -0
  793. package/dist/ta/netVolume.d.ts.map +1 -0
  794. package/dist/ta/netVolume.js +118 -0
  795. package/dist/ta/netVolume.js.map +1 -0
  796. package/dist/ta/nvi.d.ts +35 -0
  797. package/dist/ta/nvi.d.ts.map +1 -0
  798. package/dist/ta/nvi.js +140 -0
  799. package/dist/ta/nvi.js.map +1 -0
  800. package/dist/ta/nz.d.ts +17 -0
  801. package/dist/ta/nz.d.ts.map +1 -0
  802. package/dist/ta/nz.js +25 -0
  803. package/dist/ta/nz.js.map +1 -0
  804. package/dist/ta/obv.d.ts +25 -0
  805. package/dist/ta/obv.d.ts.map +1 -0
  806. package/dist/ta/obv.js +109 -0
  807. package/dist/ta/obv.js.map +1 -0
  808. package/dist/ta/persistence.d.ts +40 -0
  809. package/dist/ta/persistence.d.ts.map +1 -0
  810. package/dist/ta/persistence.js +306 -0
  811. package/dist/ta/persistence.js.map +1 -0
  812. package/dist/ta/pivotsHighLow.d.ts +41 -0
  813. package/dist/ta/pivotsHighLow.d.ts.map +1 -0
  814. package/dist/ta/pivotsHighLow.js +191 -0
  815. package/dist/ta/pivotsHighLow.js.map +1 -0
  816. package/dist/ta/pivotsStandard.d.ts +46 -0
  817. package/dist/ta/pivotsStandard.d.ts.map +1 -0
  818. package/dist/ta/pivotsStandard.js +323 -0
  819. package/dist/ta/pivotsStandard.js.map +1 -0
  820. package/dist/ta/pmo.d.ts +31 -0
  821. package/dist/ta/pmo.d.ts.map +1 -0
  822. package/dist/ta/pmo.js +185 -0
  823. package/dist/ta/pmo.js.map +1 -0
  824. package/dist/ta/ppo.d.ts +37 -0
  825. package/dist/ta/ppo.d.ts.map +1 -0
  826. package/dist/ta/ppo.js +130 -0
  827. package/dist/ta/ppo.js.map +1 -0
  828. package/dist/ta/psar.d.ts +36 -0
  829. package/dist/ta/psar.d.ts.map +1 -0
  830. package/dist/ta/psar.js +283 -0
  831. package/dist/ta/psar.js.map +1 -0
  832. package/dist/ta/pvi.d.ts +32 -0
  833. package/dist/ta/pvi.d.ts.map +1 -0
  834. package/dist/ta/pvi.js +127 -0
  835. package/dist/ta/pvi.js.map +1 -0
  836. package/dist/ta/pvo.d.ts +34 -0
  837. package/dist/ta/pvo.d.ts.map +1 -0
  838. package/dist/ta/pvo.js +123 -0
  839. package/dist/ta/pvo.js.map +1 -0
  840. package/dist/ta/pvt.d.ts +26 -0
  841. package/dist/ta/pvt.d.ts.map +1 -0
  842. package/dist/ta/pvt.js +128 -0
  843. package/dist/ta/pvt.js.map +1 -0
  844. package/dist/ta/registry.d.ts +395 -0
  845. package/dist/ta/registry.d.ts.map +1 -0
  846. package/dist/ta/registry.js +440 -0
  847. package/dist/ta/registry.js.map +1 -0
  848. package/dist/ta/roc.d.ts +19 -0
  849. package/dist/ta/roc.d.ts.map +1 -0
  850. package/dist/ta/roc.js +80 -0
  851. package/dist/ta/roc.js.map +1 -0
  852. package/dist/ta/rsi.d.ts +28 -0
  853. package/dist/ta/rsi.d.ts.map +1 -0
  854. package/dist/ta/rsi.js +166 -0
  855. package/dist/ta/rsi.js.map +1 -0
  856. package/dist/ta/rvgi.d.ts +27 -0
  857. package/dist/ta/rvgi.d.ts.map +1 -0
  858. package/dist/ta/rvgi.js +139 -0
  859. package/dist/ta/rvgi.js.map +1 -0
  860. package/dist/ta/rvi.d.ts +31 -0
  861. package/dist/ta/rvi.d.ts.map +1 -0
  862. package/dist/ta/rvi.js +195 -0
  863. package/dist/ta/rvi.js.map +1 -0
  864. package/dist/ta/sessionVolumeProfile.d.ts +23 -0
  865. package/dist/ta/sessionVolumeProfile.d.ts.map +1 -0
  866. package/dist/ta/sessionVolumeProfile.js +164 -0
  867. package/dist/ta/sessionVolumeProfile.js.map +1 -0
  868. package/dist/ta/sma.d.ts +23 -0
  869. package/dist/ta/sma.d.ts.map +1 -0
  870. package/dist/ta/sma.js +112 -0
  871. package/dist/ta/sma.js.map +1 -0
  872. package/dist/ta/smi.d.ts +41 -0
  873. package/dist/ta/smi.d.ts.map +1 -0
  874. package/dist/ta/smi.js +134 -0
  875. package/dist/ta/smi.js.map +1 -0
  876. package/dist/ta/smma.d.ts +26 -0
  877. package/dist/ta/smma.d.ts.map +1 -0
  878. package/dist/ta/smma.js +105 -0
  879. package/dist/ta/smma.js.map +1 -0
  880. package/dist/ta/stdev.d.ts +25 -0
  881. package/dist/ta/stdev.d.ts.map +1 -0
  882. package/dist/ta/stdev.js +125 -0
  883. package/dist/ta/stdev.js.map +1 -0
  884. package/dist/ta/stoch.d.ts +32 -0
  885. package/dist/ta/stoch.d.ts.map +1 -0
  886. package/dist/ta/stoch.js +91 -0
  887. package/dist/ta/stoch.js.map +1 -0
  888. package/dist/ta/stochRsi.d.ts +35 -0
  889. package/dist/ta/stochRsi.d.ts.map +1 -0
  890. package/dist/ta/stochRsi.js +98 -0
  891. package/dist/ta/stochRsi.js.map +1 -0
  892. package/dist/ta/supertrend.d.ts +34 -0
  893. package/dist/ta/supertrend.d.ts.map +1 -0
  894. package/dist/ta/supertrend.js +181 -0
  895. package/dist/ta/supertrend.js.map +1 -0
  896. package/dist/ta/tema.d.ts +27 -0
  897. package/dist/ta/tema.d.ts.map +1 -0
  898. package/dist/ta/tema.js +75 -0
  899. package/dist/ta/tema.js.map +1 -0
  900. package/dist/ta/trendStrengthIndex.d.ts +35 -0
  901. package/dist/ta/trendStrengthIndex.d.ts.map +1 -0
  902. package/dist/ta/trendStrengthIndex.js +183 -0
  903. package/dist/ta/trendStrengthIndex.js.map +1 -0
  904. package/dist/ta/trix.d.ts +34 -0
  905. package/dist/ta/trix.d.ts.map +1 -0
  906. package/dist/ta/trix.js +135 -0
  907. package/dist/ta/trix.js.map +1 -0
  908. package/dist/ta/tsi.d.ts +37 -0
  909. package/dist/ta/tsi.d.ts.map +1 -0
  910. package/dist/ta/tsi.js +127 -0
  911. package/dist/ta/tsi.js.map +1 -0
  912. package/dist/ta/ulcerIndex.d.ts +34 -0
  913. package/dist/ta/ulcerIndex.d.ts.map +1 -0
  914. package/dist/ta/ulcerIndex.js +120 -0
  915. package/dist/ta/ulcerIndex.js.map +1 -0
  916. package/dist/ta/ultimateOsc.d.ts +27 -0
  917. package/dist/ta/ultimateOsc.d.ts.map +1 -0
  918. package/dist/ta/ultimateOsc.js +174 -0
  919. package/dist/ta/ultimateOsc.js.map +1 -0
  920. package/dist/ta/valuewhen.d.ts +27 -0
  921. package/dist/ta/valuewhen.d.ts.map +1 -0
  922. package/dist/ta/valuewhen.js +115 -0
  923. package/dist/ta/valuewhen.js.map +1 -0
  924. package/dist/ta/visibleRangeVolumeProfile.d.ts +26 -0
  925. package/dist/ta/visibleRangeVolumeProfile.d.ts.map +1 -0
  926. package/dist/ta/visibleRangeVolumeProfile.js +107 -0
  927. package/dist/ta/visibleRangeVolumeProfile.js.map +1 -0
  928. package/dist/ta/vol.d.ts +23 -0
  929. package/dist/ta/vol.d.ts.map +1 -0
  930. package/dist/ta/vol.js +58 -0
  931. package/dist/ta/vol.js.map +1 -0
  932. package/dist/ta/volatilityStop.d.ts +36 -0
  933. package/dist/ta/volatilityStop.d.ts.map +1 -0
  934. package/dist/ta/volatilityStop.js +203 -0
  935. package/dist/ta/volatilityStop.js.map +1 -0
  936. package/dist/ta/vortex.d.ts +30 -0
  937. package/dist/ta/vortex.d.ts.map +1 -0
  938. package/dist/ta/vortex.js +210 -0
  939. package/dist/ta/vortex.js.map +1 -0
  940. package/dist/ta/vwap.d.ts +33 -0
  941. package/dist/ta/vwap.d.ts.map +1 -0
  942. package/dist/ta/vwap.js +138 -0
  943. package/dist/ta/vwap.js.map +1 -0
  944. package/dist/ta/vwma.d.ts +24 -0
  945. package/dist/ta/vwma.d.ts.map +1 -0
  946. package/dist/ta/vwma.js +112 -0
  947. package/dist/ta/vwma.js.map +1 -0
  948. package/dist/ta/williamsFractal.d.ts +43 -0
  949. package/dist/ta/williamsFractal.d.ts.map +1 -0
  950. package/dist/ta/williamsFractal.js +171 -0
  951. package/dist/ta/williamsFractal.js.map +1 -0
  952. package/dist/ta/williamsR.d.ts +24 -0
  953. package/dist/ta/williamsR.d.ts.map +1 -0
  954. package/dist/ta/williamsR.js +75 -0
  955. package/dist/ta/williamsR.js.map +1 -0
  956. package/dist/ta/wma.d.ts +24 -0
  957. package/dist/ta/wma.d.ts.map +1 -0
  958. package/dist/ta/wma.js +106 -0
  959. package/dist/ta/wma.js.map +1 -0
  960. package/dist/ta/zigZag.d.ts +40 -0
  961. package/dist/ta/zigZag.d.ts.map +1 -0
  962. package/dist/ta/zigZag.js +296 -0
  963. package/dist/ta/zigZag.js.map +1 -0
  964. package/dist/views/barstateView.d.ts +44 -0
  965. package/dist/views/barstateView.d.ts.map +1 -0
  966. package/dist/views/barstateView.js +27 -0
  967. package/dist/views/barstateView.js.map +1 -0
  968. package/dist/views/index.d.ts +37 -0
  969. package/dist/views/index.d.ts.map +1 -0
  970. package/dist/views/index.js +28 -0
  971. package/dist/views/index.js.map +1 -0
  972. package/dist/views/refreshRuntimeViews.d.ts +15 -0
  973. package/dist/views/refreshRuntimeViews.d.ts.map +1 -0
  974. package/dist/views/refreshRuntimeViews.js +29 -0
  975. package/dist/views/refreshRuntimeViews.js.map +1 -0
  976. package/dist/views/symInfoView.d.ts +42 -0
  977. package/dist/views/symInfoView.d.ts.map +1 -0
  978. package/dist/views/symInfoView.js +32 -0
  979. package/dist/views/symInfoView.js.map +1 -0
  980. package/dist/views/timeframeView.d.ts +17 -0
  981. package/dist/views/timeframeView.d.ts.map +1 -0
  982. package/dist/views/timeframeView.js +47 -0
  983. package/dist/views/timeframeView.js.map +1 -0
  984. package/package.json +46 -0
@@ -0,0 +1,118 @@
1
+ // Copyright (c) 2026 Invinite. Licensed under the MIT License.
2
+ // See the LICENSE file in the repo root for full license text.
3
+ //
4
+ // Ported from invinite/src/components/trading-chart/indicators/mcginley.ts
5
+ // (commit 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite).
6
+ // Re-licensed MIT for chartlang. See PLAN.md §3.1 for the
7
+ // provenance contract; the math is the reference, the code style is not.
8
+ // Structural choices (callsite-id slot, Series<T> proxy, replaceHead
9
+ // mode) follow chartlang's primitive shape — NOT invinite's
10
+ // IndicatorPlugin shape.
11
+ import { Float64RingBuffer } from "../ringBuffer.js";
12
+ import { ACTIVE_RUNTIME_CONTEXT } from "../runtimeContext.js";
13
+ import { makeSeriesView } from "../seriesView.js";
14
+ import { readSourceValue } from "./lib/sourceValue.js";
15
+ function getCtx() {
16
+ const ctx = ACTIVE_RUNTIME_CONTEXT.current;
17
+ if (ctx === null) {
18
+ throw new Error("ta.mcginley called outside an active script step");
19
+ }
20
+ return ctx;
21
+ }
22
+ function initSlot(length, capacity) {
23
+ const outBuffer = new Float64RingBuffer(capacity);
24
+ return {
25
+ outBuffer,
26
+ series: makeSeriesView(outBuffer),
27
+ length,
28
+ prevMc: Number.NaN,
29
+ prevClosedMc: Number.NaN,
30
+ seedCount: 0,
31
+ };
32
+ }
33
+ /**
34
+ * Apply the McGinley Dynamic recurrence step given the prior MC
35
+ * anchor. `prev === 0` is the well-defined zero-seed edge case:
36
+ * `(src/0)^4 = +Infinity` → division by `+Infinity` → 0 → sticky-zero
37
+ * fix-point. The task spec calls for NaN in that regime — concretely,
38
+ * a `prev === 0` recurrence cannot escape the fix-point, so we emit
39
+ * NaN to signal the degenerate state.
40
+ */
41
+ function step(src, prev, length) {
42
+ if (prev === 0)
43
+ return Number.NaN;
44
+ const ratio = src / prev;
45
+ const denom = length * ratio * ratio * ratio * ratio;
46
+ return prev + (src - prev) / denom;
47
+ }
48
+ function compute(slot, src, isTick) {
49
+ if (!Number.isFinite(src)) {
50
+ // Mid-stream NaN forward-fills the prior value (matches the
51
+ // EMA / SMMA recurrence convention).
52
+ return isTick ? slot.prevMc : slot.prevClosedMc;
53
+ }
54
+ // Warmup: emit NaN until `length` finite source values have been
55
+ // seen (matches invinite's seed convention). At the warmup
56
+ // boundary the recurrence is seeded with the source value itself.
57
+ if (slot.seedCount < slot.length - 1) {
58
+ if (isTick)
59
+ return Number.NaN;
60
+ slot.seedCount += 1;
61
+ slot.prevClosedMc = Number.NaN;
62
+ slot.prevMc = Number.NaN;
63
+ return Number.NaN;
64
+ }
65
+ if (!Number.isFinite(slot.prevClosedMc)) {
66
+ // Seed bar — `length`-th finite source value lands here.
67
+ if (isTick)
68
+ return src;
69
+ slot.seedCount += 1;
70
+ slot.prevClosedMc = src;
71
+ slot.prevMc = src;
72
+ return src;
73
+ }
74
+ const prev = slot.prevClosedMc;
75
+ const next = step(src, prev, slot.length);
76
+ if (!isTick) {
77
+ slot.prevClosedMc = next;
78
+ slot.prevMc = next;
79
+ }
80
+ return next;
81
+ }
82
+ /**
83
+ * McGinley Dynamic — an adaptive moving average with an automatic
84
+ * lag-compensation correction. The recurrence
85
+ * `mc[t] = mc[t-1] + (src[t] − mc[t-1]) / (length · (src[t] / mc[t-1])⁴)`
86
+ * scales the step size by the relative change between source and the
87
+ * prior MA value, so the indicator tracks faster on strong moves and
88
+ * smoother on quiet bars. NaN source forward-fills the prior value;
89
+ * `prev === 0` is the well-defined zero-seed fix-point and emits NaN
90
+ * (the recurrence cannot escape a zero anchor — matches the invinite
91
+ * reference's NaN-correct degenerate handling).
92
+ *
93
+ * @formula seed at length-th finite source bar : mc = src ;
94
+ * mc[t] = mc[t-1] + (src[t] − mc[t-1]) / (length · (src[t] / mc[t-1])^4)
95
+ * @warmup length
96
+ * @since 0.2
97
+ * @stable
98
+ *
99
+ * @example
100
+ * // import { ta } from "@invinite-org/chartlang-core";
101
+ * // const m = ta.mcginley(bar.close, 14);
102
+ * // plot(m);
103
+ */
104
+ export function mcginley(slotId, source, length, _opts) {
105
+ const ctx = getCtx();
106
+ let slot = ctx.stream.taSlots.get(slotId);
107
+ if (slot === undefined) {
108
+ slot = initSlot(length, ctx.stream.ohlcv.close.capacity);
109
+ ctx.stream.taSlots.set(slotId, slot);
110
+ }
111
+ const value = compute(slot, readSourceValue(source), ctx.isTick);
112
+ if (ctx.isTick)
113
+ slot.outBuffer.replaceHead(value);
114
+ else
115
+ slot.outBuffer.append(value);
116
+ return slot.series;
117
+ }
118
+ //# sourceMappingURL=mcginley.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcginley.js","sourceRoot":"","sources":["../../src/ta/mcginley.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { MedianOpts, Series } from "@invinite-org/chartlang-core";
2
+ import { type ScalarOrSeries } from "./lib/sourceValue.js";
3
+ /**
4
+ * Rolling median — middle-value statistic across the trailing
5
+ * `length` source values. NaN slots are dropped from the sort
6
+ * (window length effectively shrinks); if every slot is NaN the
7
+ * output is NaN. Robust to single-bar spikes the way an SMA isn't.
8
+ * Tick-mode replays the head by substituting the tick value for
9
+ * the age-0 slot before sorting — the closed window is unchanged.
10
+ *
11
+ * @formula out[t] = median(source[t − length + 1 .. t]) ;
12
+ * odd length → middle value ; even length → mean of the
13
+ * two middle values ; NaN slots dropped before sort
14
+ * @warmup length − 1
15
+ * @since 0.2
16
+ * @stable
17
+ *
18
+ * @example
19
+ * // import { ta } from "@invinite-org/chartlang-core";
20
+ * // const m = ta.median(bar.close, 21);
21
+ * // plot(m);
22
+ */
23
+ export declare function median(slotId: string, source: ScalarOrSeries, length: number, _opts?: MedianOpts): Series<number>;
24
+ //# sourceMappingURL=median.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"median.d.ts","sourceRoot":"","sources":["../../src/ta/median.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAKvE,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,sBAAsB,CAAC;AA8E5E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,UAAU,GACnB,MAAM,CAAC,MAAM,CAAC,CAchB"}
@@ -0,0 +1,112 @@
1
+ // Copyright (c) 2026 Invinite. Licensed under the MIT License.
2
+ // See the LICENSE file in the repo root for full license text.
3
+ //
4
+ // Ported from invinite/src/components/trading-chart/indicators/median.ts
5
+ // (commit 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite).
6
+ // Re-licensed MIT for chartlang. See PLAN.md §3.1 for the
7
+ // provenance contract; the math is the reference, the code style is not.
8
+ // Structural choices (callsite-id slot, Series<T> proxy, replaceHead
9
+ // mode) follow chartlang's primitive shape — NOT invinite's
10
+ // IndicatorPlugin shape. Only the median-statistic line is ported;
11
+ // invinite's median plugin also bundles ±ATR bands + an EMA-smoothed
12
+ // median line — those compositions are out of scope for the single-
13
+ // output `ta.median` primitive (script authors compose them via
14
+ // `ta.atr`, `ta.ema` as needed).
15
+ import { Float64RingBuffer } from "../ringBuffer.js";
16
+ import { ACTIVE_RUNTIME_CONTEXT } from "../runtimeContext.js";
17
+ import { makeSeriesView } from "../seriesView.js";
18
+ import { readSourceValue } from "./lib/sourceValue.js";
19
+ function getCtx() {
20
+ const ctx = ACTIVE_RUNTIME_CONTEXT.current;
21
+ if (ctx === null) {
22
+ throw new Error("ta.median called outside an active script step");
23
+ }
24
+ return ctx;
25
+ }
26
+ function initSlot(length, capacity) {
27
+ const outBuffer = new Float64RingBuffer(capacity);
28
+ return {
29
+ outBuffer,
30
+ series: makeSeriesView(outBuffer),
31
+ length,
32
+ window: new Float64RingBuffer(length),
33
+ sortedBuffer: new Float64Array(length),
34
+ };
35
+ }
36
+ /**
37
+ * Compute the median of the window's finite values. Substitutes
38
+ * `headOverride` for the head slot (age 0) when finite — used by
39
+ * tick replay to evaluate the partial-bar tick without mutating
40
+ * the closed window.
41
+ *
42
+ * Returns `NaN` when the window contains no finite values.
43
+ */
44
+ function medianOfWindow(slot, headOverride) {
45
+ const buf = slot.sortedBuffer;
46
+ let k = 0;
47
+ const filled = slot.window.length;
48
+ for (let i = 0; i < filled; i += 1) {
49
+ const v = i === 0 ? headOverride : slot.window.at(i);
50
+ if (Number.isFinite(v)) {
51
+ buf[k] = v;
52
+ k += 1;
53
+ }
54
+ }
55
+ if (k === 0)
56
+ return Number.NaN;
57
+ // Sort only the populated prefix — `Float64Array.prototype.sort`
58
+ // takes a comparator but here we slice a typed subarray view.
59
+ const view = buf.subarray(0, k);
60
+ view.sort();
61
+ if (k % 2 === 1)
62
+ return view[(k - 1) >> 1];
63
+ return (view[(k >> 1) - 1] + view[k >> 1]) / 2;
64
+ }
65
+ function closeValue(slot, src) {
66
+ slot.window.append(src);
67
+ if (slot.window.length < slot.length)
68
+ return Number.NaN;
69
+ return medianOfWindow(slot, slot.window.at(0));
70
+ }
71
+ function tickValue(slot, src) {
72
+ if (slot.window.length < slot.length)
73
+ return Number.NaN;
74
+ return medianOfWindow(slot, src);
75
+ }
76
+ /**
77
+ * Rolling median — middle-value statistic across the trailing
78
+ * `length` source values. NaN slots are dropped from the sort
79
+ * (window length effectively shrinks); if every slot is NaN the
80
+ * output is NaN. Robust to single-bar spikes the way an SMA isn't.
81
+ * Tick-mode replays the head by substituting the tick value for
82
+ * the age-0 slot before sorting — the closed window is unchanged.
83
+ *
84
+ * @formula out[t] = median(source[t − length + 1 .. t]) ;
85
+ * odd length → middle value ; even length → mean of the
86
+ * two middle values ; NaN slots dropped before sort
87
+ * @warmup length − 1
88
+ * @since 0.2
89
+ * @stable
90
+ *
91
+ * @example
92
+ * // import { ta } from "@invinite-org/chartlang-core";
93
+ * // const m = ta.median(bar.close, 21);
94
+ * // plot(m);
95
+ */
96
+ export function median(slotId, source, length, _opts) {
97
+ const ctx = getCtx();
98
+ let slot = ctx.stream.taSlots.get(slotId);
99
+ if (slot === undefined) {
100
+ slot = initSlot(length, ctx.stream.ohlcv.close.capacity);
101
+ ctx.stream.taSlots.set(slotId, slot);
102
+ }
103
+ const src = readSourceValue(source);
104
+ if (ctx.isTick) {
105
+ slot.outBuffer.replaceHead(tickValue(slot, src));
106
+ }
107
+ else {
108
+ slot.outBuffer.append(closeValue(slot, src));
109
+ }
110
+ return slot.series;
111
+ }
112
+ //# sourceMappingURL=median.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"median.js","sourceRoot":"","sources":["../../src/ta/median.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,yEAAyE;AACzE,mEAAmE;AACnE,0DAA0D;AAC1D,yEAAyE;AACzE,qEAAqE;AACrE,4DAA4D;AAC5D,mEAAmE;AACnE,qEAAqE;AACrE,oEAAoE;AACpE,gEAAgE;AAChE,iCAAiC;AAIjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAuB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAuB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAoB5E,SAAS,MAAM;IACX,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc,EAAE,QAAgB;IAC9C,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAClD,OAAO;QACH,SAAS;QACT,MAAM,EAAE,cAAc,CAAS,SAAS,CAAC;QACzC,MAAM;QACN,MAAM,EAAE,IAAI,iBAAiB,CAAC,MAAM,CAAC;QACrC,YAAY,EAAE,IAAI,YAAY,CAAC,MAAM,CAAC;KACzC,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,IAAgB,EAAE,YAAoB;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACX,CAAC,IAAI,CAAC,CAAC;QACX,CAAC;IACL,CAAC;IACD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IAC/B,iEAAiE;IACjE,8DAA8D;IAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;IACZ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB,EAAE,GAAW;IAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IACxD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,SAAS,CAAC,IAAgB,EAAE,GAAW;IAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IACxD,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,MAAM,CAClB,MAAc,EACd,MAAsB,EACtB,MAAc,EACd,KAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAA2B,CAAC;IACpE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { MfiOpts, Series } from "@invinite-org/chartlang-core";
2
+ /**
3
+ * Money Flow Index — volume-weighted RSI over a trailing window of
4
+ * `length` typical-price comparisons. Per-bar typical price `tp = (H +
5
+ * L + C) / 3`; per-bar money flow `mf = tp · volume` lands in the
6
+ * positive bucket when `tp > prevTp`, in the negative bucket when
7
+ * `tp < prevTp`, and is dropped on equality / first bar. The emit is
8
+ * `100 · sumPos / (sumPos + sumNeg)` once `length` such comparisons
9
+ * have accumulated; NaN before warmup and when `sumPos + sumNeg ===
10
+ * 0` (no flow either way — invinite's zero-denominator guard).
11
+ *
12
+ * Range `[0, 100]` when defined: `sumPos === 0` → 0 (perfect
13
+ * downflow); `sumNeg === 0` with `sumPos > 0` → 100 (perfect
14
+ * upflow). NaN OHLC / volume contributes 0 to both buckets (matches
15
+ * `cmf.ts:62-75`'s defensive shape).
16
+ *
17
+ * **Tick mode.** Substitutes the tick's (posMf, negMf) contribution
18
+ * for the head slot's stored values without mutating the trailing-
19
+ * window rings or advancing `prevTp` — mirrors `cmf.ts:125-138`.
20
+ *
21
+ * @formula tp = (high + low + close) / 3 ;
22
+ * mf = tp · volume ;
23
+ * pos = mf when tp > prevTp else 0 ;
24
+ * neg = mf when tp < prevTp else 0 ;
25
+ * mfi = 100 · Σ pos / (Σ pos + Σ neg) over the trailing `length` window
26
+ * @warmup length + 1 (one bar to seed prevTp + `length` comparisons)
27
+ * @since 0.2
28
+ * @stable
29
+ *
30
+ * `opts.offset` shifts the returned series (PLAN.md §9.1).
31
+ *
32
+ * @example
33
+ * // import { ta, plot } from "@invinite-org/chartlang-core";
34
+ * // const m = ta.mfi(14);
35
+ * // plot(m);
36
+ */
37
+ export declare function mfi(slotId: string, length: number, opts?: MfiOpts): Series<number>;
38
+ //# sourceMappingURL=mfi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mfi.d.ts","sourceRoot":"","sources":["../../src/ta/mfi.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AA+EpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CA+ClF"}
package/dist/ta/mfi.js ADDED
@@ -0,0 +1,152 @@
1
+ // Copyright (c) 2026 Invinite. Licensed under the MIT License.
2
+ // See the LICENSE file in the repo root for full license text.
3
+ //
4
+ // Ported from invinite/src/components/trading-chart/indicators/mfi.ts
5
+ // (commit 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite).
6
+ // Re-licensed MIT for chartlang. See PLAN.md §3.1 for the
7
+ // provenance contract; the math is the reference, the code style is not.
8
+ // Structural choices (callsite-id slot, Series<T> proxy, replaceHead
9
+ // mode) follow chartlang's primitive shape — NOT invinite's
10
+ // IndicatorPlugin shape. The rolling-window pos / neg money-flow sums
11
+ // follow the `cmf.ts` / `ulcerIndex.ts` "subtract head + add tick"
12
+ // tick-mode shape (no window mutation on tick).
13
+ import { Float64RingBuffer } from "../ringBuffer.js";
14
+ import { ACTIVE_RUNTIME_CONTEXT } from "../runtimeContext.js";
15
+ import { makeSeriesView, makeShiftedSeriesView } from "../seriesView.js";
16
+ function getCtx() {
17
+ const ctx = ACTIVE_RUNTIME_CONTEXT.current;
18
+ if (ctx === null) {
19
+ throw new Error("ta.mfi called outside an active script step");
20
+ }
21
+ return ctx;
22
+ }
23
+ function initSlot(length, capacity) {
24
+ const outBuffer = new Float64RingBuffer(capacity);
25
+ return {
26
+ outBuffer,
27
+ series: makeSeriesView(outBuffer),
28
+ shiftedViews: new Map(),
29
+ length,
30
+ posMfWindow: new Float64RingBuffer(length),
31
+ negMfWindow: new Float64RingBuffer(length),
32
+ sumPosMf: 0,
33
+ sumNegMf: 0,
34
+ prevTp: Number.NaN,
35
+ };
36
+ }
37
+ function viewForOffset(slot, offset) {
38
+ if (offset === 0)
39
+ return slot.series;
40
+ let view = slot.shiftedViews.get(offset);
41
+ if (view === undefined) {
42
+ view = makeShiftedSeriesView(slot.outBuffer, offset);
43
+ slot.shiftedViews.set(offset, view);
44
+ }
45
+ return view;
46
+ }
47
+ /**
48
+ * Per-bar typical-price contributions to the (posMF, negMF) split,
49
+ * given the prior typical price. NaN OHLC / volume → (0, 0). Equal
50
+ * `tp === prevTp` or first bar (`prevTp` NaN) → (0, 0) per Pine
51
+ * convention.
52
+ */
53
+ function bucketMf(tp, prevTp, volume) {
54
+ if (!Number.isFinite(tp) || !Number.isFinite(volume)) {
55
+ return { posMf: 0, negMf: 0 };
56
+ }
57
+ if (!Number.isFinite(prevTp) || tp === prevTp) {
58
+ return { posMf: 0, negMf: 0 };
59
+ }
60
+ const mf = tp * volume;
61
+ if (tp > prevTp)
62
+ return { posMf: mf, negMf: 0 };
63
+ return { posMf: 0, negMf: mf };
64
+ }
65
+ function emitMfi(sumPos, sumNeg, ready) {
66
+ if (!ready)
67
+ return Number.NaN;
68
+ const total = sumPos + sumNeg;
69
+ if (total === 0)
70
+ return Number.NaN;
71
+ return (100 * sumPos) / total;
72
+ }
73
+ /**
74
+ * Money Flow Index — volume-weighted RSI over a trailing window of
75
+ * `length` typical-price comparisons. Per-bar typical price `tp = (H +
76
+ * L + C) / 3`; per-bar money flow `mf = tp · volume` lands in the
77
+ * positive bucket when `tp > prevTp`, in the negative bucket when
78
+ * `tp < prevTp`, and is dropped on equality / first bar. The emit is
79
+ * `100 · sumPos / (sumPos + sumNeg)` once `length` such comparisons
80
+ * have accumulated; NaN before warmup and when `sumPos + sumNeg ===
81
+ * 0` (no flow either way — invinite's zero-denominator guard).
82
+ *
83
+ * Range `[0, 100]` when defined: `sumPos === 0` → 0 (perfect
84
+ * downflow); `sumNeg === 0` with `sumPos > 0` → 100 (perfect
85
+ * upflow). NaN OHLC / volume contributes 0 to both buckets (matches
86
+ * `cmf.ts:62-75`'s defensive shape).
87
+ *
88
+ * **Tick mode.** Substitutes the tick's (posMf, negMf) contribution
89
+ * for the head slot's stored values without mutating the trailing-
90
+ * window rings or advancing `prevTp` — mirrors `cmf.ts:125-138`.
91
+ *
92
+ * @formula tp = (high + low + close) / 3 ;
93
+ * mf = tp · volume ;
94
+ * pos = mf when tp > prevTp else 0 ;
95
+ * neg = mf when tp < prevTp else 0 ;
96
+ * mfi = 100 · Σ pos / (Σ pos + Σ neg) over the trailing `length` window
97
+ * @warmup length + 1 (one bar to seed prevTp + `length` comparisons)
98
+ * @since 0.2
99
+ * @stable
100
+ *
101
+ * `opts.offset` shifts the returned series (PLAN.md §9.1).
102
+ *
103
+ * @example
104
+ * // import { ta, plot } from "@invinite-org/chartlang-core";
105
+ * // const m = ta.mfi(14);
106
+ * // plot(m);
107
+ */
108
+ export function mfi(slotId, length, opts) {
109
+ const ctx = getCtx();
110
+ let slot = ctx.stream.taSlots.get(slotId);
111
+ if (slot === undefined) {
112
+ slot = initSlot(length, ctx.stream.ohlcv.close.capacity);
113
+ ctx.stream.taSlots.set(slotId, slot);
114
+ }
115
+ const offset = opts?.offset ?? 0;
116
+ const { high, low, close, volume } = ctx.stream.bar;
117
+ const tp = (high + low + close) / 3;
118
+ const { posMf, negMf } = bucketMf(tp, slot.prevTp, volume);
119
+ // The seed bar (prevTp NaN) contributes no real comparison — we
120
+ // skip the window append so the trailing window only ever holds
121
+ // `length` REAL (prevTp-defined) comparisons. First finite emit
122
+ // lands at bar `length` (warmup `length + 1` per the JSDoc).
123
+ const hasComparison = Number.isFinite(slot.prevTp);
124
+ if (ctx.isTick) {
125
+ const ready = slot.posMfWindow.length === slot.length;
126
+ if (!ready || !hasComparison) {
127
+ slot.outBuffer.replaceHead(Number.NaN);
128
+ return viewForOffset(slot, offset);
129
+ }
130
+ const headPos = slot.posMfWindow.at(0);
131
+ const headNeg = slot.negMfWindow.at(0);
132
+ const hypPos = slot.sumPosMf - headPos + posMf;
133
+ const hypNeg = slot.sumNegMf - headNeg + negMf;
134
+ slot.outBuffer.replaceHead(emitMfi(hypPos, hypNeg, true));
135
+ return viewForOffset(slot, offset);
136
+ }
137
+ if (hasComparison) {
138
+ if (slot.posMfWindow.length === slot.length) {
139
+ slot.sumPosMf -= slot.posMfWindow.at(slot.length - 1);
140
+ slot.sumNegMf -= slot.negMfWindow.at(slot.length - 1);
141
+ }
142
+ slot.posMfWindow.append(posMf);
143
+ slot.negMfWindow.append(negMf);
144
+ slot.sumPosMf += posMf;
145
+ slot.sumNegMf += negMf;
146
+ }
147
+ if (Number.isFinite(tp))
148
+ slot.prevTp = tp;
149
+ slot.outBuffer.append(emitMfi(slot.sumPosMf, slot.sumNegMf, slot.posMfWindow.length === slot.length));
150
+ return viewForOffset(slot, offset);
151
+ }
152
+ //# sourceMappingURL=mfi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mfi.js","sourceRoot":"","sources":["../../src/ta/mfi.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,mEAAmE;AACnE,0DAA0D;AAC1D,yEAAyE;AACzE,qEAAqE;AACrE,4DAA4D;AAC5D,sEAAsE;AACtE,mEAAmE;AACnE,gDAAgD;AAIhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAuB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAiBzE,SAAS,MAAM;IACX,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc,EAAE,QAAgB;IAC9C,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAClD,OAAO;QACH,SAAS;QACT,MAAM,EAAE,cAAc,CAAS,SAAS,CAAC;QACzC,YAAY,EAAE,IAAI,GAAG,EAAE;QACvB,MAAM;QACN,WAAW,EAAE,IAAI,iBAAiB,CAAC,MAAM,CAAC;QAC1C,WAAW,EAAE,IAAI,iBAAiB,CAAC,MAAM,CAAC;QAC1C,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,MAAM,CAAC,GAAG;KACrB,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,IAAa,EAAE,MAAc;IAChD,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrC,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,GAAG,qBAAqB,CAAS,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,EAAU,EAAE,MAAc,EAAE,MAAc;IACxD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QAC5C,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAClC,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IACvB,IAAI,EAAE,GAAG,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAChD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,OAAO,CAAC,MAAc,EAAE,MAAc,EAAE,KAAc;IAC3D,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9B,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IACnC,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,IAAc;IAC9D,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAwB,CAAC;IACjE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;IACjC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;IACpD,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3D,gEAAgE;IAChE,gEAAgE;IAChE,gEAAgE;IAChE,6DAA6D;IAC7D,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEnD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;QACtD,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvC,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;IAC3B,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,CACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CACjF,CAAC;IACF,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { MomentumOpts, Series } from "@invinite-org/chartlang-core";
2
+ import type { ScalarOrSeries } from "./lib/sourceValue.js";
3
+ /**
4
+ * Momentum (Pine `mom`) — first-difference `source[0] − source[length]`
5
+ * with a required `length`. Composes {@link change} via a sub-slot so
6
+ * the math kernel lives in one place; the returned `Series<number>` is
7
+ * the sub-slot's series view directly (parent slot just caches its
8
+ * identity for `===`-stable reads). Warmup is `length` bars.
9
+ *
10
+ * @formula out[t] = source[t] − source[t − length]
11
+ * @warmup length
12
+ * @since 0.2
13
+ * @stable
14
+ *
15
+ * @example
16
+ * // import { ta } from "@invinite-org/chartlang-runtime";
17
+ * // const m = ta.momentum("slot", bar.close, 10);
18
+ * // const head = m.current;
19
+ */
20
+ export declare function momentum(slotId: string, source: ScalarOrSeries, length: number, _opts?: MomentumOpts): Series<number>;
21
+ //# sourceMappingURL=momentum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"momentum.d.ts","sourceRoot":"","sources":["../../src/ta/momentum.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAIzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAc3D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,YAAY,GACrB,MAAM,CAAC,MAAM,CAAC,CAUhB"}
@@ -0,0 +1,46 @@
1
+ // Copyright (c) 2026 Invinite. Licensed under the MIT License.
2
+ // See the LICENSE file in the repo root for full license text.
3
+ //
4
+ // Ported from invinite/src/components/trading-chart/indicators/momentum.ts
5
+ // (commit 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite).
6
+ // Re-licensed MIT for chartlang. See PLAN.md §3.1 for the
7
+ // provenance contract; the math is the reference, the code style is not.
8
+ import { ACTIVE_RUNTIME_CONTEXT } from "../runtimeContext.js";
9
+ import { change } from "./change.js";
10
+ function getCtx() {
11
+ const ctx = ACTIVE_RUNTIME_CONTEXT.current;
12
+ if (ctx === null) {
13
+ throw new Error("ta.momentum called outside an active script step");
14
+ }
15
+ return ctx;
16
+ }
17
+ /**
18
+ * Momentum (Pine `mom`) — first-difference `source[0] − source[length]`
19
+ * with a required `length`. Composes {@link change} via a sub-slot so
20
+ * the math kernel lives in one place; the returned `Series<number>` is
21
+ * the sub-slot's series view directly (parent slot just caches its
22
+ * identity for `===`-stable reads). Warmup is `length` bars.
23
+ *
24
+ * @formula out[t] = source[t] − source[t − length]
25
+ * @warmup length
26
+ * @since 0.2
27
+ * @stable
28
+ *
29
+ * @example
30
+ * // import { ta } from "@invinite-org/chartlang-runtime";
31
+ * // const m = ta.momentum("slot", bar.close, 10);
32
+ * // const head = m.current;
33
+ */
34
+ export function momentum(slotId, source, length, _opts) {
35
+ const ctx = getCtx();
36
+ let slot = ctx.stream.taSlots.get(slotId);
37
+ if (slot === undefined) {
38
+ slot = { series: null };
39
+ ctx.stream.taSlots.set(slotId, slot);
40
+ }
41
+ const sub = change(`${slotId}/change`, source, { length });
42
+ if (slot.series === null)
43
+ slot.series = sub;
44
+ return slot.series;
45
+ }
46
+ //# sourceMappingURL=momentum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"momentum.js","sourceRoot":"","sources":["../../src/ta/momentum.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,0DAA0D;AAC1D,yEAAyE;AAIzE,OAAO,EAAE,sBAAsB,EAAuB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAOrC,SAAS,MAAM;IACX,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,QAAQ,CACpB,MAAc,EACd,MAAsB,EACtB,MAAc,EACd,KAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAA6B,CAAC;IACtE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACxB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,MAAM,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;QAAE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;IAC5C,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { NetVolumeOpts, Series } from "@invinite-org/chartlang-core";
2
+ /**
3
+ * Net Volume — cumulative `sign(close − prevClose) · volume`. **The
4
+ * math is identical to `ta.obv`** (both primitives ship in invinite
5
+ * under their own names; chartlang mirrors the public surface for
6
+ * naming parity). Prefer `ta.obv` when writing new scripts — this
7
+ * primitive exists to satisfy translation of Pine / invinite
8
+ * indicators that call `netVolume()` directly. The cross-equivalence
9
+ * is property-tested (`netVolume.property.test.ts`).
10
+ *
11
+ * First bar emits `0` (no prior close to difference against — Pine
12
+ * convention). NaN volume carries the accumulator forward without an
13
+ * update; NaN close holds `prevClose` at its prior value.
14
+ *
15
+ * **Tick mode.** Replays the head bar's contribution against a
16
+ * snapshot of the prior-close `(cumNetVol, prevClose)` tuple.
17
+ *
18
+ * @formula netVolume[t] = netVolume[t − 1] + sign(close[t] − close[t − 1]) · volume[t]
19
+ * @warmup 1 (needs a prior close to compute the delta; bar 0 emits 0)
20
+ * @since 0.2
21
+ * @stable
22
+ *
23
+ * `opts.offset` shifts the returned series (PLAN.md §9.1).
24
+ *
25
+ * @example
26
+ * // import { ta, plot } from "@invinite-org/chartlang-core";
27
+ * // const nv = ta.netVolume();
28
+ * // plot(nv);
29
+ */
30
+ export declare function netVolume(slotId: string, opts?: NetVolumeOpts): Series<number>;
31
+ //# sourceMappingURL=netVolume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"netVolume.d.ts","sourceRoot":"","sources":["../../src/ta/netVolume.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAwE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAuB9E"}