@procedures/ics 0.5.0 → 0.6.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.
- package/CHANGELOG.md +22 -0
- package/README.md +34 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/days.d.ts +26 -0
- package/dist/days.d.ts.map +1 -0
- package/dist/days.js +46 -0
- package/dist/days.js.map +1 -0
- package/dist/ics.d.ts +5 -1
- package/dist/ics.d.ts.map +1 -1
- package/dist/ics.js +7 -26
- package/dist/ics.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/zone.d.ts +33 -0
- package/dist/zone.d.ts.map +1 -0
- package/dist/zone.js +113 -0
- package/dist/zone.js.map +1 -0
- package/package.json +2 -2
- package/src/days.ts +48 -0
- package/src/ics.ts +9 -33
- package/src/index.ts +3 -0
- package/src/zone.ts +128 -0
package/dist/days.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calendar dates (`YYYY-MM-DD`) with the arithmetic of UTC. A date has no time zone, so a change
|
|
3
|
+
* of daylight saving time does not move it. The years are 0000 to 9999.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* This function gives the time of midnight UTC of a date. A text that is not a real date in the
|
|
7
|
+
* form `YYYY-MM-DD` throws a `RangeError`: `2026-02-30` is not a date.
|
|
8
|
+
*/
|
|
9
|
+
export declare function dateTime(date: string, label: string): number;
|
|
10
|
+
/**
|
|
11
|
+
* This function gives the date `days` days after a date (`YYYY-MM-DD`). A negative number gives
|
|
12
|
+
* an earlier date. The number of days must be an integer.
|
|
13
|
+
*
|
|
14
|
+
* - The arithmetic is the arithmetic of UTC, so a change of daylight saving time does not move the date.
|
|
15
|
+
* - A date that is not valid, or a result outside the years 0000 to 9999, throws a `RangeError`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function shiftDay(date: string, days: number): string;
|
|
18
|
+
/**
|
|
19
|
+
* This function gives the number of whole days from the date `from` to the date `to`
|
|
20
|
+
* (`YYYY-MM-DD`). It is negative when `to` is before `from`, and 0 for the same date.
|
|
21
|
+
*
|
|
22
|
+
* - The count is exact: a calendar day is one day, also on a day with a change of daylight saving time.
|
|
23
|
+
* - A text that is not a date throws a `RangeError`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function daysBetween(from: string, to: string): number;
|
|
26
|
+
//# sourceMappingURL=days.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"days.d.ts","sourceRoot":"","sources":["../src/days.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE5D"}
|
package/dist/days.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calendar dates (`YYYY-MM-DD`) with the arithmetic of UTC. A date has no time zone, so a change
|
|
3
|
+
* of daylight saving time does not move it. The years are 0000 to 9999.
|
|
4
|
+
*/
|
|
5
|
+
const DAY = 86_400_000;
|
|
6
|
+
/** The form of a date. */
|
|
7
|
+
const DATE = /^\d{4}-\d{2}-\d{2}$/;
|
|
8
|
+
/**
|
|
9
|
+
* This function gives the time of midnight UTC of a date. A text that is not a real date in the
|
|
10
|
+
* form `YYYY-MM-DD` throws a `RangeError`: `2026-02-30` is not a date.
|
|
11
|
+
*/
|
|
12
|
+
export function dateTime(date, label) {
|
|
13
|
+
const time = DATE.test(date) ? Date.parse(`${date}T00:00:00Z`) : Number.NaN;
|
|
14
|
+
// Date.parse accepts the day 30 of February and gives the 2nd of March: the date must come back
|
|
15
|
+
if (Number.isNaN(time) || new Date(time).toISOString().slice(0, 10) !== date) {
|
|
16
|
+
throw new RangeError(`${label}: ${JSON.stringify(date)} is not a date in the form YYYY-MM-DD`);
|
|
17
|
+
}
|
|
18
|
+
return time;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* This function gives the date `days` days after a date (`YYYY-MM-DD`). A negative number gives
|
|
22
|
+
* an earlier date. The number of days must be an integer.
|
|
23
|
+
*
|
|
24
|
+
* - The arithmetic is the arithmetic of UTC, so a change of daylight saving time does not move the date.
|
|
25
|
+
* - A date that is not valid, or a result outside the years 0000 to 9999, throws a `RangeError`.
|
|
26
|
+
*/
|
|
27
|
+
export function shiftDay(date, days) {
|
|
28
|
+
if (!Number.isSafeInteger(days))
|
|
29
|
+
throw new RangeError(`shiftDay: the number of days ${String(days)} is not an integer`);
|
|
30
|
+
const time = dateTime(date, "shiftDay") + days * DAY;
|
|
31
|
+
const text = Number.isFinite(time) && Math.abs(time) <= 8.64e15 ? new Date(time).toISOString() : "";
|
|
32
|
+
if (!/^\d{4}-/.test(text))
|
|
33
|
+
throw new RangeError(`shiftDay: ${date} plus ${String(days)} days is not from the year 0000 to 9999`);
|
|
34
|
+
return text.slice(0, 10);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* This function gives the number of whole days from the date `from` to the date `to`
|
|
38
|
+
* (`YYYY-MM-DD`). It is negative when `to` is before `from`, and 0 for the same date.
|
|
39
|
+
*
|
|
40
|
+
* - The count is exact: a calendar day is one day, also on a day with a change of daylight saving time.
|
|
41
|
+
* - A text that is not a date throws a `RangeError`.
|
|
42
|
+
*/
|
|
43
|
+
export function daysBetween(from, to) {
|
|
44
|
+
return (dateTime(to, "daysBetween") - dateTime(from, "daysBetween")) / DAY;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=days.js.map
|
package/dist/days.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"days.js","sourceRoot":"","sources":["../src/days.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,GAAG,GAAG,UAAU,CAAC;AAEvB,0BAA0B;AAC1B,MAAM,IAAI,GAAG,qBAAqB,CAAC;AAEnC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,KAAa;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAC5E,gGAAgG;IAChG,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7E,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAY;IACjD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,gCAAgC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,aAAa,IAAI,SAAS,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACjI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,EAAU;IAClD,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,GAAG,GAAG,CAAC;AAC7E,CAAC"}
|
package/dist/ics.d.ts
CHANGED
|
@@ -45,7 +45,11 @@ export interface Occurrence {
|
|
|
45
45
|
* line. It reads each escape one time from left to right, so `\\n` is a backslash and an `n`.
|
|
46
46
|
*/
|
|
47
47
|
export declare const unescapeText: (value: string) => string;
|
|
48
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* This function gives the UTC time (ISO 8601) of a local time in an IANA time zone, as RFC 5545
|
|
50
|
+
* (3.3.5) tells. A local time that occurs two times gives its first occurrence. A local time in
|
|
51
|
+
* the gap of a change to daylight time uses the offset before the gap: 02:30 becomes 03:30.
|
|
52
|
+
*/
|
|
49
53
|
export declare const zonedToUtc: (y: number, mo: number, d: number, h: number, mi: number, s: number, timeZone: string) => string;
|
|
50
54
|
/** True when a text is an iCalendar object. A proxy error page is not. */
|
|
51
55
|
export declare const isCalendar: (text: string) => boolean;
|
package/dist/ics.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ics.d.ts","sourceRoot":"","sources":["../src/ics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"ics.d.ts","sourceRoot":"","sources":["../src/ics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,4CAA4C;AAC5C,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mGAAmG;IACnG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+FAA+F;IAC/F,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjD,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED,mDAAmD;AACnD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAuBD;;;GAGG;AACH,eAAO,MAAM,YAAY,UAAW,MAAM,KAAG,MACoE,CAAC;AAgBlH;;;;GAIG;AACH,eAAO,MAAM,UAAU,MAAO,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,YAAY,MAAM,KAAG,MACjD,CAAC;AA0DlE,0EAA0E;AAC1E,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,OAA4C,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,QAAQ,EAgC/C,CAAC;AAoCF,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAAW,QAAQ,UAAU,UAAU,KAAG,UAAU,EAqHjF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,WAAY,SAAS,QAAQ,EAAE,UAAU,UAAU,KAAG,UAAU,EAa/F,CAAC"}
|
package/dist/ics.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* time window. It has no dependencies. It reads the properties that a calendar of events needs, and
|
|
4
4
|
* it ignores the others (alarms, attendees, time zone definitions).
|
|
5
5
|
*/
|
|
6
|
+
import { zonedInstant } from "./zone.js";
|
|
6
7
|
const HOUR_MS = 3_600_000;
|
|
7
8
|
const DAY_MS = 86_400_000;
|
|
8
9
|
/** A recurrence makes at most this number of occurrences. It is a bound for safety. */
|
|
@@ -33,32 +34,12 @@ const parseProp = (line) => {
|
|
|
33
34
|
}
|
|
34
35
|
return { name: name.toUpperCase(), params, value };
|
|
35
36
|
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
hour: "2-digit",
|
|
43
|
-
minute: "2-digit",
|
|
44
|
-
second: "2-digit",
|
|
45
|
-
hour12: false,
|
|
46
|
-
});
|
|
47
|
-
const parts = new Map(dtf.formatToParts(date).map((part) => [part.type, part.value]));
|
|
48
|
-
const hour = parts.get("hour") === "24" ? "00" : (parts.get("hour") ?? "00");
|
|
49
|
-
const local = Date.UTC(Number(parts.get("year")), Number(parts.get("month")) - 1, Number(parts.get("day")), Number(hour), Number(parts.get("minute")), Number(parts.get("second")));
|
|
50
|
-
return local - date.getTime();
|
|
51
|
-
};
|
|
52
|
-
/** This function gives the UTC time (ISO 8601) of a local time in an IANA time zone. */
|
|
53
|
-
export const zonedToUtc = (y, mo, d, h, mi, s, timeZone) => {
|
|
54
|
-
const asUtc = Date.UTC(y, mo - 1, d, h, mi, s);
|
|
55
|
-
let ts = asUtc - tzOffsetMs(timeZone, new Date(asUtc));
|
|
56
|
-
// A second pass corrects the offset near a DST change
|
|
57
|
-
const second = asUtc - tzOffsetMs(timeZone, new Date(ts));
|
|
58
|
-
if (second !== ts)
|
|
59
|
-
ts = second;
|
|
60
|
-
return toIso(ts);
|
|
61
|
-
};
|
|
37
|
+
/**
|
|
38
|
+
* This function gives the UTC time (ISO 8601) of a local time in an IANA time zone, as RFC 5545
|
|
39
|
+
* (3.3.5) tells. A local time that occurs two times gives its first occurrence. A local time in
|
|
40
|
+
* the gap of a change to daylight time uses the offset before the gap: 02:30 becomes 03:30.
|
|
41
|
+
*/
|
|
42
|
+
export const zonedToUtc = (y, mo, d, h, mi, s, timeZone) => toIso(zonedInstant(Date.UTC(y, mo - 1, d, h, mi, s), timeZone));
|
|
62
43
|
const parseIcsDate = (prop) => {
|
|
63
44
|
const value = prop.value;
|
|
64
45
|
const tzid = prop.params.get("TZID");
|
package/dist/ics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ics.js","sourceRoot":"","sources":["../src/ics.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ics.js","sourceRoot":"","sources":["../src/ics.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,5 +2,7 @@ export * from "./module.js";
|
|
|
2
2
|
export * from "./procedures.js";
|
|
3
3
|
export * from "./ics.js";
|
|
4
4
|
export * from "./write.js";
|
|
5
|
+
export { localDate, zonedOffset } from "./zone.js";
|
|
6
|
+
export { daysBetween, shiftDay } from "./days.js";
|
|
5
7
|
export * from "./types.js";
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAClD,cAAc,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,5 +3,8 @@ export * from "./module.js";
|
|
|
3
3
|
export * from "./procedures.js";
|
|
4
4
|
export * from "./ics.js";
|
|
5
5
|
export * from "./write.js";
|
|
6
|
+
// The calendar days: the date of an instant in a zone, and the arithmetic of dates
|
|
7
|
+
export { localDate, zonedOffset } from "./zone.js";
|
|
8
|
+
export { daysBetween, shiftDay } from "./days.js";
|
|
6
9
|
export * from "./types.js";
|
|
7
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,mFAAmF;AACnF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAClD,cAAc,YAAY,CAAC"}
|
package/dist/zone.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wall times and dates in IANA time zones, with `Intl` only and no time zone database. This is the
|
|
3
|
+
* approach of `@procedures/schedule`: the offset of a zone at a time comes from `formatToParts`.
|
|
4
|
+
*
|
|
5
|
+
* A wall time is the time that a clock shows, as milliseconds with the arithmetic of UTC. In a
|
|
6
|
+
* zone, the wall time of an instant is the instant plus the offset of the zone at that instant.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* This function gives the instant of a wall time in a zone, as RFC 5545 (3.3.5) tells. A wall
|
|
10
|
+
* time that the clock shows two times gives its first occurrence. A wall time in a gap uses the
|
|
11
|
+
* offset before the gap: 02:30 on the day of the change to daylight time becomes 03:30.
|
|
12
|
+
*/
|
|
13
|
+
export declare function zonedInstant(wall: number, timeZone: string): number;
|
|
14
|
+
/**
|
|
15
|
+
* This function gives the UTC offset (`+HH:MM` or `-HH:MM`) of a wall time in an IANA time zone.
|
|
16
|
+
* The text `${date}T${time}${offset}` is then the instant that RFC 5545 gives to the wall time.
|
|
17
|
+
*
|
|
18
|
+
* - The date is `YYYY-MM-DD`, and the time is `HH:MM` or `HH:MM:SS`. Another text throws a `RangeError`.
|
|
19
|
+
* - A wall time that the clock shows two times gives the offset of its first occurrence.
|
|
20
|
+
* - A wall time in a gap gives the offset before the gap, so `02:30-05:00` is 03:30 daylight time.
|
|
21
|
+
* - UTC gives `+00:00`. A zone that `Intl` does not know throws a `RangeError`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function zonedOffset(date: string, time: string, timeZone: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* This function gives the date (`YYYY-MM-DD`) of an instant in an IANA time zone. The instant is
|
|
26
|
+
* a `Date`, milliseconds since 1970, or a text that `Date.parse` reads.
|
|
27
|
+
*
|
|
28
|
+
* - The result is the date that a clock in the zone shows at the instant.
|
|
29
|
+
* - An instant that is not valid, or a year of the result after 9999, throws a `RangeError`.
|
|
30
|
+
* - A zone that `Intl` does not know throws a `RangeError`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function localDate(instant: Date | number | string, timeZone: string): string;
|
|
33
|
+
//# sourceMappingURL=zone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zone.d.ts","sourceRoot":"","sources":["../src/zone.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsEH;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOnE;AAOD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOhF;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMnF"}
|
package/dist/zone.js
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wall times and dates in IANA time zones, with `Intl` only and no time zone database. This is the
|
|
3
|
+
* approach of `@procedures/schedule`: the offset of a zone at a time comes from `formatToParts`.
|
|
4
|
+
*
|
|
5
|
+
* A wall time is the time that a clock shows, as milliseconds with the arithmetic of UTC. In a
|
|
6
|
+
* zone, the wall time of an instant is the instant plus the offset of the zone at that instant.
|
|
7
|
+
*/
|
|
8
|
+
import { dateTime } from "./days.js";
|
|
9
|
+
const MINUTE = 60_000;
|
|
10
|
+
const DAY = 86_400_000;
|
|
11
|
+
/** The formatters by the name of the zone. */
|
|
12
|
+
const formats = new Map();
|
|
13
|
+
/** The formatter of a zone. `Intl` throws a `RangeError` for a zone that it does not know. */
|
|
14
|
+
function formatOf(timeZone) {
|
|
15
|
+
let format = formats.get(timeZone);
|
|
16
|
+
if (format === undefined) {
|
|
17
|
+
format = new Intl.DateTimeFormat("en-US", {
|
|
18
|
+
timeZone,
|
|
19
|
+
hourCycle: "h23",
|
|
20
|
+
era: "short",
|
|
21
|
+
year: "numeric",
|
|
22
|
+
month: "numeric",
|
|
23
|
+
day: "numeric",
|
|
24
|
+
hour: "numeric",
|
|
25
|
+
minute: "numeric",
|
|
26
|
+
second: "numeric",
|
|
27
|
+
});
|
|
28
|
+
// The cache stays small: a process uses few zones
|
|
29
|
+
if (formats.size >= 1000)
|
|
30
|
+
formats.clear();
|
|
31
|
+
formats.set(timeZone, format);
|
|
32
|
+
}
|
|
33
|
+
return format;
|
|
34
|
+
}
|
|
35
|
+
/** The fields of the wall time of an instant in a zone. */
|
|
36
|
+
function fieldsAt(time, timeZone) {
|
|
37
|
+
const value = {};
|
|
38
|
+
for (const part of formatOf(timeZone).formatToParts(time))
|
|
39
|
+
if (part.type !== "literal")
|
|
40
|
+
value[part.type] = part.value;
|
|
41
|
+
const year = Number(value.year);
|
|
42
|
+
return {
|
|
43
|
+
year: value.era === "BC" ? 1 - year : year,
|
|
44
|
+
month: Number(value.month),
|
|
45
|
+
day: Number(value.day),
|
|
46
|
+
hour: Number(value.hour) % 24,
|
|
47
|
+
minute: Number(value.minute),
|
|
48
|
+
second: Number(value.second),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** The wall time of the fields. `setUTCFullYear` keeps the years 0 to 99, which `Date.UTC` moves to 1900. */
|
|
52
|
+
function wallOf(fields) {
|
|
53
|
+
const date = new Date(0);
|
|
54
|
+
date.setUTCFullYear(fields.year, fields.month - 1, fields.day);
|
|
55
|
+
date.setUTCHours(fields.hour, fields.minute, fields.second, 0);
|
|
56
|
+
return date.getTime();
|
|
57
|
+
}
|
|
58
|
+
/** The offset of a zone at an instant: the wall time minus the instant, in milliseconds. */
|
|
59
|
+
function offsetAt(time, timeZone) {
|
|
60
|
+
return wallOf(fieldsAt(time, timeZone)) - Math.floor(time / 1000) * 1000;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* This function gives the instant of a wall time in a zone, as RFC 5545 (3.3.5) tells. A wall
|
|
64
|
+
* time that the clock shows two times gives its first occurrence. A wall time in a gap uses the
|
|
65
|
+
* offset before the gap: 02:30 on the day of the change to daylight time becomes 03:30.
|
|
66
|
+
*/
|
|
67
|
+
export function zonedInstant(wall, timeZone) {
|
|
68
|
+
// The offsets a day before and a day after: a change of the clock near the wall time is between them
|
|
69
|
+
const before = offsetAt(wall - DAY, timeZone);
|
|
70
|
+
const after = offsetAt(wall + DAY, timeZone);
|
|
71
|
+
const offsets = new Set([before, after, offsetAt(wall, timeZone)]);
|
|
72
|
+
const times = [...offsets].map((offset) => wall - offset).filter((time) => time + offsetAt(time, timeZone) === wall);
|
|
73
|
+
return times.length > 0 ? Math.min(...times) : wall - before;
|
|
74
|
+
}
|
|
75
|
+
/** The form of a time of day: `HH:MM` or `HH:MM:SS`. */
|
|
76
|
+
const TIME = /^([01]\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?$/;
|
|
77
|
+
const pad = (value, size = 2) => String(value).padStart(size, "0");
|
|
78
|
+
/**
|
|
79
|
+
* This function gives the UTC offset (`+HH:MM` or `-HH:MM`) of a wall time in an IANA time zone.
|
|
80
|
+
* The text `${date}T${time}${offset}` is then the instant that RFC 5545 gives to the wall time.
|
|
81
|
+
*
|
|
82
|
+
* - The date is `YYYY-MM-DD`, and the time is `HH:MM` or `HH:MM:SS`. Another text throws a `RangeError`.
|
|
83
|
+
* - A wall time that the clock shows two times gives the offset of its first occurrence.
|
|
84
|
+
* - A wall time in a gap gives the offset before the gap, so `02:30-05:00` is 03:30 daylight time.
|
|
85
|
+
* - UTC gives `+00:00`. A zone that `Intl` does not know throws a `RangeError`.
|
|
86
|
+
*/
|
|
87
|
+
export function zonedOffset(date, time, timeZone) {
|
|
88
|
+
const match = TIME.exec(time);
|
|
89
|
+
if (match === null)
|
|
90
|
+
throw new RangeError(`zonedOffset: ${JSON.stringify(time)} is not a time in the form HH:MM or HH:MM:SS`);
|
|
91
|
+
const wall = dateTime(date, "zonedOffset") + (Number(match[1]) * 60 + Number(match[2])) * MINUTE + Number(match[3] ?? 0) * 1000;
|
|
92
|
+
const minutes = Math.round((wall - zonedInstant(wall, timeZone)) / MINUTE);
|
|
93
|
+
const sign = minutes < 0 ? "-" : "+";
|
|
94
|
+
return `${sign}${pad(Math.floor(Math.abs(minutes) / 60))}:${pad(Math.abs(minutes) % 60)}`;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* This function gives the date (`YYYY-MM-DD`) of an instant in an IANA time zone. The instant is
|
|
98
|
+
* a `Date`, milliseconds since 1970, or a text that `Date.parse` reads.
|
|
99
|
+
*
|
|
100
|
+
* - The result is the date that a clock in the zone shows at the instant.
|
|
101
|
+
* - An instant that is not valid, or a year of the result after 9999, throws a `RangeError`.
|
|
102
|
+
* - A zone that `Intl` does not know throws a `RangeError`.
|
|
103
|
+
*/
|
|
104
|
+
export function localDate(instant, timeZone) {
|
|
105
|
+
const time = instant instanceof Date ? instant.getTime() : typeof instant === "number" ? instant : Date.parse(instant);
|
|
106
|
+
if (!Number.isFinite(time))
|
|
107
|
+
throw new RangeError(`localDate: ${JSON.stringify(String(instant))} is not a valid instant`);
|
|
108
|
+
const fields = fieldsAt(time, timeZone);
|
|
109
|
+
if (fields.year < 0 || fields.year > 9999)
|
|
110
|
+
throw new RangeError(`localDate: the year ${fields.year} is not from 0 to 9999`);
|
|
111
|
+
return `${pad(fields.year, 4)}-${pad(fields.month)}-${pad(fields.day)}`;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=zone.js.map
|
package/dist/zone.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zone.js","sourceRoot":"","sources":["../src/zone.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package",
|
|
3
3
|
"name": "@procedures/ics",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.6.0",
|
|
5
5
|
"description": "An iCalendar (RFC 5545) reader and writer without dependencies: the events of a calendar, their occurrences in a time window with the recurrences, and a calendar from events.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"ics",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"provenance": true
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@procedures/client": "0.
|
|
62
|
+
"@procedures/client": "0.6.0",
|
|
63
63
|
"zod": "^4.6.5"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
package/src/days.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calendar dates (`YYYY-MM-DD`) with the arithmetic of UTC. A date has no time zone, so a change
|
|
3
|
+
* of daylight saving time does not move it. The years are 0000 to 9999.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const DAY = 86_400_000;
|
|
7
|
+
|
|
8
|
+
/** The form of a date. */
|
|
9
|
+
const DATE = /^\d{4}-\d{2}-\d{2}$/;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* This function gives the time of midnight UTC of a date. A text that is not a real date in the
|
|
13
|
+
* form `YYYY-MM-DD` throws a `RangeError`: `2026-02-30` is not a date.
|
|
14
|
+
*/
|
|
15
|
+
export function dateTime(date: string, label: string): number {
|
|
16
|
+
const time = DATE.test(date) ? Date.parse(`${date}T00:00:00Z`) : Number.NaN;
|
|
17
|
+
// Date.parse accepts the day 30 of February and gives the 2nd of March: the date must come back
|
|
18
|
+
if (Number.isNaN(time) || new Date(time).toISOString().slice(0, 10) !== date) {
|
|
19
|
+
throw new RangeError(`${label}: ${JSON.stringify(date)} is not a date in the form YYYY-MM-DD`);
|
|
20
|
+
}
|
|
21
|
+
return time;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* This function gives the date `days` days after a date (`YYYY-MM-DD`). A negative number gives
|
|
26
|
+
* an earlier date. The number of days must be an integer.
|
|
27
|
+
*
|
|
28
|
+
* - The arithmetic is the arithmetic of UTC, so a change of daylight saving time does not move the date.
|
|
29
|
+
* - A date that is not valid, or a result outside the years 0000 to 9999, throws a `RangeError`.
|
|
30
|
+
*/
|
|
31
|
+
export function shiftDay(date: string, days: number): string {
|
|
32
|
+
if (!Number.isSafeInteger(days)) throw new RangeError(`shiftDay: the number of days ${String(days)} is not an integer`);
|
|
33
|
+
const time = dateTime(date, "shiftDay") + days * DAY;
|
|
34
|
+
const text = Number.isFinite(time) && Math.abs(time) <= 8.64e15 ? new Date(time).toISOString() : "";
|
|
35
|
+
if (!/^\d{4}-/.test(text)) throw new RangeError(`shiftDay: ${date} plus ${String(days)} days is not from the year 0000 to 9999`);
|
|
36
|
+
return text.slice(0, 10);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* This function gives the number of whole days from the date `from` to the date `to`
|
|
41
|
+
* (`YYYY-MM-DD`). It is negative when `to` is before `from`, and 0 for the same date.
|
|
42
|
+
*
|
|
43
|
+
* - The count is exact: a calendar day is one day, also on a day with a change of daylight saving time.
|
|
44
|
+
* - A text that is not a date throws a `RangeError`.
|
|
45
|
+
*/
|
|
46
|
+
export function daysBetween(from: string, to: string): number {
|
|
47
|
+
return (dateTime(to, "daysBetween") - dateTime(from, "daysBetween")) / DAY;
|
|
48
|
+
}
|
package/src/ics.ts
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* it ignores the others (alarms, attendees, time zone definitions).
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { zonedInstant } from "./zone.js";
|
|
8
|
+
|
|
7
9
|
/** One event of a calendar (one VEVENT). */
|
|
8
10
|
export interface IcsEvent {
|
|
9
11
|
readonly uid: string;
|
|
@@ -85,39 +87,13 @@ const parseProp = (line: string): IcsProp | undefined => {
|
|
|
85
87
|
return { name: name.toUpperCase(), params, value };
|
|
86
88
|
};
|
|
87
89
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
minute: "2-digit",
|
|
96
|
-
second: "2-digit",
|
|
97
|
-
hour12: false,
|
|
98
|
-
});
|
|
99
|
-
const parts = new Map(dtf.formatToParts(date).map((part) => [part.type, part.value]));
|
|
100
|
-
const hour = parts.get("hour") === "24" ? "00" : (parts.get("hour") ?? "00");
|
|
101
|
-
const local = Date.UTC(
|
|
102
|
-
Number(parts.get("year")),
|
|
103
|
-
Number(parts.get("month")) - 1,
|
|
104
|
-
Number(parts.get("day")),
|
|
105
|
-
Number(hour),
|
|
106
|
-
Number(parts.get("minute")),
|
|
107
|
-
Number(parts.get("second"))
|
|
108
|
-
);
|
|
109
|
-
return local - date.getTime();
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
/** This function gives the UTC time (ISO 8601) of a local time in an IANA time zone. */
|
|
113
|
-
export const zonedToUtc = (y: number, mo: number, d: number, h: number, mi: number, s: number, timeZone: string): string => {
|
|
114
|
-
const asUtc = Date.UTC(y, mo - 1, d, h, mi, s);
|
|
115
|
-
let ts = asUtc - tzOffsetMs(timeZone, new Date(asUtc));
|
|
116
|
-
// A second pass corrects the offset near a DST change
|
|
117
|
-
const second = asUtc - tzOffsetMs(timeZone, new Date(ts));
|
|
118
|
-
if (second !== ts) ts = second;
|
|
119
|
-
return toIso(ts);
|
|
120
|
-
};
|
|
90
|
+
/**
|
|
91
|
+
* This function gives the UTC time (ISO 8601) of a local time in an IANA time zone, as RFC 5545
|
|
92
|
+
* (3.3.5) tells. A local time that occurs two times gives its first occurrence. A local time in
|
|
93
|
+
* the gap of a change to daylight time uses the offset before the gap: 02:30 becomes 03:30.
|
|
94
|
+
*/
|
|
95
|
+
export const zonedToUtc = (y: number, mo: number, d: number, h: number, mi: number, s: number, timeZone: string): string =>
|
|
96
|
+
toIso(zonedInstant(Date.UTC(y, mo - 1, d, h, mi, s), timeZone));
|
|
121
97
|
|
|
122
98
|
const parseIcsDate = (prop: IcsProp): { iso: string; allDay: boolean; tzid?: string } | undefined => {
|
|
123
99
|
const value = prop.value;
|
package/src/index.ts
CHANGED
|
@@ -3,4 +3,7 @@ export * from "./module.js";
|
|
|
3
3
|
export * from "./procedures.js";
|
|
4
4
|
export * from "./ics.js";
|
|
5
5
|
export * from "./write.js";
|
|
6
|
+
// The calendar days: the date of an instant in a zone, and the arithmetic of dates
|
|
7
|
+
export { localDate, zonedOffset } from "./zone.js";
|
|
8
|
+
export { daysBetween, shiftDay } from "./days.js";
|
|
6
9
|
export * from "./types.js";
|