@invinite-org/chartlang-core 1.0.1

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 (208) hide show
  1. package/CHANGELOG.md +1694 -0
  2. package/LICENSE +21 -0
  3. package/README.md +53 -0
  4. package/dist/alert/alert.d.ts +32 -0
  5. package/dist/alert/alert.d.ts.map +1 -0
  6. package/dist/alert/alert.js +19 -0
  7. package/dist/alert/alert.js.map +1 -0
  8. package/dist/alert/index.d.ts +2 -0
  9. package/dist/alert/index.d.ts.map +1 -0
  10. package/dist/alert/index.js +4 -0
  11. package/dist/alert/index.js.map +1 -0
  12. package/dist/color/colorHelpers.d.ts +65 -0
  13. package/dist/color/colorHelpers.d.ts.map +1 -0
  14. package/dist/color/colorHelpers.js +137 -0
  15. package/dist/color/colorHelpers.js.map +1 -0
  16. package/dist/color/index.d.ts +37 -0
  17. package/dist/color/index.d.ts.map +1 -0
  18. package/dist/color/index.js +23 -0
  19. package/dist/color/index.js.map +1 -0
  20. package/dist/color/parseColor.d.ts +48 -0
  21. package/dist/color/parseColor.d.ts.map +1 -0
  22. package/dist/color/parseColor.js +141 -0
  23. package/dist/color/parseColor.js.map +1 -0
  24. package/dist/define/defineAlert.d.ts +43 -0
  25. package/dist/define/defineAlert.d.ts.map +1 -0
  26. package/dist/define/defineAlert.js +49 -0
  27. package/dist/define/defineAlert.js.map +1 -0
  28. package/dist/define/defineAlertCondition.d.ts +65 -0
  29. package/dist/define/defineAlertCondition.d.ts.map +1 -0
  30. package/dist/define/defineAlertCondition.js +64 -0
  31. package/dist/define/defineAlertCondition.js.map +1 -0
  32. package/dist/define/defineDrawing.d.ts +62 -0
  33. package/dist/define/defineDrawing.d.ts.map +1 -0
  34. package/dist/define/defineDrawing.js +67 -0
  35. package/dist/define/defineDrawing.js.map +1 -0
  36. package/dist/define/defineIndicator.d.ts +48 -0
  37. package/dist/define/defineIndicator.d.ts.map +1 -0
  38. package/dist/define/defineIndicator.js +54 -0
  39. package/dist/define/defineIndicator.js.map +1 -0
  40. package/dist/define/index.d.ts +6 -0
  41. package/dist/define/index.d.ts.map +1 -0
  42. package/dist/define/index.js +7 -0
  43. package/dist/define/index.js.map +1 -0
  44. package/dist/define/overrides.d.ts +102 -0
  45. package/dist/define/overrides.d.ts.map +1 -0
  46. package/dist/define/overrides.js +4 -0
  47. package/dist/define/overrides.js.map +1 -0
  48. package/dist/draw/buckets.d.ts +57 -0
  49. package/dist/draw/buckets.d.ts.map +1 -0
  50. package/dist/draw/buckets.js +110 -0
  51. package/dist/draw/buckets.js.map +1 -0
  52. package/dist/draw/draw.d.ts +128 -0
  53. package/dist/draw/draw.d.ts.map +1 -0
  54. package/dist/draw/draw.js +40 -0
  55. package/dist/draw/draw.js.map +1 -0
  56. package/dist/draw/drawingKind.d.ts +80 -0
  57. package/dist/draw/drawingKind.d.ts.map +1 -0
  58. package/dist/draw/drawingKind.js +177 -0
  59. package/dist/draw/drawingKind.js.map +1 -0
  60. package/dist/draw/drawingState.d.ts +1420 -0
  61. package/dist/draw/drawingState.d.ts.map +1 -0
  62. package/dist/draw/drawingState.js +4 -0
  63. package/dist/draw/drawingState.js.map +1 -0
  64. package/dist/draw/drawingStyle.d.ts +219 -0
  65. package/dist/draw/drawingStyle.d.ts.map +1 -0
  66. package/dist/draw/drawingStyle.js +4 -0
  67. package/dist/draw/drawingStyle.js.map +1 -0
  68. package/dist/draw/handle.d.ts +32 -0
  69. package/dist/draw/handle.d.ts.map +1 -0
  70. package/dist/draw/handle.js +4 -0
  71. package/dist/draw/handle.js.map +1 -0
  72. package/dist/draw/index.d.ts +13 -0
  73. package/dist/draw/index.d.ts.map +1 -0
  74. package/dist/draw/index.js +7 -0
  75. package/dist/draw/index.js.map +1 -0
  76. package/dist/draw/table.d.ts +84 -0
  77. package/dist/draw/table.d.ts.map +1 -0
  78. package/dist/draw/table.js +22 -0
  79. package/dist/draw/table.js.map +1 -0
  80. package/dist/draw/worldPoint.d.ts +114 -0
  81. package/dist/draw/worldPoint.d.ts.map +1 -0
  82. package/dist/draw/worldPoint.js +4 -0
  83. package/dist/draw/worldPoint.js.map +1 -0
  84. package/dist/index.d.ts +28 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +16 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/input/index.d.ts +3 -0
  89. package/dist/input/index.d.ts.map +1 -0
  90. package/dist/input/index.js +4 -0
  91. package/dist/input/index.js.map +1 -0
  92. package/dist/input/input.d.ts +174 -0
  93. package/dist/input/input.d.ts.map +1 -0
  94. package/dist/input/input.js +174 -0
  95. package/dist/input/input.js.map +1 -0
  96. package/dist/input/inputDescriptor.d.ts +204 -0
  97. package/dist/input/inputDescriptor.d.ts.map +1 -0
  98. package/dist/input/inputDescriptor.js +4 -0
  99. package/dist/input/inputDescriptor.js.map +1 -0
  100. package/dist/interval/intervalToSeconds.d.ts +20 -0
  101. package/dist/interval/intervalToSeconds.d.ts.map +1 -0
  102. package/dist/interval/intervalToSeconds.js +50 -0
  103. package/dist/interval/intervalToSeconds.js.map +1 -0
  104. package/dist/plot/index.d.ts +2 -0
  105. package/dist/plot/index.d.ts.map +1 -0
  106. package/dist/plot/index.js +4 -0
  107. package/dist/plot/index.js.map +1 -0
  108. package/dist/plot/plot.d.ts +277 -0
  109. package/dist/plot/plot.d.ts.map +1 -0
  110. package/dist/plot/plot.js +37 -0
  111. package/dist/plot/plot.js.map +1 -0
  112. package/dist/request/index.d.ts +2 -0
  113. package/dist/request/index.d.ts.map +1 -0
  114. package/dist/request/index.js +4 -0
  115. package/dist/request/index.js.map +1 -0
  116. package/dist/request/request.d.ts +106 -0
  117. package/dist/request/request.d.ts.map +1 -0
  118. package/dist/request/request.js +44 -0
  119. package/dist/request/request.js.map +1 -0
  120. package/dist/runtime/index.d.ts +3 -0
  121. package/dist/runtime/index.d.ts.map +1 -0
  122. package/dist/runtime/index.js +4 -0
  123. package/dist/runtime/index.js.map +1 -0
  124. package/dist/runtime/runtime.d.ts +84 -0
  125. package/dist/runtime/runtime.d.ts.map +1 -0
  126. package/dist/runtime/runtime.js +72 -0
  127. package/dist/runtime/runtime.js.map +1 -0
  128. package/dist/state/index.d.ts +5 -0
  129. package/dist/state/index.d.ts.map +1 -0
  130. package/dist/state/index.js +4 -0
  131. package/dist/state/index.js.map +1 -0
  132. package/dist/state/mutableSlot.d.ts +25 -0
  133. package/dist/state/mutableSlot.d.ts.map +1 -0
  134. package/dist/state/mutableSlot.js +4 -0
  135. package/dist/state/mutableSlot.js.map +1 -0
  136. package/dist/state/snapshot.d.ts +108 -0
  137. package/dist/state/snapshot.d.ts.map +1 -0
  138. package/dist/state/snapshot.js +4 -0
  139. package/dist/state/snapshot.js.map +1 -0
  140. package/dist/state/state.d.ts +86 -0
  141. package/dist/state/state.d.ts.map +1 -0
  142. package/dist/state/state.js +95 -0
  143. package/dist/state/state.js.map +1 -0
  144. package/dist/statefulPrimitives.d.ts +71 -0
  145. package/dist/statefulPrimitives.d.ts.map +1 -0
  146. package/dist/statefulPrimitives.js +234 -0
  147. package/dist/statefulPrimitives.js.map +1 -0
  148. package/dist/ta/index.d.ts +2 -0
  149. package/dist/ta/index.d.ts.map +1 -0
  150. package/dist/ta/index.js +4 -0
  151. package/dist/ta/index.js.map +1 -0
  152. package/dist/ta/ta.d.ts +2476 -0
  153. package/dist/ta/ta.d.ts.map +1 -0
  154. package/dist/ta/ta.js +312 -0
  155. package/dist/ta/ta.js.map +1 -0
  156. package/dist/time/_lib/dateTimeFormatCache.d.ts +11 -0
  157. package/dist/time/_lib/dateTimeFormatCache.d.ts.map +1 -0
  158. package/dist/time/_lib/dateTimeFormatCache.js +22 -0
  159. package/dist/time/_lib/dateTimeFormatCache.js.map +1 -0
  160. package/dist/time/index.d.ts +7 -0
  161. package/dist/time/index.d.ts.map +1 -0
  162. package/dist/time/index.js +8 -0
  163. package/dist/time/index.js.map +1 -0
  164. package/dist/time/nyDayKey.d.ts +24 -0
  165. package/dist/time/nyDayKey.d.ts.map +1 -0
  166. package/dist/time/nyDayKey.js +49 -0
  167. package/dist/time/nyDayKey.js.map +1 -0
  168. package/dist/time/session.d.ts +16 -0
  169. package/dist/time/session.d.ts.map +1 -0
  170. package/dist/time/session.js +18 -0
  171. package/dist/time/session.js.map +1 -0
  172. package/dist/time/sessionBoundaries.d.ts +40 -0
  173. package/dist/time/sessionBoundaries.d.ts.map +1 -0
  174. package/dist/time/sessionBoundaries.js +102 -0
  175. package/dist/time/sessionBoundaries.js.map +1 -0
  176. package/dist/time/types.d.ts +34 -0
  177. package/dist/time/types.d.ts.map +1 -0
  178. package/dist/time/types.js +4 -0
  179. package/dist/time/types.js.map +1 -0
  180. package/dist/time/weekKey.d.ts +11 -0
  181. package/dist/time/weekKey.d.ts.map +1 -0
  182. package/dist/time/weekKey.js +25 -0
  183. package/dist/time/weekKey.js.map +1 -0
  184. package/dist/time/weekday.d.ts +12 -0
  185. package/dist/time/weekday.d.ts.map +1 -0
  186. package/dist/time/weekday.js +22 -0
  187. package/dist/time/weekday.js.map +1 -0
  188. package/dist/types.d.ts +464 -0
  189. package/dist/types.d.ts.map +1 -0
  190. package/dist/types.js +4 -0
  191. package/dist/types.js.map +1 -0
  192. package/dist/views/barstate.d.ts +40 -0
  193. package/dist/views/barstate.d.ts.map +1 -0
  194. package/dist/views/barstate.js +22 -0
  195. package/dist/views/barstate.js.map +1 -0
  196. package/dist/views/index.d.ts +4 -0
  197. package/dist/views/index.d.ts.map +1 -0
  198. package/dist/views/index.js +4 -0
  199. package/dist/views/index.js.map +1 -0
  200. package/dist/views/syminfo.d.ts +46 -0
  201. package/dist/views/syminfo.d.ts.map +1 -0
  202. package/dist/views/syminfo.js +25 -0
  203. package/dist/views/syminfo.js.map +1 -0
  204. package/dist/views/timeframe.d.ts +40 -0
  205. package/dist/views/timeframe.d.ts.map +1 -0
  206. package/dist/views/timeframe.js +21 -0
  207. package/dist/views/timeframe.js.map +1 -0
  208. package/package.json +45 -0
