oakscriptjs 0.8.2 → 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 (546) 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 -7981
  461. package/dist/index.d.ts +0 -64
  462. package/dist/index.d.ts.map +0 -1
  463. package/dist/index.mjs +0 -7964
  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 -126
  503. package/dist/runtime/types.d.ts.map +0 -1
  504. package/dist/script/index.cjs +0 -6377
  505. package/dist/script/index.d.ts +0 -713
  506. package/dist/script/index.d.ts.map +0 -1
  507. package/dist/script/index.mjs +0 -6360
  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/running-sum.d.ts +0 -3
  526. package/dist/ta/running-sum.d.ts.map +0 -1
  527. package/dist/ta-series.d.ts +0 -143
  528. package/dist/ta-series.d.ts.map +0 -1
  529. package/dist/text/index.d.ts +0 -4
  530. package/dist/text/index.d.ts.map +0 -1
  531. package/dist/time/datestring.d.ts +0 -2
  532. package/dist/time/datestring.d.ts.map +0 -1
  533. package/dist/time/index.d.ts +0 -15
  534. package/dist/time/index.d.ts.map +0 -1
  535. package/dist/time/session.d.ts +0 -2
  536. package/dist/time/session.d.ts.map +0 -1
  537. package/dist/time/timezone.d.ts +0 -13
  538. package/dist/time/timezone.d.ts.map +0 -1
  539. package/dist/timeframe/index.d.ts +0 -17
  540. package/dist/timeframe/index.d.ts.map +0 -1
  541. package/dist/types/index.d.ts +0 -181
  542. package/dist/types/index.d.ts.map +0 -1
  543. package/dist/types/metadata.d.ts +0 -132
  544. package/dist/types/metadata.d.ts.map +0 -1
  545. package/dist/utils/index.d.ts +0 -26
  546. package/dist/utils/index.d.ts.map +0 -1
