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
package/src/plot.ts ADDED
@@ -0,0 +1,121 @@
1
+ /**
2
+ * @fileoverview Plot helper functions for indicator visualization
3
+ * These functions help format and prepare data for plotting.
4
+ * @module plot
5
+ */
6
+
7
+ /**
8
+ * Time value type (can be number timestamp or string date)
9
+ */
10
+ export type Time = number | string;
11
+
12
+ /**
13
+ * Time-value pair for chart data
14
+ */
15
+ export interface TimeValuePair {
16
+ /** Time (timestamp or date string) */
17
+ time: Time;
18
+ /** Value at this time point */
19
+ value: number;
20
+ }
21
+
22
+ /**
23
+ * Options for plot function
24
+ */
25
+ export interface PlotOptions {
26
+ /** Plot color */
27
+ color?: string;
28
+ /** Display title */
29
+ title?: string;
30
+ /** Line width (1-4) */
31
+ lineWidth?: number;
32
+ /** Line style */
33
+ lineStyle?: 'solid' | 'dashed' | 'dotted';
34
+ /** Offset from current bar */
35
+ offset?: number;
36
+ }
37
+
38
+ /**
39
+ * Prepare values for plotting by combining with time data
40
+ *
41
+ * @param values - Array of values to plot (null values create gaps)
42
+ * @param times - Array of time values corresponding to each value
43
+ * @param options - Plot options (color, title, lineWidth, etc.)
44
+ * @returns Array of time-value pairs ready for charting
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const smaValues = ta.sma(ctx.close, 14);
49
+ * const plotData = plot(smaValues, ctx.time, { color: '#2196F3', title: 'SMA' });
50
+ * // Returns: [{ time: 1000, value: 100.5 }, { time: 2000, value: 101.2 }, ...]
51
+ * ```
52
+ */
53
+ export function plot(
54
+ values: (number | null)[],
55
+ times: Time[],
56
+ options: PlotOptions = {}
57
+ ): TimeValuePair[] {
58
+ const result: TimeValuePair[] = [];
59
+ const offset = options.offset ?? 0;
60
+
61
+ for (let i = 0; i < values.length; i++) {
62
+ const value = values[i];
63
+ const timeIndex = i + offset;
64
+
65
+ // Skip null/undefined/NaN values (creates gaps in the chart)
66
+ if (value === null || value === undefined || Number.isNaN(value)) {
67
+ continue;
68
+ }
69
+
70
+ // Skip if time index is out of bounds
71
+ if (timeIndex < 0 || timeIndex >= times.length) {
72
+ continue;
73
+ }
74
+
75
+ const time = times[timeIndex];
76
+ if (time !== undefined) {
77
+ result.push({ time, value });
78
+ }
79
+ }
80
+
81
+ return result;
82
+ }
83
+
84
+ /**
85
+ * Plot result with metadata
86
+ */
87
+ export interface PlotResult {
88
+ /** Plot identifier */
89
+ id: string;
90
+ /** Time-value data pairs */
91
+ data: TimeValuePair[];
92
+ /** Plot options */
93
+ options: PlotOptions;
94
+ }
95
+
96
+ /**
97
+ * Create a named plot with data and options
98
+ *
99
+ * @param id - Unique identifier for this plot
100
+ * @param values - Array of values to plot
101
+ * @param times - Array of time values
102
+ * @param options - Plot options
103
+ * @returns PlotResult with id, data, and options
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * const smaPlot = createPlot('sma', smaValues, ctx.time, { color: '#2196F3' });
108
+ * ```
109
+ */
110
+ export function createPlot(
111
+ id: string,
112
+ values: (number | null)[],
113
+ times: Time[],
114
+ options: PlotOptions = {}
115
+ ): PlotResult {
116
+ return {
117
+ id,
118
+ data: plot(values, times, options),
119
+ options,
120
+ };
121
+ }
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Polyline namespace
3
+ * Functions for creating and manipulating polyline drawing objects.
4
+ *
5
+ * @remarks
6
+ * Polylines allow connecting multiple points with line segments, enabling complex chart drawings
7
+ * like trend channels, patterns, and custom shapes. This implementation focuses on basic
8
+ * polylines (straight lines) - curved polylines can be added in a future iteration.
9
+ *
10
+ * @version 6
11
+ */
12
+
13
+ import type { ChartPoint, Polyline, color } from '../types/index.js';
14
+ import { all as allDrawings, register, remove } from '../drawing/registry.js';
15
+
16
+ // Re-export the Polyline type for convenience
17
+ export type { Polyline };
18
+
19
+ // Internal counter for generating unique IDs
20
+ let polylineIdCounter = 0;
21
+
22
+ /**
23
+ * Generates a unique ID for a polyline
24
+ */
25
+ function generateId(): string {
26
+ return `polyline_${++polylineIdCounter}`;
27
+ }
28
+
29
+ /**
30
+ * Creates a new polyline connecting all points.
31
+ *
32
+ * @param points - Array of chart.point objects to connect
33
+ * @param curved - If true, use curved line segments (default: false, NOT YET SUPPORTED)
34
+ * @param closed - If true, connect first point to last point (default: false)
35
+ * @param xloc - X-coordinate mode: 'bar_index' or 'bar_time' (default: 'bar_index')
36
+ * @param line_color - Color of line segments (default: '#2196F3' - blue)
37
+ * @param fill_color - Fill color for closed polylines (default: null)
38
+ * @param line_style - Line style (default: 'solid')
39
+ * @param line_width - Line width in pixels (default: 1)
40
+ * @param force_overlay - Force display on main pane (default: false)
41
+ * @returns New Polyline object
42
+ *
43
+ * @remarks
44
+ * - The curved parameter is accepted but currently logs a warning as curved lines
45
+ * are not yet supported. Straight-line connections are used instead.
46
+ * - For meaningful polylines, provide at least 2 points.
47
+ * - Closed polylines can be filled with a color by setting fill_color.
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * import { chartPoint, polyline } from 'oakscriptjs';
52
+ *
53
+ * // Create points
54
+ * const points = [
55
+ * chartPoint.from_index(0, 100),
56
+ * chartPoint.from_index(10, 120),
57
+ * chartPoint.from_index(20, 110)
58
+ * ];
59
+ *
60
+ * // Create a basic polyline
61
+ * const myPolyline = polyline.new(points);
62
+ *
63
+ * // Create a closed polygon with fill
64
+ * const polygon = polyline.new(
65
+ * points,
66
+ * false, // curved
67
+ * true, // closed
68
+ * 'bar_index', // xloc
69
+ * '#FF5722', // line_color
70
+ * 'rgba(255, 87, 34, 0.3)' // fill_color
71
+ * );
72
+ * ```
73
+ */
74
+ export function new_polyline(
75
+ points: ChartPoint[],
76
+ curved: boolean = false,
77
+ closed: boolean = false,
78
+ xloc: 'bar_index' | 'bar_time' = 'bar_index',
79
+ line_color: color = '#2196F3',
80
+ fill_color: color | null = null,
81
+ line_style: 'solid' | 'dotted' | 'dashed' = 'solid',
82
+ line_width: number = 1,
83
+ force_overlay: boolean = false
84
+ ): Polyline {
85
+ // Warn about curved polylines not being supported yet
86
+ if (curved) {
87
+ console.warn(
88
+ 'polyline.new(): curved polylines are not yet supported. Using straight-line connections.'
89
+ );
90
+ }
91
+
92
+ // Validate line_width is positive
93
+ if (line_width < 1) {
94
+ console.warn('polyline.new(): line_width must be at least 1. Using 1.');
95
+ line_width = 1;
96
+ }
97
+
98
+ const polyline: Polyline = {
99
+ id: generateId(),
100
+ points: [...points], // Create a copy of the points array
101
+ curved,
102
+ closed,
103
+ xloc,
104
+ line_color,
105
+ fill_color,
106
+ line_style,
107
+ line_width,
108
+ force_overlay,
109
+ };
110
+
111
+ return register('polyline', polyline);
112
+ }
113
+
114
+ /**
115
+ * Deletes a polyline.
116
+ *
117
+ * @param id - Polyline object to delete
118
+ *
119
+ * @remarks
120
+ * Removes the polyline from `polyline.all()` (the drawing registry, see drawing/registry).
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * const myPolyline = polyline.new(points);
125
+ * polyline.delete(myPolyline);
126
+ * ```
127
+ */
128
+ export function delete_polyline(id: Polyline): void {
129
+ remove('polyline', id);
130
+ }
131
+
132
+ /**
133
+ * Gets all active polylines.
134
+ *
135
+ * @returns Array of all active polylines
136
+ *
137
+ * @remarks
138
+ * Returns a copy of the internal polylines array to prevent external modification.
139
+ *
140
+ * @example
141
+ * ```typescript
142
+ * console.log('Total polylines:', polyline.all.length);
143
+ *
144
+ * for (const p of polyline.all) {
145
+ * console.log('Polyline ID:', p.id, 'Points:', p.points.length);
146
+ * }
147
+ * ```
148
+ */
149
+ export function get_all(): readonly Polyline[] {
150
+ return allDrawings('polyline');
151
+ }
152
+
153
+ /**
154
+ * All live polylines, in creation order (PineScript `polyline.all`). A new array.
155
+ */
156
+ export function all(): Polyline[] {
157
+ return allDrawings('polyline');
158
+ }
159
+
160
+ /**
161
+ * Deletes all polylines.
162
+ *
163
+ * @remarks
164
+ * This is useful for resetting state, especially in tests.
165
+ * Not part of the PineScript API.
166
+ */
167
+ export function clear_all(): void {
168
+ for (const p of allDrawings('polyline')) remove('polyline', p);
169
+ }
170
+
171
+ /**
172
+ * Resets the polyline ID counter.
173
+ *
174
+ * @remarks
175
+ * This is useful for resetting state, especially in tests.
176
+ * Not part of the PineScript API.
177
+ */
178
+ export function reset_id_counter(): void {
179
+ polylineIdCounter = 0;
180
+ }
181
+
182
+ // Aliases to match PineScript API
183
+ export { new_polyline as new };
184
+ export { delete_polyline as delete };
@@ -0,0 +1,201 @@
1
+ /**
2
+ * @fileoverview Lightweight-charts v5 adapter
3
+ * Provides integration with lightweight-charts library
4
+ * @module runtime/adapters/LightweightChartsAdapter
5
+ */
6
+
7
+ import type { ChartAdapter, SeriesHandle, SeriesOptions } from '../types.js';
8
+
9
+ /**
10
+ * Minimal interface for lightweight-charts chart API
11
+ * Only includes methods used by this adapter
12
+ */
13
+ interface LightweightChart {
14
+ addSeries<T>(seriesDefinition: unknown, options?: unknown, paneIndex?: number): LightweightSeries<T>;
15
+ removeSeries(series: LightweightSeries<unknown>): void;
16
+ panes(): unknown[];
17
+ }
18
+
19
+ /**
20
+ * Minimal interface for lightweight-charts series
21
+ */
22
+ interface LightweightSeries<T> {
23
+ setData(data: T[]): void;
24
+ }
25
+
26
+ /**
27
+ * Data point format for lightweight-charts
28
+ */
29
+ interface TimeValueData {
30
+ time: number;
31
+ value: number;
32
+ color?: string;
33
+ }
34
+
35
+ /**
36
+ * The lightweight-charts v5 series definitions the adapter creates series with. Pass the library's own exports
37
+ * (`import { LineSeries, HistogramSeries } from 'lightweight-charts'`, or the whole module): OakScriptJS does not
38
+ * import lightweight-charts itself. `LineSeries` is required; the others are needed only for the series types used.
39
+ */
40
+ export interface LightweightSeriesDefinitions {
41
+ LineSeries: unknown;
42
+ HistogramSeries?: unknown;
43
+ AreaSeries?: unknown;
44
+ BaselineSeries?: unknown;
45
+ BarSeries?: unknown;
46
+ }
47
+
48
+ /**
49
+ * Adapter for lightweight-charts v5
50
+ * Translates OakScriptJS chart operations into lightweight-charts API calls
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * import { createChart, CandlestickSeries, LineSeries, HistogramSeries } from 'lightweight-charts';
55
+ *
56
+ * const chart = createChart(container);
57
+ * const candles = chart.addSeries(CandlestickSeries);
58
+ * const adapter = new LightweightChartsAdapter(chart, { LineSeries, HistogramSeries }, candles);
59
+ * ```
60
+ */
61
+ export class LightweightChartsAdapter implements ChartAdapter {
62
+ private chart: LightweightChart;
63
+ private definitions: LightweightSeriesDefinitions;
64
+ private mainSeries: SeriesHandle | undefined;
65
+ private paneCount: number = 0;
66
+
67
+ /**
68
+ * Create a new LightweightChartsAdapter
69
+ * @param chart - The lightweight-charts chart instance
70
+ * @param definitions - The lightweight-charts series definitions (`LineSeries`, `HistogramSeries`...)
71
+ * @param mainSeries - Optional main price series (candlestick/line series)
72
+ */
73
+ constructor(chart: unknown, definitions: LightweightSeriesDefinitions, mainSeries?: unknown) {
74
+ if (!definitions?.LineSeries) {
75
+ throw new Error(
76
+ 'LightweightChartsAdapter: pass the lightweight-charts series definitions, ' +
77
+ "e.g. new LightweightChartsAdapter(chart, { LineSeries, HistogramSeries }) with the imports from 'lightweight-charts'."
78
+ );
79
+ }
80
+ this.chart = chart as LightweightChart;
81
+ this.definitions = definitions;
82
+ if (mainSeries) {
83
+ this.mainSeries = this.wrapSeries(mainSeries as LightweightSeries<TimeValueData>);
84
+ }
85
+ }
86
+
87
+ /**
88
+ * Wrap a lightweight-charts series to implement SeriesHandle
89
+ * @param lwcSeries - The lightweight-charts series
90
+ * @returns SeriesHandle wrapper
91
+ */
92
+ private wrapSeries(lwcSeries: LightweightSeries<TimeValueData>): SeriesHandle {
93
+ return {
94
+ setData: (data: Array<{ time: number; value: number; color?: string }>) => {
95
+ lwcSeries.setData(data);
96
+ },
97
+ // Store reference for removal
98
+ _lwcSeries: lwcSeries,
99
+ } as SeriesHandle & { _lwcSeries: LightweightSeries<TimeValueData> };
100
+ }
101
+
102
+ /**
103
+ * Map series type string to lightweight-charts series definition
104
+ * @param type - Series type ('line', 'histogram', 'area', 'baseline', 'bar')
105
+ * @returns Lightweight-charts series definition
106
+ * @throws When the definition of that series type was not given to the constructor
107
+ */
108
+ private getSeriesDefinition(type: string): unknown {
109
+ const key = (
110
+ {
111
+ histogram: 'HistogramSeries',
112
+ area: 'AreaSeries',
113
+ baseline: 'BaselineSeries',
114
+ bar: 'BarSeries',
115
+ } as const
116
+ )[type as 'histogram' | 'area' | 'baseline' | 'bar'] ?? 'LineSeries';
117
+ const definition = this.definitions[key];
118
+ if (!definition) {
119
+ throw new Error(`LightweightChartsAdapter: a '${type}' series needs ${key}; pass it in the constructor definitions.`);
120
+ }
121
+ return definition;
122
+ }
123
+
124
+ /**
125
+ * Convert OakScriptJS series options to lightweight-charts options
126
+ * @param options - OakScriptJS series options
127
+ * @returns Lightweight-charts compatible options
128
+ */
129
+ private convertOptions(options?: SeriesOptions): Record<string, unknown> {
130
+ if (!options) {
131
+ return {};
132
+ }
133
+
134
+ const lwcOptions: Record<string, unknown> = {};
135
+
136
+ if (options.color) {
137
+ lwcOptions.color = options.color;
138
+ }
139
+
140
+ if (options.lineWidth !== undefined) {
141
+ lwcOptions.lineWidth = options.lineWidth;
142
+ }
143
+
144
+ if (options.lineStyle !== undefined) {
145
+ lwcOptions.lineStyle = options.lineStyle;
146
+ }
147
+
148
+ if (options.priceScaleId) {
149
+ lwcOptions.priceScaleId = options.priceScaleId;
150
+ }
151
+
152
+ return lwcOptions;
153
+ }
154
+
155
+ /**
156
+ * Add a new series to the chart
157
+ * @param type - Series type ('line', 'histogram', 'area', 'baseline', 'bar')
158
+ * @param options - Series options (`pane` is the lightweight-charts pane index)
159
+ * @returns SeriesHandle for the new series
160
+ */
161
+ addSeries(type: string, options?: SeriesOptions): SeriesHandle {
162
+ const seriesDefinition = this.getSeriesDefinition(type);
163
+ const lwcOptions = this.convertOptions(options);
164
+
165
+ const lwcSeries =
166
+ options?.pane !== undefined
167
+ ? this.chart.addSeries<TimeValueData>(seriesDefinition, lwcOptions, options.pane)
168
+ : this.chart.addSeries<TimeValueData>(seriesDefinition, lwcOptions);
169
+ return this.wrapSeries(lwcSeries);
170
+ }
171
+
172
+ /**
173
+ * Remove a series from the chart
174
+ * @param series - SeriesHandle to remove
175
+ */
176
+ removeSeries(series: SeriesHandle): void {
177
+ const wrappedSeries = series as SeriesHandle & { _lwcSeries?: LightweightSeries<unknown> };
178
+ if (wrappedSeries._lwcSeries) {
179
+ this.chart.removeSeries(wrappedSeries._lwcSeries);
180
+ }
181
+ }
182
+
183
+ /**
184
+ * Get the main price series
185
+ * @returns Main series handle or undefined
186
+ */
187
+ getMainSeries(): SeriesHandle | undefined {
188
+ return this.mainSeries;
189
+ }
190
+
191
+ /**
192
+ * Create a new pane (if supported by the chart configuration)
193
+ * @returns Index of the new pane
194
+ */
195
+ createPane(): number {
196
+ // Lightweight-charts v5 doesn't have a direct createPane API
197
+ // Panes are typically created via chart configuration
198
+ // This returns an incremented pane count for reference
199
+ return ++this.paneCount;
200
+ }
201
+ }
@@ -0,0 +1,132 @@
1
+ /**
2
+ * @fileoverview Simple in-memory input adapter for demos and testing
3
+ * Stores input values in memory and provides change notification
4
+ * @module runtime/adapters/SimpleInputAdapter
5
+ */
6
+
7
+ import type { InputAdapter, InputConfig } from '../types.js';
8
+
9
+ /**
10
+ * Simple in-memory input adapter
11
+ * Stores input configurations and values in memory
12
+ * Useful for demos, testing, and simple applications
13
+ */
14
+ export class SimpleInputAdapter implements InputAdapter {
15
+ private inputs: Map<string, { config: InputConfig; value: unknown }> = new Map();
16
+ private changeCallbacks: Array<(id: string, value: unknown) => void> = [];
17
+
18
+ /**
19
+ * Register an input configuration
20
+ * If already registered, returns current value without modifying config
21
+ * @param config - Input configuration
22
+ * @returns Current value (defval on first registration)
23
+ */
24
+ registerInput(config: InputConfig): unknown {
25
+ if (!this.inputs.has(config.id)) {
26
+ this.inputs.set(config.id, { config, value: config.defval });
27
+ }
28
+ return this.inputs.get(config.id)!.value;
29
+ }
30
+
31
+ /**
32
+ * Get current value of an input
33
+ * @param id - Input identifier
34
+ * @returns Current value or undefined if not registered
35
+ */
36
+ getValue(id: string): unknown {
37
+ return this.inputs.get(id)?.value;
38
+ }
39
+
40
+ /**
41
+ * Set value of an input with validation
42
+ * Validates against config constraints (min/max/step for numerics, options for strings)
43
+ * @param id - Input identifier
44
+ * @param value - New value
45
+ */
46
+ setValue(id: string, value: unknown): void {
47
+ const input = this.inputs.get(id);
48
+ if (!input) {
49
+ return;
50
+ }
51
+
52
+ const { config } = input;
53
+ let validatedValue = value;
54
+
55
+ // Validate numeric inputs
56
+ if ((config.type === 'int' || config.type === 'float') && typeof value === 'number') {
57
+ // Apply min constraint
58
+ if (config.min !== undefined && value < config.min) {
59
+ validatedValue = config.min;
60
+ }
61
+ // Apply max constraint
62
+ if (config.max !== undefined && value > config.max) {
63
+ validatedValue = config.max;
64
+ }
65
+ // Round to step for int type
66
+ if (config.type === 'int') {
67
+ validatedValue = Math.floor(validatedValue as number);
68
+ }
69
+ }
70
+
71
+ // Validate string, timeframe and session inputs with options
72
+ if (
73
+ (config.type === 'string' || config.type === 'timeframe' || config.type === 'session') &&
74
+ config.options &&
75
+ typeof value === 'string'
76
+ ) {
77
+ if (!config.options.includes(value)) {
78
+ // Keep current value if invalid option
79
+ return;
80
+ }
81
+ }
82
+
83
+ // Validate source inputs
84
+ if (config.type === 'source' && config.options && typeof value === 'string') {
85
+ if (!config.options.includes(value)) {
86
+ return;
87
+ }
88
+ }
89
+
90
+ // Update value
91
+ input.value = validatedValue;
92
+
93
+ // Notify callbacks
94
+ this.changeCallbacks.forEach(cb => cb(id, validatedValue));
95
+ }
96
+
97
+ /**
98
+ * Register a callback for input value changes
99
+ * @param callback - Function to call when any input value changes
100
+ */
101
+ onInputChange(callback: (id: string, value: unknown) => void): void {
102
+ this.changeCallbacks.push(callback);
103
+ }
104
+
105
+ /**
106
+ * Get all registered inputs (for UI rendering)
107
+ * @returns Map of input IDs to their configs and values
108
+ */
109
+ getAllInputs(): Map<string, { config: InputConfig; value: unknown }> {
110
+ return new Map(this.inputs);
111
+ }
112
+
113
+ /**
114
+ * Clear all registered inputs
115
+ * Useful for testing or resetting state
116
+ */
117
+ clear(): void {
118
+ this.inputs.clear();
119
+ this.changeCallbacks = [];
120
+ }
121
+
122
+ /**
123
+ * Remove a specific change callback
124
+ * @param callback - The callback to remove
125
+ */
126
+ removeChangeCallback(callback: (id: string, value: unknown) => void): void {
127
+ const index = this.changeCallbacks.indexOf(callback);
128
+ if (index !== -1) {
129
+ this.changeCallbacks.splice(index, 1);
130
+ }
131
+ }
132
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @fileoverview OakScriptJS Runtime Module
3
+ * Provides global context management, plot functions, and input handling
4
+ * for indicators that draw through a ChartAdapter
5
+ * @module runtime
6
+ */
7
+
8
+ // Core runtime exports
9
+ export {
10
+ setContext,
11
+ clearContext,
12
+ getContext,
13
+ registerCalculate,
14
+ recalculate,
15
+ plot,
16
+ hline,
17
+ clearPlots,
18
+ getActivePlots,
19
+ } from './runtime.js';
20
+
21
+ // Input function exports
22
+ export {
23
+ input_int,
24
+ input_float,
25
+ input_bool,
26
+ input_string,
27
+ input_source,
28
+ input_timeframe,
29
+ input_session,
30
+ input_time,
31
+ enableAutoRecalculate,
32
+ disableAutoRecalculate,
33
+ resetInputs,
34
+ } from './inputs.js';
35
+
36
+ // Type exports
37
+ export type {
38
+ OakScriptContext,
39
+ ChartAdapter,
40
+ InputAdapter,
41
+ SeriesHandle,
42
+ SeriesOptions,
43
+ InputConfig,
44
+ InputOptions,
45
+ OhlcvData,
46
+ PlotConfig,
47
+ } from './types.js';
48
+
49
+ // Adapter exports
50
+ export { LightweightChartsAdapter } from './adapters/LightweightChartsAdapter.js';
51
+ export type { LightweightSeriesDefinitions } from './adapters/LightweightChartsAdapter.js';
52
+ export { SimpleInputAdapter } from './adapters/SimpleInputAdapter.js';