oakscriptjs 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +31 -9
  3. package/dist/cjs/array/index.d.ts +701 -0
  4. package/dist/cjs/array/index.d.ts.map +1 -0
  5. package/dist/cjs/array/index.js +392 -0
  6. package/dist/cjs/array/index.js.map +7 -0
  7. package/dist/cjs/box/index.d.ts +444 -0
  8. package/dist/cjs/box/index.d.ts.map +1 -0
  9. package/dist/cjs/box/index.js +246 -0
  10. package/dist/cjs/box/index.js.map +7 -0
  11. package/dist/cjs/callsite/index.d.ts +61 -0
  12. package/dist/cjs/callsite/index.d.ts.map +1 -0
  13. package/dist/cjs/callsite/index.js +65 -0
  14. package/dist/cjs/callsite/index.js.map +7 -0
  15. package/dist/cjs/chartpoint/index.d.ts +90 -0
  16. package/dist/cjs/chartpoint/index.d.ts.map +1 -0
  17. package/dist/cjs/chartpoint/index.js +56 -0
  18. package/dist/cjs/chartpoint/index.js.map +7 -0
  19. package/dist/cjs/color/index.d.ts +285 -0
  20. package/dist/cjs/color/index.d.ts.map +1 -0
  21. package/dist/cjs/color/index.js +143 -0
  22. package/dist/cjs/color/index.js.map +7 -0
  23. package/dist/cjs/compare/index.d.ts +26 -0
  24. package/dist/cjs/compare/index.d.ts.map +1 -0
  25. package/dist/cjs/compare/index.js +50 -0
  26. package/dist/cjs/compare/index.js.map +7 -0
  27. package/dist/cjs/drawing/registry.d.ts +42 -0
  28. package/dist/cjs/drawing/registry.d.ts.map +1 -0
  29. package/dist/cjs/drawing/registry.js +87 -0
  30. package/dist/cjs/drawing/registry.js.map +7 -0
  31. package/dist/cjs/index.d.ts +85 -0
  32. package/dist/cjs/index.d.ts.map +1 -0
  33. package/dist/cjs/index.js +184 -0
  34. package/dist/cjs/index.js.map +7 -0
  35. package/dist/cjs/indicator.d.ts +117 -0
  36. package/dist/cjs/indicator.d.ts.map +1 -0
  37. package/dist/cjs/indicator.js +74 -0
  38. package/dist/cjs/indicator.js.map +7 -0
  39. package/dist/cjs/input.d.ts +196 -0
  40. package/dist/cjs/input.d.ts.map +1 -0
  41. package/dist/cjs/input.js +197 -0
  42. package/dist/cjs/input.js.map +7 -0
  43. package/dist/cjs/label/index.d.ts +303 -0
  44. package/dist/cjs/label/index.d.ts.map +1 -0
  45. package/dist/cjs/label/index.js +190 -0
  46. package/dist/cjs/label/index.js.map +7 -0
  47. package/dist/cjs/lib/index.d.ts +8 -0
  48. package/dist/cjs/lib/index.d.ts.map +1 -0
  49. package/dist/cjs/lib/index.js +19 -0
  50. package/dist/cjs/lib/index.js.map +7 -0
  51. package/dist/{lib → cjs/lib}/zigzag/index.d.ts +4 -1
  52. package/dist/cjs/lib/zigzag/index.d.ts.map +1 -0
  53. package/dist/cjs/lib/zigzag/index.js +27 -0
  54. package/dist/cjs/lib/zigzag/index.js.map +7 -0
  55. package/dist/cjs/lib/zigzag/zigzag.d.ts +100 -0
  56. package/dist/cjs/lib/zigzag/zigzag.d.ts.map +1 -0
  57. package/dist/cjs/lib/zigzag/zigzag.js +207 -0
  58. package/dist/cjs/lib/zigzag/zigzag.js.map +7 -0
  59. package/dist/cjs/line/index.d.ts +342 -0
  60. package/dist/cjs/line/index.d.ts.map +1 -0
  61. package/dist/cjs/line/index.js +193 -0
  62. package/dist/cjs/line/index.js.map +7 -0
  63. package/dist/cjs/linefill/index.d.ts +124 -0
  64. package/dist/cjs/linefill/index.d.ts.map +1 -0
  65. package/dist/cjs/linefill/index.js +56 -0
  66. package/dist/cjs/linefill/index.js.map +7 -0
  67. package/dist/cjs/map/index.d.ts +69 -0
  68. package/dist/cjs/map/index.d.ts.map +1 -0
  69. package/dist/cjs/map/index.js +80 -0
  70. package/dist/cjs/map/index.js.map +7 -0
  71. package/dist/cjs/math/index.d.ts +560 -0
  72. package/dist/cjs/math/index.d.ts.map +1 -0
  73. package/dist/cjs/math/index.js +441 -0
  74. package/dist/cjs/math/index.js.map +7 -0
  75. package/dist/cjs/matrix/index.d.ts +1231 -0
  76. package/dist/cjs/matrix/index.d.ts.map +1 -0
  77. package/dist/cjs/matrix/index.js +1200 -0
  78. package/dist/cjs/matrix/index.js.map +7 -0
  79. package/dist/cjs/package.json +1 -0
  80. package/dist/cjs/plot.d.ts +76 -0
  81. package/dist/cjs/plot.d.ts.map +1 -0
  82. package/dist/cjs/plot.js +51 -0
  83. package/dist/cjs/plot.js.map +7 -0
  84. package/dist/cjs/polyline/index.d.ts +115 -0
  85. package/dist/cjs/polyline/index.d.ts.map +1 -0
  86. package/dist/cjs/polyline/index.js +76 -0
  87. package/dist/cjs/polyline/index.js.map +7 -0
  88. package/dist/cjs/runtime/adapters/LightweightChartsAdapter.d.ts +86 -0
  89. package/dist/cjs/runtime/adapters/LightweightChartsAdapter.d.ts.map +1 -0
  90. package/dist/cjs/runtime/adapters/LightweightChartsAdapter.js +141 -0
  91. package/dist/cjs/runtime/adapters/LightweightChartsAdapter.js.map +7 -0
  92. package/dist/cjs/runtime/adapters/SimpleInputAdapter.d.ts +59 -0
  93. package/dist/cjs/runtime/adapters/SimpleInputAdapter.d.ts.map +1 -0
  94. package/dist/cjs/runtime/adapters/SimpleInputAdapter.js +117 -0
  95. package/dist/cjs/runtime/adapters/SimpleInputAdapter.js.map +7 -0
  96. package/dist/{runtime → cjs/runtime}/index.d.ts +12 -5
  97. package/dist/cjs/runtime/index.d.ts.map +1 -0
  98. package/dist/cjs/runtime/index.js +49 -0
  99. package/dist/cjs/runtime/index.js.map +7 -0
  100. package/dist/cjs/runtime/inputs.d.ts +91 -0
  101. package/dist/cjs/runtime/inputs.d.ts.map +1 -0
  102. package/dist/cjs/runtime/inputs.js +262 -0
  103. package/dist/cjs/runtime/inputs.js.map +7 -0
  104. package/dist/cjs/runtime/runtime.d.ts +70 -0
  105. package/dist/cjs/runtime/runtime.d.ts.map +1 -0
  106. package/dist/cjs/runtime/runtime.js +148 -0
  107. package/dist/cjs/runtime/runtime.js.map +7 -0
  108. package/dist/cjs/runtime/series.d.ts +362 -0
  109. package/dist/cjs/runtime/series.d.ts.map +1 -0
  110. package/dist/cjs/runtime/series.js +560 -0
  111. package/dist/cjs/runtime/series.js.map +7 -0
  112. package/dist/cjs/runtime/types.d.ts +282 -0
  113. package/dist/cjs/runtime/types.d.ts.map +1 -0
  114. package/dist/cjs/runtime/types.js +17 -0
  115. package/dist/cjs/runtime/types.js.map +7 -0
  116. package/dist/cjs/script/index.d.ts +987 -0
  117. package/dist/cjs/script/index.d.ts.map +1 -0
  118. package/dist/cjs/script/index.js +1169 -0
  119. package/dist/cjs/script/index.js.map +7 -0
  120. package/dist/cjs/security/resample.d.ts +63 -0
  121. package/dist/cjs/security/resample.d.ts.map +1 -0
  122. package/dist/cjs/security/resample.js +84 -0
  123. package/dist/cjs/security/resample.js.map +7 -0
  124. package/dist/cjs/session/bars.d.ts +80 -0
  125. package/dist/cjs/session/bars.d.ts.map +1 -0
  126. package/dist/cjs/session/bars.js +219 -0
  127. package/dist/cjs/session/bars.js.map +7 -0
  128. package/dist/cjs/session/calendar.d.ts +70 -0
  129. package/dist/cjs/session/calendar.d.ts.map +1 -0
  130. package/dist/cjs/session/calendar.js +164 -0
  131. package/dist/cjs/session/calendar.js.map +7 -0
  132. package/dist/cjs/str/dateformat.d.ts +15 -0
  133. package/dist/cjs/str/dateformat.d.ts.map +1 -0
  134. package/dist/cjs/str/dateformat.js +149 -0
  135. package/dist/cjs/str/dateformat.js.map +7 -0
  136. package/dist/cjs/str/index.d.ts +459 -0
  137. package/dist/cjs/str/index.d.ts.map +1 -0
  138. package/dist/cjs/str/index.js +143 -0
  139. package/dist/cjs/str/index.js.map +7 -0
  140. package/dist/cjs/str/messageformat.d.ts +14 -0
  141. package/dist/cjs/str/messageformat.d.ts.map +1 -0
  142. package/dist/cjs/str/messageformat.js +114 -0
  143. package/dist/cjs/str/messageformat.js.map +7 -0
  144. package/dist/cjs/str/numberformat.d.ts +19 -0
  145. package/dist/cjs/str/numberformat.d.ts.map +1 -0
  146. package/dist/cjs/str/numberformat.js +170 -0
  147. package/dist/cjs/str/numberformat.js.map +7 -0
  148. package/dist/{strategy → cjs/strategy}/index.d.ts +50 -0
  149. package/dist/cjs/strategy/index.d.ts.map +1 -0
  150. package/dist/cjs/strategy/index.js +92 -0
  151. package/dist/cjs/strategy/index.js.map +7 -0
  152. package/dist/cjs/ta/index.d.ts +1397 -0
  153. package/dist/cjs/ta/index.d.ts.map +1 -0
  154. package/dist/cjs/ta/index.js +1715 -0
  155. package/dist/cjs/ta/index.js.map +7 -0
  156. package/dist/cjs/ta/running-sum.d.ts +30 -0
  157. package/dist/cjs/ta/running-sum.d.ts.map +1 -0
  158. package/dist/cjs/ta/running-sum.js +99 -0
  159. package/dist/cjs/ta/running-sum.js.map +7 -0
  160. package/dist/cjs/ta-series.d.ts +558 -0
  161. package/dist/cjs/ta-series.d.ts.map +1 -0
  162. package/dist/cjs/ta-series.js +606 -0
  163. package/dist/cjs/ta-series.js.map +7 -0
  164. package/dist/cjs/text/index.d.ts +14 -0
  165. package/dist/cjs/text/index.d.ts.map +1 -0
  166. package/dist/cjs/text/index.js +29 -0
  167. package/dist/cjs/text/index.js.map +7 -0
  168. package/dist/cjs/time/datestring.d.ts +23 -0
  169. package/dist/cjs/time/datestring.d.ts.map +1 -0
  170. package/dist/cjs/time/datestring.js +106 -0
  171. package/dist/cjs/time/datestring.js.map +7 -0
  172. package/dist/cjs/time/index.d.ts +89 -0
  173. package/dist/cjs/time/index.d.ts.map +1 -0
  174. package/dist/cjs/time/index.js +85 -0
  175. package/dist/cjs/time/index.js.map +7 -0
  176. package/dist/cjs/time/session.d.ts +17 -0
  177. package/dist/cjs/time/session.d.ts.map +1 -0
  178. package/dist/cjs/time/session.js +65 -0
  179. package/dist/cjs/time/session.js.map +7 -0
  180. package/dist/cjs/time/timezone.d.ts +40 -0
  181. package/dist/cjs/time/timezone.d.ts.map +1 -0
  182. package/dist/cjs/time/timezone.js +125 -0
  183. package/dist/cjs/time/timezone.js.map +7 -0
  184. package/dist/cjs/timeframe/index.d.ts +73 -0
  185. package/dist/cjs/timeframe/index.d.ts.map +1 -0
  186. package/dist/cjs/timeframe/index.js +85 -0
  187. package/dist/cjs/timeframe/index.js.map +7 -0
  188. package/dist/cjs/types/index.d.ts +343 -0
  189. package/dist/cjs/types/index.d.ts.map +1 -0
  190. package/dist/cjs/types/index.js +32 -0
  191. package/dist/cjs/types/index.js.map +7 -0
  192. package/dist/cjs/types/metadata.d.ts +300 -0
  193. package/dist/cjs/types/metadata.d.ts.map +1 -0
  194. package/dist/cjs/types/metadata.js +17 -0
  195. package/dist/cjs/types/metadata.js.map +7 -0
  196. package/dist/cjs/utils/index.d.ts +167 -0
  197. package/dist/cjs/utils/index.d.ts.map +1 -0
  198. package/dist/cjs/utils/index.js +209 -0
  199. package/dist/cjs/utils/index.js.map +7 -0
  200. package/dist/esm/array/index.d.ts +701 -0
  201. package/dist/esm/array/index.d.ts.map +1 -0
  202. package/dist/esm/array/index.js +983 -0
  203. package/dist/esm/array/index.js.map +1 -0
  204. package/dist/esm/box/index.d.ts +444 -0
  205. package/dist/esm/box/index.d.ts.map +1 -0
  206. package/dist/esm/box/index.js +602 -0
  207. package/dist/esm/box/index.js.map +1 -0
  208. package/dist/esm/callsite/index.d.ts +61 -0
  209. package/dist/esm/callsite/index.d.ts.map +1 -0
  210. package/dist/esm/callsite/index.js +97 -0
  211. package/dist/esm/callsite/index.js.map +1 -0
  212. package/dist/esm/chartpoint/index.d.ts +90 -0
  213. package/dist/esm/chartpoint/index.d.ts.map +1 -0
  214. package/dist/esm/chartpoint/index.js +113 -0
  215. package/dist/esm/chartpoint/index.js.map +1 -0
  216. package/dist/esm/color/index.d.ts +285 -0
  217. package/dist/esm/color/index.d.ts.map +1 -0
  218. package/dist/esm/color/index.js +373 -0
  219. package/dist/esm/color/index.js.map +1 -0
  220. package/dist/esm/compare/index.d.ts +26 -0
  221. package/dist/esm/compare/index.d.ts.map +1 -0
  222. package/dist/esm/compare/index.js +39 -0
  223. package/dist/esm/compare/index.js.map +1 -0
  224. package/dist/esm/drawing/registry.d.ts +42 -0
  225. package/dist/esm/drawing/registry.d.ts.map +1 -0
  226. package/dist/esm/drawing/registry.js +89 -0
  227. package/dist/esm/drawing/registry.js.map +1 -0
  228. package/dist/esm/index.d.ts +85 -0
  229. package/dist/esm/index.d.ts.map +1 -0
  230. package/dist/esm/index.js +96 -0
  231. package/dist/esm/index.js.map +1 -0
  232. package/dist/esm/indicator.d.ts +117 -0
  233. package/dist/esm/indicator.d.ts.map +1 -0
  234. package/dist/esm/indicator.js +84 -0
  235. package/dist/esm/indicator.js.map +1 -0
  236. package/dist/esm/input.d.ts +196 -0
  237. package/dist/esm/input.d.ts.map +1 -0
  238. package/dist/esm/input.js +183 -0
  239. package/dist/esm/input.js.map +1 -0
  240. package/dist/esm/label/index.d.ts +303 -0
  241. package/dist/esm/label/index.d.ts.map +1 -0
  242. package/dist/esm/label/index.js +417 -0
  243. package/dist/esm/label/index.js.map +1 -0
  244. package/dist/esm/lib/index.d.ts +8 -0
  245. package/dist/esm/lib/index.d.ts.map +1 -0
  246. package/dist/esm/lib/index.js +8 -0
  247. package/dist/esm/lib/index.js.map +1 -0
  248. package/dist/esm/lib/zigzag/index.d.ts +5 -0
  249. package/dist/esm/lib/zigzag/index.d.ts.map +1 -0
  250. package/dist/esm/lib/zigzag/index.js +5 -0
  251. package/dist/esm/lib/zigzag/index.js.map +1 -0
  252. package/dist/esm/lib/zigzag/zigzag.d.ts +100 -0
  253. package/dist/esm/lib/zigzag/zigzag.d.ts.map +1 -0
  254. package/dist/esm/lib/zigzag/zigzag.js +229 -0
  255. package/dist/esm/lib/zigzag/zigzag.js.map +1 -0
  256. package/dist/esm/line/index.d.ts +342 -0
  257. package/dist/esm/line/index.d.ts.map +1 -0
  258. package/dist/esm/line/index.js +470 -0
  259. package/dist/esm/line/index.js.map +1 -0
  260. package/dist/esm/linefill/index.d.ts +124 -0
  261. package/dist/esm/linefill/index.d.ts.map +1 -0
  262. package/dist/esm/linefill/index.js +144 -0
  263. package/dist/esm/linefill/index.js.map +1 -0
  264. package/dist/esm/map/index.d.ts +69 -0
  265. package/dist/esm/map/index.d.ts.map +1 -0
  266. package/dist/esm/map/index.js +106 -0
  267. package/dist/esm/map/index.js.map +1 -0
  268. package/dist/esm/math/index.d.ts +560 -0
  269. package/dist/esm/math/index.d.ts.map +1 -0
  270. package/dist/esm/math/index.js +495 -0
  271. package/dist/esm/math/index.js.map +1 -0
  272. package/dist/esm/matrix/index.d.ts +1231 -0
  273. package/dist/esm/matrix/index.d.ts.map +1 -0
  274. package/dist/esm/matrix/index.js +2450 -0
  275. package/dist/esm/matrix/index.js.map +1 -0
  276. package/dist/esm/plot.d.ts +76 -0
  277. package/dist/esm/plot.d.ts.map +1 -0
  278. package/dist/esm/plot.js +63 -0
  279. package/dist/esm/plot.js.map +1 -0
  280. package/dist/esm/polyline/index.d.ts +115 -0
  281. package/dist/esm/polyline/index.d.ts.map +1 -0
  282. package/dist/esm/polyline/index.js +157 -0
  283. package/dist/esm/polyline/index.js.map +1 -0
  284. package/dist/esm/runtime/adapters/LightweightChartsAdapter.d.ts +86 -0
  285. package/dist/esm/runtime/adapters/LightweightChartsAdapter.d.ts.map +1 -0
  286. package/dist/esm/runtime/adapters/LightweightChartsAdapter.js +140 -0
  287. package/dist/esm/runtime/adapters/LightweightChartsAdapter.js.map +1 -0
  288. package/dist/esm/runtime/adapters/SimpleInputAdapter.d.ts +59 -0
  289. package/dist/esm/runtime/adapters/SimpleInputAdapter.d.ts.map +1 -0
  290. package/dist/esm/runtime/adapters/SimpleInputAdapter.js +115 -0
  291. package/dist/esm/runtime/adapters/SimpleInputAdapter.js.map +1 -0
  292. package/dist/esm/runtime/index.d.ts +13 -0
  293. package/dist/esm/runtime/index.d.ts.map +1 -0
  294. package/dist/esm/runtime/index.js +14 -0
  295. package/dist/esm/runtime/index.js.map +1 -0
  296. package/dist/esm/runtime/inputs.d.ts +91 -0
  297. package/dist/esm/runtime/inputs.d.ts.map +1 -0
  298. package/dist/esm/runtime/inputs.js +334 -0
  299. package/dist/esm/runtime/inputs.js.map +1 -0
  300. package/dist/esm/runtime/runtime.d.ts +70 -0
  301. package/dist/esm/runtime/runtime.d.ts.map +1 -0
  302. package/dist/esm/runtime/runtime.js +193 -0
  303. package/dist/esm/runtime/runtime.js.map +1 -0
  304. package/dist/esm/runtime/series.d.ts +362 -0
  305. package/dist/esm/runtime/series.d.ts.map +1 -0
  306. package/dist/esm/runtime/series.js +583 -0
  307. package/dist/esm/runtime/series.js.map +1 -0
  308. package/dist/esm/runtime/types.d.ts +282 -0
  309. package/dist/esm/runtime/types.d.ts.map +1 -0
  310. package/dist/esm/runtime/types.js +7 -0
  311. package/dist/esm/runtime/types.js.map +1 -0
  312. package/dist/esm/script/index.d.ts +987 -0
  313. package/dist/esm/script/index.d.ts.map +1 -0
  314. package/dist/esm/script/index.js +1289 -0
  315. package/dist/esm/script/index.js.map +1 -0
  316. package/dist/esm/security/resample.d.ts +63 -0
  317. package/dist/esm/security/resample.d.ts.map +1 -0
  318. package/dist/esm/security/resample.js +110 -0
  319. package/dist/esm/security/resample.js.map +1 -0
  320. package/dist/esm/session/bars.d.ts +80 -0
  321. package/dist/esm/session/bars.d.ts.map +1 -0
  322. package/dist/esm/session/bars.js +232 -0
  323. package/dist/esm/session/bars.js.map +1 -0
  324. package/dist/esm/session/calendar.d.ts +70 -0
  325. package/dist/esm/session/calendar.d.ts.map +1 -0
  326. package/dist/esm/session/calendar.js +172 -0
  327. package/dist/esm/session/calendar.js.map +1 -0
  328. package/dist/esm/str/dateformat.d.ts +15 -0
  329. package/dist/esm/str/dateformat.d.ts.map +1 -0
  330. package/dist/esm/str/dateformat.js +136 -0
  331. package/dist/esm/str/dateformat.js.map +1 -0
  332. package/dist/esm/str/index.d.ts +459 -0
  333. package/dist/esm/str/index.d.ts.map +1 -0
  334. package/dist/esm/str/index.js +540 -0
  335. package/dist/esm/str/index.js.map +1 -0
  336. package/dist/esm/str/messageformat.d.ts +14 -0
  337. package/dist/esm/str/messageformat.d.ts.map +1 -0
  338. package/dist/esm/str/messageformat.js +111 -0
  339. package/dist/esm/str/messageformat.js.map +1 -0
  340. package/dist/esm/str/numberformat.d.ts +19 -0
  341. package/dist/esm/str/numberformat.d.ts.map +1 -0
  342. package/dist/esm/str/numberformat.js +189 -0
  343. package/dist/esm/str/numberformat.js.map +1 -0
  344. package/dist/esm/strategy/index.d.ts +245 -0
  345. package/dist/esm/strategy/index.d.ts.map +1 -0
  346. package/dist/esm/strategy/index.js +84 -0
  347. package/dist/esm/strategy/index.js.map +1 -0
  348. package/dist/esm/ta/index.d.ts +1397 -0
  349. package/dist/esm/ta/index.d.ts.map +1 -0
  350. package/dist/esm/ta/index.js +3227 -0
  351. package/dist/esm/ta/index.js.map +1 -0
  352. package/dist/esm/ta/running-sum.d.ts +30 -0
  353. package/dist/esm/ta/running-sum.d.ts.map +1 -0
  354. package/dist/esm/ta/running-sum.js +113 -0
  355. package/dist/esm/ta/running-sum.js.map +1 -0
  356. package/dist/esm/ta-series.d.ts +558 -0
  357. package/dist/esm/ta-series.d.ts.map +1 -0
  358. package/dist/esm/ta-series.js +910 -0
  359. package/dist/esm/ta-series.js.map +1 -0
  360. package/dist/esm/text/index.d.ts +14 -0
  361. package/dist/esm/text/index.d.ts.map +1 -0
  362. package/dist/esm/text/index.js +14 -0
  363. package/dist/esm/text/index.js.map +1 -0
  364. package/dist/esm/time/datestring.d.ts +23 -0
  365. package/dist/esm/time/datestring.d.ts.map +1 -0
  366. package/dist/esm/time/datestring.js +94 -0
  367. package/dist/esm/time/datestring.js.map +1 -0
  368. package/dist/esm/time/index.d.ts +89 -0
  369. package/dist/esm/time/index.d.ts.map +1 -0
  370. package/dist/esm/time/index.js +108 -0
  371. package/dist/esm/time/index.js.map +1 -0
  372. package/dist/esm/time/session.d.ts +17 -0
  373. package/dist/esm/time/session.d.ts.map +1 -0
  374. package/dist/esm/time/session.js +69 -0
  375. package/dist/esm/time/session.js.map +1 -0
  376. package/dist/esm/time/timezone.d.ts +40 -0
  377. package/dist/esm/time/timezone.d.ts.map +1 -0
  378. package/dist/esm/time/timezone.js +144 -0
  379. package/dist/esm/time/timezone.js.map +1 -0
  380. package/dist/esm/timeframe/index.d.ts +73 -0
  381. package/dist/esm/timeframe/index.d.ts.map +1 -0
  382. package/dist/esm/timeframe/index.js +131 -0
  383. package/dist/esm/timeframe/index.js.map +1 -0
  384. package/dist/esm/types/index.d.ts +343 -0
  385. package/dist/esm/types/index.d.ts.map +1 -0
  386. package/dist/esm/types/index.js +17 -0
  387. package/dist/esm/types/index.js.map +1 -0
  388. package/dist/esm/types/metadata.d.ts +300 -0
  389. package/dist/esm/types/metadata.d.ts.map +1 -0
  390. package/dist/esm/types/metadata.js +7 -0
  391. package/dist/esm/types/metadata.js.map +1 -0
  392. package/dist/esm/utils/index.d.ts +167 -0
  393. package/dist/esm/utils/index.d.ts.map +1 -0
  394. package/dist/esm/utils/index.js +295 -0
  395. package/dist/esm/utils/index.js.map +1 -0
  396. package/package.json +53 -23
  397. package/src/array/index.ts +1056 -0
  398. package/src/box/index.ts +680 -0
  399. package/src/callsite/index.ts +104 -0
  400. package/src/chartpoint/index.ts +126 -0
  401. package/src/color/index.ts +411 -0
  402. package/src/compare/index.ts +46 -0
  403. package/src/drawing/registry.ts +106 -0
  404. package/src/index.ts +201 -0
  405. package/src/indicator.ts +185 -0
  406. package/src/input.ts +280 -0
  407. package/src/label/index.ts +490 -0
  408. package/src/lib/index.ts +8 -0
  409. package/src/lib/zigzag/index.ts +13 -0
  410. package/src/lib/zigzag/zigzag.ts +318 -0
  411. package/src/line/index.ts +530 -0
  412. package/src/linefill/index.ts +152 -0
  413. package/src/map/index.ts +115 -0
  414. package/src/math/index.ts +1071 -0
  415. package/src/matrix/index.ts +2697 -0
  416. package/src/plot.ts +121 -0
  417. package/src/polyline/index.ts +184 -0
  418. package/src/runtime/adapters/LightweightChartsAdapter.ts +201 -0
  419. package/src/runtime/adapters/SimpleInputAdapter.ts +132 -0
  420. package/src/runtime/index.ts +52 -0
  421. package/src/runtime/inputs.ts +377 -0
  422. package/src/runtime/runtime.ts +241 -0
  423. package/src/runtime/series.ts +644 -0
  424. package/src/runtime/types.ts +292 -0
  425. package/src/script/index.ts +1865 -0
  426. package/src/security/resample.ts +119 -0
  427. package/src/session/bars.ts +262 -0
  428. package/src/session/calendar.ts +199 -0
  429. package/src/str/dateformat.ts +104 -0
  430. package/src/str/index.ts +557 -0
  431. package/src/str/messageformat.ts +109 -0
  432. package/src/str/numberformat.ts +197 -0
  433. package/src/strategy/index.ts +281 -0
  434. package/src/ta/index.ts +3580 -0
  435. package/src/ta/running-sum.ts +117 -0
  436. package/src/ta-series.ts +1036 -0
  437. package/src/text/index.ts +14 -0
  438. package/src/time/datestring.ts +96 -0
  439. package/src/time/index.ts +161 -0
  440. package/src/time/session.ts +79 -0
  441. package/src/time/timezone.ts +180 -0
  442. package/src/timeframe/index.ts +144 -0
  443. package/src/types/index.ts +398 -0
  444. package/src/types/metadata.ts +334 -0
  445. package/src/utils/index.ts +334 -0
  446. package/dist/array/index.d.ts +0 -57
  447. package/dist/array/index.d.ts.map +0 -1
  448. package/dist/box/index.d.ts +0 -37
  449. package/dist/box/index.d.ts.map +0 -1
  450. package/dist/callsite/index.d.ts +0 -7
  451. package/dist/callsite/index.d.ts.map +0 -1
  452. package/dist/chartpoint/index.d.ts +0 -8
  453. package/dist/chartpoint/index.d.ts.map +0 -1
  454. package/dist/color/index.d.ts +0 -28
  455. package/dist/color/index.d.ts.map +0 -1
  456. package/dist/compare/index.d.ts +0 -8
  457. package/dist/compare/index.d.ts.map +0 -1
  458. package/dist/drawing/registry.d.ts +0 -19
  459. package/dist/drawing/registry.d.ts.map +0 -1
  460. package/dist/index.cjs +0 -7979
  461. package/dist/index.d.ts +0 -64
  462. package/dist/index.d.ts.map +0 -1
  463. package/dist/index.mjs +0 -7962
  464. package/dist/indicator.d.ts +0 -42
  465. package/dist/indicator.d.ts.map +0 -1
  466. package/dist/input.d.ts +0 -47
  467. package/dist/input.d.ts.map +0 -1
  468. package/dist/label/index.d.ts +0 -30
  469. package/dist/label/index.d.ts.map +0 -1
  470. package/dist/lib/index.d.ts +0 -2
  471. package/dist/lib/index.d.ts.map +0 -1
  472. package/dist/lib/zigzag/index.d.ts.map +0 -1
  473. package/dist/lib/zigzag/zigzag.d.ts +0 -47
  474. package/dist/lib/zigzag/zigzag.d.ts.map +0 -1
  475. package/dist/line/index.d.ts +0 -30
  476. package/dist/line/index.d.ts.map +0 -1
  477. package/dist/linefill/index.d.ts +0 -10
  478. package/dist/linefill/index.d.ts.map +0 -1
  479. package/dist/map/index.d.ts +0 -14
  480. package/dist/map/index.d.ts.map +0 -1
  481. package/dist/math/index.d.ts +0 -53
  482. package/dist/math/index.d.ts.map +0 -1
  483. package/dist/matrix/index.d.ts +0 -52
  484. package/dist/matrix/index.d.ts.map +0 -1
  485. package/dist/plot.d.ts +0 -20
  486. package/dist/plot.d.ts.map +0 -1
  487. package/dist/polyline/index.d.ts +0 -11
  488. package/dist/polyline/index.d.ts.map +0 -1
  489. package/dist/runtime/adapters/LightweightChartsAdapter.d.ts +0 -15
  490. package/dist/runtime/adapters/LightweightChartsAdapter.d.ts.map +0 -1
  491. package/dist/runtime/adapters/SimpleInputAdapter.d.ts +0 -16
  492. package/dist/runtime/adapters/SimpleInputAdapter.d.ts.map +0 -1
  493. package/dist/runtime/index.cjs +0 -600
  494. package/dist/runtime/index.d.ts.map +0 -1
  495. package/dist/runtime/index.mjs +0 -577
  496. package/dist/runtime/inputs.d.ts +0 -13
  497. package/dist/runtime/inputs.d.ts.map +0 -1
  498. package/dist/runtime/runtime.d.ts +0 -16
  499. package/dist/runtime/runtime.d.ts.map +0 -1
  500. package/dist/runtime/series.d.ts +0 -60
  501. package/dist/runtime/series.d.ts.map +0 -1
  502. package/dist/runtime/types.d.ts +0 -122
  503. package/dist/runtime/types.d.ts.map +0 -1
  504. package/dist/script/index.cjs +0 -6372
  505. package/dist/script/index.d.ts +0 -709
  506. package/dist/script/index.d.ts.map +0 -1
  507. package/dist/script/index.mjs +0 -6355
  508. package/dist/security/resample.d.ts +0 -13
  509. package/dist/security/resample.d.ts.map +0 -1
  510. package/dist/session/bars.d.ts +0 -34
  511. package/dist/session/bars.d.ts.map +0 -1
  512. package/dist/session/calendar.d.ts +0 -31
  513. package/dist/session/calendar.d.ts.map +0 -1
  514. package/dist/str/dateformat.d.ts +0 -2
  515. package/dist/str/dateformat.d.ts.map +0 -1
  516. package/dist/str/index.d.ts +0 -24
  517. package/dist/str/index.d.ts.map +0 -1
  518. package/dist/str/messageformat.d.ts +0 -2
  519. package/dist/str/messageformat.d.ts.map +0 -1
  520. package/dist/str/numberformat.d.ts +0 -3
  521. package/dist/str/numberformat.d.ts.map +0 -1
  522. package/dist/strategy/index.d.ts.map +0 -1
  523. package/dist/ta/index.d.ts +0 -72
  524. package/dist/ta/index.d.ts.map +0 -1
  525. package/dist/ta-series.d.ts +0 -143
  526. package/dist/ta-series.d.ts.map +0 -1
  527. package/dist/text/index.d.ts +0 -4
  528. package/dist/text/index.d.ts.map +0 -1
  529. package/dist/time/datestring.d.ts +0 -2
  530. package/dist/time/datestring.d.ts.map +0 -1
  531. package/dist/time/index.d.ts +0 -15
  532. package/dist/time/index.d.ts.map +0 -1
  533. package/dist/time/session.d.ts +0 -2
  534. package/dist/time/session.d.ts.map +0 -1
  535. package/dist/time/timezone.d.ts +0 -13
  536. package/dist/time/timezone.d.ts.map +0 -1
  537. package/dist/timeframe/index.d.ts +0 -17
  538. package/dist/timeframe/index.d.ts.map +0 -1
  539. package/dist/types/index.d.ts +0 -181
  540. package/dist/types/index.d.ts.map +0 -1
  541. package/dist/types/metadata.d.ts +0 -131
  542. package/dist/types/metadata.d.ts.map +0 -1
  543. package/dist/utils/index.d.ts +0 -26
  544. package/dist/utils/index.d.ts.map +0 -1
