@invinite-org/chartlang-runtime 1.0.2 → 1.1.1

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 (567) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/README.md +10 -2
  3. package/dist/buildComputeContext.js.map +1 -1
  4. package/dist/createScriptRunner.d.ts +55 -4
  5. package/dist/createScriptRunner.d.ts.map +1 -1
  6. package/dist/createScriptRunner.js +103 -35
  7. package/dist/createScriptRunner.js.map +1 -1
  8. package/dist/dep/DepOutputStore.d.ts +92 -0
  9. package/dist/dep/DepOutputStore.d.ts.map +1 -0
  10. package/dist/dep/DepOutputStore.js +0 -0
  11. package/dist/dep/DepOutputStore.js.map +1 -0
  12. package/dist/dep/DepRunner.d.ts +146 -0
  13. package/dist/dep/DepRunner.d.ts.map +1 -0
  14. package/dist/dep/DepRunner.js +243 -0
  15. package/dist/dep/DepRunner.js.map +1 -0
  16. package/dist/dep/depOutput.d.ts +50 -0
  17. package/dist/dep/depOutput.d.ts.map +1 -0
  18. package/dist/dep/depOutput.js +92 -0
  19. package/dist/dep/depOutput.js.map +1 -0
  20. package/dist/dep/emissionFilter.d.ts +70 -0
  21. package/dist/dep/emissionFilter.d.ts.map +1 -0
  22. package/dist/dep/emissionFilter.js +105 -0
  23. package/dist/dep/emissionFilter.js.map +1 -0
  24. package/dist/dep/index.d.ts +8 -0
  25. package/dist/dep/index.d.ts.map +1 -0
  26. package/dist/dep/index.js +7 -0
  27. package/dist/dep/index.js.map +1 -0
  28. package/dist/emit/alert.js.map +1 -1
  29. package/dist/emit/alertConditionEmission.js.map +1 -1
  30. package/dist/emit/applyPlotOverride.d.ts +24 -0
  31. package/dist/emit/applyPlotOverride.d.ts.map +1 -0
  32. package/dist/emit/applyPlotOverride.js +48 -0
  33. package/dist/emit/applyPlotOverride.js.map +1 -0
  34. package/dist/emit/draw/annotations/arrow.js +1 -1
  35. package/dist/emit/draw/annotations/arrow.js.map +1 -1
  36. package/dist/emit/draw/annotations/arrowMarkDown.js +1 -1
  37. package/dist/emit/draw/annotations/arrowMarkDown.js.map +1 -1
  38. package/dist/emit/draw/annotations/arrowMarkUp.js +1 -1
  39. package/dist/emit/draw/annotations/arrowMarkUp.js.map +1 -1
  40. package/dist/emit/draw/annotations/arrowMarker.js +1 -1
  41. package/dist/emit/draw/annotations/arrowMarker.js.map +1 -1
  42. package/dist/emit/draw/annotations/text.js +1 -1
  43. package/dist/emit/draw/annotations/text.js.map +1 -1
  44. package/dist/emit/draw/boxes/circle.js +1 -1
  45. package/dist/emit/draw/boxes/circle.js.map +1 -1
  46. package/dist/emit/draw/boxes/ellipse.d.ts +1 -1
  47. package/dist/emit/draw/boxes/ellipse.js +1 -1
  48. package/dist/emit/draw/boxes/ellipse.js.map +1 -1
  49. package/dist/emit/draw/boxes/marker.js +1 -1
  50. package/dist/emit/draw/boxes/marker.js.map +1 -1
  51. package/dist/emit/draw/boxes/path.d.ts +1 -1
  52. package/dist/emit/draw/boxes/path.js +1 -1
  53. package/dist/emit/draw/boxes/path.js.map +1 -1
  54. package/dist/emit/draw/boxes/polyline.d.ts +1 -1
  55. package/dist/emit/draw/boxes/polyline.js +1 -1
  56. package/dist/emit/draw/boxes/polyline.js.map +1 -1
  57. package/dist/emit/draw/boxes/rectangle.js +1 -1
  58. package/dist/emit/draw/boxes/rectangle.js.map +1 -1
  59. package/dist/emit/draw/boxes/rotatedRectangle.js +1 -1
  60. package/dist/emit/draw/boxes/rotatedRectangle.js.map +1 -1
  61. package/dist/emit/draw/boxes/triangle.d.ts +1 -1
  62. package/dist/emit/draw/boxes/triangle.js +1 -1
  63. package/dist/emit/draw/boxes/triangle.js.map +1 -1
  64. package/dist/emit/draw/channels/disjointChannel.js +1 -1
  65. package/dist/emit/draw/channels/disjointChannel.js.map +1 -1
  66. package/dist/emit/draw/channels/flatTopBottom.d.ts +1 -2
  67. package/dist/emit/draw/channels/flatTopBottom.d.ts.map +1 -1
  68. package/dist/emit/draw/channels/flatTopBottom.js +1 -1
  69. package/dist/emit/draw/channels/flatTopBottom.js.map +1 -1
  70. package/dist/emit/draw/channels/regressionTrend.d.ts +3 -4
  71. package/dist/emit/draw/channels/regressionTrend.d.ts.map +1 -1
  72. package/dist/emit/draw/channels/regressionTrend.js +1 -1
  73. package/dist/emit/draw/channels/regressionTrend.js.map +1 -1
  74. package/dist/emit/draw/channels/trendChannel.js +1 -1
  75. package/dist/emit/draw/channels/trendChannel.js.map +1 -1
  76. package/dist/emit/draw/containers/frame.d.ts +1 -1
  77. package/dist/emit/draw/containers/frame.js +2 -2
  78. package/dist/emit/draw/containers/frame.js.map +1 -1
  79. package/dist/emit/draw/containers/group.d.ts +1 -2
  80. package/dist/emit/draw/containers/group.d.ts.map +1 -1
  81. package/dist/emit/draw/containers/group.js +2 -2
  82. package/dist/emit/draw/containers/group.js.map +1 -1
  83. package/dist/emit/draw/curves/arc.js +1 -1
  84. package/dist/emit/draw/curves/arc.js.map +1 -1
  85. package/dist/emit/draw/curves/brush.js +1 -1
  86. package/dist/emit/draw/curves/brush.js.map +1 -1
  87. package/dist/emit/draw/curves/curve.js +1 -1
  88. package/dist/emit/draw/curves/curve.js.map +1 -1
  89. package/dist/emit/draw/curves/doubleCurve.js +1 -1
  90. package/dist/emit/draw/curves/doubleCurve.js.map +1 -1
  91. package/dist/emit/draw/curves/highlighter.js +1 -1
  92. package/dist/emit/draw/curves/highlighter.js.map +1 -1
  93. package/dist/emit/draw/curves/pen.js +1 -1
  94. package/dist/emit/draw/curves/pen.js.map +1 -1
  95. package/dist/emit/draw/cycles/cyclicLines.js +1 -1
  96. package/dist/emit/draw/cycles/cyclicLines.js.map +1 -1
  97. package/dist/emit/draw/cycles/sineLine.js +1 -1
  98. package/dist/emit/draw/cycles/sineLine.js.map +1 -1
  99. package/dist/emit/draw/cycles/timeCycles.js +1 -1
  100. package/dist/emit/draw/cycles/timeCycles.js.map +1 -1
  101. package/dist/emit/draw/elliott/elliottCorrectionWave.js +1 -1
  102. package/dist/emit/draw/elliott/elliottCorrectionWave.js.map +1 -1
  103. package/dist/emit/draw/elliott/elliottDoubleCombo.js +1 -1
  104. package/dist/emit/draw/elliott/elliottDoubleCombo.js.map +1 -1
  105. package/dist/emit/draw/elliott/elliottImpulseWave.js +1 -1
  106. package/dist/emit/draw/elliott/elliottImpulseWave.js.map +1 -1
  107. package/dist/emit/draw/elliott/elliottTriangleWave.js +1 -1
  108. package/dist/emit/draw/elliott/elliottTriangleWave.js.map +1 -1
  109. package/dist/emit/draw/elliott/elliottTripleCombo.js +1 -1
  110. package/dist/emit/draw/elliott/elliottTripleCombo.js.map +1 -1
  111. package/dist/emit/draw/fibA/fibChannel.js +1 -1
  112. package/dist/emit/draw/fibA/fibChannel.js.map +1 -1
  113. package/dist/emit/draw/fibA/fibRetracement.js +1 -1
  114. package/dist/emit/draw/fibA/fibRetracement.js.map +1 -1
  115. package/dist/emit/draw/fibA/fibTimeZone.d.ts +1 -2
  116. package/dist/emit/draw/fibA/fibTimeZone.d.ts.map +1 -1
  117. package/dist/emit/draw/fibA/fibTimeZone.js +1 -1
  118. package/dist/emit/draw/fibA/fibTimeZone.js.map +1 -1
  119. package/dist/emit/draw/fibA/fibTrendExtension.js +1 -1
  120. package/dist/emit/draw/fibA/fibTrendExtension.js.map +1 -1
  121. package/dist/emit/draw/fibA/fibWedge.js +1 -1
  122. package/dist/emit/draw/fibA/fibWedge.js.map +1 -1
  123. package/dist/emit/draw/fibB/fibCircles.d.ts +1 -2
  124. package/dist/emit/draw/fibB/fibCircles.d.ts.map +1 -1
  125. package/dist/emit/draw/fibB/fibCircles.js +1 -1
  126. package/dist/emit/draw/fibB/fibCircles.js.map +1 -1
  127. package/dist/emit/draw/fibB/fibSpeedArcs.js +1 -1
  128. package/dist/emit/draw/fibB/fibSpeedArcs.js.map +1 -1
  129. package/dist/emit/draw/fibB/fibSpeedFan.js +1 -1
  130. package/dist/emit/draw/fibB/fibSpeedFan.js.map +1 -1
  131. package/dist/emit/draw/fibB/fibSpiral.d.ts +1 -2
  132. package/dist/emit/draw/fibB/fibSpiral.d.ts.map +1 -1
  133. package/dist/emit/draw/fibB/fibSpiral.js +1 -1
  134. package/dist/emit/draw/fibB/fibSpiral.js.map +1 -1
  135. package/dist/emit/draw/fibB/fibTrendTime.d.ts +1 -2
  136. package/dist/emit/draw/fibB/fibTrendTime.d.ts.map +1 -1
  137. package/dist/emit/draw/fibB/fibTrendTime.js +1 -1
  138. package/dist/emit/draw/fibB/fibTrendTime.js.map +1 -1
  139. package/dist/emit/draw/gann/gannBox.js +1 -1
  140. package/dist/emit/draw/gann/gannBox.js.map +1 -1
  141. package/dist/emit/draw/gann/gannFan.js +1 -1
  142. package/dist/emit/draw/gann/gannFan.js.map +1 -1
  143. package/dist/emit/draw/gann/gannSquare.js +1 -1
  144. package/dist/emit/draw/gann/gannSquare.js.map +1 -1
  145. package/dist/emit/draw/gann/gannSquareFixed.js +1 -1
  146. package/dist/emit/draw/gann/gannSquareFixed.js.map +1 -1
  147. package/dist/emit/draw/handle.d.ts +2 -2
  148. package/dist/emit/draw/handle.js +2 -2
  149. package/dist/emit/draw/handle.js.map +1 -1
  150. package/dist/emit/draw/index.js.map +1 -1
  151. package/dist/emit/draw/lines/crossLine.js +1 -1
  152. package/dist/emit/draw/lines/crossLine.js.map +1 -1
  153. package/dist/emit/draw/lines/horizontalLine.d.ts +1 -1
  154. package/dist/emit/draw/lines/horizontalLine.js +1 -1
  155. package/dist/emit/draw/lines/horizontalLine.js.map +1 -1
  156. package/dist/emit/draw/lines/horizontalRay.js +1 -1
  157. package/dist/emit/draw/lines/horizontalRay.js.map +1 -1
  158. package/dist/emit/draw/lines/line.d.ts +1 -1
  159. package/dist/emit/draw/lines/line.d.ts.map +1 -1
  160. package/dist/emit/draw/lines/line.js +2 -3
  161. package/dist/emit/draw/lines/line.js.map +1 -1
  162. package/dist/emit/draw/lines/trendAngle.js +1 -1
  163. package/dist/emit/draw/lines/trendAngle.js.map +1 -1
  164. package/dist/emit/draw/lines/verticalLine.js +1 -1
  165. package/dist/emit/draw/lines/verticalLine.js.map +1 -1
  166. package/dist/emit/draw/namespace.d.ts +1 -1
  167. package/dist/emit/draw/namespace.js +1 -1
  168. package/dist/emit/draw/namespace.js.map +1 -1
  169. package/dist/emit/draw/patterns/abcdPattern.js +1 -1
  170. package/dist/emit/draw/patterns/abcdPattern.js.map +1 -1
  171. package/dist/emit/draw/patterns/cypherPattern.d.ts +1 -2
  172. package/dist/emit/draw/patterns/cypherPattern.d.ts.map +1 -1
  173. package/dist/emit/draw/patterns/cypherPattern.js +1 -1
  174. package/dist/emit/draw/patterns/cypherPattern.js.map +1 -1
  175. package/dist/emit/draw/patterns/headAndShoulders.js +1 -1
  176. package/dist/emit/draw/patterns/headAndShoulders.js.map +1 -1
  177. package/dist/emit/draw/patterns/threeDrivesPattern.js +1 -1
  178. package/dist/emit/draw/patterns/threeDrivesPattern.js.map +1 -1
  179. package/dist/emit/draw/patterns/trianglePattern.d.ts +1 -1
  180. package/dist/emit/draw/patterns/trianglePattern.js +1 -1
  181. package/dist/emit/draw/patterns/trianglePattern.js.map +1 -1
  182. package/dist/emit/draw/patterns/xabcdPattern.js +1 -1
  183. package/dist/emit/draw/patterns/xabcdPattern.js.map +1 -1
  184. package/dist/emit/draw/pitchforks/pitchfan.js +1 -1
  185. package/dist/emit/draw/pitchforks/pitchfan.js.map +1 -1
  186. package/dist/emit/draw/pitchforks/pitchfork.d.ts +1 -1
  187. package/dist/emit/draw/pitchforks/pitchfork.js +2 -2
  188. package/dist/emit/draw/pitchforks/pitchfork.js.map +1 -1
  189. package/dist/emit/draw/pushDrawing.js.map +1 -1
  190. package/dist/emit/draw/subIdAllocator.d.ts +1 -1
  191. package/dist/emit/draw/subIdAllocator.js +1 -1
  192. package/dist/emit/draw/subIdAllocator.js.map +1 -1
  193. package/dist/emit/draw/table/table.d.ts +1 -1
  194. package/dist/emit/draw/table/table.js.map +1 -1
  195. package/dist/emit/emissionsQueue.js.map +1 -1
  196. package/dist/emit/hash.js.map +1 -1
  197. package/dist/emit/hline.d.ts +6 -4
  198. package/dist/emit/hline.d.ts.map +1 -1
  199. package/dist/emit/hline.js +5 -2
  200. package/dist/emit/hline.js.map +1 -1
  201. package/dist/emit/index.d.ts +2 -1
  202. package/dist/emit/index.d.ts.map +1 -1
  203. package/dist/emit/index.js +2 -1
  204. package/dist/emit/index.js.map +1 -1
  205. package/dist/emit/logEmission.js.map +1 -1
  206. package/dist/emit/paneResolver.d.ts +52 -11
  207. package/dist/emit/paneResolver.d.ts.map +1 -1
  208. package/dist/emit/paneResolver.js +69 -26
  209. package/dist/emit/paneResolver.js.map +1 -1
  210. package/dist/emit/plot.d.ts.map +1 -1
  211. package/dist/emit/plot.js +2 -1
  212. package/dist/emit/plot.js.map +1 -1
  213. package/dist/emit/runtimeError.js.map +1 -1
  214. package/dist/execution/dispose.d.ts.map +1 -1
  215. package/dist/execution/dispose.js +7 -0
  216. package/dist/execution/dispose.js.map +1 -1
  217. package/dist/execution/drain.js.map +1 -1
  218. package/dist/execution/index.js.map +1 -1
  219. package/dist/execution/onBarClose.d.ts +9 -13
  220. package/dist/execution/onBarClose.d.ts.map +1 -1
  221. package/dist/execution/onBarClose.js +28 -59
  222. package/dist/execution/onBarClose.js.map +1 -1
  223. package/dist/execution/onBarTick.d.ts +4 -10
  224. package/dist/execution/onBarTick.d.ts.map +1 -1
  225. package/dist/execution/onBarTick.js +24 -57
  226. package/dist/execution/onBarTick.js.map +1 -1
  227. package/dist/execution/onHistory.js.map +1 -1
  228. package/dist/execution/runComputeStep.d.ts +68 -0
  229. package/dist/execution/runComputeStep.d.ts.map +1 -0
  230. package/dist/execution/runComputeStep.js +96 -0
  231. package/dist/execution/runComputeStep.js.map +1 -0
  232. package/dist/execution/secondaryStream.js.map +1 -1
  233. package/dist/index.d.ts +3 -1
  234. package/dist/index.d.ts.map +1 -1
  235. package/dist/index.js +2 -1
  236. package/dist/index.js.map +1 -1
  237. package/dist/inputs/index.js.map +1 -1
  238. package/dist/inputs/resolveInputs.js.map +1 -1
  239. package/dist/internal.d.ts +12 -0
  240. package/dist/internal.d.ts.map +1 -0
  241. package/dist/internal.js +14 -0
  242. package/dist/internal.js.map +1 -0
  243. package/dist/persistentStateStore.js.map +1 -1
  244. package/dist/persistentStateStore.runtime.d.ts +18 -4
  245. package/dist/persistentStateStore.runtime.d.ts.map +1 -1
  246. package/dist/persistentStateStore.runtime.js +111 -18
  247. package/dist/persistentStateStore.runtime.js.map +1 -1
  248. package/dist/persistentStateStore.validate.d.ts +11 -1
  249. package/dist/persistentStateStore.validate.d.ts.map +1 -1
  250. package/dist/persistentStateStore.validate.js +32 -3
  251. package/dist/persistentStateStore.validate.js.map +1 -1
  252. package/dist/primitives.js.map +1 -1
  253. package/dist/request/alignHtfSeriesCache.js.map +1 -1
  254. package/dist/request/alignHtfSeriesToLtf.d.ts +2 -2
  255. package/dist/request/alignHtfSeriesToLtf.js +2 -2
  256. package/dist/request/alignHtfSeriesToLtf.js.map +1 -1
  257. package/dist/request/bucketLtfBarsByMainContainment.js.map +1 -1
  258. package/dist/request/bucketLtfBarsCache.js.map +1 -1
  259. package/dist/request/index.js.map +1 -1
  260. package/dist/request/lowerTf.js.map +1 -1
  261. package/dist/request/pushOnce.js.map +1 -1
  262. package/dist/request/requestNamespace.js.map +1 -1
  263. package/dist/request/security.js.map +1 -1
  264. package/dist/request/streamBars.js.map +1 -1
  265. package/dist/ringBuffer.d.ts +2 -2
  266. package/dist/ringBuffer.js +1 -1
  267. package/dist/ringBuffer.js.map +1 -1
  268. package/dist/runtimeContext.d.ts +65 -7
  269. package/dist/runtimeContext.d.ts.map +1 -1
  270. package/dist/runtimeContext.js.map +1 -1
  271. package/dist/seriesView.d.ts +1 -1
  272. package/dist/seriesView.js +1 -1
  273. package/dist/seriesView.js.map +1 -1
  274. package/dist/state/index.js.map +1 -1
  275. package/dist/state/lifecycle.js.map +1 -1
  276. package/dist/state/stateNamespace.d.ts.map +1 -1
  277. package/dist/state/stateNamespace.js +13 -2
  278. package/dist/state/stateNamespace.js.map +1 -1
  279. package/dist/state/stateSlot.js.map +1 -1
  280. package/dist/stateStore.d.ts +7 -4
  281. package/dist/stateStore.d.ts.map +1 -1
  282. package/dist/stateStore.js.map +1 -1
  283. package/dist/streamState.d.ts +1 -1
  284. package/dist/streamState.js +1 -1
  285. package/dist/streamState.js.map +1 -1
  286. package/dist/ta/adl.js +2 -2
  287. package/dist/ta/adl.js.map +1 -1
  288. package/dist/ta/adr.d.ts +3 -3
  289. package/dist/ta/adr.js +5 -5
  290. package/dist/ta/adr.js.map +1 -1
  291. package/dist/ta/adx.d.ts +1 -1
  292. package/dist/ta/adx.js +3 -3
  293. package/dist/ta/adx.js.map +1 -1
  294. package/dist/ta/alma.d.ts +3 -3
  295. package/dist/ta/alma.js +5 -5
  296. package/dist/ta/alma.js.map +1 -1
  297. package/dist/ta/anchoredVolumeProfile.js.map +1 -1
  298. package/dist/ta/anchoredVwap.d.ts +1 -1
  299. package/dist/ta/anchoredVwap.js +3 -3
  300. package/dist/ta/anchoredVwap.js.map +1 -1
  301. package/dist/ta/ao.js +2 -2
  302. package/dist/ta/ao.js.map +1 -1
  303. package/dist/ta/aroon.js +2 -2
  304. package/dist/ta/aroon.js.map +1 -1
  305. package/dist/ta/aroonOsc.js +2 -2
  306. package/dist/ta/aroonOsc.js.map +1 -1
  307. package/dist/ta/atr.d.ts +1 -1
  308. package/dist/ta/atr.js +3 -3
  309. package/dist/ta/atr.js.map +1 -1
  310. package/dist/ta/barssince.js +1 -1
  311. package/dist/ta/barssince.js.map +1 -1
  312. package/dist/ta/bb.d.ts +1 -1
  313. package/dist/ta/bb.js +3 -3
  314. package/dist/ta/bb.js.map +1 -1
  315. package/dist/ta/bbPercentB.js +2 -2
  316. package/dist/ta/bbPercentB.js.map +1 -1
  317. package/dist/ta/bbw.js +2 -2
  318. package/dist/ta/bbw.js.map +1 -1
  319. package/dist/ta/bop.js +2 -2
  320. package/dist/ta/bop.js.map +1 -1
  321. package/dist/ta/cci.js +2 -2
  322. package/dist/ta/cci.js.map +1 -1
  323. package/dist/ta/chaikinOsc.d.ts +1 -1
  324. package/dist/ta/chaikinOsc.js +3 -3
  325. package/dist/ta/chaikinOsc.js.map +1 -1
  326. package/dist/ta/chandeKrollStop.d.ts +1 -1
  327. package/dist/ta/chandeKrollStop.js +3 -3
  328. package/dist/ta/chandeKrollStop.js.map +1 -1
  329. package/dist/ta/chandelier.d.ts +1 -1
  330. package/dist/ta/chandelier.js +3 -3
  331. package/dist/ta/chandelier.js.map +1 -1
  332. package/dist/ta/change.js +1 -1
  333. package/dist/ta/change.js.map +1 -1
  334. package/dist/ta/chop.js +2 -2
  335. package/dist/ta/chop.js.map +1 -1
  336. package/dist/ta/cmf.js +2 -2
  337. package/dist/ta/cmf.js.map +1 -1
  338. package/dist/ta/cmo.js +2 -2
  339. package/dist/ta/cmo.js.map +1 -1
  340. package/dist/ta/connorsRsi.d.ts +1 -1
  341. package/dist/ta/connorsRsi.js +3 -3
  342. package/dist/ta/connorsRsi.js.map +1 -1
  343. package/dist/ta/coppock.js +2 -2
  344. package/dist/ta/coppock.js.map +1 -1
  345. package/dist/ta/crossover.d.ts +1 -1
  346. package/dist/ta/crossover.js +2 -2
  347. package/dist/ta/crossover.js.map +1 -1
  348. package/dist/ta/crossunder.d.ts +1 -1
  349. package/dist/ta/crossunder.js +2 -2
  350. package/dist/ta/crossunder.js.map +1 -1
  351. package/dist/ta/dema.js +2 -2
  352. package/dist/ta/dema.js.map +1 -1
  353. package/dist/ta/dmi.d.ts +1 -1
  354. package/dist/ta/dmi.js +3 -3
  355. package/dist/ta/dmi.js.map +1 -1
  356. package/dist/ta/donchian.js +2 -2
  357. package/dist/ta/donchian.js.map +1 -1
  358. package/dist/ta/dpo.js +2 -2
  359. package/dist/ta/dpo.js.map +1 -1
  360. package/dist/ta/ema.d.ts +1 -1
  361. package/dist/ta/ema.js +3 -3
  362. package/dist/ta/ema.js.map +1 -1
  363. package/dist/ta/envelope.js +2 -2
  364. package/dist/ta/envelope.js.map +1 -1
  365. package/dist/ta/eom.d.ts +1 -1
  366. package/dist/ta/eom.js +3 -3
  367. package/dist/ta/eom.js.map +1 -1
  368. package/dist/ta/fisher.js +2 -2
  369. package/dist/ta/fisher.js.map +1 -1
  370. package/dist/ta/fixedRangeVolumeProfile.js.map +1 -1
  371. package/dist/ta/highest.js +1 -1
  372. package/dist/ta/highest.js.map +1 -1
  373. package/dist/ta/historicalVolatility.d.ts +1 -1
  374. package/dist/ta/historicalVolatility.js +3 -3
  375. package/dist/ta/historicalVolatility.js.map +1 -1
  376. package/dist/ta/hma.js +2 -2
  377. package/dist/ta/hma.js.map +1 -1
  378. package/dist/ta/ichimoku.d.ts +1 -1
  379. package/dist/ta/ichimoku.js +3 -3
  380. package/dist/ta/ichimoku.js.map +1 -1
  381. package/dist/ta/index.js.map +1 -1
  382. package/dist/ta/kama.js +2 -2
  383. package/dist/ta/kama.js.map +1 -1
  384. package/dist/ta/keltner.js +2 -2
  385. package/dist/ta/keltner.js.map +1 -1
  386. package/dist/ta/klinger.js +2 -2
  387. package/dist/ta/klinger.js.map +1 -1
  388. package/dist/ta/kst.js +2 -2
  389. package/dist/ta/kst.js.map +1 -1
  390. package/dist/ta/lib/adxFromDi.js +2 -2
  391. package/dist/ta/lib/adxFromDi.js.map +1 -1
  392. package/dist/ta/lib/applyOffset.js +2 -2
  393. package/dist/ta/lib/applyOffset.js.map +1 -1
  394. package/dist/ta/lib/computeMa.js +2 -2
  395. package/dist/ta/lib/computeMa.js.map +1 -1
  396. package/dist/ta/lib/computeMaOfFloat64.js +2 -2
  397. package/dist/ta/lib/computeMaOfFloat64.js.map +1 -1
  398. package/dist/ta/lib/directionalState.js +2 -2
  399. package/dist/ta/lib/directionalState.js.map +1 -1
  400. package/dist/ta/lib/donchianMid.js +2 -2
  401. package/dist/ta/lib/donchianMid.js.map +1 -1
  402. package/dist/ta/lib/emaFloat64.js +2 -2
  403. package/dist/ta/lib/emaFloat64.js.map +1 -1
  404. package/dist/ta/lib/linearRegression.js +2 -2
  405. package/dist/ta/lib/linearRegression.js.map +1 -1
  406. package/dist/ta/lib/maTypes.js.map +1 -1
  407. package/dist/ta/lib/pearson.js +2 -2
  408. package/dist/ta/lib/pearson.js.map +1 -1
  409. package/dist/ta/lib/pickCandleSource.js +2 -2
  410. package/dist/ta/lib/pickCandleSource.js.map +1 -1
  411. package/dist/ta/lib/readSourceField.js +2 -2
  412. package/dist/ta/lib/readSourceField.js.map +1 -1
  413. package/dist/ta/lib/rollingStddev.js +2 -2
  414. package/dist/ta/lib/rollingStddev.js.map +1 -1
  415. package/dist/ta/lib/smaFloat64.js +2 -2
  416. package/dist/ta/lib/smaFloat64.js.map +1 -1
  417. package/dist/ta/lib/smmaFloat64.js +2 -2
  418. package/dist/ta/lib/smmaFloat64.js.map +1 -1
  419. package/dist/ta/lib/sourceValue.js.map +1 -1
  420. package/dist/ta/lib/trSeries.js +2 -2
  421. package/dist/ta/lib/trSeries.js.map +1 -1
  422. package/dist/ta/lib/volume-profile/bucketEdges.js.map +1 -1
  423. package/dist/ta/lib/volume-profile/bucketizeVolume.js.map +1 -1
  424. package/dist/ta/lib/volume-profile/developingSeries.js.map +1 -1
  425. package/dist/ta/lib/volume-profile/index.js.map +1 -1
  426. package/dist/ta/lib/volume-profile/intercept.js.map +1 -1
  427. package/dist/ta/lib/volume-profile/scaffold.js.map +1 -1
  428. package/dist/ta/lib/volume-profile/tooHeavy.js.map +1 -1
  429. package/dist/ta/lib/volume-profile/types.js.map +1 -1
  430. package/dist/ta/lib/volume-profile/valueArea.js.map +1 -1
  431. package/dist/ta/lib/volume-profile/volumeProfileShared.js.map +1 -1
  432. package/dist/ta/lib/vwmaFloat64.js +2 -2
  433. package/dist/ta/lib/vwmaFloat64.js.map +1 -1
  434. package/dist/ta/lib/wilderDirectional.js +2 -2
  435. package/dist/ta/lib/wilderDirectional.js.map +1 -1
  436. package/dist/ta/lib/wilderSmoothing.js +2 -2
  437. package/dist/ta/lib/wilderSmoothing.js.map +1 -1
  438. package/dist/ta/lib/wmaFloat64.js +2 -2
  439. package/dist/ta/lib/wmaFloat64.js.map +1 -1
  440. package/dist/ta/lowest.js +1 -1
  441. package/dist/ta/lowest.js.map +1 -1
  442. package/dist/ta/lsma.js +2 -2
  443. package/dist/ta/lsma.js.map +1 -1
  444. package/dist/ta/maRibbon.js +2 -2
  445. package/dist/ta/maRibbon.js.map +1 -1
  446. package/dist/ta/macd.d.ts +1 -1
  447. package/dist/ta/macd.js +4 -4
  448. package/dist/ta/macd.js.map +1 -1
  449. package/dist/ta/massIndex.d.ts +1 -1
  450. package/dist/ta/massIndex.js +3 -3
  451. package/dist/ta/massIndex.js.map +1 -1
  452. package/dist/ta/mcginley.js +2 -2
  453. package/dist/ta/mcginley.js.map +1 -1
  454. package/dist/ta/median.js +2 -2
  455. package/dist/ta/median.js.map +1 -1
  456. package/dist/ta/mfi.d.ts +1 -1
  457. package/dist/ta/mfi.js +3 -3
  458. package/dist/ta/mfi.js.map +1 -1
  459. package/dist/ta/momentum.js +2 -2
  460. package/dist/ta/momentum.js.map +1 -1
  461. package/dist/ta/netVolume.d.ts +1 -1
  462. package/dist/ta/netVolume.js +3 -3
  463. package/dist/ta/netVolume.js.map +1 -1
  464. package/dist/ta/nvi.d.ts +1 -1
  465. package/dist/ta/nvi.js +3 -3
  466. package/dist/ta/nvi.js.map +1 -1
  467. package/dist/ta/nz.js +1 -1
  468. package/dist/ta/nz.js.map +1 -1
  469. package/dist/ta/obv.js +2 -2
  470. package/dist/ta/obv.js.map +1 -1
  471. package/dist/ta/persistence.js.map +1 -1
  472. package/dist/ta/pivotsHighLow.js +2 -2
  473. package/dist/ta/pivotsHighLow.js.map +1 -1
  474. package/dist/ta/pivotsStandard.d.ts +1 -1
  475. package/dist/ta/pivotsStandard.js +3 -3
  476. package/dist/ta/pivotsStandard.js.map +1 -1
  477. package/dist/ta/pmo.js +2 -2
  478. package/dist/ta/pmo.js.map +1 -1
  479. package/dist/ta/ppo.d.ts +1 -1
  480. package/dist/ta/ppo.js +3 -3
  481. package/dist/ta/ppo.js.map +1 -1
  482. package/dist/ta/psar.js +2 -2
  483. package/dist/ta/psar.js.map +1 -1
  484. package/dist/ta/pvi.d.ts +1 -1
  485. package/dist/ta/pvi.js +3 -3
  486. package/dist/ta/pvi.js.map +1 -1
  487. package/dist/ta/pvo.d.ts +1 -1
  488. package/dist/ta/pvo.js +3 -3
  489. package/dist/ta/pvo.js.map +1 -1
  490. package/dist/ta/pvt.d.ts +1 -1
  491. package/dist/ta/pvt.js +3 -3
  492. package/dist/ta/pvt.js.map +1 -1
  493. package/dist/ta/registry.js.map +1 -1
  494. package/dist/ta/roc.js +2 -2
  495. package/dist/ta/roc.js.map +1 -1
  496. package/dist/ta/rsi.d.ts +1 -1
  497. package/dist/ta/rsi.js +3 -3
  498. package/dist/ta/rsi.js.map +1 -1
  499. package/dist/ta/rvgi.js +2 -2
  500. package/dist/ta/rvgi.js.map +1 -1
  501. package/dist/ta/rvi.d.ts +1 -1
  502. package/dist/ta/rvi.js +3 -3
  503. package/dist/ta/rvi.js.map +1 -1
  504. package/dist/ta/sessionVolumeProfile.js.map +1 -1
  505. package/dist/ta/sma.d.ts +1 -1
  506. package/dist/ta/sma.js +3 -3
  507. package/dist/ta/sma.js.map +1 -1
  508. package/dist/ta/smi.js +2 -2
  509. package/dist/ta/smi.js.map +1 -1
  510. package/dist/ta/smma.js +2 -2
  511. package/dist/ta/smma.js.map +1 -1
  512. package/dist/ta/stdev.d.ts +1 -1
  513. package/dist/ta/stdev.js +3 -3
  514. package/dist/ta/stdev.js.map +1 -1
  515. package/dist/ta/stoch.js +2 -2
  516. package/dist/ta/stoch.js.map +1 -1
  517. package/dist/ta/stochRsi.js +2 -2
  518. package/dist/ta/stochRsi.js.map +1 -1
  519. package/dist/ta/supertrend.d.ts +1 -1
  520. package/dist/ta/supertrend.js +3 -3
  521. package/dist/ta/supertrend.js.map +1 -1
  522. package/dist/ta/tema.js +2 -2
  523. package/dist/ta/tema.js.map +1 -1
  524. package/dist/ta/trendStrengthIndex.d.ts +2 -2
  525. package/dist/ta/trendStrengthIndex.js +4 -4
  526. package/dist/ta/trendStrengthIndex.js.map +1 -1
  527. package/dist/ta/trix.d.ts +1 -1
  528. package/dist/ta/trix.js +3 -3
  529. package/dist/ta/trix.js.map +1 -1
  530. package/dist/ta/tsi.js +2 -2
  531. package/dist/ta/tsi.js.map +1 -1
  532. package/dist/ta/ulcerIndex.js +2 -2
  533. package/dist/ta/ulcerIndex.js.map +1 -1
  534. package/dist/ta/ultimateOsc.js +2 -2
  535. package/dist/ta/ultimateOsc.js.map +1 -1
  536. package/dist/ta/valuewhen.js +1 -1
  537. package/dist/ta/valuewhen.js.map +1 -1
  538. package/dist/ta/visibleRangeVolumeProfile.d.ts +2 -2
  539. package/dist/ta/visibleRangeVolumeProfile.js +2 -2
  540. package/dist/ta/visibleRangeVolumeProfile.js.map +1 -1
  541. package/dist/ta/vol.js +2 -2
  542. package/dist/ta/vol.js.map +1 -1
  543. package/dist/ta/volatilityStop.d.ts +1 -1
  544. package/dist/ta/volatilityStop.js +3 -3
  545. package/dist/ta/volatilityStop.js.map +1 -1
  546. package/dist/ta/vortex.d.ts +1 -1
  547. package/dist/ta/vortex.js +3 -3
  548. package/dist/ta/vortex.js.map +1 -1
  549. package/dist/ta/vwap.d.ts +3 -3
  550. package/dist/ta/vwap.js +5 -5
  551. package/dist/ta/vwap.js.map +1 -1
  552. package/dist/ta/vwma.js +2 -2
  553. package/dist/ta/vwma.js.map +1 -1
  554. package/dist/ta/williamsFractal.js +2 -2
  555. package/dist/ta/williamsFractal.js.map +1 -1
  556. package/dist/ta/williamsR.js +2 -2
  557. package/dist/ta/williamsR.js.map +1 -1
  558. package/dist/ta/wma.js +2 -2
  559. package/dist/ta/wma.js.map +1 -1
  560. package/dist/ta/zigZag.js +2 -2
  561. package/dist/ta/zigZag.js.map +1 -1
  562. package/dist/views/barstateView.js.map +1 -1
  563. package/dist/views/index.js.map +1 -1
  564. package/dist/views/refreshRuntimeViews.js.map +1 -1
  565. package/dist/views/symInfoView.js.map +1 -1
  566. package/dist/views/timeframeView.js.map +1 -1
  567. package/package.json +7 -3