@@ -0,0 +1,1036 @@
1
+ /**
2
+ * @fileoverview Technical analysis functions that work with Series
3
+ * Fixed wrappers around core ta.* functions with O(n) performance
4
+ * @module ta-series
5
+ */
6
+
7
+ import * as taCore from './ta/index.js';
8
+ import { Series } from './runtime/series.js';
9
+ import type { Bar } from './types/index.js';
10
+
11
+ /**
12
+ * Simple Moving Average
13
+ * @param source - Source series
14
+ * @param length - Period length
15
+ * @returns Series with SMA values
16
+ */
17
+ export function sma(source: Series, length: number): Series {
18
+ const bars = source.bars as Bar[];
19
+ const sourceValues = source.toArray();
20
+ const result = taCore.sma(sourceValues, length);
21
+ return Series.fromArray(bars, result);
22
+ }
23
+
24
+ /**
25
+ * Exponential Moving Average
26
+ * @param source - Source series
27
+ * @param length - Period length
28
+ * @returns Series with EMA values
29
+ */
30
+ export function ema(source: Series, length: number): Series {
31
+ const bars = source.bars as Bar[];
32
+ const sourceValues = source.toArray();
33
+ const result = taCore.ema(sourceValues, length);
34
+ return Series.fromArray(bars, result);
35
+ }
36
+
37
+ /**
38
+ * Weighted Moving Average
39
+ * @param source - Source series
40
+ * @param length - Period length
41
+ * @returns Series with WMA values
42
+ */
43
+ export function wma(source: Series, length: number): Series {
44
+ const bars = source.bars as Bar[];
45
+ const sourceValues = source.toArray();
46
+ const result = taCore.wma(sourceValues, length);
47
+ return Series.fromArray(bars, result);
48
+ }
49
+
50
+ /**
51
+ * Relative Moving Average
52
+ * @param source - Source series
53
+ * @param length - Period length
54
+ * @returns Series with RMA values
55
+ */
56
+ export function rma(source: Series, length: number): Series {
57
+ const bars = source.bars as Bar[];
58
+ const sourceValues = source.toArray();
59
+ const result = taCore.rma(sourceValues, length);
60
+ return Series.fromArray(bars, result);
61
+ }
62
+
63
+ /**
64
+ * Relative Strength Index
65
+ * @param source - Source series
66
+ * @param length - Period length
67
+ * @returns Series with RSI values
68
+ */
69
+ export function rsi(source: Series, length: number): Series {
70
+ const bars = source.bars as Bar[];
71
+ const sourceValues = source.toArray();
72
+ const result = taCore.rsi(sourceValues, length);
73
+ return Series.fromArray(bars, result);
74
+ }
75
+
76
+ /**
77
+ * Moving Average Convergence Divergence
78
+ * @param source - Source series
79
+ * @param fastLength - Fast EMA period
80
+ * @param slowLength - Slow EMA period
81
+ * @param signalLength - Signal line period
82
+ * @returns Tuple of [macdLine, signalLine, histogram] Series
83
+ */
84
+ export function macd(
85
+ source: Series,
86
+ fastLength: number,
87
+ slowLength: number,
88
+ signalLength: number
89
+ ): [Series, Series, Series] {
90
+ const bars = source.bars as Bar[];
91
+ const sourceValues = source.toArray();
92
+ const [macdVals, signalVals, histVals] = taCore.macd(sourceValues, fastLength, slowLength, signalLength);
93
+
94
+ const macdSeries = Series.fromArray(bars, macdVals);
95
+ const signalSeries = Series.fromArray(bars, signalVals);
96
+ const histSeries = Series.fromArray(bars, histVals);
97
+
98
+ return [macdSeries, signalSeries, histSeries];
99
+ }
100
+
101
+ /**
102
+ * Bollinger Bands
103
+ * @param source - Source series
104
+ * @param length - Period length
105
+ * @param mult - Standard deviation multiplier
106
+ * @returns Tuple of [upper, basis, lower] Series
107
+ */
108
+ export function bb(source: Series, length: number, mult: number): [Series, Series, Series] {
109
+ const bars = source.bars as Bar[];
110
+ const sourceValues = source.toArray();
111
+ const [upperVals, basisVals, lowerVals] = taCore.bb(sourceValues, length, mult);
112
+
113
+ const upperSeries = Series.fromArray(bars, upperVals);
114
+ const basisSeries = Series.fromArray(bars, basisVals);
115
+ const lowerSeries = Series.fromArray(bars, lowerVals);
116
+
117
+ return [upperSeries, basisSeries, lowerSeries];
118
+ }
119
+
120
+ /**
121
+ * Standard deviation (PineScript ta.stdev; biased by default)
122
+ * @param source - Source series
123
+ * @param length - Period length
124
+ * @param biased - true (default): divide by length; false: by length - 1
125
+ * @returns Series with standard deviation values
126
+ */
127
+ export function stdev(source: Series, length: number, biased: boolean = true): Series {
128
+ const bars = source.bars as Bar[];
129
+ return Series.fromArray(bars, taCore.stdev(source.toArray(), length, biased));
130
+ }
131
+
132
+
133
+ /**
134
+ * Average True Range
135
+ * @param bars - Bar data
136
+ * @param length - Period length
137
+ * @returns Series with ATR values
138
+ */
139
+ export function atr(bars: Bar[], length: number): Series {
140
+ const high = bars.map(b => b.high);
141
+ const low = bars.map(b => b.low);
142
+ const close = bars.map(b => b.close);
143
+ const result = taCore.atr(length, high, low, close);
144
+ return Series.fromArray(bars, result);
145
+ }
146
+
147
+ /**
148
+ * True Range
149
+ * @param bars - Bar data
150
+ * @param handle_na - How NaN values are handled (default: false)
151
+ * @returns Series with TR values
152
+ */
153
+ export function tr(bars: Bar[], handle_na: boolean = false): Series {
154
+ const high = bars.map(b => b.high);
155
+ const low = bars.map(b => b.low);
156
+ const close = bars.map(b => b.close);
157
+ const result = taCore.tr(handle_na, high, low, close);
158
+ return Series.fromArray(bars, result);
159
+ }
160
+
161
+ // Volume built-in variables. PineScript exposes them as variables of the chart bars
162
+ // (`ta.obv`); here they take the bars.
163
+
164
+ const col = (bars: Bar[], f: 'open' | 'high' | 'low' | 'close' | 'volume'): number[] =>
165
+ bars.map((b) => b[f] ?? NaN);
166
+
167
+ /** On Balance Volume (PineScript `ta.obv`) */
168
+ export function obv(bars: Bar[]): Series {
169
+ return Series.fromArray(bars, taCore.obv(col(bars, 'close'), col(bars, 'volume')));
170
+ }
171
+
172
+ /** Price-Volume Trend (PineScript `ta.pvt`) */
173
+ export function pvt(bars: Bar[]): Series {
174
+ return Series.fromArray(bars, taCore.pvt(col(bars, 'close'), col(bars, 'volume')));
175
+ }
176
+
177
+ /** Accumulation/Distribution index (PineScript `ta.accdist`) */
178
+ export function accdist(bars: Bar[]): Series {
179
+ return Series.fromArray(
180
+ bars,
181
+ taCore.accdist(col(bars, 'high'), col(bars, 'low'), col(bars, 'close'), col(bars, 'volume'))
182
+ );
183
+ }
184
+
185
+ /** Negative Volume Index (PineScript `ta.nvi`) */
186
+ export function nvi(bars: Bar[]): Series {
187
+ return Series.fromArray(bars, taCore.nvi(col(bars, 'close'), col(bars, 'volume')));
188
+ }
189
+
190
+ /** Positive Volume Index (PineScript `ta.pvi`) */
191
+ export function pvi(bars: Bar[]): Series {
192
+ return Series.fromArray(bars, taCore.pvi(col(bars, 'close'), col(bars, 'volume')));
193
+ }
194
+
195
+ /** Intraday Intensity Index (PineScript `ta.iii`) */
196
+ export function iii(bars: Bar[]): Series {
197
+ return Series.fromArray(
198
+ bars,
199
+ taCore.iii(col(bars, 'high'), col(bars, 'low'), col(bars, 'close'), col(bars, 'volume'))
200
+ );
201
+ }
202
+
203
+ /** Williams Accumulation/Distribution (PineScript `ta.wad`) */
204
+ export function wad(bars: Bar[]): Series {
205
+ return Series.fromArray(bars, taCore.wad(col(bars, 'high'), col(bars, 'low'), col(bars, 'close')));
206
+ }
207
+
208
+ /** Williams Variable Accumulation/Distribution (PineScript `ta.wvad`) */
209
+ export function wvad(bars: Bar[]): Series {
210
+ return Series.fromArray(
211
+ bars,
212
+ taCore.wvad(col(bars, 'open'), col(bars, 'high'), col(bars, 'low'), col(bars, 'close'), col(bars, 'volume'))
213
+ );
214
+ }
215
+
216
+ /**
217
+ * Stochastic %K
218
+ * @param source - Source series (typically close)
219
+ * @param high - High series
220
+ * @param low - Low series
221
+ * @param length - Period length
222
+ * @returns Series with stochastic values
223
+ */
224
+ export function stoch(source: Series, high: Series, low: Series, length: number): Series {
225
+ const bars = source.bars as Bar[];
226
+ const sourceValues = source.toArray();
227
+ const highValues = high.toArray();
228
+ const lowValues = low.toArray();
229
+ const result = taCore.stoch(sourceValues, highValues, lowValues, length);
230
+ return Series.fromArray(bars, result);
231
+ }
232
+
233
+ /**
234
+ * Crossover detection
235
+ * @param source1 - First series
236
+ * @param source2 - Second series or number
237
+ * @returns Series with 1 where crossover, 0 otherwise
238
+ */
239
+ export function crossover(source1: Series, source2: Series | number): Series {
240
+ const bars = source1.bars as Bar[];
241
+ const vals1 = source1.toArray();
242
+ const vals2 = typeof source2 === 'number'
243
+ ? Array(bars.length).fill(source2)
244
+ : source2.toArray();
245
+
246
+ const result = taCore.crossover(vals1, vals2);
247
+ // Convert boolean array to number array
248
+ const numResult = result.map(b => b ? 1 : 0);
249
+ return Series.fromArray(bars, numResult);
250
+ }
251
+
252
+ /**
253
+ * Crossunder detection
254
+ * @param source1 - First series
255
+ * @param source2 - Second series or number
256
+ * @returns Series with 1 where crossunder, 0 otherwise
257
+ */
258
+ export function crossunder(source1: Series, source2: Series | number): Series {
259
+ const bars = source1.bars as Bar[];
260
+ const vals1 = source1.toArray();
261
+ const vals2 = typeof source2 === 'number'
262
+ ? Array(bars.length).fill(source2)
263
+ : source2.toArray();
264
+
265
+ const result = taCore.crossunder(vals1, vals2);
266
+ // Convert boolean array to number array
267
+ const numResult = result.map(b => b ? 1 : 0);
268
+ return Series.fromArray(bars, numResult);
269
+ }
270
+
271
+ /**
272
+ * Cross detection
273
+ * @param source1 - First series
274
+ * @param source2 - Second series or number
275
+ * @returns Series with 1 where cross, 0 otherwise
276
+ */
277
+ export function cross(source1: Series, source2: Series | number): Series {
278
+ const bars = source1.bars as Bar[];
279
+ const vals1 = source1.toArray();
280
+ const vals2 = typeof source2 === 'number'
281
+ ? Array(bars.length).fill(source2)
282
+ : source2.toArray();
283
+
284
+ const result = taCore.cross(vals1, vals2);
285
+ // Convert boolean array to number array
286
+ const numResult = result.map(b => b ? 1 : 0);
287
+ return Series.fromArray(bars, numResult);
288
+ }
289
+
290
+ /**
291
+ * Change (difference from previous value)
292
+ * @param source - Source series
293
+ * @param length - Lookback period
294
+ * @returns Series with change values
295
+ */
296
+ export function change(source: Series, length: number = 1): Series {
297
+ const bars = source.bars as Bar[];
298
+ const sourceValues = source.toArray();
299
+ const result = taCore.change(sourceValues, length);
300
+ return Series.fromArray(bars, result);
301
+ }
302
+
303
+ /**
304
+ * Momentum
305
+ * @param source - Source series
306
+ * @param length - Lookback period
307
+ * @returns Series with momentum values
308
+ */
309
+ export function mom(source: Series, length: number): Series {
310
+ const bars = source.bars as Bar[];
311
+ const sourceValues = source.toArray();
312
+ const result = taCore.mom(sourceValues, length);
313
+ return Series.fromArray(bars, result);
314
+ }
315
+
316
+ /**
317
+ * Rate of Change
318
+ * @param source - Source series
319
+ * @param length - Lookback period
320
+ * @returns Series with ROC values
321
+ */
322
+ export function roc(source: Series, length: number): Series {
323
+ const bars = source.bars as Bar[];
324
+ const sourceValues = source.toArray();
325
+ const result = taCore.roc(sourceValues, length);
326
+ return Series.fromArray(bars, result);
327
+ }
328
+
329
+ /**
330
+ * Highest value in period
331
+ * @param source - Source series
332
+ * @param length - Period length
333
+ * @returns Series with highest values
334
+ */
335
+ export function highest(source: Series, length: number): Series {
336
+ const bars = source.bars as Bar[];
337
+ const sourceValues = source.toArray();
338
+ const result = taCore.highest(sourceValues, length);
339
+ return Series.fromArray(bars, result);
340
+ }
341
+
342
+ /**
343
+ * Lowest value in period
344
+ * @param source - Source series
345
+ * @param length - Period length
346
+ * @returns Series with lowest values
347
+ */
348
+ export function lowest(source: Series, length: number): Series {
349
+ const bars = source.bars as Bar[];
350
+ const sourceValues = source.toArray();
351
+ const result = taCore.lowest(sourceValues, length);
352
+ return Series.fromArray(bars, result);
353
+ }
354
+
355
+ /**
356
+ * Rising detection
357
+ * @param source - Source series
358
+ * @param length - Lookback period
359
+ * @returns Series with 1 where rising, 0 otherwise
360
+ */
361
+ export function rising(source: Series, length: number): Series {
362
+ const bars = source.bars as Bar[];
363
+ const sourceValues = source.toArray();
364
+ const result = taCore.rising(sourceValues, length);
365
+ // Convert boolean array to number array
366
+ const numResult = result.map(b => b ? 1 : 0);
367
+ return Series.fromArray(bars, numResult);
368
+ }
369
+
370
+ /**
371
+ * Falling detection
372
+ * @param source - Source series
373
+ * @param length - Lookback period
374
+ * @returns Series with 1 where falling, 0 otherwise
375
+ */
376
+ export function falling(source: Series, length: number): Series {
377
+ const bars = source.bars as Bar[];
378
+ const sourceValues = source.toArray();
379
+ const result = taCore.falling(sourceValues, length);
380
+ // Convert boolean array to number array
381
+ const numResult = result.map(b => b ? 1 : 0);
382
+ return Series.fromArray(bars, numResult);
383
+ }
384
+
385
+ /**
386
+ * Cumulative sum
387
+ * @param source - Source series
388
+ * @returns Series with cumulative sum values
389
+ */
390
+ export function cum(source: Series): Series {
391
+ const bars = source.bars as Bar[];
392
+ const sourceValues = source.toArray();
393
+ const result = taCore.cum(sourceValues);
394
+ return Series.fromArray(bars, result);
395
+ }
396
+
397
+ /**
398
+ * Supertrend indicator
399
+ * @param bars - Bar data
400
+ * @param factor - Multiplier factor
401
+ * @param atrLength - ATR period length
402
+ * @returns Tuple of [supertrend, direction] Series
403
+ */
404
+ export function supertrend(bars: Bar[], factor: number, atrLength: number): [Series, Series] {
405
+ const high = bars.map(b => b.high);
406
+ const low = bars.map(b => b.low);
407
+ const close = bars.map(b => b.close);
408
+ const [trendVals, dirVals] = taCore.supertrend(factor, atrLength, high, low, close);
409
+
410
+ const trendSeries = Series.fromArray(bars, trendVals);
411
+ const dirSeries = Series.fromArray(bars, dirVals);
412
+
413
+ return [trendSeries, dirSeries];
414
+ }
415
+
416
+ /**
417
+ * Volume Weighted Average Price (PineScript ta.vwap)
418
+ * @param source - Source series
419
+ * @param volume - Volume series
420
+ * @param anchor - Reset condition (non-zero = reset); without it the sums never restart
421
+ * @returns Series with VWAP values
422
+ */
423
+ export function vwap(source: Series, volume: Series, anchor?: Series): Series {
424
+ const bars = source.bars as Bar[];
425
+ return Series.fromArray(bars, taCore.vwap(source.toArray(), volume.toArray(), anchor?.toArray()));
426
+ }
427
+
428
+ /**
429
+ * VWAP with standard deviation bands (PineScript `[vwap, upper, lower] = ta.vwap(source, anchor, stdev_mult)`)
430
+ * @returns [vwap, upper, lower] Series
431
+ */
432
+ export function vwapBands(source: Series, volume: Series, anchor: Series | undefined, stdev_mult: number): [Series, Series, Series] {
433
+ const bars = source.bars as Bar[];
434
+ const [m, u, l] = taCore.vwap(source.toArray(), volume.toArray(), anchor?.toArray(), stdev_mult);
435
+ return [Series.fromArray(bars, m), Series.fromArray(bars, u), Series.fromArray(bars, l)];
436
+ }
437
+
438
+
439
+ /**
440
+ * Ichimoku Kinko Hyo (Ichimoku Cloud)
441
+ * @param bars - Bar data
442
+ * @param conversionPeriods - Period for Tenkan-sen (default: 9)
443
+ * @param basePeriods - Period for Kijun-sen (default: 26)
444
+ * @param laggingSpan2Periods - Period for Senkou Span B (default: 52)
445
+ * @param displacement - Displacement for Senkou Spans and Chikou Span (default: 26)
446
+ * @returns Tuple of [tenkanSen, kijunSen, senkouSpanA, senkouSpanB, chikouSpan] Series
447
+ */
448
+ export function ichimoku(
449
+ bars: Bar[],
450
+ conversionPeriods: number,
451
+ basePeriods: number,
452
+ laggingSpan2Periods: number,
453
+ displacement: number
454
+ ): [Series, Series, Series, Series, Series] {
455
+ const high = bars.map(b => b.high);
456
+ const low = bars.map(b => b.low);
457
+ const close = bars.map(b => b.close);
458
+ const [tenkan, kijun, senkouA, senkouB, chikou] = taCore.ichimoku(
459
+ conversionPeriods,
460
+ basePeriods,
461
+ laggingSpan2Periods,
462
+ displacement,
463
+ high,
464
+ low,
465
+ close
466
+ );
467
+
468
+ return [
469
+ Series.fromArray(bars, tenkan),
470
+ Series.fromArray(bars, kijun),
471
+ Series.fromArray(bars, senkouA),
472
+ Series.fromArray(bars, senkouB),
473
+ Series.fromArray(bars, chikou),
474
+ ];
475
+ }
476
+
477
+ /**
478
+ * Volume Weighted Moving Average
479
+ * @param source - Source series
480
+ * @param length - Period length
481
+ * @param volume - Volume series
482
+ * @returns Series with VWMA values
483
+ */
484
+ export function vwma(source: Series, length: number, volume: Series): Series {
485
+ const bars = source.bars as Bar[];
486
+ const sourceValues = source.toArray();
487
+ const volumeValues = volume.toArray();
488
+ const result = taCore.vwma(sourceValues, length, volumeValues);
489
+ return Series.fromArray(bars, result);
490
+ }
491
+
492
+ /**
493
+ * Linear Regression
494
+ * @param source - Source series
495
+ * @param length - Period length
496
+ * @param offset - Offset (default: 0)
497
+ * @returns Series with linear regression values
498
+ */
499
+ export function linreg(source: Series, length: number, offset: number = 0): Series {
500
+ const bars = source.bars as Bar[];
501
+ const sourceValues = source.toArray();
502
+ const result = taCore.linreg(sourceValues, length, offset);
503
+ return Series.fromArray(bars, result);
504
+ }
505
+
506
+ /**
507
+ * Arnaud Legoux Moving Average
508
+ * @param source - Source series
509
+ * @param length - Period length (default: 9)
510
+ * @param offset - Controls tradeoff between smoothness and responsiveness (default: 0.85)
511
+ * @param sigma - Standard deviation factor for sharpness (default: 6)
512
+ * @param floor - Whether to floor the offset calculation (default: false)
513
+ * @returns Series with ALMA values
514
+ */
515
+ export function alma(source: Series, length: number = 9, offset: number = 0.85, sigma: number = 6, floor: boolean = false): Series {
516
+ const bars = source.bars as Bar[];
517
+ const sourceValues = source.toArray();
518
+ const result = taCore.alma(sourceValues, length, offset, sigma, floor);
519
+ return Series.fromArray(bars, result);
520
+ }
521
+
522
+ /**
523
+ * ZigZag indicator - identifies significant trend reversals
524
+ * @param bars - Bar data
525
+ * @param deviation - Minimum percentage price change to form a new pivot (default: 5.0)
526
+ * @param depth - Minimum bars between pivots (default: 10)
527
+ * @param backstep - Bars to look back for confirmation (default: 3)
528
+ * @returns Tuple of [zigzag values, direction, isPivot flags] Series
529
+ * @remarks
530
+ * - The isPivot Series contains numeric values (1 for pivot, 0 for non-pivot)
531
+ * converted from boolean for consistency with other Series-based functions
532
+ * - The core ta.zigzag() function returns boolean isPivot values
533
+ */
534
+ export function zigzag(
535
+ bars: Bar[],
536
+ deviation: number = 5,
537
+ depth: number = 10,
538
+ backstep: number = 3
539
+ ): [Series, Series, Series] {
540
+ const high = bars.map(b => b.high);
541
+ const low = bars.map(b => b.low);
542
+
543
+ const [zigzagVals, dirVals, pivotVals] = taCore.zigzag(
544
+ deviation, depth, backstep, undefined, high, low
545
+ );
546
+
547
+ // Convert boolean pivot flags to numbers (1/0) for Series compatibility
548
+ return [
549
+ Series.fromArray(bars, zigzagVals),
550
+ Series.fromArray(bars, dirVals),
551
+ Series.fromArray(bars, pivotVals.map(b => b ? 1 : 0)),
552
+ ];
553
+ }
554
+
555
+ /**
556
+ * Commodity Channel Index
557
+ * @param source - Source series (typically hlc3)
558
+ * @param length - Period length
559
+ * @returns Series with CCI values
560
+ */
561
+ export function cci(source: Series, length: number): Series {
562
+ const bars = source.bars as Bar[];
563
+ const sourceValues = source.toArray();
564
+ const result = taCore.cci(sourceValues, length);
565
+ return Series.fromArray(bars, result);
566
+ }
567
+
568
+ /**
569
+ * Parabolic SAR (Stop and Reverse)
570
+ * @param bars - Bar data
571
+ * @param start - Initial acceleration factor (default: 0.02)
572
+ * @param inc - Acceleration factor increment (default: 0.02)
573
+ * @param max - Maximum acceleration factor (default: 0.2)
574
+ * @returns Series with SAR values
575
+ */
576
+ export function sar(bars: Bar[], start: number = 0.02, inc: number = 0.02, max: number = 0.2): Series {
577
+ const high = bars.map(b => b.high);
578
+ const low = bars.map(b => b.low);
579
+ const close = bars.map(b => b.close);
580
+ const result = taCore.sar(start, inc, max, high, low, close);
581
+ return Series.fromArray(bars, result);
582
+ }
583
+
584
+ /**
585
+ * Deviation
586
+ * @param source - Source series
587
+ * @param length - Period length
588
+ * @returns Series with deviation values
589
+ */
590
+ export function dev(source: Series, length: number): Series {
591
+ const bars = source.bars as Bar[];
592
+ const result = taCore.dev(source.toArray(), length);
593
+ return Series.fromArray(bars, result);
594
+ }
595
+
596
+ /**
597
+ * Variance
598
+ * @param source - Source series
599
+ * @param length - Period length
600
+ * @param biased - Use biased estimation (default: true)
601
+ * @returns Series with variance values
602
+ */
603
+ export function variance(source: Series, length: number, biased: boolean = true): Series {
604
+ const bars = source.bars as Bar[];
605
+ const result = taCore.variance(source.toArray(), length, biased);
606
+ return Series.fromArray(bars, result);
607
+ }
608
+
609
+ /**
610
+ * Median
611
+ * @param source - Source series
612
+ * @param length - Period length
613
+ * @returns Series with median values
614
+ */
615
+ export function median(source: Series, length: number): Series {
616
+ const bars = source.bars as Bar[];
617
+ const result = taCore.median(source.toArray(), length);
618
+ return Series.fromArray(bars, result);
619
+ }
620
+
621
+ /**
622
+ * Symmetrically Weighted Moving Average
623
+ * @param source - Source series
624
+ * @returns Series with SWMA values
625
+ */
626
+ export function swma(source: Series): Series {
627
+ const bars = source.bars as Bar[];
628
+ const result = taCore.swma(source.toArray());
629
+ return Series.fromArray(bars, result);
630
+ }
631
+
632
+ /**
633
+ * Correlation
634
+ * @param source1 - First source series
635
+ * @param source2 - Second source series
636
+ * @param length - Period length
637
+ * @returns Series with correlation values
638
+ */
639
+ export function correlation(source1: Series, source2: Series, length: number): Series {
640
+ const bars = source1.bars as Bar[];
641
+ const result = taCore.correlation(source1.toArray(), source2.toArray(), length);
642
+ return Series.fromArray(bars, result);
643
+ }
644
+
645
+ /**
646
+ * Percent Rank
647
+ * @param source - Source series
648
+ * @param length - Period length
649
+ * @returns Series with percent rank values
650
+ */
651
+ export function percentrank(source: Series, length: number): Series {
652
+ const bars = source.bars as Bar[];
653
+ const result = taCore.percentrank(source.toArray(), length);
654
+ return Series.fromArray(bars, result);
655
+ }
656
+
657
+ /**
658
+ * Money Flow Index
659
+ * @param source - Source series (typically hlc3)
660
+ * @param length - Period length
661
+ * @param volume - Volume series
662
+ * @returns Series with MFI values
663
+ */
664
+ export function mfi(source: Series, length: number, volume: Series): Series {
665
+ const bars = source.bars as Bar[];
666
+ const result = taCore.mfi(source.toArray(), length, volume.toArray());
667
+ return Series.fromArray(bars, result);
668
+ }
669
+
670
+ /**
671
+ * Hull Moving Average
672
+ * @param source - Source series
673
+ * @param length - Period length
674
+ * @returns Series with HMA values
675
+ */
676
+ export function hma(source: Series, length: number): Series {
677
+ const bars = source.bars as Bar[];
678
+ const result = taCore.hma(source.toArray(), length);
679
+ return Series.fromArray(bars, result);
680
+ }
681
+
682
+ /**
683
+ * Pivot High
684
+ * @param source - Source series
685
+ * @param leftbars - Number of bars to the left of the pivot
686
+ * @param rightbars - Number of bars to the right of the pivot
687
+ * @returns Series with the pivot high value on the bar where the pivot is confirmed,
688
+ * `rightbars` bars after the pivot bar (as in PineScript), NaN elsewhere
689
+ */
690
+ export function pivothigh(source: Series, leftbars: number, rightbars: number): Series {
691
+ const bars = source.bars as Bar[];
692
+ const result = taCore.pivothigh(source.toArray(), leftbars, rightbars);
693
+ return Series.fromArray(bars, result);
694
+ }
695
+
696
+ /**
697
+ * Pivot Low
698
+ * @param source - Source series
699
+ * @param leftbars - Number of bars to the left of the pivot
700
+ * @param rightbars - Number of bars to the right of the pivot
701
+ * @returns Series with the pivot low value on the bar where the pivot is confirmed,
702
+ * `rightbars` bars after the pivot bar (as in PineScript), NaN elsewhere
703
+ */
704
+ export function pivotlow(source: Series, leftbars: number, rightbars: number): Series {
705
+ const bars = source.bars as Bar[];
706
+ const result = taCore.pivotlow(source.toArray(), leftbars, rightbars);
707
+ return Series.fromArray(bars, result);
708
+ }
709
+
710
+ /**
711
+ * Bars Since condition was true
712
+ * @param condition - Boolean series (1/0 values)
713
+ * @returns Series with bar count since condition was last true
714
+ */
715
+ export function barssince(condition: Series): Series {
716
+ const bars = condition.bars as Bar[];
717
+ const boolValues = condition.toArray().map(v => v === 1);
718
+ const result = taCore.barssince(boolValues);
719
+ return Series.fromArray(bars, result);
720
+ }
721
+
722
+ /**
723
+ * Value When condition was true
724
+ * @param condition - Boolean series (1/0 values)
725
+ * @param source - Source series to extract values from
726
+ * @param occurrence - Which occurrence to use (0 = most recent)
727
+ * @returns Series with values from source when condition was true
728
+ */
729
+ export function valuewhen(condition: Series, source: Series, occurrence: number): Series {
730
+ const bars = condition.bars as Bar[];
731
+ const boolValues = condition.toArray().map(v => v === 1);
732
+ const result = taCore.valuewhen(boolValues, source.toArray(), occurrence);
733
+ return Series.fromArray(bars, result);
734
+ }
735
+
736
+ /**
737
+ * Directional Movement Index
738
+ * @param bars - Bar data
739
+ * @param diLength - DI period length
740
+ * @param adxSmoothing - ADX smoothing period
741
+ * @returns Tuple of [plusDI, minusDI, adx] Series
742
+ */
743
+ export function dmi(bars: Bar[], diLength: number, adxSmoothing: number): [Series, Series, Series] {
744
+ const high = bars.map(b => b.high);
745
+ const low = bars.map(b => b.low);
746
+ const close = bars.map(b => b.close);
747
+ const [plusDI, minusDI, adx] = taCore.dmi(diLength, adxSmoothing, high, low, close);
748
+ return [
749
+ Series.fromArray(bars, plusDI),
750
+ Series.fromArray(bars, minusDI),
751
+ Series.fromArray(bars, adx),
752
+ ];
753
+ }
754
+
755
+ /**
756
+ * True Strength Index
757
+ * @param source - Source series
758
+ * @param shortLength - Short smoothing period
759
+ * @param longLength - Long smoothing period
760
+ * @returns Series with TSI values
761
+ */
762
+ export function tsi(source: Series, shortLength: number, longLength: number): Series {
763
+ const bars = source.bars as Bar[];
764
+ const result = taCore.tsi(source.toArray(), shortLength, longLength);
765
+ return Series.fromArray(bars, result);
766
+ }
767
+
768
+ /**
769
+ * Chande Momentum Oscillator
770
+ * @param source - Source series
771
+ * @param length - Period length
772
+ * @returns Series with CMO values
773
+ */
774
+ export function cmo(source: Series, length: number): Series {
775
+ const bars = source.bars as Bar[];
776
+ const result = taCore.cmo(source.toArray(), length);
777
+ return Series.fromArray(bars, result);
778
+ }
779
+
780
+ /**
781
+ * Keltner Channel
782
+ * @param bars - Bar data
783
+ * @param source - Source series
784
+ * @param length - Period length
785
+ * @param mult - Multiplier
786
+ * @param useTrueRange - Use true range (default: true)
787
+ * @returns Tuple of [middle, upper, lower] Series
788
+ */
789
+ export function kc(bars: Bar[], source: Series, length: number, mult: number, useTrueRange: boolean = true): [Series, Series, Series] {
790
+ const high = bars.map(b => b.high);
791
+ const low = bars.map(b => b.low);
792
+ const close = bars.map(b => b.close);
793
+ const [middle, upper, lower] = taCore.kc(source.toArray(), length, mult, useTrueRange, high, low, close);
794
+ return [
795
+ Series.fromArray(bars, middle),
796
+ Series.fromArray(bars, upper),
797
+ Series.fromArray(bars, lower),
798
+ ];
799
+ }
800
+
801
+ /**
802
+ * Bollinger Bands Width
803
+ * @param source - Source series
804
+ * @param length - Period length
805
+ * @param mult - Standard deviation multiplier
806
+ * @returns Series with BBW values
807
+ */
808
+ export function bbw(source: Series, length: number, mult: number): Series {
809
+ const bars = source.bars as Bar[];
810
+ const result = taCore.bbw(source.toArray(), length, mult);
811
+ return Series.fromArray(bars, result);
812
+ }
813
+
814
+ /**
815
+ * Williams %R
816
+ * @param bars - Bar data
817
+ * @param length - Period length (default: 14)
818
+ * @returns Series with Williams %R values
819
+ */
820
+ export function wpr(bars: Bar[], length: number = 14): Series {
821
+ const high = bars.map(b => b.high);
822
+ const low = bars.map(b => b.low);
823
+ const close = bars.map(b => b.close);
824
+ const result = taCore.wpr(high, low, close, length);
825
+ return Series.fromArray(bars, result);
826
+ }
827
+
828
+ /**
829
+ * Keltner Channel Width
830
+ * @param bars - Bar data
831
+ * @param source - Source series
832
+ * @param length - Period length (default: 20)
833
+ * @param mult - Multiplier (default: 2)
834
+ * @param useTrueRange - Use true range (default: true)
835
+ * @returns Series with KCW values
836
+ */
837
+ export function kcw(bars: Bar[], source: Series, length: number = 20, mult: number = 2, useTrueRange: boolean = true): Series {
838
+ const high = bars.map(b => b.high);
839
+ const low = bars.map(b => b.low);
840
+ const close = bars.map(b => b.close);
841
+ const result = taCore.kcw(source.toArray(), length, mult, useTrueRange, high, low, close);
842
+ return Series.fromArray(bars, result);
843
+ }
844
+
845
+ /**
846
+ * Range: highest minus lowest value over the last `length` non-na values (PineScript ta.range)
847
+ * @param source - Source series
848
+ * @param length - Number of values
849
+ * @returns Series with range values
850
+ */
851
+ export function range(source: Series, length: number): Series {
852
+ const bars = source.bars as Bar[];
853
+ return Series.fromArray(bars, taCore.range(source.toArray(), length));
854
+ }
855
+
856
+
857
+ /**
858
+ * Highest Bars - offset to the highest value
859
+ * @param source - Source series
860
+ * @param length - Period length
861
+ * @returns Series with bar offsets to highest value
862
+ */
863
+ export function highestbars(source: Series, length: number): Series {
864
+ const bars = source.bars as Bar[];
865
+ const result = taCore.highestbars(source.toArray(), length);
866
+ return Series.fromArray(bars, result);
867
+ }
868
+
869
+ /**
870
+ * Lowest Bars - offset to the lowest value
871
+ * @param source - Source series
872
+ * @param length - Period length
873
+ * @returns Series with bar offsets to lowest value
874
+ */
875
+ export function lowestbars(source: Series, length: number): Series {
876
+ const bars = source.bars as Bar[];
877
+ const result = taCore.lowestbars(source.toArray(), length);
878
+ return Series.fromArray(bars, result);
879
+ }
880
+
881
+ /**
882
+ * All-time highest value (PineScript ta.max)
883
+ * @param source - Source series
884
+ * @returns Series with the highest value up to each bar
885
+ */
886
+ export function max(source: Series): Series {
887
+ const bars = source.bars as Bar[];
888
+ return Series.fromArray(bars, taCore.max(source.toArray()));
889
+ }
890
+
891
+
892
+ /**
893
+ * All-time lowest value (PineScript ta.min)
894
+ * @param source - Source series
895
+ * @returns Series with the lowest value up to each bar
896
+ */
897
+ export function min(source: Series): Series {
898
+ const bars = source.bars as Bar[];
899
+ return Series.fromArray(bars, taCore.min(source.toArray()));
900
+ }
901
+
902
+
903
+ /**
904
+ * Center of Gravity
905
+ * @param source - Source series
906
+ * @param length - Period length (default: 10)
907
+ * @returns Series with COG values
908
+ */
909
+ export function cog(source: Series, length: number = 10): Series {
910
+ const bars = source.bars as Bar[];
911
+ const result = taCore.cog(source.toArray(), length);
912
+ return Series.fromArray(bars, result);
913
+ }
914
+
915
+ /**
916
+ * Mode (most frequent value)
917
+ * @param source - Source series
918
+ * @param length - Period length
919
+ * @returns Series with mode values
920
+ */
921
+ export function mode(source: Series, length: number): Series {
922
+ const bars = source.bars as Bar[];
923
+ const result = taCore.mode(source.toArray(), length);
924
+ return Series.fromArray(bars, result);
925
+ }
926
+
927
+ /**
928
+ * Percentile (linear interpolation)
929
+ * @param source - Source series
930
+ * @param length - Period length
931
+ * @param percentage - Percentile percentage
932
+ * @returns Series with percentile values
933
+ */
934
+ export function percentile_linear_interpolation(source: Series, length: number, percentage: number): Series {
935
+ const bars = source.bars as Bar[];
936
+ const result = taCore.percentile_linear_interpolation(source.toArray(), length, percentage);
937
+ return Series.fromArray(bars, result);
938
+ }
939
+
940
+ /**
941
+ * Percentile (nearest rank)
942
+ * @param source - Source series
943
+ * @param length - Period length
944
+ * @param percentage - Percentile percentage
945
+ * @returns Series with percentile values
946
+ */
947
+ export function percentile_nearest_rank(source: Series, length: number, percentage: number): Series {
948
+ const bars = source.bars as Bar[];
949
+ const result = taCore.percentile_nearest_rank(source.toArray(), length, percentage);
950
+ return Series.fromArray(bars, result);
951
+ }
952
+
953
+ /**
954
+ * Rank Correlation Index
955
+ * @param source - Source series
956
+ * @param length - Period length
957
+ * @returns Series with RCI values
958
+ */
959
+ export function rci(source: Series, length: number): Series {
960
+ const bars = source.bars as Bar[];
961
+ const result = taCore.rci(source.toArray(), length);
962
+ return Series.fromArray(bars, result);
963
+ }
964
+
965
+ // Export as namespace object to match PineScript ta.* syntax
966
+ export const ta = {
967
+ sma,
968
+ ema,
969
+ wma,
970
+ vwma,
971
+ rma,
972
+ rsi,
973
+ macd,
974
+ bb,
975
+ stdev,
976
+ atr,
977
+ tr,
978
+ stoch,
979
+ crossover,
980
+ crossunder,
981
+ cross,
982
+ change,
983
+ mom,
984
+ roc,
985
+ highest,
986
+ lowest,
987
+ rising,
988
+ falling,
989
+ cum,
990
+ supertrend,
991
+ vwap,
992
+ ichimoku,
993
+ linreg,
994
+ alma,
995
+ zigzag,
996
+ cci,
997
+ sar,
998
+ dev,
999
+ variance,
1000
+ median,
1001
+ swma,
1002
+ correlation,
1003
+ percentrank,
1004
+ mfi,
1005
+ hma,
1006
+ pivothigh,
1007
+ pivotlow,
1008
+ barssince,
1009
+ valuewhen,
1010
+ dmi,
1011
+ tsi,
1012
+ cmo,
1013
+ kc,
1014
+ bbw,
1015
+ wpr,
1016
+ kcw,
1017
+ range,
1018
+ highestbars,
1019
+ lowestbars,
1020
+ max,
1021
+ min,
1022
+ vwapBands,
1023
+ obv,
1024
+ pvt,
1025
+ accdist,
1026
+ nvi,
1027
+ pvi,
1028
+ iii,
1029
+ wad,
1030
+ wvad,
1031
+ cog,
1032
+ mode,
1033
+ percentile_linear_interpolation,
1034
+ percentile_nearest_rank,
1035
+ rci,
1036
+ };