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,530 @@
1
+ /**
2
+ * Line namespace
3
+ * Functions for creating and manipulating line drawing objects.
4
+ *
5
+ * @remarks
6
+ * While lines are primarily visual in PineScript, the line.get_price() function provides
7
+ * computational value for algorithmic trading - calculating trend line breakouts,
8
+ * support/resistance levels, and pattern recognition.
9
+ *
10
+ * @version 6
11
+ */
12
+
13
+ import { all as allDrawings, isDeleted, register, remove } from '../drawing/registry.js';
14
+ import type { ChartPoint, Line, color } from '../types/index.js';
15
+
16
+ type LineXloc = 'bar_index' | 'bar_time';
17
+ type LineExtend = 'none' | 'left' | 'right' | 'both';
18
+ type LineStyle = 'solid' | 'dotted' | 'dashed' | 'arrow_left' | 'arrow_right' | 'arrow_both';
19
+
20
+ /**
21
+ * Creates a new line (PineScript `line.new`), with two chart points or with coordinates:
22
+ *
23
+ * - `line.new(first_point, second_point, xloc?, extend?, color?, style?, width?, force_overlay?)`
24
+ * - `line.new(x1, y1, x2, y2, xloc?, extend?, color?, style?, width?, force_overlay?)`
25
+ *
26
+ * With chart points, x is `point.index` for `bar_index` lines and `point.time` for `bar_time` lines.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * // Create a trend line from bar 0 (price 100) to bar 50 (price 150)
31
+ * const trendLine = line.new(0, 100, 50, 150, 'bar_index', 'right');
32
+ * const fromPoints = line.new(chartPoint.from_index(0, 100), chartPoint.from_index(50, 150));
33
+ *
34
+ * // Calculate price at bar 75 (extrapolated)
35
+ * const price = line.get_price(trendLine, 75); // Returns 175
36
+ * ```
37
+ */
38
+ export function new_line(
39
+ first_point: ChartPoint,
40
+ second_point: ChartPoint,
41
+ xloc?: LineXloc,
42
+ extend?: LineExtend,
43
+ lineColor?: color,
44
+ style?: LineStyle,
45
+ width?: number,
46
+ force_overlay?: boolean
47
+ ): Line;
48
+ export function new_line(
49
+ x1: number,
50
+ y1: number,
51
+ x2: number,
52
+ y2: number,
53
+ xloc?: LineXloc,
54
+ extend?: LineExtend,
55
+ lineColor?: color,
56
+ style?: LineStyle,
57
+ width?: number,
58
+ force_overlay?: boolean
59
+ ): Line;
60
+ export function new_line(...args: unknown[]): Line {
61
+ let x1: number, y1: number, x2: number, y2: number, rest: unknown[];
62
+ if (typeof args[0] === 'object' && args[0] !== null) {
63
+ const [p1, p2, ...others] = args as [ChartPoint, ChartPoint, ...unknown[]];
64
+ const xloc = (others[0] as LineXloc | undefined) ?? 'bar_index';
65
+ [x1, y1, x2, y2, rest] = [pointX(p1, xloc), p1.price, pointX(p2, xloc), p2.price, others];
66
+ } else {
67
+ [x1, y1, x2, y2] = args as [number, number, number, number];
68
+ rest = args.slice(4);
69
+ }
70
+ const [xloc, extend, lineColor, style, width, force_overlay] = rest as [
71
+ LineXloc?, LineExtend?, color?, LineStyle?, number?, boolean?,
72
+ ];
73
+ return register('line', {
74
+ x1,
75
+ y1,
76
+ x2,
77
+ y2,
78
+ xloc: xloc ?? 'bar_index',
79
+ extend: extend ?? 'none',
80
+ color: lineColor,
81
+ style: style || 'solid',
82
+ width: width || 1,
83
+ force_overlay: force_overlay ?? false,
84
+ });
85
+ }
86
+
87
+ /**
88
+ * Returns the price level of a line at a given bar index.
89
+ *
90
+ * @param id - Line object
91
+ * @param x - Bar index to calculate price at
92
+ * @returns Price level at the given bar index, or NaN if outside bounds and not extended
93
+ *
94
+ * @remarks
95
+ * - **CRITICAL COMPUTATIONAL FUNCTION** - Enables trend line breakout detection
96
+ * - Uses linear interpolation: y = y1 + (y2 - y1) * (x - x1) / (x2 - x1)
97
+ * - Respects extend mode:
98
+ * - 'none': Returns NaN if x is outside [x1, x2]
99
+ * - 'left': Extends infinitely to the left (x < x1)
100
+ * - 'right': Extends infinitely to the right (x > x2)
101
+ * - 'both': Extends infinitely in both directions
102
+ * - Only works with xloc='bar_index' lines (not xloc='bar_time')
103
+ * - In PineScript, this function treats all lines as if extend='both' regardless of actual setting
104
+ * For compatibility, we follow the actual extend setting
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * const trendLine = line.new(0, 100, 50, 150, 'bar_index', 'right');
109
+ *
110
+ * // Within segment
111
+ * line.get_price(trendLine, 25); // Returns 125
112
+ *
113
+ * // Extended right
114
+ * line.get_price(trendLine, 100); // Returns 200
115
+ *
116
+ * // Not extended left (with extend='right')
117
+ * line.get_price(trendLine, -10); // Returns NaN
118
+ *
119
+ * // Use for breakout detection
120
+ * const currentPrice = close[close.length - 1];
121
+ * const linePrice = line.get_price(trendLine, close.length - 1);
122
+ * if (currentPrice > linePrice) {
123
+ * console.log('Breakout above trend line!');
124
+ * }
125
+ * ```
126
+ */
127
+ export function get_price(id: Line, x: number): number {
128
+ const { x1, y1, x2, y2, extend, xloc } = id;
129
+
130
+ // Only works with bar_index xloc
131
+ if (xloc === 'bar_time') {
132
+ throw new Error('line.get_price() only works with xloc.bar_index lines, not xloc.bar_time');
133
+ }
134
+
135
+ // Avoid division by zero
136
+ if (x2 === x1) {
137
+ // Vertical line - return NaN or could return y1/y2
138
+ return NaN;
139
+ }
140
+
141
+ // Linear interpolation formula: y = y1 + (y2 - y1) * (x - x1) / (x2 - x1)
142
+ const slope = (y2 - y1) / (x2 - x1);
143
+ const price = y1 + slope * (x - x1);
144
+
145
+ // Check bounds based on extend mode
146
+ if (extend === 'none') {
147
+ // Only valid within the segment
148
+ if (x < Math.min(x1, x2) || x > Math.max(x1, x2)) {
149
+ return NaN;
150
+ }
151
+ } else if (extend === 'left') {
152
+ // Valid to the left and within, but not to the right
153
+ if (x > Math.max(x1, x2)) {
154
+ return NaN;
155
+ }
156
+ } else if (extend === 'right') {
157
+ // Valid to the right and within, but not to the left
158
+ if (x < Math.min(x1, x2)) {
159
+ return NaN;
160
+ }
161
+ }
162
+ // extend === 'both': always valid
163
+
164
+ return price;
165
+ }
166
+
167
+ /**
168
+ * Returns the first point's x coordinate.
169
+ *
170
+ * @param id - Line object
171
+ * @returns X coordinate of the first point
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * const line = line.new(10, 100, 50, 150);
176
+ * const x1 = line.get_x1(line); // Returns 10
177
+ * ```
178
+ */
179
+ export function get_x1(id: Line): number {
180
+ return id.x1;
181
+ }
182
+
183
+ /**
184
+ * Returns the second point's x coordinate.
185
+ *
186
+ * @param id - Line object
187
+ * @returns X coordinate of the second point
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * const line = line.new(10, 100, 50, 150);
192
+ * const x2 = line.get_x2(line); // Returns 50
193
+ * ```
194
+ */
195
+ export function get_x2(id: Line): number {
196
+ return id.x2;
197
+ }
198
+
199
+ /**
200
+ * Returns the first point's y coordinate (price level).
201
+ *
202
+ * @param id - Line object
203
+ * @returns Y coordinate (price) of the first point
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * const line = line.new(10, 100, 50, 150);
208
+ * const y1 = line.get_y1(line); // Returns 100
209
+ * ```
210
+ */
211
+ export function get_y1(id: Line): number {
212
+ return id.y1;
213
+ }
214
+
215
+ /**
216
+ * Returns the second point's y coordinate (price level).
217
+ *
218
+ * @param id - Line object
219
+ * @returns Y coordinate (price) of the second point
220
+ *
221
+ * @example
222
+ * ```typescript
223
+ * const line = line.new(10, 100, 50, 150);
224
+ * const y2 = line.get_y2(line); // Returns 150
225
+ * ```
226
+ */
227
+ export function get_y2(id: Line): number {
228
+ return id.y2;
229
+ }
230
+
231
+ /**
232
+ * Creates a copy of the line object.
233
+ *
234
+ * @param id - Line object to copy
235
+ * @returns New line object with same properties
236
+ *
237
+ * @remarks
238
+ * Creates a shallow copy of the line. Modifications to the copy won't affect the original.
239
+ *
240
+ * @example
241
+ * ```typescript
242
+ * const originalLine = line.new(0, 100, 50, 150);
243
+ * const copiedLine = line.copy(originalLine);
244
+ *
245
+ * // Modify copy without affecting original
246
+ * copiedLine.y2 = 200;
247
+ * ```
248
+ */
249
+ export function copy(id: Line): Line {
250
+ return register('line', { ...id });
251
+ }
252
+
253
+ /**
254
+ * Sets the first point's x coordinate.
255
+ *
256
+ * @param id - Line object to modify
257
+ * @param x - New x coordinate (bar index or timestamp)
258
+ * @returns Modified line object
259
+ *
260
+ * @example
261
+ * ```typescript
262
+ * const line = line.new(0, 100, 50, 150);
263
+ * line.set_x1(line, 10); // Move first point to bar 10
264
+ * ```
265
+ */
266
+ export function set_x1(id: Line, x: number): Line {
267
+ if (isDeleted(id)) return id;
268
+ id.x1 = x;
269
+ return id;
270
+ }
271
+
272
+ /**
273
+ * Sets the second point's x coordinate.
274
+ *
275
+ * @param id - Line object to modify
276
+ * @param x - New x coordinate (bar index or timestamp)
277
+ * @returns Modified line object
278
+ *
279
+ * @example
280
+ * ```typescript
281
+ * const line = line.new(0, 100, 50, 150);
282
+ * line.set_x2(line, 60); // Move second point to bar 60
283
+ * ```
284
+ */
285
+ export function set_x2(id: Line, x: number): Line {
286
+ if (isDeleted(id)) return id;
287
+ id.x2 = x;
288
+ return id;
289
+ }
290
+
291
+ /**
292
+ * Sets the first point's y coordinate (price level).
293
+ *
294
+ * @param id - Line object to modify
295
+ * @param y - New y coordinate (price)
296
+ * @returns Modified line object
297
+ *
298
+ * @example
299
+ * ```typescript
300
+ * const line = line.new(0, 100, 50, 150);
301
+ * line.set_y1(line, 110); // Move first point to price 110
302
+ * ```
303
+ */
304
+ export function set_y1(id: Line, y: number): Line {
305
+ if (isDeleted(id)) return id;
306
+ id.y1 = y;
307
+ return id;
308
+ }
309
+
310
+ /**
311
+ * Sets the second point's y coordinate (price level).
312
+ *
313
+ * @param id - Line object to modify
314
+ * @param y - New y coordinate (price)
315
+ * @returns Modified line object
316
+ *
317
+ * @example
318
+ * ```typescript
319
+ * const line = line.new(0, 100, 50, 150);
320
+ * line.set_y2(line, 160); // Move second point to price 160
321
+ * ```
322
+ */
323
+ export function set_y2(id: Line, y: number): Line {
324
+ if (isDeleted(id)) return id;
325
+ id.y2 = y;
326
+ return id;
327
+ }
328
+
329
+ /**
330
+ * Sets both coordinates of the first point.
331
+ *
332
+ * @param id - Line object to modify
333
+ * @param x - New x coordinate
334
+ * @param y - New y coordinate
335
+ * @returns Modified line object
336
+ *
337
+ * @example
338
+ * ```typescript
339
+ * const line = line.new(0, 100, 50, 150);
340
+ * line.set_xy1(line, 5, 105); // Move first point to (5, 105)
341
+ * ```
342
+ */
343
+ export function set_xy1(id: Line, x: number, y: number): Line {
344
+ if (isDeleted(id)) return id;
345
+ id.x1 = x;
346
+ id.y1 = y;
347
+ return id;
348
+ }
349
+
350
+ /**
351
+ * Sets both coordinates of the second point.
352
+ *
353
+ * @param id - Line object to modify
354
+ * @param x - New x coordinate
355
+ * @param y - New y coordinate
356
+ * @returns Modified line object
357
+ *
358
+ * @example
359
+ * ```typescript
360
+ * const line = line.new(0, 100, 50, 150);
361
+ * line.set_xy2(line, 60, 160); // Move second point to (60, 160)
362
+ * ```
363
+ */
364
+ export function set_xy2(id: Line, x: number, y: number): Line {
365
+ if (isDeleted(id)) return id;
366
+ id.x2 = x;
367
+ id.y2 = y;
368
+ return id;
369
+ }
370
+
371
+ /**
372
+ * Sets the coordinate system for the line.
373
+ *
374
+ * @param id - Line object to modify
375
+ * @param x1 - New first point x coordinate
376
+ * @param x2 - New second point x coordinate
377
+ * @param xloc - New coordinate system ('bar_index' or 'bar_time')
378
+ * @returns Modified line object
379
+ *
380
+ * @remarks
381
+ * When changing xloc, you must provide appropriate x coordinates for the new system.
382
+ *
383
+ * @example
384
+ * ```typescript
385
+ * const line = line.new(0, 100, 50, 150);
386
+ * // Change to timestamp-based coordinates
387
+ * line.set_xloc(line, 1609459200000, 1609545600000, 'bar_time');
388
+ * ```
389
+ */
390
+ export function set_xloc(id: Line, x1: number, x2: number, xloc: 'bar_index' | 'bar_time'): Line {
391
+ if (isDeleted(id)) return id;
392
+ id.x1 = x1;
393
+ id.x2 = x2;
394
+ id.xloc = xloc;
395
+ return id;
396
+ }
397
+
398
+ /**
399
+ * Sets the extension mode of the line.
400
+ *
401
+ * @param id - Line object to modify
402
+ * @param extend - New extension mode
403
+ * @returns Modified line object
404
+ *
405
+ * @example
406
+ * ```typescript
407
+ * const line = line.new(0, 100, 50, 150);
408
+ * line.set_extend(line, 'right'); // Extend line to the right
409
+ * ```
410
+ */
411
+ export function set_extend(id: Line, extend: 'none' | 'left' | 'right' | 'both'): Line {
412
+ if (isDeleted(id)) return id;
413
+ id.extend = extend;
414
+ return id;
415
+ }
416
+
417
+ /**
418
+ * Sets the line color.
419
+ *
420
+ * @param id - Line object to modify
421
+ * @param color - New line color
422
+ * @returns Modified line object
423
+ *
424
+ * @example
425
+ * ```typescript
426
+ * const line = line.new(0, 100, 50, 150);
427
+ * line.set_color(line, '#FF0000'); // Change to red
428
+ * ```
429
+ */
430
+ export function set_color(id: Line, lineColor: color): Line {
431
+ if (isDeleted(id)) return id;
432
+ id.color = lineColor;
433
+ return id;
434
+ }
435
+
436
+ /**
437
+ * Sets the line style.
438
+ *
439
+ * @param id - Line object to modify
440
+ * @param style - New line style
441
+ * @returns Modified line object
442
+ *
443
+ * @example
444
+ * ```typescript
445
+ * const line = line.new(0, 100, 50, 150);
446
+ * line.set_style(line, 'dashed'); // Change to dashed line
447
+ * ```
448
+ */
449
+ export function set_style(id: Line, style: 'solid' | 'dotted' | 'dashed' | 'arrow_left' | 'arrow_right' | 'arrow_both'): Line {
450
+ if (isDeleted(id)) return id;
451
+ id.style = style;
452
+ return id;
453
+ }
454
+
455
+ /**
456
+ * Sets the line width.
457
+ *
458
+ * @param id - Line object to modify
459
+ * @param width - New line width in pixels
460
+ * @returns Modified line object
461
+ *
462
+ * @example
463
+ * ```typescript
464
+ * const line = line.new(0, 100, 50, 150);
465
+ * line.set_width(line, 3); // Make line thicker
466
+ * ```
467
+ */
468
+ export function set_width(id: Line, width: number): Line {
469
+ if (isDeleted(id)) return id;
470
+ id.width = width;
471
+ return id;
472
+ }
473
+
474
+ /**
475
+ * Deletes the line object.
476
+ *
477
+ * @param id - Line object to delete
478
+ *
479
+ * @remarks
480
+ * Removes the line from `line.all()`. As in PineScript, the deleted line is `na`: its getters
481
+ * return NaN and its setters do nothing. Deleting it twice has no effect. Deleting a line also deletes the linefills that use it.
482
+ *
483
+ * @example
484
+ * ```typescript
485
+ * const line = line.new(0, 100, 50, 150);
486
+ * line.delete(line);
487
+ * // line.all() no longer contains it
488
+ * ```
489
+ */
490
+ export function delete_line(id: Line): void {
491
+ remove('line', id);
492
+ }
493
+
494
+ /** x coordinate of a chart point for an object's xloc (`na` when the point has no such coordinate). */
495
+ function pointX(point: ChartPoint, xloc: 'bar_index' | 'bar_time'): number {
496
+ const x = xloc === 'bar_time' ? point.time : point.index;
497
+ return x ?? NaN;
498
+ }
499
+
500
+ /**
501
+ * All live lines, in creation order (PineScript `line.all`). A new array: later changes do not affect it.
502
+ */
503
+ export function all(): Line[] {
504
+ return allDrawings('line');
505
+ }
506
+
507
+ /**
508
+ * Sets the first point of the line from a chart point: `point.index` for `bar_index` lines,
509
+ * `point.time` for `bar_time` lines (`na` when the point does not have it), and `point.price`.
510
+ */
511
+ export function set_first_point(id: Line, point: ChartPoint): Line {
512
+ if (isDeleted(id)) return id;
513
+ id.x1 = pointX(point, id.xloc);
514
+ id.y1 = point.price;
515
+ return id;
516
+ }
517
+
518
+ /**
519
+ * Sets the second point of the line from a chart point (see {@link set_first_point}).
520
+ */
521
+ export function set_second_point(id: Line, point: ChartPoint): Line {
522
+ if (isDeleted(id)) return id;
523
+ id.x2 = pointX(point, id.xloc);
524
+ id.y2 = point.price;
525
+ return id;
526
+ }
527
+
528
+ // Alias to match PineScript API
529
+ export { new_line as new };
530
+ export { delete_line as delete };
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Linefill namespace
3
+ * Functions for creating and manipulating linefill drawing objects.
4
+ *
5
+ * @remarks
6
+ * Linefill objects fill the area between two lines with a color.
7
+ * They have minimal computational value but automatically follow line movements
8
+ * and provide a way to retrieve the underlying line references.
9
+ *
10
+ * @version 6
11
+ */
12
+
13
+ import { all as allDrawings, isDeleted, register, remove } from '../drawing/registry.js';
14
+ import type { Linefill, Line, color } from '../types/index.js';
15
+
16
+ /**
17
+ * Creates a new linefill object that fills the area between two lines.
18
+ *
19
+ * @param line1 - First line object
20
+ * @param line2 - Second line object
21
+ * @param fillColor - Fill color (optional)
22
+ * @returns New linefill object
23
+ *
24
+ * @remarks
25
+ * - Automatically follows line movements (if lines are updated, fill updates too)
26
+ * - Automatically deleted if either line is deleted
27
+ * - If both lines extend in same direction, fill extends too
28
+ * - Purely visual in PineScript, but getters allow retrieving line references
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * import { line, linefill } from 'oakscriptjs';
33
+ *
34
+ * // Create channel lines
35
+ * const upperLine = line.new(0, 160, 50, 170, 'bar_index', 'right');
36
+ * const lowerLine = line.new(0, 140, 50, 150, 'bar_index', 'right');
37
+ *
38
+ * // Fill channel with color
39
+ * const channelFill = linefill.new(upperLine, lowerLine, '#0000FF20'); // Transparent blue
40
+ * ```
41
+ */
42
+ export function new_linefill(line1: Line, line2: Line, fillColor?: color): Linefill {
43
+ return register('linefill', {
44
+ line1,
45
+ line2,
46
+ color: fillColor
47
+ });
48
+ }
49
+
50
+ /**
51
+ * Returns the first line reference.
52
+ *
53
+ * @param id - Linefill object
54
+ * @returns First line object
55
+ *
56
+ * @remarks
57
+ * Can be used to retrieve and manipulate the first line.
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * const channelFill = linefill.new(upperLine, lowerLine);
62
+ *
63
+ * // Later, retrieve and update the first line
64
+ * const line1 = linefill.get_line1(channelFill);
65
+ * line.set_y2(line1, 175); // Update upper line's second point
66
+ * ```
67
+ */
68
+ export function get_line1(id: Linefill): Line {
69
+ return id.line1;
70
+ }
71
+
72
+ /**
73
+ * Returns the second line reference.
74
+ *
75
+ * @param id - Linefill object
76
+ * @returns Second line object
77
+ *
78
+ * @remarks
79
+ * Can be used to retrieve and manipulate the second line.
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const channelFill = linefill.new(upperLine, lowerLine);
84
+ *
85
+ * // Later, retrieve and update the second line
86
+ * const line2 = linefill.get_line2(channelFill);
87
+ * line.set_y2(line2, 145); // Update lower line's second point
88
+ * ```
89
+ */
90
+ export function get_line2(id: Linefill): Line {
91
+ return id.line2;
92
+ }
93
+
94
+ /**
95
+ * Sets the fill color.
96
+ *
97
+ * @param id - Linefill object to modify
98
+ * @param fillColor - New fill color
99
+ * @returns Modified linefill object
100
+ *
101
+ * @remarks
102
+ * Useful for dynamically changing channel colors based on conditions.
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const channelFill = linefill.new(upperLine, lowerLine, '#0000FF20');
107
+ *
108
+ * // Change color based on trend
109
+ * if (bullish) {
110
+ * linefill.set_color(channelFill, '#00FF0020'); // Green
111
+ * } else {
112
+ * linefill.set_color(channelFill, '#FF000020'); // Red
113
+ * }
114
+ * ```
115
+ */
116
+ export function set_color(id: Linefill, fillColor: color): Linefill {
117
+ if (isDeleted(id)) return id;
118
+ id.color = fillColor;
119
+ return id;
120
+ }
121
+
122
+ /**
123
+ * Deletes the linefill object.
124
+ *
125
+ * @param id - Linefill object to delete
126
+ *
127
+ * @remarks
128
+ * Removes the linefill from `linefill.all()`. As in PineScript, the deleted linefill is `na`: its getters
129
+ * return NaN and its setters do nothing. Deleting it twice has no effect.
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * const channelFill = linefill.new(upperLine, lowerLine);
134
+ * linefill.delete(channelFill);
135
+ * // linefill.all() no longer contains it
136
+ * ```
137
+ */
138
+ export function delete_linefill(id: Linefill): void {
139
+ remove('linefill', id);
140
+ }
141
+
142
+
143
+ /**
144
+ * All live linefills, in creation order (PineScript `linefill.all`). A new array.
145
+ */
146
+ export function all(): Linefill[] {
147
+ return allDrawings('linefill');
148
+ }
149
+
150
+ // Alias to match PineScript API
151
+ export { new_linefill as new };
152
+ export { delete_linefill as delete };