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,560 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var series_exports = {};
30
+ __export(series_exports, {
31
+ BarData: () => BarData,
32
+ Series: () => Series
33
+ });
34
+ module.exports = __toCommonJS(series_exports);
35
+ var compare = __toESM(require("../compare/index.js"), 1);
36
+ class BarData {
37
+ _bars;
38
+ _version = 0;
39
+ /**
40
+ * Create a new BarData wrapper
41
+ * @param bars - Initial bar data (defaults to empty array)
42
+ */
43
+ constructor(bars = []) {
44
+ this._bars = bars;
45
+ }
46
+ /**
47
+ * Get the current version number
48
+ * Version increments whenever data is mutated
49
+ */
50
+ get version() {
51
+ return this._version;
52
+ }
53
+ /**
54
+ * Get the underlying bar array
55
+ * Note: Direct mutations to this array will NOT increment version
56
+ * Use the provided mutation methods instead
57
+ */
58
+ get bars() {
59
+ return this._bars;
60
+ }
61
+ /**
62
+ * Get the number of bars
63
+ */
64
+ get length() {
65
+ return this._bars.length;
66
+ }
67
+ /**
68
+ * Add a new bar to the end
69
+ * @param bar - Bar to add
70
+ */
71
+ push(bar) {
72
+ this._bars.push(bar);
73
+ this._version++;
74
+ }
75
+ /**
76
+ * Remove and return the last bar
77
+ * @returns The removed bar, or undefined if empty
78
+ */
79
+ pop() {
80
+ const bar = this._bars.pop();
81
+ if (bar !== void 0) {
82
+ this._version++;
83
+ }
84
+ return bar;
85
+ }
86
+ /**
87
+ * Replace a bar at a specific index
88
+ * @param index - Index to update
89
+ * @param bar - New bar data
90
+ */
91
+ set(index, bar) {
92
+ if (index >= 0 && index < this._bars.length) {
93
+ this._bars[index] = bar;
94
+ this._version++;
95
+ }
96
+ }
97
+ /**
98
+ * Update the last bar (useful for real-time/streaming updates)
99
+ * @param bar - New bar data
100
+ */
101
+ updateLast(bar) {
102
+ if (this._bars.length > 0) {
103
+ this._bars[this._bars.length - 1] = bar;
104
+ this._version++;
105
+ }
106
+ }
107
+ /**
108
+ * Replace all bars with new data
109
+ * @param bars - New bar array
110
+ */
111
+ setAll(bars) {
112
+ this._bars = bars;
113
+ this._version++;
114
+ }
115
+ /**
116
+ * Manually increment version (for advanced use cases)
117
+ * Call this after direct mutations to the bars array
118
+ */
119
+ invalidate() {
120
+ this._version++;
121
+ }
122
+ /**
123
+ * Get a bar at a specific index
124
+ * @param index - Bar index
125
+ * @returns Bar at that index, or undefined
126
+ */
127
+ at(index) {
128
+ return this._bars[index];
129
+ }
130
+ /**
131
+ * Create a BarData from an existing Bar array
132
+ * @param bars - Bar array
133
+ * @returns New BarData instance
134
+ */
135
+ static from(bars) {
136
+ return new BarData(bars);
137
+ }
138
+ }
139
+ class Series {
140
+ extractor;
141
+ dataSource;
142
+ cached = null;
143
+ cachedVersion = -1;
144
+ /**
145
+ * Create a new Series
146
+ *
147
+ * @param data - Bar data (Bar[] or BarData)
148
+ * @param extractor - Function to extract/compute value for each bar
149
+ */
150
+ constructor(data, extractor) {
151
+ this.dataSource = data instanceof BarData ? data : new BarData(data);
152
+ this.extractor = extractor;
153
+ }
154
+ /**
155
+ * Get the underlying bar data
156
+ * @returns Bar array
157
+ */
158
+ get bars() {
159
+ return this.dataSource.bars;
160
+ }
161
+ /**
162
+ * Get the underlying BarData source
163
+ * @returns BarData instance
164
+ */
165
+ get barData() {
166
+ return this.dataSource;
167
+ }
168
+ // ============================================
169
+ // Static Factory Methods
170
+ // ============================================
171
+ /**
172
+ * Create Series from bar data by extracting a specific field
173
+ * @param bars - Bar data (Bar[] or BarData)
174
+ * @param field - Field to extract ('open', 'high', 'low', 'close', 'volume')
175
+ * @returns Series with extracted field values
176
+ */
177
+ static fromBars(bars, field) {
178
+ return new Series(bars, (bar) => bar[field] ?? NaN);
179
+ }
180
+ /**
181
+ * Create a constant series (same value for all bars)
182
+ * @param bars - Bar data (Bar[] or BarData)
183
+ * @param value - Constant value
184
+ * @returns Series with constant value
185
+ */
186
+ static constant(bars, value) {
187
+ return new Series(bars, () => value);
188
+ }
189
+ /**
190
+ * Create series from array of values
191
+ * @param bars - Bar data (Bar[] or BarData) for time alignment
192
+ * @param values - Array of values
193
+ * @returns Series
194
+ * @throws When read on other bars with a different length than `values` (e.g. a series computed on the
195
+ * chart bars and read inside a `request.security` expression, which runs on the higher-timeframe bars)
196
+ */
197
+ static fromArray(bars, values) {
198
+ const origin = bars instanceof BarData ? bars.bars : bars;
199
+ return new Series(bars, (_bar, i, data) => {
200
+ if (data !== origin && data.length !== values.length) {
201
+ throw new Error(
202
+ `Series values were computed on other bars (${values.length} values, ${data.length} bars). Inside request.security(), compute the series inside the expression, e.g. () => ta.ema(close, 10).`
203
+ );
204
+ }
205
+ return values[i] ?? NaN;
206
+ });
207
+ }
208
+ // ============================================
209
+ // Arithmetic Operations
210
+ // ============================================
211
+ /**
212
+ * Add two series or a series and a number
213
+ * @param other - Series or number to add
214
+ * @returns New Series representing the sum
215
+ */
216
+ add(other) {
217
+ return new Series(this.dataSource, (bar, i, data) => {
218
+ const a = this.extractor(bar, i, data);
219
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
220
+ return a + b;
221
+ });
222
+ }
223
+ /**
224
+ * Subtract two series or subtract a number from a series
225
+ * @param other - Series or number to subtract
226
+ * @returns New Series representing the difference
227
+ */
228
+ sub(other) {
229
+ return new Series(this.dataSource, (bar, i, data) => {
230
+ const a = this.extractor(bar, i, data);
231
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
232
+ return a - b;
233
+ });
234
+ }
235
+ /**
236
+ * Multiply two series or a series by a number
237
+ * @param other - Series or number to multiply
238
+ * @returns New Series representing the product
239
+ */
240
+ mul(other) {
241
+ return new Series(this.dataSource, (bar, i, data) => {
242
+ const a = this.extractor(bar, i, data);
243
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
244
+ return a * b;
245
+ });
246
+ }
247
+ /**
248
+ * Raise the series to a power (PineScript math.pow on a series)
249
+ * @param exponent - Series or number exponent
250
+ * @returns New Series representing base ** exponent
251
+ */
252
+ pow(exponent) {
253
+ return new Series(this.dataSource, (bar, i, data) => {
254
+ const a = this.extractor(bar, i, data);
255
+ const b = typeof exponent === "number" ? exponent : exponent.extractor(bar, i, data);
256
+ return Math.pow(a, b);
257
+ });
258
+ }
259
+ /**
260
+ * Divide two series or a series by a number
261
+ * @param other - Series or number to divide by
262
+ * @returns New Series representing the quotient
263
+ */
264
+ div(other) {
265
+ return new Series(this.dataSource, (bar, i, data) => {
266
+ const a = this.extractor(bar, i, data);
267
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
268
+ return a / b;
269
+ });
270
+ }
271
+ /**
272
+ * Modulo operation
273
+ * @param other - Series or number for modulo
274
+ * @returns New Series representing the remainder
275
+ */
276
+ mod(other) {
277
+ return new Series(this.dataSource, (bar, i, data) => {
278
+ const a = this.extractor(bar, i, data);
279
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
280
+ return b !== 0 ? a % b : NaN;
281
+ });
282
+ }
283
+ /**
284
+ * Negation
285
+ * @returns New Series with negated values
286
+ */
287
+ neg() {
288
+ return new Series(this.dataSource, (bar, i, data) => {
289
+ return -this.extractor(bar, i, data);
290
+ });
291
+ }
292
+ // ============================================
293
+ // Comparison Operations (PineScript operators: tolerance 1e-10, false with na; see src/compare)
294
+ // ============================================
295
+ /**
296
+ * Greater than comparison
297
+ * @param other - Series or number to compare
298
+ * @returns New Series with 1 where true, 0 where false
299
+ */
300
+ gt(other) {
301
+ return new Series(this.dataSource, (bar, i, data) => {
302
+ const a = this.extractor(bar, i, data);
303
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
304
+ return compare.gt(a, b) ? 1 : 0;
305
+ });
306
+ }
307
+ /**
308
+ * Greater than or equal comparison
309
+ * @param other - Series or number to compare
310
+ * @returns New Series with 1 where true, 0 where false
311
+ */
312
+ gte(other) {
313
+ return new Series(this.dataSource, (bar, i, data) => {
314
+ const a = this.extractor(bar, i, data);
315
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
316
+ return compare.ge(a, b) ? 1 : 0;
317
+ });
318
+ }
319
+ /**
320
+ * Less than comparison
321
+ * @param other - Series or number to compare
322
+ * @returns New Series with 1 where true, 0 where false
323
+ */
324
+ lt(other) {
325
+ return new Series(this.dataSource, (bar, i, data) => {
326
+ const a = this.extractor(bar, i, data);
327
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
328
+ return compare.lt(a, b) ? 1 : 0;
329
+ });
330
+ }
331
+ /**
332
+ * Less than or equal comparison
333
+ * @param other - Series or number to compare
334
+ * @returns New Series with 1 where true, 0 where false
335
+ */
336
+ lte(other) {
337
+ return new Series(this.dataSource, (bar, i, data) => {
338
+ const a = this.extractor(bar, i, data);
339
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
340
+ return compare.le(a, b) ? 1 : 0;
341
+ });
342
+ }
343
+ /**
344
+ * Equality comparison
345
+ * @param other - Series or number to compare
346
+ * @returns New Series with 1 where true, 0 where false
347
+ */
348
+ eq(other) {
349
+ return new Series(this.dataSource, (bar, i, data) => {
350
+ const a = this.extractor(bar, i, data);
351
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
352
+ return compare.eq(a, b) ? 1 : 0;
353
+ });
354
+ }
355
+ /**
356
+ * Not equal comparison
357
+ * @param other - Series or number to compare
358
+ * @returns New Series with 1 where true, 0 where false
359
+ */
360
+ neq(other) {
361
+ return new Series(this.dataSource, (bar, i, data) => {
362
+ const a = this.extractor(bar, i, data);
363
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
364
+ return compare.ne(a, b) ? 1 : 0;
365
+ });
366
+ }
367
+ // ============================================
368
+ // Logical Operations (for boolean series)
369
+ // ============================================
370
+ /**
371
+ * Logical AND
372
+ * @param other - Series or number (truthy/falsy)
373
+ * @returns New Series with 1 where both true, 0 otherwise
374
+ */
375
+ and(other) {
376
+ return new Series(this.dataSource, (bar, i, data) => {
377
+ const a = this.extractor(bar, i, data);
378
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
379
+ return a && b ? 1 : 0;
380
+ });
381
+ }
382
+ /**
383
+ * Logical OR
384
+ * @param other - Series or number (truthy/falsy)
385
+ * @returns New Series with 1 where either true, 0 otherwise
386
+ */
387
+ or(other) {
388
+ return new Series(this.dataSource, (bar, i, data) => {
389
+ const a = this.extractor(bar, i, data);
390
+ const b = typeof other === "number" ? other : other.extractor(bar, i, data);
391
+ return a || b ? 1 : 0;
392
+ });
393
+ }
394
+ /**
395
+ * Logical NOT
396
+ * @returns New Series with inverted boolean values
397
+ */
398
+ not() {
399
+ return new Series(this.dataSource, (bar, i, data) => {
400
+ const a = this.extractor(bar, i, data);
401
+ return !a ? 1 : 0;
402
+ });
403
+ }
404
+ // ============================================
405
+ // Conditional Selection
406
+ // ============================================
407
+ /**
408
+ * Bar-by-bar conditional selection (ternary operator for Series)
409
+ * Uses this Series as the condition (truthy = nonzero, falsy = zero/NaN)
410
+ *
411
+ * @param trueValue - Value or Series to use when condition is truthy
412
+ * @param falseValue - Value or Series to use when condition is falsy
413
+ * @returns New Series with bar-by-bar selected values
414
+ *
415
+ * @example
416
+ * ```typescript
417
+ * // PineScript: result = condition ? trueVal : falseVal
418
+ * const result = condition.iff(trueVal, falseVal);
419
+ *
420
+ * // Example: RSI formula uses ternary for edge cases
421
+ * // rsi = down == 0 ? 100 : up == 0 ? 0 : formula
422
+ * const rsi = down.eq(0).iff(100, up.eq(0).iff(0, formula));
423
+ * ```
424
+ */
425
+ iff(trueValue, falseValue) {
426
+ return new Series(this.dataSource, (bar, i, data) => {
427
+ const condition = this.extractor(bar, i, data);
428
+ const isTruthy = condition !== 0 && !Number.isNaN(condition);
429
+ if (isTruthy) {
430
+ return typeof trueValue === "number" ? trueValue : trueValue.extractor(bar, i, data);
431
+ } else {
432
+ return typeof falseValue === "number" ? falseValue : falseValue.extractor(bar, i, data);
433
+ }
434
+ });
435
+ }
436
+ // ============================================
437
+ // Offset/History
438
+ // ============================================
439
+ /**
440
+ * Access previous bars (like close[1] in PineScript)
441
+ * @param offset - Number of bars back (0 or more)
442
+ * @returns New Series with offset values
443
+ * @throws RangeError when `offset` is negative
444
+ */
445
+ offset(offset) {
446
+ if (offset < 0) throw new RangeError(`Series.offset(${offset}): the offset cannot be negative (it would read a future bar).`);
447
+ return new Series(this.dataSource, (_bar, i, data) => {
448
+ const targetIndex = i - offset;
449
+ if (targetIndex < 0 || targetIndex >= data.length) {
450
+ return NaN;
451
+ }
452
+ return this.extractor(data[targetIndex], targetIndex, data);
453
+ });
454
+ }
455
+ // ============================================
456
+ // Computation & Access
457
+ // ============================================
458
+ /**
459
+ * Compute all values for the series
460
+ *
461
+ * Now includes automatic cache invalidation:
462
+ * - Checks if dataSource version has changed since cache was computed
463
+ * - Recomputes if version mismatch detected
464
+ * - Stores version when cache is created
465
+ *
466
+ * @returns Array of computed values
467
+ */
468
+ toArray() {
469
+ if (this.cached !== null && this.cachedVersion === this.dataSource.version) {
470
+ return this.cached;
471
+ }
472
+ const bars = this.dataSource.bars;
473
+ this.cached = bars.map((bar, i) => this.extractor(bar, i, bars));
474
+ this.cachedVersion = this.dataSource.version;
475
+ return this.cached;
476
+ }
477
+ /**
478
+ * Materialize this Series by eagerly computing values and breaking closure chain
479
+ *
480
+ * This method addresses the closure chain memory leak issue:
481
+ * - Computes all values immediately
482
+ * - Creates a new Series that stores values directly
483
+ * - Breaks references to parent Series objects
484
+ * - Useful for complex expressions to free intermediate Series memory
485
+ *
486
+ * @example
487
+ * ```typescript
488
+ * // Without materialize: keeps a, b, c, d in memory via closures
489
+ * const result = a.add(b).mul(c).div(d).sub(e);
490
+ *
491
+ * // With materialize: breaks chain, frees a, b, c memory
492
+ * const result = a.add(b).mul(c).materialize().div(d).sub(e);
493
+ * ```
494
+ *
495
+ * @returns New Series with computed values and no closure dependencies
496
+ */
497
+ materialize() {
498
+ const values = this.toArray();
499
+ const valuesCopy = [...values];
500
+ return Series.fromArray(this.dataSource, valuesCopy);
501
+ }
502
+ /**
503
+ * Invalidate cache (when data changes)
504
+ *
505
+ * Note: With BarData versioning, manual invalidation is rarely needed.
506
+ * The cache is automatically invalidated when the underlying BarData changes.
507
+ * This method is kept for backward compatibility and advanced use cases.
508
+ *
509
+ * @internal
510
+ */
511
+ _invalidate() {
512
+ this.cached = null;
513
+ this.cachedVersion = -1;
514
+ }
515
+ /**
516
+ * Compute all values (alias for toArray)
517
+ * @returns Array of computed values
518
+ * @internal
519
+ */
520
+ _compute() {
521
+ return this.toArray();
522
+ }
523
+ /**
524
+ * Get value at specific index
525
+ * @param index - Bar index
526
+ * @returns Value at that index
527
+ */
528
+ get(index) {
529
+ const values = this.toArray();
530
+ return values[index] ?? NaN;
531
+ }
532
+ /**
533
+ * Get the last value (most recent bar)
534
+ * @returns Most recent value
535
+ */
536
+ last() {
537
+ const values = this.toArray();
538
+ return values[values.length - 1] ?? NaN;
539
+ }
540
+ /**
541
+ * Get number of values
542
+ * @returns Length of series
543
+ */
544
+ length() {
545
+ return this.dataSource.length;
546
+ }
547
+ /**
548
+ * Convert series to time-value pairs for charting
549
+ * @returns Array of { time, value } objects
550
+ */
551
+ toTimeValuePairs() {
552
+ const values = this.toArray();
553
+ const bars = this.dataSource.bars;
554
+ return bars.map((bar, i) => ({
555
+ time: bar.time,
556
+ value: values[i]
557
+ })).filter((point) => !Number.isNaN(point.value));
558
+ }
559
+ }
560
+ //# sourceMappingURL=series.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/runtime/series.ts"],
4
+ "sourcesContent": ["/**\n * @fileoverview Simplified Series class for lazy time-series computation\n * Represents a time-series of values with lazy evaluation\n * @module runtime/series\n */\n\nimport * as compare from '../compare/index.js';\nimport type { Bar } from '../types/index.js';\n\n/**\n * Function that computes a value for each bar\n */\nexport type SeriesExtractor = (bar: Bar, index: number, data: Bar[]) => number;\n\n/**\n * BarData - Versioned wrapper around Bar[] array for cache invalidation\n * \n * This class wraps a Bar[] array and tracks a version number that increments\n * whenever the data is mutated. Series objects reference this to detect when\n * their cached values need to be recomputed.\n * \n * @example\n * ```typescript\n * const barData = new BarData(bars);\n * const close = Series.fromBars(barData, 'close');\n * const values1 = close.toArray(); // Computes and caches\n * \n * barData.push(newBar); // Increments version\n * const values2 = close.toArray(); // Detects stale cache, recomputes\n * ```\n */\nexport class BarData {\n private _bars: Bar[];\n private _version: number = 0;\n\n /**\n * Create a new BarData wrapper\n * @param bars - Initial bar data (defaults to empty array)\n */\n constructor(bars: Bar[] = []) {\n this._bars = bars;\n }\n\n /**\n * Get the current version number\n * Version increments whenever data is mutated\n */\n get version(): number {\n return this._version;\n }\n\n /**\n * Get the underlying bar array\n * Note: Direct mutations to this array will NOT increment version\n * Use the provided mutation methods instead\n */\n get bars(): Bar[] {\n return this._bars;\n }\n\n /**\n * Get the number of bars\n */\n get length(): number {\n return this._bars.length;\n }\n\n /**\n * Add a new bar to the end\n * @param bar - Bar to add\n */\n push(bar: Bar): void {\n this._bars.push(bar);\n this._version++;\n }\n\n /**\n * Remove and return the last bar\n * @returns The removed bar, or undefined if empty\n */\n pop(): Bar | undefined {\n const bar = this._bars.pop();\n if (bar !== undefined) {\n this._version++;\n }\n return bar;\n }\n\n /**\n * Replace a bar at a specific index\n * @param index - Index to update\n * @param bar - New bar data\n */\n set(index: number, bar: Bar): void {\n if (index >= 0 && index < this._bars.length) {\n this._bars[index] = bar;\n this._version++;\n }\n }\n\n /**\n * Update the last bar (useful for real-time/streaming updates)\n * @param bar - New bar data\n */\n updateLast(bar: Bar): void {\n if (this._bars.length > 0) {\n this._bars[this._bars.length - 1] = bar;\n this._version++;\n }\n }\n\n /**\n * Replace all bars with new data\n * @param bars - New bar array\n */\n setAll(bars: Bar[]): void {\n this._bars = bars;\n this._version++;\n }\n\n /**\n * Manually increment version (for advanced use cases)\n * Call this after direct mutations to the bars array\n */\n invalidate(): void {\n this._version++;\n }\n\n /**\n * Get a bar at a specific index\n * @param index - Bar index\n * @returns Bar at that index, or undefined\n */\n at(index: number): Bar | undefined {\n return this._bars[index];\n }\n\n /**\n * Create a BarData from an existing Bar array\n * @param bars - Bar array\n * @returns New BarData instance\n */\n static from(bars: Bar[]): BarData {\n return new BarData(bars);\n }\n}\n\n/**\n * Series - represents a time-series of values with lazy evaluation\n *\n * Series are lazy - they don't compute values until needed.\n * Operations on Series return new Series with composed extractors.\n *\n * Now supports automatic cache invalidation via BarData versioning\n * and memory-efficient closure chain breaking via materialize().\n *\n * @example\n * ```typescript\n * // Basic usage (backward compatible)\n * const close = Series.fromBars(bars, 'close');\n * const open = Series.fromBars(bars, 'open');\n * const range = close.sub(open); // Creates new Series, doesn't compute yet\n * const values = range.toArray(); // Now computes for all bars\n * \n * // With automatic cache invalidation\n * const barData = new BarData(bars);\n * const close = Series.fromBars(barData, 'close');\n * const values1 = close.toArray(); // Computes and caches\n * barData.push(newBar); // Version increments\n * const values2 = close.toArray(); // Detects stale cache, recomputes\n * \n * // Breaking closure chains for memory efficiency\n * const complex = a.add(b).mul(c).div(d).sub(e);\n * const materialized = complex.materialize(); // Breaks closure chain\n * ```\n */\nexport class Series {\n private extractor: SeriesExtractor;\n private dataSource: BarData;\n private cached: number[] | null = null;\n private cachedVersion: number = -1;\n\n /**\n * Create a new Series\n *\n * @param data - Bar data (Bar[] or BarData)\n * @param extractor - Function to extract/compute value for each bar\n */\n constructor(data: Bar[] | BarData, extractor: SeriesExtractor) {\n // Support both Bar[] and BarData for backward compatibility\n this.dataSource = data instanceof BarData ? data : new BarData(data);\n this.extractor = extractor;\n }\n\n /**\n * Get the underlying bar data\n * @returns Bar array\n */\n get bars(): Bar[] {\n return this.dataSource.bars;\n }\n\n /**\n * Get the underlying BarData source\n * @returns BarData instance\n */\n get barData(): BarData {\n return this.dataSource;\n }\n\n // ============================================\n // Static Factory Methods\n // ============================================\n\n /**\n * Create Series from bar data by extracting a specific field\n * @param bars - Bar data (Bar[] or BarData)\n * @param field - Field to extract ('open', 'high', 'low', 'close', 'volume')\n * @returns Series with extracted field values\n */\n static fromBars(bars: Bar[] | BarData, field: 'open' | 'high' | 'low' | 'close' | 'volume'): Series {\n return new Series(bars, (bar) => bar[field] ?? NaN);\n }\n\n /**\n * Create a constant series (same value for all bars)\n * @param bars - Bar data (Bar[] or BarData)\n * @param value - Constant value\n * @returns Series with constant value\n */\n static constant(bars: Bar[] | BarData, value: number): Series {\n return new Series(bars, () => value);\n }\n\n /**\n * Create series from array of values\n * @param bars - Bar data (Bar[] or BarData) for time alignment\n * @param values - Array of values\n * @returns Series\n * @throws When read on other bars with a different length than `values` (e.g. a series computed on the\n * chart bars and read inside a `request.security` expression, which runs on the higher-timeframe bars)\n */\n static fromArray(bars: Bar[] | BarData, values: number[]): Series {\n const origin = bars instanceof BarData ? bars.bars : bars;\n return new Series(bars, (_bar, i, data) => {\n if (data !== origin && data.length !== values.length) {\n throw new Error(\n `Series values were computed on other bars (${values.length} values, ${data.length} bars). ` +\n 'Inside request.security(), compute the series inside the expression, e.g. () => ta.ema(close, 10).'\n );\n }\n return values[i] ?? NaN;\n });\n }\n\n // ============================================\n // Arithmetic Operations\n // ============================================\n\n /**\n * Add two series or a series and a number\n * @param other - Series or number to add\n * @returns New Series representing the sum\n */\n add(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a + b;\n });\n }\n\n /**\n * Subtract two series or subtract a number from a series\n * @param other - Series or number to subtract\n * @returns New Series representing the difference\n */\n sub(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a - b;\n });\n }\n\n /**\n * Multiply two series or a series by a number\n * @param other - Series or number to multiply\n * @returns New Series representing the product\n */\n mul(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a * b;\n });\n }\n\n /**\n * Raise the series to a power (PineScript math.pow on a series)\n * @param exponent - Series or number exponent\n * @returns New Series representing base ** exponent\n */\n pow(exponent: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof exponent === 'number' ? exponent : exponent.extractor(bar, i, data);\n return Math.pow(a, b);\n });\n }\n\n /**\n * Divide two series or a series by a number\n * @param other - Series or number to divide by\n * @returns New Series representing the quotient\n */\n div(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a / b; // PineScript: x / 0 is +/-Infinity (na() is true for it), 0 / 0 is na\n });\n }\n\n /**\n * Modulo operation\n * @param other - Series or number for modulo\n * @returns New Series representing the remainder\n */\n mod(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return b !== 0 ? a % b : NaN;\n });\n }\n\n /**\n * Negation\n * @returns New Series with negated values\n */\n neg(): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n return -this.extractor(bar, i, data);\n });\n }\n\n // ============================================\n // Comparison Operations (PineScript operators: tolerance 1e-10, false with na; see src/compare)\n // ============================================\n\n /**\n * Greater than comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n gt(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.gt(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Greater than or equal comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n gte(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.ge(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Less than comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n lt(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.lt(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Less than or equal comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n lte(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.le(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Equality comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n eq(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.eq(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Not equal comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n neq(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.ne(a, b) ? 1 : 0;\n });\n }\n\n // ============================================\n // Logical Operations (for boolean series)\n // ============================================\n\n /**\n * Logical AND\n * @param other - Series or number (truthy/falsy)\n * @returns New Series with 1 where both true, 0 otherwise\n */\n and(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a && b ? 1 : 0;\n });\n }\n\n /**\n * Logical OR\n * @param other - Series or number (truthy/falsy)\n * @returns New Series with 1 where either true, 0 otherwise\n */\n or(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a || b ? 1 : 0;\n });\n }\n\n /**\n * Logical NOT\n * @returns New Series with inverted boolean values\n */\n not(): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n return !a ? 1 : 0;\n });\n }\n\n // ============================================\n // Conditional Selection\n // ============================================\n\n /**\n * Bar-by-bar conditional selection (ternary operator for Series)\n * Uses this Series as the condition (truthy = nonzero, falsy = zero/NaN)\n *\n * @param trueValue - Value or Series to use when condition is truthy\n * @param falseValue - Value or Series to use when condition is falsy\n * @returns New Series with bar-by-bar selected values\n *\n * @example\n * ```typescript\n * // PineScript: result = condition ? trueVal : falseVal\n * const result = condition.iff(trueVal, falseVal);\n *\n * // Example: RSI formula uses ternary for edge cases\n * // rsi = down == 0 ? 100 : up == 0 ? 0 : formula\n * const rsi = down.eq(0).iff(100, up.eq(0).iff(0, formula));\n * ```\n */\n iff(trueValue: Series | number, falseValue: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const condition = this.extractor(bar, i, data);\n // Truthy: nonzero and not NaN\n const isTruthy = condition !== 0 && !Number.isNaN(condition);\n\n if (isTruthy) {\n return typeof trueValue === 'number' ? trueValue : trueValue.extractor(bar, i, data);\n } else {\n return typeof falseValue === 'number' ? falseValue : falseValue.extractor(bar, i, data);\n }\n });\n }\n\n // ============================================\n // Offset/History\n // ============================================\n\n /**\n * Access previous bars (like close[1] in PineScript)\n * @param offset - Number of bars back (0 or more)\n * @returns New Series with offset values\n * @throws RangeError when `offset` is negative\n */\n offset(offset: number): Series {\n if (offset < 0) throw new RangeError(`Series.offset(${offset}): the offset cannot be negative (it would read a future bar).`);\n return new Series(this.dataSource, (_bar, i, data) => {\n const targetIndex = i - offset;\n if (targetIndex < 0 || targetIndex >= data.length) {\n return NaN;\n }\n return this.extractor(data[targetIndex]!, targetIndex, data);\n });\n }\n\n // ============================================\n // Computation & Access\n // ============================================\n\n /**\n * Compute all values for the series\n * \n * Now includes automatic cache invalidation:\n * - Checks if dataSource version has changed since cache was computed\n * - Recomputes if version mismatch detected\n * - Stores version when cache is created\n * \n * @returns Array of computed values\n */\n toArray(): number[] {\n // Check if cache is valid by comparing versions\n if (this.cached !== null && this.cachedVersion === this.dataSource.version) {\n return this.cached;\n }\n\n // Recompute and update cache\n const bars = this.dataSource.bars;\n this.cached = bars.map((bar, i) => this.extractor(bar, i, bars));\n this.cachedVersion = this.dataSource.version;\n return this.cached;\n }\n\n /**\n * Materialize this Series by eagerly computing values and breaking closure chain\n * \n * This method addresses the closure chain memory leak issue:\n * - Computes all values immediately\n * - Creates a new Series that stores values directly\n * - Breaks references to parent Series objects\n * - Useful for complex expressions to free intermediate Series memory\n * \n * @example\n * ```typescript\n * // Without materialize: keeps a, b, c, d in memory via closures\n * const result = a.add(b).mul(c).div(d).sub(e);\n * \n * // With materialize: breaks chain, frees a, b, c memory\n * const result = a.add(b).mul(c).materialize().div(d).sub(e);\n * ```\n * \n * @returns New Series with computed values and no closure dependencies\n */\n materialize(): Series {\n const values = this.toArray();\n // Create a copy of values to ensure no shared references\n const valuesCopy = [...values];\n return Series.fromArray(this.dataSource, valuesCopy);\n }\n\n /**\n * Invalidate cache (when data changes)\n * \n * Note: With BarData versioning, manual invalidation is rarely needed.\n * The cache is automatically invalidated when the underlying BarData changes.\n * This method is kept for backward compatibility and advanced use cases.\n * \n * @internal\n */\n _invalidate(): void {\n this.cached = null;\n this.cachedVersion = -1;\n }\n\n /**\n * Compute all values (alias for toArray)\n * @returns Array of computed values\n * @internal\n */\n _compute(): number[] {\n return this.toArray();\n }\n\n /**\n * Get value at specific index\n * @param index - Bar index\n * @returns Value at that index\n */\n get(index: number): number {\n const values = this.toArray();\n return values[index] ?? NaN;\n }\n\n /**\n * Get the last value (most recent bar)\n * @returns Most recent value\n */\n last(): number {\n const values = this.toArray();\n return values[values.length - 1] ?? NaN;\n }\n\n /**\n * Get number of values\n * @returns Length of series\n */\n length(): number {\n return this.dataSource.length;\n }\n\n /**\n * Convert series to time-value pairs for charting\n * @returns Array of { time, value } objects\n */\n toTimeValuePairs(): Array<{ time: any; value: number }> {\n const values = this.toArray();\n const bars = this.dataSource.bars;\n return bars.map((bar, i) => ({\n time: bar.time,\n value: values[i]!\n })).filter(point => !Number.isNaN(point.value));\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }