@venizia/ignis-helpers 0.2.2-2 → 0.2.2-3
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/dist/cjs/modules/temporal/abstract.d.ts +295 -0
- package/dist/cjs/modules/temporal/abstract.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/abstract.js +330 -0
- package/dist/cjs/modules/temporal/abstract.js.map +1 -0
- package/dist/cjs/modules/temporal/adapters/dayjs.d.ts +1 -1
- package/dist/cjs/modules/temporal/adapters/dayjs.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/adapters/dayjs.js +3 -3
- package/dist/cjs/modules/temporal/adapters/dayjs.js.map +1 -1
- package/dist/cjs/modules/temporal/adapters/intl.d.ts +1 -1
- package/dist/cjs/modules/temporal/adapters/intl.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/adapters/intl.js +7 -7
- package/dist/cjs/modules/temporal/adapters/intl.js.map +1 -1
- package/dist/cjs/modules/temporal/adapters/luxon.d.ts +1 -1
- package/dist/cjs/modules/temporal/adapters/luxon.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/adapters/luxon.js +3 -3
- package/dist/cjs/modules/temporal/adapters/luxon.js.map +1 -1
- package/dist/cjs/modules/temporal/adapters/native.d.ts +3 -1
- package/dist/cjs/modules/temporal/adapters/native.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/adapters/native.js +13 -5
- package/dist/cjs/modules/temporal/adapters/native.js.map +1 -1
- package/dist/cjs/modules/temporal/calendar/calendar.d.ts +56 -0
- package/dist/cjs/modules/temporal/calendar/calendar.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/calendar/calendar.js +166 -0
- package/dist/cjs/modules/temporal/calendar/calendar.js.map +1 -0
- package/dist/cjs/modules/temporal/calendar/index.d.ts +2 -0
- package/dist/cjs/modules/temporal/calendar/index.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/calendar/index.js +18 -0
- package/dist/cjs/modules/temporal/calendar/index.js.map +1 -0
- package/dist/cjs/modules/temporal/common/constants.d.ts +14 -3
- package/dist/cjs/modules/temporal/common/constants.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/common/constants.js +23 -4
- package/dist/cjs/modules/temporal/common/constants.js.map +1 -1
- package/dist/cjs/modules/temporal/common/types.d.ts +258 -5
- package/dist/cjs/modules/temporal/common/types.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/{duration.d.ts → duration/duration.d.ts} +9 -2
- package/dist/cjs/modules/temporal/duration/duration.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/duration/duration.js +135 -0
- package/dist/cjs/modules/temporal/duration/duration.js.map +1 -0
- package/dist/cjs/modules/temporal/duration/index.d.ts +2 -0
- package/dist/cjs/modules/temporal/duration/index.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/duration/index.js +18 -0
- package/dist/cjs/modules/temporal/duration/index.js.map +1 -0
- package/dist/cjs/modules/temporal/helper.d.ts +105 -77
- package/dist/cjs/modules/temporal/helper.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/helper.js +209 -258
- package/dist/cjs/modules/temporal/helper.js.map +1 -1
- package/dist/cjs/modules/temporal/index.d.ts +1 -0
- package/dist/cjs/modules/temporal/index.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/index.js +1 -0
- package/dist/cjs/modules/temporal/index.js.map +1 -1
- package/dist/cjs/modules/temporal/locale/index.d.ts +2 -0
- package/dist/cjs/modules/temporal/locale/index.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/locale/index.js +18 -0
- package/dist/cjs/modules/temporal/locale/index.js.map +1 -0
- package/dist/{esm/modules/temporal → cjs/modules/temporal/locale}/locale.d.ts +3 -2
- package/dist/cjs/modules/temporal/locale/locale.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/{locale.js → locale/locale.js} +3 -3
- package/dist/cjs/modules/temporal/locale/locale.js.map +1 -0
- package/dist/cjs/modules/temporal/pattern/common/index.d.ts +2 -0
- package/dist/cjs/modules/temporal/pattern/common/index.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/pattern/common/index.js +18 -0
- package/dist/cjs/modules/temporal/pattern/common/index.js.map +1 -0
- package/dist/cjs/modules/temporal/pattern/common/types.d.ts +26 -0
- package/dist/cjs/modules/temporal/pattern/common/types.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/pattern/common/types.js +3 -0
- package/dist/cjs/modules/temporal/pattern/common/types.js.map +1 -0
- package/dist/cjs/modules/temporal/pattern/index.d.ts +4 -0
- package/dist/cjs/modules/temporal/pattern/index.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/pattern/index.js +20 -0
- package/dist/cjs/modules/temporal/pattern/index.js.map +1 -0
- package/dist/{esm/modules/temporal → cjs/modules/temporal/pattern}/pattern.d.ts +2 -1
- package/dist/cjs/modules/temporal/pattern/pattern.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/{pattern.js → pattern/pattern.js} +19 -14
- package/dist/cjs/modules/temporal/pattern/pattern.js.map +1 -0
- package/dist/cjs/modules/temporal/pattern/tokens.d.ts +59 -0
- package/dist/cjs/modules/temporal/pattern/tokens.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/pattern/tokens.js +195 -0
- package/dist/cjs/modules/temporal/pattern/tokens.js.map +1 -0
- package/dist/esm/modules/temporal/abstract.d.ts +295 -0
- package/dist/esm/modules/temporal/abstract.d.ts.map +1 -0
- package/dist/esm/modules/temporal/abstract.js +326 -0
- package/dist/esm/modules/temporal/abstract.js.map +1 -0
- package/dist/esm/modules/temporal/adapters/dayjs.d.ts +1 -1
- package/dist/esm/modules/temporal/adapters/dayjs.d.ts.map +1 -1
- package/dist/esm/modules/temporal/adapters/dayjs.js +3 -3
- package/dist/esm/modules/temporal/adapters/dayjs.js.map +1 -1
- package/dist/esm/modules/temporal/adapters/intl.d.ts +1 -1
- package/dist/esm/modules/temporal/adapters/intl.d.ts.map +1 -1
- package/dist/esm/modules/temporal/adapters/intl.js +7 -7
- package/dist/esm/modules/temporal/adapters/intl.js.map +1 -1
- package/dist/esm/modules/temporal/adapters/luxon.d.ts +1 -1
- package/dist/esm/modules/temporal/adapters/luxon.d.ts.map +1 -1
- package/dist/esm/modules/temporal/adapters/luxon.js +3 -3
- package/dist/esm/modules/temporal/adapters/luxon.js.map +1 -1
- package/dist/esm/modules/temporal/adapters/native.d.ts +3 -1
- package/dist/esm/modules/temporal/adapters/native.d.ts.map +1 -1
- package/dist/esm/modules/temporal/adapters/native.js +13 -5
- package/dist/esm/modules/temporal/adapters/native.js.map +1 -1
- package/dist/esm/modules/temporal/calendar/calendar.d.ts +56 -0
- package/dist/esm/modules/temporal/calendar/calendar.d.ts.map +1 -0
- package/dist/esm/modules/temporal/calendar/calendar.js +162 -0
- package/dist/esm/modules/temporal/calendar/calendar.js.map +1 -0
- package/dist/esm/modules/temporal/calendar/index.d.ts +2 -0
- package/dist/esm/modules/temporal/calendar/index.d.ts.map +1 -0
- package/dist/esm/modules/temporal/calendar/index.js +2 -0
- package/dist/esm/modules/temporal/calendar/index.js.map +1 -0
- package/dist/esm/modules/temporal/common/constants.d.ts +14 -3
- package/dist/esm/modules/temporal/common/constants.d.ts.map +1 -1
- package/dist/esm/modules/temporal/common/constants.js +21 -3
- package/dist/esm/modules/temporal/common/constants.js.map +1 -1
- package/dist/esm/modules/temporal/common/types.d.ts +258 -5
- package/dist/esm/modules/temporal/common/types.d.ts.map +1 -1
- package/dist/esm/modules/temporal/{duration.d.ts → duration/duration.d.ts} +9 -2
- package/dist/esm/modules/temporal/duration/duration.d.ts.map +1 -0
- package/dist/esm/modules/temporal/duration/duration.js +131 -0
- package/dist/esm/modules/temporal/duration/duration.js.map +1 -0
- package/dist/esm/modules/temporal/duration/index.d.ts +2 -0
- package/dist/esm/modules/temporal/duration/index.d.ts.map +1 -0
- package/dist/esm/modules/temporal/duration/index.js +2 -0
- package/dist/esm/modules/temporal/duration/index.js.map +1 -0
- package/dist/esm/modules/temporal/helper.d.ts +105 -77
- package/dist/esm/modules/temporal/helper.d.ts.map +1 -1
- package/dist/esm/modules/temporal/helper.js +214 -263
- package/dist/esm/modules/temporal/helper.js.map +1 -1
- package/dist/esm/modules/temporal/index.d.ts +1 -0
- package/dist/esm/modules/temporal/index.d.ts.map +1 -1
- package/dist/esm/modules/temporal/index.js +1 -0
- package/dist/esm/modules/temporal/index.js.map +1 -1
- package/dist/esm/modules/temporal/locale/index.d.ts +2 -0
- package/dist/esm/modules/temporal/locale/index.d.ts.map +1 -0
- package/dist/esm/modules/temporal/locale/index.js +2 -0
- package/dist/esm/modules/temporal/locale/index.js.map +1 -0
- package/dist/{cjs/modules/temporal → esm/modules/temporal/locale}/locale.d.ts +3 -2
- package/dist/esm/modules/temporal/locale/locale.d.ts.map +1 -0
- package/dist/esm/modules/temporal/{locale.js → locale/locale.js} +3 -3
- package/dist/esm/modules/temporal/locale/locale.js.map +1 -0
- package/dist/esm/modules/temporal/pattern/common/index.d.ts +2 -0
- package/dist/esm/modules/temporal/pattern/common/index.d.ts.map +1 -0
- package/dist/esm/modules/temporal/pattern/common/index.js +2 -0
- package/dist/esm/modules/temporal/pattern/common/index.js.map +1 -0
- package/dist/esm/modules/temporal/pattern/common/types.d.ts +26 -0
- package/dist/esm/modules/temporal/pattern/common/types.d.ts.map +1 -0
- package/dist/esm/modules/temporal/pattern/common/types.js +2 -0
- package/dist/esm/modules/temporal/pattern/common/types.js.map +1 -0
- package/dist/esm/modules/temporal/pattern/index.d.ts +4 -0
- package/dist/esm/modules/temporal/pattern/index.d.ts.map +1 -0
- package/dist/esm/modules/temporal/pattern/index.js +4 -0
- package/dist/esm/modules/temporal/pattern/index.js.map +1 -0
- package/dist/{cjs/modules/temporal → esm/modules/temporal/pattern}/pattern.d.ts +2 -1
- package/dist/esm/modules/temporal/pattern/pattern.d.ts.map +1 -0
- package/dist/esm/modules/temporal/{pattern.js → pattern/pattern.js} +20 -15
- package/dist/esm/modules/temporal/pattern/pattern.js.map +1 -0
- package/dist/esm/modules/temporal/pattern/tokens.d.ts +59 -0
- package/dist/esm/modules/temporal/pattern/tokens.d.ts.map +1 -0
- package/dist/esm/modules/temporal/pattern/tokens.js +191 -0
- package/dist/esm/modules/temporal/pattern/tokens.js.map +1 -0
- package/package.json +1 -1
- package/dist/cjs/modules/temporal/adapters/guards.d.ts +0 -4
- package/dist/cjs/modules/temporal/adapters/guards.d.ts.map +0 -1
- package/dist/cjs/modules/temporal/adapters/guards.js +0 -14
- package/dist/cjs/modules/temporal/adapters/guards.js.map +0 -1
- package/dist/cjs/modules/temporal/calendar.d.ts +0 -52
- package/dist/cjs/modules/temporal/calendar.d.ts.map +0 -1
- package/dist/cjs/modules/temporal/calendar.js +0 -151
- package/dist/cjs/modules/temporal/calendar.js.map +0 -1
- package/dist/cjs/modules/temporal/duration.d.ts.map +0 -1
- package/dist/cjs/modules/temporal/duration.js +0 -64
- package/dist/cjs/modules/temporal/duration.js.map +0 -1
- package/dist/cjs/modules/temporal/locale.d.ts.map +0 -1
- package/dist/cjs/modules/temporal/locale.js.map +0 -1
- package/dist/cjs/modules/temporal/pattern.d.ts.map +0 -1
- package/dist/cjs/modules/temporal/pattern.js.map +0 -1
- package/dist/cjs/modules/temporal/tokens.d.ts +0 -78
- package/dist/cjs/modules/temporal/tokens.d.ts.map +0 -1
- package/dist/cjs/modules/temporal/tokens.js +0 -145
- package/dist/cjs/modules/temporal/tokens.js.map +0 -1
- package/dist/esm/modules/temporal/adapters/guards.d.ts +0 -4
- package/dist/esm/modules/temporal/adapters/guards.d.ts.map +0 -1
- package/dist/esm/modules/temporal/adapters/guards.js +0 -10
- package/dist/esm/modules/temporal/adapters/guards.js.map +0 -1
- package/dist/esm/modules/temporal/calendar.d.ts +0 -52
- package/dist/esm/modules/temporal/calendar.d.ts.map +0 -1
- package/dist/esm/modules/temporal/calendar.js +0 -138
- package/dist/esm/modules/temporal/calendar.js.map +0 -1
- package/dist/esm/modules/temporal/duration.d.ts.map +0 -1
- package/dist/esm/modules/temporal/duration.js +0 -60
- package/dist/esm/modules/temporal/duration.js.map +0 -1
- package/dist/esm/modules/temporal/locale.d.ts.map +0 -1
- package/dist/esm/modules/temporal/locale.js.map +0 -1
- package/dist/esm/modules/temporal/pattern.d.ts.map +0 -1
- package/dist/esm/modules/temporal/pattern.js.map +0 -1
- package/dist/esm/modules/temporal/tokens.d.ts +0 -78
- package/dist/esm/modules/temporal/tokens.d.ts.map +0 -1
- package/dist/esm/modules/temporal/tokens.js +0 -133
- package/dist/esm/modules/temporal/tokens.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dayjs.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/dayjs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAUvE;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;gBAE1B,IAAI,EAAE;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE;IAY1C,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,
|
|
1
|
+
{"version":3,"file":"dayjs.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/dayjs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAUvE;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;gBAE1B,IAAI,EAAE;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE;IAY1C,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAiBjE"}
|
|
@@ -28,18 +28,18 @@ class DayjsTemporalAdapter {
|
|
|
28
28
|
this.dayjs = opts.dayjs;
|
|
29
29
|
}
|
|
30
30
|
getOffsetMilliseconds(opts) {
|
|
31
|
-
const { value,
|
|
31
|
+
const { value, tz } = opts;
|
|
32
32
|
let epoch = value.getTime();
|
|
33
33
|
while (epoch < FIRST_SAFE_EPOCH) {
|
|
34
34
|
epoch += GREGORIAN_CYCLE_MILLISECONDS;
|
|
35
35
|
}
|
|
36
36
|
try {
|
|
37
|
-
return this.dayjs(epoch).tz(
|
|
37
|
+
return this.dayjs(epoch).tz(tz).utcOffset() * MILLISECONDS_PER_MINUTE;
|
|
38
38
|
}
|
|
39
39
|
catch (error) {
|
|
40
40
|
throw (0, error_1.getError)({
|
|
41
41
|
statusCode: http_1.HTTP.ResultCodes.RS_4.BadRequest,
|
|
42
|
-
message: `[DayjsTemporalAdapter] no offset for ${
|
|
42
|
+
message: `[DayjsTemporalAdapter] no offset for ${tz} at ${value.getTime()} | ${error instanceof Error ? error.message : String(error)}`,
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dayjs.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/dayjs.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAC/C,2CAA2C;AAG3C,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC,kFAAkF;AAClF,MAAM,4BAA4B,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,+GAA+G;AAC/G,MAAM,gBAAgB,GAAG,CAAC,kBAAkB,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAa,oBAAoB;IAG/B,YAAY,IAA8B;QACxC,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,UAAU,EAAE,CAAC;YACzC,MAAM,IAAA,gBAAQ,EAAC;gBACb,UAAU,EAAE,WAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB;gBACrD,OAAO,EACL,sIAAsI;aACzI,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"dayjs.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/dayjs.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAC/C,2CAA2C;AAG3C,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC,kFAAkF;AAClF,MAAM,4BAA4B,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,+GAA+G;AAC/G,MAAM,gBAAgB,GAAG,CAAC,kBAAkB,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAa,oBAAoB;IAG/B,YAAY,IAA8B;QACxC,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,UAAU,EAAE,CAAC;YACzC,MAAM,IAAA,gBAAQ,EAAC;gBACb,UAAU,EAAE,WAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB;gBACrD,OAAO,EACL,sIAAsI;aACzI,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,qBAAqB,CAAC,IAAiC;QACrD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAE3B,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,KAAK,GAAG,gBAAgB,EAAE,CAAC;YAChC,KAAK,IAAI,4BAA4B,CAAC;QACxC,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,uBAAuB,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAA,gBAAQ,EAAC;gBACb,UAAU,EAAE,WAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;gBAC5C,OAAO,EAAE,wCAAwC,EAAE,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACxI,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAhCD,oDAgCC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intl.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/intl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOxD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,gBAAgB;IAC1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAG9B;IAEJ,gIAAgI;IAChI,OAAO,CAAC,MAAM,CAAC,WAAW;IA4C1B,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,
|
|
1
|
+
{"version":3,"file":"intl.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/intl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOxD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,gBAAgB;IAC1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAG9B;IAEJ,gIAAgI;IAChI,OAAO,CAAC,MAAM,CAAC,WAAW;IA4C1B,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CA+BjE"}
|
|
@@ -15,15 +15,15 @@ class IntlTemporalAdapter {
|
|
|
15
15
|
static { this.formatters = new Map(); }
|
|
16
16
|
/** The zone's formatter, and how it spells the common era - so any other era is before year 1, whatever the engine calls it. */
|
|
17
17
|
static formatterOf(opts) {
|
|
18
|
-
const {
|
|
19
|
-
const cached = IntlTemporalAdapter.formatters.get(
|
|
18
|
+
const { tz } = opts;
|
|
19
|
+
const cached = IntlTemporalAdapter.formatters.get(tz);
|
|
20
20
|
if (cached) {
|
|
21
21
|
return cached;
|
|
22
22
|
}
|
|
23
23
|
let formatter;
|
|
24
24
|
try {
|
|
25
25
|
formatter = new Intl.DateTimeFormat('en-US', {
|
|
26
|
-
timeZone,
|
|
26
|
+
timeZone: tz,
|
|
27
27
|
hourCycle: 'h23',
|
|
28
28
|
era: 'short',
|
|
29
29
|
year: 'numeric',
|
|
@@ -37,7 +37,7 @@ class IntlTemporalAdapter {
|
|
|
37
37
|
catch (error) {
|
|
38
38
|
throw (0, error_1.getError)({
|
|
39
39
|
statusCode: http_1.HTTP.ResultCodes.RS_4.BadRequest,
|
|
40
|
-
message: `[IntlTemporalAdapter] unknown time zone '${
|
|
40
|
+
message: `[IntlTemporalAdapter] unknown time zone '${tz}' | ${error instanceof Error ? error.message : String(error)}`,
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
const commonEra = formatter.formatToParts(new Date(0)).find(part => part.type === 'era')?.value;
|
|
@@ -49,15 +49,15 @@ class IntlTemporalAdapter {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
const entry = { formatter, commonEra };
|
|
52
|
-
IntlTemporalAdapter.formatters.set(
|
|
52
|
+
IntlTemporalAdapter.formatters.set(tz, entry);
|
|
53
53
|
return entry;
|
|
54
54
|
}
|
|
55
55
|
getOffsetMilliseconds(opts) {
|
|
56
|
-
const { value,
|
|
56
|
+
const { value, tz } = opts;
|
|
57
57
|
const epoch = value.getTime();
|
|
58
58
|
const fields = { year: 0, month: 1, day: 1, hour: 0, minute: 0, second: 0 };
|
|
59
59
|
let isBeforeCommonEra = false;
|
|
60
|
-
const { formatter, commonEra } = IntlTemporalAdapter.formatterOf({
|
|
60
|
+
const { formatter, commonEra } = IntlTemporalAdapter.formatterOf({ tz });
|
|
61
61
|
for (const part of formatter.formatToParts(value)) {
|
|
62
62
|
if (part.type === 'era') {
|
|
63
63
|
isBeforeCommonEra = commonEra !== undefined && part.value !== commonEra;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intl.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/intl.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAC/C,2CAA2C;AAG3C,+FAA+F;AAC/F,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC;;;;GAIG;AACH,MAAa,mBAAmB;aACN,eAAU,GAAG,IAAI,GAAG,EAGzC,CAAC;IAEJ,gIAAgI;IACxH,MAAM,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"intl.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/intl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"luxon.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/luxon.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAI/E,oFAAoF;AACpF,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;gBAErC,IAAI,EAAE;QAAE,QAAQ,EAAE,qBAAqB,CAAA;KAAE;IAIrD,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,
|
|
1
|
+
{"version":3,"file":"luxon.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/luxon.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAI/E,oFAAoF;AACpF,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;gBAErC,IAAI,EAAE;QAAE,QAAQ,EAAE,qBAAqB,CAAA;KAAE;IAIrD,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAajE"}
|
|
@@ -10,13 +10,13 @@ class LuxonTemporalAdapter {
|
|
|
10
10
|
this.dateTime = opts.DateTime;
|
|
11
11
|
}
|
|
12
12
|
getOffsetMilliseconds(opts) {
|
|
13
|
-
const { value,
|
|
14
|
-
const zoned = this.dateTime.fromMillis(value.getTime(), { zone:
|
|
13
|
+
const { value, tz } = opts;
|
|
14
|
+
const zoned = this.dateTime.fromMillis(value.getTime(), { zone: tz });
|
|
15
15
|
// Luxon answers an unusable zone with an invalid `DateTime` rather than a throw.
|
|
16
16
|
if (!zoned.isValid) {
|
|
17
17
|
throw (0, error_1.getError)({
|
|
18
18
|
statusCode: http_1.HTTP.ResultCodes.RS_4.BadRequest,
|
|
19
|
-
message: `[LuxonTemporalAdapter] no offset for ${
|
|
19
|
+
message: `[LuxonTemporalAdapter] no offset for ${tz} at ${value.getTime()} | ${zoned.invalidReason ?? 'invalid'}`,
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
return zoned.offset * MILLISECONDS_PER_MINUTE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"luxon.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/luxon.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAC/C,2CAA2C;AAG3C,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC,oFAAoF;AACpF,MAAa,oBAAoB;IAG/B,YAAY,IAAyC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"luxon.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/luxon.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAC/C,2CAA2C;AAG3C,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC,oFAAoF;AACpF,MAAa,oBAAoB;IAG/B,YAAY,IAAyC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,qBAAqB,CAAC,IAAiC;QACrD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAEtE,iFAAiF;QACjF,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAA,gBAAQ,EAAC;gBACb,UAAU,EAAE,WAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;gBAC5C,OAAO,EAAE,wCAAwC,EAAE,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,aAAa,IAAI,SAAS,EAAE;aAClH,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,uBAAuB,CAAC;IAChD,CAAC;CACF;AApBD,oDAoBC"}
|
|
@@ -5,12 +5,14 @@ import type { ITemporalAdapter, ITemporalNamespace } from '../common/types';
|
|
|
5
5
|
*/
|
|
6
6
|
export declare class NativeTemporalAdapter implements ITemporalAdapter {
|
|
7
7
|
private readonly temporal;
|
|
8
|
+
/** A `Temporal` namespace - the runtime's global or a polyfill's - by the one member the adapter drives. */
|
|
9
|
+
static isTemporalNamespace(value: unknown): value is ITemporalNamespace;
|
|
8
10
|
constructor(opts?: {
|
|
9
11
|
temporal?: ITemporalNamespace;
|
|
10
12
|
});
|
|
11
13
|
getOffsetMilliseconds(opts: {
|
|
12
14
|
value: Date;
|
|
13
|
-
|
|
15
|
+
tz: string;
|
|
14
16
|
}): number;
|
|
15
17
|
}
|
|
16
18
|
//# sourceMappingURL=native.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/native.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/native.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI5E;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C,4GAA4G;IAC5G,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB;gBAY3D,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,kBAAkB,CAAA;KAAE;IAcpD,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAejE"}
|
|
@@ -3,16 +3,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.NativeTemporalAdapter = void 0;
|
|
4
4
|
const http_1 = require("../../../common/constants/http");
|
|
5
5
|
const error_1 = require("../../error");
|
|
6
|
-
const guards_1 = require("./guards");
|
|
7
6
|
const NANOSECONDS_PER_MILLISECOND = 1_000_000;
|
|
8
7
|
/**
|
|
9
8
|
* Time zones through the TC39 `Temporal` API: the runtime's global (Bun has it, as do current
|
|
10
9
|
* browsers), or a polyfill's namespace passed as `temporal`.
|
|
11
10
|
*/
|
|
12
11
|
class NativeTemporalAdapter {
|
|
12
|
+
/** A `Temporal` namespace - the runtime's global or a polyfill's - by the one member the adapter drives. */
|
|
13
|
+
static isTemporalNamespace(value) {
|
|
14
|
+
if (typeof value !== 'object' || value === null || !('Instant' in value)) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
const instant = value.Instant;
|
|
18
|
+
return ((typeof instant === 'function' || (typeof instant === 'object' && instant !== null)) &&
|
|
19
|
+
typeof Reflect.get(instant, 'fromEpochMilliseconds') === 'function');
|
|
20
|
+
}
|
|
13
21
|
constructor(opts) {
|
|
14
22
|
const temporal = opts?.temporal ?? Reflect.get(globalThis, 'Temporal');
|
|
15
|
-
if (!
|
|
23
|
+
if (!NativeTemporalAdapter.isTemporalNamespace(temporal)) {
|
|
16
24
|
throw (0, error_1.getError)({
|
|
17
25
|
statusCode: http_1.HTTP.ResultCodes.RS_5.InternalServerError,
|
|
18
26
|
message: '[NativeTemporalAdapter] Temporal is not available on this runtime | Pass a polyfill as `temporal`, or use DayjsTemporalAdapter / LuxonTemporalAdapter',
|
|
@@ -21,15 +29,15 @@ class NativeTemporalAdapter {
|
|
|
21
29
|
this.temporal = temporal;
|
|
22
30
|
}
|
|
23
31
|
getOffsetMilliseconds(opts) {
|
|
24
|
-
const { value,
|
|
32
|
+
const { value, tz } = opts;
|
|
25
33
|
try {
|
|
26
|
-
const zoned = this.temporal.Instant.fromEpochMilliseconds(value.getTime()).toZonedDateTimeISO(
|
|
34
|
+
const zoned = this.temporal.Instant.fromEpochMilliseconds(value.getTime()).toZonedDateTimeISO(tz);
|
|
27
35
|
return zoned.offsetNanoseconds / NANOSECONDS_PER_MILLISECOND;
|
|
28
36
|
}
|
|
29
37
|
catch (error) {
|
|
30
38
|
throw (0, error_1.getError)({
|
|
31
39
|
statusCode: http_1.HTTP.ResultCodes.RS_4.BadRequest,
|
|
32
|
-
message: `[NativeTemporalAdapter] no offset for ${
|
|
40
|
+
message: `[NativeTemporalAdapter] no offset for ${tz} at ${value.getTime()} | ${error instanceof Error ? error.message : String(error)}`,
|
|
33
41
|
});
|
|
34
42
|
}
|
|
35
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/native.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAC/C,2CAA2C;
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/native.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAC/C,2CAA2C;AAG3C,MAAM,2BAA2B,GAAG,SAAS,CAAC;AAE9C;;;GAGG;AACH,MAAa,qBAAqB;IAGhC,4GAA4G;IAC5G,MAAM,CAAC,mBAAmB,CAAC,KAAc;QACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,EAAE,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,OAAO,CACL,CAAC,OAAO,OAAO,KAAK,UAAU,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC;YACpF,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,uBAAuB,CAAC,KAAK,UAAU,CACpE,CAAC;IACJ,CAAC;IAED,YAAY,IAAwC;QAClD,MAAM,QAAQ,GAAY,IAAI,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEhF,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,MAAM,IAAA,gBAAQ,EAAC;gBACb,UAAU,EAAE,WAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB;gBACrD,OAAO,EACL,uJAAuJ;aAC1J,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,qBAAqB,CAAC,IAAiC;QACrD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,kBAAkB,CAC3F,EAAE,CACH,CAAC;YACF,OAAO,KAAK,CAAC,iBAAiB,GAAG,2BAA2B,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAA,gBAAQ,EAAC;gBACb,UAAU,EAAE,WAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;gBAC5C,OAAO,EAAE,yCAAyC,EAAE,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACzI,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AA7CD,sDA6CC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { TTemporalUnit } from '../common/constants';
|
|
2
|
+
import type { ITemporalParts, IZonedTemporalParts } from '../common/types';
|
|
3
|
+
/**
|
|
4
|
+
* Calendar arithmetic on wall-clock fields, at a fixed offset or none at all - never a time zone,
|
|
5
|
+
* never the host's. `TemporalHelper` brings the zone.
|
|
6
|
+
*/
|
|
7
|
+
export declare class TemporalCalendar {
|
|
8
|
+
/** The years a four-digit `YYYY` spells - the range every method reads and writes. */
|
|
9
|
+
static readonly MIN_YEAR = 1;
|
|
10
|
+
static readonly MAX_YEAR = 9999;
|
|
11
|
+
/** Units that measure elapsed time rather than the calendar - 24 hours is not always a day. */
|
|
12
|
+
static readonly EXACT_UNIT_MILLISECONDS: Partial<Record<TTemporalUnit, number>>;
|
|
13
|
+
/** A UTC scratch date - `Date.UTC` maps years 0-99 onto 1900-1999, `setUTCFullYear` does not. */
|
|
14
|
+
private static scratch;
|
|
15
|
+
static isSupportedYear(opts: {
|
|
16
|
+
year: number;
|
|
17
|
+
}): boolean;
|
|
18
|
+
static daysInMonth(opts: {
|
|
19
|
+
year: number;
|
|
20
|
+
month: number;
|
|
21
|
+
}): number;
|
|
22
|
+
/** Whether the fields name a day and a time the calendar has - Feb 30, 24:00 and year 0 do not. */
|
|
23
|
+
static isRealDateTime(opts: {
|
|
24
|
+
parts: ITemporalParts;
|
|
25
|
+
}): boolean;
|
|
26
|
+
/** Epoch milliseconds of wall-clock fields read at a fixed offset. */
|
|
27
|
+
static epochAtOffset(opts: {
|
|
28
|
+
parts: ITemporalParts;
|
|
29
|
+
offsetMilliseconds: number;
|
|
30
|
+
}): number;
|
|
31
|
+
/** The wall clock an instant shows at a fixed offset - pure arithmetic, never the host's zone. */
|
|
32
|
+
static wallClockAt(opts: {
|
|
33
|
+
epoch: number;
|
|
34
|
+
offsetMilliseconds: number;
|
|
35
|
+
}): IZonedTemporalParts;
|
|
36
|
+
/** The wall-clock fields alone, without the weekday and the offset. */
|
|
37
|
+
static wallClockOf(opts: {
|
|
38
|
+
parts: ITemporalParts;
|
|
39
|
+
}): ITemporalParts;
|
|
40
|
+
/** The wall-clock start of the unit holding `parts`. Weeks start on Monday; quarters in Jan, Apr, Jul, Oct. */
|
|
41
|
+
static truncate(opts: {
|
|
42
|
+
parts: IZonedTemporalParts;
|
|
43
|
+
unit: TTemporalUnit;
|
|
44
|
+
}): ITemporalParts;
|
|
45
|
+
/**
|
|
46
|
+
* `parts` moved by whole units on the wall clock - no time zone involved. Hours and smaller move
|
|
47
|
+
* elapsed time; days and weeks move the calendar date, wall time untouched; months, quarters and
|
|
48
|
+
* years move the month, the day clamped to the target month: Jan 31 + 1 month is Feb 28.
|
|
49
|
+
*/
|
|
50
|
+
static shift(opts: {
|
|
51
|
+
parts: ITemporalParts;
|
|
52
|
+
amount: number;
|
|
53
|
+
unit: TTemporalUnit;
|
|
54
|
+
}): ITemporalParts;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/calendar/calendar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAM3E;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,sFAAsF;IACtF,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK;IAC7B,MAAM,CAAC,QAAQ,CAAC,QAAQ,QAAQ;IAEhC,+FAA+F;IAC/F,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAK7E;IAEF,iGAAiG;IACjG,OAAO,CAAC,MAAM,CAAC,OAAO;IAMtB,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAIvD,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAQjE,mGAAmG;IACnG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,cAAc,CAAA;KAAE,GAAG,OAAO;IAoB/D,sEAAsE;IACtE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAWzF,kGAAkG;IAClG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB;IAkB5F,uEAAuE;IACvE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,cAAc,CAAA;KAAE,GAAG,cAAc;IAKnE,+GAA+G;IAC/G,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,mBAAmB,CAAC;QAAC,IAAI,EAAE,aAAa,CAAA;KAAE,GAAG,cAAc;IAqC1F;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QACjB,KAAK,EAAE,cAAc,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,aAAa,CAAC;KACrB,GAAG,cAAc;CAwCnB"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TemporalCalendar = void 0;
|
|
4
|
+
const constants_1 = require("../common/constants");
|
|
5
|
+
const MILLISECONDS_PER_MINUTE = 60_000;
|
|
6
|
+
const MONTHS_PER_YEAR = 12;
|
|
7
|
+
const DAYS_PER_WEEK = 7;
|
|
8
|
+
/**
|
|
9
|
+
* Calendar arithmetic on wall-clock fields, at a fixed offset or none at all - never a time zone,
|
|
10
|
+
* never the host's. `TemporalHelper` brings the zone.
|
|
11
|
+
*/
|
|
12
|
+
class TemporalCalendar {
|
|
13
|
+
/** The years a four-digit `YYYY` spells - the range every method reads and writes. */
|
|
14
|
+
static { this.MIN_YEAR = 1; }
|
|
15
|
+
static { this.MAX_YEAR = 9999; }
|
|
16
|
+
/** Units that measure elapsed time rather than the calendar - 24 hours is not always a day. */
|
|
17
|
+
static { this.EXACT_UNIT_MILLISECONDS = {
|
|
18
|
+
[constants_1.TemporalUnits.MILLISECOND]: 1,
|
|
19
|
+
[constants_1.TemporalUnits.SECOND]: 1_000,
|
|
20
|
+
[constants_1.TemporalUnits.MINUTE]: 60_000,
|
|
21
|
+
[constants_1.TemporalUnits.HOUR]: 3_600_000,
|
|
22
|
+
}; }
|
|
23
|
+
/** A UTC scratch date - `Date.UTC` maps years 0-99 onto 1900-1999, `setUTCFullYear` does not. */
|
|
24
|
+
static scratch(opts) {
|
|
25
|
+
const date = new Date(0);
|
|
26
|
+
date.setUTCFullYear(opts.year, opts.month - 1, opts.day);
|
|
27
|
+
return date;
|
|
28
|
+
}
|
|
29
|
+
static isSupportedYear(opts) {
|
|
30
|
+
return opts.year >= TemporalCalendar.MIN_YEAR && opts.year <= TemporalCalendar.MAX_YEAR;
|
|
31
|
+
}
|
|
32
|
+
static daysInMonth(opts) {
|
|
33
|
+
return TemporalCalendar.scratch({
|
|
34
|
+
year: opts.year,
|
|
35
|
+
month: opts.month + 1,
|
|
36
|
+
day: 0,
|
|
37
|
+
}).getUTCDate();
|
|
38
|
+
}
|
|
39
|
+
/** Whether the fields name a day and a time the calendar has - Feb 30, 24:00 and year 0 do not. */
|
|
40
|
+
static isRealDateTime(opts) {
|
|
41
|
+
const { year, month, day, hour, minute, second, millisecond } = opts.parts;
|
|
42
|
+
return (TemporalCalendar.isSupportedYear({ year }) &&
|
|
43
|
+
month >= 1 &&
|
|
44
|
+
month <= 12 &&
|
|
45
|
+
day >= 1 &&
|
|
46
|
+
day <= TemporalCalendar.daysInMonth({ year, month }) &&
|
|
47
|
+
hour >= 0 &&
|
|
48
|
+
hour <= 23 &&
|
|
49
|
+
minute >= 0 &&
|
|
50
|
+
minute <= 59 &&
|
|
51
|
+
second >= 0 &&
|
|
52
|
+
second <= 59 &&
|
|
53
|
+
millisecond >= 0 &&
|
|
54
|
+
millisecond <= 999);
|
|
55
|
+
}
|
|
56
|
+
/** Epoch milliseconds of wall-clock fields read at a fixed offset. */
|
|
57
|
+
static epochAtOffset(opts) {
|
|
58
|
+
const { parts, offsetMilliseconds } = opts;
|
|
59
|
+
const date = TemporalCalendar.scratch({
|
|
60
|
+
year: parts.year,
|
|
61
|
+
month: parts.month,
|
|
62
|
+
day: parts.day,
|
|
63
|
+
});
|
|
64
|
+
date.setUTCHours(parts.hour, parts.minute, parts.second, parts.millisecond);
|
|
65
|
+
return date.getTime() - offsetMilliseconds;
|
|
66
|
+
}
|
|
67
|
+
/** The wall clock an instant shows at a fixed offset - pure arithmetic, never the host's zone. */
|
|
68
|
+
static wallClockAt(opts) {
|
|
69
|
+
const { epoch, offsetMilliseconds } = opts;
|
|
70
|
+
const date = new Date(epoch + offsetMilliseconds);
|
|
71
|
+
return {
|
|
72
|
+
year: date.getUTCFullYear(),
|
|
73
|
+
month: date.getUTCMonth() + 1,
|
|
74
|
+
day: date.getUTCDate(),
|
|
75
|
+
hour: date.getUTCHours(),
|
|
76
|
+
minute: date.getUTCMinutes(),
|
|
77
|
+
second: date.getUTCSeconds(),
|
|
78
|
+
millisecond: date.getUTCMilliseconds(),
|
|
79
|
+
// `getUTCDay` counts Sunday as 0; ISO counts Monday as 1 and Sunday as 7.
|
|
80
|
+
dayOfWeek: ((date.getUTCDay() + 6) % 7) + 1,
|
|
81
|
+
offsetMinutes: offsetMilliseconds / MILLISECONDS_PER_MINUTE,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/** The wall-clock fields alone, without the weekday and the offset. */
|
|
85
|
+
static wallClockOf(opts) {
|
|
86
|
+
const { year, month, day, hour, minute, second, millisecond } = opts.parts;
|
|
87
|
+
return { year, month, day, hour, minute, second, millisecond };
|
|
88
|
+
}
|
|
89
|
+
/** The wall-clock start of the unit holding `parts`. Weeks start on Monday; quarters in Jan, Apr, Jul, Oct. */
|
|
90
|
+
static truncate(opts) {
|
|
91
|
+
const { parts, unit } = opts;
|
|
92
|
+
const wall = TemporalCalendar.wallClockOf({ parts });
|
|
93
|
+
const midnight = { ...wall, hour: 0, minute: 0, second: 0, millisecond: 0 };
|
|
94
|
+
switch (unit) {
|
|
95
|
+
case constants_1.TemporalUnits.SECOND: {
|
|
96
|
+
return { ...wall, millisecond: 0 };
|
|
97
|
+
}
|
|
98
|
+
case constants_1.TemporalUnits.MINUTE: {
|
|
99
|
+
return { ...wall, second: 0, millisecond: 0 };
|
|
100
|
+
}
|
|
101
|
+
case constants_1.TemporalUnits.HOUR: {
|
|
102
|
+
return { ...wall, minute: 0, second: 0, millisecond: 0 };
|
|
103
|
+
}
|
|
104
|
+
case constants_1.TemporalUnits.DAY: {
|
|
105
|
+
return midnight;
|
|
106
|
+
}
|
|
107
|
+
case constants_1.TemporalUnits.WEEK: {
|
|
108
|
+
return TemporalCalendar.shift({
|
|
109
|
+
parts: midnight,
|
|
110
|
+
amount: 1 - parts.dayOfWeek,
|
|
111
|
+
unit: constants_1.TemporalUnits.DAY,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
case constants_1.TemporalUnits.MONTH: {
|
|
115
|
+
return { ...midnight, day: 1 };
|
|
116
|
+
}
|
|
117
|
+
case constants_1.TemporalUnits.QUARTER: {
|
|
118
|
+
return { ...midnight, month: Math.floor((wall.month - 1) / 3) * 3 + 1, day: 1 };
|
|
119
|
+
}
|
|
120
|
+
default: {
|
|
121
|
+
return { ...midnight, month: 1, day: 1 };
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* `parts` moved by whole units on the wall clock - no time zone involved. Hours and smaller move
|
|
127
|
+
* elapsed time; days and weeks move the calendar date, wall time untouched; months, quarters and
|
|
128
|
+
* years move the month, the day clamped to the target month: Jan 31 + 1 month is Feb 28.
|
|
129
|
+
*/
|
|
130
|
+
static shift(opts) {
|
|
131
|
+
const { parts, amount, unit } = opts;
|
|
132
|
+
const exact = TemporalCalendar.EXACT_UNIT_MILLISECONDS[unit];
|
|
133
|
+
if (exact !== undefined) {
|
|
134
|
+
const epoch = TemporalCalendar.epochAtOffset({ parts, offsetMilliseconds: 0 }) + amount * exact;
|
|
135
|
+
return TemporalCalendar.wallClockOf({
|
|
136
|
+
parts: TemporalCalendar.wallClockAt({ epoch, offsetMilliseconds: 0 }),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
if (unit === constants_1.TemporalUnits.DAY || unit === constants_1.TemporalUnits.WEEK) {
|
|
140
|
+
const days = unit === constants_1.TemporalUnits.WEEK ? amount * DAYS_PER_WEEK : amount;
|
|
141
|
+
const date = TemporalCalendar.scratch({
|
|
142
|
+
year: parts.year,
|
|
143
|
+
month: parts.month,
|
|
144
|
+
day: parts.day + days,
|
|
145
|
+
});
|
|
146
|
+
return {
|
|
147
|
+
...parts,
|
|
148
|
+
year: date.getUTCFullYear(),
|
|
149
|
+
month: date.getUTCMonth() + 1,
|
|
150
|
+
day: date.getUTCDate(),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
const monthsPerUnit = unit === constants_1.TemporalUnits.QUARTER ? 3 : unit === constants_1.TemporalUnits.YEAR ? MONTHS_PER_YEAR : 1;
|
|
154
|
+
const total = parts.year * MONTHS_PER_YEAR + (parts.month - 1) + amount * monthsPerUnit;
|
|
155
|
+
const year = Math.floor(total / MONTHS_PER_YEAR);
|
|
156
|
+
const month = total - year * MONTHS_PER_YEAR + 1;
|
|
157
|
+
return {
|
|
158
|
+
...parts,
|
|
159
|
+
year,
|
|
160
|
+
month,
|
|
161
|
+
day: Math.min(parts.day, TemporalCalendar.daysInMonth({ year, month })),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
exports.TemporalCalendar = TemporalCalendar;
|
|
166
|
+
//# sourceMappingURL=calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/calendar/calendar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/calendar/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./calendar"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/calendar/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { TConstValue } from '../../../common/types';
|
|
2
|
-
/** Units `add`, `subtract`, `startOf` and `endOf` accept. Weeks are ISO weeks - they start on Monday. */
|
|
2
|
+
/** Units `add`, `subtract`, `startOf` and `endOf` accept. Weeks are ISO weeks - they start on Monday; a quarter is three calendar months from January, April, July or October. */
|
|
3
3
|
export declare class TemporalUnits {
|
|
4
4
|
static readonly MILLISECOND = "millisecond";
|
|
5
5
|
static readonly SECOND = "second";
|
|
@@ -8,13 +8,14 @@ export declare class TemporalUnits {
|
|
|
8
8
|
static readonly DAY = "day";
|
|
9
9
|
static readonly WEEK = "week";
|
|
10
10
|
static readonly MONTH = "month";
|
|
11
|
+
static readonly QUARTER = "quarter";
|
|
11
12
|
static readonly YEAR = "year";
|
|
12
13
|
static readonly SCHEME_SET: Set<string>;
|
|
13
14
|
static isValid(input: string): input is TTemporalUnit;
|
|
14
15
|
}
|
|
15
16
|
export type TTemporalUnit = TConstValue<typeof TemporalUnits>;
|
|
16
|
-
/** A helper built without a `
|
|
17
|
-
export declare const
|
|
17
|
+
/** A helper built without a `tz` computes in UTC - never in the host's zone, which differs per machine. */
|
|
18
|
+
export declare const DEFAULT_TEMPORAL_TZ = "UTC";
|
|
18
19
|
/** `format` with no pattern writes ISO 8601 with the zone's offset: `2026-09-19T12:00:00.000+07:00`. */
|
|
19
20
|
export declare const DEFAULT_TEMPORAL_PATTERN = "YYYY-MM-DDTHH:mm:ss.SSSZ";
|
|
20
21
|
/** The locale name tokens and `formatIntl` write in when a helper is built without one. */
|
|
@@ -29,4 +30,14 @@ export declare class TemporalDurationStyles {
|
|
|
29
30
|
static isValid(input: string): input is TTemporalDurationStyle;
|
|
30
31
|
}
|
|
31
32
|
export type TTemporalDurationStyle = TConstValue<typeof TemporalDurationStyles>;
|
|
33
|
+
/** Which ends of the range `isBetween` counts: `[` includes an end, `(` leaves it out. */
|
|
34
|
+
export declare class TemporalInclusivities {
|
|
35
|
+
static readonly EXCLUSIVE = "()";
|
|
36
|
+
static readonly INCLUSIVE = "[]";
|
|
37
|
+
static readonly START_ONLY = "[)";
|
|
38
|
+
static readonly END_ONLY = "(]";
|
|
39
|
+
static readonly SCHEME_SET: Set<string>;
|
|
40
|
+
static isValid(input: string): input is TTemporalInclusivity;
|
|
41
|
+
}
|
|
42
|
+
export type TTemporalInclusivity = TConstValue<typeof TemporalInclusivities>;
|
|
32
43
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,kLAAkL;AAClL,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;IAC5C,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IACpC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAUvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa;CAGtD;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,2GAA2G;AAC3G,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,wGAAwG;AACxG,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAEnE,2FAA2F;AAC3F,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C,uGAAuG;AACvG,qBAAa,sBAAsB;IACjC,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAA+D;IAEzF,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,sBAAsB;CAG/D;AAED,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEhF,0FAA0F;AAC1F,qBAAa,qBAAqB;IAChC,MAAM,CAAC,QAAQ,CAAC,SAAS,QAAQ;IACjC,MAAM,CAAC,QAAQ,CAAC,SAAS,QAAQ;IACjC,MAAM,CAAC,QAAQ,CAAC,UAAU,QAAQ;IAClC,MAAM,CAAC,QAAQ,CAAC,QAAQ,QAAQ;IAEhC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAKvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,oBAAoB;CAG7D;AAED,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TemporalDurationStyles = exports.DEFAULT_TEMPORAL_LOCALE = exports.DEFAULT_TEMPORAL_PATTERN = exports.
|
|
4
|
-
/** Units `add`, `subtract`, `startOf` and `endOf` accept. Weeks are ISO weeks - they start on Monday. */
|
|
3
|
+
exports.TemporalInclusivities = exports.TemporalDurationStyles = exports.DEFAULT_TEMPORAL_LOCALE = exports.DEFAULT_TEMPORAL_PATTERN = exports.DEFAULT_TEMPORAL_TZ = exports.TemporalUnits = void 0;
|
|
4
|
+
/** Units `add`, `subtract`, `startOf` and `endOf` accept. Weeks are ISO weeks - they start on Monday; a quarter is three calendar months from January, April, July or October. */
|
|
5
5
|
class TemporalUnits {
|
|
6
6
|
static { this.MILLISECOND = 'millisecond'; }
|
|
7
7
|
static { this.SECOND = 'second'; }
|
|
@@ -10,6 +10,7 @@ class TemporalUnits {
|
|
|
10
10
|
static { this.DAY = 'day'; }
|
|
11
11
|
static { this.WEEK = 'week'; }
|
|
12
12
|
static { this.MONTH = 'month'; }
|
|
13
|
+
static { this.QUARTER = 'quarter'; }
|
|
13
14
|
static { this.YEAR = 'year'; }
|
|
14
15
|
static { this.SCHEME_SET = new Set([
|
|
15
16
|
this.MILLISECOND,
|
|
@@ -19,6 +20,7 @@ class TemporalUnits {
|
|
|
19
20
|
this.DAY,
|
|
20
21
|
this.WEEK,
|
|
21
22
|
this.MONTH,
|
|
23
|
+
this.QUARTER,
|
|
22
24
|
this.YEAR,
|
|
23
25
|
]); }
|
|
24
26
|
static isValid(input) {
|
|
@@ -26,8 +28,8 @@ class TemporalUnits {
|
|
|
26
28
|
}
|
|
27
29
|
}
|
|
28
30
|
exports.TemporalUnits = TemporalUnits;
|
|
29
|
-
/** A helper built without a `
|
|
30
|
-
exports.
|
|
31
|
+
/** A helper built without a `tz` computes in UTC - never in the host's zone, which differs per machine. */
|
|
32
|
+
exports.DEFAULT_TEMPORAL_TZ = 'UTC';
|
|
31
33
|
/** `format` with no pattern writes ISO 8601 with the zone's offset: `2026-09-19T12:00:00.000+07:00`. */
|
|
32
34
|
exports.DEFAULT_TEMPORAL_PATTERN = 'YYYY-MM-DDTHH:mm:ss.SSSZ';
|
|
33
35
|
/** The locale name tokens and `formatIntl` write in when a helper is built without one. */
|
|
@@ -44,4 +46,21 @@ class TemporalDurationStyles {
|
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
48
|
exports.TemporalDurationStyles = TemporalDurationStyles;
|
|
49
|
+
/** Which ends of the range `isBetween` counts: `[` includes an end, `(` leaves it out. */
|
|
50
|
+
class TemporalInclusivities {
|
|
51
|
+
static { this.EXCLUSIVE = '()'; }
|
|
52
|
+
static { this.INCLUSIVE = '[]'; }
|
|
53
|
+
static { this.START_ONLY = '[)'; }
|
|
54
|
+
static { this.END_ONLY = '(]'; }
|
|
55
|
+
static { this.SCHEME_SET = new Set([
|
|
56
|
+
this.EXCLUSIVE,
|
|
57
|
+
this.INCLUSIVE,
|
|
58
|
+
this.START_ONLY,
|
|
59
|
+
this.END_ONLY,
|
|
60
|
+
]); }
|
|
61
|
+
static isValid(input) {
|
|
62
|
+
return this.SCHEME_SET.has(input);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.TemporalInclusivities = TemporalInclusivities;
|
|
47
66
|
//# sourceMappingURL=constants.js.map
|