oakscriptjs 0.9.5 → 0.10.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 (256) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/array/index.d.ts +93 -50
  3. package/dist/cjs/array/index.d.ts.map +1 -1
  4. package/dist/cjs/array/index.js +239 -78
  5. package/dist/cjs/array/index.js.map +3 -3
  6. package/dist/cjs/callsite/index.d.ts +81 -2
  7. package/dist/cjs/callsite/index.d.ts.map +1 -1
  8. package/dist/cjs/callsite/index.js +62 -1
  9. package/dist/cjs/callsite/index.js.map +2 -2
  10. package/dist/cjs/color/index.d.ts +7 -3
  11. package/dist/cjs/color/index.d.ts.map +1 -1
  12. package/dist/cjs/color/index.js +6 -1
  13. package/dist/cjs/color/index.js.map +2 -2
  14. package/dist/cjs/drawing/bar-time.d.ts +24 -0
  15. package/dist/cjs/drawing/bar-time.d.ts.map +1 -0
  16. package/dist/cjs/drawing/bar-time.js +47 -0
  17. package/dist/cjs/drawing/bar-time.js.map +7 -0
  18. package/dist/cjs/drawing/output.d.ts +32 -0
  19. package/dist/cjs/drawing/output.d.ts.map +1 -0
  20. package/dist/cjs/drawing/output.js +184 -0
  21. package/dist/cjs/drawing/output.js.map +7 -0
  22. package/dist/cjs/drawing/registry.d.ts +5 -4
  23. package/dist/cjs/drawing/registry.d.ts.map +1 -1
  24. package/dist/cjs/drawing/registry.js +11 -2
  25. package/dist/cjs/drawing/registry.js.map +2 -2
  26. package/dist/cjs/index.d.ts +6 -3
  27. package/dist/cjs/index.d.ts.map +1 -1
  28. package/dist/cjs/index.js +9 -2
  29. package/dist/cjs/index.js.map +2 -2
  30. package/dist/cjs/label/index.d.ts.map +1 -1
  31. package/dist/cjs/label/index.js +2 -1
  32. package/dist/cjs/label/index.js.map +2 -2
  33. package/dist/cjs/linefill/index.d.ts.map +1 -1
  34. package/dist/cjs/linefill/index.js +1 -0
  35. package/dist/cjs/linefill/index.js.map +2 -2
  36. package/dist/cjs/math/index.d.ts +76 -21
  37. package/dist/cjs/math/index.d.ts.map +1 -1
  38. package/dist/cjs/math/index.js +155 -41
  39. package/dist/cjs/math/index.js.map +3 -3
  40. package/dist/cjs/matrix/index.d.ts.map +1 -1
  41. package/dist/cjs/matrix/index.js +42 -36
  42. package/dist/cjs/matrix/index.js.map +2 -2
  43. package/dist/cjs/polyline/index.d.ts +3 -5
  44. package/dist/cjs/polyline/index.d.ts.map +1 -1
  45. package/dist/cjs/polyline/index.js +0 -5
  46. package/dist/cjs/polyline/index.js.map +2 -2
  47. package/dist/cjs/runtime/series.d.ts +9 -0
  48. package/dist/cjs/runtime/series.d.ts.map +1 -1
  49. package/dist/cjs/runtime/series.js +16 -2
  50. package/dist/cjs/runtime/series.js.map +2 -2
  51. package/dist/cjs/runtime/types.d.ts +22 -0
  52. package/dist/cjs/runtime/types.d.ts.map +1 -1
  53. package/dist/cjs/runtime/types.js.map +1 -1
  54. package/dist/cjs/script/index.d.ts +97 -36
  55. package/dist/cjs/script/index.d.ts.map +1 -1
  56. package/dist/cjs/script/index.js +173 -26
  57. package/dist/cjs/script/index.js.map +3 -3
  58. package/dist/cjs/session/calendar.d.ts.map +1 -1
  59. package/dist/cjs/session/calendar.js +15 -2
  60. package/dist/cjs/session/calendar.js.map +2 -2
  61. package/dist/cjs/str/index.d.ts +50 -38
  62. package/dist/cjs/str/index.d.ts.map +1 -1
  63. package/dist/cjs/str/index.js +43 -15
  64. package/dist/cjs/str/index.js.map +2 -2
  65. package/dist/cjs/str/messageformat.d.ts +2 -1
  66. package/dist/cjs/str/messageformat.d.ts.map +1 -1
  67. package/dist/cjs/str/messageformat.js +4 -1
  68. package/dist/cjs/str/messageformat.js.map +2 -2
  69. package/dist/cjs/str/numberformat.d.ts +4 -0
  70. package/dist/cjs/str/numberformat.d.ts.map +1 -1
  71. package/dist/cjs/str/numberformat.js +26 -4
  72. package/dist/cjs/str/numberformat.js.map +3 -3
  73. package/dist/cjs/ta/index.d.ts +86 -43
  74. package/dist/cjs/ta/index.d.ts.map +1 -1
  75. package/dist/cjs/ta/index.js +173 -267
  76. package/dist/cjs/ta/index.js.map +3 -3
  77. package/dist/cjs/ta/running-sum.d.ts +54 -2
  78. package/dist/cjs/ta/running-sum.d.ts.map +1 -1
  79. package/dist/cjs/ta/running-sum.js +132 -52
  80. package/dist/cjs/ta/running-sum.js.map +2 -2
  81. package/dist/cjs/ta-series.d.ts +4 -4
  82. package/dist/cjs/ta-series.d.ts.map +1 -1
  83. package/dist/cjs/ta-series.js +4 -3
  84. package/dist/cjs/ta-series.js.map +2 -2
  85. package/dist/cjs/table/index.d.ts +87 -0
  86. package/dist/cjs/table/index.d.ts.map +1 -0
  87. package/dist/cjs/table/index.js +150 -0
  88. package/dist/cjs/table/index.js.map +7 -0
  89. package/dist/cjs/text/index.d.ts +17 -2
  90. package/dist/cjs/text/index.d.ts.map +1 -1
  91. package/dist/cjs/text/index.js +15 -1
  92. package/dist/cjs/text/index.js.map +2 -2
  93. package/dist/cjs/time/datestring.d.ts +1 -0
  94. package/dist/cjs/time/datestring.d.ts.map +1 -1
  95. package/dist/cjs/time/datestring.js +7 -0
  96. package/dist/cjs/time/datestring.js.map +2 -2
  97. package/dist/cjs/time/index.d.ts.map +1 -1
  98. package/dist/cjs/time/index.js +2 -1
  99. package/dist/cjs/time/index.js.map +2 -2
  100. package/dist/cjs/time/session.d.ts +28 -9
  101. package/dist/cjs/time/session.d.ts.map +1 -1
  102. package/dist/cjs/time/session.js +74 -28
  103. package/dist/cjs/time/session.js.map +2 -2
  104. package/dist/cjs/time/timezone.d.ts +5 -0
  105. package/dist/cjs/time/timezone.d.ts.map +1 -1
  106. package/dist/cjs/time/timezone.js +15 -1
  107. package/dist/cjs/time/timezone.js.map +2 -2
  108. package/dist/cjs/types/index.d.ts +30 -1
  109. package/dist/cjs/types/index.d.ts.map +1 -1
  110. package/dist/cjs/types/index.js +12 -0
  111. package/dist/cjs/types/index.js.map +2 -2
  112. package/dist/cjs/types/metadata.d.ts +258 -26
  113. package/dist/cjs/types/metadata.d.ts.map +1 -1
  114. package/dist/cjs/types/metadata.js.map +1 -1
  115. package/dist/esm/array/index.d.ts +93 -50
  116. package/dist/esm/array/index.d.ts.map +1 -1
  117. package/dist/esm/array/index.js +383 -133
  118. package/dist/esm/array/index.js.map +1 -1
  119. package/dist/esm/callsite/index.d.ts +81 -2
  120. package/dist/esm/callsite/index.d.ts.map +1 -1
  121. package/dist/esm/callsite/index.js +145 -3
  122. package/dist/esm/callsite/index.js.map +1 -1
  123. package/dist/esm/color/index.d.ts +7 -3
  124. package/dist/esm/color/index.d.ts.map +1 -1
  125. package/dist/esm/color/index.js +15 -3
  126. package/dist/esm/color/index.js.map +1 -1
  127. package/dist/esm/drawing/bar-time.d.ts +24 -0
  128. package/dist/esm/drawing/bar-time.d.ts.map +1 -0
  129. package/dist/esm/drawing/bar-time.js +44 -0
  130. package/dist/esm/drawing/bar-time.js.map +1 -0
  131. package/dist/esm/drawing/output.d.ts +32 -0
  132. package/dist/esm/drawing/output.d.ts.map +1 -0
  133. package/dist/esm/drawing/output.js +190 -0
  134. package/dist/esm/drawing/output.js.map +1 -0
  135. package/dist/esm/drawing/registry.d.ts +5 -4
  136. package/dist/esm/drawing/registry.d.ts.map +1 -1
  137. package/dist/esm/drawing/registry.js +12 -2
  138. package/dist/esm/drawing/registry.js.map +1 -1
  139. package/dist/esm/index.d.ts +6 -3
  140. package/dist/esm/index.d.ts.map +1 -1
  141. package/dist/esm/index.js +7 -3
  142. package/dist/esm/index.js.map +1 -1
  143. package/dist/esm/label/index.d.ts.map +1 -1
  144. package/dist/esm/label/index.js +2 -1
  145. package/dist/esm/label/index.js.map +1 -1
  146. package/dist/esm/linefill/index.d.ts.map +1 -1
  147. package/dist/esm/linefill/index.js +3 -0
  148. package/dist/esm/linefill/index.js.map +1 -1
  149. package/dist/esm/math/index.d.ts +76 -21
  150. package/dist/esm/math/index.d.ts.map +1 -1
  151. package/dist/esm/math/index.js +227 -61
  152. package/dist/esm/math/index.js.map +1 -1
  153. package/dist/esm/matrix/index.d.ts.map +1 -1
  154. package/dist/esm/matrix/index.js +57 -43
  155. package/dist/esm/matrix/index.js.map +1 -1
  156. package/dist/esm/polyline/index.d.ts +3 -5
  157. package/dist/esm/polyline/index.d.ts.map +1 -1
  158. package/dist/esm/polyline/index.js +3 -9
  159. package/dist/esm/polyline/index.js.map +1 -1
  160. package/dist/esm/runtime/series.d.ts +9 -0
  161. package/dist/esm/runtime/series.d.ts.map +1 -1
  162. package/dist/esm/runtime/series.js +18 -1
  163. package/dist/esm/runtime/series.js.map +1 -1
  164. package/dist/esm/runtime/types.d.ts +22 -0
  165. package/dist/esm/runtime/types.d.ts.map +1 -1
  166. package/dist/esm/script/index.d.ts +97 -36
  167. package/dist/esm/script/index.d.ts.map +1 -1
  168. package/dist/esm/script/index.js +211 -22
  169. package/dist/esm/script/index.js.map +1 -1
  170. package/dist/esm/session/calendar.d.ts.map +1 -1
  171. package/dist/esm/session/calendar.js +22 -2
  172. package/dist/esm/session/calendar.js.map +1 -1
  173. package/dist/esm/str/index.d.ts +50 -38
  174. package/dist/esm/str/index.d.ts.map +1 -1
  175. package/dist/esm/str/index.js +103 -52
  176. package/dist/esm/str/index.js.map +1 -1
  177. package/dist/esm/str/messageformat.d.ts +2 -1
  178. package/dist/esm/str/messageformat.d.ts.map +1 -1
  179. package/dist/esm/str/messageformat.js +7 -2
  180. package/dist/esm/str/messageformat.js.map +1 -1
  181. package/dist/esm/str/numberformat.d.ts +4 -0
  182. package/dist/esm/str/numberformat.d.ts.map +1 -1
  183. package/dist/esm/str/numberformat.js +38 -4
  184. package/dist/esm/str/numberformat.js.map +1 -1
  185. package/dist/esm/ta/index.d.ts +86 -43
  186. package/dist/esm/ta/index.d.ts.map +1 -1
  187. package/dist/esm/ta/index.js +296 -348
  188. package/dist/esm/ta/index.js.map +1 -1
  189. package/dist/esm/ta/running-sum.d.ts +54 -2
  190. package/dist/esm/ta/running-sum.d.ts.map +1 -1
  191. package/dist/esm/ta/running-sum.js +166 -71
  192. package/dist/esm/ta/running-sum.js.map +1 -1
  193. package/dist/esm/ta-series.d.ts +4 -4
  194. package/dist/esm/ta-series.d.ts.map +1 -1
  195. package/dist/esm/ta-series.js +5 -4
  196. package/dist/esm/ta-series.js.map +1 -1
  197. package/dist/esm/table/index.d.ts +87 -0
  198. package/dist/esm/table/index.d.ts.map +1 -0
  199. package/dist/esm/table/index.js +169 -0
  200. package/dist/esm/table/index.js.map +1 -0
  201. package/dist/esm/text/index.d.ts +17 -2
  202. package/dist/esm/text/index.d.ts.map +1 -1
  203. package/dist/esm/text/index.js +17 -2
  204. package/dist/esm/text/index.js.map +1 -1
  205. package/dist/esm/time/datestring.d.ts +1 -0
  206. package/dist/esm/time/datestring.d.ts.map +1 -1
  207. package/dist/esm/time/datestring.js +12 -0
  208. package/dist/esm/time/datestring.js.map +1 -1
  209. package/dist/esm/time/index.d.ts.map +1 -1
  210. package/dist/esm/time/index.js +3 -1
  211. package/dist/esm/time/index.js.map +1 -1
  212. package/dist/esm/time/session.d.ts +28 -9
  213. package/dist/esm/time/session.d.ts.map +1 -1
  214. package/dist/esm/time/session.js +113 -42
  215. package/dist/esm/time/session.js.map +1 -1
  216. package/dist/esm/time/timezone.d.ts +5 -0
  217. package/dist/esm/time/timezone.d.ts.map +1 -1
  218. package/dist/esm/time/timezone.js +21 -1
  219. package/dist/esm/time/timezone.js.map +1 -1
  220. package/dist/esm/types/index.d.ts +30 -1
  221. package/dist/esm/types/index.d.ts.map +1 -1
  222. package/dist/esm/types/index.js +14 -0
  223. package/dist/esm/types/index.js.map +1 -1
  224. package/dist/esm/types/metadata.d.ts +258 -26
  225. package/dist/esm/types/metadata.d.ts.map +1 -1
  226. package/package.json +1 -1
  227. package/src/array/index.ts +364 -150
  228. package/src/callsite/index.ts +147 -3
  229. package/src/color/index.ts +15 -5
  230. package/src/drawing/bar-time.ts +42 -0
  231. package/src/drawing/output.ts +214 -0
  232. package/src/drawing/registry.ts +16 -6
  233. package/src/index.ts +9 -3
  234. package/src/label/index.ts +2 -1
  235. package/src/linefill/index.ts +2 -0
  236. package/src/math/index.ts +256 -74
  237. package/src/matrix/index.ts +52 -52
  238. package/src/polyline/index.ts +3 -12
  239. package/src/runtime/series.ts +22 -1
  240. package/src/runtime/types.ts +23 -0
  241. package/src/script/index.ts +307 -25
  242. package/src/session/calendar.ts +22 -2
  243. package/src/str/index.ts +95 -51
  244. package/src/str/messageformat.ts +7 -2
  245. package/src/str/numberformat.ts +39 -4
  246. package/src/ta/index.ts +306 -386
  247. package/src/ta/running-sum.ts +187 -74
  248. package/src/ta-series.ts +8 -7
  249. package/src/table/index.ts +221 -0
  250. package/src/text/index.ts +18 -2
  251. package/src/time/datestring.ts +10 -0
  252. package/src/time/index.ts +3 -1
  253. package/src/time/session.ts +97 -47
  254. package/src/time/timezone.ts +21 -1
  255. package/src/types/index.ts +32 -1
  256. package/src/types/metadata.ts +325 -26
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Table namespace
3
+ * Functions for creating and filling table drawing objects.
4
+ *
5
+ * @remarks
6
+ * A table is drawn at a fixed position of the pane (`position.*`), not at a bar. Tables have no getters in
7
+ * PineScript; the script API returns the live tables in `result.tables`.
8
+ *
9
+ * PineScript rules:
10
+ * - `table.cell` defines a cell: the arguments it does not give get their default, a previous definition of the
11
+ * cell is replaced
12
+ * - `table.cell_set_*` changes one property of a cell (a cell that was not defined is created)
13
+ * - a column or row outside the table is a runtime error
14
+ * - a deleted table is `na`: its functions do nothing
15
+ *
16
+ * @version 6
17
+ */
18
+ import type { Table, color } from '../types/index.js';
19
+ type TablePosition = Table['position'];
20
+ type HAlign = 'left' | 'center' | 'right';
21
+ type VAlign = 'top' | 'center' | 'bottom';
22
+ type FontFamily = 'default' | 'monospace';
23
+ /**
24
+ * Creates a new table (PineScript `table.new`).
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const t = table.new(position.top_right, 2, 3, '#131722', '#787B86', 1);
29
+ * table.cell(t, 0, 0, 'RSI', 0, 0, '#FFFFFF');
30
+ * ```
31
+ */
32
+ export declare function new_table(position: TablePosition, columns: number, rows: number, bgcolor?: color, frame_color?: color, frame_width?: number, border_color?: color, border_width?: number, force_overlay?: boolean): Table;
33
+ /**
34
+ * Defines a cell (PineScript `table.cell`): its text and properties. Omitted properties get their default.
35
+ */
36
+ export declare function cell(table_id: Table, column: number, row: number, text?: string, width?: number, height?: number, text_color?: color, text_halign?: HAlign, text_valign?: VAlign, text_size?: string | number, bgcolor?: color, tooltip?: string, text_font_family?: FontFamily, text_formatting?: number): void;
37
+ /** Sets the text of a cell. */
38
+ export declare const cell_set_text: (table_id: Table, column: number, row: number, value: string | undefined) => void;
39
+ /** Sets the width of a cell (% of the chart width; 0 fits the text). */
40
+ export declare const cell_set_width: (table_id: Table, column: number, row: number, value: number | undefined) => void;
41
+ /** Sets the height of a cell (% of the chart height; 0 fits the text). */
42
+ export declare const cell_set_height: (table_id: Table, column: number, row: number, value: number | undefined) => void;
43
+ /** Sets the text colour of a cell. */
44
+ export declare const cell_set_text_color: (table_id: Table, column: number, row: number, value: color | undefined) => void;
45
+ /** Sets the horizontal text alignment of a cell. */
46
+ export declare const cell_set_text_halign: (table_id: Table, column: number, row: number, value: "left" | "right" | "center" | undefined) => void;
47
+ /** Sets the vertical text alignment of a cell. */
48
+ export declare const cell_set_text_valign: (table_id: Table, column: number, row: number, value: "center" | "top" | "bottom" | undefined) => void;
49
+ /** Sets the text size of a cell. */
50
+ export declare const cell_set_text_size: (table_id: Table, column: number, row: number, value: string | number | undefined) => void;
51
+ /** Sets the background colour of a cell. */
52
+ export declare const cell_set_bgcolor: (table_id: Table, column: number, row: number, value: color | undefined) => void;
53
+ /** Sets the tooltip of a cell. */
54
+ export declare const cell_set_tooltip: (table_id: Table, column: number, row: number, value: string | undefined) => void;
55
+ /** Sets the font family of a cell. */
56
+ export declare const cell_set_text_font_family: (table_id: Table, column: number, row: number, value: "default" | "monospace" | undefined) => void;
57
+ /** Sets the text formatting of a cell (`text.format_*` flags). */
58
+ export declare const cell_set_text_formatting: (table_id: Table, column: number, row: number, value: number | undefined) => void;
59
+ /**
60
+ * Merges the cells from start_column / start_row to end_column / end_row (PineScript `table.merge_cells`). The
61
+ * merged cell shows the content of the start cell.
62
+ */
63
+ export declare function merge_cells(table_id: Table, start_column: number, start_row: number, end_column: number, end_row: number): void;
64
+ /**
65
+ * Removes the cells from start_column / start_row to end_column / end_row (PineScript `table.clear`; default end:
66
+ * the start cell), and the merges that start in that range.
67
+ */
68
+ export declare function clear(table_id: Table, start_column: number, start_row: number, end_column?: number, end_row?: number): void;
69
+ /** Moves the table to another position (`position.*`). */
70
+ export declare const set_position: (table_id: Table, value: "top_left" | "top_center" | "top_right" | "middle_left" | "middle_center" | "middle_right" | "bottom_left" | "bottom_center" | "bottom_right") => void;
71
+ /** Sets the background colour of the table. */
72
+ export declare const set_bgcolor: (table_id: Table, value: color | undefined) => void;
73
+ /** Sets the colour of the outer frame. */
74
+ export declare const set_frame_color: (table_id: Table, value: color | undefined) => void;
75
+ /** Sets the width of the outer frame. */
76
+ export declare const set_frame_width: (table_id: Table, value: number | undefined) => void;
77
+ /** Sets the colour of the cell borders. */
78
+ export declare const set_border_color: (table_id: Table, value: color | undefined) => void;
79
+ /** Sets the width of the cell borders. */
80
+ export declare const set_border_width: (table_id: Table, value: number | undefined) => void;
81
+ /** Deletes the table (PineScript `table.delete`). */
82
+ export declare function delete_table(table_id: Table): void;
83
+ /** All live tables, in creation order (PineScript `table.all`). A new array. */
84
+ export declare function all(): Table[];
85
+ export { new_table as new };
86
+ export { delete_table as delete };
87
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/table/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Table namespace
3
+ * Functions for creating and filling table drawing objects.
4
+ *
5
+ * @remarks
6
+ * A table is drawn at a fixed position of the pane (`position.*`), not at a bar. Tables have no getters in
7
+ * PineScript; the script API returns the live tables in `result.tables`.
8
+ *
9
+ * PineScript rules:
10
+ * - `table.cell` defines a cell: the arguments it does not give get their default, a previous definition of the
11
+ * cell is replaced
12
+ * - `table.cell_set_*` changes one property of a cell (a cell that was not defined is created)
13
+ * - a column or row outside the table is a runtime error
14
+ * - a deleted table is `na`: its functions do nothing
15
+ *
16
+ * @version 6
17
+ */
18
+ import { all as allDrawings, isDeleted, register, remove } from '../drawing/registry.js';
19
+ /**
20
+ * Creates a new table (PineScript `table.new`).
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const t = table.new(position.top_right, 2, 3, '#131722', '#787B86', 1);
25
+ * table.cell(t, 0, 0, 'RSI', 0, 0, '#FFFFFF');
26
+ * ```
27
+ */
28
+ export function new_table(position, columns, rows, bgcolor, frame_color, frame_width, border_color, border_width, force_overlay) {
29
+ return register('table', {
30
+ position,
31
+ columns,
32
+ rows,
33
+ bgcolor,
34
+ frame_color,
35
+ frame_width,
36
+ border_color,
37
+ border_width,
38
+ force_overlay: force_overlay ?? false,
39
+ cells: new Map(),
40
+ merges: [],
41
+ });
42
+ }
43
+ function checkCell(caller, id, column, row) {
44
+ if (!(column >= 0 && column < id.columns && row >= 0 && row < id.rows)) {
45
+ throw new RangeError(`${caller}: column ${column}, row ${row} is outside the table (${id.columns} columns, ${id.rows} rows).`);
46
+ }
47
+ }
48
+ const key = (column, row) => `${column},${row}`;
49
+ /** The cell at column / row, created when it was not defined. */
50
+ function cellOf(caller, id, column, row) {
51
+ checkCell(caller, id, column, row);
52
+ const cells = (id.cells ??= new Map());
53
+ let cell = cells.get(key(column, row));
54
+ if (!cell)
55
+ cells.set(key(column, row), (cell = { text: '' }));
56
+ return cell;
57
+ }
58
+ /**
59
+ * Defines a cell (PineScript `table.cell`): its text and properties. Omitted properties get their default.
60
+ */
61
+ export function cell(table_id, column, row, text, width, height, text_color, text_halign, text_valign, text_size, bgcolor, tooltip, text_font_family, text_formatting) {
62
+ if (isDeleted(table_id))
63
+ return;
64
+ checkCell('table.cell()', table_id, column, row);
65
+ (table_id.cells ??= new Map()).set(key(column, row), {
66
+ text: text ?? '',
67
+ width,
68
+ height,
69
+ text_color,
70
+ text_halign,
71
+ text_valign,
72
+ text_size,
73
+ bgcolor,
74
+ tooltip,
75
+ text_font_family,
76
+ text_formatting,
77
+ });
78
+ }
79
+ function setCell(name, field) {
80
+ return (table_id, column, row, value) => {
81
+ if (isDeleted(table_id))
82
+ return;
83
+ cellOf(`table.${name}()`, table_id, column, row)[field] = value;
84
+ };
85
+ }
86
+ /** Sets the text of a cell. */
87
+ export const cell_set_text = setCell('cell_set_text', 'text');
88
+ /** Sets the width of a cell (% of the chart width; 0 fits the text). */
89
+ export const cell_set_width = setCell('cell_set_width', 'width');
90
+ /** Sets the height of a cell (% of the chart height; 0 fits the text). */
91
+ export const cell_set_height = setCell('cell_set_height', 'height');
92
+ /** Sets the text colour of a cell. */
93
+ export const cell_set_text_color = setCell('cell_set_text_color', 'text_color');
94
+ /** Sets the horizontal text alignment of a cell. */
95
+ export const cell_set_text_halign = setCell('cell_set_text_halign', 'text_halign');
96
+ /** Sets the vertical text alignment of a cell. */
97
+ export const cell_set_text_valign = setCell('cell_set_text_valign', 'text_valign');
98
+ /** Sets the text size of a cell. */
99
+ export const cell_set_text_size = setCell('cell_set_text_size', 'text_size');
100
+ /** Sets the background colour of a cell. */
101
+ export const cell_set_bgcolor = setCell('cell_set_bgcolor', 'bgcolor');
102
+ /** Sets the tooltip of a cell. */
103
+ export const cell_set_tooltip = setCell('cell_set_tooltip', 'tooltip');
104
+ /** Sets the font family of a cell. */
105
+ export const cell_set_text_font_family = setCell('cell_set_text_font_family', 'text_font_family');
106
+ /** Sets the text formatting of a cell (`text.format_*` flags). */
107
+ export const cell_set_text_formatting = setCell('cell_set_text_formatting', 'text_formatting');
108
+ /**
109
+ * Merges the cells from start_column / start_row to end_column / end_row (PineScript `table.merge_cells`). The
110
+ * merged cell shows the content of the start cell.
111
+ */
112
+ export function merge_cells(table_id, start_column, start_row, end_column, end_row) {
113
+ if (isDeleted(table_id))
114
+ return;
115
+ checkCell('table.merge_cells()', table_id, start_column, start_row);
116
+ checkCell('table.merge_cells()', table_id, end_column, end_row);
117
+ if (end_column < start_column || end_row < start_row) {
118
+ throw new RangeError('table.merge_cells(): the end cell is before the start cell.');
119
+ }
120
+ (table_id.merges ??= []).push({ start_column, start_row, end_column, end_row });
121
+ }
122
+ /**
123
+ * Removes the cells from start_column / start_row to end_column / end_row (PineScript `table.clear`; default end:
124
+ * the start cell), and the merges that start in that range.
125
+ */
126
+ export function clear(table_id, start_column, start_row, end_column = start_column, end_row = start_row) {
127
+ if (isDeleted(table_id))
128
+ return;
129
+ checkCell('table.clear()', table_id, start_column, start_row);
130
+ checkCell('table.clear()', table_id, end_column, end_row);
131
+ const inside = (column, row) => column >= start_column && column <= end_column && row >= start_row && row <= end_row;
132
+ for (let column = start_column; column <= end_column; column++) {
133
+ for (let row = start_row; row <= end_row; row++)
134
+ table_id.cells?.delete(key(column, row));
135
+ }
136
+ if (table_id.merges)
137
+ table_id.merges = table_id.merges.filter((m) => !inside(m.start_column, m.start_row));
138
+ }
139
+ function setTable(field) {
140
+ return (table_id, value) => {
141
+ if (isDeleted(table_id))
142
+ return;
143
+ table_id[field] = value;
144
+ };
145
+ }
146
+ /** Moves the table to another position (`position.*`). */
147
+ export const set_position = setTable('position');
148
+ /** Sets the background colour of the table. */
149
+ export const set_bgcolor = setTable('bgcolor');
150
+ /** Sets the colour of the outer frame. */
151
+ export const set_frame_color = setTable('frame_color');
152
+ /** Sets the width of the outer frame. */
153
+ export const set_frame_width = setTable('frame_width');
154
+ /** Sets the colour of the cell borders. */
155
+ export const set_border_color = setTable('border_color');
156
+ /** Sets the width of the cell borders. */
157
+ export const set_border_width = setTable('border_width');
158
+ /** Deletes the table (PineScript `table.delete`). */
159
+ export function delete_table(table_id) {
160
+ remove('table', table_id);
161
+ }
162
+ /** All live tables, in creation order (PineScript `table.all`). A new array. */
163
+ export function all() {
164
+ return allDrawings('table');
165
+ }
166
+ // Alias to match PineScript API
167
+ export { new_table as new };
168
+ export { delete_table as delete };
169
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/table/index.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Text namespace
3
- * PineScript `text.format_*` constants for `label.set_text_formatting` and `box.set_text_formatting`.
3
+ * PineScript `text.format_*` constants for `label.set_text_formatting` and `box.set_text_formatting`, and the
4
+ * `text.align_*` / `text.wrap_*` constants.
4
5
  *
