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,373 @@
1
+ /**
2
+ * Color namespace
3
+ * Mirrors PineScript's color.* functions for color creation and manipulation.
4
+ *
5
+ * @remarks
6
+ * All color functions in this namespace follow PineScript v6 API specifications.
7
+ * Colors are represented as RGB or RGBA strings.
8
+ * Transparency values range from 0 (fully opaque) to 100 (fully transparent).
9
+ *
10
+ * @version 6
11
+ */
12
+ /** Channel of color.rgb: na is 0, a fraction is truncated. */
13
+ const channel = (v) => v === null || v === undefined || Number.isNaN(v) ? 0 : Math.max(0, Math.min(255, Math.trunc(v)));
14
+ /** Alpha (0-1) of a transparency given to color.rgb / color.new: na is fully transparent, clamped to 0..100. */
15
+ const alphaOf = (transp) => transp === null || Number.isNaN(transp) ? 0 : 1 - Math.max(0, Math.min(100, transp)) / 100;
16
+ /**
17
+ * Creates a color from RGB values with optional transparency.
18
+ *
19
+ * @param red - Red component (0-255, values are clamped)
20
+ * @param green - Green component (0-255, values are clamped)
21
+ * @param blue - Blue component (0-255, values are clamped)
22
+ * @param transp - Optional transparency (0-100). 0 = opaque, 100 = fully transparent
23
+ * @returns Color string in rgb() or rgba() format
24
+ *
25
+ * @remarks
26
+ * - RGB values are automatically clamped to the 0-255 range
27
+ * - Transparency of 0 or omitted results in rgb() format
28
+ * - Transparency > 0 results in rgba() format
29
+ * - Transparency is converted to alpha channel (0-1 range)
30
+ *
31
+ * PineScript rules:
32
+ * - an `na` channel is 0; a fractional channel is truncated (127.6 is 127)
33
+ * - the transparency is clamped to 0..100 (140 is fully transparent, -5 is opaque); an `na` transparency is fully
34
+ * transparent
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * color.rgb(255, 0, 0) // Returns: "rgb(255, 0, 0)" - Red
39
+ * color.rgb(0, 255, 0, 50) // Returns: "rgba(0, 255, 0, 0.5)" - Semi-transparent green
40
+ * color.rgb(300, 0, 0) // Returns: "rgb(255, 0, 0)" - Clamped to 255
41
+ * ```
42
+ */
43
+ export function rgb(red, green, blue, transp) {
44
+ const r = channel(red);
45
+ const g = channel(green);
46
+ const b = channel(blue);
47
+ const a = transp !== undefined ? alphaOf(transp) : 1;
48
+ if (a === 1) {
49
+ return `rgb(${r}, ${g}, ${b})`;
50
+ }
51
+ return `rgba(${r}, ${g}, ${b}, ${a})`;
52
+ }
53
+ /**
54
+ * Creates a color from a hexadecimal string with optional transparency.
55
+ *
56
+ * @param hex - Hex color string (with or without '#' prefix, e.g., "#FF0000" or "FF0000")
57
+ * @param transp - Optional transparency (0-100). 0 = opaque, 100 = fully transparent
58
+ * @returns Color string in rgb() or rgba() format
59
+ *
60
+ * @remarks
61
+ * - Accepts hex strings with or without '#' prefix
62
+ * - Case-insensitive (accepts both "FF0000" and "ff0000")
63
+ * - Must be 6 characters (excluding '#')
64
+ * - Format: RRGGBB where each component is 00-FF
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * color.from_hex("#FF0000") // Returns: "rgb(255, 0, 0)" - Red
69
+ * color.from_hex("00FF00", 50) // Returns: "rgba(0, 255, 0, 0.5)" - Semi-transparent green
70
+ * color.from_hex("#0000FF") // Returns: "rgb(0, 0, 255)" - Blue
71
+ * color.from_hex("FFA500") // Returns: "rgb(255, 165, 0)" - Orange
72
+ * ```
73
+ */
74
+ export function from_hex(hex, transp) {
75
+ // Remove # if present
76
+ hex = hex.replace('#', '');
77
+ const r = parseInt(hex.substring(0, 2), 16);
78
+ const g = parseInt(hex.substring(2, 4), 16);
79
+ const b = parseInt(hex.substring(4, 6), 16);
80
+ return rgb(r, g, b, transp);
81
+ }
82
+ /**
83
+ * Creates a new color with modified transparency, preserving RGB components.
84
+ *
85
+ * @param baseColor - The base color to modify
86
+ * @param transp - New transparency value (0-100). 0 = opaque, 100 = fully transparent
87
+ * @returns New color with updated transparency
88
+ *
89
+ * @remarks
90
+ * - Preserves the RGB values from the base color
91
+ * - Replaces the transparency with the new value
92
+ * - Useful for creating semi-transparent versions of existing colors
93
+ * - PineScript clamps the transparency to 0..100 (`color.new(c, 140)` is fully transparent, `color.new(c, -5)` is
94
+ * opaque); an `na` transparency is fully transparent
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * const red = color.rgb(255, 0, 0)
99
+ * color.new_color(red, 50) // Returns: "rgba(255, 0, 0, 0.5)" - Semi-transparent red
100
+ * color.new_color(red, 0) // Returns: "rgb(255, 0, 0)" - Fully opaque
101
+ * color.new_color(red, 100) // Returns: "rgba(255, 0, 0, 0)" - Fully transparent
102
+ * ```
103
+ */
104
+ export function new_color(baseColor, transp) {
105
+ // Parse the color and apply transparency
106
+ const rgba = parseColor(baseColor);
107
+ return rgb(rgba.r, rgba.g, rgba.b, transp);
108
+ }
109
+ /**
110
+ * Extracts the red component from a color.
111
+ *
112
+ * @param clr - The color to extract from
113
+ * @returns Red component value (0-255)
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * color.r(color.rgb(255, 128, 64)) // Returns: 255
118
+ * color.r(color.from_hex("#FF0000")) // Returns: 255
119
+ * color.r(color.from_hex("#FFA500")) // Returns: 255 (orange)
120
+ * ```
121
+ */
122
+ export function r(clr) {
123
+ return parseColor(clr).r;
124
+ }
125
+ /**
126
+ * Extracts the green component from a color.
127
+ *
128
+ * @param clr - The color to extract from
129
+ * @returns Green component value (0-255)
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * color.g(color.rgb(255, 128, 64)) // Returns: 128
134
+ * color.g(color.from_hex("#00FF00")) // Returns: 255
135
+ * color.g(color.from_hex("#FFA500")) // Returns: 165 (orange)
136
+ * ```
137
+ */
138
+ export function g(clr) {
139
+ return parseColor(clr).g;
140
+ }
141
+ /**
142
+ * Extracts the blue component from a color.
143
+ *
144
+ * @param clr - The color to extract from
145
+ * @returns Blue component value (0-255)
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * color.b(color.rgb(255, 128, 64)) // Returns: 64
150
+ * color.b(color.from_hex("#0000FF")) // Returns: 255
151
+ * color.b(color.from_hex("#FFA500")) // Returns: 0 (orange)
152
+ * ```
153
+ */
154
+ export function b(clr) {
155
+ return parseColor(clr).b;
156
+ }
157
+ /**
158
+ * Extracts the transparency component from a color.
159
+ *
160
+ * @param clr - The color to extract from
161
+ * @returns Transparency value (0-100). 0 = fully opaque, 100 = fully transparent
162
+ *
163
+ * @remarks
164
+ * - Returns 0 for colors without transparency (rgb format)
165
+ * - Converts alpha channel (0-1) to transparency (0-100)
166
+ * - PineScript stores the alpha as a byte (0-255) and returns an integer transparency:
167
+ * `color.t(color.new(c, 33.3))` is 33
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * color.t(color.rgb(255, 0, 0)) // Returns: 0 (opaque)
172
+ * color.t(color.rgb(255, 0, 0, 50)) // Returns: 50
173
+ * color.t(color.rgb(255, 0, 0, 100)) // Returns: 100 (fully transparent)
174
+ * ```
175
+ */
176
+ export function t(clr) {
177
+ const alpha = Math.round((1 - parseColor(clr).t / 100) * 255);
178
+ return Math.round((1 - alpha / 255) * 100);
179
+ }
180
+ /**
181
+ * Helper function to parse color string to RGBA components.
182
+ *
183
+ * @internal
184
+ * @param clr - The color string to parse
185
+ * @returns Object containing r, g, b (0-255) and t (0-100) components
186
+ */
187
+ function parseColor(clr) {
188
+ if (typeof clr === 'string') {
189
+ // Hex: #RRGGBB, #RRGGBBAA (PineScript literals), #RGB, #RGBA
190
+ const hex = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(clr.trim());
191
+ if (hex) {
192
+ let digits = hex[1];
193
+ if (digits.length <= 4)
194
+ digits = [...digits].map((c) => c + c).join('');
195
+ const byte = (k) => parseInt(digits.slice(k, k + 2), 16);
196
+ return { r: byte(0), g: byte(2), b: byte(4), t: digits.length === 8 ? (1 - byte(6) / 255) * 100 : 0 };
197
+ }
198
+ // Handle rgb() or rgba() format
199
+ const match = clr.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/);
200
+ if (match) {
201
+ return {
202
+ r: parseInt(match[1]),
203
+ g: parseInt(match[2]),
204
+ b: parseInt(match[3]),
205
+ t: match[4] ? (1 - parseFloat(match[4])) * 100 : 0,
206
+ };
207
+ }
208
+ }
209
+ return { r: 0, g: 0, b: 0, t: 0 };
210
+ }
211
+ // Predefined color constants of PineScript v6.
212
+ // PineScript v5 differs for red (#FF5252), teal (#00897B) and yellow (#FFEB3B).
213
+ /**
214
+ * Aqua/Cyan color constant
215
+ * @constant {string} #00BCD4 - RGB(0, 188, 212)
216
+ */
217
+ export const aqua = '#00BCD4';
218
+ /**
219
+ * Black color constant
220
+ * @constant {string} #363A45 - RGB(54, 58, 69)
221
+ */
222
+ export const black = '#363A45';
223
+ /**
224
+ * Blue color constant
225
+ * @constant {string} #2962FF - RGB(41, 98, 255)
226
+ */
227
+ export const blue = '#2962FF';
228
+ /**
229
+ * Fuchsia/Magenta color constant
230
+ * @constant {string} #E040FB - RGB(224, 64, 251)
231
+ */
232
+ export const fuchsia = '#E040FB';
233
+ /**
234
+ * Gray color constant
235
+ * @constant {string} #787B86 - RGB(120, 123, 134)
236
+ */
237
+ export const gray = '#787B86';
238
+ /**
239
+ * Green color constant (same as lime)
240
+ * @constant {string} #4CAF50 - RGB(76, 175, 80)
241
+ */
242
+ export const green = '#4CAF50';
243
+ /**
244
+ * Lime color constant (same as green)
245
+ * @constant {string} #00E676 - RGB(0, 230, 118)
246
+ */
247
+ export const lime = '#00E676';
248
+ /**
249
+ * Maroon color constant
250
+ * @constant {string} #880E4F - RGB(136, 14, 79)
251
+ */
252
+ export const maroon = '#880E4F';
253
+ /**
254
+ * Navy color constant
255
+ * @constant {string} #311B92 - RGB(49, 27, 146)
256
+ */
257
+ export const navy = '#311B92';
258
+ /**
259
+ * Olive color constant
260
+ * @constant {string} #808000 - RGB(128, 128, 0)
261
+ */
262
+ export const olive = '#808000';
263
+ /**
264
+ * Orange color constant
265
+ * @constant {string} #FF9800 - RGB(255, 152, 0)
266
+ */
267
+ export const orange = '#FF9800';
268
+ /**
269
+ * Purple color constant
270
+ * @constant {string} #9C27B0 - RGB(156, 39, 176)
271
+ */
272
+ export const purple = '#9C27B0';
273
+ /**
274
+ * Red color constant
275
+ * @constant {string} #F23645 - RGB(242, 54, 69)
276
+ */
277
+ export const red = '#F23645';
278
+ /**
279
+ * Silver color constant
280
+ * @constant {string} #B2B5BE - RGB(178, 181, 190)
281
+ */
282
+ export const silver = '#B2B5BE';
283
+ /**
284
+ * Teal color constant
285
+ * @constant {string} #089981 - RGB(8, 153, 129)
286
+ */
287
+ export const teal = '#089981';
288
+ /**
289
+ * White color constant
290
+ * @constant {string} #FFFFFF - RGB(255, 255, 255)
291
+ */
292
+ export const white = '#FFFFFF';
293
+ /**
294
+ * Yellow color constant
295
+ * @constant {string} #FDD835 - RGB(253, 216, 53)
296
+ */
297
+ export const yellow = '#FDD835';
298
+ /**
299
+ * Creates a color from a gradient based on value position.
300
+ *
301
+ * @param value - Value to calculate position-dependent color
302
+ * @param bottom_value - Bottom position value corresponding to bottom_color
303
+ * @param top_value - Top position value corresponding to top_color
304
+ * @param bottom_color - Bottom position color
305
+ * @param top_color - Top position color
306
+ * @returns Color calculated from linear gradient
307
+ *
308
+ * @remarks
309
+ * PineScript rules:
310
+ * - If value <= bottom_value, returns bottom_color; else if value >= top_value, returns top_color
311
+ * - Otherwise the colours are mixed with their transparency (premultiplied alpha, alpha as a byte); the RGB channels
312
+ * and the alpha are truncated. PineScript's float rounding order is not known: a channel can differ by 1 when the
313
+ * exact result is an integer (same RGB at both ends)
314
+ * - An na value or bottom_value / top_value, or bottom_value == top_value, gives a fully transparent colour
315
+ * - An na colour counts as fully transparent
316
+ * - Works with rgb(), rgba() and hex (#RRGGBB, #RRGGBBAA) colours
317
+ *
318
+ * @example
319
+ * ```typescript
320
+ * // Value at middle of range gets middle color
321
+ * const midColor = color.from_gradient(50, 0, 100,
322
+ * color.rgb(255, 0, 0), // Red at bottom
323
+ * color.rgb(0, 255, 0) // Green at top
324
+ * ); // Returns color between red and green
325
+ *
326
+ * // Value at extremes
327
+ * const lowColor = color.from_gradient(-10, 0, 100, red, green); // Returns red
328
+ * const highColor = color.from_gradient(150, 0, 100, red, green); // Returns green
329
+ * ```
330
+ */
331
+ export function from_gradient(value, bottom_value, top_value, bottom_color, top_color) {
332
+ const transparent = 'rgba(0, 0, 0, 0)';
333
+ if ([value, bottom_value, top_value].some((v) => v === null || v === undefined || Number.isNaN(v)) || bottom_value === top_value) {
334
+ return transparent;
335
+ }
336
+ const k = value <= bottom_value ? 0 : value >= top_value ? 1 : (value - bottom_value) / (top_value - bottom_value);
337
+ // alpha as a byte (0-255), as PineScript stores it; an na colour (null / undefined) is fully transparent
338
+ const rgba = (c) => {
339
+ if (c === null || c === undefined)
340
+ return { r: 0, g: 0, b: 0, a: 0 };
341
+ const p = parseColor(c);
342
+ return { r: p.r, g: p.g, b: p.b, a: Math.round((1 - p.t / 100) * 255) };
343
+ };
344
+ const c1 = rgba(bottom_color);
345
+ const c2 = rgba(top_color);
346
+ const a = c1.a * (1 - k) + c2.a * k;
347
+ if (a === 0)
348
+ return transparent;
349
+ // operation order with the fewest differences to PineScript (channels as 0-1, alpha as a byte)
350
+ const mix = (x1, x2) => Math.floor((((x1 / 255) * c1.a) * (1 - k) + ((x2 / 255) * c2.a) * k) / (a / 255));
351
+ const [r, g, b] = [mix(c1.r, c2.r), mix(c1.g, c2.g), mix(c1.b, c2.b)];
352
+ const alpha = Math.floor(a);
353
+ return alpha === 255 ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${alpha / 255})`;
354
+ }
355
+ /**
356
+ * Alias for new_color function.
357
+ * Creates a new color with specified transparency from an existing color.
358
+ *
359
+ * @param baseColor - The base color
360
+ * @param transp - Transparency value (0-100). 0 = fully opaque, 100 = fully transparent
361
+ * @returns New color with applied transparency
362
+ *
363
+ * @remarks
364
+ * This is an alias for `new_color()` to match PineScript's `color.new()` syntax.
365
+ *
366
+ * @example
367
+ * ```typescript
368
+ * const redColor = color.rgb(255, 0, 0);
369
+ * const transparentRed = color.new(redColor, 50); // 50% transparent red
370
+ * ```
371
+ */
372
+ export { new_color as new };
373
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/color/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * PineScript comparison operators (`==`, `!=`, `<`, `<=`, `>`, `>=`) on numbers.
3
+ *
4
+ * PineScript rules:
5
+ * - the operators use an absolute tolerance of 1e-10: `a == b` when `|a - b| <= 1e-10`, `a < b` when
6
+ * `b - a > 1e-10` (the same for every magnitude; `0.1 + 0.2 == 0.3` is true)
7
+ * - every comparison with an `na` operand is false, `!=` included
8
+ * - built-in functions (`ta.crossover`, `ta.pivothigh`, `ta.highestbars`...) compare exactly
9
+ *
10
+ * The `Series` comparison methods (`gt`, `gte`, `lt`, `lte`, `eq`, `neq`) follow the same rules.
11
+ */
12
+ /** Tolerance of PineScript's comparison operators. */
13
+ export declare const EPSILON = 1e-10;
14
+ /** PineScript `a == b`. */
15
+ export declare function eq(a: number, b: number): boolean;
16
+ /** PineScript `a != b` (false when an operand is `na`). */
17
+ export declare function ne(a: number, b: number): boolean;
18
+ /** PineScript `a < b`. */
19
+ export declare function lt(a: number, b: number): boolean;
20
+ /** PineScript `a <= b`. */
21
+ export declare function le(a: number, b: number): boolean;
22
+ /** PineScript `a > b`. */
23
+ export declare function gt(a: number, b: number): boolean;
24
+ /** PineScript `a >= b`. */
25
+ export declare function ge(a: number, b: number): boolean;
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compare/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,sDAAsD;AACtD,eAAO,MAAM,OAAO,QAAQ,CAAC;AAI7B,2BAA2B;AAC3B,wBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,2DAA2D;AAC3D,wBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,0BAA0B;AAC1B,wBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,2BAA2B;AAC3B,wBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,0BAA0B;AAC1B,wBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,2BAA2B;AAC3B,wBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEhD"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * PineScript comparison operators (`==`, `!=`, `<`, `<=`, `>`, `>=`) on numbers.
3
+ *
4
+ * PineScript rules:
5
+ * - the operators use an absolute tolerance of 1e-10: `a == b` when `|a - b| <= 1e-10`, `a < b` when
6
+ * `b - a > 1e-10` (the same for every magnitude; `0.1 + 0.2 == 0.3` is true)
7
+ * - every comparison with an `na` operand is false, `!=` included
8
+ * - built-in functions (`ta.crossover`, `ta.pivothigh`, `ta.highestbars`...) compare exactly
9
+ *
10
+ * The `Series` comparison methods (`gt`, `gte`, `lt`, `lte`, `eq`, `neq`) follow the same rules.
11
+ */
12
+ /** Tolerance of PineScript's comparison operators. */
13
+ export const EPSILON = 1e-10;
14
+ const valid = (a, b) => !Number.isNaN(a) && !Number.isNaN(b);
15
+ /** PineScript `a == b`. */
16
+ export function eq(a, b) {
17
+ return valid(a, b) && Math.abs(a - b) <= EPSILON;
18
+ }
19
+ /** PineScript `a != b` (false when an operand is `na`). */
20
+ export function ne(a, b) {
21
+ return valid(a, b) && Math.abs(a - b) > EPSILON;
22
+ }
23
+ /** PineScript `a < b`. */
24
+ export function lt(a, b) {
25
+ return valid(a, b) && b - a > EPSILON;
26
+ }
27
+ /** PineScript `a <= b`. */
28
+ export function le(a, b) {
29
+ return valid(a, b) && a - b <= EPSILON;
30
+ }
31
+ /** PineScript `a > b`. */
32
+ export function gt(a, b) {
33
+ return valid(a, b) && a - b > EPSILON;
34
+ }
35
+ /** PineScript `a >= b`. */
36
+ export function ge(a, b) {
37
+ return valid(a, b) && b - a <= EPSILON;
38
+ }
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/compare/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC;AAE7B,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEtF,2BAA2B;AAC3B,MAAM,UAAU,EAAE,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC;AACnD,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,EAAE,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAClD,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,EAAE,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;AACxC,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,EAAE,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC;AACzC,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,EAAE,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;AACxC,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,EAAE,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC;AACzC,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Registry of the live drawing objects (lines, labels, boxes, polylines, linefills), as PineScript
3
+ * keeps them. PineScript rules:
4
+ *
5
+ * - `line.all`, `label.all`, ... list the live objects in creation order (a copy of the list)
6
+ * - `delete` removes an object; the object becomes `na`: its getters return NaN and its setters
7
+ * do nothing. Deleting a line with `line.delete` also deletes the linefills that use it
8
+ * - when a creation brings the count above `max_*_count + 5`, the oldest objects are deleted until
9
+ * `max_*_count` remain (default 50). Copies count as creations. Linefills follow the same rule with
10
+ * `max_lines_count`; lines deleted by this rule do not delete their linefills
11
+ *
12
+ * The script API (`executeScript`) resets the registry at the start of every run and applies the
13
+ * `max_*_count` values of `indicator()`. Outside a script run the registry is global to the module.
14
+ *
15
+ * @module drawing/registry
16
+ */
17
+ import type { Box, Label, Line, Linefill, Polyline } from '../types/index.js';
18
+ export type DrawingKind = 'line' | 'label' | 'box' | 'polyline' | 'linefill';
19
+ interface DrawingTypes {
20
+ line: Line;
21
+ label: Label;
22
+ box: Box;
23
+ polyline: Polyline;
24
+ linefill: Linefill;
25
+ }
26
+ /** Default `max_lines_count`, `max_labels_count`, `max_boxes_count`, `max_polylines_count`. */
27
+ export declare const DEFAULT_MAX_COUNT = 50;
28
+ export type DrawingLimits = Partial<Record<Exclude<DrawingKind, 'linefill'>, number>>;
29
+ /** Records a new object and deletes the oldest objects of its kind when the count is too high. */
30
+ export declare function register<K extends DrawingKind>(kind: K, obj: DrawingTypes[K]): DrawingTypes[K];
31
+ /** Deletes an object (no effect when it is already deleted). */
32
+ export declare function remove<K extends DrawingKind>(kind: K, obj: DrawingTypes[K]): void;
33
+ /** True when the object was deleted (by `delete` or by the maximum count). */
34
+ export declare function isDeleted(obj: unknown): boolean;
35
+ /** The live objects of a kind, in creation order (a new array). */
36
+ export declare function all<K extends DrawingKind>(kind: K): Array<DrawingTypes[K]>;
37
+ /** Forgets all objects (without deleting them) and sets the maximum counts (default 50). */
38
+ export declare function resetDrawings(newLimits?: DrawingLimits): void;
39
+ /** Changes the maximum counts without forgetting the objects (PineScript `indicator(max_*_count)`). */
40
+ export declare function setDrawingLimits(newLimits: DrawingLimits): void;
41
+ export {};
42
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/drawing/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE9E,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;AAE7E,UAAU,YAAY;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,+FAA+F;AAC/F,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAIpC,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AA4BtF,kGAAkG;AAClG,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAQ9F;AAED,gEAAgE;AAChE,wBAAgB,MAAM,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAKjF;AAED,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAE/C;AAED,mEAAmE;AACnE,wBAAgB,GAAG,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAE1E;AAED,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,SAAS,GAAE,aAAkB,GAAG,IAAI,CAQjE;AAED,uGAAuG;AACvG,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAE/D"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Registry of the live drawing objects (lines, labels, boxes, polylines, linefills), as PineScript
3
+ * keeps them. PineScript rules:
4
+ *
5
+ * - `line.all`, `label.all`, ... list the live objects in creation order (a copy of the list)
6
+ * - `delete` removes an object; the object becomes `na`: its getters return NaN and its setters
7
+ * do nothing. Deleting a line with `line.delete` also deletes the linefills that use it
8
+ * - when a creation brings the count above `max_*_count + 5`, the oldest objects are deleted until
9
+ * `max_*_count` remain (default 50). Copies count as creations. Linefills follow the same rule with
10
+ * `max_lines_count`; lines deleted by this rule do not delete their linefills
11
+ *
12
+ * The script API (`executeScript`) resets the registry at the start of every run and applies the
13
+ * `max_*_count` values of `indicator()`. Outside a script run the registry is global to the module.
14
+ *
15
+ * @module drawing/registry
16
+ */
17
+ /** Default `max_lines_count`, `max_labels_count`, `max_boxes_count`, `max_polylines_count`. */
18
+ export const DEFAULT_MAX_COUNT = 50;
19
+ /** Objects above the maximum that PineScript keeps before it deletes the oldest ones. */
20
+ const SLACK = 5;
21
+ const live = { line: [], label: [], box: [], polyline: [], linefill: [] };
22
+ let limits = {
23
+ line: DEFAULT_MAX_COUNT,
24
+ label: DEFAULT_MAX_COUNT,
25
+ box: DEFAULT_MAX_COUNT,
26
+ polyline: DEFAULT_MAX_COUNT,
27
+ };
28
+ const deleted = new WeakSet();
29
+ /** Numeric fields that become NaN when an object is deleted, so that its getters return `na`. */
30
+ const COORDINATES = {
31
+ line: ['x1', 'y1', 'x2', 'y2'],
32
+ label: ['x', 'y'],
33
+ box: ['left', 'top', 'right', 'bottom'],
34
+ polyline: [],
35
+ linefill: [],
36
+ };
37
+ function markDeleted(kind, obj, explicit) {
38
+ deleted.add(obj);
39
+ for (const field of COORDINATES[kind])
40
+ obj[field] = NaN;
41
+ if (kind === 'line' && explicit) {
42
+ for (const fill of live.linefill.filter((f) => f.line1 === obj || f.line2 === obj))
43
+ remove('linefill', fill);
44
+ }
45
+ }
46
+ /** Records a new object and deletes the oldest objects of its kind when the count is too high. */
47
+ export function register(kind, obj) {
48
+ const list = live[kind];
49
+ list.push(obj);
50
+ const max = limits[kind === 'linefill' ? 'line' : kind];
51
+ if (list.length > max + SLACK) {
52
+ for (const old of list.splice(0, list.length - max))
53
+ markDeleted(kind, old, false);
54
+ }
55
+ return obj;
56
+ }
57
+ /** Deletes an object (no effect when it is already deleted). */
58
+ export function remove(kind, obj) {
59
+ const list = live[kind];
60
+ const index = list.indexOf(obj);
61
+ if (index !== -1)
62
+ list.splice(index, 1);
63
+ if (!deleted.has(obj))
64
+ markDeleted(kind, obj, true);
65
+ }
66
+ /** True when the object was deleted (by `delete` or by the maximum count). */
67
+ export function isDeleted(obj) {
68
+ return typeof obj === 'object' && obj !== null && deleted.has(obj);
69
+ }
70
+ /** The live objects of a kind, in creation order (a new array). */
71
+ export function all(kind) {
72
+ return [...live[kind]];
73
+ }
74
+ /** Forgets all objects (without deleting them) and sets the maximum counts (default 50). */
75
+ export function resetDrawings(newLimits = {}) {
76
+ for (const kind of Object.keys(live))
77
+ live[kind].length = 0;
78
+ limits = {
79
+ line: newLimits.line ?? DEFAULT_MAX_COUNT,
80
+ label: newLimits.label ?? DEFAULT_MAX_COUNT,
81
+ box: newLimits.box ?? DEFAULT_MAX_COUNT,
82
+ polyline: newLimits.polyline ?? DEFAULT_MAX_COUNT,
83
+ };
84
+ }
85
+ /** Changes the maximum counts without forgetting the objects (PineScript `indicator(max_*_count)`). */
86
+ export function setDrawingLimits(newLimits) {
87
+ limits = { ...limits, ...Object.fromEntries(Object.entries(newLimits).filter(([, v]) => v !== undefined)) };
88
+ }
89
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/drawing/registry.ts"],"names":[],"mappings":"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"}