@invinite-org/chartlang-runtime 1.1.0 → 1.2.0

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 (616) hide show
  1. package/CHANGELOG.md +245 -0
  2. package/README.md +1 -2
  3. package/dist/barPoint.d.ts +20 -0
  4. package/dist/barPoint.d.ts.map +1 -0
  5. package/dist/barPoint.js +72 -0
  6. package/dist/barPoint.js.map +1 -0
  7. package/dist/bufferSnapshot.d.ts +102 -0
  8. package/dist/bufferSnapshot.d.ts.map +1 -0
  9. package/dist/bufferSnapshot.js +119 -0
  10. package/dist/bufferSnapshot.js.map +1 -0
  11. package/dist/buildComputeContext.js.map +1 -1
  12. package/dist/createScriptRunner.d.ts +6 -3
  13. package/dist/createScriptRunner.d.ts.map +1 -1
  14. package/dist/createScriptRunner.js +29 -5
  15. package/dist/createScriptRunner.js.map +1 -1
  16. package/dist/dep/DepOutputStore.js.map +1 -1
  17. package/dist/dep/DepRunner.d.ts.map +1 -1
  18. package/dist/dep/DepRunner.js +1 -0
  19. package/dist/dep/DepRunner.js.map +1 -1
  20. package/dist/dep/depOutput.js.map +1 -1
  21. package/dist/dep/emissionFilter.js.map +1 -1
  22. package/dist/dep/index.js.map +1 -1
  23. package/dist/emit/alert.js.map +1 -1
  24. package/dist/emit/alertConditionEmission.js.map +1 -1
  25. package/dist/emit/applyPlotOverride.js.map +1 -1
  26. package/dist/emit/draw/annotations/arrow.js +1 -1
  27. package/dist/emit/draw/annotations/arrow.js.map +1 -1
  28. package/dist/emit/draw/annotations/arrowMarkDown.js +1 -1
  29. package/dist/emit/draw/annotations/arrowMarkDown.js.map +1 -1
  30. package/dist/emit/draw/annotations/arrowMarkUp.js +1 -1
  31. package/dist/emit/draw/annotations/arrowMarkUp.js.map +1 -1
  32. package/dist/emit/draw/annotations/arrowMarker.js +1 -1
  33. package/dist/emit/draw/annotations/arrowMarker.js.map +1 -1
  34. package/dist/emit/draw/annotations/text.js +1 -1
  35. package/dist/emit/draw/annotations/text.js.map +1 -1
  36. package/dist/emit/draw/boxes/circle.js +1 -1
  37. package/dist/emit/draw/boxes/circle.js.map +1 -1
  38. package/dist/emit/draw/boxes/ellipse.d.ts +1 -1
  39. package/dist/emit/draw/boxes/ellipse.js +1 -1
  40. package/dist/emit/draw/boxes/ellipse.js.map +1 -1
  41. package/dist/emit/draw/boxes/fillBetween.d.ts +45 -0
  42. package/dist/emit/draw/boxes/fillBetween.d.ts.map +1 -0
  43. package/dist/emit/draw/boxes/fillBetween.js +36 -0
  44. package/dist/emit/draw/boxes/fillBetween.js.map +1 -0
  45. package/dist/emit/draw/boxes/marker.js +1 -1
  46. package/dist/emit/draw/boxes/marker.js.map +1 -1
  47. package/dist/emit/draw/boxes/path.d.ts +1 -1
  48. package/dist/emit/draw/boxes/path.js +1 -1
  49. package/dist/emit/draw/boxes/path.js.map +1 -1
  50. package/dist/emit/draw/boxes/polyline.d.ts +1 -1
  51. package/dist/emit/draw/boxes/polyline.js +1 -1
  52. package/dist/emit/draw/boxes/polyline.js.map +1 -1
  53. package/dist/emit/draw/boxes/rectangle.js +1 -1
  54. package/dist/emit/draw/boxes/rectangle.js.map +1 -1
  55. package/dist/emit/draw/boxes/rotatedRectangle.js +1 -1
  56. package/dist/emit/draw/boxes/rotatedRectangle.js.map +1 -1
  57. package/dist/emit/draw/boxes/triangle.d.ts +1 -1
  58. package/dist/emit/draw/boxes/triangle.js +1 -1
  59. package/dist/emit/draw/boxes/triangle.js.map +1 -1
  60. package/dist/emit/draw/channels/disjointChannel.js +1 -1
  61. package/dist/emit/draw/channels/disjointChannel.js.map +1 -1
  62. package/dist/emit/draw/channels/flatTopBottom.d.ts +1 -2
  63. package/dist/emit/draw/channels/flatTopBottom.d.ts.map +1 -1
  64. package/dist/emit/draw/channels/flatTopBottom.js +1 -1
  65. package/dist/emit/draw/channels/flatTopBottom.js.map +1 -1
  66. package/dist/emit/draw/channels/regressionTrend.d.ts +3 -4
  67. package/dist/emit/draw/channels/regressionTrend.d.ts.map +1 -1
  68. package/dist/emit/draw/channels/regressionTrend.js +1 -1
  69. package/dist/emit/draw/channels/regressionTrend.js.map +1 -1
  70. package/dist/emit/draw/channels/trendChannel.js +1 -1
  71. package/dist/emit/draw/channels/trendChannel.js.map +1 -1
  72. package/dist/emit/draw/containers/frame.d.ts +1 -1
  73. package/dist/emit/draw/containers/frame.js +2 -2
  74. package/dist/emit/draw/containers/frame.js.map +1 -1
  75. package/dist/emit/draw/containers/group.d.ts +1 -2
  76. package/dist/emit/draw/containers/group.d.ts.map +1 -1
  77. package/dist/emit/draw/containers/group.js +2 -2
  78. package/dist/emit/draw/containers/group.js.map +1 -1
  79. package/dist/emit/draw/curves/arc.js +1 -1
  80. package/dist/emit/draw/curves/arc.js.map +1 -1
  81. package/dist/emit/draw/curves/brush.js +1 -1
  82. package/dist/emit/draw/curves/brush.js.map +1 -1
  83. package/dist/emit/draw/curves/curve.js +1 -1
  84. package/dist/emit/draw/curves/curve.js.map +1 -1
  85. package/dist/emit/draw/curves/doubleCurve.js +1 -1
  86. package/dist/emit/draw/curves/doubleCurve.js.map +1 -1
  87. package/dist/emit/draw/curves/highlighter.js +1 -1
  88. package/dist/emit/draw/curves/highlighter.js.map +1 -1
  89. package/dist/emit/draw/curves/pen.js +1 -1
  90. package/dist/emit/draw/curves/pen.js.map +1 -1
  91. package/dist/emit/draw/cycles/cyclicLines.js +1 -1
  92. package/dist/emit/draw/cycles/cyclicLines.js.map +1 -1
  93. package/dist/emit/draw/cycles/sineLine.js +1 -1
  94. package/dist/emit/draw/cycles/sineLine.js.map +1 -1
  95. package/dist/emit/draw/cycles/timeCycles.js +1 -1
  96. package/dist/emit/draw/cycles/timeCycles.js.map +1 -1
  97. package/dist/emit/draw/elliott/elliottCorrectionWave.js +1 -1
  98. package/dist/emit/draw/elliott/elliottCorrectionWave.js.map +1 -1
  99. package/dist/emit/draw/elliott/elliottDoubleCombo.js +1 -1
  100. package/dist/emit/draw/elliott/elliottDoubleCombo.js.map +1 -1
  101. package/dist/emit/draw/elliott/elliottImpulseWave.js +1 -1
  102. package/dist/emit/draw/elliott/elliottImpulseWave.js.map +1 -1
  103. package/dist/emit/draw/elliott/elliottTriangleWave.js +1 -1
  104. package/dist/emit/draw/elliott/elliottTriangleWave.js.map +1 -1
  105. package/dist/emit/draw/elliott/elliottTripleCombo.js +1 -1
  106. package/dist/emit/draw/elliott/elliottTripleCombo.js.map +1 -1
  107. package/dist/emit/draw/fibA/fibChannel.js +1 -1
  108. package/dist/emit/draw/fibA/fibChannel.js.map +1 -1
  109. package/dist/emit/draw/fibA/fibRetracement.js +1 -1
  110. package/dist/emit/draw/fibA/fibRetracement.js.map +1 -1
  111. package/dist/emit/draw/fibA/fibTimeZone.d.ts +1 -2
  112. package/dist/emit/draw/fibA/fibTimeZone.d.ts.map +1 -1
  113. package/dist/emit/draw/fibA/fibTimeZone.js +1 -1
  114. package/dist/emit/draw/fibA/fibTimeZone.js.map +1 -1
  115. package/dist/emit/draw/fibA/fibTrendExtension.js +1 -1
  116. package/dist/emit/draw/fibA/fibTrendExtension.js.map +1 -1
  117. package/dist/emit/draw/fibA/fibWedge.js +1 -1
  118. package/dist/emit/draw/fibA/fibWedge.js.map +1 -1
  119. package/dist/emit/draw/fibB/fibCircles.d.ts +1 -2
  120. package/dist/emit/draw/fibB/fibCircles.d.ts.map +1 -1
  121. package/dist/emit/draw/fibB/fibCircles.js +1 -1
  122. package/dist/emit/draw/fibB/fibCircles.js.map +1 -1
  123. package/dist/emit/draw/fibB/fibSpeedArcs.js +1 -1
  124. package/dist/emit/draw/fibB/fibSpeedArcs.js.map +1 -1
  125. package/dist/emit/draw/fibB/fibSpeedFan.js +1 -1
  126. package/dist/emit/draw/fibB/fibSpeedFan.js.map +1 -1
  127. package/dist/emit/draw/fibB/fibSpiral.d.ts +1 -2
  128. package/dist/emit/draw/fibB/fibSpiral.d.ts.map +1 -1
  129. package/dist/emit/draw/fibB/fibSpiral.js +1 -1
  130. package/dist/emit/draw/fibB/fibSpiral.js.map +1 -1
  131. package/dist/emit/draw/fibB/fibTrendTime.d.ts +1 -2
  132. package/dist/emit/draw/fibB/fibTrendTime.d.ts.map +1 -1
  133. package/dist/emit/draw/fibB/fibTrendTime.js +1 -1
  134. package/dist/emit/draw/fibB/fibTrendTime.js.map +1 -1
  135. package/dist/emit/draw/gann/gannBox.js +1 -1
  136. package/dist/emit/draw/gann/gannBox.js.map +1 -1
  137. package/dist/emit/draw/gann/gannFan.js +1 -1
  138. package/dist/emit/draw/gann/gannFan.js.map +1 -1
  139. package/dist/emit/draw/gann/gannSquare.js +1 -1
  140. package/dist/emit/draw/gann/gannSquare.js.map +1 -1
  141. package/dist/emit/draw/gann/gannSquareFixed.js +1 -1
  142. package/dist/emit/draw/gann/gannSquareFixed.js.map +1 -1
  143. package/dist/emit/draw/handle.d.ts +11 -2
  144. package/dist/emit/draw/handle.d.ts.map +1 -1
  145. package/dist/emit/draw/handle.js +67 -12
  146. package/dist/emit/draw/handle.js.map +1 -1
  147. package/dist/emit/draw/index.js.map +1 -1
  148. package/dist/emit/draw/lines/crossLine.js +1 -1
  149. package/dist/emit/draw/lines/crossLine.js.map +1 -1
  150. package/dist/emit/draw/lines/horizontalLine.d.ts +1 -1
  151. package/dist/emit/draw/lines/horizontalLine.js +1 -1
  152. package/dist/emit/draw/lines/horizontalLine.js.map +1 -1
  153. package/dist/emit/draw/lines/horizontalRay.js +1 -1
  154. package/dist/emit/draw/lines/horizontalRay.js.map +1 -1
  155. package/dist/emit/draw/lines/line.d.ts +1 -1
  156. package/dist/emit/draw/lines/line.d.ts.map +1 -1
  157. package/dist/emit/draw/lines/line.js +2 -3
  158. package/dist/emit/draw/lines/line.js.map +1 -1
  159. package/dist/emit/draw/lines/trendAngle.js +1 -1
  160. package/dist/emit/draw/lines/trendAngle.js.map +1 -1
  161. package/dist/emit/draw/lines/verticalLine.js +1 -1
  162. package/dist/emit/draw/lines/verticalLine.js.map +1 -1
  163. package/dist/emit/draw/namespace.d.ts +5 -4
  164. package/dist/emit/draw/namespace.d.ts.map +1 -1
  165. package/dist/emit/draw/namespace.js +7 -4
  166. package/dist/emit/draw/namespace.js.map +1 -1
  167. package/dist/emit/draw/patterns/abcdPattern.js +1 -1
  168. package/dist/emit/draw/patterns/abcdPattern.js.map +1 -1
  169. package/dist/emit/draw/patterns/cypherPattern.d.ts +1 -2
  170. package/dist/emit/draw/patterns/cypherPattern.d.ts.map +1 -1
  171. package/dist/emit/draw/patterns/cypherPattern.js +1 -1
  172. package/dist/emit/draw/patterns/cypherPattern.js.map +1 -1
  173. package/dist/emit/draw/patterns/headAndShoulders.js +1 -1
  174. package/dist/emit/draw/patterns/headAndShoulders.js.map +1 -1
  175. package/dist/emit/draw/patterns/threeDrivesPattern.js +1 -1
  176. package/dist/emit/draw/patterns/threeDrivesPattern.js.map +1 -1
  177. package/dist/emit/draw/patterns/trianglePattern.d.ts +1 -1
  178. package/dist/emit/draw/patterns/trianglePattern.js +1 -1
  179. package/dist/emit/draw/patterns/trianglePattern.js.map +1 -1
  180. package/dist/emit/draw/patterns/xabcdPattern.js +1 -1
  181. package/dist/emit/draw/patterns/xabcdPattern.js.map +1 -1
  182. package/dist/emit/draw/pitchforks/pitchfan.js +1 -1
  183. package/dist/emit/draw/pitchforks/pitchfan.js.map +1 -1
  184. package/dist/emit/draw/pitchforks/pitchfork.d.ts +1 -1
  185. package/dist/emit/draw/pitchforks/pitchfork.js +2 -2
  186. package/dist/emit/draw/pitchforks/pitchfork.js.map +1 -1
  187. package/dist/emit/draw/pushDrawing.js.map +1 -1
  188. package/dist/emit/draw/subIdAllocator.d.ts +1 -1
  189. package/dist/emit/draw/subIdAllocator.js +1 -1
  190. package/dist/emit/draw/subIdAllocator.js.map +1 -1
  191. package/dist/emit/draw/table/table.d.ts +1 -1
  192. package/dist/emit/draw/table/table.js.map +1 -1
  193. package/dist/emit/emissionsQueue.js.map +1 -1
  194. package/dist/emit/hash.js.map +1 -1
  195. package/dist/emit/hline.js.map +1 -1
  196. package/dist/emit/index.js.map +1 -1
  197. package/dist/emit/logEmission.js.map +1 -1
  198. package/dist/emit/paneResolver.js.map +1 -1
  199. package/dist/emit/plot.d.ts +7 -0
  200. package/dist/emit/plot.d.ts.map +1 -1
  201. package/dist/emit/plot.js +13 -0
  202. package/dist/emit/plot.js.map +1 -1
  203. package/dist/emit/runtimeError.js.map +1 -1
  204. package/dist/execution/dispose.d.ts.map +1 -1
  205. package/dist/execution/dispose.js +16 -0
  206. package/dist/execution/dispose.js.map +1 -1
  207. package/dist/execution/drain.js.map +1 -1
  208. package/dist/execution/index.js.map +1 -1
  209. package/dist/execution/onBarClose.js.map +1 -1
  210. package/dist/execution/onBarTick.js.map +1 -1
  211. package/dist/execution/onHistory.js.map +1 -1
  212. package/dist/execution/runComputeStep.d.ts.map +1 -1
  213. package/dist/execution/runComputeStep.js +10 -1
  214. package/dist/execution/runComputeStep.js.map +1 -1
  215. package/dist/execution/secondaryStream.js.map +1 -1
  216. package/dist/index.d.ts +1 -1
  217. package/dist/index.d.ts.map +1 -1
  218. package/dist/index.js +1 -1
  219. package/dist/index.js.map +1 -1
  220. package/dist/inputs/index.js.map +1 -1
  221. package/dist/inputs/resolveInputs.js.map +1 -1
  222. package/dist/internal.js.map +1 -1
  223. package/dist/persistentStateStore.js.map +1 -1
  224. package/dist/persistentStateStore.runtime.d.ts.map +1 -1
  225. package/dist/persistentStateStore.runtime.js +21 -7
  226. package/dist/persistentStateStore.runtime.js.map +1 -1
  227. package/dist/persistentStateStore.validate.js.map +1 -1
  228. package/dist/primitives.js.map +1 -1
  229. package/dist/request/alignHtfSeriesCache.js.map +1 -1
  230. package/dist/request/alignHtfSeriesToLtf.d.ts +2 -2
  231. package/dist/request/alignHtfSeriesToLtf.js +2 -2
  232. package/dist/request/alignHtfSeriesToLtf.js.map +1 -1
  233. package/dist/request/bucketLtfBarsByMainContainment.js.map +1 -1
  234. package/dist/request/bucketLtfBarsCache.js.map +1 -1
  235. package/dist/request/index.d.ts +2 -1
  236. package/dist/request/index.d.ts.map +1 -1
  237. package/dist/request/index.js +2 -1
  238. package/dist/request/index.js.map +1 -1
  239. package/dist/request/lowerTf.js.map +1 -1
  240. package/dist/request/pushOnce.js.map +1 -1
  241. package/dist/request/requestNamespace.d.ts.map +1 -1
  242. package/dist/request/requestNamespace.js +16 -3
  243. package/dist/request/requestNamespace.js.map +1 -1
  244. package/dist/request/security.d.ts +20 -1
  245. package/dist/request/security.d.ts.map +1 -1
  246. package/dist/request/security.js +62 -23
  247. package/dist/request/security.js.map +1 -1
  248. package/dist/request/securityExprRunner.d.ts +133 -0
  249. package/dist/request/securityExprRunner.d.ts.map +1 -0
  250. package/dist/request/securityExprRunner.js +235 -0
  251. package/dist/request/securityExprRunner.js.map +1 -0
  252. package/dist/request/streamBars.d.ts +14 -1
  253. package/dist/request/streamBars.d.ts.map +1 -1
  254. package/dist/request/streamBars.js +39 -1
  255. package/dist/request/streamBars.js.map +1 -1
  256. package/dist/ringBuffer.d.ts +2 -2
  257. package/dist/ringBuffer.js +1 -1
  258. package/dist/ringBuffer.js.map +1 -1
  259. package/dist/runtimeContext.d.ts +51 -3
  260. package/dist/runtimeContext.d.ts.map +1 -1
  261. package/dist/runtimeContext.js.map +1 -1
  262. package/dist/seriesView.d.ts +43 -18
  263. package/dist/seriesView.d.ts.map +1 -1
  264. package/dist/seriesView.js +66 -43
  265. package/dist/seriesView.js.map +1 -1
  266. package/dist/state/index.d.ts +2 -1
  267. package/dist/state/index.d.ts.map +1 -1
  268. package/dist/state/index.js +2 -1
  269. package/dist/state/index.js.map +1 -1
  270. package/dist/state/lifecycle.d.ts +40 -0
  271. package/dist/state/lifecycle.d.ts.map +1 -1
  272. package/dist/state/lifecycle.js +53 -0
  273. package/dist/state/lifecycle.js.map +1 -1
  274. package/dist/state/seriesPersistence.d.ts +48 -0
  275. package/dist/state/seriesPersistence.d.ts.map +1 -0
  276. package/dist/state/seriesPersistence.js +87 -0
  277. package/dist/state/seriesPersistence.js.map +1 -0
  278. package/dist/state/seriesSlot.d.ts +105 -0
  279. package/dist/state/seriesSlot.d.ts.map +1 -0
  280. package/dist/state/seriesSlot.js +123 -0
  281. package/dist/state/seriesSlot.js.map +1 -0
  282. package/dist/state/stateNamespace.d.ts.map +1 -1
  283. package/dist/state/stateNamespace.js +28 -0
  284. package/dist/state/stateNamespace.js.map +1 -1
  285. package/dist/state/stateSlot.js.map +1 -1
  286. package/dist/stateStore.d.ts +2 -2
  287. package/dist/stateStore.js.map +1 -1
  288. package/dist/streamState.d.ts +26 -20
  289. package/dist/streamState.d.ts.map +1 -1
  290. package/dist/streamState.js +41 -67
  291. package/dist/streamState.js.map +1 -1
  292. package/dist/ta/adl.js +2 -2
  293. package/dist/ta/adl.js.map +1 -1
  294. package/dist/ta/adr.d.ts +3 -3
  295. package/dist/ta/adr.js +5 -5
  296. package/dist/ta/adr.js.map +1 -1
  297. package/dist/ta/adx.d.ts +3 -2
  298. package/dist/ta/adx.d.ts.map +1 -1
  299. package/dist/ta/adx.js +5 -4
  300. package/dist/ta/adx.js.map +1 -1
  301. package/dist/ta/alma.d.ts +6 -4
  302. package/dist/ta/alma.d.ts.map +1 -1
  303. package/dist/ta/alma.js +21 -8
  304. package/dist/ta/alma.js.map +1 -1
  305. package/dist/ta/anchoredVolumeProfile.js.map +1 -1
  306. package/dist/ta/anchoredVwap.d.ts +1 -1
  307. package/dist/ta/anchoredVwap.js +3 -3
  308. package/dist/ta/anchoredVwap.js.map +1 -1
  309. package/dist/ta/ao.js +2 -2
  310. package/dist/ta/ao.js.map +1 -1
  311. package/dist/ta/aroon.js +2 -2
  312. package/dist/ta/aroon.js.map +1 -1
  313. package/dist/ta/aroonOsc.js +2 -2
  314. package/dist/ta/aroonOsc.js.map +1 -1
  315. package/dist/ta/atr.d.ts +3 -2
  316. package/dist/ta/atr.d.ts.map +1 -1
  317. package/dist/ta/atr.js +5 -4
  318. package/dist/ta/atr.js.map +1 -1
  319. package/dist/ta/barssince.js +1 -1
  320. package/dist/ta/barssince.js.map +1 -1
  321. package/dist/ta/bb.d.ts +3 -2
  322. package/dist/ta/bb.d.ts.map +1 -1
  323. package/dist/ta/bb.js +5 -4
  324. package/dist/ta/bb.js.map +1 -1
  325. package/dist/ta/bbPercentB.js +2 -2
  326. package/dist/ta/bbPercentB.js.map +1 -1
  327. package/dist/ta/bbw.js +2 -2
  328. package/dist/ta/bbw.js.map +1 -1
  329. package/dist/ta/bop.js +2 -2
  330. package/dist/ta/bop.js.map +1 -1
  331. package/dist/ta/cci.js +2 -2
  332. package/dist/ta/cci.js.map +1 -1
  333. package/dist/ta/chaikinOsc.d.ts +3 -2
  334. package/dist/ta/chaikinOsc.d.ts.map +1 -1
  335. package/dist/ta/chaikinOsc.js +5 -4
  336. package/dist/ta/chaikinOsc.js.map +1 -1
  337. package/dist/ta/chandeKrollStop.d.ts +1 -1
  338. package/dist/ta/chandeKrollStop.js +3 -3
  339. package/dist/ta/chandeKrollStop.js.map +1 -1
  340. package/dist/ta/chandelier.d.ts +1 -1
  341. package/dist/ta/chandelier.js +3 -3
  342. package/dist/ta/chandelier.js.map +1 -1
  343. package/dist/ta/change.js +1 -1
  344. package/dist/ta/change.js.map +1 -1
  345. package/dist/ta/chop.js +2 -2
  346. package/dist/ta/chop.js.map +1 -1
  347. package/dist/ta/cmf.js +2 -2
  348. package/dist/ta/cmf.js.map +1 -1
  349. package/dist/ta/cmo.js +2 -2
  350. package/dist/ta/cmo.js.map +1 -1
  351. package/dist/ta/connorsRsi.d.ts +1 -1
  352. package/dist/ta/connorsRsi.js +3 -3
  353. package/dist/ta/connorsRsi.js.map +1 -1
  354. package/dist/ta/coppock.js +2 -2
  355. package/dist/ta/coppock.js.map +1 -1
  356. package/dist/ta/crossover.d.ts +3 -2
  357. package/dist/ta/crossover.d.ts.map +1 -1
  358. package/dist/ta/crossover.js +4 -3
  359. package/dist/ta/crossover.js.map +1 -1
  360. package/dist/ta/crossunder.d.ts +3 -2
  361. package/dist/ta/crossunder.d.ts.map +1 -1
  362. package/dist/ta/crossunder.js +4 -3
  363. package/dist/ta/crossunder.js.map +1 -1
  364. package/dist/ta/dema.js +2 -2
  365. package/dist/ta/dema.js.map +1 -1
  366. package/dist/ta/dmi.d.ts +4 -3
  367. package/dist/ta/dmi.d.ts.map +1 -1
  368. package/dist/ta/dmi.js +6 -5
  369. package/dist/ta/dmi.js.map +1 -1
  370. package/dist/ta/donchian.js +2 -2
  371. package/dist/ta/donchian.js.map +1 -1
  372. package/dist/ta/dpo.js +2 -2
  373. package/dist/ta/dpo.js.map +1 -1
  374. package/dist/ta/ema.d.ts +3 -2
  375. package/dist/ta/ema.d.ts.map +1 -1
  376. package/dist/ta/ema.js +5 -4
  377. package/dist/ta/ema.js.map +1 -1
  378. package/dist/ta/envelope.js +2 -2
  379. package/dist/ta/envelope.js.map +1 -1
  380. package/dist/ta/eom.d.ts +3 -1
  381. package/dist/ta/eom.d.ts.map +1 -1
  382. package/dist/ta/eom.js +5 -3
  383. package/dist/ta/eom.js.map +1 -1
  384. package/dist/ta/fisher.js +2 -2
  385. package/dist/ta/fisher.js.map +1 -1
  386. package/dist/ta/fixedRangeVolumeProfile.js.map +1 -1
  387. package/dist/ta/highest.js +1 -1
  388. package/dist/ta/highest.js.map +1 -1
  389. package/dist/ta/highestbars.d.ts +25 -0
  390. package/dist/ta/highestbars.d.ts.map +1 -0
  391. package/dist/ta/highestbars.js +106 -0
  392. package/dist/ta/highestbars.js.map +1 -0
  393. package/dist/ta/historicalVolatility.d.ts +3 -2
  394. package/dist/ta/historicalVolatility.d.ts.map +1 -1
  395. package/dist/ta/historicalVolatility.js +5 -4
  396. package/dist/ta/historicalVolatility.js.map +1 -1
  397. package/dist/ta/hma.js +2 -2
  398. package/dist/ta/hma.js.map +1 -1
  399. package/dist/ta/ichimoku.d.ts +3 -1
  400. package/dist/ta/ichimoku.d.ts.map +1 -1
  401. package/dist/ta/ichimoku.js +5 -3
  402. package/dist/ta/ichimoku.js.map +1 -1
  403. package/dist/ta/index.js.map +1 -1
  404. package/dist/ta/kama.js +2 -2
  405. package/dist/ta/kama.js.map +1 -1
  406. package/dist/ta/keltner.js +2 -2
  407. package/dist/ta/keltner.js.map +1 -1
  408. package/dist/ta/klinger.js +2 -2
  409. package/dist/ta/klinger.js.map +1 -1
  410. package/dist/ta/kst.js +2 -2
  411. package/dist/ta/kst.js.map +1 -1
  412. package/dist/ta/lib/adxFromDi.js +2 -2
  413. package/dist/ta/lib/adxFromDi.js.map +1 -1
  414. package/dist/ta/lib/computeMa.js +2 -2
  415. package/dist/ta/lib/computeMa.js.map +1 -1
  416. package/dist/ta/lib/computeMaOfFloat64.js +2 -2
  417. package/dist/ta/lib/computeMaOfFloat64.js.map +1 -1
  418. package/dist/ta/lib/directionalState.js +2 -2
  419. package/dist/ta/lib/directionalState.js.map +1 -1
  420. package/dist/ta/lib/donchianMid.js +2 -2
  421. package/dist/ta/lib/donchianMid.js.map +1 -1
  422. package/dist/ta/lib/emaFloat64.js +2 -2
  423. package/dist/ta/lib/emaFloat64.js.map +1 -1
  424. package/dist/ta/lib/linearRegression.js +2 -2
  425. package/dist/ta/lib/linearRegression.js.map +1 -1
  426. package/dist/ta/lib/maTypes.js.map +1 -1
  427. package/dist/ta/lib/pearson.js +2 -2
  428. package/dist/ta/lib/pearson.js.map +1 -1
  429. package/dist/ta/lib/pickCandleSource.js +2 -2
  430. package/dist/ta/lib/pickCandleSource.js.map +1 -1
  431. package/dist/ta/lib/readSourceField.js +2 -2
  432. package/dist/ta/lib/readSourceField.js.map +1 -1
  433. package/dist/ta/lib/rollingStddev.js +2 -2
  434. package/dist/ta/lib/rollingStddev.js.map +1 -1
  435. package/dist/ta/lib/smaFloat64.js +2 -2
  436. package/dist/ta/lib/smaFloat64.js.map +1 -1
  437. package/dist/ta/lib/smmaFloat64.js +2 -2
  438. package/dist/ta/lib/smmaFloat64.js.map +1 -1
  439. package/dist/ta/lib/sourceValue.js.map +1 -1
  440. package/dist/ta/lib/trSeries.js +2 -2
  441. package/dist/ta/lib/trSeries.js.map +1 -1
  442. package/dist/ta/lib/volume-profile/bucketEdges.js.map +1 -1
  443. package/dist/ta/lib/volume-profile/bucketizeVolume.js.map +1 -1
  444. package/dist/ta/lib/volume-profile/developingSeries.js.map +1 -1
  445. package/dist/ta/lib/volume-profile/index.js.map +1 -1
  446. package/dist/ta/lib/volume-profile/intercept.js.map +1 -1
  447. package/dist/ta/lib/volume-profile/scaffold.js.map +1 -1
  448. package/dist/ta/lib/volume-profile/tooHeavy.js.map +1 -1
  449. package/dist/ta/lib/volume-profile/types.js.map +1 -1
  450. package/dist/ta/lib/volume-profile/valueArea.js.map +1 -1
  451. package/dist/ta/lib/volume-profile/volumeProfileShared.js.map +1 -1
  452. package/dist/ta/lib/vwmaFloat64.js +2 -2
  453. package/dist/ta/lib/vwmaFloat64.js.map +1 -1
  454. package/dist/ta/lib/wilderDirectional.js +2 -2
  455. package/dist/ta/lib/wilderDirectional.js.map +1 -1
  456. package/dist/ta/lib/wilderSmoothing.js +2 -2
  457. package/dist/ta/lib/wilderSmoothing.js.map +1 -1
  458. package/dist/ta/lib/wmaFloat64.js +2 -2
  459. package/dist/ta/lib/wmaFloat64.js.map +1 -1
  460. package/dist/ta/lowest.js +1 -1
  461. package/dist/ta/lowest.js.map +1 -1
  462. package/dist/ta/lowestbars.d.ts +25 -0
  463. package/dist/ta/lowestbars.d.ts.map +1 -0
  464. package/dist/ta/lowestbars.js +102 -0
  465. package/dist/ta/lowestbars.js.map +1 -0
  466. package/dist/ta/lsma.js +2 -2
  467. package/dist/ta/lsma.js.map +1 -1
  468. package/dist/ta/maRibbon.js +2 -2
  469. package/dist/ta/maRibbon.js.map +1 -1
  470. package/dist/ta/macd.d.ts +3 -2
  471. package/dist/ta/macd.d.ts.map +1 -1
  472. package/dist/ta/macd.js +6 -5
  473. package/dist/ta/macd.js.map +1 -1
  474. package/dist/ta/massIndex.d.ts +3 -2
  475. package/dist/ta/massIndex.d.ts.map +1 -1
  476. package/dist/ta/massIndex.js +5 -4
  477. package/dist/ta/massIndex.js.map +1 -1
  478. package/dist/ta/mcginley.js +2 -2
  479. package/dist/ta/mcginley.js.map +1 -1
  480. package/dist/ta/median.js +2 -2
  481. package/dist/ta/median.js.map +1 -1
  482. package/dist/ta/mfi.d.ts +3 -1
  483. package/dist/ta/mfi.d.ts.map +1 -1
  484. package/dist/ta/mfi.js +5 -3
  485. package/dist/ta/mfi.js.map +1 -1
  486. package/dist/ta/momentum.js +2 -2
  487. package/dist/ta/momentum.js.map +1 -1
  488. package/dist/ta/netVolume.d.ts +3 -1
  489. package/dist/ta/netVolume.d.ts.map +1 -1
  490. package/dist/ta/netVolume.js +5 -3
  491. package/dist/ta/netVolume.js.map +1 -1
  492. package/dist/ta/nvi.d.ts +3 -1
  493. package/dist/ta/nvi.d.ts.map +1 -1
  494. package/dist/ta/nvi.js +5 -3
  495. package/dist/ta/nvi.js.map +1 -1
  496. package/dist/ta/nz.js +1 -1
  497. package/dist/ta/nz.js.map +1 -1
  498. package/dist/ta/obv.js +2 -2
  499. package/dist/ta/obv.js.map +1 -1
  500. package/dist/ta/persistence.d.ts.map +1 -1
  501. package/dist/ta/persistence.js +1 -40
  502. package/dist/ta/persistence.js.map +1 -1
  503. package/dist/ta/pivotsHighLow.js +2 -2
  504. package/dist/ta/pivotsHighLow.js.map +1 -1
  505. package/dist/ta/pivotsStandard.d.ts +1 -1
  506. package/dist/ta/pivotsStandard.js +3 -3
  507. package/dist/ta/pivotsStandard.js.map +1 -1
  508. package/dist/ta/pmo.js +2 -2
  509. package/dist/ta/pmo.js.map +1 -1
  510. package/dist/ta/ppo.d.ts +3 -2
  511. package/dist/ta/ppo.d.ts.map +1 -1
  512. package/dist/ta/ppo.js +5 -4
  513. package/dist/ta/ppo.js.map +1 -1
  514. package/dist/ta/psar.js +2 -2
  515. package/dist/ta/psar.js.map +1 -1
  516. package/dist/ta/pvi.d.ts +3 -1
  517. package/dist/ta/pvi.d.ts.map +1 -1
  518. package/dist/ta/pvi.js +5 -3
  519. package/dist/ta/pvi.js.map +1 -1
  520. package/dist/ta/pvo.d.ts +3 -1
  521. package/dist/ta/pvo.d.ts.map +1 -1
  522. package/dist/ta/pvo.js +5 -3
  523. package/dist/ta/pvo.js.map +1 -1
  524. package/dist/ta/pvt.d.ts +3 -1
  525. package/dist/ta/pvt.d.ts.map +1 -1
  526. package/dist/ta/pvt.js +5 -3
  527. package/dist/ta/pvt.js.map +1 -1
  528. package/dist/ta/registry.d.ts +7 -1
  529. package/dist/ta/registry.d.ts.map +1 -1
  530. package/dist/ta/registry.js +4 -0
  531. package/dist/ta/registry.js.map +1 -1
  532. package/dist/ta/roc.js +2 -2
  533. package/dist/ta/roc.js.map +1 -1
  534. package/dist/ta/rsi.d.ts +3 -2
  535. package/dist/ta/rsi.d.ts.map +1 -1
  536. package/dist/ta/rsi.js +5 -4
  537. package/dist/ta/rsi.js.map +1 -1
  538. package/dist/ta/rvgi.js +2 -2
  539. package/dist/ta/rvgi.js.map +1 -1
  540. package/dist/ta/rvi.d.ts +3 -2
  541. package/dist/ta/rvi.d.ts.map +1 -1
  542. package/dist/ta/rvi.js +5 -4
  543. package/dist/ta/rvi.js.map +1 -1
  544. package/dist/ta/sessionVolumeProfile.js.map +1 -1
  545. package/dist/ta/sma.d.ts +6 -3
  546. package/dist/ta/sma.d.ts.map +1 -1
  547. package/dist/ta/sma.js +8 -5
  548. package/dist/ta/sma.js.map +1 -1
  549. package/dist/ta/smi.js +2 -2
  550. package/dist/ta/smi.js.map +1 -1
  551. package/dist/ta/smma.js +2 -2
  552. package/dist/ta/smma.js.map +1 -1
  553. package/dist/ta/stdev.d.ts +3 -2
  554. package/dist/ta/stdev.d.ts.map +1 -1
  555. package/dist/ta/stdev.js +5 -4
  556. package/dist/ta/stdev.js.map +1 -1
  557. package/dist/ta/stoch.js +2 -2
  558. package/dist/ta/stoch.js.map +1 -1
  559. package/dist/ta/stochRsi.js +2 -2
  560. package/dist/ta/stochRsi.js.map +1 -1
  561. package/dist/ta/supertrend.d.ts +1 -1
  562. package/dist/ta/supertrend.js +3 -3
  563. package/dist/ta/supertrend.js.map +1 -1
  564. package/dist/ta/tema.js +2 -2
  565. package/dist/ta/tema.js.map +1 -1
  566. package/dist/ta/trendStrengthIndex.d.ts +4 -3
  567. package/dist/ta/trendStrengthIndex.d.ts.map +1 -1
  568. package/dist/ta/trendStrengthIndex.js +6 -5
  569. package/dist/ta/trendStrengthIndex.js.map +1 -1
  570. package/dist/ta/trix.d.ts +4 -3
  571. package/dist/ta/trix.d.ts.map +1 -1
  572. package/dist/ta/trix.js +6 -5
  573. package/dist/ta/trix.js.map +1 -1
  574. package/dist/ta/tsi.js +2 -2
  575. package/dist/ta/tsi.js.map +1 -1
  576. package/dist/ta/ulcerIndex.js +2 -2
  577. package/dist/ta/ulcerIndex.js.map +1 -1
  578. package/dist/ta/ultimateOsc.js +2 -2
  579. package/dist/ta/ultimateOsc.js.map +1 -1
  580. package/dist/ta/valuewhen.js +1 -1
  581. package/dist/ta/valuewhen.js.map +1 -1
  582. package/dist/ta/visibleRangeVolumeProfile.d.ts +2 -2
  583. package/dist/ta/visibleRangeVolumeProfile.js +2 -2
  584. package/dist/ta/visibleRangeVolumeProfile.js.map +1 -1
  585. package/dist/ta/vol.js +2 -2
  586. package/dist/ta/vol.js.map +1 -1
  587. package/dist/ta/volatilityStop.d.ts +1 -1
  588. package/dist/ta/volatilityStop.js +3 -3
  589. package/dist/ta/volatilityStop.js.map +1 -1
  590. package/dist/ta/vortex.d.ts +3 -2
  591. package/dist/ta/vortex.d.ts.map +1 -1
  592. package/dist/ta/vortex.js +5 -4
  593. package/dist/ta/vortex.js.map +1 -1
  594. package/dist/ta/vwap.d.ts +3 -3
  595. package/dist/ta/vwap.js +5 -5
  596. package/dist/ta/vwap.js.map +1 -1
  597. package/dist/ta/vwma.js +2 -2
  598. package/dist/ta/vwma.js.map +1 -1
  599. package/dist/ta/williamsFractal.js +2 -2
  600. package/dist/ta/williamsFractal.js.map +1 -1
  601. package/dist/ta/williamsR.js +2 -2
  602. package/dist/ta/williamsR.js.map +1 -1
  603. package/dist/ta/wma.js +2 -2
  604. package/dist/ta/wma.js.map +1 -1
  605. package/dist/ta/zigZag.js +2 -2
  606. package/dist/ta/zigZag.js.map +1 -1
  607. package/dist/views/barstateView.js.map +1 -1
  608. package/dist/views/index.js.map +1 -1
  609. package/dist/views/refreshRuntimeViews.js.map +1 -1
  610. package/dist/views/symInfoView.js.map +1 -1
  611. package/dist/views/timeframeView.js.map +1 -1
  612. package/package.json +3 -3
  613. package/dist/ta/lib/applyOffset.d.ts +0 -19
  614. package/dist/ta/lib/applyOffset.d.ts.map +0 -1
  615. package/dist/ta/lib/applyOffset.js +0 -38
  616. package/dist/ta/lib/applyOffset.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,250 @@