5
- * The values are flags that add up, as in PineScript (`text.format_bold + text.format_italic`).
6
+ * The format values are flags that add up, as in PineScript (`text.format_bold + text.format_italic`).
6
7
  * They are the values PineScript uses for drawn labels and boxes.
7
8
  */
8
9
  /** No formatting. */
@@ -11,4 +12,18 @@ export declare const format_none = 0;
11
12
  export declare const format_bold = 1;
12
13
  /** Italic text. */
13
14
  export declare const format_italic = 2;
15
+ /** Text aligned to the left (`table.cell`, `box.new`, `label.new` textalign). */
16
+ export declare const align_left: "left";
17
+ /** Text centred horizontally or vertically. */
18
+ export declare const align_center: "center";
19
+ /** Text aligned to the right. */
20
+ export declare const align_right: "right";
21
+ /** Text aligned to the top (`table.cell`, `box.new` text_valign). */
22
+ export declare const align_top: "top";
23
+ /** Text aligned to the bottom. */
24
+ export declare const align_bottom: "bottom";
25
+ /** Text wrapped to the box width (`box.new` text_wrap). */
26
+ export declare const wrap_auto: "auto";
27
+ /** Text not wrapped. */
28
+ export declare const wrap_none: "none";
14
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/text/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qBAAqB;AACrB,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,iBAAiB;AACjB,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,mBAAmB;AACnB,eAAO,MAAM,aAAa,IAAI,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/text/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qBAAqB;AACrB,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,iBAAiB;AACjB,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,mBAAmB;AACnB,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,iFAAiF;AACjF,eAAO,MAAM,UAAU,EAAG,MAAe,CAAC;AAC1C,+CAA+C;AAC/C,eAAO,MAAM,YAAY,EAAG,QAAiB,CAAC;AAC9C,iCAAiC;AACjC,eAAO,MAAM,WAAW,EAAG,OAAgB,CAAC;AAC5C,qEAAqE;AACrE,eAAO,MAAM,SAAS,EAAG,KAAc,CAAC;AACxC,kCAAkC;AAClC,eAAO,MAAM,YAAY,EAAG,QAAiB,CAAC;AAC9C,2DAA2D;AAC3D,eAAO,MAAM,SAAS,EAAG,MAAe,CAAC;AACzC,wBAAwB;AACxB,eAAO,MAAM,SAAS,EAAG,MAAe,CAAC"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Text namespace
3
- * PineScript `text.format_*` constants for `label.set_text_formatting` and `box.set_text_formatting`.
3
+ * PineScript `text.format_*` constants for `label.set_text_formatting` and `box.set_text_formatting`, and the
4
+ * `text.align_*` / `text.wrap_*` constants.
4
5
  *