@@ -1 +1 @@
1
- {"version":3,"file":"psar.js","sourceRoot":"","sources":["../../src/ta/psar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"psar.js","sourceRoot":"","sources":["../../src/ta/psar.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Ported from invinite/src/components/trading-chart/indicators/psar.ts\n// (commit 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite).\n// Re-licensed MIT for chartlang. The math is the reference, the code\n// style is not.\n// Structural choices (callsite-id slot, Series<T> proxy, replaceHead\n// mode) follow chartlang's primitive shape — NOT invinite's\n// IndicatorPlugin shape. PSAR reads `bar.high` / `bar.low` /\n// `bar.close` directly (mirrors Pine's `ta.psar` which has no source\n// param). The recurrence runs incrementally one bar at a time;\n// tick-mode replays the recurrence from a per-bar snapshot of the\n// state at the start of the current bar so a partial-bar tick doesn't\n// pollute the next close's flip detection.\n\nimport type { PsarOpts, PsarResult } from \"@invinite-org/chartlang-core\";\n\nimport { Float64RingBuffer } from \"../ringBuffer.js\";\nimport { ACTIVE_RUNTIME_CONTEXT, type RuntimeContext } from \"../runtimeContext.js\";\nimport { makeSeriesView } from \"../seriesView.js\";\n\nconst DEFAULT_ACC_START = 0.02;\nconst DEFAULT_ACC_STEP = 0.02;\nconst DEFAULT_ACC_MAX = 0.2;\n\nconst TREND_UP = 1;\nconst TREND_DOWN = -1;\n\ntype Trend = 1 | -1;\n\ntype PsarSlot = {\n readonly outputs: PsarResult;\n readonly sarBuffer: Float64RingBuffer;\n readonly directionBuffer: Float64RingBuffer;\n readonly accStart: number;\n readonly accStep: number;\n readonly accMax: number;\n /** Number of CLOSED bars folded into the slot so far. */\n barCount: number;\n // Live recurrence state — advanced on every close, snapshotted to\n // `prevClosed*` BEFORE the close runs the recurrence so a final\n // tick can replay from the seed.\n trend: Trend;\n ep: number;\n af: number;\n sar: number;\n /** Most recent CLOSED bar's high (i.e. bar at index `barCount - 1`). */\n prevHigh: number;\n /** Most recent CLOSED bar's low. */\n prevLow: number;\n /** The bar BEFORE prevHigh — i.e. the high 2 bars ago. */\n priorHigh: number;\n /** The bar BEFORE prevLow — i.e. the low 2 bars ago. */\n priorLow: number;\n /** The close of the most recent CLOSED bar — used by bar-1's\n * direction-decide step on the NEXT close (this is \"prevClose\"). */\n prevClose: number;\n // Snapshot-at-start-of-current-bar — captured each close BEFORE\n // the recurrence advances the live fields. Tick replays from\n // these so the next close sees the original seed.\n prevClosedTrend: Trend;\n prevClosedEp: number;\n prevClosedAf: number;\n prevClosedSar: number;\n prevClosedPrevHigh: number;\n prevClosedPrevLow: number;\n prevClosedPriorHigh: number;\n prevClosedPriorLow: number;\n prevClosedPrevClose: number;\n prevClosedBarCount: number;\n};\n\nfunction getCtx(): RuntimeContext {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) {\n throw new Error(\"ta.psar called outside an active script step\");\n }\n return ctx;\n}\n\nfunction initSlot(capacity: number, accStart: number, accStep: number, accMax: number): PsarSlot {\n const sarBuffer = new Float64RingBuffer(capacity);\n const directionBuffer = new Float64RingBuffer(capacity);\n return {\n outputs: Object.freeze({\n sar: makeSeriesView<number>(sarBuffer),\n direction: makeSeriesView<number>(directionBuffer),\n }),\n sarBuffer,\n directionBuffer,\n accStart,\n accStep,\n accMax,\n barCount: 0,\n trend: TREND_UP,\n ep: Number.NaN,\n af: accStart,\n sar: Number.NaN,\n prevHigh: Number.NaN,\n prevLow: Number.NaN,\n priorHigh: Number.NaN,\n priorLow: Number.NaN,\n prevClose: Number.NaN,\n prevClosedTrend: TREND_UP,\n prevClosedEp: Number.NaN,\n prevClosedAf: accStart,\n prevClosedSar: Number.NaN,\n prevClosedPrevHigh: Number.NaN,\n prevClosedPrevLow: Number.NaN,\n prevClosedPriorHigh: Number.NaN,\n prevClosedPriorLow: Number.NaN,\n prevClosedPrevClose: Number.NaN,\n prevClosedBarCount: 0,\n };\n}\n\nfunction snapshot(slot: PsarSlot): void {\n slot.prevClosedTrend = slot.trend;\n slot.prevClosedEp = slot.ep;\n slot.prevClosedAf = slot.af;\n slot.prevClosedSar = slot.sar;\n slot.prevClosedPrevHigh = slot.prevHigh;\n slot.prevClosedPrevLow = slot.prevLow;\n slot.prevClosedPriorHigh = slot.priorHigh;\n slot.prevClosedPriorLow = slot.priorLow;\n slot.prevClosedPrevClose = slot.prevClose;\n slot.prevClosedBarCount = slot.barCount;\n}\n\n/**\n * Run one bar of the recurrence given the prior CLOSED-bar state\n * (`prevTrend` / `prevEp` / `prevAf` / `prevSar` / `prevHigh` /\n * `prevLow` / `priorHigh` / `priorLow`) and the new bar's\n * `high` / `low`. Returns `{ trend, ep, af, sar }` for the new bar.\n * Used by both the close-side advance and the tick-side replay.\n */\nfunction recurrenceStep(\n prevTrend: Trend,\n prevEp: number,\n prevAf: number,\n prevSar: number,\n prevHigh: number,\n prevLow: number,\n priorHigh: number,\n priorLow: number,\n high: number,\n low: number,\n accStart: number,\n accStep: number,\n accMax: number,\n): { trend: Trend; ep: number; af: number; sar: number } {\n let candidateSar = prevSar + prevAf * (prevEp - prevSar);\n\n if (prevTrend === TREND_UP) {\n const lowerBound = Math.min(prevLow, priorLow);\n if (candidateSar > lowerBound) candidateSar = lowerBound;\n\n if (low <= candidateSar) {\n // Flip to downtrend: SAR becomes the prior EP, new EP is\n // this bar's low, AF resets.\n return { trend: TREND_DOWN, ep: low, af: accStart, sar: prevEp };\n }\n let ep = prevEp;\n let af = prevAf;\n if (high > prevEp) {\n ep = high;\n af = Math.min(prevAf + accStep, accMax);\n }\n return { trend: TREND_UP, ep, af, sar: candidateSar };\n }\n\n // prevTrend === TREND_DOWN\n const upperBound = Math.max(prevHigh, priorHigh);\n if (candidateSar < upperBound) candidateSar = upperBound;\n\n if (high >= candidateSar) {\n return { trend: TREND_UP, ep: high, af: accStart, sar: prevEp };\n }\n let ep = prevEp;\n let af = prevAf;\n if (low < prevEp) {\n ep = low;\n af = Math.min(prevAf + accStep, accMax);\n }\n return { trend: TREND_DOWN, ep, af, sar: candidateSar };\n}\n\nfunction closeStep(\n slot: PsarSlot,\n high: number,\n low: number,\n close: number,\n): { sar: number; direction: number } {\n // NaN suspends state: do not advance any of the live recurrence\n // fields. The snapshot remains the prior bar's state so the next\n // finite close picks up exactly where the last finite close left\n // off.\n if (!Number.isFinite(high) || !Number.isFinite(low) || !Number.isFinite(close)) {\n return { sar: Number.NaN, direction: Number.NaN };\n }\n\n // Snapshot the live state BEFORE any mutation so a tick-mode\n // replay (which arrives AFTER the close-side advance for the\n // same bar) sees the start-of-bar state.\n snapshot(slot);\n slot.barCount += 1;\n\n // First finite bar: seed slot. Invinite uses\n // `sar[0] = candles[0].low`, `trend[0] = TREND_UP`. The internal\n // recurrence state is initialised to `ep = high` (the initial\n // EP for an up-trend), `af = accStart`, with `prevHigh / prevLow\n // / priorHigh / priorLow` all set to this bar's H/L (no bar -1).\n if (slot.prevClosedBarCount === 0) {\n slot.trend = TREND_UP;\n slot.sar = low;\n slot.ep = high;\n slot.af = slot.accStart;\n slot.prevHigh = high;\n slot.prevLow = low;\n slot.priorHigh = high;\n slot.priorLow = low;\n slot.prevClose = close;\n return { sar: low, direction: TREND_UP };\n }\n\n // Second finite bar: decide initial direction by comparing this\n // bar's close to the prior CLOSED bar's close. Re-seed `ep` and\n // `sar` per the chosen direction.\n if (slot.prevClosedBarCount === 1) {\n const direction: Trend = close >= slot.prevClose ? TREND_UP : TREND_DOWN;\n slot.trend = direction;\n if (direction === TREND_UP) {\n slot.ep = high;\n slot.sar = slot.prevLow;\n } else {\n slot.ep = low;\n slot.sar = slot.prevHigh;\n }\n slot.af = slot.accStart;\n // Now run the recurrence for this bar starting from the just-\n // re-seeded `(trend, ep, af, sar)` with priorH/L = prevH/L\n // (only one prior bar exists).\n const step = recurrenceStep(\n slot.trend,\n slot.ep,\n slot.af,\n slot.sar,\n slot.prevHigh,\n slot.prevLow,\n slot.prevHigh,\n slot.prevLow,\n high,\n low,\n slot.accStart,\n slot.accStep,\n slot.accMax,\n );\n slot.trend = step.trend;\n slot.ep = step.ep;\n slot.af = step.af;\n slot.sar = step.sar;\n // Shift the look-back window forward.\n slot.priorHigh = slot.prevHigh;\n slot.priorLow = slot.prevLow;\n slot.prevHigh = high;\n slot.prevLow = low;\n slot.prevClose = close;\n return { sar: step.sar, direction: step.trend };\n }\n\n // Third finite bar onward: standard recurrence.\n const step = recurrenceStep(\n slot.trend,\n slot.ep,\n slot.af,\n slot.sar,\n slot.prevHigh,\n slot.prevLow,\n slot.priorHigh,\n slot.priorLow,\n high,\n low,\n slot.accStart,\n slot.accStep,\n slot.accMax,\n );\n slot.trend = step.trend;\n slot.ep = step.ep;\n slot.af = step.af;\n slot.sar = step.sar;\n slot.priorHigh = slot.prevHigh;\n slot.priorLow = slot.prevLow;\n slot.prevHigh = high;\n slot.prevLow = low;\n slot.prevClose = close;\n return { sar: step.sar, direction: step.trend };\n}\n\nfunction tickStep(\n slot: PsarSlot,\n high: number,\n low: number,\n close: number,\n): { sar: number; direction: number } {\n if (!Number.isFinite(high) || !Number.isFinite(low) || !Number.isFinite(close)) {\n return { sar: Number.NaN, direction: Number.NaN };\n }\n // Replay from the snapshot taken at the start of the current\n // CLOSED bar. The snapshot's `prevClosedBarCount` tells us which\n // branch of `closeStep` to mirror.\n const seedBarCount = slot.prevClosedBarCount;\n if (seedBarCount === 0) {\n // The current bar is the FIRST closed bar — its tick replay\n // is the seed itself, with the tick's low as the sar.\n return { sar: low, direction: TREND_UP };\n }\n if (seedBarCount === 1) {\n const direction: Trend = close >= slot.prevClosedPrevClose ? TREND_UP : TREND_DOWN;\n let ep: number;\n let sar: number;\n if (direction === TREND_UP) {\n ep = high;\n sar = slot.prevClosedPrevLow;\n } else {\n ep = low;\n sar = slot.prevClosedPrevHigh;\n }\n const af = slot.accStart;\n const step = recurrenceStep(\n direction,\n ep,\n af,\n sar,\n slot.prevClosedPrevHigh,\n slot.prevClosedPrevLow,\n slot.prevClosedPrevHigh,\n slot.prevClosedPrevLow,\n high,\n low,\n slot.accStart,\n slot.accStep,\n slot.accMax,\n );\n return { sar: step.sar, direction: step.trend };\n }\n const step = recurrenceStep(\n slot.prevClosedTrend,\n slot.prevClosedEp,\n slot.prevClosedAf,\n slot.prevClosedSar,\n slot.prevClosedPrevHigh,\n slot.prevClosedPrevLow,\n slot.prevClosedPriorHigh,\n slot.prevClosedPriorLow,\n high,\n low,\n slot.accStart,\n slot.accStep,\n slot.accMax,\n );\n return { sar: step.sar, direction: step.trend };\n}\n\n/**\n * Parabolic SAR — Wilder's classic stop-and-reverse oscillator with\n * extreme-point + acceleration-factor tracking. Reads `bar.high` /\n * `bar.low` / `bar.close` directly (no `source` arg — mirrors Pine).\n * Returns a cached `{ sar, direction }` record (same identity every\n * bar). `direction` is `+1` (uptrend) / `-1` (downtrend), NaN during\n * NaN-suspension. Warmup is `1` — bar 0 emits the seed value\n * (`sar = bar.low`, `direction = +1`); bar 1 decides the initial\n * direction from `close[1] >= close[0]` and runs the recurrence; bar\n * 2+ continues the recurrence.\n *\n * NaN inputs SUSPEND the recurrence: any non-finite OHL emits NaN /\n * NaN and freezes the live state so the next finite bar resumes from\n * the prior state. Replay-mode (`replaceHead`) recomputes from the\n * snapshot captured at the start of the current bar, so a final tick\n * cannot poison the next close's seed.\n *\n * @formula candidateSar = prevSar + prevAf · (prevEp − prevSar) ;\n * up-trend clamp: candidateSar ≤ min(prevLow, priorLow) ;\n * down-trend clamp: candidateSar ≥ max(prevHigh, priorHigh) ;\n * flip (up→down): bar.low ≤ candidateSar → sar = prevEp, ep = low, af = accStart ;\n * flip (down→up): bar.high ≥ candidateSar → sar = prevEp, ep = high, af = accStart ;\n * EP advance: new extreme widens ep, af = min(af + accStep, accMax)\n * @warmup 1\n * @anchors accelerationStart, accelerationStep, accelerationMax\n * @since 0.2\n * @stable\n *\n * @example\n * // import { ta } from \"@invinite-org/chartlang-core\";\n * // const p = ta.psar({ accelerationStart: 0.02, accelerationStep: 0.02, accelerationMax: 0.2 });\n * // plot(p.sar);\n */\nexport function psar(slotId: string, opts?: PsarOpts): PsarResult {\n const ctx = getCtx();\n let slot = ctx.stream.taSlots.get(slotId) as PsarSlot | undefined;\n if (slot === undefined) {\n const accStart = opts?.accelerationStart ?? DEFAULT_ACC_START;\n const accStep = opts?.accelerationStep ?? DEFAULT_ACC_STEP;\n const accMax = opts?.accelerationMax ?? DEFAULT_ACC_MAX;\n slot = initSlot(ctx.stream.ohlcv.close.capacity, accStart, accStep, accMax);\n ctx.stream.taSlots.set(slotId, slot);\n }\n const high = ctx.stream.bar.high;\n const low = ctx.stream.bar.low;\n const close = ctx.stream.bar.close;\n if (ctx.isTick) {\n const { sar, direction } = tickStep(slot, high, low, close);\n slot.sarBuffer.replaceHead(sar);\n slot.directionBuffer.replaceHead(direction);\n } else {\n const { sar, direction } = closeStep(slot, high, low, close);\n slot.sarBuffer.append(sar);\n slot.directionBuffer.append(direction);\n }\n return slot.outputs;\n}\n"]}
package/dist/ta/pvi.d.ts CHANGED
@@ -21,7 +21,7 @@ import type { PviOpts, Series } from "@invinite-org/chartlang-core";
21
21
  * @since 0.2
22
22
  * @stable
23
23
  *
24
- * `opts.offset` shifts the returned series (PLAN.md §9.1).
24
+ * `opts.offset` shifts the returned series.
25
25
  *
26
26
  * @example
27
27
  * // import { ta, plot } from "@invinite-org/chartlang-core";
package/dist/ta/pvi.js CHANGED
@@ -3,8 +3,8 @@
3
3
  //
4
4
  // Ported from invinite/src/components/trading-chart/indicators/pvi.ts
5
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.
6
+ // Re-licensed MIT for chartlang. The math is the reference, the code
7
+ // style is not.
8
8
  // Structural choices (callsite-id slot, Series<T> proxy, replaceHead
9
9
  // mode) follow chartlang's primitive shape — NOT invinite's
10
10
  // IndicatorPlugin shape. Mirror of `nvi.ts` — same recurrence, the
@@ -93,7 +93,7 @@ function fold(inValue, inPrevClose, inPrevVolume, close, volume) {
93
93
  * @since 0.2
94
94
  * @stable
95
95
  *
96
- * `opts.offset` shifts the returned series (PLAN.md §9.1).
96
+ * `opts.offset` shifts the returned series.
97
97
  *
98
98
  * @example
99
99
  * // import { ta, plot } from "@invinite-org/chartlang-core";
@@ -1 +1 @@
1
- {"version":3,"file":"pvi.js","sourceRoot":"","sources":["../../src/ta/pvi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pvi.js","sourceRoot":"","sources":["../../src/ta/pvi.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Ported from invinite/src/components/trading-chart/indicators/pvi.ts\n// (commit 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite).\n// Re-licensed MIT for chartlang. The math is the reference, the code\n// style is not.\n// Structural choices (callsite-id slot, Series<T> proxy, replaceHead\n// mode) follow chartlang's primitive shape — NOT invinite's\n// IndicatorPlugin shape. Mirror of `nvi.ts` — same recurrence, the\n// only difference is the volume-comparison predicate (`>` vs `<`).\n// Kept as parallel files (rather than a shared helper) so each\n// primitive has its own slot type + JSDoc + per-callsite tests.\n\nimport type { PviOpts, Series } from \"@invinite-org/chartlang-core\";\n\nimport { Float64RingBuffer } from \"../ringBuffer.js\";\nimport { ACTIVE_RUNTIME_CONTEXT, type RuntimeContext } from \"../runtimeContext.js\";\nimport { makeSeriesView, makeShiftedSeriesView } from \"../seriesView.js\";\n\n/**\n * Anchored seed value at bar 0 (and after any bar where the\n * accumulator has been carried-forward through NaN inputs).\n *\n * @anchors seedValue\n */\nconst SEED_VALUE = 1000;\n\ntype PviSlot = {\n readonly outBuffer: Float64RingBuffer;\n readonly series: Series<number>;\n readonly shiftedViews: Map<number, Series<number>>;\n value: number;\n prevClose: number;\n prevVolume: number;\n prevClosedValue: number;\n prevClosedPrevClose: number;\n prevClosedPrevVolume: number;\n};\n\nfunction getCtx(): RuntimeContext {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) {\n throw new Error(\"ta.pvi called outside an active script step\");\n }\n return ctx;\n}\n\nfunction initSlot(capacity: number): PviSlot {\n const outBuffer = new Float64RingBuffer(capacity);\n return {\n outBuffer,\n series: makeSeriesView<number>(outBuffer),\n shiftedViews: new Map(),\n value: SEED_VALUE,\n prevClose: Number.NaN,\n prevVolume: Number.NaN,\n prevClosedValue: SEED_VALUE,\n prevClosedPrevClose: Number.NaN,\n prevClosedPrevVolume: Number.NaN,\n };\n}\n\nfunction viewForOffset(slot: PviSlot, offset: number): Series<number> {\n if (offset === 0) return slot.series;\n let view = slot.shiftedViews.get(offset);\n if (view === undefined) {\n view = makeShiftedSeriesView<number>(slot.outBuffer, offset);\n slot.shiftedViews.set(offset, view);\n }\n return view;\n}\n\nfunction safeVol(volume: number): number {\n return Number.isFinite(volume) ? volume : 0;\n}\n\nfunction fold(\n inValue: number,\n inPrevClose: number,\n inPrevVolume: number,\n close: number,\n volume: number,\n): { value: number; prevClose: number; prevVolume: number } {\n if (!Number.isFinite(close)) {\n return { value: inValue, prevClose: inPrevClose, prevVolume: inPrevVolume };\n }\n const v = safeVol(volume);\n if (!Number.isFinite(inPrevClose)) {\n return { value: inValue, prevClose: close, prevVolume: v };\n }\n const pv = safeVol(inPrevVolume);\n const shouldUpdate = v > pv;\n if (!shouldUpdate || inPrevClose === 0) {\n return { value: inValue, prevClose: close, prevVolume: v };\n }\n const next = inValue * (1 + (close - inPrevClose) / inPrevClose);\n return { value: next, prevClose: close, prevVolume: v };\n}\n\n/**\n * Positive Volume Index — mirror of {@link nvi}. Cumulative percentage-\n * change in close on bars whose volume is strictly HIGHER than the\n * prior bar's; bars with equal-or-lower volume carry the prior PVI\n * value unchanged. Seeded at 1000.\n *\n * NaN volume is treated as 0 (matches invinite's `safeVolume` shape);\n * NaN close carries the accumulator forward without advancing\n * `prevClose`.\n *\n * **Tick mode.** Replays the head bar's contribution against a\n * snapshot of the prior-close `(value, prevClose, prevVolume)` tuple.\n *\n * @formula pvi[0] = 1000 ;\n * pvi[t] = (volume[t] > volume[t − 1] && prevClose != 0)\n * ? pvi[t − 1] · (1 + (close[t] − close[t − 1]) / close[t − 1])\n * : pvi[t − 1]\n * @warmup 1 (bar 0 emits the 1000 seed)\n * @anchors seedValue\n * @since 0.2\n * @stable\n *\n * `opts.offset` shifts the returned series.\n *\n * @example\n * // import { ta, plot } from \"@invinite-org/chartlang-core\";\n * // const p = ta.pvi();\n * // plot(p);\n */\nexport function pvi(slotId: string, opts?: PviOpts): Series<number> {\n const ctx = getCtx();\n let slot = ctx.stream.taSlots.get(slotId) as PviSlot | undefined;\n if (slot === undefined) {\n slot = initSlot(ctx.stream.ohlcv.close.capacity);\n ctx.stream.taSlots.set(slotId, slot);\n }\n const offset = opts?.offset ?? 0;\n const { close, volume } = ctx.stream.bar;\n\n if (ctx.isTick) {\n const next = fold(\n slot.prevClosedValue,\n slot.prevClosedPrevClose,\n slot.prevClosedPrevVolume,\n close,\n volume,\n );\n slot.outBuffer.replaceHead(next.value);\n return viewForOffset(slot, offset);\n }\n\n slot.prevClosedValue = slot.value;\n slot.prevClosedPrevClose = slot.prevClose;\n slot.prevClosedPrevVolume = slot.prevVolume;\n const next = fold(slot.value, slot.prevClose, slot.prevVolume, close, volume);\n slot.value = next.value;\n slot.prevClose = next.prevClose;\n slot.prevVolume = next.prevVolume;\n slot.outBuffer.append(slot.value);\n return viewForOffset(slot, offset);\n}\n"]}
package/dist/ta/pvo.d.ts CHANGED
@@ -23,7 +23,7 @@ import type { PvoOpts, PvoResult } from "@invinite-org/chartlang-core";
23
23
  * @since 0.2
24
24
  * @stable
25
25
  *
26
- * `opts.offset` shifts all three outputs in lockstep (PLAN.md §9.1).
26
+ * `opts.offset` shifts all three outputs in lockstep.
27
27
  *
28
28
  * @example
29
29
  * // import { ta, plot } from "@invinite-org/chartlang-runtime";
package/dist/ta/pvo.js CHANGED
@@ -3,8 +3,8 @@
3
3
  //
4
4
  // Ported from invinite/src/components/trading-chart/indicators/pvo.ts
5
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.
6
+ // Re-licensed MIT for chartlang. The math is the reference, the code
7
+ // style is not.
8
8
  // Structural choices (callsite-id slot, Series<T> proxy, replaceHead
9
9
  // mode) follow chartlang's primitive shape — NOT invinite's
10
10
  // IndicatorPlugin shape. Per §9.4 we fold invinite's private EMA
@@ -83,7 +83,7 @@ function pvoValue(fast, slow) {
83
83
  * @since 0.2
84
84
  * @stable
85
85
  *
86
- * `opts.offset` shifts all three outputs in lockstep (PLAN.md §9.1).
86
+ * `opts.offset` shifts all three outputs in lockstep.
87
87
  *
88
88
  * @example
89
89
  * // import { ta, plot } from "@invinite-org/chartlang-runtime";
@@ -1 +1 @@
1
- {"version":3,"file":"pvo.js","sourceRoot":"","sources":["../../src/ta/pvo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pvo.js","sourceRoot":"","sources":["../../src/ta/pvo.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Ported from invinite/src/components/trading-chart/indicators/pvo.ts\n// (commit 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite).\n// Re-licensed MIT for chartlang. The math is the reference, the code\n// style is not.\n// Structural choices (callsite-id slot, Series<T> proxy, replaceHead\n// mode) follow chartlang's primitive shape — NOT invinite's\n// IndicatorPlugin shape. Per §9.4 we fold invinite's private EMA\n// copies onto the canonical `ta.ema` primitive via three sub-slots\n// (`${slotId}/fast`, `${slotId}/slow`, `${slotId}/signal`) — same\n// composition pattern as `ta.ppo`.\n\nimport type { PvoOpts, PvoResult, Series } from \"@invinite-org/chartlang-core\";\n\nimport { Float64RingBuffer } from \"../ringBuffer.js\";\nimport { ACTIVE_RUNTIME_CONTEXT, type RuntimeContext } from \"../runtimeContext.js\";\nimport { makeSeriesView, makeShiftedSeriesView } from \"../seriesView.js\";\nimport { ema } from \"./ema.js\";\n\nconst DEFAULT_FAST = 12;\nconst DEFAULT_SLOW = 26;\nconst DEFAULT_SIGNAL = 9;\n\ntype PvoSlot = {\n readonly result: PvoResult;\n readonly pvoBuf: Float64RingBuffer;\n readonly histBuf: Float64RingBuffer;\n /**\n * Reference to the signal-EMA sub-slot's output ring buffer —\n * captured once at first call so per-offset shifted signal views\n * skip a re-entry into `ema(...)` (which would double-advance the\n * sub-slot's compute). Same pattern as `ppo.ts` / `macd.ts`.\n */\n readonly signalBuf: Float64RingBuffer;\n readonly shiftedResults: Map<number, PvoResult>;\n};\n\nfunction getCtx(): RuntimeContext {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) {\n throw new Error(\"ta.pvo called outside an active script step\");\n }\n return ctx;\n}\n\nfunction initSlot(\n capacity: number,\n signalSeries: Series<number>,\n signalBuf: Float64RingBuffer,\n): PvoSlot {\n const pvoBuf = new Float64RingBuffer(capacity);\n const histBuf = new Float64RingBuffer(capacity);\n return {\n result: Object.freeze({\n pvo: makeSeriesView<number>(pvoBuf),\n signal: signalSeries,\n hist: makeSeriesView<number>(histBuf),\n }),\n pvoBuf,\n histBuf,\n signalBuf,\n shiftedResults: new Map(),\n };\n}\n\nfunction resultForOffset(slot: PvoSlot, offset: number): PvoResult {\n if (offset === 0) return slot.result;\n let cached = slot.shiftedResults.get(offset);\n if (cached === undefined) {\n cached = Object.freeze({\n pvo: makeShiftedSeriesView<number>(slot.pvoBuf, offset),\n signal: makeShiftedSeriesView<number>(slot.signalBuf, offset),\n hist: makeShiftedSeriesView<number>(slot.histBuf, offset),\n });\n slot.shiftedResults.set(offset, cached);\n }\n return cached;\n}\n\nfunction pvoValue(fast: number, slow: number): number {\n if (!Number.isFinite(fast) || !Number.isFinite(slow) || slow === 0) return Number.NaN;\n return (100 * (fast - slow)) / slow;\n}\n\n/**\n * Percentage Volume Oscillator — MACD shape applied to `bar.volume`\n * and normalised by the slow EMA so the histogram + lines are\n * scale-invariant across symbols. Composes three `ta.ema` sub-slots\n * (`${slotId}/fast`, `${slotId}/slow`, `${slotId}/signal`); a fix to\n * `ta.ema` flows in for free. Multi-output: `{ pvo, signal, hist }`.\n * The registry records `primarySeriesKey: \"pvo\"`,\n * `visibleSeriesKeys: [\"pvo\", \"signal\", \"hist\"]`, and `yDomain: {\n * kind: \"auto\" }` via `TA_REGISTRY_METADATA`.\n *\n * Defaults `{ fastLength: 12, slowLength: 26, signalLength: 9 }`\n * (Appel-era — matches MACD / PPO). `slow === 0` (no volume in the\n * slow window) emits NaN on the PVO line, which propagates to hist;\n * signal can still be defined off prior PVO values.\n *\n * @formula fast = ema(volume, fastLength) ;\n * slow = ema(volume, slowLength) ;\n * pvo = 100 · (fast − slow) / slow ; NaN if slow === 0 ;\n * signal = ema(pvo, signalLength) ;\n * hist = pvo − signal\n * @warmup slowLength + signalLength − 2\n * @since 0.2\n * @stable\n *\n * `opts.offset` shifts all three outputs in lockstep.\n *\n * @example\n * // import { ta, plot } from \"@invinite-org/chartlang-runtime\";\n * // const p = ta.pvo(\"slot\");\n * // plot(p.pvo); plot(p.signal); plot(p.hist);\n */\nexport function pvo(slotId: string, opts?: PvoOpts): PvoResult {\n const ctx = getCtx();\n const fastLength = opts?.fastLength ?? DEFAULT_FAST;\n const slowLength = opts?.slowLength ?? DEFAULT_SLOW;\n const signalLength = opts?.signalLength ?? DEFAULT_SIGNAL;\n const offset = opts?.offset ?? 0;\n const signalSlotId = `${slotId}/signal`;\n const volume = ctx.stream.bar.volume;\n const fastSeries = ema(`${slotId}/fast`, volume, fastLength);\n const slowSeries = ema(`${slotId}/slow`, volume, slowLength);\n const pv = pvoValue(fastSeries.current, slowSeries.current);\n const signalSeries = ema(signalSlotId, pv, signalLength);\n\n let slot = ctx.stream.taSlots.get(slotId) as PvoSlot | undefined;\n if (slot === undefined) {\n const emaSlot = ctx.stream.taSlots.get(signalSlotId) as { outBuffer: Float64RingBuffer };\n slot = initSlot(ctx.stream.ohlcv.close.capacity, signalSeries, emaSlot.outBuffer);\n ctx.stream.taSlots.set(slotId, slot);\n }\n const sig = signalSeries.current;\n const histValue = Number.isFinite(pv) && Number.isFinite(sig) ? pv - sig : Number.NaN;\n if (ctx.isTick) {\n slot.pvoBuf.replaceHead(pv);\n slot.histBuf.replaceHead(histValue);\n } else {\n slot.pvoBuf.append(pv);\n slot.histBuf.append(histValue);\n }\n return resultForOffset(slot, offset);\n}\n"]}
package/dist/ta/pvt.d.ts CHANGED
@@ -15,7 +15,7 @@ import type { PvtOpts, Series } from "@invinite-org/chartlang-core";
15
15
  * @since 0.2
16
16
  * @stable
17
17
  *
18
- * `opts.offset` shifts the returned series (PLAN.md §9.1).
18
+ * `opts.offset` shifts the returned series.
19
19
  *
20
20
  * @example
21
21
  * // import { ta, plot } from "@invinite-org/chartlang-core";
package/dist/ta/pvt.js CHANGED
@@ -3,8 +3,8 @@
3
3
  //
4
4
  // Ported from invinite/src/components/trading-chart/indicators/pvt.ts
5
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.
6
+ // Re-licensed MIT for chartlang. The math is the reference, the code
7
+ // style is not.
8
8
  // Structural choices (callsite-id slot, Series<T> proxy, replaceHead
9
9
  // mode) follow chartlang's primitive shape — NOT invinite's
10
10
  // IndicatorPlugin shape. The runtime emits the RAW PVT cumulative
@@ -96,7 +96,7 @@ function fold(inCum, inPrevClose, close, volume) {
96
96
  * @since 0.2
97
97
  * @stable
98
98
  *
99
- * `opts.offset` shifts the returned series (PLAN.md §9.1).
99
+ * `opts.offset` shifts the returned series.
100
100
  *
101
101
  * @example
102
102
  * // import { ta, plot } from "@invinite-org/chartlang-core";
@@ -1 +1 @@
1
- {"version":3,"file":"pvt.js","sourceRoot":"","sources":["../../src/ta/pvt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pvt.js","sourceRoot":"","sources":["../../src/ta/pvt.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Ported from invinite/src/components/trading-chart/indicators/pvt.ts\n// (commit 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite).\n// Re-licensed MIT for chartlang. The math is the reference, the code\n// style is not.\n// Structural choices (callsite-id slot, Series<T> proxy, replaceHead\n// mode) follow chartlang's primitive shape — NOT invinite's\n// IndicatorPlugin shape. The runtime emits the RAW PVT cumulative\n// only; invinite's optional smoothing block is left to the script\n// author (`ta.ema(ta.pvt(), n)` etc.).\n\nimport type { PvtOpts, Series } from \"@invinite-org/chartlang-core\";\n\nimport { Float64RingBuffer } from \"../ringBuffer.js\";\nimport { ACTIVE_RUNTIME_CONTEXT, type RuntimeContext } from \"../runtimeContext.js\";\nimport { makeSeriesView, makeShiftedSeriesView } from \"../seriesView.js\";\n\ntype PvtSlot = {\n readonly outBuffer: Float64RingBuffer;\n readonly series: Series<number>;\n readonly shiftedViews: Map<number, Series<number>>;\n /** Active cumulative PVT across the closed bars so far. */\n cumPvt: number;\n /** Most recent finite close (the lookback target for the next delta). */\n prevClose: number;\n /** Snapshot of `cumPvt` BEFORE the most recent close-side update. */\n prevClosedCumPvt: number;\n /** Snapshot of `prevClose` BEFORE the most recent close-side update. */\n prevClosedPrevClose: number;\n};\n\nfunction getCtx(): RuntimeContext {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) {\n throw new Error(\"ta.pvt called outside an active script step\");\n }\n return ctx;\n}\n\nfunction initSlot(capacity: number): PvtSlot {\n const outBuffer = new Float64RingBuffer(capacity);\n return {\n outBuffer,\n series: makeSeriesView<number>(outBuffer),\n shiftedViews: new Map(),\n cumPvt: 0,\n prevClose: Number.NaN,\n prevClosedCumPvt: 0,\n prevClosedPrevClose: Number.NaN,\n };\n}\n\nfunction viewForOffset(slot: PvtSlot, offset: number): Series<number> {\n if (offset === 0) return slot.series;\n let view = slot.shiftedViews.get(offset);\n if (view === undefined) {\n view = makeShiftedSeriesView<number>(slot.outBuffer, offset);\n slot.shiftedViews.set(offset, view);\n }\n return view;\n}\n\n/**\n * Per-bar PVT contribution `volume · (close − prevClose) / prevClose`.\n * Zero `prevClose` is a sentinel for \"undefined ratio\": we surface NaN\n * so the output bar carries a NaN, AND signal the caller (via\n * `Number.isNaN`) to carry `cumPvt` forward without an update. NaN\n * volume contributes 0; NaN close → 0 (caller short-circuits).\n */\nfunction contribution(prevClose: number, close: number, volume: number): number {\n if (prevClose === 0) return Number.NaN;\n const v = Number.isFinite(volume) ? volume : 0;\n return (v * (close - prevClose)) / prevClose;\n}\n\n/**\n * Fold the given bar into the prior `(cum, prevClose)` accumulator.\n * NaN close → carry both forward unchanged (no advance of prevClose).\n * Zero prevClose → output the bar as NaN AND carry `cum` forward\n * (advance prevClose to `close` so the next finite ratio is well-\n * defined). First bar (`prevClose === NaN`) seeds `prevClose = close`\n * and leaves `cum` at its 0 seed.\n */\nfunction fold(\n inCum: number,\n inPrevClose: number,\n close: number,\n volume: number,\n): { cum: number; prevClose: number; emit: number } {\n if (!Number.isFinite(close)) {\n return { cum: inCum, prevClose: inPrevClose, emit: inCum };\n }\n if (!Number.isFinite(inPrevClose)) {\n // First defined bar: seed prevClose, output 0 (no prior delta).\n return { cum: inCum, prevClose: close, emit: inCum };\n }\n const c = contribution(inPrevClose, close, volume);\n if (Number.isNaN(c)) {\n // Zero prevClose: carry cum forward, advance prevClose so the\n // next finite ratio is well-defined; emit NaN this bar.\n return { cum: inCum, prevClose: close, emit: Number.NaN };\n }\n const next = inCum + c;\n return { cum: next, prevClose: close, emit: next };\n}\n\n/**\n * Price Volume Trend — cumulative `volume · (close − prevClose) /\n * prevClose`. Conceptually similar to OBV but uses the magnitude of\n * the close-pct-change move (not just sign), so the rate of accumulation\n * scales with how strong the bar's move was. The first bar emits `0`\n * (Pine convention — no prior close to difference against).\n *\n * **Tick mode.** Replays the head bar's contribution against a\n * snapshot of the prior-close `(cumPvt, prevClose)` tuple so a partial-\n * bar tick doesn't pollute the next close's accumulator.\n *\n * @formula pvt[t] = pvt[t − 1] + volume[t] · (close[t] − close[t − 1]) / close[t − 1]\n * @warmup 1 (needs a prior close to compute the delta; bar 0 emits 0)\n * @since 0.2\n * @stable\n *\n * `opts.offset` shifts the returned series.\n *\n * @example\n * // import { ta, plot } from \"@invinite-org/chartlang-core\";\n * // const p = ta.pvt();\n * // plot(p);\n */\nexport function pvt(slotId: string, opts?: PvtOpts): Series<number> {\n const ctx = getCtx();\n let slot = ctx.stream.taSlots.get(slotId) as PvtSlot | undefined;\n if (slot === undefined) {\n slot = initSlot(ctx.stream.ohlcv.close.capacity);\n ctx.stream.taSlots.set(slotId, slot);\n }\n const offset = opts?.offset ?? 0;\n const { close, volume } = ctx.stream.bar;\n\n if (ctx.isTick) {\n const next = fold(slot.prevClosedCumPvt, slot.prevClosedPrevClose, close, volume);\n slot.outBuffer.replaceHead(next.emit);\n return viewForOffset(slot, offset);\n }\n\n slot.prevClosedCumPvt = slot.cumPvt;\n slot.prevClosedPrevClose = slot.prevClose;\n const next = fold(slot.cumPvt, slot.prevClose, close, volume);\n slot.cumPvt = next.cum;\n slot.prevClose = next.prevClose;\n slot.outBuffer.append(next.emit);\n return viewForOffset(slot, offset);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/ta/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/ta/registry.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type {\n AdlOpts,\n AdrOpts,\n AdxOpts,\n AlmaOpts,\n AnchoredVolumeProfileOpts,\n AnchoredVolumeProfileResult,\n AnchoredVwapOpts,\n AoOpts,\n AroonOpts,\n AroonOscOpts,\n AroonResult,\n AtrOpts,\n BarssinceOpts,\n BbOpts,\n BbPercentBOpts,\n BbResult,\n BbwOpts,\n BopOpts,\n CciOpts,\n ChaikinOscOpts,\n ChandeKrollStopOpts,\n ChandeKrollStopResult,\n ChandelierOpts,\n ChandelierResult,\n ChangeOpts,\n ChopOpts,\n CmfOpts,\n CmoOpts,\n ConnorsRsiOpts,\n CoppockOpts,\n CrossoverOpts,\n CrossunderOpts,\n DemaOpts,\n DmiOpts,\n DmiResult,\n DonchianOpts,\n DonchianResult,\n DpoOpts,\n EmaOpts,\n EnvelopeOpts,\n EnvelopeResult,\n EomOpts,\n FisherOpts,\n FisherResult,\n FixedRangeVolumeProfileOpts,\n FixedRangeVolumeProfileResult,\n HighestOpts,\n HmaOpts,\n HvOpts,\n IchimokuOpts,\n IchimokuResult,\n KamaOpts,\n KeltnerOpts,\n KeltnerResult,\n KlingerOpts,\n KlingerResult,\n KstOpts,\n KstResult,\n LowestOpts,\n LsmaOpts,\n MaRibbonOpts,\n MaRibbonResult,\n MacdOpts,\n MacdResult,\n MassIndexOpts,\n McginleyOpts,\n MedianOpts,\n MfiOpts,\n MomentumOpts,\n NetVolumeOpts,\n NviOpts,\n ObvOpts,\n PivotsHighLowOpts,\n PivotsHighLowResult,\n PivotsStandardOpts,\n PivotsStandardResult,\n PmoOpts,\n PmoResult,\n PpoOpts,\n PpoResult,\n PsarOpts,\n PsarResult,\n PviOpts,\n PvoOpts,\n PvoResult,\n PvtOpts,\n RocOpts,\n RsiOpts,\n RvgiOpts,\n RvgiResult,\n RviOpts,\n Series,\n SessionVolumeProfileOpts,\n SessionVolumeProfileResult,\n SmaOpts,\n SmiOpts,\n SmiResult,\n SmmaOpts,\n StdevOpts,\n StochOpts,\n StochResult,\n StochRsiOpts,\n StochRsiResult,\n SupertrendOpts,\n SupertrendResult,\n TemaOpts,\n TrendStrengthIndexOpts,\n TrixOpts,\n TrixResult,\n TsiOpts,\n TsiResult,\n UlcerIndexOpts,\n UltimateOscOpts,\n ValuewhenOpts,\n VisibleRangeVolumeProfileOpts,\n VisibleRangeVolumeProfileResult,\n VolOpts,\n VolatilityStopOpts,\n VolatilityStopResult,\n VortexOpts,\n VortexResult,\n VwapOpts,\n VwmaOpts,\n WilliamsFractalOpts,\n WilliamsFractalResult,\n WilliamsROpts,\n WmaOpts,\n ZigZagOpts,\n ZigZagResult,\n} from \"@invinite-org/chartlang-core\";\n\nimport { adl } from \"./adl.js\";\nimport { adr } from \"./adr.js\";\nimport { adx } from \"./adx.js\";\nimport { alma } from \"./alma.js\";\nimport { anchoredVolumeProfile } from \"./anchoredVolumeProfile.js\";\nimport { anchoredVwap } from \"./anchoredVwap.js\";\nimport { ao } from \"./ao.js\";\nimport { aroon } from \"./aroon.js\";\nimport { aroonOsc } from \"./aroonOsc.js\";\nimport { atr } from \"./atr.js\";\nimport { barssince } from \"./barssince.js\";\nimport { bb } from \"./bb.js\";\nimport { bbPercentB } from \"./bbPercentB.js\";\nimport { bbw } from \"./bbw.js\";\nimport { bop } from \"./bop.js\";\nimport { cci } from \"./cci.js\";\nimport { chaikinOsc } from \"./chaikinOsc.js\";\nimport { chandeKrollStop } from \"./chandeKrollStop.js\";\nimport { chandelier } from \"./chandelier.js\";\nimport { change } from \"./change.js\";\nimport { chop } from \"./chop.js\";\nimport { cmf } from \"./cmf.js\";\nimport { cmo } from \"./cmo.js\";\nimport { connorsRsi } from \"./connorsRsi.js\";\nimport { coppock } from \"./coppock.js\";\nimport { crossover } from \"./crossover.js\";\nimport { crossunder } from \"./crossunder.js\";\nimport { dema } from \"./dema.js\";\nimport { dmi } from \"./dmi.js\";\nimport { donchian } from \"./donchian.js\";\nimport { dpo } from \"./dpo.js\";\nimport { ema } from \"./ema.js\";\nimport { envelope } from \"./envelope.js\";\nimport { eom } from \"./eom.js\";\nimport { fisher } from \"./fisher.js\";\nimport { fixedRangeVolumeProfile } from \"./fixedRangeVolumeProfile.js\";\nimport { highest } from \"./highest.js\";\nimport { historicalVolatility } from \"./historicalVolatility.js\";\nimport { hma } from \"./hma.js\";\nimport { ichimoku } from \"./ichimoku.js\";\nimport { kama } from \"./kama.js\";\nimport { keltner } from \"./keltner.js\";\nimport { klinger } from \"./klinger.js\";\nimport { kst } from \"./kst.js\";\nimport type { ScalarOrSeries } from \"./lib/sourceValue.js\";\nimport { lowest } from \"./lowest.js\";\nimport { lsma } from \"./lsma.js\";\nimport { maRibbon } from \"./maRibbon.js\";\nimport { macd } from \"./macd.js\";\nimport { massIndex } from \"./massIndex.js\";\nimport { mcginley } from \"./mcginley.js\";\nimport { median } from \"./median.js\";\nimport { mfi } from \"./mfi.js\";\nimport { momentum } from \"./momentum.js\";\nimport { netVolume } from \"./netVolume.js\";\nimport { nvi } from \"./nvi.js\";\nimport { nz } from \"./nz.js\";\nimport { obv } from \"./obv.js\";\nimport { pivotsHighLow } from \"./pivotsHighLow.js\";\nimport { pivotsStandard } from \"./pivotsStandard.js\";\nimport { pmo } from \"./pmo.js\";\nimport { ppo } from \"./ppo.js\";\nimport { psar } from \"./psar.js\";\nimport { pvi } from \"./pvi.js\";\nimport { pvo } from \"./pvo.js\";\nimport { pvt } from \"./pvt.js\";\nimport { roc } from \"./roc.js\";\nimport { rsi } from \"./rsi.js\";\nimport { rvgi } from \"./rvgi.js\";\nimport { rvi } from \"./rvi.js\";\nimport { sessionVolumeProfile } from \"./sessionVolumeProfile.js\";\nimport { sma } from \"./sma.js\";\nimport { smi } from \"./smi.js\";\nimport { smma } from \"./smma.js\";\nimport { stdev } from \"./stdev.js\";\nimport { stoch } from \"./stoch.js\";\nimport { stochRsi } from \"./stochRsi.js\";\nimport { supertrend } from \"./supertrend.js\";\nimport { tema } from \"./tema.js\";\nimport { trendStrengthIndex } from \"./trendStrengthIndex.js\";\nimport { trix } from \"./trix.js\";\nimport { tsi } from \"./tsi.js\";\nimport { ulcerIndex } from \"./ulcerIndex.js\";\nimport { ultimateOsc } from \"./ultimateOsc.js\";\nimport { valuewhen } from \"./valuewhen.js\";\nimport { visibleRangeVolumeProfile } from \"./visibleRangeVolumeProfile.js\";\nimport { vol } from \"./vol.js\";\nimport { volatilityStop } from \"./volatilityStop.js\";\nimport { vortex } from \"./vortex.js\";\nimport { vwap } from \"./vwap.js\";\nimport { vwma } from \"./vwma.js\";\nimport { williamsFractal } from \"./williamsFractal.js\";\nimport { williamsR } from \"./williamsR.js\";\nimport { wma } from \"./wma.js\";\nimport { zigZag } from \"./zigZag.js\";\n\n/**\n * The runtime-facing surface of the `ta` namespace. Each method takes\n * a compiler-injected `slotId` as its first argument, then the user-\n * facing arguments core's `TaNamespace` types. The compiler (Task 2)\n * inlines the slot id as a string literal at every callsite so the\n * runtime can look up its per-callsite hidden state in\n * `RuntimeContext.stream.taSlots`. Script authors never see the slot\n * arg — they import `ta` and call `ta.ema(close, 20)`; the bundled\n * output becomes `runtime.ta.ema(\"slot-id\", close, 20)`.\n *\n * @formula N/A — type surface, see per-primitive JSDoc\n * @since 0.1\n * @stable\n * @example\n * // import type { RuntimeTaNamespace } from \"@invinite-org/chartlang-runtime\";\n * // const fn: RuntimeTaNamespace[\"ema\"] = (slotId, src, length) =>\n * // ({ current: NaN, length: 0 }) as never;\n */\nexport type RuntimeTaNamespace = {\n sma(slotId: string, source: ScalarOrSeries, length: number, opts?: SmaOpts): Series<number>;\n ema(slotId: string, source: ScalarOrSeries, length: number, opts?: EmaOpts): Series<number>;\n stdev(slotId: string, source: ScalarOrSeries, length: number, opts?: StdevOpts): Series<number>;\n bb(slotId: string, source: ScalarOrSeries, length: number, opts?: BbOpts): BbResult;\n rsi(slotId: string, source: ScalarOrSeries, length: number, opts?: RsiOpts): Series<number>;\n macd(slotId: string, source: ScalarOrSeries, opts?: MacdOpts): MacdResult;\n atr(slotId: string, length: number, opts?: AtrOpts): Series<number>;\n crossover(\n slotId: string,\n a: ScalarOrSeries,\n b: ScalarOrSeries,\n opts?: CrossoverOpts,\n ): Series<boolean>;\n crossunder(\n slotId: string,\n a: ScalarOrSeries,\n b: ScalarOrSeries,\n opts?: CrossunderOpts,\n ): Series<boolean>;\n nz(value: number, replacement?: number): number;\n highest(\n slotId: string,\n source: ScalarOrSeries,\n length: number,\n opts?: HighestOpts,\n ): Series<number>;\n lowest(\n slotId: string,\n source: ScalarOrSeries,\n length: number,\n opts?: LowestOpts,\n ): Series<number>;\n change(slotId: string, source: ScalarOrSeries, opts?: ChangeOpts): Series<number>;\n valuewhen(\n slotId: string,\n condition: Series<boolean>,\n source: ScalarOrSeries,\n occurrence?: number,\n opts?: ValuewhenOpts,\n ): Series<number>;\n barssince(slotId: string, condition: Series<boolean>, opts?: BarssinceOpts): Series<number>;\n wma(slotId: string, source: ScalarOrSeries, length: number, opts?: WmaOpts): Series<number>;\n vwma(slotId: string, source: ScalarOrSeries, length: number, opts?: VwmaOpts): Series<number>;\n hma(slotId: string, source: ScalarOrSeries, length: number, opts?: HmaOpts): Series<number>;\n smma(slotId: string, source: ScalarOrSeries, length: number, opts?: SmmaOpts): Series<number>;\n dema(slotId: string, source: ScalarOrSeries, length: number, opts?: DemaOpts): Series<number>;\n tema(slotId: string, source: ScalarOrSeries, length: number, opts?: TemaOpts): Series<number>;\n kama(slotId: string, source: ScalarOrSeries, opts?: KamaOpts): Series<number>;\n alma(slotId: string, source: ScalarOrSeries, length: number, opts?: AlmaOpts): Series<number>;\n lsma(slotId: string, source: ScalarOrSeries, length: number, opts?: LsmaOpts): Series<number>;\n mcginley(\n slotId: string,\n source: ScalarOrSeries,\n length: number,\n opts?: McginleyOpts,\n ): Series<number>;\n maRibbon(slotId: string, source: ScalarOrSeries, opts?: MaRibbonOpts): MaRibbonResult;\n ao(slotId: string, opts?: AoOpts): Series<number>;\n cmo(slotId: string, source: ScalarOrSeries, length: number, opts?: CmoOpts): Series<number>;\n momentum(\n slotId: string,\n source: ScalarOrSeries,\n length: number,\n opts?: MomentumOpts,\n ): Series<number>;\n roc(slotId: string, source: ScalarOrSeries, length: number, opts?: RocOpts): Series<number>;\n pmo(slotId: string, source: ScalarOrSeries, opts?: PmoOpts): PmoResult;\n smi(slotId: string, opts?: SmiOpts): SmiResult;\n tsi(slotId: string, source: ScalarOrSeries, opts?: TsiOpts): TsiResult;\n cci(slotId: string, source: ScalarOrSeries, length: number, opts?: CciOpts): Series<number>;\n stoch(slotId: string, opts?: StochOpts): StochResult;\n williamsR(slotId: string, length: number, opts?: WilliamsROpts): Series<number>;\n stochRsi(slotId: string, source: ScalarOrSeries, opts?: StochRsiOpts): StochRsiResult;\n ultimateOsc(slotId: string, opts?: UltimateOscOpts): Series<number>;\n coppock(slotId: string, source: ScalarOrSeries, opts?: CoppockOpts): Series<number>;\n ppo(slotId: string, source: ScalarOrSeries, opts?: PpoOpts): PpoResult;\n dpo(slotId: string, source: ScalarOrSeries, length: number, opts?: DpoOpts): Series<number>;\n connorsRsi(slotId: string, source: ScalarOrSeries, opts?: ConnorsRsiOpts): Series<number>;\n kst(slotId: string, source: ScalarOrSeries, opts?: KstOpts): KstResult;\n fisher(slotId: string, length: number, opts?: FisherOpts): FisherResult;\n klinger(slotId: string, opts?: KlingerOpts): KlingerResult;\n rvgi(slotId: string, opts?: RvgiOpts): RvgiResult;\n aroon(slotId: string, length: number, opts?: AroonOpts): AroonResult;\n aroonOsc(slotId: string, length: number, opts?: AroonOscOpts): Series<number>;\n vol(slotId: string, opts?: VolOpts): Series<number>;\n vwap(slotId: string, opts?: VwapOpts): Series<number>;\n anchoredVwap(slotId: string, anchorTime: number, opts?: AnchoredVwapOpts): Series<number>;\n anchoredVolumeProfile(\n slotId: string,\n opts: AnchoredVolumeProfileOpts,\n ): AnchoredVolumeProfileResult;\n fixedRangeVolumeProfile(\n slotId: string,\n opts: FixedRangeVolumeProfileOpts,\n ): FixedRangeVolumeProfileResult;\n sessionVolumeProfile(\n slotId: string,\n opts?: SessionVolumeProfileOpts,\n ): SessionVolumeProfileResult;\n visibleRangeVolumeProfile(\n slotId: string,\n opts?: VisibleRangeVolumeProfileOpts,\n ): VisibleRangeVolumeProfileResult;\n obv(slotId: string, opts?: ObvOpts): Series<number>;\n adl(slotId: string, opts?: AdlOpts): Series<number>;\n bop(slotId: string, opts?: BopOpts): Series<number>;\n cmf(slotId: string, length: number, opts?: CmfOpts): Series<number>;\n chaikinOsc(slotId: string, opts?: ChaikinOscOpts): Series<number>;\n mfi(slotId: string, length: number, opts?: MfiOpts): Series<number>;\n netVolume(slotId: string, opts?: NetVolumeOpts): Series<number>;\n pvo(slotId: string, opts?: PvoOpts): PvoResult;\n pvt(slotId: string, opts?: PvtOpts): Series<number>;\n eom(slotId: string, length: number, opts?: EomOpts): Series<number>;\n nvi(slotId: string, opts?: NviOpts): Series<number>;\n pvi(slotId: string, opts?: PviOpts): Series<number>;\n bbPercentB(\n slotId: string,\n source: ScalarOrSeries,\n length: number,\n opts?: BbPercentBOpts,\n ): Series<number>;\n bbw(slotId: string, source: ScalarOrSeries, length: number, opts?: BbwOpts): Series<number>;\n donchian(slotId: string, length: number, opts?: DonchianOpts): DonchianResult;\n keltner(slotId: string, opts?: KeltnerOpts): KeltnerResult;\n envelope(slotId: string, source: ScalarOrSeries, opts?: EnvelopeOpts): EnvelopeResult;\n chop(slotId: string, length: number, opts?: ChopOpts): Series<number>;\n median(\n slotId: string,\n source: ScalarOrSeries,\n length: number,\n opts?: MedianOpts,\n ): Series<number>;\n adr(slotId: string, opts?: AdrOpts): Series<number>;\n ulcerIndex(\n slotId: string,\n source: ScalarOrSeries,\n length: number,\n opts?: UlcerIndexOpts,\n ): Series<number>;\n historicalVolatility(\n slotId: string,\n source: ScalarOrSeries,\n length: number,\n opts?: HvOpts,\n ): Series<number>;\n rvi(slotId: string, source: ScalarOrSeries, length: number, opts?: RviOpts): Series<number>;\n massIndex(slotId: string, opts?: MassIndexOpts): Series<number>;\n psar(slotId: string, opts?: PsarOpts): PsarResult;\n supertrend(slotId: string, opts?: SupertrendOpts): SupertrendResult;\n chandelier(slotId: string, opts?: ChandelierOpts): ChandelierResult;\n chandeKrollStop(slotId: string, opts?: ChandeKrollStopOpts): ChandeKrollStopResult;\n williamsFractal(slotId: string, opts?: WilliamsFractalOpts): WilliamsFractalResult;\n zigZag(slotId: string, opts?: ZigZagOpts): ZigZagResult;\n pivotsHighLow(slotId: string, opts?: PivotsHighLowOpts): PivotsHighLowResult;\n pivotsStandard(slotId: string, opts?: PivotsStandardOpts): PivotsStandardResult;\n volatilityStop(slotId: string, opts?: VolatilityStopOpts): VolatilityStopResult;\n adx(slotId: string, length: number, opts?: AdxOpts): Series<number>;\n dmi(slotId: string, length: number, opts?: DmiOpts): DmiResult;\n trix(slotId: string, source: ScalarOrSeries, length: number, opts?: TrixOpts): TrixResult;\n vortex(slotId: string, length: number, opts?: VortexOpts): VortexResult;\n trendStrengthIndex(\n slotId: string,\n source: ScalarOrSeries,\n length: number,\n opts?: TrendStrengthIndexOpts,\n ): Series<number>;\n ichimoku(slotId: string, opts?: IchimokuOpts): IchimokuResult;\n};\n\n/**\n * Frozen registry of every Phase-1 + Phase-2 `ta.*` primitive. Wave-5\n * cardinality grows as each parallel task lands; the final Phase-2\n * count is verified at closeout (Task 30). Phase-1 ships 9; cross-\n * functional Task 5 adds 6; Task 6 adds 4 MA ports (`wma`, `vwma`,\n * `hma`, `smma`); Task 9 adds 3 oscillators; Task 13 adds 4 momentum;\n * Task 15 adds 2 trend.\n *\n * @formula N/A — frozen registry, see per-primitive JSDoc\n * @since 0.1\n * @stable\n * @example\n * // import { TA_REGISTRY } from \"@invinite-org/chartlang-runtime\";\n * // const keys = Object.keys(TA_REGISTRY);\n */\nexport const TA_REGISTRY = Object.freeze({\n sma,\n ema,\n stdev,\n bb,\n rsi,\n macd,\n atr,\n crossover,\n crossunder,\n nz,\n highest,\n lowest,\n change,\n valuewhen,\n barssince,\n wma,\n vwma,\n hma,\n smma,\n dema,\n tema,\n kama,\n alma,\n lsma,\n mcginley,\n maRibbon,\n ao,\n cmo,\n momentum,\n roc,\n pmo,\n smi,\n tsi,\n cci,\n stoch,\n williamsR,\n stochRsi,\n ultimateOsc,\n coppock,\n ppo,\n dpo,\n connorsRsi,\n kst,\n fisher,\n klinger,\n rvgi,\n aroon,\n aroonOsc,\n vol,\n vwap,\n anchoredVwap,\n anchoredVolumeProfile,\n fixedRangeVolumeProfile,\n sessionVolumeProfile,\n visibleRangeVolumeProfile,\n obv,\n adl,\n bop,\n cmf,\n chaikinOsc,\n mfi,\n netVolume,\n pvo,\n pvt,\n eom,\n nvi,\n pvi,\n bbPercentB,\n bbw,\n donchian,\n keltner,\n envelope,\n chop,\n median,\n adr,\n ulcerIndex,\n historicalVolatility,\n rvi,\n massIndex,\n psar,\n supertrend,\n chandelier,\n chandeKrollStop,\n williamsFractal,\n zigZag,\n pivotsHighLow,\n pivotsStandard,\n volatilityStop,\n adx,\n dmi,\n trix,\n vortex,\n trendStrengthIndex,\n ichimoku,\n} as const);\n\n/**\n * Y-domain hint a primitive can advertise. `\"auto\"` is the default —\n * the renderer fits the visible-window data range. `\"fixed\"` pins the\n * range to a `[min, max]` interval (bounded oscillators like Stoch /\n * Williams %R).\n *\n * @formula N/A — metadata type, see consumer renderers\n * @since 0.2\n * @stable\n * @example\n * // const stochYDomain: YDomainSpec = { kind: \"fixed\", min: 0, max: 100 };\n */\nexport type YDomainSpec = Readonly<{ kind: \"auto\" } | { kind: \"fixed\"; min: number; max: number }>;\n\n/**\n * Per-primitive metadata layer the registry surfaces for renderers\n * (pane layout, legend ordering, y-axis scaling). Every field is\n * optional — primitives that don't advertise metadata default to\n * `primarySeriesKey = \"default\"` and `yDomain = { kind: \"auto\" }` in\n * the consumer. Phase-2 Task 9 introduces this surface; future\n * bounded oscillators (`stochRsi`, `ultimateOsc`) populate it\n * verbatim.\n *\n * @formula N/A — metadata type, see consumer renderers\n * @since 0.2\n * @stable\n * @example\n * // const meta: PrimitiveMetadata = {\n * // primarySeriesKey: \"k\",\n * // visibleSeriesKeys: [\"k\", \"d\"],\n * // yDomain: { kind: \"fixed\", min: 0, max: 100 },\n * // };\n */\nexport type PrimitiveMetadata = Readonly<{\n primarySeriesKey?: string;\n visibleSeriesKeys?: ReadonlyArray<string>;\n yDomain?: YDomainSpec;\n}>;\n\n/**\n * Frozen metadata table keyed by `TA_REGISTRY` id. Only primitives\n * with a non-default metadata payload appear. `ta.stoch` records its\n * `[0, 100]` range + `primarySeriesKey: \"k\"` + the visible-series\n * order for the legend. `ta.williamsR` records its `[-100, 0]` range.\n * Phase-1 entries + the cross-functional Task-5 entries are\n * unannotated.\n *\n * @formula N/A — frozen metadata table, see per-primitive `PrimitiveMetadata`\n * @since 0.2\n * @stable\n * @example\n * // import { TA_REGISTRY_METADATA } from \"@invinite-org/chartlang-runtime\";\n * // const stochMeta = TA_REGISTRY_METADATA.stoch;\n */\nexport const TA_REGISTRY_METADATA: Readonly<\n Partial<Record<keyof typeof TA_REGISTRY, PrimitiveMetadata>>\n> = Object.freeze({\n stoch: Object.freeze({\n primarySeriesKey: \"k\",\n visibleSeriesKeys: Object.freeze([\"k\", \"d\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"fixed\", min: 0, max: 100 } as const),\n }),\n williamsR: Object.freeze({\n yDomain: Object.freeze({ kind: \"fixed\", min: -100, max: 0 } as const),\n }),\n stochRsi: Object.freeze({\n primarySeriesKey: \"k\",\n visibleSeriesKeys: Object.freeze([\"k\", \"d\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"fixed\", min: 0, max: 100 } as const),\n }),\n ultimateOsc: Object.freeze({\n yDomain: Object.freeze({ kind: \"fixed\", min: 0, max: 100 } as const),\n }),\n ppo: Object.freeze({\n primarySeriesKey: \"ppo\",\n visibleSeriesKeys: Object.freeze([\"ppo\", \"signal\", \"hist\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n pvo: Object.freeze({\n primarySeriesKey: \"pvo\",\n visibleSeriesKeys: Object.freeze([\"pvo\", \"signal\", \"hist\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n sessionVolumeProfile: Object.freeze({\n primarySeriesKey: \"poc\",\n visibleSeriesKeys: Object.freeze([\"poc\", \"valHigh\", \"valLow\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n fixedRangeVolumeProfile: Object.freeze({\n primarySeriesKey: \"poc\",\n visibleSeriesKeys: Object.freeze([\"poc\", \"valHigh\", \"valLow\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n connorsRsi: Object.freeze({\n yDomain: Object.freeze({ kind: \"fixed\", min: 0, max: 100 } as const),\n }),\n pmo: Object.freeze({\n primarySeriesKey: \"pmo\",\n visibleSeriesKeys: Object.freeze([\"pmo\", \"signal\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n smi: Object.freeze({\n primarySeriesKey: \"smi\",\n visibleSeriesKeys: Object.freeze([\"smi\", \"signal\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"fixed\", min: -100, max: 100 } as const),\n }),\n tsi: Object.freeze({\n primarySeriesKey: \"tsi\",\n visibleSeriesKeys: Object.freeze([\"tsi\", \"signal\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n kst: Object.freeze({\n primarySeriesKey: \"kst\",\n visibleSeriesKeys: Object.freeze([\"kst\", \"signal\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n fisher: Object.freeze({\n primarySeriesKey: \"fisher\",\n visibleSeriesKeys: Object.freeze([\"fisher\", \"trigger\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n klinger: Object.freeze({\n primarySeriesKey: \"klinger\",\n visibleSeriesKeys: Object.freeze([\"klinger\", \"signal\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n rvgi: Object.freeze({\n primarySeriesKey: \"rvgi\",\n visibleSeriesKeys: Object.freeze([\"rvgi\", \"signal\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n anchoredVolumeProfile: Object.freeze({\n primarySeriesKey: \"poc\",\n visibleSeriesKeys: Object.freeze([\"poc\", \"valHigh\", \"valLow\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n aroon: Object.freeze({\n primarySeriesKey: \"up\",\n visibleSeriesKeys: Object.freeze([\"up\", \"down\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"fixed\", min: 0, max: 100 } as const),\n }),\n aroonOsc: Object.freeze({\n yDomain: Object.freeze({ kind: \"fixed\", min: -100, max: 100 } as const),\n }),\n donchian: Object.freeze({\n primarySeriesKey: \"middle\",\n visibleSeriesKeys: Object.freeze([\"upper\", \"middle\", \"lower\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n keltner: Object.freeze({\n primarySeriesKey: \"middle\",\n visibleSeriesKeys: Object.freeze([\"upper\", \"middle\", \"lower\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n envelope: Object.freeze({\n primarySeriesKey: \"middle\",\n visibleSeriesKeys: Object.freeze([\"upper\", \"middle\", \"lower\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n chop: Object.freeze({\n yDomain: Object.freeze({ kind: \"fixed\", min: 0, max: 100 } as const),\n }),\n psar: Object.freeze({\n primarySeriesKey: \"sar\",\n visibleSeriesKeys: Object.freeze([\"sar\", \"direction\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n supertrend: Object.freeze({\n primarySeriesKey: \"line\",\n visibleSeriesKeys: Object.freeze([\"line\", \"direction\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n chandelier: Object.freeze({\n primarySeriesKey: \"long\",\n visibleSeriesKeys: Object.freeze([\"long\", \"short\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n chandeKrollStop: Object.freeze({\n primarySeriesKey: \"long\",\n visibleSeriesKeys: Object.freeze([\"long\", \"short\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n williamsFractal: Object.freeze({\n primarySeriesKey: \"up\",\n visibleSeriesKeys: Object.freeze([\"up\", \"down\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n zigZag: Object.freeze({\n primarySeriesKey: \"value\",\n visibleSeriesKeys: Object.freeze([\"value\", \"direction\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n pivotsHighLow: Object.freeze({\n primarySeriesKey: \"high\",\n visibleSeriesKeys: Object.freeze([\"high\", \"low\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n pivotsStandard: Object.freeze({\n primarySeriesKey: \"pp\",\n visibleSeriesKeys: Object.freeze([\n \"pp\",\n \"r1\",\n \"s1\",\n \"r2\",\n \"s2\",\n \"r3\",\n \"s3\",\n ]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n volatilityStop: Object.freeze({\n primarySeriesKey: \"value\",\n visibleSeriesKeys: Object.freeze([\"value\", \"direction\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n maRibbon: Object.freeze({\n primarySeriesKey: \"ma_50\",\n visibleSeriesKeys: Object.freeze([\n \"ma_10\",\n \"ma_20\",\n \"ma_30\",\n \"ma_40\",\n \"ma_50\",\n ]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n adx: Object.freeze({\n yDomain: Object.freeze({ kind: \"fixed\", min: 0, max: 100 } as const),\n }),\n dmi: Object.freeze({\n primarySeriesKey: \"plusDi\",\n visibleSeriesKeys: Object.freeze([\"plusDi\", \"minusDi\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"fixed\", min: 0, max: 100 } as const),\n }),\n trix: Object.freeze({\n primarySeriesKey: \"trix\",\n visibleSeriesKeys: Object.freeze([\"trix\", \"signal\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n vortex: Object.freeze({\n primarySeriesKey: \"plus\",\n visibleSeriesKeys: Object.freeze([\"plus\", \"minus\"]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n trendStrengthIndex: Object.freeze({\n yDomain: Object.freeze({ kind: \"fixed\", min: -1, max: 1 } as const),\n }),\n ichimoku: Object.freeze({\n primarySeriesKey: \"tenkan\",\n visibleSeriesKeys: Object.freeze([\n \"tenkan\",\n \"kijun\",\n \"senkouA\",\n \"senkouB\",\n \"chikou\",\n ]) as ReadonlyArray<string>,\n yDomain: Object.freeze({ kind: \"auto\" } as const),\n }),\n});\n\n/**\n * The script-facing `ta` constant the compiler binds against. Equal\n * by identity to {@link TA_REGISTRY}; typed as the slot-aware\n * {@link RuntimeTaNamespace} so downstream consumers (the host-worker\n * boot, the conformance harness) get the runtime signature.\n *\n * @formula N/A — script-facing namespace, see per-primitive JSDoc\n * @since 0.1\n * @stable\n * @example\n * // import { ta } from \"@invinite-org/chartlang-runtime\";\n * // const out = ta.ema(\"slot-id\", { current: 12 }, 20);\n */\nexport const ta: RuntimeTaNamespace = TA_REGISTRY;\n"]}
package/dist/ta/roc.js CHANGED
@@ -3,8 +3,8 @@
3
3
  //
4
4
  // Ported from invinite/src/components/trading-chart/indicators/roc.ts
5
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.
6
+ // Re-licensed MIT for chartlang. The math is the reference, the code
7
+ // style is not.
8
8
  import { Float64RingBuffer } from "../ringBuffer.js";
9
9
  import { ACTIVE_RUNTIME_CONTEXT } from "../runtimeContext.js";
10
10
  import { makeSeriesView } from "../seriesView.js";
@@ -1 +1 @@
1
- {"version":3,"file":"roc.js","sourceRoot":"","sources":["../../src/ta/roc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roc.js","sourceRoot":"","sources":["../../src/ta/roc.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Ported from invinite/src/components/trading-chart/indicators/roc.ts\n// (commit 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite).\n// Re-licensed MIT for chartlang. The math is the reference, the code\n// style is not.\n\nimport type { RocOpts, Series } from \"@invinite-org/chartlang-core\";\n\nimport { Float64RingBuffer } from \"../ringBuffer.js\";\nimport { ACTIVE_RUNTIME_CONTEXT, type RuntimeContext } from \"../runtimeContext.js\";\nimport { makeSeriesView } from \"../seriesView.js\";\nimport { type ScalarOrSeries, readSourceValue } from \"./lib/sourceValue.js\";\n\ntype RocSlot = {\n readonly outBuffer: Float64RingBuffer;\n readonly series: Series<number>;\n readonly length: number;\n readonly sourceWindow: Float64RingBuffer;\n};\n\nfunction getCtx(): RuntimeContext {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) {\n throw new Error(\"ta.roc called outside an active script step\");\n }\n return ctx;\n}\n\nfunction initSlot(length: number, capacity: number): RocSlot {\n const outBuffer = new Float64RingBuffer(capacity);\n return {\n outBuffer,\n series: makeSeriesView<number>(outBuffer),\n length,\n sourceWindow: new Float64RingBuffer(length + 1),\n };\n}\n\nfunction rocValue(head: number, old: number): number {\n if (!Number.isFinite(head) || !Number.isFinite(old) || old === 0) return Number.NaN;\n return (100 * (head - old)) / old;\n}\n\nfunction closeValue(slot: RocSlot, src: number): number {\n slot.sourceWindow.append(src);\n if (slot.sourceWindow.length <= slot.length) return Number.NaN;\n const head = slot.sourceWindow.at(0);\n const old = slot.sourceWindow.at(slot.length);\n return rocValue(head, old);\n}\n\nfunction tickValue(slot: RocSlot, src: number): number {\n // Tick replaces the head bar's source. Warmup count is based on\n // CLOSED bars in the window — an unwarmed slot returns NaN.\n if (slot.sourceWindow.length <= slot.length) return Number.NaN;\n const old = slot.sourceWindow.at(slot.length);\n return rocValue(src, old);\n}\n\n/**\n * Rate of Change — `100 × (source[0] − source[length]) / source[length]`.\n * NaN when either operand is NaN or the lagged source is exactly `0`\n * (division-by-zero guard). Warmup is `length` bars.\n *\n * @formula out[t] = 100 · (source[t] − source[t − length]) / source[t − length]\n * @warmup length\n * @since 0.2\n * @stable\n *\n * @example\n * // import { ta } from \"@invinite-org/chartlang-runtime\";\n * // const r = ta.roc(\"slot\", bar.close, 12);\n * // const head = r.current;\n */\nexport function roc(\n slotId: string,\n source: ScalarOrSeries,\n length: number,\n _opts?: RocOpts,\n): Series<number> {\n const ctx = getCtx();\n let slot = ctx.stream.taSlots.get(slotId) as RocSlot | undefined;\n if (slot === undefined) {\n slot = initSlot(length, ctx.stream.ohlcv.close.capacity);\n ctx.stream.taSlots.set(slotId, slot);\n }\n const src = readSourceValue(source);\n if (ctx.isTick) {\n slot.outBuffer.replaceHead(tickValue(slot, src));\n } else {\n slot.outBuffer.append(closeValue(slot, src));\n }\n return slot.series;\n}\n"]}
package/dist/ta/rsi.d.ts CHANGED
@@ -16,7 +16,7 @@ import { type ScalarOrSeries } from "./lib/sourceValue.js";
16
16
  * @stable
17
17
  *
18
18
  * `opts.offset` shifts the returned series so `series.current` reads
19
- * the value `offset` bars ago (PLAN.md §9.1).
19
+ * the value `offset` bars ago.
20
20
  *
21
21
  * @example
22
22
  * // import { ta } from "@invinite-org/chartlang-runtime";
package/dist/ta/rsi.js CHANGED
@@ -3,8 +3,8 @@
3
3
  //
4
4
  // Ported from invinite/src/components/trading-chart/indicators/rsi.ts
5
5
  // (commit d2d1043c1b039f66d2f3674526d303d31cf2f1e0, © 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.
6
+ // Re-licensed MIT for chartlang. The math is the reference, the code
7
+ // style is not.
8
8
  // Structural choices (callsite-id slot, Series<T> proxy, replaceHead
9
9
  // mode) follow chartlang's primitive shape — NOT invinite's
10
10
  // IndicatorPlugin shape.
@@ -139,7 +139,7 @@ function tickValue(slot, src) {
139
139
  * @stable
140
140
  *
141
141
  * `opts.offset` shifts the returned series so `series.current` reads
142
- * the value `offset` bars ago (PLAN.md §9.1).
142
+ * the value `offset` bars ago.
143
143
  *
144
144
  * @example
145
145
  * // import { ta } from "@invinite-org/chartlang-runtime";
@@ -1 +1 @@
1
- {"version":3,"file":"rsi.js","sourceRoot":"","sources":["../../src/ta/rsi.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,yBAAyB;AAIzB,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;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,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,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,IAAI,EAAE,QAAQ;QACd,SAAS;QACT,MAAM,EAAE,cAAc,CAAS,SAAS,CAAC;QACzC,MAAM;QACN,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC,GAAG;QACnB,OAAO,EAAE,MAAM,CAAC,GAAG;QACnB,OAAO,EAAE,MAAM,CAAC,GAAG;QACnB,aAAa,EAAE,MAAM,CAAC,GAAG;QACzB,YAAY,EAAE,IAAI,GAAG,EAAE;KAC1B,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,SAAS,WAAW,CAAC,OAAe,EAAE,OAAe;IACjD,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC9B,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,UAAU,CAAC,IAAa,EAAE,GAAW;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,4CAA4C;QAC5C,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;QACzB,OAAO,MAAM,CAAC,GAAG,CAAC;IACtB,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;IAClC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACnB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;IAEpB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;QACzB,OAAO,MAAM,CAAC,GAAG,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9C,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,SAAS,CAAC,IAAa,EAAE,GAAW;IACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAChE,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC;IACtB,CAAC;IACD,oEAAoE;IACpE,qEAAqE;IACrE,4DAA4D;IAC5D,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/B,+DAA+D;QAC/D,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAC5C,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC;QACtD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACzD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACzD,OAAO,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,qEAAqE;IACrE,yDAAyD;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;IACrD,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,OAAO,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,GAAG,CACf,MAAc,EACd,MAAsB,EACtB,MAAc,EACd,IAAc;IAEd,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,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,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"rsi.js","sourceRoot":"","sources":["../../src/ta/rsi.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Ported from invinite/src/components/trading-chart/indicators/rsi.ts\n// (commit d2d1043c1b039f66d2f3674526d303d31cf2f1e0, © Invinite).\n// Re-licensed MIT for chartlang. The math is the reference, the code\n// style is not.\n// Structural choices (callsite-id slot, Series<T> proxy, replaceHead\n// mode) follow chartlang's primitive shape — NOT invinite's\n// IndicatorPlugin shape.\n\nimport type { RsiOpts, Series } from \"@invinite-org/chartlang-core\";\n\nimport { Float64RingBuffer } from \"../ringBuffer.js\";\nimport { ACTIVE_RUNTIME_CONTEXT, type RuntimeContext } from \"../runtimeContext.js\";\nimport { makeSeriesView, makeShiftedSeriesView } from \"../seriesView.js\";\nimport { wilderStep } from \"./lib/wilderSmoothing.js\";\nimport { type ScalarOrSeries, readSourceValue } from \"./lib/sourceValue.js\";\n\ntype RsiSlot = {\n readonly kind: \"ta.rsi\";\n readonly outBuffer: Float64RingBuffer;\n readonly series: Series<number>;\n readonly length: number;\n seedGainSum: number;\n seedLossSum: number;\n /** Number of diffs (= closed bars − 1) seen so far. */\n diffCount: number;\n avgGain: number;\n avgLoss: number;\n prevSrc: number;\n /** Source value as of the prior closed bar — used by tick-mode replay. */\n prevClosedSrc: number;\n /** Per-offset Series-view cache; see `sma.ts` for the convention. */\n readonly shiftedViews: Map<number, Series<number>>;\n};\n\nfunction getCtx(): RuntimeContext {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) {\n throw new Error(\"ta.rsi called outside an active script step\");\n }\n return ctx;\n}\n\nfunction initSlot(length: number, capacity: number): RsiSlot {\n const outBuffer = new Float64RingBuffer(capacity);\n return {\n kind: \"ta.rsi\",\n outBuffer,\n series: makeSeriesView<number>(outBuffer),\n length,\n seedGainSum: 0,\n seedLossSum: 0,\n diffCount: 0,\n avgGain: Number.NaN,\n avgLoss: Number.NaN,\n prevSrc: Number.NaN,\n prevClosedSrc: Number.NaN,\n shiftedViews: new Map(),\n };\n}\n\nfunction viewForOffset(slot: RsiSlot, offset: number): Series<number> {\n if (offset === 0) return slot.series;\n let view = slot.shiftedViews.get(offset);\n if (view === undefined) {\n view = makeShiftedSeriesView<number>(slot.outBuffer, offset);\n slot.shiftedViews.set(offset, view);\n }\n return view;\n}\n\nfunction rsiFromAvgs(avgGain: number, avgLoss: number): number {\n if (avgLoss === 0) return 100;\n return 100 - 100 / (1 + avgGain / avgLoss);\n}\n\nfunction closeValue(slot: RsiSlot, src: number): number {\n if (!Number.isFinite(src)) {\n // Skip the diff; hold prior values forward.\n if (Number.isFinite(slot.avgGain) && Number.isFinite(slot.avgLoss)) {\n return rsiFromAvgs(slot.avgGain, slot.avgLoss);\n }\n return Number.NaN;\n }\n if (!Number.isFinite(slot.prevSrc)) {\n slot.prevSrc = src;\n slot.prevClosedSrc = src;\n return Number.NaN;\n }\n const diff = src - slot.prevSrc;\n const gain = diff > 0 ? diff : 0;\n const loss = diff < 0 ? -diff : 0;\n slot.prevClosedSrc = slot.prevSrc;\n slot.prevSrc = src;\n slot.diffCount += 1;\n\n if (slot.diffCount < slot.length) {\n slot.seedGainSum += gain;\n slot.seedLossSum += loss;\n return Number.NaN;\n }\n if (slot.diffCount === slot.length) {\n slot.seedGainSum += gain;\n slot.seedLossSum += loss;\n slot.avgGain = slot.seedGainSum / slot.length;\n slot.avgLoss = slot.seedLossSum / slot.length;\n return rsiFromAvgs(slot.avgGain, slot.avgLoss);\n }\n slot.avgGain = wilderStep(slot.avgGain, gain, slot.length);\n slot.avgLoss = wilderStep(slot.avgLoss, loss, slot.length);\n return rsiFromAvgs(slot.avgGain, slot.avgLoss);\n}\n\nfunction tickValue(slot: RsiSlot, src: number): number {\n if (!Number.isFinite(src) || !Number.isFinite(slot.prevClosedSrc)) {\n if (Number.isFinite(slot.avgGain) && Number.isFinite(slot.avgLoss)) {\n return rsiFromAvgs(slot.avgGain, slot.avgLoss);\n }\n return Number.NaN;\n }\n // Replay the most recent diff using the (frozen) prior closed avgs.\n // We need pre-update avgs: at close we already overwrote `avgGain` /\n // `avgLoss`. So we reverse the Wilder step to recover them.\n if (slot.diffCount < slot.length) {\n // During seeding: simulate the seed completing with this tick.\n const diff = src - slot.prevClosedSrc;\n const gain = diff > 0 ? diff : 0;\n const loss = diff < 0 ? -diff : 0;\n const provisionalCount = slot.diffCount + 1;\n if (provisionalCount < slot.length) return Number.NaN;\n const provGain = (slot.seedGainSum + gain) / slot.length;\n const provLoss = (slot.seedLossSum + loss) / slot.length;\n return rsiFromAvgs(provGain, provLoss);\n }\n // Post-warmup: reverse the most recent Wilder step to get the prior-\n // close avgs, then apply this tick's diff against those.\n const diffClosed = slot.prevSrc - slot.prevClosedSrc;\n const closedGain = diffClosed > 0 ? diffClosed : 0;\n const closedLoss = diffClosed < 0 ? -diffClosed : 0;\n const priorAvgGain = (slot.avgGain * slot.length - closedGain) / (slot.length - 1);\n const priorAvgLoss = (slot.avgLoss * slot.length - closedLoss) / (slot.length - 1);\n const diff = src - slot.prevClosedSrc;\n const gain = diff > 0 ? diff : 0;\n const loss = diff < 0 ? -diff : 0;\n const provGain = wilderStep(priorAvgGain, gain, slot.length);\n const provLoss = wilderStep(priorAvgLoss, loss, slot.length);\n return rsiFromAvgs(provGain, provLoss);\n}\n\n/**\n * Wilder's Relative Strength Index. Output range `[0, 100]`. First\n * `length` bars NaN (no diff for bar 0, then a seed window of\n * `length` diffs). Output is `100 − 100 / (1 + RS)` with\n * `RS = avgGain / avgLoss`; `avgLoss = 0` → RSI = 100.\n *\n * @formula diff[t] = source[t] − source[t − 1] ;\n * seed at bar `length` = simple mean of first `length` diffs ;\n * avgGain[t] = (avgGain[t − 1] · (length − 1) + gain[t]) / length ;\n * same for avgLoss ;\n * RSI = 100 − 100 / (1 + avgGain / avgLoss)\n * @warmup length\n * @since 0.1\n * @stable\n *\n * `opts.offset` shifts the returned series so `series.current` reads\n * the value `offset` bars ago.\n *\n * @example\n * // import { ta } from \"@invinite-org/chartlang-runtime\";\n * // const r = ta.rsi(\"slot\", bar.close, 14);\n * // const head = r.current;\n * // const lagged = ta.rsi(\"slot2\", bar.close, 14, { offset: 5 });\n */\nexport function rsi(\n slotId: string,\n source: ScalarOrSeries,\n length: number,\n opts?: RsiOpts,\n): Series<number> {\n const ctx = getCtx();\n let slot = ctx.stream.taSlots.get(slotId) as RsiSlot | undefined;\n if (slot === undefined) {\n slot = initSlot(length, ctx.stream.ohlcv.close.capacity);\n ctx.stream.taSlots.set(slotId, slot);\n }\n const src = readSourceValue(source);\n if (ctx.isTick) {\n slot.outBuffer.replaceHead(tickValue(slot, src));\n } else {\n slot.outBuffer.append(closeValue(slot, src));\n }\n return viewForOffset(slot, opts?.offset ?? 0);\n}\n"]}
package/dist/ta/rvgi.js CHANGED
@@ -3,8 +3,8 @@
3
3
  //
4
4
  // Ported from invinite/src/components/trading-chart/indicators/rvgi.ts
5
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.
6
+ // Re-licensed MIT for chartlang. The math is the reference, the code
7
+ // style is not.
8
8
  // Structural choices (callsite-id slot, Series<T> proxy, replaceHead
9
9
  // mode) follow chartlang's primitive shape — NOT invinite's
10
10
  // IndicatorPlugin shape. Composition: two `ta.sma` sub-slots
@@ -1 +1 @@
1
- {"version":3,"file":"rvgi.js","sourceRoot":"","sources":["../../src/ta/rvgi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rvgi.js","sourceRoot":"","sources":["../../src/ta/rvgi.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Ported from invinite/src/components/trading-chart/indicators/rvgi.ts\n// (commit 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite).\n// Re-licensed MIT for chartlang. The math is the reference, the code\n// style is not.\n// Structural choices (callsite-id slot, Series<T> proxy, replaceHead\n// mode) follow chartlang's primitive shape — NOT invinite's\n// IndicatorPlugin shape. Composition: two `ta.sma` sub-slots\n// (`${slotId}/numSma`, `${slotId}/denSma`) for the numerator /\n// denominator smoothing. The per-bar 4-bar `(1, 2, 2, 1) / 6`\n// weighted sum + the 4-bar signal weighted sum are bespoke (no\n// registry helper exposes that exact weighted window).\n\nimport type { RvgiOpts, RvgiResult, Series } from \"@invinite-org/chartlang-core\";\n\nimport { Float64RingBuffer } from \"../ringBuffer.js\";\nimport { ACTIVE_RUNTIME_CONTEXT, type RuntimeContext } from \"../runtimeContext.js\";\nimport { makeSeriesView } from \"../seriesView.js\";\nimport { sma } from \"./sma.js\";\n\nconst DEFAULT_LENGTH = 10;\n\ntype RvgiSlot = {\n result: RvgiResult | null;\n readonly rvgiBuf: Float64RingBuffer;\n readonly signalBuf: Float64RingBuffer;\n readonly rvgiSeries: Series<number>;\n readonly signalSeries: Series<number>;\n readonly length: number;\n /** Last 4 bars' `(close − open)` deltas; `at(0)` is the head. */\n readonly coWindow: Float64RingBuffer;\n /** Last 4 bars' `(high − low)` ranges; `at(0)` is the head. */\n readonly hlWindow: Float64RingBuffer;\n /** Last 4 rvgi outputs; `at(0)` is the head — feeds the signal. */\n readonly rvgiWindow: Float64RingBuffer;\n};\n\nfunction getCtx(): RuntimeContext {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) {\n throw new Error(\"ta.rvgi called outside an active script step\");\n }\n return ctx;\n}\n\nfunction initSlot(length: number, capacity: number): RvgiSlot {\n const rvgiBuf = new Float64RingBuffer(capacity);\n const signalBuf = new Float64RingBuffer(capacity);\n return {\n result: null,\n rvgiBuf,\n signalBuf,\n rvgiSeries: makeSeriesView<number>(rvgiBuf),\n signalSeries: makeSeriesView<number>(signalBuf),\n length,\n coWindow: new Float64RingBuffer(4),\n hlWindow: new Float64RingBuffer(4),\n rvgiWindow: new Float64RingBuffer(4),\n };\n}\n\n/**\n * 4-bar `(1, 2, 2, 1) / 6` weighted sum over a `Float64RingBuffer`\n * with `at(0)` = head. Returns NaN if the ring isn't full or any\n * value is non-finite.\n */\nfunction weighted4(ring: Float64RingBuffer): number {\n if (ring.length < 4) return Number.NaN;\n const v0 = ring.at(0);\n const v1 = ring.at(1);\n const v2 = ring.at(2);\n const v3 = ring.at(3);\n if (\n !Number.isFinite(v0) ||\n !Number.isFinite(v1) ||\n !Number.isFinite(v2) ||\n !Number.isFinite(v3)\n ) {\n return Number.NaN;\n }\n return (v0 + 2 * v1 + 2 * v2 + v3) / 6;\n}\n\n/**\n * Relative Vigor Index (John Ehlers, 2002). Per-bar 4-bar weighted\n * sum of `(close − open)` (numerator) and `(high − low)` (denominator),\n * each smoothed via an SMA over `length` bars; `rvgi = numSma /\n * denSma`. The signal line is a 4-bar `(1, 2, 2, 1) / 6` weighted sum\n * of the rvgi line. Defaults `length = 10`. Composes 2 `ta.sma`\n * sub-slots (`${slotId}/numSma`, `${slotId}/denSma`).\n *\n * Flat-range bars (denominator SMA = 0) emit NaN at `rvgi`; that NaN\n * propagates into the signal's 4-bar window.\n *\n * @formula coN = closes[t − N] − opens[t − N] ; hlN = highs[t − N] − lows[t − N] ;\n * num = (co0 + 2·co1 + 2·co2 + co3) / 6 ; den = (hl0 + 2·hl1 + 2·hl2 + hl3) / 6 ;\n * rvgi = sma(num, length) / sma(den, length) ; NaN on den === 0 ;\n * signal = (rvgi[0] + 2·rvgi[1] + 2·rvgi[2] + rvgi[3]) / 6\n * @warmup length + 3 (numerator / denominator defined at bar 3 ; sma defined `length − 1` bars later ; signal needs another 3)\n * @since 0.2\n * @stable\n *\n * @example\n * // import { ta } from \"@invinite-org/chartlang-runtime\";\n * // const r = ta.rvgi(\"slot\");\n * // plot(r.rvgi); plot(r.signal);\n */\nexport function rvgi(slotId: string, opts?: RvgiOpts): RvgiResult {\n const ctx = getCtx();\n const length = opts?.length ?? DEFAULT_LENGTH;\n\n let slot = ctx.stream.taSlots.get(slotId) as RvgiSlot | undefined;\n if (slot === undefined) {\n slot = initSlot(length, ctx.stream.ohlcv.close.capacity);\n ctx.stream.taSlots.set(slotId, slot);\n }\n\n const { open, high, low, close } = ctx.stream.bar;\n const co = Number.isFinite(close) && Number.isFinite(open) ? close - open : Number.NaN;\n const hl = Number.isFinite(high) && Number.isFinite(low) ? high - low : Number.NaN;\n\n if (ctx.isTick) {\n slot.coWindow.replaceHead(co);\n slot.hlWindow.replaceHead(hl);\n } else {\n slot.coWindow.append(co);\n slot.hlWindow.append(hl);\n }\n\n const numerator = weighted4(slot.coWindow);\n const denominator = weighted4(slot.hlWindow);\n\n const numSeries = sma(`${slotId}/numSma`, numerator, length);\n const denSeries = sma(`${slotId}/denSma`, denominator, length);\n const numSma = numSeries.current;\n const denSma = denSeries.current;\n let rvgiValue: number;\n if (!Number.isFinite(numSma) || !Number.isFinite(denSma) || denSma === 0) {\n rvgiValue = Number.NaN;\n } else {\n rvgiValue = numSma / denSma;\n }\n\n if (ctx.isTick) {\n slot.rvgiWindow.replaceHead(rvgiValue);\n slot.rvgiBuf.replaceHead(rvgiValue);\n } else {\n slot.rvgiWindow.append(rvgiValue);\n slot.rvgiBuf.append(rvgiValue);\n }\n\n const signalValue = weighted4(slot.rvgiWindow);\n\n if (ctx.isTick) slot.signalBuf.replaceHead(signalValue);\n else slot.signalBuf.append(signalValue);\n\n if (slot.result === null) {\n slot.result = Object.freeze({\n rvgi: slot.rvgiSeries,\n signal: slot.signalSeries,\n });\n }\n return slot.result;\n}\n"]}