1
1
  # @invinite-org/chartlang-runtime
2
2
 
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 850ae21: Add `bar.point(offset, price)` — index authoring sugar for anchoring drawings
8
+ by bar offset instead of an absolute timestamp.
9
+
10
+ `bar.point` resolves the offset to the existing time-based `WorldPoint`
11
+ (`{ time, price }`) at compute time, so it composes directly with every
12
+ `draw.*` anchor argument and introduces no new wire format or anchor union:
13
+
14
+ - `bar.point(0, price)` — the current bar.
15
+ - `bar.point(-n, price)` — `n` bars back, using the real historical timestamp
16
+ from the runtime's time ring buffer (`NaN` time past retained history; never
17
+ throws).
18
+ - `bar.point(n, price)` — a future bar, with the time extrapolated from the
19
+ median recent bar spacing (falling back to the parsed bar interval when
20
+ fewer than two bars are retained).
21
+
22
+ The compiler's max-lookback analysis now counts a negative integer-literal
23
+ `bar.point(-n, …)` offset toward `maxLookback` exactly like a `series[n]`
24
+ lookback, so the runtime sizes the time buffer deeply enough; positive (future)
25
+ offsets and dynamic offsets contribute no extra depth. The recogniser peels
26
+ parentheses, so the converter's emitted form `bar.point(-(n), …)` is sized
27
+ identically to a hand-written `bar.point(-n, …)` (without it, a converted
28
+ historical tracking line sized its buffer to 0 and resolved to a NaN anchor).
29
+
30
+ The Pine v6 converter now lowers `bar_index` drawing anchors to
31
+ `bar.point(<signed offset>, <price>)` and drops the dead `__BAR_INTERVAL_MS`
32
+ sentinel and its `bar.time ± (N * __BAR_INTERVAL_MS)` arithmetic — future
33
+ anchors resolve at runtime instead of needing a host-supplied bar interval.
34
+
35
+ - ca19e20: Bidirectional plot `offset` — negative offsets shift a plotted series left.
36
+
37
+ `offset` becomes a presentation-only **display shift** in bars with the
38
+ fixed sign convention `+n` = right (future), `−n` = left (past); the
39
+ numeric series value is unshifted. This replaces the old value-read model
40
+ (where a positive offset made `series.current` read the value N bars ago
41
+ and a negative offset resolved to `NaN`). The `*Opts` `offset` JSDoc (and
42
+ ALMA's `barShift`) now describe both directions and drop the old
43
+ "negative ⇒ NaN" wording (`AlmaOpts.offset`, the Gaussian-centre
44
+ position, is unchanged).
45
+
46
+ `PlotEmission` gains an optional presentation field `xShift?: number`
47
+ (signed integer bars; omitted/`0` ≡ no shift, so a no-shift emission is
48
+ byte-identical to today). `validateEmission` rejects a non-integer
49
+ `xShift`. The compiler no longer counts `offset` toward `maxLookback`
50
+ (the value is no longer read from a deeper slot). The runtime threads the
51
+ declared offset onto the emission as `xShift` (reading a
52
+ `WeakMap<Series, number>` offset tag set by `makeShiftedSeriesView`; ALMA
53
+ tags `opts.barShift`) and stops the old value-read shift so
54
+ `series.current` is unshifted; the reference adapter renders it by
55
+ projecting `xShift` onto the x-axis (extending the viewport for
56
+ future-shifted points).
57
+
58
+ The Pine converter now maps `plot(<ta.* call>, offset=N)` onto the
59
+ emitted `ta.*` call's `offset` opt (signed, both directions); a plot
60
+ whose value is not a direct `ta.*` call drops the offset and emits the
61
+ new `plot-offset-needs-ta-call` warning, and a plot-level offset
62
+ replacing the ta call's own `offset=` emits `plot-offset-overrides-ta-offset`.
63
+
64
+ The conformance harness's `plot-field` assertion gains an `xShift` field,
65
+ and a new scenario pins both shift directions plus the unshifted value
66
+ series.
67
+
68
+ - 6235ad7: Make the compute bar's OHLCV + derived fields directly indexable as a series.
69
+
70
+ `bar.close`, `bar.open`, `bar.high`, `bar.low`, `bar.volume`, and the derived
71
+ `bar.hl2` / `bar.hlc3` / `bar.ohlc4` / `bar.hlcc4` are now `PriceSeries` /
72
+ `VolumeSeries` (`number & Series<number>`) on the bar passed to `compute`
73
+ (`ComputeContext.bar`, typed as the new `BarSeries`). Each field is **both** a
74
+ scalar — `bar.close * 2`, `plot(bar.close)`, `ta.ema(bar.close, 20)` keep
75
+ working unchanged — **and** an indexable series, so a script can read prior
76
+ bars directly:
77
+
78
+ ```ts
79
+ const sma5 =
80
+ (bar.close[0] + bar.close[1] + bar.close[2] + bar.close[3] + bar.close[4]) /
81
+ 5;
82
+ ```
83
+
84
+ This removes the `ta.ema(bar.close, 1)` identity-trick that scripts previously
85
+ needed to "republish" a scalar price as an indexable `Series`.
86
+
87
+ The adapter-supplied candle type `Bar` (and `request.lowerTf` intrabar bars) is
88
+ unchanged — it stays scalar OHLCV; only the streaming `compute` bar gains the
89
+ series shape. `request.security`'s higher-timeframe bar remains the separate
90
+ `SecurityBar`.
91
+
92
+ Migration note: because the field is now an object, `Number.isFinite(bar.close)`
93
+ is always `false` (it does not coerce) and `bar.close === 42` is `false` (object
94
+ vs number). Use `bar.close.current` or `+bar.close` in those raw-number
95
+ contexts. `bar.point(0, bar.close)` continues to work — the runtime coerces the
96
+ anchor price to a scalar.
97
+
98
+ - 3bf391a: Add the `draw.fillBetween(edgeA, edgeB, opts?)` drawing primitive — a
99
+ native filled ribbon between two edges (the closed polygon `edgeA`
100
+ forward then `edgeB` reversed). It is the chartlang equivalent of Pine's
101
+ `linefill.new(line1, line2, color)` / `fill(plot1, plot2)`. The
102
+ pine-converter now lowers static two-line `linefill.new` to it instead of
103
+ approximating with `draw.rotatedRectangle`, retiring the
104
+ `linefill-rotatedrect-approximated` diagnostic.
105
+ - 8086003: Add an optional presentation-only `z` (render-order / z-index) option to
106
+ `plot()` and every `draw.*` primitive. Default `0`; higher renders on
107
+ top, ties fall back to the existing group + declaration order. Finite
108
+ numbers only. Affects stacking only — values, alerts, and `state.*` are
109
+ unchanged.
110
+
111
+ Adapter kit: `PlotEmission` and `DrawingEmission` gain the matching
112
+ presentation-only `z?: number` wire field, validated by
113
+ `validateEmission` as a finite number (NaN / ±Infinity rejected;
114
+ fractional and negative allowed). Omitted/`0` stays byte-identical to a
115
+ pre-feature emission, so existing goldens and conformance hashes are
116
+ untouched.
117
+
118
+ Runtime: `plotImpl` reads `opts.z`, and the drawing-emit path
119
+ (`createDrawingHandle`) lifts `z` out of `state.style` — into a shallow
120
+ clone with `z` removed, where the per-kind `draw.*` impls fold the opts
121
+ bag — and threads it onto the top-level `PlotEmission.z` /
122
+ `DrawingEmission.z` with the same omit-when-`0` conditional spread used
123
+ for `xShift`. `z` is persisted **beside** the drawing slot's `state`
124
+ (never inside `DrawingState`), so an `update` retains the last value. A
125
+ no-`z` plot or drawing emits no `z` key — byte-identical to the
126
+ pre-feature baseline. `draw.table` / `draw.group` do not carry `z` in
127
+ v1.
128
+
129
+ Pine converter: `explicit_plot_zorder` is now a recognized no-op instead
130
+ of an unmapped warning. chartlang already layers marks by declaration
131
+ order within their group (the normative ordering contract), which is
132
+ exactly what Pine's `explicit_plot_zorder=true` makes authoritative — so
133
+ the flag is satisfied by default and needs no chartlang option.
134
+ `mapDeclarationArgs` no longer raises `indicator-arg-not-mapped` for it;
135
+ instead it emits a single `explicit-plot-zorder-default` info note
136
+ (covering both `explicit_plot_zorder=true` and the Pine-default
137
+ `=false`). The converter still never _emits_ a numeric `z` — Pine has no
138
+ per-element z source construct. Other unmapped `indicator(...)` args
139
+ (`timeframe`, etc.) keep warning.
140
+
141
+ Compiler: the ambient `@invinite-org/chartlang-core` `.d.ts` shim gains a
142
+ `ZOrdered { z?: number }` mixin intersected into `PlotOpts` and every
143
+ `draw.*` option type (mirroring core's `drawingStyle.ts`), so a compiled
144
+ script's `plot(value, { z })` **and** `draw.*(…, { z })` type-check (the
145
+ shim stays in lockstep with core).
146
+
147
+ Conformance: a new `z-order` scenario pins the plot `z` →
148
+ `PlotEmission.z` wire contract — a `plot(value, { z: -1 })` emits
149
+ `z: -1`, a no-`z` plot omits the field (omit-when-`0` byte-identity), and
150
+ a value-hash proves `z` never transforms the series. The `plot-field`
151
+ assertion's `field` union widens to also accept `"z"`.
152
+
153
+ - 073f41b: Add the higher-timeframe expression/callback overload to `request.security`.
154
+ Alongside the existing data form `request.security({ interval })` →
155
+ `SecurityBar`, scripts can now write `request.security({ interval }, (bar) =>
156
+ …)` → `Series<number>`, where the callback runs on the **higher-timeframe
157
+ clock** — `request.security({ interval: "1W" }, (bar) => ta.ema(bar.close, 20))`
158
+ is a true weekly EMA(20) (20 weekly bars), not 20 main bars of a weekly-stepped
159
+ series. The result is aligned no-lookahead down to the main timeline.
160
+
161
+ - **core** — the `SecurityExpr` callback type (re-exported from the package
162
+ root), the second `security` overload, and the shared `statefulPrimitives`
163
+ entry annotated as covering both arities.
164
+ - **compiler** — records one `SecurityExpressionDescriptor { slotId, interval,
165
+ paramName }` per expression callsite in `manifest.securityExpressions`
166
+ (sorted by `slotId`, omitted for the data-only form), and validates each
167
+ callback against the allowed subset — its `bar` parameter and body locals,
168
+ the ambient `ta` / `inputs`, safe `Math.*` globals, and literals — rejecting
169
+ any captured outer binding with the new
170
+ `request-security-expr-captures-local` diagnostic.
171
+ - **runtime** — mounts one `SecurityExprRunner` per manifest entry: the
172
+ callback is captured lazily on the first main compute, driven once per HTF bar
173
+ close through a dedicated fold `StreamState` so `ta.*` accumulate on the HTF
174
+ clock, and one sampled value per HTF bar feeds a per-slot output buffer that
175
+ `request.security(opts, expr)` returns aligned no-lookahead to the main
176
+ timeline. Capability / interval / stream fallbacks return an all-NaN series
177
+ with a deduped diagnostic.
178
+ - **host-worker / host-quickjs** — boot the expression form unchanged; the
179
+ `__manifest` sidecar already carries `securityExpressions`.
180
+ - **pine-converter** — Pine's `request.security(sym, "D", ta.ema(close, 9))`
181
+ now lowers to the chartlang callback form
182
+ `request.security({ interval: "1d" }, (bar) => ta.ema(bar.close, 9))` (a bare
183
+ OHLCV third arg keeps lowering to the data form).
184
+ - **conformance** — new scenarios prove the weekly expression value differs
185
+ from a same-length main-timeframe EMA, plus the `multiTimeframe: false` NaN
186
+ fallback.
187
+
188
+ - 5a9c24d: Add `state.series(init)` — a writable, indexable user series. Store an
189
+ arbitrary value each bar (`s.value = expr`) and read its history N bars
190
+ back (`s[1]`). Number-coercible (`+s`, `s.current`) and usable as a `ta.*`
191
+ source. The Pine converter lowers a history-indexed `var` to it.
192
+ - 08c536c: Add the `ta.highestbars` / `ta.lowestbars` primitives plus the cross-package
193
+ wiring that makes them usable as drawing anchors and Pine-converter targets.
194
+
195
+ - **core / runtime:** `ta.highestbars(source, length, opts?)` and
196
+ `ta.lowestbars(source, length, opts?)` return the bar OFFSET (≤ 0) to the
197
+ highest / lowest `source` value over the trailing `length` bars (window
198
+ INCLUDES the current bar). `0` → current bar is the extreme; `-k` → the
199
+ extreme occurred `k` bars ago. Ties resolve to the most recent bar; NaN
200
+ inputs are skipped; warmup is `length − 1` bars; tick-mode replays the
201
+ in-progress head as the offset-0 candidate. Registered in
202
+ `STATEFUL_PRIMITIVES` (now 174 entries) and `TA_REGISTRY` (now 96 entries).
203
+ - **compiler:** a literal-length `ta.highestbars` / `ta.lowestbars` call
204
+ contributes `length − 1` toward `maxLookback`, so the runtime sizes the time
205
+ ring buffer deep enough for a `bar.point(<that offset>, …)` anchor to resolve.
206
+ A non-literal length contributes 0.
207
+ - **pine-converter:** `ta.highestbars` / `ta.lowestbars` now map to the real
208
+ chartlang primitives (previously lossy passthroughs to `ta.highest` /
209
+ `ta.lowest`). **Behavior change:** a DYNAMIC `bar_index + <non-literal>`
210
+ drawing-x anchor no longer raises the hard `requires-bar-interval` error —
211
+ the offset is resolved by `bar.point` at runtime sign-agnostically (a
212
+ negative runtime offset, e.g. what `ta.highestbars` returns, resolves to the
213
+ historical timestamp via the time buffer). Only the literal `bar_index + N`
214
+ future case still requires a bar interval.
215
+ - **conformance:** new `TA_HIGHEST_LOWEST_BARS_SCENARIO` export pins both
216
+ primitives end-to-end through the compiler + runtime over the bundled
217
+ `goldenBars.json` fixture, and is added to `ALL_SCENARIOS`.
218
+
219
+ ### Patch Changes
220
+
221
+ - 850ae21: Promote every remaining `@experimental` symbol to `@stable`. The entire
222
+ `pine-converter` public surface, the three `pineConverterRoundTrip*` conformance
223
+ scenarios, and `runtime/barPoint.ts` now carry the stable maturity marker.
224
+ Annotation-only — no behavior, API, or output changes; goldens and conformance
225
+ reports are byte-identical. The hand-authored `docs/converter/index.md`
226
+ stability line is updated to match.
227
+ - Updated dependencies [850ae21]
228
+ - Updated dependencies [ca19e20]
229
+ - Updated dependencies [6235ad7]
230
+ - Updated dependencies [3bf391a]
231
+ - Updated dependencies [8086003]
232
+ - Updated dependencies [850ae21]
233
+ - Updated dependencies [073f41b]
234
+ - Updated dependencies [5a9c24d]
235
+ - Updated dependencies [08c536c]
236
+ - @invinite-org/chartlang-core@1.2.0
237
+ - @invinite-org/chartlang-adapter-kit@1.3.0
238
+
239
+ ## 1.1.1
240
+
241
+ ### Patch Changes
242
+
243
+ - 71ea0a5: Inline original TypeScript sources into emitted `.js.map` files (`inlineSources: true`). Published sourcemaps no longer reference missing `../src/*.ts` files, fixing "points to missing source files" warnings in downstream bundlers (e.g. Vite).
244
+ - Updated dependencies [71ea0a5]
245
+ - @invinite-org/chartlang-adapter-kit@1.2.1
246
+ - @invinite-org/chartlang-core@1.1.1
247
+
3
248
  ## 1.1.0
4
249
 
5
250
  ### Minor Changes
package/README.md CHANGED
@@ -58,8 +58,7 @@ const emissions = runner.drain();
58
58
 
59
59
  ## Docs
60
60
 
61
- See [`docs/spec/semantics.md`](../../docs/spec/semantics.md) and
62
- [`PLAN.md` §6.6](../../PLAN.md).
61
+ See [`docs/spec/semantics.md`](../../docs/spec/semantics.md).
63
62
 
64
63
  ## License
65
64
 
@@ -0,0 +1,20 @@
1
+ import type { Price, WorldPoint } from "@invinite-org/chartlang-core";
2
+ import type { Float64RingBuffer } from "./ringBuffer.js";
3
+ /**
4
+ * Resolve a `bar.point(offset, price)` call to the time-based
5
+ * {@link WorldPoint} the rest of the drawing pipeline already speaks.
6
+ *
7
+ * `offset === 0` reads the live `bar.time`; `offset < 0` reads the real
8
+ * historical timestamp `|offset|` bars back from the time ring buffer
9
+ * (`NaN` past retention); `offset > 0` extrapolates `lastTime + offset *
10
+ * spacing`, where `spacing` is the median retained-bar delta and falls back
11
+ * to the parsed bar interval when fewer than two bars are retained. `price`
12
+ * passes through unchanged. Never throws.
13
+ *
14
+ * @since 0.9
15
+ * @stable
16
+ * @example
17
+ * // const wp = resolveBarPoint(stream.ohlcv.time, "1D", currentTime, -10, 42);
18
+ */
19
+ export declare function resolveBarPoint(time: Float64RingBuffer, interval: string, currentTime: number, offset: number, price: Price): WorldPoint;
20
+ //# sourceMappingURL=barPoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barPoint.d.ts","sourceRoot":"","sources":["../src/barPoint.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAoCzD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC3B,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GACb,UAAU,CAaZ"}
@@ -0,0 +1,72 @@
1
+ // Copyright (c) 2026 Invinite. Licensed under the MIT License.
2
+ // See the LICENSE file in the repo root for full license text.
3
+ import { intervalToSeconds } from "@invinite-org/chartlang-core";
4
+ /**
5
+ * Parse a bar-interval string to its spacing in milliseconds, or `NaN` when
6
+ * the string is not a parseable interval. `intervalToSeconds` throws on an
7
+ * unparseable descriptor; this wrapper swallows that so `bar.point` stays a
8
+ * non-throwing, graceful-degradation helper.
9
+ */
10
+ function intervalSpacingMs(interval) {
11
+ try {
12
+ return intervalToSeconds({ value: interval, label: interval, group: "" }) * 1000;
13
+ }
14
+ catch {
15
+ return Number.NaN;
16
+ }
17
+ }
18
+ /**
19
+ * The median delta between the most recent retained bar times, used to
20
+ * extrapolate future-bar timestamps. Walks the newest `min(length - 1, cap)`
21
+ * deltas (cap keeps the scan O(1) on long histories) and returns the median;
22
+ * `NaN` when fewer than two bars are retained or every delta is non-finite.
23
+ */
24
+ function medianSpacingMs(time) {
25
+ const pairs = Math.min(time.length - 1, 100);
26
+ if (pairs < 1)
27
+ return Number.NaN;
28
+ const deltas = [];
29
+ for (let i = 0; i < pairs; i += 1) {
30
+ const delta = time.at(i) - time.at(i + 1);
31
+ if (Number.isFinite(delta))
32
+ deltas.push(delta);
33
+ }
34
+ if (deltas.length === 0)
35
+ return Number.NaN;
36
+ deltas.sort((a, b) => a - b);
37
+ const mid = deltas.length >> 1;
38
+ return deltas.length % 2 === 1 ? deltas[mid] : (deltas[mid - 1] + deltas[mid]) / 2;
39
+ }
40
+ /**
41
+ * Resolve a `bar.point(offset, price)` call to the time-based
42
+ * {@link WorldPoint} the rest of the drawing pipeline already speaks.
43
+ *
44
+ * `offset === 0` reads the live `bar.time`; `offset < 0` reads the real
45
+ * historical timestamp `|offset|` bars back from the time ring buffer
46
+ * (`NaN` past retention); `offset > 0` extrapolates `lastTime + offset *
47
+ * spacing`, where `spacing` is the median retained-bar delta and falls back
48
+ * to the parsed bar interval when fewer than two bars are retained. `price`
49
+ * passes through unchanged. Never throws.
50
+ *
51
+ * @since 0.9
52
+ * @stable
53
+ * @example
54
+ * // const wp = resolveBarPoint(stream.ohlcv.time, "1D", currentTime, -10, 42);
55
+ */
56
+ export function resolveBarPoint(time, interval, currentTime, offset, price) {
57
+ // `price` is a `Price` (number) by contract, but a script may pass a bar
58
+ // price field (`bar.point(0, bar.close)`) which is now a number-coercible
59
+ // series view. Coerce to the scalar so the persisted `WorldPoint.price`
60
+ // is always a number, never the view object. `Number(NaN)` stays NaN.
61
+ const p = Number(price);
62
+ if (offset === 0)
63
+ return { time: currentTime, price: p };
64
+ if (offset < 0)
65
+ return { time: time.at(-offset), price: p };
66
+ const spacing = (() => {
67
+ const median = medianSpacingMs(time);
68
+ return Number.isFinite(median) ? median : intervalSpacingMs(interval);
69
+ })();
70
+ return { time: currentTime + offset * spacing, price: p };
71
+ }
72
+ //# sourceMappingURL=barPoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barPoint.js","sourceRoot":"","sources":["../src/barPoint.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAIjE;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,QAAgB;IACvC,IAAI,CAAC;QACD,OAAO,iBAAiB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,MAAM,CAAC,GAAG,CAAC;IACtB,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,IAAuB;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7C,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IACjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACvF,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAC3B,IAAuB,EACvB,QAAgB,EAChB,WAAmB,EACnB,MAAc,EACd,KAAY;IAEZ,yEAAyE;IACzE,0EAA0E;IAC1E,wEAAwE;IACxE,sEAAsE;IACtE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACzD,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC5D,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;QAClB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC1E,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC9D,CAAC","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 { Price, WorldPoint } from \"@invinite-org/chartlang-core\";\nimport { intervalToSeconds } from \"@invinite-org/chartlang-core\";\n\nimport type { Float64RingBuffer } from \"./ringBuffer.js\";\n\n/**\n * Parse a bar-interval string to its spacing in milliseconds, or `NaN` when\n * the string is not a parseable interval. `intervalToSeconds` throws on an\n * unparseable descriptor; this wrapper swallows that so `bar.point` stays a\n * non-throwing, graceful-degradation helper.\n */\nfunction intervalSpacingMs(interval: string): number {\n try {\n return intervalToSeconds({ value: interval, label: interval, group: \"\" }) * 1000;\n } catch {\n return Number.NaN;\n }\n}\n\n/**\n * The median delta between the most recent retained bar times, used to\n * extrapolate future-bar timestamps. Walks the newest `min(length - 1, cap)`\n * deltas (cap keeps the scan O(1) on long histories) and returns the median;\n * `NaN` when fewer than two bars are retained or every delta is non-finite.\n */\nfunction medianSpacingMs(time: Float64RingBuffer): number {\n const pairs = Math.min(time.length - 1, 100);\n if (pairs < 1) return Number.NaN;\n const deltas: number[] = [];\n for (let i = 0; i < pairs; i += 1) {\n const delta = time.at(i) - time.at(i + 1);\n if (Number.isFinite(delta)) deltas.push(delta);\n }\n if (deltas.length === 0) return Number.NaN;\n deltas.sort((a, b) => a - b);\n const mid = deltas.length >> 1;\n return deltas.length % 2 === 1 ? deltas[mid] : (deltas[mid - 1] + deltas[mid]) / 2;\n}\n\n/**\n * Resolve a `bar.point(offset, price)` call to the time-based\n * {@link WorldPoint} the rest of the drawing pipeline already speaks.\n *\n * `offset === 0` reads the live `bar.time`; `offset < 0` reads the real\n * historical timestamp `|offset|` bars back from the time ring buffer\n * (`NaN` past retention); `offset > 0` extrapolates `lastTime + offset *\n * spacing`, where `spacing` is the median retained-bar delta and falls back\n * to the parsed bar interval when fewer than two bars are retained. `price`\n * passes through unchanged. Never throws.\n *\n * @since 0.9\n * @stable\n * @example\n * // const wp = resolveBarPoint(stream.ohlcv.time, \"1D\", currentTime, -10, 42);\n */\nexport function resolveBarPoint(\n time: Float64RingBuffer,\n interval: string,\n currentTime: number,\n offset: number,\n price: Price,\n): WorldPoint {\n // `price` is a `Price` (number) by contract, but a script may pass a bar\n // price field (`bar.point(0, bar.close)`) which is now a number-coercible\n // series view. Coerce to the scalar so the persisted `WorldPoint.price`\n // is always a number, never the view object. `Number(NaN)` stays NaN.\n const p = Number(price);\n if (offset === 0) return { time: currentTime, price: p };\n if (offset < 0) return { time: time.at(-offset), price: p };\n const spacing = (() => {\n const median = medianSpacingMs(time);\n return Number.isFinite(median) ? median : intervalSpacingMs(interval);\n })();\n return { time: currentTime + offset * spacing, price: p };\n}\n"]}
@@ -0,0 +1,102 @@
1
+ import type { JsonValue } from "@invinite-org/chartlang-core";
2
+ import { Float64RingBuffer } from "./ringBuffer.js";
3
+ /**
4
+ * JSON-clean snapshot shape of a {@link Float64RingBuffer} — the head
5
+ * index, the filled count, and the raw cell values with non-finite cells
6
+ * persisted as `null` (the snapshot validator rejects `NaN`). Shared by the
7
+ * `ta.*` and `state.series` slot persistence paths.
8
+ *
9
+ * @since 0.5
10
+ * @internal
11
+ * @stable
12
+ * @example
13
+ * // const snap: BufferSnapshot = { headIndex: 0, filled: 1, values: [1] };
14
+ */
15
+ export type BufferSnapshot = Readonly<{
16
+ headIndex: number;
17
+ filled: number;
18
+ values: ReadonlyArray<number | null>;
19
+ }>;
20
+ /**
21
+ * Narrow an `unknown` to a plain (non-array) object record. The first guard
22
+ * every snapshot restore runs before reading named fields.
23
+ *
24
+ * @since 0.5
25
+ * @internal
26
+ * @stable
27
+ * @example
28
+ * isRecord({ a: 1 }); // true
29
+ */
30
+ export declare function isRecord(value: unknown): value is Readonly<Record<string, unknown>>;
31
+ /**
32
+ * Narrow an `unknown` to a finite integer (used for `headIndex` / `filled`
33
+ * snapshot fields).
34
+ *
35
+ * @since 0.5
36
+ * @internal
37
+ * @stable
38
+ * @example
39
+ * isInteger(3); // true
40
+ */
41
+ export declare function isInteger(value: unknown): value is number;
42
+ /**
43
+ * Map a runtime number to its JSON-clean form: a finite number rides
44
+ * through, any non-finite value (`NaN`, `±Infinity`) becomes `null` so the
45
+ * snapshot validator accepts it.
46
+ *
47
+ * @since 0.5
48
+ * @internal
49
+ * @stable
50
+ * @example
51
+ * finiteOrNull(Number.NaN); // null
52
+ */
53
+ export declare function finiteOrNull(value: number): number | null;
54
+ /**
55
+ * Inverse of {@link finiteOrNull} for restore: a persisted `null` rehydrates
56
+ * to `NaN`, a finite number rides through, and anything else (a string, an
57
+ * `Infinity` that slipped past serialise) fails to `null` so the caller can
58
+ * reject the whole slot.
59
+ *
60
+ * @since 0.5
61
+ * @internal
62
+ * @stable
63
+ * @example
64
+ * restoreNumber(null); // NaN
65
+ */
66
+ export declare function restoreNumber(value: unknown): number | null;
67
+ /**
68
+ * Validate that an `unknown` is a well-formed {@link BufferSnapshot}: integer
69
+ * `headIndex` + `filled`, and a `values` array whose every cell is `null` or
70
+ * a finite number.
71
+ *
72
+ * @since 0.5
73
+ * @internal
74
+ * @stable
75
+ * @example
76
+ * isBufferSnapshot({ headIndex: 0, filled: 0, values: [] }); // true
77
+ */
78
+ export declare function isBufferSnapshot(value: unknown): value is BufferSnapshot;
79
+ /**
80
+ * Serialise a {@link Float64RingBuffer} into its JSON-clean
81
+ * {@link BufferSnapshot} record.
82
+ *
83
+ * @since 0.5
84
+ * @internal
85
+ * @stable
86
+ * @example
87
+ * // const snap = serialiseBuffer(new Float64RingBuffer(8));
88
+ */
89
+ export declare function serialiseBuffer(buffer: Float64RingBuffer): JsonValue;
90
+ /**
91
+ * Rebuild a {@link Float64RingBuffer} of the given `capacity` from a
92
+ * {@link BufferSnapshot}, returning `null` when the snapshot is incompatible
93
+ * with the capacity (the underlying restore throws and is caught).
94
+ *
95
+ * @since 0.5
96
+ * @internal
97
+ * @stable
98
+ * @example
99
+ * // const buf = restoreBuffer(snap, 8); // null on capacity mismatch
100
+ */
101
+ export declare function restoreBuffer(snapshot: BufferSnapshot, capacity: number): Float64RingBuffer | null;
102
+ //# sourceMappingURL=bufferSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bufferSnapshot.d.ts","sourceRoot":"","sources":["../src/bufferSnapshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACxC,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAEnF;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEzD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAG3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CASxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAOpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CACzB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,GACjB,iBAAiB,GAAG,IAAI,CAQ1B"}
@@ -0,0 +1,119 @@
1
+ // Copyright (c) 2026 Invinite. Licensed under the MIT License.
2
+ // See the LICENSE file in the repo root for full license text.
3
+ import { Float64RingBuffer } from "./ringBuffer.js";
4
+ /**
5
+ * Narrow an `unknown` to a plain (non-array) object record. The first guard
6
+ * every snapshot restore runs before reading named fields.
7
+ *
8
+ * @since 0.5
9
+ * @internal
10
+ * @stable
11
+ * @example
12
+ * isRecord({ a: 1 }); // true
13
+ */
14
+ export function isRecord(value) {
15
+ return typeof value === "object" && value !== null && !Array.isArray(value);
16
+ }
17
+ /**
18
+ * Narrow an `unknown` to a finite integer (used for `headIndex` / `filled`
19
+ * snapshot fields).
20
+ *
21
+ * @since 0.5
22
+ * @internal
23
+ * @stable
24
+ * @example
25
+ * isInteger(3); // true
26
+ */
27
+ export function isInteger(value) {
28
+ return typeof value === "number" && Number.isInteger(value);
29
+ }
30
+ /**
31
+ * Map a runtime number to its JSON-clean form: a finite number rides
32
+ * through, any non-finite value (`NaN`, `±Infinity`) becomes `null` so the
33
+ * snapshot validator accepts it.
34
+ *
35
+ * @since 0.5
36
+ * @internal
37
+ * @stable
38
+ * @example
39
+ * finiteOrNull(Number.NaN); // null
40
+ */
41
+ export function finiteOrNull(value) {
42
+ return Number.isFinite(value) ? value : null;
43
+ }
44
+ /**
45
+ * Inverse of {@link finiteOrNull} for restore: a persisted `null` rehydrates
46
+ * to `NaN`, a finite number rides through, and anything else (a string, an
47
+ * `Infinity` that slipped past serialise) fails to `null` so the caller can
48
+ * reject the whole slot.
49
+ *
50
+ * @since 0.5
51
+ * @internal
52
+ * @stable
53
+ * @example
54
+ * restoreNumber(null); // NaN
55
+ */
56
+ export function restoreNumber(value) {
57
+ if (value === null)
58
+ return Number.NaN;
59
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
60
+ }
61
+ /**
62
+ * Validate that an `unknown` is a well-formed {@link BufferSnapshot}: integer
63
+ * `headIndex` + `filled`, and a `values` array whose every cell is `null` or
64
+ * a finite number.
65
+ *
66
+ * @since 0.5
67
+ * @internal
68
+ * @stable
69
+ * @example
70
+ * isBufferSnapshot({ headIndex: 0, filled: 0, values: [] }); // true
71
+ */
72
+ export function isBufferSnapshot(value) {
73
+ if (!isRecord(value))
74
+ return false;
75
+ if (!isInteger(value.headIndex) || !isInteger(value.filled))
76
+ return false;
77
+ return (Array.isArray(value.values) &&
78
+ value.values.every((entry) => entry === null || (typeof entry === "number" && Number.isFinite(entry))));
79
+ }
80
+ /**
81
+ * Serialise a {@link Float64RingBuffer} into its JSON-clean
82
+ * {@link BufferSnapshot} record.
83
+ *
84
+ * @since 0.5
85
+ * @internal
86
+ * @stable
87
+ * @example
88
+ * // const snap = serialiseBuffer(new Float64RingBuffer(8));
89
+ */
90
+ export function serialiseBuffer(buffer) {
91
+ const snapshot = buffer.serialiseSnapshotBuffer();
92
+ return {
93
+ headIndex: snapshot.headIndex,
94
+ filled: snapshot.filled,
95
+ values: snapshot.values,
96
+ };
97
+ }
98
+ /**
99
+ * Rebuild a {@link Float64RingBuffer} of the given `capacity` from a
100
+ * {@link BufferSnapshot}, returning `null` when the snapshot is incompatible
101
+ * with the capacity (the underlying restore throws and is caught).
102
+ *
103
+ * @since 0.5
104
+ * @internal
105
+ * @stable
106
+ * @example
107
+ * // const buf = restoreBuffer(snap, 8); // null on capacity mismatch
108
+ */
109
+ export function restoreBuffer(snapshot, capacity) {
110
+ const buffer = new Float64RingBuffer(capacity);
111
+ try {
112
+ buffer.restoreFromSnapshotBuffer(snapshot);
113
+ return buffer;
114
+ }
115
+ catch {
116
+ return null;
117
+ }
118
+ }
119
+ //# sourceMappingURL=bufferSnapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bufferSnapshot.js","sourceRoot":"","sources":["../src/bufferSnapshot.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAI/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAoBpD;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IACxC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1E,OAAO,CACH,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,KAAK,CACd,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACrF,CACJ,CAAC;AACN,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB;IACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,uBAAuB,EAAE,CAAC;IAClD,OAAO;QACH,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;KAC1B,CAAC;AACN,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CACzB,QAAwB,EACxB,QAAgB;IAEhB,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC;QACD,MAAM,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC","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 { JsonValue } from \"@invinite-org/chartlang-core\";\n\nimport { Float64RingBuffer } from \"./ringBuffer.js\";\n\n/**\n * JSON-clean snapshot shape of a {@link Float64RingBuffer} — the head\n * index, the filled count, and the raw cell values with non-finite cells\n * persisted as `null` (the snapshot validator rejects `NaN`). Shared by the\n * `ta.*` and `state.series` slot persistence paths.\n *\n * @since 0.5\n * @internal\n * @stable\n * @example\n * // const snap: BufferSnapshot = { headIndex: 0, filled: 1, values: [1] };\n */\nexport type BufferSnapshot = Readonly<{\n headIndex: number;\n filled: number;\n values: ReadonlyArray<number | null>;\n}>;\n\n/**\n * Narrow an `unknown` to a plain (non-array) object record. The first guard\n * every snapshot restore runs before reading named fields.\n *\n * @since 0.5\n * @internal\n * @stable\n * @example\n * isRecord({ a: 1 }); // true\n */\nexport function isRecord(value: unknown): value is Readonly<Record<string, unknown>> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * Narrow an `unknown` to a finite integer (used for `headIndex` / `filled`\n * snapshot fields).\n *\n * @since 0.5\n * @internal\n * @stable\n * @example\n * isInteger(3); // true\n */\nexport function isInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isInteger(value);\n}\n\n/**\n * Map a runtime number to its JSON-clean form: a finite number rides\n * through, any non-finite value (`NaN`, `±Infinity`) becomes `null` so the\n * snapshot validator accepts it.\n *\n * @since 0.5\n * @internal\n * @stable\n * @example\n * finiteOrNull(Number.NaN); // null\n */\nexport function finiteOrNull(value: number): number | null {\n return Number.isFinite(value) ? value : null;\n}\n\n/**\n * Inverse of {@link finiteOrNull} for restore: a persisted `null` rehydrates\n * to `NaN`, a finite number rides through, and anything else (a string, an\n * `Infinity` that slipped past serialise) fails to `null` so the caller can\n * reject the whole slot.\n *\n * @since 0.5\n * @internal\n * @stable\n * @example\n * restoreNumber(null); // NaN\n */\nexport function restoreNumber(value: unknown): number | null {\n if (value === null) return Number.NaN;\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\n/**\n * Validate that an `unknown` is a well-formed {@link BufferSnapshot}: integer\n * `headIndex` + `filled`, and a `values` array whose every cell is `null` or\n * a finite number.\n *\n * @since 0.5\n * @internal\n * @stable\n * @example\n * isBufferSnapshot({ headIndex: 0, filled: 0, values: [] }); // true\n */\nexport function isBufferSnapshot(value: unknown): value is BufferSnapshot {\n if (!isRecord(value)) return false;\n if (!isInteger(value.headIndex) || !isInteger(value.filled)) return false;\n return (\n Array.isArray(value.values) &&\n value.values.every(\n (entry) => entry === null || (typeof entry === \"number\" && Number.isFinite(entry)),\n )\n );\n}\n\n/**\n * Serialise a {@link Float64RingBuffer} into its JSON-clean\n * {@link BufferSnapshot} record.\n *\n * @since 0.5\n * @internal\n * @stable\n * @example\n * // const snap = serialiseBuffer(new Float64RingBuffer(8));\n */\nexport function serialiseBuffer(buffer: Float64RingBuffer): JsonValue {\n const snapshot = buffer.serialiseSnapshotBuffer();\n return {\n headIndex: snapshot.headIndex,\n filled: snapshot.filled,\n values: snapshot.values,\n };\n}\n\n/**\n * Rebuild a {@link Float64RingBuffer} of the given `capacity` from a\n * {@link BufferSnapshot}, returning `null` when the snapshot is incompatible\n * with the capacity (the underlying restore throws and is caught).\n *\n * @since 0.5\n * @internal\n * @stable\n * @example\n * // const buf = restoreBuffer(snap, 8); // null on capacity mismatch\n */\nexport function restoreBuffer(\n snapshot: BufferSnapshot,\n capacity: number,\n): Float64RingBuffer | null {\n const buffer = new Float64RingBuffer(capacity);\n try {\n buffer.restoreFromSnapshotBuffer(snapshot);\n return buffer;\n } catch {\n return null;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"buildComputeContext.js","sourceRoot":"","sources":["../src/buildComputeContext.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAkB;IAClD,MAAM,IAAI,GAAG;QACT,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG;QACzB,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc;QAC3C,EAAE;QACF,IAAI;QACJ,KAAK;QACL,KAAK;QACL,IAAI;QACJ,KAAK,EAAE,mBAAmB,EAAE;QAC5B,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ;QAC7C,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO;QAC3C,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS;QAC/C,OAAO,EAAE,qBAAqB,EAAE;QAChC,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;KACvD,CAAC;IACF,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAC1D,OAAO;QACH,GAAG,IAAI;QACP,MAAM,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAC3B,kBAAkB,CAAC,KAAK,CAAC,cAAc,EAAE,WAAW,EAAE,KAAK,CAAC;KACnE,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"buildComputeContext.js","sourceRoot":"","sources":["../src/buildComputeContext.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAkB;IAClD,MAAM,IAAI,GAAG;QACT,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG;QACzB,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc;QAC3C,EAAE;QACF,IAAI;QACJ,KAAK;QACL,KAAK;QACL,IAAI;QACJ,KAAK,EAAE,mBAAmB,EAAE;QAC5B,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ;QAC7C,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO;QAC3C,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS;QAC/C,OAAO,EAAE,qBAAqB,EAAE;QAChC,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;KACvD,CAAC;IACF,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAC1D,OAAO;QACH,GAAG,IAAI;QACP,MAAM,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAC3B,kBAAkB,CAAC,KAAK,CAAC,cAAc,EAAE,WAAW,EAAE,KAAK,CAAC;KACnE,CAAC;AACN,CAAC","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 { ComputeContext } from \"@invinite-org/chartlang-core\";\n\nimport type { RunnerState } from \"./createScriptRunner.js\";\nimport { alert, draw, hline, plot, ta } from \"./primitives.js\";\nimport { emitAlertCondition } from \"./emit/alertConditionEmission.js\";\nimport { buildRuntimeNamespace } from \"./emit/logEmission.js\";\nimport { buildRequestNamespace } from \"./request/index.js\";\nimport { buildStateNamespace } from \"./state/index.js\";\n\n/**\n * Build the `ComputeContext` the runner hands the compiled script on\n * every step. Phase 1 returns the runtime's stable `BarView` (identity\n * preserved across bars per PLAN §6.7), the mount-resolved frozen\n * `inputs` record, and the runtime primitive implementations.\n *\n * The `bar` field is the mutable `BarView` typed-narrowed to the\n * readonly `Bar` surface the script sees. Identity is stable, so a\n * `const { bar } = ctx` at the top of `compute` keeps seeing the live\n * scalars without re-binding per bar.\n *\n * @since 0.1\n * @example\n * // import { buildComputeContext } from \"@invinite-org/chartlang-runtime\";\n * // const ctx = buildComputeContext(state);\n * // void ctx.bar.close;\n */\nexport function buildComputeContext(state: RunnerState): ComputeContext {\n const base = {\n bar: state.mainStream.bar,\n inputs: state.runtimeContext.resolvedInputs,\n ta,\n plot,\n hline,\n alert,\n draw,\n state: buildStateNamespace(),\n barstate: state.runtimeContext.views.barstate,\n syminfo: state.runtimeContext.views.syminfo,\n timeframe: state.runtimeContext.views.timeframe,\n request: buildRequestNamespace(),\n runtime: buildRuntimeNamespace(state.runtimeContext),\n };\n if (state.manifest.kind !== \"alertCondition\") return base;\n return {\n ...base,\n signal: (conditionId, fired) =>\n emitAlertCondition(state.runtimeContext, conditionId, fired),\n };\n}\n"]}
@@ -145,10 +145,13 @@ export type CreateScriptRunnerArgs = {
145
145
  * `ACTIVE_RUNTIME_CONTEXT`. Phase 1 ships a single-stream model; the
146
146
  * `requestedIntervals` field on the manifest is always empty.
147
147
  *
148
- * Capacity sizing follows PLAN §6.6: prefer
148
+ * Capacity sizing follows PLAN §6.6: take the max of
149
149
  * `manifest.seriesCapacities.ohlcv` (compiler-emitted per-series
150
- * lookback) and fall back to `manifest.maxLookback + 1`, clamped to a
151
- * minimum of 1 so an empty-history script still has a valid head slot.
150
+ * lookback) or the `manifest.maxLookback + 1` floor, and
151
+ * `manifest.seriesCapacities.dynamicFallback` (the 5000-slot safety net the
152
+ * compiler emits when a series is read at a non-literal index it cannot size
153
+ * statically), clamped to a minimum of 1 so an empty-history script still has
154
+ * a valid head slot.
152
155
  *
153
156
  * @since 0.1 — widened to accept `CompiledScriptBundle` in 0.7.
154
157
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"createScriptRunner.d.ts","sourceRoot":"","sources":["../src/createScriptRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createScriptRunner.d.ts","sourceRoot":"","sources":["../src/createScriptRunner.ts"],"names":[],"mappings":"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"}