5
- * The values are flags that add up, as in PineScript (`text.format_bold + text.format_italic`).
6
+ * The format values are flags that add up, as in PineScript (`text.format_bold + text.format_italic`).
6
7
  * They are the values PineScript uses for drawn labels and boxes.
7
8
  */
8
9
  /** No formatting. */
@@ -11,4 +12,18 @@ export const format_none = 0;
11
12
  export const format_bold = 1;
12
13
  /** Italic text. */
13
14
  export const format_italic = 2;
15
+ /** Text aligned to the left (`table.cell`, `box.new`, `label.new` textalign). */
16
+ export const align_left = 'left';
17
+ /** Text centred horizontally or vertically. */
18
+ export const align_center = 'center';
19
+ /** Text aligned to the right. */
20
+ export const align_right = 'right';
21
+ /** Text aligned to the top (`table.cell`, `box.new` text_valign). */
22
+ export const align_top = 'top';
23
+ /** Text aligned to the bottom. */
24
+ export const align_bottom = 'bottom';
25
+ /** Text wrapped to the box width (`box.new` text_wrap). */
26
+ export const wrap_auto = 'auto';
27
+ /** Text not wrapped. */
28
+ export const wrap_none = 'none';
14
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/text/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qBAAqB;AACrB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,iBAAiB;AACjB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,mBAAmB;AACnB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/text/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qBAAqB;AACrB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,iBAAiB;AACjB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,mBAAmB;AACnB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B,iFAAiF;AACjF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAe,CAAC;AAC1C,+CAA+C;AAC/C,MAAM,CAAC,MAAM,YAAY,GAAG,QAAiB,CAAC;AAC9C,iCAAiC;AACjC,MAAM,CAAC,MAAM,WAAW,GAAG,OAAgB,CAAC;AAC5C,qEAAqE;AACrE,MAAM,CAAC,MAAM,SAAS,GAAG,KAAc,CAAC;AACxC,kCAAkC;AAClC,MAAM,CAAC,MAAM,YAAY,GAAG,QAAiB,CAAC;AAC9C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,SAAS,GAAG,MAAe,CAAC;AACzC,wBAAwB;AACxB,MAAM,CAAC,MAAM,SAAS,GAAG,MAAe,CAAC"}
@@ -10,6 +10,7 @@
10
10
  * Time zones: "UT", "UTC", "GMT", "+0530", "-05:00", "GMT+5", "UTC-0300", and the RFC 2822