@@ -0,0 +1,334 @@
1
+ /**
2
+ * @fileoverview Idempotent input registration functions
3
+ * These functions mirror PineScript's input functions with idempotent semantics:
4
+ * - First call registers the input with default value
5
+ * - Subsequent calls return the current stored value (possibly user-updated)
6
+ * @module runtime/inputs
7
+ */
8
+ import { getContext, recalculate } from './runtime.js';
9
+ // Track registered inputs for idempotent registration
10
+ const registeredInputs = new Map();
11
+ // Track if we should auto-recalculate on input change
12
+ let autoRecalculateEnabled = false;
13
+ /**
14
+ * Enable automatic recalculation when inputs change
15
+ */
16
+ export function enableAutoRecalculate() {
17
+ autoRecalculateEnabled = true;
18
+ }
19
+ /**
20
+ * Disable automatic recalculation
21
+ */
22
+ export function disableAutoRecalculate() {
23
+ autoRecalculateEnabled = false;
24
+ }
25
+ /**
26
+ * Reset registered inputs (for testing or context changes)
27
+ * @internal
28
+ */
29
+ export function resetInputs() {
30
+ registeredInputs.clear();
31
+ inputCounter = 0;
32
+ }
33
+ // Counter for generating unique input IDs when no title is provided
34
+ let inputCounter = 0;
35
+ /**
36
+ * Generate a unique input ID from title or default
37
+ * @param title - Optional title
38
+ * @param defval - Default value for fallback
39
+ * @param type - Input type
40
+ * @returns Unique input ID
41
+ */
42
+ function generateInputId(title, defval, type) {
43
+ if (title) {
44
+ return title.replace(/\s+/g, '_');
45
+ }
46
+ // Use counter to ensure uniqueness when no title is provided
47
+ return `${type}_${inputCounter++}_${String(defval)}`;
48
+ }
49
+ /**
50
+ * Register an integer input
51
+ * First call registers with defval, subsequent calls return current value
52
+ * @param defval - Default value
53
+ * @param title - Display title (optional)
54
+ * @param options - Additional options: min, max, step (optional)
55
+ * @returns Current integer value
56
+ */
57
+ export function input_int(defval, title, options) {
58
+ const context = getContext();
59
+ if (!context) {
60
+ // No context - return default value
61
+ return Math.floor(defval);
62
+ }
63
+ const id = generateInputId(title, defval, 'int');
64
+ const config = {
65
+ id,
66
+ type: 'int',
67
+ defval: Math.floor(defval),
68
+ title,
69
+ min: options?.min,
70
+ max: options?.max,
71
+ step: options?.step ?? 1,
72
+ };
73
+ // Check if already registered (idempotent)
74
+ if (!registeredInputs.has(id)) {
75
+ // First call - register the input
76
+ context.inputs.registerInput(config);
77
+ registeredInputs.set(id, true);
78
+ // Set up auto-recalculate on change if not already done
79
+ if (autoRecalculateEnabled) {
80
+ context.inputs.onInputChange((changedId) => {
81
+ if (changedId === id) {
82
+ recalculate();
83
+ }
84
+ });
85
+ }
86
+ }
87
+ // Return current value (may have been updated by user)
88
+ const value = context.inputs.getValue(id);
89
+ return typeof value === 'number' ? Math.floor(value) : Math.floor(defval);
90
+ }
91
+ /**
92
+ * Register a float input
93
+ * First call registers with defval, subsequent calls return current value
94
+ * @param defval - Default value
95
+ * @param title - Display title (optional)
96
+ * @param options - Additional options: min, max, step (optional)
97
+ * @returns Current float value
98
+ */
99
+ export function input_float(defval, title, options) {
100
+ const context = getContext();
101
+ if (!context) {
102
+ // No context - return default value
103
+ return defval;
104
+ }
105
+ const id = generateInputId(title, defval, 'float');
106
+ const config = {
107
+ id,
108
+ type: 'float',
109
+ defval,
110
+ title,
111
+ min: options?.min,
112
+ max: options?.max,
113
+ step: options?.step ?? 0.1,
114
+ };
115
+ // Check if already registered (idempotent)
116
+ if (!registeredInputs.has(id)) {
117
+ context.inputs.registerInput(config);
118
+ registeredInputs.set(id, true);
119
+ if (autoRecalculateEnabled) {
120
+ context.inputs.onInputChange((changedId) => {
121
+ if (changedId === id) {
122
+ recalculate();
123
+ }
124
+ });
125
+ }
126
+ }
127
+ const value = context.inputs.getValue(id);
128
+ return typeof value === 'number' ? value : defval;
129
+ }
130
+ /**
131
+ * Register a boolean input
132
+ * First call registers with defval, subsequent calls return current value
133
+ * @param defval - Default value
134
+ * @param title - Display title (optional)
135
+ * @returns Current boolean value
136
+ */
137
+ export function input_bool(defval, title) {
138
+ const context = getContext();
139
+ if (!context) {
140
+ return defval;
141
+ }
142
+ const id = generateInputId(title, defval, 'bool');
143
+ const config = {
144
+ id,
145
+ type: 'bool',
146
+ defval,
147
+ title,
148
+ };
149
+ if (!registeredInputs.has(id)) {
150
+ context.inputs.registerInput(config);
151
+ registeredInputs.set(id, true);
152
+ if (autoRecalculateEnabled) {
153
+ context.inputs.onInputChange((changedId) => {
154
+ if (changedId === id) {
155
+ recalculate();
156
+ }
157
+ });
158
+ }
159
+ }
160
+ const value = context.inputs.getValue(id);
161
+ return typeof value === 'boolean' ? value : defval;
162
+ }
163
+ /**
164
+ * Register a string input
165
+ * First call registers with defval, subsequent calls return current value
166
+ * @param defval - Default value
167
+ * @param title - Display title (optional)
168
+ * @param options - Array of string options for dropdown (optional)
169
+ * @returns Current string value
170
+ */
171
+ export function input_string(defval, title, options) {
172
+ const context = getContext();
173
+ if (!context) {
174
+ return defval;
175
+ }
176
+ const id = generateInputId(title, defval, 'string');
177
+ const config = {
178
+ id,
179
+ type: 'string',
180
+ defval,
181
+ title,
182
+ options,
183
+ };
184
+ if (!registeredInputs.has(id)) {
185
+ context.inputs.registerInput(config);
186
+ registeredInputs.set(id, true);
187
+ if (autoRecalculateEnabled) {
188
+ context.inputs.onInputChange((changedId) => {
189
+ if (changedId === id) {
190
+ recalculate();
191
+ }
192
+ });
193
+ }
194
+ }
195
+ const value = context.inputs.getValue(id);
196
+ return typeof value === 'string' ? value : defval;
197
+ }
198
+ /**
199
+ * Registers `config` once (idempotent) and returns the current stored value.
200
+ */
201
+ function registerOnce(config) {
202
+ const context = getContext();
203
+ if (!registeredInputs.has(config.id)) {
204
+ context.inputs.registerInput(config);
205
+ registeredInputs.set(config.id, true);
206
+ if (autoRecalculateEnabled) {
207
+ context.inputs.onInputChange((changedId) => {
208
+ if (changedId === config.id) {
209
+ recalculate();
210
+ }
211
+ });
212
+ }
213
+ }
214
+ return context.inputs.getValue(config.id);
215
+ }
216
+ /**
217
+ * Register a timeframe input (PineScript `input.timeframe`)
218
+ * First call registers with defval, subsequent calls return current value
219
+ * @param defval - Default timeframe string ("60", "1D", "W"); "" means the chart timeframe
220
+ * @param title - Display title (optional)
221
+ * @param options - Array of timeframe options for dropdown (optional)
222
+ * @returns Current timeframe string
223
+ */
224
+ export function input_timeframe(defval, title, options) {
225
+ if (!getContext()) {
226
+ return defval;
227
+ }
228
+ const value = registerOnce({ id: generateInputId(title, defval, 'timeframe'), type: 'timeframe', defval, title, options });
229
+ return typeof value === 'string' ? value : defval;
230
+ }
231
+ /**
232
+ * Register a session input (PineScript `input.session`)
233
+ * First call registers with defval, subsequent calls return current value
234
+ * @param defval - Default session string ("0930-1600", "0930-1600:23456")
235
+ * @param title - Display title (optional)
236
+ * @param options - Array of session options for dropdown (optional)
237
+ * @returns Current session string
238
+ */
239
+ export function input_session(defval, title, options) {
240
+ if (!getContext()) {
241
+ return defval;
242
+ }
243
+ const value = registerOnce({ id: generateInputId(title, defval, 'session'), type: 'session', defval, title, options });
244
+ return typeof value === 'string' ? value : defval;
245
+ }
246
+ /**
247
+ * Register a date/time input (PineScript `input.time`)
248
+ * First call registers with defval, subsequent calls return current value
249
+ * @param defval - Default UNIX time in milliseconds, e.g. `time.timestamp("2024-01-01")`
250
+ * @param title - Display title (optional)
251
+ * @returns Current UNIX time in milliseconds
252
+ */
253
+ export function input_time(defval, title) {
254
+ if (!getContext()) {
255
+ return defval;
256
+ }
257
+ const value = registerOnce({ id: generateInputId(title, defval, 'time'), type: 'time', defval, title });
258
+ return typeof value === 'number' ? value : defval;
259
+ }
260
+ /**
261
+ * Register a source input (returns a data series from OHLCV)
262
+ * First call registers with defval, subsequent calls return current value
263
+ * @param defval - Default source name ('close', 'open', 'high', 'low', 'volume', 'hl2', 'hlc3', 'ohlc4')
264
+ * @param title - Display title (optional)
265
+ * @returns Array of values for the selected source
266
+ */
267
+ export function input_source(defval, title) {
268
+ const context = getContext();
269
+ if (!context) {
270
+ return [];
271
+ }
272
+ const id = generateInputId(title, defval, 'source');
273
+ const config = {
274
+ id,
275
+ type: 'source',
276
+ defval,
277
+ title,
278
+ options: ['open', 'high', 'low', 'close', 'volume', 'hl2', 'hlc3', 'ohlc4'],
279
+ };
280
+ if (!registeredInputs.has(id)) {
281
+ context.inputs.registerInput(config);
282
+ registeredInputs.set(id, true);
283
+ if (autoRecalculateEnabled) {
284
+ context.inputs.onInputChange((changedId) => {
285
+ if (changedId === id) {
286
+ recalculate();
287
+ }
288
+ });
289
+ }
290
+ }
291
+ const sourceName = context.inputs.getValue(id) ?? defval;
292
+ return getSourceData(context.ohlcv, sourceName);
293
+ }
294
+ /**
295
+ * Get data array for a source name
296
+ * @param ohlcv - OHLCV data
297
+ * @param sourceName - Source name
298
+ * @returns Array of values
299
+ */
300
+ function getSourceData(ohlcv, sourceName) {
301
+ switch (sourceName) {
302
+ case 'open':
303
+ return ohlcv.open;
304
+ case 'high':
305
+ return ohlcv.high;
306
+ case 'low':
307
+ return ohlcv.low;
308
+ case 'close':
309
+ return ohlcv.close;
310
+ case 'volume':
311
+ return ohlcv.volume;
312
+ case 'hl2':
313
+ return ohlcv.high.map((h, i) => {
314
+ const l = ohlcv.low[i];
315
+ return l !== undefined ? (h + l) / 2 : NaN;
316
+ });
317
+ case 'hlc3':
318
+ return ohlcv.high.map((h, i) => {
319
+ const l = ohlcv.low[i];
320
+ const c = ohlcv.close[i];
321
+ return l !== undefined && c !== undefined ? (h + l + c) / 3 : NaN;
322
+ });
323
+ case 'ohlc4':
324
+ return ohlcv.open.map((o, i) => {
325
+ const h = ohlcv.high[i];
326
+ const l = ohlcv.low[i];
327
+ const c = ohlcv.close[i];
328
+ return h !== undefined && l !== undefined && c !== undefined ? (o + h + l + c) / 4 : NaN;
329
+ });
330
+ default:
331
+ return ohlcv.close;
332
+ }
333
+ }
334
+ //# sourceMappingURL=inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../src/runtime/inputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @fileoverview OakScriptJS Runtime - Context management and plot functions
3
+ * This module provides the global runtime context for indicator execution
4
+ * @module runtime/runtime
5
+ */
6
+ import type { OakScriptContext, SeriesHandle } from './types.js';
7
+ interface ActivePlot {
8
+ id: string;
9
+ series: SeriesHandle;
10
+ }
11
+ /**
12
+ * Set the global OakScript context
13
+ * Must be called by host application before any indicator calculation
14
+ * @param ctx - The context object with chart and input adapters
15
+ */
16
+ export declare function setContext(ctx: OakScriptContext): void;
17
+ /**
18
+ * Clear the global context
19
+ * Call when detaching/removing an indicator
20
+ */
21
+ export declare function clearContext(): void;
22
+ /**
23
+ * Get the current global context
24
+ * @returns The current context or null if not set
25
+ */
26
+ export declare function getContext(): OakScriptContext | null;
27
+ /**
28
+ * Register the calculate function for recalculation
29
+ * Indicators call this to enable automatic recalculation on input changes
30
+ * @param fn - The calculate function to register
31
+ */
32
+ export declare function registerCalculate(fn: () => void): void;
33
+ /**
34
+ * Trigger recalculation of the current indicator
35
+ * Clears existing plots and re-invokes the registered calculate function
36
+ */
37
+ export declare function recalculate(): void;
38
+ /**
39
+ * Clear all active plots from the chart
40
+ * Called internally before recalculation
41
+ */
42
+ export declare function clearPlots(): void;
43
+ /**
44
+ * Plot a series on the chart
45
+ * @param series - Array of values to plot
46
+ * @param title - Plot title (optional)
47
+ * @param color - Plot color (optional)
48
+ * @param linewidth - Line width (optional)
49
+ * @param style - Plot style (optional)
50
+ * @returns Unique plot ID for this plot
51
+ */
52
+ export declare function plot(series: number[], title?: string, color?: string, linewidth?: number, style?: string, colors?: string[]): string;
53
+ /**
54
+ * Draw a horizontal line on the chart
55
+ * @param price - Y-axis value for the line
56
+ * @param title - Line title (optional)
57
+ * @param color - Line color (optional)
58
+ * @param linestyle - Line style (optional, default dashed as PineScript)
59
+ * @param linewidth - Line width (optional)
60
+ * @returns Unique hline ID
61
+ */
62
+ export declare function hline(price: number, title?: string, color?: string, linestyle?: string, linewidth?: number): string;
63
+ /**
64
+ * Get the active plots array (for testing purposes)
65
+ * @returns Array of active plots
66
+ * @internal
67
+ */
68
+ export declare function getActivePlots(): ReadonlyArray<ActivePlot>;
69
+ export {};
70
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/runtime/runtime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAiB,MAAM,YAAY,CAAC;AAShF,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;CACtB;AAOD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAKtD;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAKnC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,gBAAgB,GAAG,IAAI,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAEtD;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAMlC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAWjC;AAwCD;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAClB,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,MAAM,CAsCR;AAED;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CACnB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CA4BR;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,aAAa,CAAC,UAAU,CAAC,CAE1D"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * @fileoverview OakScriptJS Runtime - Context management and plot functions
3
+ * This module provides the global runtime context for indicator execution
4
+ * @module runtime/runtime
5
+ */
6
+ // Global context state
7
+ let context = null;
8
+ // Registered calculate function for recalculation
9
+ let calculateFn = null;
10
+ const activePlots = [];
11
+ // Counter for generating unique plot IDs
12
+ let plotCounter = 0;
13
+ /**
14
+ * Set the global OakScript context
15
+ * Must be called by host application before any indicator calculation
16
+ * @param ctx - The context object with chart and input adapters
17
+ */
18
+ export function setContext(ctx) {
19
+ context = ctx;
20
+ // Reset plot counter and clear active plots when context changes
21
+ plotCounter = 0;
22
+ clearPlots();
23
+ }
24
+ /**
25
+ * Clear the global context
26
+ * Call when detaching/removing an indicator
27
+ */
28
+ export function clearContext() {
29
+ clearPlots();
30
+ context = null;
31
+ calculateFn = null;
32
+ plotCounter = 0;
33
+ }
34
+ /**
35
+ * Get the current global context
36
+ * @returns The current context or null if not set
37
+ */
38
+ export function getContext() {
39
+ return context;
40
+ }
41
+ /**
42
+ * Register the calculate function for recalculation
43
+ * Indicators call this to enable automatic recalculation on input changes
44
+ * @param fn - The calculate function to register
45
+ */
46
+ export function registerCalculate(fn) {
47
+ calculateFn = fn;
48
+ }
49
+ /**
50
+ * Trigger recalculation of the current indicator
51
+ * Clears existing plots and re-invokes the registered calculate function
52
+ */
53
+ export function recalculate() {
54
+ if (calculateFn) {
55
+ clearPlots();
56
+ plotCounter = 0;
57
+ calculateFn();
58
+ }
59
+ }
60
+ /**
61
+ * Clear all active plots from the chart
62
+ * Called internally before recalculation
63
+ */
64
+ export function clearPlots() {
65
+ if (context) {
66
+ for (const plot of activePlots) {
67
+ try {
68
+ context.chart.removeSeries(plot.series);
69
+ }
70
+ catch {
71
+ // Ignore errors during cleanup
72
+ }
73
+ }
74
+ }
75
+ activePlots.length = 0;
76
+ }
77
+ /**
78
+ * Map plot style string to lightweight-charts series type
79
+ * @param style - Plot style string
80
+ * @returns Series type string
81
+ */
82
+ function getSeriesType(style) {
83
+ switch (style) {
84
+ case 'histogram':
85
+ case 'columns':
86
+ return 'histogram';
87
+ case 'area':
88
+ case 'areabr':
89
+ return 'area';
90
+ case 'circles':
91
+ case 'cross':
92
+ return 'line'; // Use line with markers
93
+ default:
94
+ return 'line';
95
+ }
96
+ }
97
+ /**
98
+ * Map line style string to numeric value
99
+ * @param style - Line style string
100
+ * @returns Numeric line style
101
+ */
102
+ function getLineStyle(style) {
103
+ switch (style) {
104
+ case 'dotted':
105
+ return 1;
106
+ case 'dashed':
107
+ return 2;
108
+ case 'solid':
109
+ default:
110
+ return 0;
111
+ }
112
+ }
113
+ /**
114
+ * Plot a series on the chart
115
+ * @param series - Array of values to plot
116
+ * @param title - Plot title (optional)
117
+ * @param color - Plot color (optional)
118
+ * @param linewidth - Line width (optional)
119
+ * @param style - Plot style (optional)
120
+ * @returns Unique plot ID for this plot
121
+ */
122
+ export function plot(series, title, color, linewidth, style, colors) {
123
+ if (!context) {
124
+ throw new Error('OakScript context not set. Call setContext() before plotting.');
125
+ }
126
+ const plotId = `plot_${plotCounter++}${title ? '_' + title.replace(/\s+/g, '_') : ''}`;
127
+ const seriesType = getSeriesType(style);
128
+ const options = {
129
+ color: color,
130
+ lineWidth: linewidth,
131
+ lineStyle: getLineStyle(style),
132
+ };
133
+ // Create series on chart
134
+ const seriesHandle = context.chart.addSeries(seriesType, options);
135
+ // Convert series data to time-value pairs
136
+ const data = [];
137
+ for (let index = 0; index < series.length; index++) {
138
+ const value = series[index];
139
+ const time = context.ohlcv.time[index];
140
+ if (time !== undefined && value !== undefined && !Number.isNaN(value)) {
141
+ const point = { time, value };
142
+ if (colors && colors[index]) {
143
+ point.color = colors[index];
144
+ }
145
+ data.push(point);
146
+ }
147
+ }
148
+ // Set the data
149
+ seriesHandle.setData(data);
150
+ // Track the plot for cleanup
151
+ activePlots.push({ id: plotId, series: seriesHandle });
152
+ return plotId;
153
+ }
154
+ /**
155
+ * Draw a horizontal line on the chart
156
+ * @param price - Y-axis value for the line
157
+ * @param title - Line title (optional)
158
+ * @param color - Line color (optional)
159
+ * @param linestyle - Line style (optional, default dashed as PineScript)
160
+ * @param linewidth - Line width (optional)
161
+ * @returns Unique hline ID
162
+ */
163
+ export function hline(price, title, color, linestyle, linewidth) {
164
+ if (!context) {
165
+ throw new Error('OakScript context not set. Call setContext() before creating hlines.');
166
+ }
167
+ const hlineId = `hline_${plotCounter++}${title ? '_' + title.replace(/\s+/g, '_') : ''}`;
168
+ const options = {
169
+ color: color,
170
+ lineWidth: linewidth,
171
+ lineStyle: getLineStyle(linestyle ?? 'dashed'),
172
+ };
173
+ // Create a line series for the hline
174
+ const seriesHandle = context.chart.addSeries('line', options);
175
+ // Create horizontal line data (constant value across all time points)
176
+ const data = context.ohlcv.time.map(time => ({
177
+ time: time,
178
+ value: price,
179
+ }));
180
+ seriesHandle.setData(data);
181
+ // Track the hline for cleanup
182
+ activePlots.push({ id: hlineId, series: seriesHandle });
183
+ return hlineId;
184
+ }
185
+ /**
186
+ * Get the active plots array (for testing purposes)
187
+ * @returns Array of active plots
188
+ * @internal
189
+ */
190
+ export function getActivePlots() {
191
+ return activePlots;
192
+ }
193
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/runtime/runtime.ts"],"names":[],"mappings":"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"}