@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.
- package/CHANGELOG.md +1694 -0
- package/LICENSE +21 -0
- package/README.md +53 -0
- package/dist/alert/alert.d.ts +32 -0
- package/dist/alert/alert.d.ts.map +1 -0
- package/dist/alert/alert.js +19 -0
- package/dist/alert/alert.js.map +1 -0
- package/dist/alert/index.d.ts +2 -0
- package/dist/alert/index.d.ts.map +1 -0
- package/dist/alert/index.js +4 -0
- package/dist/alert/index.js.map +1 -0
- package/dist/color/colorHelpers.d.ts +65 -0
- package/dist/color/colorHelpers.d.ts.map +1 -0
- package/dist/color/colorHelpers.js +137 -0
- package/dist/color/colorHelpers.js.map +1 -0
- package/dist/color/index.d.ts +37 -0
- package/dist/color/index.d.ts.map +1 -0
- package/dist/color/index.js +23 -0
- package/dist/color/index.js.map +1 -0
- package/dist/color/parseColor.d.ts +48 -0
- package/dist/color/parseColor.d.ts.map +1 -0
- package/dist/color/parseColor.js +141 -0
- package/dist/color/parseColor.js.map +1 -0
- package/dist/define/defineAlert.d.ts +43 -0
- package/dist/define/defineAlert.d.ts.map +1 -0
- package/dist/define/defineAlert.js +49 -0
- package/dist/define/defineAlert.js.map +1 -0
- package/dist/define/defineAlertCondition.d.ts +65 -0
- package/dist/define/defineAlertCondition.d.ts.map +1 -0
- package/dist/define/defineAlertCondition.js +64 -0
- package/dist/define/defineAlertCondition.js.map +1 -0
- package/dist/define/defineDrawing.d.ts +62 -0
- package/dist/define/defineDrawing.d.ts.map +1 -0
- package/dist/define/defineDrawing.js +67 -0
- package/dist/define/defineDrawing.js.map +1 -0
- package/dist/define/defineIndicator.d.ts +48 -0
- package/dist/define/defineIndicator.d.ts.map +1 -0
- package/dist/define/defineIndicator.js +54 -0
- package/dist/define/defineIndicator.js.map +1 -0
- package/dist/define/index.d.ts +6 -0
- package/dist/define/index.d.ts.map +1 -0
- package/dist/define/index.js +7 -0
- package/dist/define/index.js.map +1 -0
- package/dist/define/overrides.d.ts +102 -0
- package/dist/define/overrides.d.ts.map +1 -0
- package/dist/define/overrides.js +4 -0
- package/dist/define/overrides.js.map +1 -0
- package/dist/draw/buckets.d.ts +57 -0
- package/dist/draw/buckets.d.ts.map +1 -0
- package/dist/draw/buckets.js +110 -0
- package/dist/draw/buckets.js.map +1 -0
- package/dist/draw/draw.d.ts +128 -0
- package/dist/draw/draw.d.ts.map +1 -0
- package/dist/draw/draw.js +40 -0
- package/dist/draw/draw.js.map +1 -0
- package/dist/draw/drawingKind.d.ts +80 -0
- package/dist/draw/drawingKind.d.ts.map +1 -0
- package/dist/draw/drawingKind.js +177 -0
- package/dist/draw/drawingKind.js.map +1 -0
- package/dist/draw/drawingState.d.ts +1420 -0
- package/dist/draw/drawingState.d.ts.map +1 -0
- package/dist/draw/drawingState.js +4 -0
- package/dist/draw/drawingState.js.map +1 -0
- package/dist/draw/drawingStyle.d.ts +219 -0
- package/dist/draw/drawingStyle.d.ts.map +1 -0
- package/dist/draw/drawingStyle.js +4 -0
- package/dist/draw/drawingStyle.js.map +1 -0
- package/dist/draw/handle.d.ts +32 -0
- package/dist/draw/handle.d.ts.map +1 -0
- package/dist/draw/handle.js +4 -0
- package/dist/draw/handle.js.map +1 -0
- package/dist/draw/index.d.ts +13 -0
- package/dist/draw/index.d.ts.map +1 -0
- package/dist/draw/index.js +7 -0
- package/dist/draw/index.js.map +1 -0
- package/dist/draw/table.d.ts +84 -0
- package/dist/draw/table.d.ts.map +1 -0
- package/dist/draw/table.js +22 -0
- package/dist/draw/table.js.map +1 -0
- package/dist/draw/worldPoint.d.ts +114 -0
- package/dist/draw/worldPoint.d.ts.map +1 -0
- package/dist/draw/worldPoint.js +4 -0
- package/dist/draw/worldPoint.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/input/index.d.ts +3 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/index.js +4 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/input.d.ts +174 -0
- package/dist/input/input.d.ts.map +1 -0
- package/dist/input/input.js +174 -0
- package/dist/input/input.js.map +1 -0
- package/dist/input/inputDescriptor.d.ts +204 -0
- package/dist/input/inputDescriptor.d.ts.map +1 -0
- package/dist/input/inputDescriptor.js +4 -0
- package/dist/input/inputDescriptor.js.map +1 -0
- package/dist/interval/intervalToSeconds.d.ts +20 -0
- package/dist/interval/intervalToSeconds.d.ts.map +1 -0
- package/dist/interval/intervalToSeconds.js +50 -0
- package/dist/interval/intervalToSeconds.js.map +1 -0
- package/dist/plot/index.d.ts +2 -0
- package/dist/plot/index.d.ts.map +1 -0
- package/dist/plot/index.js +4 -0
- package/dist/plot/index.js.map +1 -0
- package/dist/plot/plot.d.ts +277 -0
- package/dist/plot/plot.d.ts.map +1 -0
- package/dist/plot/plot.js +37 -0
- package/dist/plot/plot.js.map +1 -0
- package/dist/request/index.d.ts +2 -0
- package/dist/request/index.d.ts.map +1 -0
- package/dist/request/index.js +4 -0
- package/dist/request/index.js.map +1 -0
- package/dist/request/request.d.ts +106 -0
- package/dist/request/request.d.ts.map +1 -0
- package/dist/request/request.js +44 -0
- package/dist/request/request.js.map +1 -0
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +4 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/runtime.d.ts +84 -0
- package/dist/runtime/runtime.d.ts.map +1 -0
- package/dist/runtime/runtime.js +72 -0
- package/dist/runtime/runtime.js.map +1 -0
- package/dist/state/index.d.ts +5 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +4 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/mutableSlot.d.ts +25 -0
- package/dist/state/mutableSlot.d.ts.map +1 -0
- package/dist/state/mutableSlot.js +4 -0
- package/dist/state/mutableSlot.js.map +1 -0
- package/dist/state/snapshot.d.ts +108 -0
- package/dist/state/snapshot.d.ts.map +1 -0
- package/dist/state/snapshot.js +4 -0
- package/dist/state/snapshot.js.map +1 -0
- package/dist/state/state.d.ts +86 -0
- package/dist/state/state.d.ts.map +1 -0
- package/dist/state/state.js +95 -0
- package/dist/state/state.js.map +1 -0
- package/dist/statefulPrimitives.d.ts +71 -0
- package/dist/statefulPrimitives.d.ts.map +1 -0
- package/dist/statefulPrimitives.js +234 -0
- package/dist/statefulPrimitives.js.map +1 -0
- package/dist/ta/index.d.ts +2 -0
- package/dist/ta/index.d.ts.map +1 -0
- package/dist/ta/index.js +4 -0
- package/dist/ta/index.js.map +1 -0
- package/dist/ta/ta.d.ts +2476 -0
- package/dist/ta/ta.d.ts.map +1 -0
- package/dist/ta/ta.js +312 -0
- package/dist/ta/ta.js.map +1 -0
- package/dist/time/_lib/dateTimeFormatCache.d.ts +11 -0
- package/dist/time/_lib/dateTimeFormatCache.d.ts.map +1 -0
- package/dist/time/_lib/dateTimeFormatCache.js +22 -0
- package/dist/time/_lib/dateTimeFormatCache.js.map +1 -0
- package/dist/time/index.d.ts +7 -0
- package/dist/time/index.d.ts.map +1 -0
- package/dist/time/index.js +8 -0
- package/dist/time/index.js.map +1 -0
- package/dist/time/nyDayKey.d.ts +24 -0
- package/dist/time/nyDayKey.d.ts.map +1 -0
- package/dist/time/nyDayKey.js +49 -0
- package/dist/time/nyDayKey.js.map +1 -0
- package/dist/time/session.d.ts +16 -0
- package/dist/time/session.d.ts.map +1 -0
- package/dist/time/session.js +18 -0
- package/dist/time/session.js.map +1 -0
- package/dist/time/sessionBoundaries.d.ts +40 -0
- package/dist/time/sessionBoundaries.d.ts.map +1 -0
- package/dist/time/sessionBoundaries.js +102 -0
- package/dist/time/sessionBoundaries.js.map +1 -0
- package/dist/time/types.d.ts +34 -0
- package/dist/time/types.d.ts.map +1 -0
- package/dist/time/types.js +4 -0
- package/dist/time/types.js.map +1 -0
- package/dist/time/weekKey.d.ts +11 -0
- package/dist/time/weekKey.d.ts.map +1 -0
- package/dist/time/weekKey.js +25 -0
- package/dist/time/weekKey.js.map +1 -0
- package/dist/time/weekday.d.ts +12 -0
- package/dist/time/weekday.d.ts.map +1 -0
- package/dist/time/weekday.js +22 -0
- package/dist/time/weekday.js.map +1 -0
- package/dist/types.d.ts +464 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/views/barstate.d.ts +40 -0
- package/dist/views/barstate.d.ts.map +1 -0
- package/dist/views/barstate.js +22 -0
- package/dist/views/barstate.js.map +1 -0
- package/dist/views/index.d.ts +4 -0
- package/dist/views/index.d.ts.map +1 -0
- package/dist/views/index.js +4 -0
- package/dist/views/index.js.map +1 -0
- package/dist/views/syminfo.d.ts +46 -0
- package/dist/views/syminfo.d.ts.map +1 -0
- package/dist/views/syminfo.js +25 -0
- package/dist/views/syminfo.js.map +1 -0
- package/dist/views/timeframe.d.ts +40 -0
- package/dist/views/timeframe.d.ts.map +1 -0
- package/dist/views/timeframe.js +21 -0
- package/dist/views/timeframe.js.map +1 -0
- 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 @@
|
|
|
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"}
|