11
11
  * names EST, EDT, CST, CDT, MST, MDT, PST, PDT. After a "T" time, only numeric offsets.
12
12
  * Without a time the time is 00:00. Without a time zone the time zone is GMT+0.
13
+ * "2025" and "2025-06" are the first day of the year / month. "01 Jan 2022 GMT+3" (a zone without a time) gives na.
13
14
  * "24:00" is midnight at the end of the day.
14
15
  *
15
16
  * "Z", "2024-01-01T09:30:00 GMT", "24:30" and "09:30:60" are compile errors in PineScript, and
@@ -1 +1 @@
1
- {"version":3,"file":"datestring.d.ts","sourceRoot":"","sources":["../../../src/time/datestring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA4CH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA+B1D"}
1
+ {"version":3,"file":"datestring.d.ts","sourceRoot":"","sources":["../../../src/time/datestring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA6CH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAuC1D"}
@@ -10,6 +10,7 @@
10
10
  * Time zones: "UT", "UTC", "GMT", "+0530", "-05:00", "GMT+5", "UTC-0300", and the RFC 2822
11
11
  * names EST, EDT, CST, CDT, MST, MDT, PST, PDT. After a "T" time, only numeric offsets.
12
12
  * Without a time the time is 00:00. Without a time zone the time zone is GMT+0.
13
+ * "2025" and "2025-06" are the first day of the year / month. "01 Jan 2022 GMT+3" (a zone without a time) gives na.
13
14
  * "24:00" is midnight at the end of the day.
14
15
  *
15
16
  * "Z", "2024-01-01T09:30:00 GMT", "24:30" and "09:30:60" are compile errors in PineScript, and
@@ -30,6 +31,7 @@ const ZONE = String.raw `(ut|utc|gmt|[ecmp][sd]t|(?:utc|gmt)?\s*[+-]\d{1,2}(?::?
30
31
  const NUMERIC_ZONE = String.raw `([+-]\d{2}(?::?\d{2})?)`;
31
32
  const DATE = String.raw `(\d{4})([-/])(\d{1,2})\2(\d{1,2})`;
32
33
  const WEEKDAY = String.raw `(?:[a-z]{3,9},?\s+)?`;
34
+ const YEAR_MONTH = /^(\d{4})(?:-(\d{1,2}))?$/;
33
35
  const ISO_T = new RegExp(String.raw `^${DATE}t${TIME}\s*${NUMERIC_ZONE}?$`, 'i');
34
36
  const ISO = new RegExp(String.raw `^${DATE}(?:\s+${TIME})?\s*${ZONE}?$`, 'i');
35
37
  const DAY_FIRST = new RegExp(String.raw `^${WEEKDAY}(\d{1,2})(?:\s+|-)([a-z]+)\.?,?(?:\s+|-)(\d{4})(?:,?\s+${TIME})?\s*${ZONE}?$`, 'i');
@@ -63,6 +65,13 @@ export function parseDateString(dateString) {
63
65
  let year, month, day;
64
66
  let rest;
65
67
  let m;
68
+ // "2025" and "2025-06": the first day of the year / month, 00:00 UTC (PineScript)
69
+ if ((m = YEAR_MONTH.exec(text))) {
70
+ const mo = m[2] ? Number(m[2]) : 1;
71
+ if (mo < 1 || mo > 12)
72
+ throw new SyntaxError(`Invalid date string "${dateString}": a field is out of range`);
73
+ return Date.UTC(Number(m[1]), mo - 1, 1);
74
+ }
66
75
  if ((m = ISO_T.exec(text) ?? ISO.exec(text))) {
67
76
  [year, month, day] = [m[1], Number(m[3]), m[4]];
68
77
  rest = m.slice(5);
@@ -70,6 +79,9 @@ export function parseDateString(dateString) {
70
79
  else if ((m = DAY_FIRST.exec(text))) {
71
80
  [day, month, year] = [m[1], monthNumber(m[2]), m[3]];
72
81
  rest = m.slice(4);
82
+ // a time zone without a time ("01 Jan 2022 GMT+3") gives na in PineScript
83
+ if (rest[0] === undefined && rest[4] !== undefined)
84
+ return NaN;
73
85
  }
74
86
  else if ((m = MONTH_FIRST.exec(text))) {
75
87
  [month, day, year] = [monthNumber(m[1]), m[2], m[3]];
@@ -1 +1 @@
1
- {"version":3,"file":"datestring.js","sourceRoot":"","sources":["../../../src/time/datestring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datestring.js","sourceRoot":"","sources":["../../../src/time/datestring.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/time/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKzD;;GAEG;AACH,wBAAgB,GAAG,IAAI,GAAG,CAEzB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC;AACnD,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,UAAU,EACf,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,UAAU,EACnB,MAAM,CAAC,EAAE,UAAU,GAClB,GAAG,CAAC;AACP,wBAAgB,SAAS,CACvB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,UAAU,EACf,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,UAAU,EACnB,MAAM,CAAC,EAAE,UAAU,GAClB,GAAG,CAAC;AAiBP;;GAEG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAErD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAEtD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAE3D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAQ3D;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAErD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAEvD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAEvD;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/time/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKzD;;GAEG;AACH,wBAAgB,GAAG,IAAI,GAAG,CAEzB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC;AACnD,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,UAAU,EACf,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,UAAU,EACnB,MAAM,CAAC,EAAE,UAAU,GAClB,GAAG,CAAC;AACP,wBAAgB,SAAS,CACvB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,UAAU,EACf,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,UAAU,EACnB,MAAM,CAAC,EAAE,UAAU,GAClB,GAAG,CAAC;AAmBP;;GAEG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAErD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAEtD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAE3D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAQ3D;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAErD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAEvD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAEvD;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/E"}
@@ -19,8 +19,10 @@ export function timestamp(first, ...rest) {
19
19
  if (typeof first === 'string') {
20
20
  if (rest.length === 0)
21
21
  return parseDateString(first);
22
+ // PineScript: an na field counts as 0 (day na of January 2020 is 2019-12-31)
23
+ const f = (v) => (v === undefined || v === null || Number.isNaN(v) ? 0 : v);
22
24
  const [year, month, day, hour, minute, second] = rest;
23
- return zonedToUnix(first, year, month, day, hour ?? 0, minute ?? 0, second ?? 0);
25
+ return zonedToUnix(first, f(year), f(month), f(day), f(hour), f(minute), f(second));
24
26
  }
25
27
  const [month, day, hour, minute, second] = rest;
26
28
  return new Date(first, month - 1, day, hour || 0, minute || 0, second || 0).getTime();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/time/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/time/index.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,36 @@
1
1
  /**
2
- * Session strings ("0930-1600", "0930-1600:23456", "1000-1100,1400-1500:23456", "24x7").
2
+ * PineScript session strings ("0930-1600", "0930-1600:23456", "1000-1100,1400-1500:23456", "0930-1600|1000-1300:7",
3
+ * "24x7").
3
4
  *
4
- * Format `<periods>[:<days>]`:
5
- * - a period is "HHmm-HHmm"; several periods are separated by commas
6
- * - days are digits 1 (Sunday) to 7 (Saturday). Without days, a single period covers every
7
- * day, and several periods cover Monday to Friday ("23456"), as in PineScript
8
- * - an end before the start is an overnight period that ends on the next day, and it
9
- * belongs to the day it ends: "1700-1700:23456" starts Sunday 17:00 and covers Monday
10
- * - "0000-0000" and "24x7" are the 24-hour session of every day
5
+ * Grammar (measured on PineScript): `range[,range...][:days]`, several sections joined by "|".
6
+ * - a range is exactly "HHMM-HHMM"; hours and minutes are minute counts taken modulo one day ("0930-2500" runs
7
+ * 09:30 to 01:00, "0960-1600" 10:00 to 16:00); a start of 24:00 or later must open a run of at most a day
8
+ * - days are digits 1 (Sunday) to 7 (Saturday), the day each run ends on
9
+ * - a lone range without days runs every day; otherwise a section without days is the default section, which runs
10
+ * on the weekdays (2-6) no other section names, and a later section naming a day replaces the earlier ones on that
11
+ * day ("1100-1400|1200-1300:7": 11:00-14:00 Monday to Friday, 12:00-13:00 Saturday)
12
+ * - a trailing ",", ":" or "|" ends its list ("1100-1400," is "1100-1400" Monday to Friday)
13
+ * - an end before the start is an overnight run that belongs to the day it ends; equal ends are 24 hours;
14
+ * "0000-0000" and "24x7" are the whole day, every day
15
+ * - a string that is empty or does not start with a digit ("regular", "extended") is the symbol's own session
16
+ * - a malformed string ("1100 -1400", "0930-16", ":8") is an error, as the PineScript runtime error
11
17
  */
18
+ /** A run of a session: minutes after midnight (0-1439) and the days it ends on (1 = Sunday ... 7 = Saturday). */
19
+ export interface SessionRange {
20
+ start: number;
21
+ end: number;
22
+ days: Set<number>;
23
+ }
24
+ /**
25
+ * Runs of a PineScript session string, or null for the symbol's own session (empty or not starting with a digit).
26
+ * @throws SyntaxError when the string is malformed (a PineScript runtime error)
27
+ */
28
+ export declare function parsePineSession(session: string): SessionRange[] | null;
12
29
  /**
13
30
  * True when `time` falls inside `session`, with the session hours read in `timezone`.
14
- * A period includes its start minute and excludes its end minute.
31
+ * A run includes its start minute and excludes its end minute.
32
+ * @throws Error for the symbol's own session ("regular", "extended", ""), which this function does not know: use
33
+ * `time(timeframe, session)` in a script with the chart session
15
34
  */
16
35
  export declare function inSession(time: number, session: string, timezone: string): boolean;
17
36
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/time/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+CH;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAiBlF"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/time/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH,iHAAiH;AACjH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnB;AA+BD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,GAAG,IAAI,CAuCvE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAiBlF"}