@invinite-org/chartlang-runtime 1.1.0 → 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 (508) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +1 -2
  3. package/dist/buildComputeContext.js.map +1 -1
  4. package/dist/createScriptRunner.js.map +1 -1
  5. package/dist/dep/DepOutputStore.js.map +1 -1
  6. package/dist/dep/DepRunner.js.map +1 -1
  7. package/dist/dep/depOutput.js.map +1 -1
  8. package/dist/dep/emissionFilter.js.map +1 -1
  9. package/dist/dep/index.js.map +1 -1
  10. package/dist/emit/alert.js.map +1 -1
  11. package/dist/emit/alertConditionEmission.js.map +1 -1
  12. package/dist/emit/applyPlotOverride.js.map +1 -1
  13. package/dist/emit/draw/annotations/arrow.js +1 -1
  14. package/dist/emit/draw/annotations/arrow.js.map +1 -1
  15. package/dist/emit/draw/annotations/arrowMarkDown.js +1 -1
  16. package/dist/emit/draw/annotations/arrowMarkDown.js.map +1 -1
  17. package/dist/emit/draw/annotations/arrowMarkUp.js +1 -1
  18. package/dist/emit/draw/annotations/arrowMarkUp.js.map +1 -1
  19. package/dist/emit/draw/annotations/arrowMarker.js +1 -1
  20. package/dist/emit/draw/annotations/arrowMarker.js.map +1 -1
  21. package/dist/emit/draw/annotations/text.js +1 -1
  22. package/dist/emit/draw/annotations/text.js.map +1 -1
  23. package/dist/emit/draw/boxes/circle.js +1 -1
  24. package/dist/emit/draw/boxes/circle.js.map +1 -1
  25. package/dist/emit/draw/boxes/ellipse.d.ts +1 -1
  26. package/dist/emit/draw/boxes/ellipse.js +1 -1
  27. package/dist/emit/draw/boxes/ellipse.js.map +1 -1
  28. package/dist/emit/draw/boxes/marker.js +1 -1
  29. package/dist/emit/draw/boxes/marker.js.map +1 -1
  30. package/dist/emit/draw/boxes/path.d.ts +1 -1
  31. package/dist/emit/draw/boxes/path.js +1 -1
  32. package/dist/emit/draw/boxes/path.js.map +1 -1
  33. package/dist/emit/draw/boxes/polyline.d.ts +1 -1
  34. package/dist/emit/draw/boxes/polyline.js +1 -1
  35. package/dist/emit/draw/boxes/polyline.js.map +1 -1
  36. package/dist/emit/draw/boxes/rectangle.js +1 -1
  37. package/dist/emit/draw/boxes/rectangle.js.map +1 -1
  38. package/dist/emit/draw/boxes/rotatedRectangle.js +1 -1
  39. package/dist/emit/draw/boxes/rotatedRectangle.js.map +1 -1
  40. package/dist/emit/draw/boxes/triangle.d.ts +1 -1
  41. package/dist/emit/draw/boxes/triangle.js +1 -1
  42. package/dist/emit/draw/boxes/triangle.js.map +1 -1
  43. package/dist/emit/draw/channels/disjointChannel.js +1 -1
  44. package/dist/emit/draw/channels/disjointChannel.js.map +1 -1
  45. package/dist/emit/draw/channels/flatTopBottom.d.ts +1 -2
  46. package/dist/emit/draw/channels/flatTopBottom.d.ts.map +1 -1
  47. package/dist/emit/draw/channels/flatTopBottom.js +1 -1
  48. package/dist/emit/draw/channels/flatTopBottom.js.map +1 -1
  49. package/dist/emit/draw/channels/regressionTrend.d.ts +3 -4
  50. package/dist/emit/draw/channels/regressionTrend.d.ts.map +1 -1
  51. package/dist/emit/draw/channels/regressionTrend.js +1 -1
  52. package/dist/emit/draw/channels/regressionTrend.js.map +1 -1
  53. package/dist/emit/draw/channels/trendChannel.js +1 -1
  54. package/dist/emit/draw/channels/trendChannel.js.map +1 -1
  55. package/dist/emit/draw/containers/frame.d.ts +1 -1
  56. package/dist/emit/draw/containers/frame.js +2 -2
  57. package/dist/emit/draw/containers/frame.js.map +1 -1
  58. package/dist/emit/draw/containers/group.d.ts +1 -2
  59. package/dist/emit/draw/containers/group.d.ts.map +1 -1
  60. package/dist/emit/draw/containers/group.js +2 -2
  61. package/dist/emit/draw/containers/group.js.map +1 -1
  62. package/dist/emit/draw/curves/arc.js +1 -1
  63. package/dist/emit/draw/curves/arc.js.map +1 -1
  64. package/dist/emit/draw/curves/brush.js +1 -1
  65. package/dist/emit/draw/curves/brush.js.map +1 -1
  66. package/dist/emit/draw/curves/curve.js +1 -1
  67. package/dist/emit/draw/curves/curve.js.map +1 -1
  68. package/dist/emit/draw/curves/doubleCurve.js +1 -1
  69. package/dist/emit/draw/curves/doubleCurve.js.map +1 -1
  70. package/dist/emit/draw/curves/highlighter.js +1 -1
  71. package/dist/emit/draw/curves/highlighter.js.map +1 -1
  72. package/dist/emit/draw/curves/pen.js +1 -1
  73. package/dist/emit/draw/curves/pen.js.map +1 -1
  74. package/dist/emit/draw/cycles/cyclicLines.js +1 -1
  75. package/dist/emit/draw/cycles/cyclicLines.js.map +1 -1
  76. package/dist/emit/draw/cycles/sineLine.js +1 -1
  77. package/dist/emit/draw/cycles/sineLine.js.map +1 -1
  78. package/dist/emit/draw/cycles/timeCycles.js +1 -1
  79. package/dist/emit/draw/cycles/timeCycles.js.map +1 -1
  80. package/dist/emit/draw/elliott/elliottCorrectionWave.js +1 -1
  81. package/dist/emit/draw/elliott/elliottCorrectionWave.js.map +1 -1
  82. package/dist/emit/draw/elliott/elliottDoubleCombo.js +1 -1
  83. package/dist/emit/draw/elliott/elliottDoubleCombo.js.map +1 -1
  84. package/dist/emit/draw/elliott/elliottImpulseWave.js +1 -1
  85. package/dist/emit/draw/elliott/elliottImpulseWave.js.map +1 -1
  86. package/dist/emit/draw/elliott/elliottTriangleWave.js +1 -1
  87. package/dist/emit/draw/elliott/elliottTriangleWave.js.map +1 -1
  88. package/dist/emit/draw/elliott/elliottTripleCombo.js +1 -1
  89. package/dist/emit/draw/elliott/elliottTripleCombo.js.map +1 -1
  90. package/dist/emit/draw/fibA/fibChannel.js +1 -1
  91. package/dist/emit/draw/fibA/fibChannel.js.map +1 -1
  92. package/dist/emit/draw/fibA/fibRetracement.js +1 -1
  93. package/dist/emit/draw/fibA/fibRetracement.js.map +1 -1
  94. package/dist/emit/draw/fibA/fibTimeZone.d.ts +1 -2
  95. package/dist/emit/draw/fibA/fibTimeZone.d.ts.map +1 -1
  96. package/dist/emit/draw/fibA/fibTimeZone.js +1 -1
  97. package/dist/emit/draw/fibA/fibTimeZone.js.map +1 -1
  98. package/dist/emit/draw/fibA/fibTrendExtension.js +1 -1
  99. package/dist/emit/draw/fibA/fibTrendExtension.js.map +1 -1
  100. package/dist/emit/draw/fibA/fibWedge.js +1 -1
  101. package/dist/emit/draw/fibA/fibWedge.js.map +1 -1
  102. package/dist/emit/draw/fibB/fibCircles.d.ts +1 -2
  103. package/dist/emit/draw/fibB/fibCircles.d.ts.map +1 -1
  104. package/dist/emit/draw/fibB/fibCircles.js +1 -1
  105. package/dist/emit/draw/fibB/fibCircles.js.map +1 -1
  106. package/dist/emit/draw/fibB/fibSpeedArcs.js +1 -1
  107. package/dist/emit/draw/fibB/fibSpeedArcs.js.map +1 -1
  108. package/dist/emit/draw/fibB/fibSpeedFan.js +1 -1
  109. package/dist/emit/draw/fibB/fibSpeedFan.js.map +1 -1
  110. package/dist/emit/draw/fibB/fibSpiral.d.ts +1 -2
  111. package/dist/emit/draw/fibB/fibSpiral.d.ts.map +1 -1
  112. package/dist/emit/draw/fibB/fibSpiral.js +1 -1
  113. package/dist/emit/draw/fibB/fibSpiral.js.map +1 -1
  114. package/dist/emit/draw/fibB/fibTrendTime.d.ts +1 -2
  115. package/dist/emit/draw/fibB/fibTrendTime.d.ts.map +1 -1
  116. package/dist/emit/draw/fibB/fibTrendTime.js +1 -1
  117. package/dist/emit/draw/fibB/fibTrendTime.js.map +1 -1
  118. package/dist/emit/draw/gann/gannBox.js +1 -1
  119. package/dist/emit/draw/gann/gannBox.js.map +1 -1
  120. package/dist/emit/draw/gann/gannFan.js +1 -1
  121. package/dist/emit/draw/gann/gannFan.js.map +1 -1
  122. package/dist/emit/draw/gann/gannSquare.js +1 -1
  123. package/dist/emit/draw/gann/gannSquare.js.map +1 -1
  124. package/dist/emit/draw/gann/gannSquareFixed.js +1 -1
  125. package/dist/emit/draw/gann/gannSquareFixed.js.map +1 -1
  126. package/dist/emit/draw/handle.d.ts +2 -2
  127. package/dist/emit/draw/handle.js +2 -2
  128. package/dist/emit/draw/handle.js.map +1 -1
  129. package/dist/emit/draw/index.js.map +1 -1
  130. package/dist/emit/draw/lines/crossLine.js +1 -1
  131. package/dist/emit/draw/lines/crossLine.js.map +1 -1
  132. package/dist/emit/draw/lines/horizontalLine.d.ts +1 -1
  133. package/dist/emit/draw/lines/horizontalLine.js +1 -1
  134. package/dist/emit/draw/lines/horizontalLine.js.map +1 -1
  135. package/dist/emit/draw/lines/horizontalRay.js +1 -1
  136. package/dist/emit/draw/lines/horizontalRay.js.map +1 -1
  137. package/dist/emit/draw/lines/line.d.ts +1 -1
  138. package/dist/emit/draw/lines/line.d.ts.map +1 -1
  139. package/dist/emit/draw/lines/line.js +2 -3
  140. package/dist/emit/draw/lines/line.js.map +1 -1
  141. package/dist/emit/draw/lines/trendAngle.js +1 -1
  142. package/dist/emit/draw/lines/trendAngle.js.map +1 -1
  143. package/dist/emit/draw/lines/verticalLine.js +1 -1
  144. package/dist/emit/draw/lines/verticalLine.js.map +1 -1
  145. package/dist/emit/draw/namespace.d.ts +1 -1
  146. package/dist/emit/draw/namespace.js +1 -1
  147. package/dist/emit/draw/namespace.js.map +1 -1
  148. package/dist/emit/draw/patterns/abcdPattern.js +1 -1
  149. package/dist/emit/draw/patterns/abcdPattern.js.map +1 -1
  150. package/dist/emit/draw/patterns/cypherPattern.d.ts +1 -2
  151. package/dist/emit/draw/patterns/cypherPattern.d.ts.map +1 -1
  152. package/dist/emit/draw/patterns/cypherPattern.js +1 -1
  153. package/dist/emit/draw/patterns/cypherPattern.js.map +1 -1
  154. package/dist/emit/draw/patterns/headAndShoulders.js +1 -1
  155. package/dist/emit/draw/patterns/headAndShoulders.js.map +1 -1
  156. package/dist/emit/draw/patterns/threeDrivesPattern.js +1 -1
  157. package/dist/emit/draw/patterns/threeDrivesPattern.js.map +1 -1
  158. package/dist/emit/draw/patterns/trianglePattern.d.ts +1 -1
  159. package/dist/emit/draw/patterns/trianglePattern.js +1 -1
  160. package/dist/emit/draw/patterns/trianglePattern.js.map +1 -1
  161. package/dist/emit/draw/patterns/xabcdPattern.js +1 -1
  162. package/dist/emit/draw/patterns/xabcdPattern.js.map +1 -1
  163. package/dist/emit/draw/pitchforks/pitchfan.js +1 -1
  164. package/dist/emit/draw/pitchforks/pitchfan.js.map +1 -1
  165. package/dist/emit/draw/pitchforks/pitchfork.d.ts +1 -1
  166. package/dist/emit/draw/pitchforks/pitchfork.js +2 -2
  167. package/dist/emit/draw/pitchforks/pitchfork.js.map +1 -1
  168. package/dist/emit/draw/pushDrawing.js.map +1 -1
  169. package/dist/emit/draw/subIdAllocator.d.ts +1 -1
  170. package/dist/emit/draw/subIdAllocator.js +1 -1
  171. package/dist/emit/draw/subIdAllocator.js.map +1 -1
  172. package/dist/emit/draw/table/table.d.ts +1 -1
  173. package/dist/emit/draw/table/table.js.map +1 -1
  174. package/dist/emit/emissionsQueue.js.map +1 -1
  175. package/dist/emit/hash.js.map +1 -1
  176. package/dist/emit/hline.js.map +1 -1
  177. package/dist/emit/index.js.map +1 -1
  178. package/dist/emit/logEmission.js.map +1 -1
  179. package/dist/emit/paneResolver.js.map +1 -1
  180. package/dist/emit/plot.js.map +1 -1
  181. package/dist/emit/runtimeError.js.map +1 -1
  182. package/dist/execution/dispose.js.map +1 -1
  183. package/dist/execution/drain.js.map +1 -1
  184. package/dist/execution/index.js.map +1 -1
  185. package/dist/execution/onBarClose.js.map +1 -1
  186. package/dist/execution/onBarTick.js.map +1 -1
  187. package/dist/execution/onHistory.js.map +1 -1
  188. package/dist/execution/runComputeStep.js.map +1 -1
  189. package/dist/execution/secondaryStream.js.map +1 -1
  190. package/dist/index.js.map +1 -1
  191. package/dist/inputs/index.js.map +1 -1
  192. package/dist/inputs/resolveInputs.js.map +1 -1
  193. package/dist/internal.js.map +1 -1
  194. package/dist/persistentStateStore.js.map +1 -1
  195. package/dist/persistentStateStore.runtime.js.map +1 -1
  196. package/dist/persistentStateStore.validate.js.map +1 -1
  197. package/dist/primitives.js.map +1 -1
  198. package/dist/request/alignHtfSeriesCache.js.map +1 -1
  199. package/dist/request/alignHtfSeriesToLtf.d.ts +2 -2
  200. package/dist/request/alignHtfSeriesToLtf.js +2 -2
  201. package/dist/request/alignHtfSeriesToLtf.js.map +1 -1
  202. package/dist/request/bucketLtfBarsByMainContainment.js.map +1 -1
  203. package/dist/request/bucketLtfBarsCache.js.map +1 -1
  204. package/dist/request/index.js.map +1 -1
  205. package/dist/request/lowerTf.js.map +1 -1
  206. package/dist/request/pushOnce.js.map +1 -1
  207. package/dist/request/requestNamespace.js.map +1 -1
  208. package/dist/request/security.js.map +1 -1
  209. package/dist/request/streamBars.js.map +1 -1
  210. package/dist/ringBuffer.d.ts +2 -2
  211. package/dist/ringBuffer.js +1 -1
  212. package/dist/ringBuffer.js.map +1 -1
  213. package/dist/runtimeContext.d.ts +3 -3
  214. package/dist/runtimeContext.js.map +1 -1
  215. package/dist/seriesView.d.ts +1 -1
  216. package/dist/seriesView.js +1 -1
  217. package/dist/seriesView.js.map +1 -1
  218. package/dist/state/index.js.map +1 -1
  219. package/dist/state/lifecycle.js.map +1 -1
  220. package/dist/state/stateNamespace.js.map +1 -1
  221. package/dist/state/stateSlot.js.map +1 -1
  222. package/dist/stateStore.d.ts +2 -2
  223. package/dist/stateStore.js.map +1 -1
  224. package/dist/streamState.d.ts +1 -1
  225. package/dist/streamState.js +1 -1
  226. package/dist/streamState.js.map +1 -1
  227. package/dist/ta/adl.js +2 -2
  228. package/dist/ta/adl.js.map +1 -1
  229. package/dist/ta/adr.d.ts +3 -3
  230. package/dist/ta/adr.js +5 -5
  231. package/dist/ta/adr.js.map +1 -1
  232. package/dist/ta/adx.d.ts +1 -1
  233. package/dist/ta/adx.js +3 -3
  234. package/dist/ta/adx.js.map +1 -1
  235. package/dist/ta/alma.d.ts +3 -3
  236. package/dist/ta/alma.js +5 -5
  237. package/dist/ta/alma.js.map +1 -1
  238. package/dist/ta/anchoredVolumeProfile.js.map +1 -1
  239. package/dist/ta/anchoredVwap.d.ts +1 -1
  240. package/dist/ta/anchoredVwap.js +3 -3
  241. package/dist/ta/anchoredVwap.js.map +1 -1
  242. package/dist/ta/ao.js +2 -2
  243. package/dist/ta/ao.js.map +1 -1
  244. package/dist/ta/aroon.js +2 -2
  245. package/dist/ta/aroon.js.map +1 -1
  246. package/dist/ta/aroonOsc.js +2 -2
  247. package/dist/ta/aroonOsc.js.map +1 -1
  248. package/dist/ta/atr.d.ts +1 -1
  249. package/dist/ta/atr.js +3 -3
  250. package/dist/ta/atr.js.map +1 -1
  251. package/dist/ta/barssince.js +1 -1
  252. package/dist/ta/barssince.js.map +1 -1
  253. package/dist/ta/bb.d.ts +1 -1
  254. package/dist/ta/bb.js +3 -3
  255. package/dist/ta/bb.js.map +1 -1
  256. package/dist/ta/bbPercentB.js +2 -2
  257. package/dist/ta/bbPercentB.js.map +1 -1
  258. package/dist/ta/bbw.js +2 -2
  259. package/dist/ta/bbw.js.map +1 -1
  260. package/dist/ta/bop.js +2 -2
  261. package/dist/ta/bop.js.map +1 -1
  262. package/dist/ta/cci.js +2 -2
  263. package/dist/ta/cci.js.map +1 -1
  264. package/dist/ta/chaikinOsc.d.ts +1 -1
  265. package/dist/ta/chaikinOsc.js +3 -3
  266. package/dist/ta/chaikinOsc.js.map +1 -1
  267. package/dist/ta/chandeKrollStop.d.ts +1 -1
  268. package/dist/ta/chandeKrollStop.js +3 -3
  269. package/dist/ta/chandeKrollStop.js.map +1 -1
  270. package/dist/ta/chandelier.d.ts +1 -1
  271. package/dist/ta/chandelier.js +3 -3
  272. package/dist/ta/chandelier.js.map +1 -1
  273. package/dist/ta/change.js +1 -1
  274. package/dist/ta/change.js.map +1 -1
  275. package/dist/ta/chop.js +2 -2
  276. package/dist/ta/chop.js.map +1 -1
  277. package/dist/ta/cmf.js +2 -2
  278. package/dist/ta/cmf.js.map +1 -1
  279. package/dist/ta/cmo.js +2 -2
  280. package/dist/ta/cmo.js.map +1 -1
  281. package/dist/ta/connorsRsi.d.ts +1 -1
  282. package/dist/ta/connorsRsi.js +3 -3
  283. package/dist/ta/connorsRsi.js.map +1 -1
  284. package/dist/ta/coppock.js +2 -2
  285. package/dist/ta/coppock.js.map +1 -1
  286. package/dist/ta/crossover.d.ts +1 -1
  287. package/dist/ta/crossover.js +2 -2
  288. package/dist/ta/crossover.js.map +1 -1
  289. package/dist/ta/crossunder.d.ts +1 -1
  290. package/dist/ta/crossunder.js +2 -2
  291. package/dist/ta/crossunder.js.map +1 -1
  292. package/dist/ta/dema.js +2 -2
  293. package/dist/ta/dema.js.map +1 -1
  294. package/dist/ta/dmi.d.ts +1 -1
  295. package/dist/ta/dmi.js +3 -3
  296. package/dist/ta/dmi.js.map +1 -1
  297. package/dist/ta/donchian.js +2 -2
  298. package/dist/ta/donchian.js.map +1 -1
  299. package/dist/ta/dpo.js +2 -2
  300. package/dist/ta/dpo.js.map +1 -1
  301. package/dist/ta/ema.d.ts +1 -1
  302. package/dist/ta/ema.js +3 -3
  303. package/dist/ta/ema.js.map +1 -1
  304. package/dist/ta/envelope.js +2 -2
  305. package/dist/ta/envelope.js.map +1 -1
  306. package/dist/ta/eom.d.ts +1 -1
  307. package/dist/ta/eom.js +3 -3
  308. package/dist/ta/eom.js.map +1 -1
  309. package/dist/ta/fisher.js +2 -2
  310. package/dist/ta/fisher.js.map +1 -1
  311. package/dist/ta/fixedRangeVolumeProfile.js.map +1 -1
  312. package/dist/ta/highest.js +1 -1
  313. package/dist/ta/highest.js.map +1 -1
  314. package/dist/ta/historicalVolatility.d.ts +1 -1
  315. package/dist/ta/historicalVolatility.js +3 -3
  316. package/dist/ta/historicalVolatility.js.map +1 -1
  317. package/dist/ta/hma.js +2 -2
  318. package/dist/ta/hma.js.map +1 -1
  319. package/dist/ta/ichimoku.d.ts +1 -1
  320. package/dist/ta/ichimoku.js +3 -3
  321. package/dist/ta/ichimoku.js.map +1 -1
  322. package/dist/ta/index.js.map +1 -1
  323. package/dist/ta/kama.js +2 -2
  324. package/dist/ta/kama.js.map +1 -1
  325. package/dist/ta/keltner.js +2 -2
  326. package/dist/ta/keltner.js.map +1 -1
  327. package/dist/ta/klinger.js +2 -2
  328. package/dist/ta/klinger.js.map +1 -1
  329. package/dist/ta/kst.js +2 -2
  330. package/dist/ta/kst.js.map +1 -1
  331. package/dist/ta/lib/adxFromDi.js +2 -2
  332. package/dist/ta/lib/adxFromDi.js.map +1 -1
  333. package/dist/ta/lib/applyOffset.js +2 -2
  334. package/dist/ta/lib/applyOffset.js.map +1 -1
  335. package/dist/ta/lib/computeMa.js +2 -2
  336. package/dist/ta/lib/computeMa.js.map +1 -1
  337. package/dist/ta/lib/computeMaOfFloat64.js +2 -2
  338. package/dist/ta/lib/computeMaOfFloat64.js.map +1 -1
  339. package/dist/ta/lib/directionalState.js +2 -2
  340. package/dist/ta/lib/directionalState.js.map +1 -1
  341. package/dist/ta/lib/donchianMid.js +2 -2
  342. package/dist/ta/lib/donchianMid.js.map +1 -1
  343. package/dist/ta/lib/emaFloat64.js +2 -2
  344. package/dist/ta/lib/emaFloat64.js.map +1 -1
  345. package/dist/ta/lib/linearRegression.js +2 -2
  346. package/dist/ta/lib/linearRegression.js.map +1 -1
  347. package/dist/ta/lib/maTypes.js.map +1 -1
  348. package/dist/ta/lib/pearson.js +2 -2
  349. package/dist/ta/lib/pearson.js.map +1 -1
  350. package/dist/ta/lib/pickCandleSource.js +2 -2
  351. package/dist/ta/lib/pickCandleSource.js.map +1 -1
  352. package/dist/ta/lib/readSourceField.js +2 -2
  353. package/dist/ta/lib/readSourceField.js.map +1 -1
  354. package/dist/ta/lib/rollingStddev.js +2 -2
  355. package/dist/ta/lib/rollingStddev.js.map +1 -1
  356. package/dist/ta/lib/smaFloat64.js +2 -2
  357. package/dist/ta/lib/smaFloat64.js.map +1 -1
  358. package/dist/ta/lib/smmaFloat64.js +2 -2
  359. package/dist/ta/lib/smmaFloat64.js.map +1 -1
  360. package/dist/ta/lib/sourceValue.js.map +1 -1
  361. package/dist/ta/lib/trSeries.js +2 -2
  362. package/dist/ta/lib/trSeries.js.map +1 -1
  363. package/dist/ta/lib/volume-profile/bucketEdges.js.map +1 -1
  364. package/dist/ta/lib/volume-profile/bucketizeVolume.js.map +1 -1
  365. package/dist/ta/lib/volume-profile/developingSeries.js.map +1 -1
  366. package/dist/ta/lib/volume-profile/index.js.map +1 -1
  367. package/dist/ta/lib/volume-profile/intercept.js.map +1 -1
  368. package/dist/ta/lib/volume-profile/scaffold.js.map +1 -1
  369. package/dist/ta/lib/volume-profile/tooHeavy.js.map +1 -1
  370. package/dist/ta/lib/volume-profile/types.js.map +1 -1
  371. package/dist/ta/lib/volume-profile/valueArea.js.map +1 -1
  372. package/dist/ta/lib/volume-profile/volumeProfileShared.js.map +1 -1
  373. package/dist/ta/lib/vwmaFloat64.js +2 -2
  374. package/dist/ta/lib/vwmaFloat64.js.map +1 -1
  375. package/dist/ta/lib/wilderDirectional.js +2 -2
  376. package/dist/ta/lib/wilderDirectional.js.map +1 -1
  377. package/dist/ta/lib/wilderSmoothing.js +2 -2
  378. package/dist/ta/lib/wilderSmoothing.js.map +1 -1
  379. package/dist/ta/lib/wmaFloat64.js +2 -2
  380. package/dist/ta/lib/wmaFloat64.js.map +1 -1
  381. package/dist/ta/lowest.js +1 -1
  382. package/dist/ta/lowest.js.map +1 -1
  383. package/dist/ta/lsma.js +2 -2
  384. package/dist/ta/lsma.js.map +1 -1
  385. package/dist/ta/maRibbon.js +2 -2
  386. package/dist/ta/maRibbon.js.map +1 -1
  387. package/dist/ta/macd.d.ts +1 -1
  388. package/dist/ta/macd.js +4 -4
  389. package/dist/ta/macd.js.map +1 -1
  390. package/dist/ta/massIndex.d.ts +1 -1
  391. package/dist/ta/massIndex.js +3 -3
  392. package/dist/ta/massIndex.js.map +1 -1
  393. package/dist/ta/mcginley.js +2 -2
  394. package/dist/ta/mcginley.js.map +1 -1
  395. package/dist/ta/median.js +2 -2
  396. package/dist/ta/median.js.map +1 -1
  397. package/dist/ta/mfi.d.ts +1 -1
  398. package/dist/ta/mfi.js +3 -3
  399. package/dist/ta/mfi.js.map +1 -1
  400. package/dist/ta/momentum.js +2 -2
  401. package/dist/ta/momentum.js.map +1 -1
  402. package/dist/ta/netVolume.d.ts +1 -1
  403. package/dist/ta/netVolume.js +3 -3
  404. package/dist/ta/netVolume.js.map +1 -1
  405. package/dist/ta/nvi.d.ts +1 -1
  406. package/dist/ta/nvi.js +3 -3
  407. package/dist/ta/nvi.js.map +1 -1
  408. package/dist/ta/nz.js +1 -1
  409. package/dist/ta/nz.js.map +1 -1
  410. package/dist/ta/obv.js +2 -2
  411. package/dist/ta/obv.js.map +1 -1
  412. package/dist/ta/persistence.js.map +1 -1
  413. package/dist/ta/pivotsHighLow.js +2 -2
  414. package/dist/ta/pivotsHighLow.js.map +1 -1
  415. package/dist/ta/pivotsStandard.d.ts +1 -1
  416. package/dist/ta/pivotsStandard.js +3 -3
  417. package/dist/ta/pivotsStandard.js.map +1 -1
  418. package/dist/ta/pmo.js +2 -2
  419. package/dist/ta/pmo.js.map +1 -1
  420. package/dist/ta/ppo.d.ts +1 -1
  421. package/dist/ta/ppo.js +3 -3
  422. package/dist/ta/ppo.js.map +1 -1
  423. package/dist/ta/psar.js +2 -2
  424. package/dist/ta/psar.js.map +1 -1
  425. package/dist/ta/pvi.d.ts +1 -1
  426. package/dist/ta/pvi.js +3 -3
  427. package/dist/ta/pvi.js.map +1 -1
  428. package/dist/ta/pvo.d.ts +1 -1
  429. package/dist/ta/pvo.js +3 -3
  430. package/dist/ta/pvo.js.map +1 -1
  431. package/dist/ta/pvt.d.ts +1 -1
  432. package/dist/ta/pvt.js +3 -3
  433. package/dist/ta/pvt.js.map +1 -1
  434. package/dist/ta/registry.js.map +1 -1
  435. package/dist/ta/roc.js +2 -2
  436. package/dist/ta/roc.js.map +1 -1
  437. package/dist/ta/rsi.d.ts +1 -1
  438. package/dist/ta/rsi.js +3 -3
  439. package/dist/ta/rsi.js.map +1 -1
  440. package/dist/ta/rvgi.js +2 -2
  441. package/dist/ta/rvgi.js.map +1 -1
  442. package/dist/ta/rvi.d.ts +1 -1
  443. package/dist/ta/rvi.js +3 -3
  444. package/dist/ta/rvi.js.map +1 -1
  445. package/dist/ta/sessionVolumeProfile.js.map +1 -1
  446. package/dist/ta/sma.d.ts +1 -1
  447. package/dist/ta/sma.js +3 -3
  448. package/dist/ta/sma.js.map +1 -1
  449. package/dist/ta/smi.js +2 -2
  450. package/dist/ta/smi.js.map +1 -1
  451. package/dist/ta/smma.js +2 -2
  452. package/dist/ta/smma.js.map +1 -1
  453. package/dist/ta/stdev.d.ts +1 -1
  454. package/dist/ta/stdev.js +3 -3
  455. package/dist/ta/stdev.js.map +1 -1
  456. package/dist/ta/stoch.js +2 -2
  457. package/dist/ta/stoch.js.map +1 -1
  458. package/dist/ta/stochRsi.js +2 -2
  459. package/dist/ta/stochRsi.js.map +1 -1
  460. package/dist/ta/supertrend.d.ts +1 -1
  461. package/dist/ta/supertrend.js +3 -3
  462. package/dist/ta/supertrend.js.map +1 -1
  463. package/dist/ta/tema.js +2 -2
  464. package/dist/ta/tema.js.map +1 -1
  465. package/dist/ta/trendStrengthIndex.d.ts +2 -2
  466. package/dist/ta/trendStrengthIndex.js +4 -4
  467. package/dist/ta/trendStrengthIndex.js.map +1 -1
  468. package/dist/ta/trix.d.ts +1 -1
  469. package/dist/ta/trix.js +3 -3
  470. package/dist/ta/trix.js.map +1 -1
  471. package/dist/ta/tsi.js +2 -2
  472. package/dist/ta/tsi.js.map +1 -1
  473. package/dist/ta/ulcerIndex.js +2 -2
  474. package/dist/ta/ulcerIndex.js.map +1 -1
  475. package/dist/ta/ultimateOsc.js +2 -2
  476. package/dist/ta/ultimateOsc.js.map +1 -1
  477. package/dist/ta/valuewhen.js +1 -1
  478. package/dist/ta/valuewhen.js.map +1 -1
  479. package/dist/ta/visibleRangeVolumeProfile.d.ts +2 -2
  480. package/dist/ta/visibleRangeVolumeProfile.js +2 -2
  481. package/dist/ta/visibleRangeVolumeProfile.js.map +1 -1
  482. package/dist/ta/vol.js +2 -2
  483. package/dist/ta/vol.js.map +1 -1
  484. package/dist/ta/volatilityStop.d.ts +1 -1
  485. package/dist/ta/volatilityStop.js +3 -3
  486. package/dist/ta/volatilityStop.js.map +1 -1
  487. package/dist/ta/vortex.d.ts +1 -1
  488. package/dist/ta/vortex.js +3 -3
  489. package/dist/ta/vortex.js.map +1 -1
  490. package/dist/ta/vwap.d.ts +3 -3
  491. package/dist/ta/vwap.js +5 -5
  492. package/dist/ta/vwap.js.map +1 -1
  493. package/dist/ta/vwma.js +2 -2
  494. package/dist/ta/vwma.js.map +1 -1
  495. package/dist/ta/williamsFractal.js +2 -2
  496. package/dist/ta/williamsFractal.js.map +1 -1
  497. package/dist/ta/williamsR.js +2 -2
  498. package/dist/ta/williamsR.js.map +1 -1
  499. package/dist/ta/wma.js +2 -2
  500. package/dist/ta/wma.js.map +1 -1
  501. package/dist/ta/zigZag.js +2 -2
  502. package/dist/ta/zigZag.js.map +1 -1
  503. package/dist/views/barstateView.js.map +1 -1
  504. package/dist/views/index.js.map +1 -1
  505. package/dist/views/refreshRuntimeViews.js.map +1 -1
  506. package/dist/views/symInfoView.js.map +1 -1
  507. package/dist/views/timeframeView.js.map +1 -1
  508. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"threeDrivesPattern.js","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/threeDrivesPattern.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,0CAA0C;AAC1C,4DAA4D;AAC5D,iBAAiB;AACjB,8EAA8E;AAC9E,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,8DAA8D,CAAC;AAE3F,SAAS,sBAAsB,CAC3B,MAAc,EACd,OAAmB,EACnB,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAA4B;QACnC,IAAI,EAAE,sBAAsB;QAC5B,OAAO;QACP,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;AAC7E,CAAC;AA+CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAC9B,IAAyB,EACzB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,sBAAsB,CAAC,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"threeDrivesPattern.js","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/threeDrivesPattern.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,0CAA0C;AAC1C,4DAA4D;AAC5D,iBAAiB;AACjB,8EAA8E;AAC9E,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,8DAA8D,CAAC;AAE3F,SAAS,sBAAsB,CAC3B,MAAc,EACd,OAAmB,EACnB,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAA4B;QACnC,IAAI,EAAE,sBAAsB;QAC5B,OAAO;QACP,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;AAC7E,CAAC;AA+CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAC9B,IAAyB,EACzB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,sBAAsB,CAAC,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACxE,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//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (ThreeDrivesPatternDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/three-drives-pattern-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorHept,\n DrawingHandle,\n LineDrawStyle,\n ThreeDrivesPatternState,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.threeDrivesPattern called outside an active script step\";\n\nfunction threeDrivesPatternImpl(\n slotId: string,\n anchors: AnchorHept,\n opts: LineDrawStyle,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: ThreeDrivesPatternState = {\n kind: \"three-drives-pattern\",\n anchors,\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"three-drives-pattern\", state);\n}\n\n/**\n * Draw a three-drives reversal pattern through 7 world anchors\n * `[start, drive1, retr1, drive2, retr2, drive3, end]`. The renderer\n * strokes the 6-leg open polyline and labels each pivot. Mirrors\n * invinite's `three-drives-pattern-tool.ts` shape.\n *\n * @anchors `anchors` — `[start, drive1, retr1, drive2, retr2, drive3, end]`\n * @anchorCount 7\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.threeDrivesPattern demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.threeDrivesPattern([\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 10_000, price: bar.high },\n * { time: bar.time + 20_000, price: bar.close },\n * { time: bar.time + 30_000, price: bar.high + 1 },\n * { time: bar.time + 40_000, price: bar.close + 0.5 },\n * { time: bar.time + 50_000, price: bar.high + 2 },\n * { time: bar.time + 60_000, price: bar.close + 1 },\n * ]);\n * },\n * });\n */\nexport function threeDrivesPattern(anchors: AnchorHept, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof threeDrivesPattern = threeDrivesPattern;\n * // void fn;\n */\nexport function threeDrivesPattern(\n slotId: string,\n anchors: AnchorHept,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link threeDrivesPattern}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof threeDrivesPattern = threeDrivesPattern;\n * // void fn;\n */\nexport function threeDrivesPattern(\n arg1: string | AnchorHept,\n arg2?: AnchorHept | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return threeDrivesPatternImpl(arg1, arg2 as AnchorHept, arg3 ?? {});\n}\n"]}
