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,680 @@
1
+ /**
2
+ * Box namespace
3
+ * Functions for creating and manipulating box drawing objects.
4
+ *
5
+ * @remarks
6
+ * Box objects represent rectangular areas on the chart. The getter functions
7
+ * (get_top, get_bottom, get_left, get_right) enable computational use cases like:
8
+ * - Gap detection and tracking (detecting when price fills gaps)
9
+ * - Range breakout analysis (detecting when price breaks out of consolidation)
10
+ * - Rectangle pattern recognition
11
+ *
12
+ * @version 6
13
+ */
14
+
15
+ import { all as allDrawings, isDeleted, register, remove } from '../drawing/registry.js';
16
+ import type { ChartPoint, Box, color } from '../types/index.js';
17
+
18
+ type BoxXloc = 'bar_index' | 'bar_time';
19
+ type BoxExtend = 'none' | 'left' | 'right' | 'both';
20
+
21
+ /**
22
+ * Creates a new box (PineScript `box.new`), with two chart points or with coordinates, in PineScript's
23
+ * parameter order:
24
+ *
25
+ * - `box.new(top_left, bottom_right, border_color?, border_width?, border_style?, extend?, xloc?, bgcolor?,
26
+ * text?, text_size?, text_color?, text_halign?, text_valign?, text_wrap?, text_font_family?,
27
+ * force_overlay?, text_formatting?)`
28
+ * - `box.new(left, top, right, bottom, border_color?, border_width?, border_style?, extend?, xloc?, ...)`
29
+ *
30
+ * With chart points, x is `point.index` for `bar_index` boxes and `point.time` for `bar_time` boxes.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Gap box from bar 10 to 20, between 100 and 105, extended to the right
35
+ * const gap = box.new(10, 105, 20, 100, '#2196F3', 1, 'solid', 'right');
36
+ * ```
37
+ */
38
+ export function new_box(
39
+ top_left: ChartPoint,
40
+ bottom_right: ChartPoint,
41
+ border_color?: color,
42
+ border_width?: number,
43
+ border_style?: 'solid' | 'dotted' | 'dashed',
44
+ extend?: BoxExtend,
45
+ xloc?: BoxXloc,
46
+ bgcolor?: color,
47
+ text?: string,
48
+ text_size?: string | number,
49
+ text_color?: color,
50
+ text_halign?: 'left' | 'center' | 'right',
51
+ text_valign?: 'top' | 'center' | 'bottom',
52
+ text_wrap?: 'none' | 'auto',
53
+ text_font_family?: 'default' | 'monospace',
54
+ force_overlay?: boolean,
55
+ text_formatting?: number
56
+ ): Box;
57
+ export function new_box(
58
+ left: number,
59
+ top: number,
60
+ right: number,
61
+ bottom: number,
62
+ border_color?: color,
63
+ border_width?: number,
64
+ border_style?: 'solid' | 'dotted' | 'dashed',
65
+ extend?: BoxExtend,
66
+ xloc?: BoxXloc,
67
+ bgcolor?: color,
68
+ text?: string,
69
+ text_size?: string | number,
70
+ text_color?: color,
71
+ text_halign?: 'left' | 'center' | 'right',
72
+ text_valign?: 'top' | 'center' | 'bottom',
73
+ text_wrap?: 'none' | 'auto',
74
+ text_font_family?: 'default' | 'monospace',
75
+ force_overlay?: boolean,
76
+ text_formatting?: number
77
+ ): Box;
78
+ export function new_box(...args: unknown[]): Box {
79
+ let left: number, top: number, right: number, bottom: number, rest: unknown[];
80
+ if (typeof args[0] === 'object' && args[0] !== null) {
81
+ const [tl, br, ...others] = args as [ChartPoint, ChartPoint, ...unknown[]];
82
+ const xloc = (others[4] as BoxXloc | undefined) ?? 'bar_index';
83
+ [left, top, right, bottom, rest] = [pointX(tl, xloc), tl.price, pointX(br, xloc), br.price, others];
84
+ } else {
85
+ [left, top, right, bottom] = args as [number, number, number, number];
86
+ rest = args.slice(4);
87
+ }
88
+ const [border_color, border_width, border_style, extend, xloc, bgcolor, text, text_size, text_color,
89
+ text_halign, text_valign, text_wrap, text_font_family, force_overlay, text_formatting] = rest as [
90
+ color?, number?, ('solid' | 'dotted' | 'dashed')?, BoxExtend?, BoxXloc?, color?, string?,
91
+ (string | number)?, color?, ('left' | 'center' | 'right')?, ('top' | 'center' | 'bottom')?,
92
+ ('none' | 'auto')?, ('default' | 'monospace')?, boolean?, number?,
93
+ ];
94
+ return register('box', {
95
+ left,
96
+ top,
97
+ right,
98
+ bottom,
99
+ xloc: xloc ?? 'bar_index',
100
+ extend: extend ?? 'none',
101
+ border_color,
102
+ border_width: border_width || 1,
103
+ border_style: border_style || 'solid',
104
+ bgcolor,
105
+ text,
106
+ text_size,
107
+ text_color,
108
+ text_halign,
109
+ text_valign,
110
+ text_wrap,
111
+ text_font_family,
112
+ force_overlay: force_overlay ?? false,
113
+ text_formatting,
114
+ });
115
+ }
116
+
117
+ /**
118
+ * Returns the left border x coordinate.
119
+ *
120
+ * @param id - Box object
121
+ * @returns Left border coordinate (bar index or timestamp)
122
+ *
123
+ * @remarks
124
+ * **COMPUTATIONAL USE**: Calculate gap duration, validate range timeframes
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * const gap = box.new(10, 105, 20, 100);
129
+ * const currentBar = 30;
130
+ * const duration = currentBar - box.get_left(gap); // Returns 20
131
+ *
132
+ * if (duration > 50) {
133
+ * console.log('Gap has been open for 50+ bars');
134
+ * }
135
+ * ```
136
+ */
137
+ export function get_left(id: Box): number {
138
+ return id.left;
139
+ }
140
+
141
+ /**
142
+ * Returns the right border x coordinate.
143
+ *
144
+ * @param id - Box object
145
+ * @returns Right border coordinate (bar index or timestamp)
146
+ *
147
+ * @remarks
148
+ * **COMPUTATIONAL USE**: Calculate gap duration, update trailing edges
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * const range = box.new(100, 155, 150, 145);
153
+ * const width = box.get_right(range) - box.get_left(range); // Returns 50 bars
154
+ * ```
155
+ */
156
+ export function get_right(id: Box): number {
157
+ return id.right;
158
+ }
159
+
160
+ /**
161
+ * Returns the top border price level.
162
+ *
163
+ * @param id - Box object
164
+ * @returns Top border price
165
+ *
166
+ * @remarks
167
+ * **COMPUTATIONAL USE**: Detect breakouts above resistance, check gap fills
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * const gap = box.new(10, 105, 20, 100); // Bearish gap
172
+ *
173
+ * // Check if price has filled gap from below
174
+ * const high = 106;
175
+ * if (high > box.get_top(gap)) {
176
+ * console.log('Gap completely filled!');
177
+ * }
178
+ * ```
179
+ */
180
+ export function get_top(id: Box): number {
181
+ return id.top;
182
+ }
183
+
184
+ /**
185
+ * Returns the bottom border price level.
186
+ *
187
+ * @param id - Box object
188
+ * @returns Bottom border price
189
+ *
190
+ * @remarks
191
+ * **COMPUTATIONAL USE**: Detect breakouts below support, check gap fills
192
+ *
193
+ * @example
194
+ * ```typescript
195
+ * const gap = box.new(10, 105, 20, 100); // Bearish gap
196
+ *
197
+ * // Check if price has touched gap from above
198
+ * const low = 104;
199
+ * if (low < box.get_top(gap) && low > box.get_bottom(gap)) {
200
+ * console.log('Price entered the gap!');
201
+ * }
202
+ * ```
203
+ */
204
+ export function get_bottom(id: Box): number {
205
+ return id.bottom;
206
+ }
207
+
208
+ /**
209
+ * Creates a copy of the box object.
210
+ *
211
+ * @param id - Box object to copy
212
+ * @returns New box object with same properties
213
+ *
214
+ * @remarks
215
+ * Creates a shallow copy of the box. Modifications to the copy won't affect the original.
216
+ *
217
+ * @example
218
+ * ```typescript
219
+ * const originalBox = box.new(10, 105, 20, 100);
220
+ * const copiedBox = box.copy(originalBox);
221
+ *
222
+ * // Modify copy without affecting original
223
+ * copiedBox.top = 110;
224
+ * ```
225
+ */
226
+ export function copy(id: Box): Box {
227
+ return register('box', { ...id });
228
+ }
229
+
230
+ // =============================================================================
231
+ // COORDINATE SETTERS
232
+ // =============================================================================
233
+
234
+ /**
235
+ * Sets the left border x coordinate.
236
+ *
237
+ * @param id - Box object to modify
238
+ * @param left - New left border coordinate
239
+ * @returns Modified box object
240
+ *
241
+ * @example
242
+ * ```typescript
243
+ * const box = box.new(10, 105, 20, 100);
244
+ * box.set_left(box, 15); // Move left edge to bar 15
245
+ * ```
246
+ */
247
+ export function set_left(id: Box, left: number): Box {
248
+ if (isDeleted(id)) return id;
249
+ id.left = left;
250
+ return id;
251
+ }
252
+
253
+ /**
254
+ * Sets the right border x coordinate.
255
+ *
256
+ * @param id - Box object to modify
257
+ * @param right - New right border coordinate
258
+ * @returns Modified box object
259
+ *
260
+ * @example
261
+ * ```typescript
262
+ * const box = box.new(10, 105, 20, 100);
263
+ * box.set_right(box, 25); // Move right edge to bar 25
264
+ * ```
265
+ */
266
+ export function set_right(id: Box, right: number): Box {
267
+ if (isDeleted(id)) return id;
268
+ id.right = right;
269
+ return id;
270
+ }
271
+
272
+ /**
273
+ * Sets the top border price level.
274
+ *
275
+ * @param id - Box object to modify
276
+ * @param top - New top border price
277
+ * @returns Modified box object
278
+ *
279
+ * @example
280
+ * ```typescript
281
+ * const box = box.new(10, 105, 20, 100);
282
+ * box.set_top(box, 110); // Move top edge to price 110
283
+ * ```
284
+ */
285
+ export function set_top(id: Box, top: number): Box {
286
+ if (isDeleted(id)) return id;
287
+ id.top = top;
288
+ return id;
289
+ }
290
+
291
+ /**
292
+ * Sets the bottom border price level.
293
+ *
294
+ * @param id - Box object to modify
295
+ * @param bottom - New bottom border price
296
+ * @returns Modified box object
297
+ *
298
+ * @example
299
+ * ```typescript
300
+ * const box = box.new(10, 105, 20, 100);
301
+ * box.set_bottom(box, 95); // Move bottom edge to price 95
302
+ * ```
303
+ */
304
+ export function set_bottom(id: Box, bottom: number): Box {
305
+ if (isDeleted(id)) return id;
306
+ id.bottom = bottom;
307
+ return id;
308
+ }
309
+
310
+ /**
311
+ * Sets the left and top coordinates.
312
+ *
313
+ * @param id - Box object to modify
314
+ * @param left - New left border coordinate
315
+ * @param top - New top border price
316
+ * @returns Modified box object
317
+ *
318
+ * @example
319
+ * ```typescript
320
+ * const box = box.new(10, 105, 20, 100);
321
+ * box.set_lefttop(box, 12, 108); // Move top-left corner
322
+ * ```
323
+ */
324
+ export function set_lefttop(id: Box, left: number, top: number): Box {
325
+ if (isDeleted(id)) return id;
326
+ id.left = left;
327
+ id.top = top;
328
+ return id;
329
+ }
330
+
331
+ /**
332
+ * Sets the right and bottom coordinates.
333
+ *
334
+ * @param id - Box object to modify
335
+ * @param right - New right border coordinate
336
+ * @param bottom - New bottom border price
337
+ * @returns Modified box object
338
+ *
339
+ * @example
340
+ * ```typescript
341
+ * const box = box.new(10, 105, 20, 100);
342
+ * box.set_rightbottom(box, 25, 98); // Move bottom-right corner
343
+ * ```
344
+ */
345
+ export function set_rightbottom(id: Box, right: number, bottom: number): Box {
346
+ if (isDeleted(id)) return id;
347
+ id.right = right;
348
+ id.bottom = bottom;
349
+ return id;
350
+ }
351
+
352
+ /**
353
+ * Sets the coordinate system for the box.
354
+ *
355
+ * @param id - Box object to modify
356
+ * @param left - New left border coordinate
357
+ * @param right - New right border coordinate
358
+ * @param xloc - New coordinate system ('bar_index' or 'bar_time')
359
+ * @returns Modified box object
360
+ *
361
+ * @remarks
362
+ * When changing xloc, you must provide appropriate x coordinates for the new system.
363
+ *
364
+ * @example
365
+ * ```typescript
366
+ * const box = box.new(10, 105, 20, 100);
367
+ * // Change to timestamp-based coordinates
368
+ * box.set_xloc(box, 1609459200000, 1609545600000, 'bar_time');
369
+ * ```
370
+ */
371
+ export function set_xloc(id: Box, left: number, right: number, xloc: 'bar_index' | 'bar_time'): Box {
372
+ if (isDeleted(id)) return id;
373
+ id.left = left;
374
+ id.right = right;
375
+ id.xloc = xloc;
376
+ return id;
377
+ }
378
+
379
+ /**
380
+ * Sets the horizontal extension mode.
381
+ *
382
+ * @param id - Box object to modify
383
+ * @param extend - New extension mode
384
+ * @returns Modified box object
385
+ *
386
+ * @example
387
+ * ```typescript
388
+ * const box = box.new(10, 105, 20, 100);
389
+ * box.set_extend(box, 'right'); // Extend box to the right
390
+ * ```
391
+ */
392
+ export function set_extend(id: Box, extend: 'none' | 'left' | 'right' | 'both'): Box {
393
+ if (isDeleted(id)) return id;
394
+ id.extend = extend;
395
+ return id;
396
+ }
397
+
398
+ // =============================================================================
399
+ // STYLING SETTERS
400
+ // =============================================================================
401
+
402
+ /**
403
+ * Sets the border color.
404
+ *
405
+ * @param id - Box object to modify
406
+ * @param borderColor - New border color
407
+ * @returns Modified box object
408
+ *
409
+ * @example
410
+ * ```typescript
411
+ * const box = box.new(10, 105, 20, 100);
412
+ * box.set_border_color(box, '#FF0000'); // Red border
413
+ * ```
414
+ */
415
+ export function set_border_color(id: Box, borderColor: color): Box {
416
+ if (isDeleted(id)) return id;
417
+ id.border_color = borderColor;
418
+ return id;
419
+ }
420
+
421
+ /**
422
+ * Sets the border width.
423
+ *
424
+ * @param id - Box object to modify
425
+ * @param width - New border width in pixels
426
+ * @returns Modified box object
427
+ *
428
+ * @example
429
+ * ```typescript
430
+ * const box = box.new(10, 105, 20, 100);
431
+ * box.set_border_width(box, 2); // Thicker border
432
+ * ```
433
+ */
434
+ export function set_border_width(id: Box, width: number): Box {
435
+ if (isDeleted(id)) return id;
436
+ id.border_width = width;
437
+ return id;
438
+ }
439
+
440
+ /**
441
+ * Sets the border style.
442
+ *
443
+ * @param id - Box object to modify
444
+ * @param style - New border style
445
+ * @returns Modified box object
446
+ *
447
+ * @example
448
+ * ```typescript
449
+ * const box = box.new(10, 105, 20, 100);
450
+ * box.set_border_style(box, 'dashed'); // Dashed border
451
+ * ```
452
+ */
453
+ export function set_border_style(id: Box, style: 'solid' | 'dotted' | 'dashed'): Box {
454
+ if (isDeleted(id)) return id;
455
+ id.border_style = style;
456
+ return id;
457
+ }
458
+
459
+ /**
460
+ * Sets the background fill color.
461
+ *
462
+ * @param id - Box object to modify
463
+ * @param bgColor - New background color
464
+ * @returns Modified box object
465
+ *
466
+ * @example
467
+ * ```typescript
468
+ * const box = box.new(10, 105, 20, 100);
469
+ * box.set_bgcolor(box, '#00FF0030'); // Transparent green fill
470
+ * ```
471
+ */
472
+ export function set_bgcolor(id: Box, bgColor: color): Box {
473
+ if (isDeleted(id)) return id;
474
+ id.bgcolor = bgColor;
475
+ return id;
476
+ }
477
+
478
+ // =============================================================================
479
+ // TEXT SETTERS
480
+ // =============================================================================
481
+
482
+ /**
483
+ * Sets the text content.
484
+ *
485
+ * @param id - Box object to modify
486
+ * @param text - New text content
487
+ * @returns Modified box object
488
+ *
489
+ * @example
490
+ * ```typescript
491
+ * const box = box.new(10, 105, 20, 100);
492
+ * box.set_text(box, 'Gap Filled'); // Update text
493
+ * ```
494
+ */
495
+ export function set_text(id: Box, text: string): Box {
496
+ if (isDeleted(id)) return id;
497
+ id.text = text;
498
+ return id;
499
+ }
500
+
501
+ /**
502
+ * Sets the text color.
503
+ *
504
+ * @param id - Box object to modify
505
+ * @param textColor - New text color
506
+ * @returns Modified box object
507
+ *
508
+ * @example
509
+ * ```typescript
510
+ * const box = box.new(10, 105, 20, 100);
511
+ * box.set_text_color(box, '#FFFFFF'); // White text
512
+ * ```
513
+ */
514
+ export function set_text_color(id: Box, textColor: color): Box {
515
+ if (isDeleted(id)) return id;
516
+ id.text_color = textColor;
517
+ return id;
518
+ }
519
+
520
+ /**
521
+ * Sets the text size.
522
+ *
523
+ * @param id - Box object to modify
524
+ * @param size - New text size
525
+ * @returns Modified box object
526
+ *
527
+ * @example
528
+ * ```typescript
529
+ * const box = box.new(10, 105, 20, 100);
530
+ * box.set_text_size(box, 'large'); // Larger text
531
+ * ```
532
+ */
533
+ export function set_text_size(id: Box, size: string | number): Box {
534
+ if (isDeleted(id)) return id;
535
+ id.text_size = size;
536
+ return id;
537
+ }
538
+
539
+ /**
540
+ * Sets the horizontal text alignment.
541
+ *
542
+ * @param id - Box object to modify
543
+ * @param align - New horizontal alignment
544
+ * @returns Modified box object
545
+ *
546
+ * @example
547
+ * ```typescript
548
+ * const box = box.new(10, 105, 20, 100);
549
+ * box.set_text_halign(box, 'center'); // Center text horizontally
550
+ * ```
551
+ */
552
+ export function set_text_halign(id: Box, align: 'left' | 'center' | 'right'): Box {
553
+ if (isDeleted(id)) return id;
554
+ id.text_halign = align;
555
+ return id;
556
+ }
557
+
558
+ /**
559
+ * Sets the vertical text alignment.
560
+ *
561
+ * @param id - Box object to modify
562
+ * @param align - New vertical alignment
563
+ * @returns Modified box object
564
+ *
565
+ * @example
566
+ * ```typescript
567
+ * const box = box.new(10, 105, 20, 100);
568
+ * box.set_text_valign(box, 'center'); // Center text vertically
569
+ * ```
570
+ */
571
+ export function set_text_valign(id: Box, align: 'top' | 'center' | 'bottom'): Box {
572
+ if (isDeleted(id)) return id;
573
+ id.text_valign = align;
574
+ return id;
575
+ }
576
+
577
+ /**
578
+ * Sets the text wrapping mode.
579
+ *
580
+ * @param id - Box object to modify
581
+ * @param wrap - New text wrap mode
582
+ * @returns Modified box object
583
+ *
584
+ * @example
585
+ * ```typescript
586
+ * const box = box.new(10, 105, 20, 100);
587
+ * box.set_text_wrap(box, 'auto'); // Enable text wrapping
588
+ * ```
589
+ */
590
+ export function set_text_wrap(id: Box, wrap: 'none' | 'auto'): Box {
591
+ if (isDeleted(id)) return id;
592
+ id.text_wrap = wrap;
593
+ return id;
594
+ }
595
+
596
+ /**
597
+ * Sets the text font family.
598
+ *
599
+ * @param id - Box object to modify
600
+ * @param font - New font family
601
+ * @returns Modified box object
602
+ *
603
+ * @example
604
+ * ```typescript
605
+ * const box = box.new(10, 105, 20, 100);
606
+ * box.set_text_font_family(box, 'monospace'); // Monospace font
607
+ * ```
608
+ */
609
+ export function set_text_font_family(id: Box, font: 'default' | 'monospace'): Box {
610
+ if (isDeleted(id)) return id;
611
+ id.text_font_family = font;
612
+ return id;
613
+ }
614
+
615
+ /**
616
+ * Deletes the box object.
617
+ *
618
+ * @param id - Box object to delete
619
+ *
620
+ * @remarks
621
+ * Removes the box from `box.all()`. As in PineScript, the deleted box is `na`: its getters
622
+ * return NaN and its setters do nothing. Deleting it twice has no effect.
623
+ *
624
+ * @example
625
+ * ```typescript
626
+ * const box = box.new(10, 105, 20, 100);
627
+ * box.delete(box);
628
+ * // box.all() no longer contains it
629
+ * ```
630
+ */
631
+ export function delete_box(id: Box): void {
632
+ remove('box', id);
633
+ }
634
+
635
+ /** x coordinate of a chart point for an object's xloc (`na` when the point has no such coordinate). */
636
+ function pointX(point: ChartPoint, xloc: 'bar_index' | 'bar_time'): number {
637
+ const x = xloc === 'bar_time' ? point.time : point.index;
638
+ return x ?? NaN;
639
+ }
640
+
641
+ /**
642
+ * All live boxes, in creation order (PineScript `box.all`). A new array.
643
+ */
644
+ export function all(): Box[] {
645
+ return allDrawings('box');
646
+ }
647
+
648
+ /**
649
+ * Sets the left and top borders from a chart point (`point.index` or `point.time` by xloc, and `point.price`).
650
+ */
651
+ export function set_top_left_point(id: Box, point: ChartPoint): Box {
652
+ if (isDeleted(id)) return id;
653
+ id.left = pointX(point, id.xloc);
654
+ id.top = point.price;
655
+ return id;
656
+ }
657
+
658
+ /**
659
+ * Sets the right and bottom borders from a chart point (`point.index` or `point.time` by xloc, and `point.price`).
660
+ */
661
+ export function set_bottom_right_point(id: Box, point: ChartPoint): Box {
662
+ if (isDeleted(id)) return id;
663
+ id.right = pointX(point, id.xloc);
664
+ id.bottom = point.price;
665
+ return id;
666
+ }
667
+
668
+ /**
669
+ * Sets the text formatting: `text.format_none`, `text.format_bold`, `text.format_italic`,
670
+ * or `text.format_bold + text.format_italic`.
671
+ */
672
+ export function set_text_formatting(id: Box, formatting: number): Box {
673
+ if (isDeleted(id)) return id;
674
+ id.text_formatting = formatting;
675
+ return id;
676
+ }
677
+
678
+ // Alias to match PineScript API
679
+ export { new_box as new };
680
+ export { delete_box as delete };