@@ -0,0 +1,102 @@
1
+ // Copyright (c) 2026 Invinite. Licensed under the MIT License.
2
+ // See the LICENSE file in the repo root for full license text.
3
+ //
4
+ // Ported from invinite/src/components/trading-chart/indicators/lib/session-boundaries.ts
5
+ // (commit fb882a97e018ea0cc9a451fb7d839dc8d894c08b, © Invinite).
6
+ // Re-licensed MIT for chartlang. See PLAN.md §3.1 for the
7
+ // provenance contract; the math is the reference, the code style is not.
8
+ import { getFormatter } from "./_lib/dateTimeFormatCache.js";
9
+ import { localDateParts } from "./nyDayKey.js";
10
+ import { weekday } from "./weekday.js";
11
+ const MINUTE_MS = 60_000;
12
+ const OFFSET_FIELDS = Object.freeze({
13
+ year: "numeric",
14
+ month: "2-digit",
15
+ day: "2-digit",
16
+ hour: "2-digit",
17
+ minute: "2-digit",
18
+ second: "2-digit",
19
+ hourCycle: "h23",
20
+ });
21
+ function offsetMs(tz, instantMs) {
22
+ const parts = getFormatter(tz, OFFSET_FIELDS).formatToParts(instantMs);
23
+ const fields = {};
24
+ for (const part of parts) {
25
+ fields[part.type] = part.value;
26
+ }
27
+ const asUtc = Date.UTC(Number(fields.year), Number(fields.month) - 1, Number(fields.day), Number(fields.hour), Number(fields.minute), Number(fields.second));
28
+ return asUtc - instantMs;
29
+ }
30
+ function zonedTimeToUtcMs(tz, year, month, day, hour, minute) {
31
+ const guess = Date.UTC(year, month - 1, day, hour, minute);
32
+ const first = guess - offsetMs(tz, guess);
33
+ const second = guess - offsetMs(tz, first);
34
+ return second;
35
+ }
36
+ function sessionFor(tz, t, startMinutes, endMinutes) {
37
+ const dow = weekday(tz, t);
38
+ if (dow === 0 || dow === 6)
39
+ return null;
40
+ const parts = localDateParts(tz, t);
41
+ const year = Number(parts.year);
42
+ const month = Number(parts.month);
43
+ const day = Number(parts.day);
44
+ const startMs = zonedTimeToUtcMs(tz, year, month, day, 0, startMinutes);
45
+ const endMs = zonedTimeToUtcMs(tz, year, month, day, 0, endMinutes);
46
+ return Object.freeze({ startMs, endMs });
47
+ }
48
+ /**
49
+ * Return the regular 09:30-16:00 session bounds for the New York day
50
+ * containing `t`.
51
+ *
52
+ * @since 0.6
53
+ * @stable
54
+ * @example
55
+ * nySessionBounds(1_709_251_200_000);
56
+ */
57
+ export function nySessionBounds(t) {
58
+ const bounds = sessionFor("America/New_York", t, 9 * 60 + 30, 16 * 60);
59
+ if (bounds !== null)
60
+ return bounds;
61
+ const parts = localDateParts("America/New_York", t);
62
+ const noon = zonedTimeToUtcMs("America/New_York", Number(parts.year), Number(parts.month), Number(parts.day), 12, 0);
63
+ return {
64
+ startMs: noon - 150 * MINUTE_MS,
65
+ endMs: noon + 240 * MINUTE_MS,
66
+ };
67
+ }
68
+ /**
69
+ * Return regular 09:30-16:00 session bounds in `tz`, or `null` on weekends.
70
+ *
71
+ * @since 0.6
72
+ * @stable
73
+ * @example
74
+ * regularSession("America/New_York", 1_709_251_200_000);
75
+ */
76
+ export function regularSession(tz, t) {
77
+ return sessionFor(tz, t, 9 * 60 + 30, 16 * 60);
78
+ }
79
+ /**
80
+ * Return extended 04:00-20:00 session bounds in `tz`, or `null` on weekends.
81
+ *
82
+ * @since 0.6
83
+ * @stable
84
+ * @example
85
+ * extendedSession("America/New_York", 1_709_251_200_000);
86
+ */
87
+ export function extendedSession(tz, t) {
88
+ return sessionFor(tz, t, 4 * 60, 20 * 60);
89
+ }
90
+ /**
91
+ * Test whether `t` falls inside the selected half-open session in `tz`.
92
+ *
93
+ * @since 0.6
94
+ * @stable
95
+ * @example
96
+ * isOpen("America/New_York", 1_709_251_200_000, "regular");
97
+ */
98
+ export function isOpen(tz, t, type) {
99
+ const bounds = type === "regular" ? regularSession(tz, t) : extendedSession(tz, t);
100
+ return bounds !== null && bounds.startMs <= t && t < bounds.endMs;
101
+ }
102
+ //# sourceMappingURL=sessionBoundaries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionBoundaries.js","sourceRoot":"","sources":["../../src/time/sessionBoundaries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Supported market-session boundary families.
3
+ *
4
+ * @since 0.6
5
+ * @stable
6
+ * @example
7
+ * const type: SessionType = "regular";
8
+ * void type;
9
+ */
10
+ export type SessionType = "regular" | "extended";
11
+ /**
12
+ * Day-of-week index where Sunday is 0 and Saturday is 6.
13
+ *
14
+ * @since 0.6
15
+ * @stable
16
+ * @example
17
+ * const day: Weekday = 1;
18
+ * void day;
19
+ */
20
+ export type Weekday = 0 | 1 | 2 | 3 | 4 | 5 | 6;
21
+ /**
22
+ * Half-open UTC millisecond session bounds.
23
+ *
24
+ * @since 0.6
25
+ * @stable
26
+ * @example
27
+ * const bounds: SessionBounds = { startMs: 0, endMs: 1 };
28
+ * void bounds;
29
+ */
30
+ export type SessionBounds = {
31
+ readonly startMs: number;
32
+ readonly endMs: number;
33
+ };
34
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/time/types.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Copyright (c) 2026 Invinite. Licensed under the MIT License.
2
+ // See the LICENSE file in the repo root for full license text.
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/time/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D"}
@@ -0,0 +1,11 @@
1
+ import type { Time } from "../types.js";
2
+ /**
3
+ * Return the ISO week key (`GGGG-Www`) for `t` in `tz`.
4
+ *
5
+ * @since 0.6
6
+ * @stable
7
+ * @example
8
+ * weekKey("UTC", 1_704_067_200_000);
9
+ */
10
+ export declare function weekKey(tz: string, t: Time): string;
11
+ //# sourceMappingURL=weekKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weekKey.d.ts","sourceRoot":"","sources":["../../src/time/weekKey.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAYxC;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAInD"}
@@ -0,0 +1,25 @@
1
+ // Copyright (c) 2026 Invinite. Licensed under the MIT License.
2
+ // See the LICENSE file in the repo root for full license text.
3
+ import { localDateParts } from "./nyDayKey.js";
4
+ function isoWeek(year, month, day) {
5
+ const date = new Date(Date.UTC(year, month - 1, day));
6
+ date.setUTCDate(date.getUTCDate() + 4 - (date.getUTCDay() || 7));
7
+ const weekYear = date.getUTCFullYear();
8
+ const yearStart = new Date(Date.UTC(weekYear, 0, 1));
9
+ const week = Math.ceil(((date.getTime() - yearStart.getTime()) / 86_400_000 + 1) / 7);
10
+ return { year: weekYear, week };
11
+ }
12
+ /**
13
+ * Return the ISO week key (`GGGG-Www`) for `t` in `tz`.
14
+ *
15
+ * @since 0.6
16
+ * @stable
17
+ * @example
18
+ * weekKey("UTC", 1_704_067_200_000);
19
+ */
20
+ export function weekKey(tz, t) {
21
+ const parts = localDateParts(tz, t);
22
+ const { year, week } = isoWeek(Number(parts.year), Number(parts.month), Number(parts.day));
23
+ return `${year}-W${String(week).padStart(2, "0")}`;
24
+ }
25
+ //# sourceMappingURL=weekKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weekKey.js","sourceRoot":"","sources":["../../src/time/weekKey.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,SAAS,OAAO,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;IACrD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,EAAU,EAAE,CAAO;IACvC,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3F,OAAO,GAAG,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACvD,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Time } from "../types.js";
2
+ import type { Weekday } from "./types.js";
3
+ /**
4
+ * Return the local weekday in `tz`, where Sunday is 0.
5
+ *
6
+ * @since 0.6
7
+ * @stable
8
+ * @example
9
+ * weekday("UTC", 1_704_067_200_000);
10
+ */
11
+ export declare function weekday(tz: string, t: Time): Weekday;
12
+ //# sourceMappingURL=weekday.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weekday.d.ts","sourceRoot":"","sources":["../../src/time/weekday.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1C;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAOpD"}
@@ -0,0 +1,22 @@
1
+ // Copyright (c) 2026 Invinite. Licensed under the MIT License.
2
+ // See the LICENSE file in the repo root for full license text.
3
+ import { getFormatter } from "./_lib/dateTimeFormatCache.js";
4
+ const WEEKDAYS = Object.freeze(["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]);
5
+ /**
6
+ * Return the local weekday in `tz`, where Sunday is 0.
7
+ *
8
+ * @since 0.6
9
+ * @stable
10
+ * @example
11
+ * weekday("UTC", 1_704_067_200_000);
12
+ */
13
+ export function weekday(tz, t) {
14
+ const part = getFormatter(tz, { weekday: "short" })
15
+ .formatToParts(t)
16
+ .find((p) => p.type === "weekday");
17
+ const index = WEEKDAYS.indexOf(part?.value ?? "");
18
+ if (index < 0)
19
+ throw new Error(`weekday: unsupported Intl weekday ${part?.value ?? "<none>"}`);
20
+ return index;
21
+ }
22
+ //# sourceMappingURL=weekday.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weekday.js","sourceRoot":"","sources":["../../src/time/weekday.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAG/D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAElF;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,EAAU,EAAE,CAAO;IACvC,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;SAC9C,aAAa,CAAC,CAAC,CAAC;SAChB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAClD,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,EAAE,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC/F,OAAO,KAAgB,CAAC;AAC5B,CAAC"}