@@ -3,7 +3,7 @@ import type { AnchorTriple, DrawingHandle, LineDrawStyle } from "@invinite-org/c
3
3
  * Draw a triangle pattern (ascending / descending / symmetrical)
4
4
  * through 3 world anchors `[apex, baseHigh, baseLow]`. The renderer
5
5
  * strokes the 3-vertex closed polygon and labels each pivot.
6
- * **Distinct from `draw.triangle`** (Task 6, a solid-shape primitive
6
+ * **Distinct from `draw.triangle`** (a solid-shape primitive
7
7
  * with ShapeStyle); this is the harmonic-pattern outline with
8
8
  * LineDrawStyle. Mirrors invinite's `triangle-pattern-tool.ts` shape.
9
9
  *
@@ -13,7 +13,7 @@
13
13
  // flagged as a Task-1 reshape follow-up. The kind is distinct from
14
14
  // `draw.triangle` (Task 6), a 3-anchor solid-shape primitive — this
15
15
  // is the 3-anchor harmonic-pattern outline.
16
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
16
+ // Re-licensed MIT for chartlang.
17
17
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
18
18
  import { createDrawingHandle } from "../handle.js";
19
19
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"trianglePattern.js","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/trianglePattern.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,uCAAuC;AACvC,4DAA4D;AAC5D,iBAAiB;AACjB,0EAA0E;AAC1E,mEAAmE;AACnE,kEAAkE;AAClE,iEAAiE;AACjE,mEAAmE;AACnE,oEAAoE;AACpE,4CAA4C;AAC5C,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,2DAA2D,CAAC;AAExF,SAAS,mBAAmB,CACxB,MAAc,EACd,OAAqB,EACrB,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAyB;QAChC,IAAI,EAAE,kBAAkB;QACxB,OAAO;QACP,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACzE,CAAC;AA6CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC3B,IAA2B,EAC3B,IAAmC,EACnC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"trianglePattern.js","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/trianglePattern.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,uCAAuC;AACvC,4DAA4D;AAC5D,iBAAiB;AACjB,0EAA0E;AAC1E,mEAAmE;AACnE,kEAAkE;AAClE,iEAAiE;AACjE,mEAAmE;AACnE,oEAAoE;AACpE,4CAA4C;AAC5C,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,2DAA2D,CAAC;AAExF,SAAS,mBAAmB,CACxB,MAAc,EACd,OAAqB,EACrB,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAyB;QAChC,IAAI,EAAE,kBAAkB;QACxB,OAAO;QACP,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACzE,CAAC;AA6CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC3B,IAA2B,EAC3B,IAAmC,EACnC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACvE,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//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (TrianglePatternDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/triangle-pattern-tool.ts.\n// Note: invinite's full schema carries 4 anchors (a, b, c, d). The\n// landed Task-1 `TrianglePatternState.anchors: AnchorTriple` is a\n// 3-anchor shell `[apex, baseHigh, baseLow]` — the 4th anchor is\n// flagged as a Task-1 reshape follow-up. The kind is distinct from\n// `draw.triangle` (Task 6), a 3-anchor solid-shape primitive — this\n// is the 3-anchor harmonic-pattern outline.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorTriple,\n DrawingHandle,\n LineDrawStyle,\n TrianglePatternState,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.trianglePattern called outside an active script step\";\n\nfunction trianglePatternImpl(\n slotId: string,\n anchors: AnchorTriple,\n opts: LineDrawStyle,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: TrianglePatternState = {\n kind: \"triangle-pattern\",\n anchors,\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"triangle-pattern\", state);\n}\n\n/**\n * Draw a triangle pattern (ascending / descending / symmetrical)\n * through 3 world anchors `[apex, baseHigh, baseLow]`. The renderer\n * strokes the 3-vertex closed polygon and labels each pivot.\n * **Distinct from `draw.triangle`** (a solid-shape primitive\n * with ShapeStyle); this is the harmonic-pattern outline with\n * LineDrawStyle. Mirrors invinite's `triangle-pattern-tool.ts` shape.\n *\n * @anchors `anchors` — `[apex, baseHigh, baseLow]` triple\n * @anchorCount 3\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.trianglePattern demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.trianglePattern([\n * { time: bar.time + 60_000, price: bar.close },\n * { time: bar.time, price: bar.high },\n * { time: bar.time, price: bar.low },\n * ]);\n * },\n * });\n */\nexport function trianglePattern(anchors: AnchorTriple, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof trianglePattern = trianglePattern;\n * // void fn;\n */\nexport function trianglePattern(\n slotId: string,\n anchors: AnchorTriple,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link trianglePattern}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof trianglePattern = trianglePattern;\n * // void fn;\n */\nexport function trianglePattern(\n arg1: string | AnchorTriple,\n arg2?: AnchorTriple | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return trianglePatternImpl(arg1, arg2 as AnchorTriple, arg3 ?? {});\n}\n"]}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/xabcd-pattern-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"xabcdPattern.js","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/xabcdPattern.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,4DAA4D;AAC5D,iBAAiB;AACjB,uEAAuE;AACvE,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,wDAAwD,CAAC;AAErF,SAAS,gBAAgB,CACrB,MAAc,EACd,OAAoB,EACpB,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAsB,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACjF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AA6CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CACxB,IAA0B,EAC1B,IAAkC,EAClC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAmB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"xabcdPattern.js","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/xabcdPattern.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,4DAA4D;AAC5D,iBAAiB;AACjB,uEAAuE;AACvE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,wDAAwD,CAAC;AAErF,SAAS,gBAAgB,CACrB,MAAc,EACd,OAAoB,EACpB,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAsB,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACjF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AA6CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CACxB,IAA0B,EAC1B,IAAkC,EAClC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAmB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACnE,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//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (XabcdPatternDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/xabcd-pattern-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorQuint,\n DrawingHandle,\n LineDrawStyle,\n XabcdPatternState,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.xabcdPattern called outside an active script step\";\n\nfunction xabcdPatternImpl(\n slotId: string,\n anchors: AnchorQuint,\n opts: LineDrawStyle,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: XabcdPatternState = { kind: \"xabcd-pattern\", anchors, style: opts };\n return createDrawingHandle(slotId, subId, \"xabcd-pattern\", state);\n}\n\n/**\n * Draw an XABCD harmonic pattern through 5 world anchors `[X, A, B, C,\n * D]`. The renderer strokes the connecting legs (X-A, A-B, B-C, C-D)\n * and labels each pivot. Mirrors invinite's `xabcd-pattern-tool.ts`\n * shape.\n *\n * @anchors `anchors` — `[X, A, B, C, D]` quint of world points\n * @anchorCount 5\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.xabcdPattern demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.xabcdPattern([\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 15_000, price: bar.high },\n * { time: bar.time + 30_000, price: bar.close },\n * { time: bar.time + 45_000, price: bar.high - 1 },\n * { time: bar.time + 60_000, price: bar.low + 1 },\n * ]);\n * },\n * });\n */\nexport function xabcdPattern(anchors: AnchorQuint, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof xabcdPattern = xabcdPattern;\n * // void fn;\n */\nexport function xabcdPattern(\n slotId: string,\n anchors: AnchorQuint,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link xabcdPattern}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof xabcdPattern = xabcdPattern;\n * // void fn;\n */\nexport function xabcdPattern(\n arg1: string | AnchorQuint,\n arg2?: AnchorQuint | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return xabcdPatternImpl(arg1, arg2 as AnchorQuint, arg3 ?? {});\n}\n"]}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/pitchfan-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"pitchfan.js","sourceRoot":"","sources":["../../../../src/emit/draw/pitchforks/pitchfan.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,gCAAgC;AAChC,4DAA4D;AAC5D,iBAAiB;AACjB,kEAAkE;AAClE,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,oDAAoD,CAAC;AAEjF,SAAS,YAAY,CAAC,MAAc,EAAE,OAAqB,EAAE,IAAmB;IAC5E,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxE,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AA2CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CACpB,IAA2B,EAC3B,IAAmC,EACnC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,EAAE,IAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"pitchfan.js","sourceRoot":"","sources":["../../../../src/emit/draw/pitchforks/pitchfan.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,gCAAgC;AAChC,4DAA4D;AAC5D,iBAAiB;AACjB,kEAAkE;AAClE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,oDAAoD,CAAC;AAEjF,SAAS,YAAY,CAAC,MAAc,EAAE,OAAqB,EAAE,IAAmB;IAC5E,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxE,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AA2CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CACpB,IAA2B,EAC3B,IAAmC,EACnC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,EAAE,IAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAChE,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//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (PitchfanDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/pitchfan-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorTriple,\n DrawingHandle,\n LineDrawStyle,\n PitchfanState,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.pitchfan called outside an active script step\";\n\nfunction pitchfanImpl(slotId: string, anchors: AnchorTriple, opts: LineDrawStyle): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: PitchfanState = { kind: \"pitchfan\", anchors, style: opts };\n return createDrawingHandle(slotId, subId, \"pitchfan\", state);\n}\n\n/**\n * Draw a pitchfan — three rays from `anchors[0]` through `anchors[1]`,\n * `midpoint(anchors[1], anchors[2])`, and `anchors[2]`. Unlike a\n * pitchfork the rays diverge from a single pivot rather than forming\n * parallel rails. Mirrors invinite's `pitchfan-tool.ts` shape.\n *\n * @anchors `anchors` — `[pivot, high, low]` triple\n * @anchorCount 3\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.pitchfan demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.pitchfan([\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 30_000, price: bar.high },\n * { time: bar.time + 60_000, price: bar.close },\n * ]);\n * },\n * });\n */\nexport function pitchfan(anchors: AnchorTriple, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof pitchfan = pitchfan;\n * // void fn;\n */\nexport function pitchfan(\n slotId: string,\n anchors: AnchorTriple,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link pitchfan}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof pitchfan = pitchfan;\n * // void fn;\n */\nexport function pitchfan(\n arg1: string | AnchorTriple,\n arg2?: AnchorTriple | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return pitchfanImpl(arg1, arg2 as AnchorTriple, arg3 ?? {});\n}\n"]}
@@ -11,7 +11,7 @@ type PitchforkOpts = LineDrawStyle & {
11
11
  * `"modifiedSchiff"` (median origin at `mid(a, b)`); `"inside"`
12
12
  * (median origin at `mid(b, c)` with the `(a → mid(a, b))` direction).
13
13
  * Default variant: `"standard"`. Mirrors invinite's four pitchfork
14
- * tools collapsed into one kind per PLAN.md §3.1.
14
+ * tools collapsed into one kind.
15
15
  *
16
16
  * @anchors `anchors` — `[pivot, high, low]` triple
17
17
  * @anchorCount 3
@@ -10,8 +10,8 @@
10
10
  // invinite/src/components/trading-chart/tools/schiff-pitchfork-tool.ts +
11
11
  // invinite/src/components/trading-chart/tools/modified-schiff-pitchfork-tool.ts +
12
12
  // invinite/src/components/trading-chart/tools/inside-pitchfork-tool.ts
13
- // (4 tools collapsed into one kind per PLAN.md §3.1).
14
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
13
+ // (4 tools collapsed into one kind).
14
+ // Re-licensed MIT for chartlang.
15
15
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
16
16
  import { createDrawingHandle } from "../handle.js";
17
17
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"pitchfork.js","sourceRoot":"","sources":["../../../../src/emit/draw/pitchforks/pitchfork.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oDAAoD;AACpD,4DAA4D;AAC5D,iBAAiB;AACjB,oEAAoE;AACpE,2EAA2E;AAC3E,oFAAoF;AACpF,yEAAyE;AACzE,wDAAwD;AACxD,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,qDAAqD,CAAC;AAMlF,SAAS,aAAa,CAAC,MAAc,EAAE,OAAqB,EAAE,IAAmB;IAC7E,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAM,KAAK,GAAmB;QAC1B,IAAI,EAAE,WAAW;QACjB,OAAO;QACP,OAAO,EAAE,UAAU,IAAI,UAAU;QACjC,KAAK;KACR,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAClE,CAAC;AAkDD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CACrB,IAA2B,EAC3B,IAAmC,EACnC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,EAAE,IAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"pitchfork.js","sourceRoot":"","sources":["../../../../src/emit/draw/pitchforks/pitchfork.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oDAAoD;AACpD,4DAA4D;AAC5D,iBAAiB;AACjB,oEAAoE;AACpE,2EAA2E;AAC3E,oFAAoF;AACpF,yEAAyE;AACzE,uCAAuC;AACvC,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,qDAAqD,CAAC;AAMlF,SAAS,aAAa,CAAC,MAAc,EAAE,OAAqB,EAAE,IAAmB;IAC7E,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAM,KAAK,GAAmB;QAC1B,IAAI,EAAE,WAAW;QACjB,OAAO;QACP,OAAO,EAAE,UAAU,IAAI,UAAU;QACjC,KAAK;KACR,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAClE,CAAC;AAkDD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CACrB,IAA2B,EAC3B,IAAmC,EACnC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,EAAE,IAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACjE,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//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (PitchforkDrawing + PitchforkVariant), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/pitchfork-tool.ts +\n// invinite/src/components/trading-chart/tools/schiff-pitchfork-tool.ts +\n// invinite/src/components/trading-chart/tools/modified-schiff-pitchfork-tool.ts +\n// invinite/src/components/trading-chart/tools/inside-pitchfork-tool.ts\n// (4 tools collapsed into one kind).\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorTriple,\n DrawingHandle,\n LineDrawStyle,\n PitchforkState,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.pitchfork called outside an active script step\";\n\ntype PitchforkVariant = PitchforkState[\"variant\"];\n\ntype PitchforkOpts = LineDrawStyle & { readonly variant?: PitchforkVariant };\n\nfunction pitchforkImpl(slotId: string, anchors: AnchorTriple, opts: PitchforkOpts): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const { variant: variantOpt, ...style } = opts;\n const state: PitchforkState = {\n kind: \"pitchfork\",\n anchors,\n variant: variantOpt ?? \"standard\",\n style,\n };\n return createDrawingHandle(slotId, subId, \"pitchfork\", state);\n}\n\n/**\n * Draw an Andrews pitchfork from three world anchors `[a, b, c]`. The\n * `variant` opt selects one of four median-origin formulas:\n * `\"standard\"` (median from `a` to `mid(b, c)`); `\"schiff\"` (median\n * origin at `(a.time, mid(a.price, mid(b, c).price))`);\n * `\"modifiedSchiff\"` (median origin at `mid(a, b)`); `\"inside\"`\n * (median origin at `mid(b, c)` with the `(a → mid(a, b))` direction).\n * Default variant: `\"standard\"`. Mirrors invinite's four pitchfork\n * tools collapsed into one kind.\n *\n * @anchors `anchors` — `[pivot, high, low]` triple\n * @anchorCount 3\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.pitchfork demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.pitchfork(\n * [\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 30_000, price: bar.high },\n * { time: bar.time + 60_000, price: bar.close },\n * ],\n * { variant: \"modifiedSchiff\" },\n * );\n * },\n * });\n */\nexport function pitchfork(anchors: AnchorTriple, opts?: PitchforkOpts): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof pitchfork = pitchfork;\n * // void fn;\n */\nexport function pitchfork(\n slotId: string,\n anchors: AnchorTriple,\n opts?: PitchforkOpts,\n): DrawingHandle;\n/**\n * Implementation signature for {@link pitchfork}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof pitchfork = pitchfork;\n * // void fn;\n */\nexport function pitchfork(\n arg1: string | AnchorTriple,\n arg2?: AnchorTriple | PitchforkOpts,\n arg3?: PitchforkOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return pitchforkImpl(arg1, arg2 as AnchorTriple, arg3 ?? {});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"pushDrawing.js","sourceRoot":"","sources":["../../../src/emit/draw/pushDrawing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pushDrawing.js","sourceRoot":"","sources":["../../../src/emit/draw/pushDrawing.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 { DrawingEmission } from \"@invinite-org/chartlang-adapter-kit\";\nimport { validateEmission } from \"@invinite-org/chartlang-adapter-kit\";\nimport { bucketFor, type DrawingBucket } from \"@invinite-org/chartlang-core\";\n\nimport type { RuntimeContext } from \"../../runtimeContext.js\";\nimport { pushDiagnostic } from \"../emissionsQueue.js\";\n\nfunction effectiveBudget(ctx: RuntimeContext, bucket: DrawingBucket): number {\n const adapterCap = ctx.capabilities.maxDrawingsPerScript[bucket];\n const scriptCap = ctx.scriptMaxDrawings?.[bucket] ?? Number.POSITIVE_INFINITY;\n return Math.min(adapterCap, scriptCap);\n}\n\n/**\n * Push a {@link DrawingEmission} through the §10/§7.4 enforcement\n * pipeline:\n *\n * 1. **Capability gate** — drop with `unsupported-drawing-kind` if\n * `ctx.capabilities.drawings` does not include `e.drawingKind`.\n * 2. **Wire-shape validation** — drop with `malformed-emission`\n * (or `unsupported-drawing-kind` for unknown kinds) if\n * `validateEmission` rejects the payload. Adapter-kit ships\n * per-kind validators (Task 2 + per-port tasks 5–18); unknown\n * kinds fail at step 1 before reaching here.\n * 3. **Bucket budget** — on `op: \"create\"`, drop with\n * `drawing-budget-exceeded` if the bucket counter has reached\n * its effective cap (`min(scriptMaxDrawings, adapter cap)`).\n * On success, increment the counter. On `op: \"remove\"`,\n * decrement (clamped at zero). `op: \"update\"` is free.\n * 4. **Per-bar `(handleId, bar)` dedup** — replace any prior\n * in-bar emission for the same handle (last-write-wins).\n *\n * On any drop path, the original emission does not reach\n * `ctx.emissions.drawings`; a diagnostic with the appropriate code\n * lands on `ctx.emissions.diagnostics` instead.\n *\n * @since 0.3\n * @stable\n * @example\n * // import { pushDrawing } from \"@invinite-org/chartlang-runtime\";\n * // pushDrawing(ctx, {\n * // kind: \"drawing\",\n * // handleId: \"x.chart.ts:1:1#0\",\n * // drawingKind: \"line\",\n * // op: \"create\",\n * // state: {\n * // kind: \"line\",\n * // anchors: [{ time: 0, price: 0 }, { time: 1, price: 1 }],\n * // style: {},\n * // },\n * // bar: 0,\n * // time: 0,\n * // });\n */\nexport function pushDrawing(ctx: RuntimeContext, e: DrawingEmission): void {\n if (!ctx.capabilities.drawings.has(e.drawingKind)) {\n pushDiagnostic(ctx.emissions, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"unsupported-drawing-kind\",\n message: `Adapter cannot render drawing kind \"${e.drawingKind}\".`,\n slotId: e.handleId,\n bar: e.bar,\n });\n return;\n }\n\n const validation = validateEmission(e);\n if (!validation.ok) {\n pushDiagnostic(ctx.emissions, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: validation.code,\n message: validation.message,\n slotId: e.handleId,\n bar: e.bar,\n });\n return;\n }\n\n const bucket = bucketFor(e.drawingKind);\n if (e.op === \"create\") {\n const used = ctx.drawingBucketCounters[bucket];\n const cap = effectiveBudget(ctx, bucket);\n if (used >= cap) {\n pushDiagnostic(ctx.emissions, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"drawing-budget-exceeded\",\n message: `Bucket '${bucket}' budget (${cap}) exhausted; drawing dropped.`,\n slotId: e.handleId,\n bar: e.bar,\n });\n return;\n }\n ctx.drawingBucketCounters[bucket] = used + 1;\n } else if (e.op === \"remove\") {\n const used = ctx.drawingBucketCounters[bucket];\n ctx.drawingBucketCounters[bucket] = Math.max(0, used - 1);\n }\n\n const drawings = ctx.emissions.drawings;\n for (let i = drawings.length - 1; i >= 0; i -= 1) {\n const existing = drawings[i];\n if (existing.handleId === e.handleId && existing.bar === e.bar) {\n drawings[i] = e;\n return;\n }\n }\n drawings.push(e);\n}\n"]}
@@ -9,7 +9,7 @@ import type { RuntimeContext } from "../../runtimeContext.js";
9
9
  * {@link resetSubIdCounters} clears every counter at the top of every
10
10
  * `onBarClose` / `onBarTick`, so iteration `i` across bars at the same
11
11
  * callsite yields the same sub-id — that's the cross-bar handle
12
- * stability contract from PLAN.md §10.3.
12
+ * stability contract.
13
13
  *
14
14
  * @since 0.3
15
15
  * @stable
@@ -10,7 +10,7 @@
10
10
  * {@link resetSubIdCounters} clears every counter at the top of every
11
11
  * `onBarClose` / `onBarTick`, so iteration `i` across bars at the same
12
12
  * callsite yields the same sub-id — that's the cross-bar handle
13
- * stability contract from PLAN.md §10.3.
13
+ * stability contract.
14
14
  *
15
15
  * @since 0.3
16
16
  * @stable
@@ -1 +1 @@
1
- {"version":3,"file":"subIdAllocator.js","sourceRoot":"","sources":["../../../src/emit/draw/subIdAllocator.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAI/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,SAAS,CAAC,GAAmB,EAAE,MAAc;IACzD,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAmB;IAClD,GAAG,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"subIdAllocator.js","sourceRoot":"","sources":["../../../src/emit/draw/subIdAllocator.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAI/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,SAAS,CAAC,GAAmB,EAAE,MAAc;IACzD,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAmB;IAClD,GAAG,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;AACrC,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 { RuntimeContext } from \"../../runtimeContext.js\";\n\n/**\n * Return the next sub-id for a given compiler-injected `slotId` within\n * the current bar, then increment the counter. The first call inside a\n * bar yields `0`; the N-th call at the same callsite yields `N-1`.\n *\n * A script's `for (let i = 0; i < N; i++) draw.text(...)` loop produces\n * N stable handles keyed `<slotId>#0` ... `<slotId>#N-1`.\n * {@link resetSubIdCounters} clears every counter at the top of every\n * `onBarClose` / `onBarTick`, so iteration `i` across bars at the same\n * callsite yields the same sub-id — that's the cross-bar handle\n * stability contract.\n *\n * @since 0.3\n * @stable\n * @example\n * // import { nextSubId } from \"@invinite-org/chartlang-runtime\";\n * // const subId = nextSubId(ctx, \"demo.chart.ts:5:13#0\");\n */\nexport function nextSubId(ctx: RuntimeContext, slotId: string): number {\n const counters = ctx.drawingSubIdCounters;\n const current = counters.get(slotId) ?? 0;\n counters.set(slotId, current + 1);\n return current;\n}\n\n/**\n * Clear every sub-id counter on the context. Called by the execution\n * loop at the top of `onBarClose` and `onBarTick` so callsite iteration\n * order is identical across bars — handles allocated by iteration `i`\n * in bar `N` and bar `N+1` share the same `slotId#i`.\n *\n * @since 0.3\n * @stable\n * @example\n * // import { resetSubIdCounters } from \"@invinite-org/chartlang-runtime\";\n * // resetSubIdCounters(ctx);\n */\nexport function resetSubIdCounters(ctx: RuntimeContext): void {\n ctx.drawingSubIdCounters.clear();\n}\n"]}
@@ -2,7 +2,7 @@ import type { DrawingHandle, TableOpts } from "@invinite-org/chartlang-core";
2
2
  /**
3
3
  * Draw a CSS-pixel viewport-anchored table. Unlike world-space
4
4
  * drawings, `draw.table` carries no `WorldPoint` anchor; adapters
5
- * resolve `position` against the visible viewport per PLAN.md §10.2.
5
+ * resolve `position` against the visible viewport.
6
6
  *
7
7
  * @anchors `position` — CSS viewport anchor; `cells` — 2D grid payload
8
8
  * @anchorCount 0 (viewport anchored)
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../../src/emit/draw/table/table.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAI/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,iDAAiD,CAAC;AAE9E,SAAS,SAAS,CAAC,MAAc,EAAE,IAAe;IAC9C,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAe;QACtB,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5E,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5E,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;KAC7D,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9D,CAAC;AAuCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CAAC,IAAwB,EAAE,IAAgB;IAC5D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../../src/emit/draw/table/table.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAI/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,iDAAiD,CAAC;AAE9E,SAAS,SAAS,CAAC,MAAc,EAAE,IAAe;IAC9C,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAe;QACtB,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5E,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5E,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;KAC7D,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9D,CAAC;AAuCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CAAC,IAAwB,EAAE,IAAgB;IAC5D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjC,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 { DrawingHandle, TableOpts, TableState } from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.table called outside an active script step\";\n\nfunction tableImpl(slotId: string, opts: TableOpts): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: TableState = {\n kind: \"table\",\n position: opts.position,\n cells: opts.cells,\n ...(opts.borderColor === undefined ? {} : { borderColor: opts.borderColor }),\n ...(opts.borderWidth === undefined ? {} : { borderWidth: opts.borderWidth }),\n ...(opts.frame === undefined ? {} : { frame: opts.frame }),\n };\n return createDrawingHandle(slotId, subId, \"table\", state);\n}\n\n/**\n * Draw a CSS-pixel viewport-anchored table. Unlike world-space\n * drawings, `draw.table` carries no `WorldPoint` anchor; adapters\n * resolve `position` against the visible viewport.\n *\n * @anchors `position` — CSS viewport anchor; `cells` — 2D grid payload\n * @anchorCount 0 (viewport anchored)\n * @bucket other\n * @since 0.5\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.table demo\",\n * apiVersion: 1,\n * compute({ draw }) {\n * draw.table({\n * position: \"top-right\",\n * cells: [[{ text: \"P&L\" }, { text: \"+12.5%\", textColor: \"#16a34a\" }]],\n * });\n * },\n * });\n */\nexport function table(opts: TableOpts): DrawingHandle;\n/**\n * Compiler-injected overload — the callsite-id transformer rewrites\n * every script-side `draw.table(opts)` into\n * `draw.table(slotId, opts)`.\n *\n * @since 0.5\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof table = table;\n * // void fn;\n */\nexport function table(slotId: string, opts: TableOpts): DrawingHandle;\n/**\n * Implementation signature for {@link table}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.5\n * @stable\n * @example\n * // const fn: typeof table = table;\n * // void fn;\n */\nexport function table(arg1: string | TableOpts, arg2?: TableOpts): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return tableImpl(arg1, arg2);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"emissionsQueue.js","sourceRoot":"","sources":["../../src/emit/emissionsQueue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emissionsQueue.js","sourceRoot":"","sources":["../../src/emit/emissionsQueue.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 {\n type AlertEmission,\n type AlertConditionEmission,\n type LogEmission,\n type PlotEmission,\n type RuntimeDiagnostic,\n validateEmission,\n} from \"@invinite-org/chartlang-adapter-kit\";\n\nimport type { MutableRunnerEmissions } from \"../runtimeContext.js\";\n\n/**\n * Push a `PlotEmission` onto the runner's mutable plot queue. The\n * payload is first validated through Task 4's `validateEmission`; on\n * failure a `malformed-emission` diagnostic is pushed and the plot is\n * dropped. On success, the queue is searched backwards for a\n * `(slotId, bar)` match — if found, the existing entry is replaced\n * in place (last-write-wins per PLAN §7.4). Otherwise the new emission\n * is appended.\n *\n * @since 0.1\n * @example\n * // import { pushPlot } from \"@invinite-org/chartlang-runtime/emit\";\n * // pushPlot(queue, plotEmission);\n */\nexport function pushPlot(queue: MutableRunnerEmissions, e: PlotEmission): void {\n const result = validateEmission(e);\n if (!result.ok) {\n pushDiagnostic(queue, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"malformed-emission\",\n message: result.message,\n slotId: e.slotId,\n bar: e.bar,\n });\n return;\n }\n for (let i = queue.plots.length - 1; i >= 0; i -= 1) {\n const existing = queue.plots[i];\n if (existing.slotId === e.slotId && existing.bar === e.bar) {\n queue.plots[i] = e;\n return;\n }\n }\n queue.plots.push(e);\n}\n\n/**\n * Push an `AlertEmission` onto the runner's mutable alert queue. Same\n * validate-then-dedup contract as {@link pushPlot}: a `(slotId, bar)`\n * collision replaces the existing entry; a validation failure pushes\n * a `malformed-emission` diagnostic and drops the alert.\n *\n * @since 0.1\n * @example\n * // import { pushAlert } from \"@invinite-org/chartlang-runtime/emit\";\n * // pushAlert(queue, alertEmission);\n */\nexport function pushAlert(queue: MutableRunnerEmissions, e: AlertEmission): void {\n const result = validateEmission(e);\n if (!result.ok) {\n pushDiagnostic(queue, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"malformed-emission\",\n message: result.message,\n slotId: e.slotId,\n bar: e.bar,\n });\n return;\n }\n for (let i = queue.alerts.length - 1; i >= 0; i -= 1) {\n const existing = queue.alerts[i];\n if (existing.slotId === e.slotId && existing.bar === e.bar) {\n queue.alerts[i] = e;\n return;\n }\n }\n queue.alerts.push(e);\n}\n\n/**\n * Push an `AlertConditionEmission` onto the runner's mutable queue after\n * adapter-kit validation. Unlike `alert`, alert conditions intentionally\n * preserve both `fired: true` and `fired: false` transitions for UI state.\n *\n * @since 0.5\n * @example\n * // import { pushAlertCondition } from \"@invinite-org/chartlang-runtime/emit\";\n * // pushAlertCondition(queue, emission);\n */\nexport function pushAlertCondition(queue: MutableRunnerEmissions, e: AlertConditionEmission): void {\n const result = validateEmission(e);\n if (!result.ok) {\n pushDiagnostic(queue, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"malformed-emission\",\n message: result.message,\n slotId: null,\n bar: e.bar,\n });\n return;\n }\n const target = queue.alertConditions ?? [];\n queue.alertConditions = target;\n target.push(e);\n}\n\n/**\n * Push a `LogEmission` onto the runner's mutable queue after adapter-kit\n * validation. Logs preserve order and are not deduped.\n *\n * @since 0.5\n * @example\n * // import { pushLog } from \"@invinite-org/chartlang-runtime/emit\";\n * // pushLog(queue, emission);\n */\nexport function pushLog(queue: MutableRunnerEmissions, e: LogEmission): void {\n const result = validateEmission(e);\n if (!result.ok) {\n pushDiagnostic(queue, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"malformed-emission\",\n message: result.message,\n slotId: null,\n bar: e.bar,\n });\n return;\n }\n queue.logs.push(e);\n}\n\n/**\n * Append a `RuntimeDiagnostic` to the runner's diagnostic queue. No\n * validation — diagnostics are the failure sink, so recursively\n * validating them would loop. Every other emission path routes\n * through here when something goes wrong.\n *\n * @since 0.1\n * @example\n * // import { pushDiagnostic } from \"@invinite-org/chartlang-runtime/emit\";\n * // pushDiagnostic(queue, { kind: \"diagnostic\", severity: \"warning\",\n * // code: \"unsupported-plot-kind\", message: \"drop\",\n * // slotId: \"x.ts:1:1#0\", bar: 0 });\n */\nexport function pushDiagnostic(queue: MutableRunnerEmissions, d: RuntimeDiagnostic): void {\n queue.diagnostics.push(d);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/emit/hash.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,MAAM,mBAAmB,GAAG,UAAU,CAAC;AACvC,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACtC,IAAI,CAAC,GAAG,mBAAmB,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/emit/hash.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,MAAM,mBAAmB,GAAG,UAAU,CAAC;AACvC,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACtC,IAAI,CAAC,GAAG,mBAAmB,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnD,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\nconst FNV_OFFSET_BASIS_32 = 0x811c9dc5;\nconst FNV_PRIME_32 = 0x01000193;\n\n/**\n * Stable, deterministic FNV-1a 32-bit hash of a UTF-16 code-unit string.\n * Returns the hash as a lowercase 8-character hex string. Same input\n * yields the same output across machines, runs, and Node versions — the\n * property `alert.dedupeKey` relies on for cross-host idempotency.\n *\n * @since 0.1\n * @example\n * // import { hashStringStable } from \"@invinite-org/chartlang-runtime/emit\";\n * // hashStringStable(\"hello\"); // \"4f9f2cab\"\n */\nexport function hashStringStable(s: string): string {\n let h = FNV_OFFSET_BASIS_32;\n for (let i = 0; i < s.length; i += 1) {\n h ^= s.charCodeAt(i);\n h = Math.imul(h, FNV_PRIME_32);\n }\n return (h >>> 0).toString(16).padStart(8, \"0\");\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"hline.js","sourceRoot":"","sources":["../../src/emit/hline.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,sBAAsB,EAAuB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,mBAAmB,GAAG,4CAA4C,CAAC;AAEzE,SAAS,SAAS,CAAC,GAAmB,EAAE,MAAc,EAAE,KAAa,EAAE,IAAe;IAClF,MAAM,KAAK,GAAc;QACrB,IAAI,EAAE,iBAAiB;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;QAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO;KACvC,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjD,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE;YAC1B,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,oDAAoD;YAC7D,MAAM;YACN,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;SACtB,CAAC,CAAC;QACH,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAiB;QAC3B,IAAI,EAAE,MAAM;QACZ,MAAM;QACN,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,KAAK;QACL,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;QACzB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QAC5C,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QACzB,IAAI,EAAE,EAAE;QACR,IAAI;KACP,CAAC;IAEF,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC;AA4CD;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CAAC,IAAqB,EAAE,IAAyB,EAAE,IAAgB;IACpF,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC/C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"hline.js","sourceRoot":"","sources":["../../src/emit/hline.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,sBAAsB,EAAuB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,mBAAmB,GAAG,4CAA4C,CAAC;AAEzE,SAAS,SAAS,CAAC,GAAmB,EAAE,MAAc,EAAE,KAAa,EAAE,IAAe;IAClF,MAAM,KAAK,GAAc;QACrB,IAAI,EAAE,iBAAiB;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;QAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO;KACvC,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjD,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE;YAC1B,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,oDAAoD;YAC7D,MAAM;YACN,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;SACtB,CAAC,CAAC;QACH,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAiB;QAC3B,IAAI,EAAE,MAAM;QACZ,MAAM;QACN,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,KAAK;QACL,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;QACzB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QAC5C,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QACzB,IAAI,EAAE,EAAE;QACR,IAAI;KACP,CAAC;IAEF,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC;AA4CD;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CAAC,IAAqB,EAAE,IAAyB,EAAE,IAAgB;IACpF,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC/C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAC3C,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 { PlotEmission, PlotStyle } from \"@invinite-org/chartlang-adapter-kit\";\nimport type { HLineOpts } from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT, type RuntimeContext } from \"../runtimeContext.js\";\nimport { applyPlotOverride } from \"./applyPlotOverride.js\";\nimport { pushDiagnostic, pushPlot } from \"./emissionsQueue.js\";\nimport { resolvePane } from \"./paneResolver.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"hline called outside an active script step\";\n\nfunction hlineImpl(ctx: RuntimeContext, slotId: string, price: number, opts: HLineOpts): void {\n const style: PlotStyle = {\n kind: \"horizontal-line\",\n lineWidth: opts.lineWidth ?? 1,\n lineStyle: opts.lineStyle ?? \"solid\",\n };\n\n if (!ctx.capabilities.plots.has(\"horizontal-line\")) {\n pushDiagnostic(ctx.emissions, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"unsupported-plot-kind\",\n message: 'Adapter cannot render plot kind \"horizontal-line\".',\n slotId,\n bar: ctx.barIndex(),\n });\n return;\n }\n\n const pane = resolvePane(opts.pane, ctx, slotId);\n\n const emission: PlotEmission = {\n kind: \"plot\",\n slotId,\n title: opts.title ?? \"\",\n style,\n bar: ctx.barIndex(),\n time: ctx.stream.bar.time,\n value: Number.isFinite(price) ? price : null,\n color: opts.color ?? null,\n meta: {},\n pane,\n };\n\n pushPlot(ctx.emissions, applyPlotOverride(emission, ctx.plotOverrides[slotId]));\n}\n\n/**\n * Emit a horizontal-line plot pinned at the supplied `price`\n * (script-facing overload).\n *\n * Same dual-signature contract as {@link plot}: scripts call\n * `hline(price, opts?)`; the compiler's callsite-id transformer (Task 2)\n * rewrites every call to `hline(slotId, price, opts?)` (the sibling\n * overload). Direct invocation without a slot id throws the sentinel\n * error.\n *\n * `hline` follows the same pane router as {@link plot} — see\n * {@link resolvePane}: `opts.pane` defaults to the script's\n * manifest-resolved pane, `\"new\"` joins the per-script subpane, and a\n * named pane folds to overlay on `subPanes: 0` adapters. The `kind`\n * discriminator is always `\"horizontal-line\"`; adapters that don't\n * declare the capability drop with `unsupported-plot-kind`.\n *\n * @since 0.1\n * @example\n * import { defineIndicator, hline } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"RSI bounds\",\n * apiVersion: 1,\n * compute() {\n * hline(70, { color: \"#ef4444\", title: \"Overbought\" });\n * hline(30, { color: \"#10b981\", title: \"Oversold\" });\n * },\n * });\n */\nexport function hline(price: number, opts?: HLineOpts): void;\n/**\n * Emit a horizontal-line plot for the current bar (compiler-injected\n * overload). Task 2's transformer rewrites script-side `hline(price)`\n * into `hline(slotId, price)`.\n *\n * @since 0.1\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof hline = hline;\n * // void fn;\n */\nexport function hline(slotId: string, price: number, opts?: HLineOpts): void;\n/**\n * Implementation signature for {@link hline}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.1\n * @example\n * // const fn: typeof hline = hline;\n * // void fn;\n */\nexport function hline(arg1: string | number, arg2?: number | HLineOpts, arg3?: HLineOpts): void {\n if (typeof arg1 !== \"string\") {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (!ctx) throw new Error(OUTSIDE_CTX_MESSAGE);\n if (typeof arg2 !== \"number\") {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n hlineImpl(ctx, arg1, arg2, arg3 ?? {});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/emit/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACH,mBAAmB,EACnB,IAAI,EACJ,SAAS,EACT,WAAW,EACX,kBAAkB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,QAAQ,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/emit/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACH,mBAAmB,EACnB,IAAI,EACJ,SAAS,EACT,WAAW,EACX,kBAAkB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,QAAQ,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,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\nexport { alert } from \"./alert.js\";\nexport { emitAlertCondition } from \"./alertConditionEmission.js\";\nexport { applyPlotOverride } from \"./applyPlotOverride.js\";\nexport {\n createDrawingHandle,\n draw,\n nextSubId,\n pushDrawing,\n resetSubIdCounters,\n} from \"./draw/index.js\";\nexport {\n pushAlert,\n pushAlertCondition,\n pushDiagnostic,\n pushLog,\n pushPlot,\n} from \"./emissionsQueue.js\";\nexport { hashStringStable } from \"./hash.js\";\nexport { hline } from \"./hline.js\";\nexport { buildRuntimeNamespace, emitLog } from \"./logEmission.js\";\nexport { resolveDefaultPane, resolvePane, resolveScriptPane } from \"./paneResolver.js\";\nexport { plot } from \"./plot.js\";\nexport { isRuntimeErrorHalt, makeRuntimeErrorHalt } from \"./runtimeError.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"logEmission.js","sourceRoot":"","sources":["../../src/emit/logEmission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logEmission.js","sourceRoot":"","sources":["../../src/emit/logEmission.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 { JsonValue, LogLevel, RuntimeNamespace } from \"@invinite-org/chartlang-core\";\nimport type { LogEmission } from \"@invinite-org/chartlang-adapter-kit\";\n\nimport type { RuntimeContext } from \"../runtimeContext.js\";\nimport { pushDiagnostic, pushLog } from \"./emissionsQueue.js\";\nimport { makeRuntimeErrorHalt } from \"./runtimeError.js\";\n\nconst MAX_LOGS_PER_STEP = 1000;\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n if (typeof v !== \"object\" || v === null) return false;\n const proto = Object.getPrototypeOf(v);\n return proto === Object.prototype || proto === null;\n}\n\nfunction isJsonValue(v: unknown): v is JsonValue {\n if (v === null) return true;\n const t = typeof v;\n if (t === \"boolean\" || t === \"string\") return true;\n if (t === \"number\") return Number.isFinite(v);\n if (Array.isArray(v)) return v.every(isJsonValue);\n if (!isPlainObject(v)) return false;\n for (const key of Object.keys(v)) {\n let child: unknown;\n try {\n child = Reflect.get(v, key);\n } catch {\n return false;\n }\n if (!isJsonValue(child)) return false;\n }\n return true;\n}\n\nfunction snapshotJsonValue(value: JsonValue): JsonValue {\n if (Array.isArray(value)) {\n return Object.freeze(value.map((item) => snapshotJsonValue(item)));\n }\n if (isPlainObject(value)) {\n const entries = Object.entries(value).map(([key, item]) => [\n key,\n snapshotJsonValue(item as JsonValue),\n ]);\n return Object.freeze(Object.fromEntries(entries)) as JsonValue;\n }\n return value;\n}\n\nfunction snapshotMeta(\n meta: Readonly<Record<string, JsonValue>>,\n): Readonly<Record<string, JsonValue>> {\n return snapshotJsonValue(meta) as Readonly<Record<string, JsonValue>>;\n}\n\nfunction diagnoseLogBudget(ctx: RuntimeContext): void {\n if (ctx.logBudgetExceededDiagnosed) return;\n ctx.logBudgetExceededDiagnosed = true;\n pushDiagnostic(ctx.emissions, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"runtime-log-budget-exceeded\",\n message:\n \"runtime.log.* emitted more than 1000 messages in one compute step; later logs were dropped.\",\n slotId: null,\n bar: ctx.barIndex(),\n });\n}\n\n/**\n * Emit one `runtime.log.*` message for the active compute step.\n *\n * @since 0.5\n * @stable\n * @example\n * // emitLog(ctx, \"info\", \"ready\");\n * const fn: typeof emitLog = emitLog;\n * void fn;\n */\nexport function emitLog(\n ctx: RuntimeContext,\n level: LogLevel,\n message: string,\n meta?: Readonly<Record<string, JsonValue>>,\n): void {\n if (!ctx.capabilities.logs) return;\n if (ctx.logBudget >= MAX_LOGS_PER_STEP) {\n diagnoseLogBudget(ctx);\n return;\n }\n if (meta !== undefined && !isJsonValue(meta)) {\n pushDiagnostic(ctx.emissions, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"malformed-log-meta\",\n message: \"runtime.log.* meta must be JSON-serialisable.\",\n slotId: null,\n bar: ctx.barIndex(),\n });\n return;\n }\n const emission: LogEmission = {\n kind: \"log\",\n level,\n message,\n ...(meta === undefined ? {} : { meta: snapshotMeta(meta) }),\n bar: ctx.barIndex(),\n time: ctx.stream.bar.time,\n };\n ctx.logBudget += 1;\n pushLog(ctx.emissions, emission);\n}\n\n/**\n * Build the script-facing runtime namespace bound to a runtime context.\n *\n * @since 0.5\n * @stable\n * @example\n * // const ns = buildRuntimeNamespace(ctx);\n * const fn: typeof buildRuntimeNamespace = buildRuntimeNamespace;\n * void fn;\n */\nexport function buildRuntimeNamespace(ctx: RuntimeContext): RuntimeNamespace {\n return Object.freeze({\n log: Object.freeze({\n info: (message: string, meta?: Readonly<Record<string, JsonValue>>) =>\n emitLog(ctx, \"info\", message, meta),\n warn: (message: string, meta?: Readonly<Record<string, JsonValue>>) =>\n emitLog(ctx, \"warn\", message, meta),\n error: (message: string, meta?: Readonly<Record<string, JsonValue>>) =>\n emitLog(ctx, \"error\", message, meta),\n }),\n error: (message) => {\n throw makeRuntimeErrorHalt(message);\n },\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"paneResolver.js","sourceRoot":"","sources":["../../src/emit/paneResolver.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAE5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAwB;IACtD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAChE,OAAO,UAAU,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAwB;IACvD,OAAO,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,GAAmB,EAAE,MAAc;IACvE,IAAI,GAAG,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE;QAC1B,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,uCAAuC,IAAI,sBAAsB;QAC1E,MAAM;QACN,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;KACtB,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,WAAW,CACvB,SAA6B,EAC7B,GAAmB,EACnB,MAAc;IAEd,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,WAAW,CAAC;IACpD,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9E,OAAO,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"paneResolver.js","sourceRoot":"","sources":["../../src/emit/paneResolver.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAE5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAwB;IACtD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAChE,OAAO,UAAU,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAwB;IACvD,OAAO,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,GAAmB,EAAE,MAAc;IACvE,IAAI,GAAG,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE;QAC1B,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,uCAAuC,IAAI,sBAAsB;QAC1E,MAAM;QACN,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;KACtB,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,WAAW,CACvB,SAA6B,EAC7B,GAAmB,EACnB,MAAc;IAEd,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,WAAW,CAAC;IACpD,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9E,OAAO,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACpD,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 { ScriptManifest } from \"@invinite-org/chartlang-core\";\n\nimport type { RuntimeContext } from \"../runtimeContext.js\";\nimport { pushDiagnostic } from \"./emissionsQueue.js\";\n\nconst SANITISE_PANE_KEY = /[^a-zA-Z0-9_-]/g;\n\n/**\n * Derive the stable non-overlay pane key for a script from its\n * manifest name. The name is sanitised (`/[^a-zA-Z0-9_-]/g` → `-`) so\n * it fits the `string` shape on `PlotEmission.pane` and cannot collide\n * with the `script:` prefix structure (e.g. a `:` in the name becomes\n * `-`); an empty name falls back to `\"script:default\"`. Both the\n * primary runner and every dep / sibling sub-runner key off this so a\n * script's distinct name yields a distinct subpane.\n *\n * @since 0.2\n * @stable\n * @example\n * // resolveScriptPane({ name: \"RSI Cross\", ... }) === \"script:RSI-Cross\"\n * // resolveScriptPane({ name: \"\", ... }) === \"script:default\"\n */\nexport function resolveScriptPane(manifest: ScriptManifest): string {\n const sanitised = manifest.name.replace(SANITISE_PANE_KEY, \"-\");\n return `script:${sanitised === \"\" ? \"default\" : sanitised}`;\n}\n\n/**\n * Resolve a script's mount-time default pane from `manifest.overlay`.\n * `overlay` absent / `true` → `\"overlay\"` (the price pane); `overlay\n * === false` → the script-owned subpane key from\n * {@link resolveScriptPane}. The runner sets `RuntimeContext.defaultPane`\n * to this once at mount; {@link resolvePane} reads it for any `plot()` /\n * `hline()` call with no explicit `pane`.\n *\n * @since 0.2\n * @stable\n * @example\n * // resolveDefaultPane({ name: \"x\", overlay: false, ... }) === \"script:x\"\n * // resolveDefaultPane({ name: \"x\", ... }) === \"overlay\"\n */\nexport function resolveDefaultPane(manifest: ScriptManifest): string {\n return manifest.overlay === false ? resolveScriptPane(manifest) : \"overlay\";\n}\n\nfunction resolveNamedPane(pane: string, ctx: RuntimeContext, slotId: string): string {\n if (ctx.capabilities.subPanes >= 1) return pane;\n pushDiagnostic(ctx.emissions, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"unsupported-pane\",\n message: `Adapter declares subPanes: 0; pane \"${pane}\" folded to overlay.`,\n slotId,\n bar: ctx.barIndex(),\n });\n return \"overlay\";\n}\n\n/**\n * Resolve the pane a `plot()` / `hline()` call routes to. Four\n * branches:\n * - `\"overlay\"` → `\"overlay\"` (the price pane; never folds).\n * - `undefined` → `ctx.defaultPane` (the script's mount-time default\n * from `manifest.overlay`).\n * - `\"new\"` → `ctx.scriptPane` (one stable subpane per script, so\n * every `\"new\"` callsite in a script joins the same subpane).\n * - any other string → returned unchanged when\n * `capabilities.subPanes >= 1`; otherwise folded to `\"overlay\"`\n * with an `unsupported-pane` diagnostic (the bare-bones adapter\n * compat path).\n *\n * The Phase-1 signature returned the literal `\"overlay\"` and folded every\n * non-overlay request; the four-branch router widens the return type to\n * `string` and the new `undefined` / `\"new\"` / named-pass-through\n * branches arrive at `@since 0.2`.\n *\n * @since 0.2\n * @stable\n * @example\n * // import { resolvePane } from \"@invinite-org/chartlang-runtime/emit\";\n * // const pane = resolvePane(\"rsi\", ctx, \"demo.ts:1:1#0\");\n * // pane === \"rsi\" // when ctx.capabilities.subPanes >= 1\n */\nexport function resolvePane(\n requested: string | undefined,\n ctx: RuntimeContext,\n slotId: string,\n): string {\n if (requested === \"overlay\") return \"overlay\";\n if (requested === undefined) return ctx.defaultPane;\n if (requested === \"new\") return resolveNamedPane(ctx.scriptPane, ctx, slotId);\n return resolveNamedPane(requested, ctx, slotId);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"plot.js","sourceRoot":"","sources":["../../src/emit/plot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plot.js","sourceRoot":"","sources":["../../src/emit/plot.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 { PlotEmission, PlotStyle } from \"@invinite-org/chartlang-adapter-kit\";\nimport type { PlotOpts, Series } from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT, type RuntimeContext } from \"../runtimeContext.js\";\nimport { applyPlotOverride } from \"./applyPlotOverride.js\";\nimport { pushDiagnostic, pushPlot } from \"./emissionsQueue.js\";\nimport { resolvePane } from \"./paneResolver.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"plot called outside an active script step\";\n\nfunction isSeriesNumber(v: unknown): v is Series<number> {\n return typeof v === \"object\" && v !== null && \"current\" in v;\n}\n\nfunction isNumberOrSeries(v: unknown): v is number | Series<number> {\n return typeof v === \"number\" || isSeriesNumber(v);\n}\n\nfunction resolveValue(value: number | Series<number>): number | null {\n const resolved = typeof value === \"number\" ? value : value.current;\n return Number.isFinite(resolved) ? resolved : null;\n}\n\nfunction buildStyle(opts: PlotOpts): PlotStyle {\n const style = opts.style;\n if (style === undefined) {\n return {\n kind: \"line\",\n lineWidth: opts.lineWidth ?? 1,\n lineStyle: opts.lineStyle ?? \"solid\",\n };\n }\n switch (style.kind) {\n case \"histogram\":\n return { kind: \"histogram\", baseline: style.baseline ?? 0 };\n case \"marker\":\n return { kind: \"marker\", shape: style.shape, size: style.size };\n case \"shape\":\n return {\n kind: \"shape\",\n shape: style.shape,\n size: style.size,\n ...(style.location === undefined ? {} : { location: style.location }),\n };\n case \"character\":\n return {\n kind: \"character\",\n char: style.char,\n size: style.size,\n ...(style.location === undefined ? {} : { location: style.location }),\n };\n case \"arrow\":\n return { kind: \"arrow\", direction: style.direction, size: style.size };\n case \"candle-override\":\n return {\n kind: \"candle-override\",\n bull: style.bull,\n bear: style.bear,\n ...(style.doji === undefined ? {} : { doji: style.doji }),\n };\n case \"bar-override\":\n return { kind: \"bar-override\", color: style.color };\n case \"bg-color\":\n return {\n kind: \"bg-color\",\n color: style.color,\n ...(style.transp === undefined ? {} : { transp: style.transp }),\n };\n case \"bar-color\":\n return { kind: \"bar-color\", color: style.color };\n case \"horizontal-histogram\":\n return { kind: \"horizontal-histogram\", buckets: style.buckets };\n case \"line\":\n case \"step-line\":\n case \"horizontal-line\":\n return {\n kind: style.kind,\n lineWidth: opts.lineWidth ?? 1,\n lineStyle: opts.lineStyle ?? \"solid\",\n };\n }\n}\n\nfunction plotImpl(\n ctx: RuntimeContext,\n slotId: string,\n value: number | Series<number>,\n opts: PlotOpts,\n): void {\n const style: PlotStyle = buildStyle(opts);\n\n if (!ctx.capabilities.plots.has(style.kind)) {\n pushDiagnostic(ctx.emissions, {\n kind: \"diagnostic\",\n severity: \"warning\",\n code: \"unsupported-plot-kind\",\n message: `Adapter cannot render plot kind \"${style.kind}\".`,\n slotId,\n bar: ctx.barIndex(),\n });\n return;\n }\n\n const pane = resolvePane(opts.pane, ctx, slotId);\n\n const emission: PlotEmission = {\n kind: \"plot\",\n slotId,\n title: opts.title ?? \"\",\n style,\n bar: ctx.barIndex(),\n time: ctx.stream.bar.time,\n value: resolveValue(value),\n color: opts.color ?? null,\n meta: {},\n pane,\n };\n\n pushPlot(ctx.emissions, applyPlotOverride(emission, ctx.plotOverrides[slotId]));\n}\n\n/**\n * Emit a plot line for the current bar (script-facing overload).\n *\n * The runtime export is dual-signature: scripts call `plot(value, opts?)`\n * (the surface declared on `@invinite-org/chartlang-core`'s\n * `ComputeContext`), and Task 2's compiler transformer rewrites every\n * callsite to inject the compiler-issued slot id as the leading\n * argument — see the sibling `plot(slotId, value, opts?)` overload.\n * A direct invocation without a slot id (i.e. outside a compiled\n * bundle) throws the sentinel error.\n *\n * Plot kind is always `\"line\"` in Phase 1; `\"horizontal-line\"` ships\n * via the sibling {@link hline} primitive. Phase 2+ extends the `kind`\n * variants additively.\n *\n * @since 0.1\n * @example\n * import { defineIndicator, ta, plot } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"EMA(20)\",\n * apiVersion: 1,\n * compute({ bar, ta, plot }) {\n * plot(ta.ema(bar.close, 20), { color: \"#26a69a\", title: \"EMA\" });\n * },\n * });\n */\nexport function plot(value: number | Series<number>, opts?: PlotOpts): void;\n/**\n * Emit a plot line for the current bar (compiler-injected overload).\n *\n * Task 2's callsite-id transformer rewrites every script-side\n * `plot(value, opts?)` into `plot(slotId, value, opts?)`. The runtime\n * branches on `typeof arg1 === \"string\"` so the compiler-emitted\n * bundle dispatches here directly.\n *\n * @since 0.1\n * @example\n * // Internal — the compiler rewrites every script callsite, e.g.\n * // `plot(close)` becomes `plot(\"demo.chart.ts:5:13#0\", close)`.\n * // const fn: typeof plot = plot;\n * // void fn;\n */\nexport function plot(slotId: string, value: number | Series<number>, opts?: PlotOpts): void;\n/**\n * Implementation signature for {@link plot}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.1\n * @example\n * // const fn: typeof plot = plot;\n * // void fn;\n */\nexport function plot(\n arg1: string | number | Series<number>,\n arg2?: number | Series<number> | PlotOpts,\n arg3?: PlotOpts,\n): void {\n if (typeof arg1 !== \"string\") {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (!ctx) throw new Error(OUTSIDE_CTX_MESSAGE);\n if (!isNumberOrSeries(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n plotImpl(ctx, arg1, arg2, arg3 ?? {});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeError.js","sourceRoot":"","sources":["../../src/emit/runtimeError.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,MAAM,sBAAsB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAO5D;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC3C,OAAO,CACH,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,UAAU,IAAI,GAAG;QAChB,GAAuC,CAAC,QAAQ,KAAK,sBAAsB;QAC5E,SAAS,IAAI,GAAG;QAChB,OAAQ,GAAsC,CAAC,OAAO,KAAK,QAAQ,CACtE,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"runtimeError.js","sourceRoot":"","sources":["../../src/emit/runtimeError.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,MAAM,sBAAsB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAO5D;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC3C,OAAO,CACH,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,UAAU,IAAI,GAAG;QAChB,GAAuC,CAAC,QAAQ,KAAK,sBAAsB;QAC5E,SAAS,IAAI,GAAG;QAChB,OAAQ,GAAsC,CAAC,OAAO,KAAK,QAAQ,CACtE,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\nconst RUNTIME_ERROR_SENTINEL = Symbol(\"runtime-error-halt\");\n\ntype RuntimeErrorHalt = Readonly<{\n sentinel: typeof RUNTIME_ERROR_SENTINEL;\n message: string;\n}>;\n\n/**\n * Create the private sentinel thrown by `runtime.error(...)`.\n *\n * @since 0.5\n * @stable\n * @example\n * const halt = makeRuntimeErrorHalt(\"invariant\");\n * void halt;\n */\nexport function makeRuntimeErrorHalt(message: string): RuntimeErrorHalt {\n return Object.freeze({ sentinel: RUNTIME_ERROR_SENTINEL, message });\n}\n\n/**\n * Identify the private `runtime.error(...)` halt sentinel.\n *\n * @since 0.5\n * @stable\n * @example\n * const hit = isRuntimeErrorHalt(makeRuntimeErrorHalt(\"x\"));\n * void hit;\n */\nexport function isRuntimeErrorHalt(err: unknown): err is RuntimeErrorHalt {\n return (\n typeof err === \"object\" &&\n err !== null &&\n \"sentinel\" in err &&\n (err as { readonly sentinel?: unknown }).sentinel === RUNTIME_ERROR_SENTINEL &&\n \"message\" in err &&\n typeof (err as { readonly message?: unknown }).message === \"string\"\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"dispose.js","sourceRoot":"","sources":["../../src/execution/dispose.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAkB;IACtC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC;IAChC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QAClE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACjC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC;IACjC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC1C,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAClD,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC9C,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACjD,KAAK,CAAC,cAAc,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;IACvD,KAAK,CAAC,cAAc,CAAC,4BAA4B,CAAC,KAAK,EAAE,CAAC;IAC1D,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACjD,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAClD,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC;IAC5D,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;IACvB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"dispose.js","sourceRoot":"","sources":["../../src/execution/dispose.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAkB;IACtC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC;IAChC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QAClE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACjC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC;IACjC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC1C,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAClD,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC9C,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACjD,KAAK,CAAC,cAAc,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;IACvD,KAAK,CAAC,cAAc,CAAC,4BAA4B,CAAC,KAAK,EAAE,CAAC;IAC1D,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACjD,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAClD,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC;IAC5D,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;IACvB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AACvB,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 { RunnerState } from \"../createScriptRunner.js\";\nimport { flushStateSlots } from \"../state/index.js\";\n\n/**\n * Tear down the runner's buffers and state. After `dispose`:\n *\n * - Every OHLCV ring buffer's `length` is 0 (via `RingBufferLike.reset`).\n * - The `taSlots` map is empty (Task 7 primitives lose their hidden\n * state).\n * - Runtime `state.*` slots are flushed into `StateStore`, then the\n * runner-local slot map is cleared. The backing `StateStore` remains\n * host-owned so warm restart can restore the snapshot.\n * - The four emission arrays are reset to empty (`drain()` after\n * `dispose` returns empty arrays).\n *\n * `state.barIndex` is NOT reset — `dispose` is one-shot. Re-use after\n * `dispose` is not supported and not tested.\n *\n * @since 0.1\n * @example\n * // import { dispose } from \"@invinite-org/chartlang-runtime\";\n * // dispose(state);\n */\nexport function dispose(state: RunnerState): void {\n for (const dep of state.depRunners) {\n dispose(dep.state);\n }\n for (const sibling of state.siblingRunners) {\n dispose(sibling.state);\n }\n state.depOutputStore?.dispose();\n flushStateSlots(state.runtimeContext);\n for (const buf of Object.values(state.mainStream.ohlcv)) {\n buf.reset();\n }\n for (const stream of state.runtimeContext.secondaryStreams.values()) {\n for (const buf of Object.values(stream.ohlcv)) {\n buf.reset();\n }\n stream.taSlots.clear();\n }\n state.mainStream.taSlots.clear();\n state.emissions.plots = [];\n state.emissions.drawings = [];\n state.emissions.alerts = [];\n state.emissions.diagnostics = [];\n state.runtimeContext.drawingSlots.clear();\n state.runtimeContext.drawingSubIdCounters.clear();\n state.runtimeContext.stateSlots.clear();\n state.runtimeContext.secondaryStreams.clear();\n state.runtimeContext.requestSecurityBars.clear();\n state.runtimeContext.requestSecurityAlignments.clear();\n state.runtimeContext.requestSecurityAscendingBars.clear();\n state.runtimeContext.requestLowerTfViews.clear();\n state.runtimeContext.diagnosedRequestKeys.clear();\n state.runtimeContext.diagnosedInputKeys.clear();\n const counters = state.runtimeContext.drawingBucketCounters;\n counters.lines = 0;\n counters.labels = 0;\n counters.boxes = 0;\n counters.polylines = 0;\n counters.other = 0;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"drain.js","sourceRoot":"","sources":["../../src/execution/drain.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAM/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,KAAK,CAAC,KAAkB;IACpC,MAAM,GAAG,GAAoB,MAAM,CAAC,MAAM,CAAC;QACvC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;QAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;QAClC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;QAC9B,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE;QACtD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;QAC1B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW;QACxC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;QAChC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;KAC/B,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,EAAE,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;IAC1B,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC;IACjC,OAAO,GAAG,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"drain.js","sourceRoot":"","sources":["../../src/execution/drain.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAM/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,KAAK,CAAC,KAAkB;IACpC,MAAM,GAAG,GAAoB,MAAM,CAAC,MAAM,CAAC;QACvC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;QAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;QAClC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;QAC9B,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE;QACtD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;QAC1B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW;QACxC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;QAChC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;KAC/B,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,EAAE,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;IAC1B,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC;IACjC,OAAO,GAAG,CAAC;AACf,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 { RunnerEmissions } from \"@invinite-org/chartlang-adapter-kit\";\n\nimport type { RunnerState } from \"../createScriptRunner.js\";\n\n/**\n * Snapshot and reset. Returns the runner's currently-accumulated\n * emissions as a frozen `RunnerEmissions` object, then clears the\n * runner's queues by reassigning each array to a fresh empty array —\n * the adapter holds the snapshot's arrays, the runner gets fresh\n * containers for the next step.\n *\n * A second `drain` immediately after the first returns empty arrays\n * but the same `fromBar` / `toBar` (those are not reset until the next\n * step). The §6.7 invariant 4 (\"queues cleared at start of every step\")\n * is enforced by `onBarClose` / `onBarTick`, not by `drain`.\n *\n * @since 0.1\n * @example\n * // import { drain } from \"@invinite-org/chartlang-runtime\";\n * // const emissions = drain(state);\n * // void emissions.plots;\n */\nexport function drain(state: RunnerState): RunnerEmissions {\n const out: RunnerEmissions = Object.freeze({\n plots: state.emissions.plots,\n drawings: state.emissions.drawings,\n alerts: state.emissions.alerts,\n alertConditions: state.emissions.alertConditions ?? [],\n logs: state.emissions.logs,\n diagnostics: state.emissions.diagnostics,\n fromBar: state.emissions.fromBar,\n toBar: state.emissions.toBar,\n });\n state.emissions.plots = [];\n state.emissions.drawings = [];\n state.emissions.alerts = [];\n state.emissions.alertConditions = [];\n state.emissions.logs = [];\n state.emissions.diagnostics = [];\n return out;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,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\nexport { drain } from \"./drain.js\";\nexport { dispose } from \"./dispose.js\";\nexport { onBarClose } from \"./onBarClose.js\";\nexport { onBarTick } from \"./onBarTick.js\";\nexport { onHistory } from \"./onHistory.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"onBarClose.js","sourceRoot":"","sources":["../../src/execution/onBarClose.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAExE,SAAS,oBAAoB,CAAC,KAAkB;IAC5C,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,EAAE,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,KAAkB,EAClB,MAAW,EACX,YAAuB,OAAO;IAE9B,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5C,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEzC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAChC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzB,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"onBarClose.js","sourceRoot":"","sources":["../../src/execution/onBarClose.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAExE,SAAS,oBAAoB,CAAC,KAAkB;IAC5C,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,EAAE,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,KAAkB,EAClB,MAAW,EACX,YAAuB,OAAO;IAE9B,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5C,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEzC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAChC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzB,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;AACxB,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 { Bar } from \"@invinite-org/chartlang-core\";\n\nimport type { RunnerState } from \"../createScriptRunner.js\";\nimport { runDepStep, runSiblingStep } from \"../dep/index.js\";\nimport { appendBarToStream, updateFallbackViewport } from \"../streamState.js\";\nimport type { EventKind } from \"../views/index.js\";\nimport { resetBarEmissions, runComputeBody } from \"./runComputeStep.js\";\n\nfunction clearVisualEmissions(state: RunnerState): void {\n state.emissions.plots = [];\n state.emissions.drawings = [];\n state.emissions.alerts = [];\n state.emissions.alertConditions = [];\n state.emissions.logs = [];\n}\n\n/**\n * §6.7 main step. Appends every OHLCV ring buffer, mutates the runner's\n * shared `BarView` in place, walks the bundle's dep + sibling sub-runners\n * (no-op for single-script callers), then runs the primary's `compute`.\n * If any dep halted this bar, the primary's plot / drawing / alert / log\n * queues are dropped (diagnostics stay).\n *\n * The four §6.7 invariants hold at the end of the primary's compute.\n * `barIndex` advances exactly once per close. Errors thrown by `compute`\n * propagate out of `onBarClose`; the host (Task 9) owns containment.\n *\n * @since 0.1 — extended to walk dep + sibling sub-runners in 0.7.\n * @example\n * // import { onBarClose } from \"@invinite-org/chartlang-runtime\";\n * // await onBarClose(state, rawBar);\n */\nexport async function onBarClose(\n state: RunnerState,\n rawBar: Bar,\n eventKind: EventKind = \"close\",\n): Promise<void> {\n appendBarToStream(state.mainStream, rawBar);\n updateFallbackViewport(state.mainStream);\n\n state.depErroredThisBar = false;\n resetBarEmissions(state);\n state.depOutputStore?.beginBar();\n\n for (const dep of state.depRunners) {\n await runDepStep(dep, state, rawBar, eventKind, false);\n }\n for (const sibling of state.siblingRunners) {\n await runSiblingStep(sibling, state, rawBar, eventKind, false);\n }\n\n await runComputeBody({ state, eventKind, isTick: false });\n\n if (state.depErroredThisBar) {\n clearVisualEmissions(state);\n }\n\n state.barIndex += 1;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"onBarTick.js","sourceRoot":"","sources":["../../src/execution/onBarTick.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAExE,SAAS,oBAAoB,CAAC,KAAkB;IAC5C,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,EAAE,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB,EAAE,MAAW;IAC3D,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1C,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEzC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAChC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzB,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"onBarTick.js","sourceRoot":"","sources":["../../src/execution/onBarTick.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAExE,SAAS,oBAAoB,CAAC,KAAkB;IAC5C,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,EAAE,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB,EAAE,MAAW;IAC3D,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1C,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEzC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAChC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzB,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAChC,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 { Bar } from \"@invinite-org/chartlang-core\";\n\nimport type { RunnerState } from \"../createScriptRunner.js\";\nimport { runDepStep, runSiblingStep } from \"../dep/index.js\";\nimport { replaceTickHead, updateFallbackViewport } from \"../streamState.js\";\nimport { resetBarEmissions, runComputeBody } from \"./runComputeStep.js\";\n\nfunction clearVisualEmissions(state: RunnerState): void {\n state.emissions.plots = [];\n state.emissions.drawings = [];\n state.emissions.alerts = [];\n state.emissions.alertConditions = [];\n state.emissions.logs = [];\n}\n\n/**\n * §6.7 tick path. Replaces the head slot on every close-side OHLCV\n * buffer — does NOT advance the buffer length. `time` and `open` are\n * NOT replaced. Walks the bundle's dep + sibling sub-runners (no-op for\n * single-script callers) before driving the primary's `compute`.\n *\n * `state.barIndex` is NOT incremented — consecutive ticks share the\n * in-progress bar's index.\n *\n * @since 0.1 — extended to walk dep + sibling sub-runners in 0.7.\n * @example\n * // import { onBarTick } from \"@invinite-org/chartlang-runtime\";\n * // await onBarTick(state, tickBar);\n */\nexport async function onBarTick(state: RunnerState, rawBar: Bar): Promise<void> {\n replaceTickHead(state.mainStream, rawBar);\n updateFallbackViewport(state.mainStream);\n\n state.depErroredThisBar = false;\n resetBarEmissions(state);\n state.depOutputStore?.beginBar();\n\n for (const dep of state.depRunners) {\n await runDepStep(dep, state, rawBar, \"tick\", true);\n }\n for (const sibling of state.siblingRunners) {\n await runSiblingStep(sibling, state, rawBar, \"tick\", true);\n }\n\n await runComputeBody({ state, eventKind: \"tick\", isTick: true });\n\n if (state.depErroredThisBar) {\n clearVisualEmissions(state);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"onHistory.js","sourceRoot":"","sources":["../../src/execution/onHistory.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB,EAAE,IAAwB;IACxE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;IACtC,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACpC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,eAAe,CAAC;IAClD,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;IAC1C,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAClC,qEAAqE;AACzE,CAAC"}
1
+ {"version":3,"file":"onHistory.js","sourceRoot":"","sources":["../../src/execution/onHistory.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAK/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB,EAAE,IAAwB;IACxE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;IACtC,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACpC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,eAAe,CAAC;IAClD,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;IAC1C,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAClC,qEAAqE;AACzE,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 { Bar } from \"@invinite-org/chartlang-core\";\n\nimport type { RunnerState } from \"../createScriptRunner.js\";\nimport { onBarClose } from \"./onBarClose.js\";\n\n/**\n * Bulk-fill warmup. Walks `bars` forward and runs `onBarClose` per\n * entry, preserving the §6.4 determinism contract (every bar passes\n * through `compute` in source order). A Phase-2 optimisation could\n * pre-fill ring buffers without re-running compute, but stay correct\n * first.\n *\n * Emissions accumulate across the bulk walk: PLAN §6.1 promises\n * `drain()` returns every emission \"since the last drain\", but\n * `onBarClose` resets the per-bar queues at the top of each bar. Without\n * the accumulator below, a host that pushes a `{ kind: \"history\", bars }`\n * event and drains once afterwards (as `canvas2d-adapter` does) would\n * only see the final bar's emissions. We seed the accumulators from\n * the pre-history queues so an undrained prior emission isn't silently\n * dropped, then write the merged arrays back at the end. `fromBar`\n * reverts to the first bar of the walk; `toBar` is left as the final\n * `onBarClose` set it (the last bar's index).\n *\n * Errors thrown by `compute` propagate immediately — subsequent bars\n * do not run. The host (Task 9) owns containment + reporting.\n *\n * @since 0.1\n * @example\n * // import { onHistory } from \"@invinite-org/chartlang-runtime\";\n * // await onHistory(state, historicalBars);\n * // const out = drain(state); // every bar's emissions, not just the last.\n */\nexport async function onHistory(state: RunnerState, bars: ReadonlyArray<Bar>): Promise<void> {\n if (bars.length === 0) return;\n const fromBar = state.barIndex;\n const plots = state.emissions.plots;\n const drawings = state.emissions.drawings;\n const alerts = state.emissions.alerts;\n const alertConditions = state.emissions.alertConditions ?? [];\n const logs = state.emissions.logs;\n const diagnostics = state.emissions.diagnostics;\n for (const bar of bars) {\n await onBarClose(state, bar, \"history\");\n plots.push(...state.emissions.plots);\n drawings.push(...state.emissions.drawings);\n alerts.push(...state.emissions.alerts);\n alertConditions.push(...(state.emissions.alertConditions ?? []));\n logs.push(...state.emissions.logs);\n diagnostics.push(...state.emissions.diagnostics);\n }\n state.emissions.plots = plots;\n state.emissions.drawings = drawings;\n state.emissions.alerts = alerts;\n state.emissions.alertConditions = alertConditions;\n state.emissions.logs = logs;\n state.emissions.diagnostics = diagnostics;\n state.emissions.fromBar = fromBar;\n // `toBar` was set to the last bar's index by the final `onBarClose`.\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"runComputeStep.js","sourceRoot":"","sources":["../../src/execution/runComputeStep.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runComputeStep.js","sourceRoot":"","sources":["../../src/execution/runComputeStep.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 { buildComputeContext } from \"../buildComputeContext.js\";\nimport type { RunnerState } from \"../createScriptRunner.js\";\nimport { resetSubIdCounters } from \"../emit/draw/index.js\";\nimport { isRuntimeErrorHalt, pushDiagnostic } from \"../emit/index.js\";\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../runtimeContext.js\";\nimport { commitStateSlots, flushStateSlots, resetTentativeStateSlots } from \"../state/index.js\";\nimport { type EventKind, refreshRuntimeViews } from \"../views/index.js\";\n\n/**\n * Outcome of a single compute step. `ok` means the script's `compute`\n * returned normally; `halt` means `runtime.error(...)` was thrown (the\n * compute body deliberately aborted the bar). Non-halt throws propagate\n * out of {@link runComputeStep} unchanged.\n *\n * @since 0.7\n * @stable\n * @example\n * const r: RunComputeStepOutcome = { kind: \"ok\" };\n * void r;\n */\nexport type RunComputeStepOutcome =\n | Readonly<{ kind: \"ok\" }>\n | Readonly<{ kind: \"halt\"; readonly message: string }>;\n\n/**\n * Configuration for {@link runComputeStep}. `eventKind` reaches the\n * runtime views so `barstate.*` picks up the right snapshot; `isTick`\n * discriminates the close-vs-tick state-slot lifecycle.\n *\n * @since 0.7\n * @stable\n * @example\n * const args = { state, eventKind: \"close\" as const, isTick: false };\n * void args;\n */\nexport type RunComputeStepArgs = Readonly<{\n readonly state: RunnerState;\n readonly eventKind: EventKind;\n readonly isTick: boolean;\n}>;\n\n/**\n * Reset the per-bar emission queues on a runner before its compute\n * runs. Exported for the dep / sibling step driver — single-script\n * callers go through {@link runComputeStep} which calls this\n * internally.\n *\n * @since 0.7\n * @stable\n * @example\n * // resetBarEmissions(state);\n */\nexport function resetBarEmissions(state: RunnerState): void {\n state.emissions.plots = [];\n state.emissions.drawings = [];\n state.emissions.alerts = [];\n state.emissions.alertConditions = [];\n state.emissions.logs = [];\n state.emissions.diagnostics = [];\n state.emissions.fromBar = state.barIndex;\n state.emissions.toBar = state.barIndex;\n state.runtimeContext.requestSecurityAlignments.clear();\n state.runtimeContext.requestSecurityAscendingBars.clear();\n state.runtimeContext.logBudget = 0;\n state.runtimeContext.logBudgetExceededDiagnosed = false;\n}\n\n/**\n * Run the inner compute body of `state.compute` — set\n * `ACTIVE_RUNTIME_CONTEXT`, reset sub-id counters, optionally reset\n * tentative state slots, refresh views, invoke `compute`, commit /\n * flush state slots on close. Does NOT reset the per-bar emission\n * queues; callers do that exactly once via {@link resetBarEmissions}.\n *\n * `runtime.error(...)` halts clear the runner's visual emissions and\n * push a `runtime-error-thrown` diagnostic, matching the Phase-1\n * single-script behaviour byte-for-byte. Non-halt throws propagate\n * out unchanged.\n *\n * @since 0.7\n * @stable\n * @example\n * // const outcome = await runComputeBody({ state, eventKind: \"close\", isTick: false });\n * // void outcome;\n */\nexport async function runComputeBody(args: RunComputeStepArgs): Promise<RunComputeStepOutcome> {\n const { state, eventKind, isTick } = args;\n ACTIVE_RUNTIME_CONTEXT.current = state.runtimeContext;\n state.runtimeContext.isTick = isTick;\n let outcome: RunComputeStepOutcome = { kind: \"ok\" };\n try {\n resetSubIdCounters(state.runtimeContext);\n if (isTick) {\n resetTentativeStateSlots(state.runtimeContext);\n }\n refreshRuntimeViews(state, eventKind);\n try {\n await Promise.resolve(state.compute(buildComputeContext(state)));\n if (!isTick) {\n commitStateSlots(state.runtimeContext);\n flushStateSlots(state.runtimeContext);\n }\n } catch (err) {\n if (!isRuntimeErrorHalt(err)) throw err;\n state.emissions.plots = [];\n state.emissions.drawings = [];\n state.emissions.alerts = [];\n state.emissions.alertConditions = [];\n state.emissions.logs = [];\n pushDiagnostic(state.emissions, {\n kind: \"diagnostic\",\n severity: \"error\",\n code: \"runtime-error-thrown\",\n message: err.message,\n slotId: null,\n bar: state.barIndex,\n });\n outcome = { kind: \"halt\", message: err.message };\n }\n } finally {\n if (isTick) state.runtimeContext.isTick = false;\n ACTIVE_RUNTIME_CONTEXT.current = null;\n }\n return outcome;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"secondaryStream.js","sourceRoot":"","sources":["../../src/execution/secondaryStream.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAI/D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAoB,MAAM,mBAAmB,CAAC;AAE3F;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAmB,EAAE,MAAW;IAC/D,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAmB,EAAE,MAAW;IACjE,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAmB,EAAE,IAAwB;IAChF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"secondaryStream.js","sourceRoot":"","sources":["../../src/execution/secondaryStream.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAI/D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAoB,MAAM,mBAAmB,CAAC;AAE3F;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAmB,EAAE,MAAW;IAC/D,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAmB,EAAE,MAAW;IACjE,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAmB,EAAE,IAAwB;IAChF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,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 { Bar } from \"@invinite-org/chartlang-core\";\n\nimport { appendBarToStream, replaceStreamHead, type StreamState } from \"../streamState.js\";\n\n/**\n * Append a finalised candle to a secondary stream without running compute.\n *\n * @since 0.5\n * @internal\n * @example\n * // appendSecondaryBar(stream, bar);\n * const appended = true;\n * void appended;\n */\nexport function appendSecondaryBar(stream: StreamState, rawBar: Bar): void {\n appendBarToStream(stream, rawBar);\n}\n\n/**\n * Replace the current secondary stream head with an intra-bar update.\n *\n * @since 0.5\n * @internal\n * @example\n * // replaceSecondaryHead(stream, bar);\n * const replaced = true;\n * void replaced;\n */\nexport function replaceSecondaryHead(stream: StreamState, rawBar: Bar): void {\n replaceStreamHead(stream, rawBar);\n}\n\n/**\n * Append a history batch to a secondary stream in source order.\n *\n * @since 0.5\n * @internal\n * @example\n * // appendSecondaryHistory(stream, []);\n * const appended = true;\n * void appended;\n */\nexport function appendSecondaryHistory(stream: StreamState, bars: ReadonlyArray<Bar>): void {\n for (const bar of bars) {\n appendBarToStream(stream, bar);\n }\n}\n"]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE/E,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,sEAAsE;AACtE,gEAAgE;AAChE,uDAAuD;AACvD,oEAAoE;AACpE,mEAAmE;AACnE,uEAAuE;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAYhE,OAAO,EACH,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,cAAc,GACjB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE/E,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,sEAAsE;AACtE,gEAAgE;AAChE,uDAAuD;AACvD,oEAAoE;AACpE,mEAAmE;AACnE,uEAAuE;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAYhE,OAAO,EACH,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,cAAc,GACjB,MAAM,gBAAgB,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\nexport { Float64RingBuffer, RingBuffer } from \"./ringBuffer.js\";\nexport type { RingBufferLike } from \"./ringBuffer.js\";\nexport { makeSeriesView, makeShiftedSeriesView } from \"./seriesView.js\";\nexport type { BarView, OhlcvBuffers, StreamState } from \"./streamState.js\";\nexport { createStreamState } from \"./streamState.js\";\nexport type { StateStore } from \"./stateStore.js\";\nexport { inMemoryStateStore } from \"./stateStore.js\";\nexport type { PersistentStateStore } from \"./persistentStateStore.js\";\nexport { inMemoryPersistentStateStore } from \"./persistentStateStore.js\";\nexport { asMutableSlot, buildStateNamespace, StateSlot } from \"./state/index.js\";\nexport { resolveInputs } from \"./inputs/index.js\";\nexport { buildRequestNamespace, makeNanSecurityBar } from \"./request/index.js\";\nexport type { DrawingSlot, MutableRunnerEmissions, RuntimeContext } from \"./runtimeContext.js\";\nexport {\n createRuntimeViews,\n makeBarStateView,\n makeSymInfoView,\n makeTimeframeView,\n} from \"./views/index.js\";\nexport type { AdapterSymInfo, BarStateInputs, EventKind, RuntimeViews } from \"./views/index.js\";\nexport { ACTIVE_RUNTIME_CONTEXT } from \"./runtimeContext.js\";\nexport { createScriptRunner } from \"./createScriptRunner.js\";\nexport type { CreateScriptRunnerArgs, ScriptRunner } from \"./createScriptRunner.js\";\nexport { alert, applyPlotOverride, draw, hline, plot, pushDrawing } from \"./emit/index.js\";\nexport { TA_REGISTRY, ta } from \"./ta/index.js\";\nexport { maRibbonOutputKeys } from \"./ta/index.js\";\nexport type { RuntimeTaNamespace, ScalarOrSeries } from \"./ta/index.js\";\n// Public re-export added in Phase 3 Task 10 so consumer adapters that\n// render `draw.regressionTrend` can compute the OLS fit without\n// duplicating math. The Phase-2 helper signature stays\n// `(source: Float64Array, length: number): LinearRegressionFrame` —\n// pass `length === source.length` for a single-window fit over the\n// bar range; the line value at the last index is the end-of-range fit.\nexport { linearRegression } from \"./ta/lib/linearRegression.js\";\nexport type { LinearRegressionFrame } from \"./ta/lib/linearRegression.js\";\n// Indicator-composition surface (Phase 7).\nexport type {\n CreateDepRunnerArgs,\n DepOutputDeclaration,\n DepOutputStore,\n DepRunner,\n DepRunnerLike,\n SiblingRunner,\n SiblingRunnerLike,\n} from \"./dep/index.js\";\nexport {\n applyDepEmissionPolicy,\n createDepOutputStore,\n createDepRunner,\n createSiblingRunner,\n runDepStep,\n runSiblingStep,\n} from \"./dep/index.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/inputs/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/inputs/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,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\nexport { resolveInputs } from \"./resolveInputs.js\";\n"]}