@vielzeug/tempo 3.0.0 → 26.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_convert.cjs +1 -1
- package/dist/_convert.cjs.map +1 -1
- package/dist/_convert.js +1 -27
- package/dist/_convert.js.map +1 -1
- package/dist/_floor.cjs +1 -1
- package/dist/_floor.cjs.map +1 -1
- package/dist/_floor.js +1 -45
- package/dist/_floor.js.map +1 -1
- package/dist/_tz.cjs +1 -1
- package/dist/_tz.cjs.map +1 -1
- package/dist/_tz.js +1 -30
- package/dist/_tz.js.map +1 -1
- package/dist/boundary.cjs +1 -1
- package/dist/boundary.cjs.map +1 -1
- package/dist/boundary.js +1 -28
- package/dist/boundary.js.map +1 -1
- package/dist/classify.cjs +1 -1
- package/dist/classify.cjs.map +1 -1
- package/dist/classify.d.ts.map +1 -1
- package/dist/classify.js +1 -84
- package/dist/classify.js.map +1 -1
- package/dist/compare.cjs +1 -1
- package/dist/compare.cjs.map +1 -1
- package/dist/compare.js +1 -59
- package/dist/compare.js.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +1 -45
- package/dist/core.js.map +1 -1
- package/dist/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.js +1 -12
- package/dist/errors.js.map +1 -1
- package/dist/format.cjs +1 -1
- package/dist/format.cjs.map +1 -1
- package/dist/format.d.ts +15 -1
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +1 -192
- package/dist/format.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -10
- package/dist/range.cjs +1 -1
- package/dist/range.cjs.map +1 -1
- package/dist/range.js +1 -34
- package/dist/range.js.map +1 -1
- package/dist/tempo.cjs +1 -1
- package/dist/tempo.cjs.map +1 -1
- package/dist/tempo.iife.js +1 -1
- package/dist/tempo.iife.js.map +1 -1
- package/dist/tempo.js +1 -1
- package/dist/tempo.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/_convert.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./errors.cjs"),t=require("./_tz.cjs");let n=require("@js-temporal/polyfill");function
|
|
1
|
+
const e=require("./errors.cjs"),t=require("./_tz.cjs");let n=require("@js-temporal/polyfill");function toInstant(r,i={}){if(r instanceof n.Temporal.Instant)return r;if(r instanceof n.Temporal.ZonedDateTime)return r.toInstant();i.timeZone||e.fail(`This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.`,e.TempoMissingTzError);let a=t.validateTimeZone(i.timeZone);if(r instanceof n.Temporal.PlainDateTime)return r.toZonedDateTime(a,{disambiguation:i.disambiguation}).toInstant();if(r instanceof n.Temporal.PlainDate)return r.toZonedDateTime({timeZone:a}).toInstant();e.fail(`Unsupported time input type: ${String(r)}`,e.TempoUnsupportedInputError)}function toZoned(r,i){let a=t.validateTimeZone(i.timeZone);if(r instanceof n.Temporal.ZonedDateTime)return r.withTimeZone(a);if(r instanceof n.Temporal.Instant)return r.toZonedDateTimeISO(a);if(r instanceof n.Temporal.PlainDateTime)return r.toZonedDateTime(a,{disambiguation:i.disambiguation});if(r instanceof n.Temporal.PlainDate)return r.toZonedDateTime({timeZone:a});e.fail(`Unsupported time input type: ${String(r)}`,e.TempoUnsupportedInputError)}function inTimeZone(e,t){return toZoned(e,{timeZone:t})}exports.inTimeZone=inTimeZone,exports.toInstant=toInstant,exports.toZoned=toZoned;
|
|
2
2
|
//# sourceMappingURL=_convert.cjs.map
|
package/dist/_convert.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_convert.cjs","names":[],"sources":["../src/_convert.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { validateTimeZone } from './_tz';\nimport { fail, TempoMissingTzError, TempoUnsupportedInputError } from './errors';\nimport type { AbsoluteTime, DisambiguationOptions, TimeInput, TimeZoneOptions, WallTime } from './types';\n\ntype ResolutionOptions = DisambiguationOptions & TimeZoneOptions;\ntype RequiredResolutionOptions = ResolutionOptions & { timeZone: string };\n\nexport function toInstant(input: AbsoluteTime): Temporal.Instant;\nexport function toInstant(input: WallTime, options: RequiredResolutionOptions): Temporal.Instant;\nexport function toInstant(input: TimeInput, options?: ResolutionOptions): Temporal.Instant;\nexport function toInstant(input: TimeInput, options: ResolutionOptions = {}): Temporal.Instant {\n if (input instanceof Temporal.Instant) return input;\n\n if (input instanceof Temporal.ZonedDateTime) return input.toInstant();\n\n if (!options.timeZone) {\n fail(\n 'This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.',\n TempoMissingTzError,\n );\n }\n\n const timeZone = validateTimeZone(options.timeZone);\n\n if (input instanceof Temporal.PlainDateTime) {\n return input.toZonedDateTime(timeZone, { disambiguation: options.disambiguation }).toInstant();\n }\n\n if (input instanceof Temporal.PlainDate) return input.toZonedDateTime({ timeZone }).toInstant();\n\n fail(`Unsupported time input type: ${String(input)}`, TempoUnsupportedInputError);\n}\n\nexport function toZoned(input: TimeInput, options: RequiredResolutionOptions): Temporal.ZonedDateTime {\n const timeZone = validateTimeZone(options.timeZone);\n\n if (input instanceof Temporal.ZonedDateTime) return input.withTimeZone(timeZone);\n\n if (input instanceof Temporal.Instant) return input.toZonedDateTimeISO(timeZone);\n\n if (input instanceof Temporal.PlainDateTime) {\n return input.toZonedDateTime(timeZone, { disambiguation: options.disambiguation });\n }\n\n if (input instanceof Temporal.PlainDate) return input.toZonedDateTime({ timeZone });\n\n fail(`Unsupported time input type: ${String(input)}`, TempoUnsupportedInputError);\n}\n\nexport function inTimeZone(input: TimeInput, timeZone: string): Temporal.ZonedDateTime {\n return toZoned(input, { timeZone });\n}\n"],"mappings":"8FAWA,SAAgB,
|
|
1
|
+
{"version":3,"file":"_convert.cjs","names":[],"sources":["../src/_convert.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { validateTimeZone } from './_tz';\nimport { fail, TempoMissingTzError, TempoUnsupportedInputError } from './errors';\nimport type { AbsoluteTime, DisambiguationOptions, TimeInput, TimeZoneOptions, WallTime } from './types';\n\ntype ResolutionOptions = DisambiguationOptions & TimeZoneOptions;\ntype RequiredResolutionOptions = ResolutionOptions & { timeZone: string };\n\nexport function toInstant(input: AbsoluteTime): Temporal.Instant;\nexport function toInstant(input: WallTime, options: RequiredResolutionOptions): Temporal.Instant;\nexport function toInstant(input: TimeInput, options?: ResolutionOptions): Temporal.Instant;\nexport function toInstant(input: TimeInput, options: ResolutionOptions = {}): Temporal.Instant {\n if (input instanceof Temporal.Instant) return input;\n\n if (input instanceof Temporal.ZonedDateTime) return input.toInstant();\n\n if (!options.timeZone) {\n fail(\n 'This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.',\n TempoMissingTzError,\n );\n }\n\n const timeZone = validateTimeZone(options.timeZone);\n\n if (input instanceof Temporal.PlainDateTime) {\n return input.toZonedDateTime(timeZone, { disambiguation: options.disambiguation }).toInstant();\n }\n\n if (input instanceof Temporal.PlainDate) return input.toZonedDateTime({ timeZone }).toInstant();\n\n fail(`Unsupported time input type: ${String(input)}`, TempoUnsupportedInputError);\n}\n\nexport function toZoned(input: TimeInput, options: RequiredResolutionOptions): Temporal.ZonedDateTime {\n const timeZone = validateTimeZone(options.timeZone);\n\n if (input instanceof Temporal.ZonedDateTime) return input.withTimeZone(timeZone);\n\n if (input instanceof Temporal.Instant) return input.toZonedDateTimeISO(timeZone);\n\n if (input instanceof Temporal.PlainDateTime) {\n return input.toZonedDateTime(timeZone, { disambiguation: options.disambiguation });\n }\n\n if (input instanceof Temporal.PlainDate) return input.toZonedDateTime({ timeZone });\n\n fail(`Unsupported time input type: ${String(input)}`, TempoUnsupportedInputError);\n}\n\nexport function inTimeZone(input: TimeInput, timeZone: string): Temporal.ZonedDateTime {\n return toZoned(input, { timeZone });\n}\n"],"mappings":"8FAWA,SAAgB,UAAU,EAAkB,EAA6B,CAAC,EAAqB,CAC7F,GAAI,aAAiB,EAAA,SAAS,QAAS,OAAO,EAE9C,GAAI,aAAiB,EAAA,SAAS,cAAe,OAAO,EAAM,UAAU,EAE/D,EAAQ,UACX,EAAA,KACE,0FACA,EAAA,mBACF,EAGF,IAAM,EAAW,EAAA,iBAAiB,EAAQ,QAAQ,EAElD,GAAI,aAAiB,EAAA,SAAS,cAC5B,OAAO,EAAM,gBAAgB,EAAU,CAAE,eAAgB,EAAQ,cAAe,CAAC,CAAC,CAAC,UAAU,EAG/F,GAAI,aAAiB,EAAA,SAAS,UAAW,OAAO,EAAM,gBAAgB,CAAE,UAAS,CAAC,CAAC,CAAC,UAAU,EAE9F,EAAA,KAAK,gCAAgC,OAAO,CAAK,IAAK,EAAA,0BAA0B,CAClF,CAEA,SAAgB,QAAQ,EAAkB,EAA4D,CACpG,IAAM,EAAW,EAAA,iBAAiB,EAAQ,QAAQ,EAElD,GAAI,aAAiB,EAAA,SAAS,cAAe,OAAO,EAAM,aAAa,CAAQ,EAE/E,GAAI,aAAiB,EAAA,SAAS,QAAS,OAAO,EAAM,mBAAmB,CAAQ,EAE/E,GAAI,aAAiB,EAAA,SAAS,cAC5B,OAAO,EAAM,gBAAgB,EAAU,CAAE,eAAgB,EAAQ,cAAe,CAAC,EAGnF,GAAI,aAAiB,EAAA,SAAS,UAAW,OAAO,EAAM,gBAAgB,CAAE,UAAS,CAAC,EAElF,EAAA,KAAK,gCAAgC,OAAO,CAAK,IAAK,EAAA,0BAA0B,CAClF,CAEA,SAAgB,WAAW,EAAkB,EAA0C,CACrF,OAAO,QAAQ,EAAO,CAAE,UAAS,CAAC,CACpC"}
|
package/dist/_convert.js
CHANGED
|
@@ -1,28 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { validateTimeZone as r } from "./_tz.js";
|
|
3
|
-
import { Temporal as i } from "@js-temporal/polyfill";
|
|
4
|
-
//#region src/_convert.ts
|
|
5
|
-
function a(a, o = {}) {
|
|
6
|
-
if (a instanceof i.Instant) return a;
|
|
7
|
-
if (a instanceof i.ZonedDateTime) return a.toInstant();
|
|
8
|
-
o.timeZone || n("This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.", e);
|
|
9
|
-
let s = r(o.timeZone);
|
|
10
|
-
if (a instanceof i.PlainDateTime) return a.toZonedDateTime(s, { disambiguation: o.disambiguation }).toInstant();
|
|
11
|
-
if (a instanceof i.PlainDate) return a.toZonedDateTime({ timeZone: s }).toInstant();
|
|
12
|
-
n(`Unsupported time input type: ${String(a)}`, t);
|
|
13
|
-
}
|
|
14
|
-
function o(e, a) {
|
|
15
|
-
let o = r(a.timeZone);
|
|
16
|
-
if (e instanceof i.ZonedDateTime) return e.withTimeZone(o);
|
|
17
|
-
if (e instanceof i.Instant) return e.toZonedDateTimeISO(o);
|
|
18
|
-
if (e instanceof i.PlainDateTime) return e.toZonedDateTime(o, { disambiguation: a.disambiguation });
|
|
19
|
-
if (e instanceof i.PlainDate) return e.toZonedDateTime({ timeZone: o });
|
|
20
|
-
n(`Unsupported time input type: ${String(e)}`, t);
|
|
21
|
-
}
|
|
22
|
-
function s(e, t) {
|
|
23
|
-
return o(e, { timeZone: t });
|
|
24
|
-
}
|
|
25
|
-
//#endregion
|
|
26
|
-
export { s as inTimeZone, a as toInstant, o as toZoned };
|
|
27
|
-
|
|
1
|
+
import{TempoMissingTzError as e,TempoUnsupportedInputError as t,fail as n}from"./errors.js";import{validateTimeZone as r}from"./_tz.js";import{Temporal as i}from"@js-temporal/polyfill";function toInstant(a,o={}){if(a instanceof i.Instant)return a;if(a instanceof i.ZonedDateTime)return a.toInstant();o.timeZone||n(`This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.`,e);let s=r(o.timeZone);if(a instanceof i.PlainDateTime)return a.toZonedDateTime(s,{disambiguation:o.disambiguation}).toInstant();if(a instanceof i.PlainDate)return a.toZonedDateTime({timeZone:s}).toInstant();n(`Unsupported time input type: ${String(a)}`,t)}function toZoned(e,a){let o=r(a.timeZone);if(e instanceof i.ZonedDateTime)return e.withTimeZone(o);if(e instanceof i.Instant)return e.toZonedDateTimeISO(o);if(e instanceof i.PlainDateTime)return e.toZonedDateTime(o,{disambiguation:a.disambiguation});if(e instanceof i.PlainDate)return e.toZonedDateTime({timeZone:o});n(`Unsupported time input type: ${String(e)}`,t)}function inTimeZone(e,t){return toZoned(e,{timeZone:t})}export{inTimeZone,toInstant,toZoned};
|
|
28
2
|
//# sourceMappingURL=_convert.js.map
|
package/dist/_convert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_convert.js","names":[],"sources":["../src/_convert.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { validateTimeZone } from './_tz';\nimport { fail, TempoMissingTzError, TempoUnsupportedInputError } from './errors';\nimport type { AbsoluteTime, DisambiguationOptions, TimeInput, TimeZoneOptions, WallTime } from './types';\n\ntype ResolutionOptions = DisambiguationOptions & TimeZoneOptions;\ntype RequiredResolutionOptions = ResolutionOptions & { timeZone: string };\n\nexport function toInstant(input: AbsoluteTime): Temporal.Instant;\nexport function toInstant(input: WallTime, options: RequiredResolutionOptions): Temporal.Instant;\nexport function toInstant(input: TimeInput, options?: ResolutionOptions): Temporal.Instant;\nexport function toInstant(input: TimeInput, options: ResolutionOptions = {}): Temporal.Instant {\n if (input instanceof Temporal.Instant) return input;\n\n if (input instanceof Temporal.ZonedDateTime) return input.toInstant();\n\n if (!options.timeZone) {\n fail(\n 'This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.',\n TempoMissingTzError,\n );\n }\n\n const timeZone = validateTimeZone(options.timeZone);\n\n if (input instanceof Temporal.PlainDateTime) {\n return input.toZonedDateTime(timeZone, { disambiguation: options.disambiguation }).toInstant();\n }\n\n if (input instanceof Temporal.PlainDate) return input.toZonedDateTime({ timeZone }).toInstant();\n\n fail(`Unsupported time input type: ${String(input)}`, TempoUnsupportedInputError);\n}\n\nexport function toZoned(input: TimeInput, options: RequiredResolutionOptions): Temporal.ZonedDateTime {\n const timeZone = validateTimeZone(options.timeZone);\n\n if (input instanceof Temporal.ZonedDateTime) return input.withTimeZone(timeZone);\n\n if (input instanceof Temporal.Instant) return input.toZonedDateTimeISO(timeZone);\n\n if (input instanceof Temporal.PlainDateTime) {\n return input.toZonedDateTime(timeZone, { disambiguation: options.disambiguation });\n }\n\n if (input instanceof Temporal.PlainDate) return input.toZonedDateTime({ timeZone });\n\n fail(`Unsupported time input type: ${String(input)}`, TempoUnsupportedInputError);\n}\n\nexport function inTimeZone(input: TimeInput, timeZone: string): Temporal.ZonedDateTime {\n return toZoned(input, { timeZone });\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"_convert.js","names":[],"sources":["../src/_convert.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { validateTimeZone } from './_tz';\nimport { fail, TempoMissingTzError, TempoUnsupportedInputError } from './errors';\nimport type { AbsoluteTime, DisambiguationOptions, TimeInput, TimeZoneOptions, WallTime } from './types';\n\ntype ResolutionOptions = DisambiguationOptions & TimeZoneOptions;\ntype RequiredResolutionOptions = ResolutionOptions & { timeZone: string };\n\nexport function toInstant(input: AbsoluteTime): Temporal.Instant;\nexport function toInstant(input: WallTime, options: RequiredResolutionOptions): Temporal.Instant;\nexport function toInstant(input: TimeInput, options?: ResolutionOptions): Temporal.Instant;\nexport function toInstant(input: TimeInput, options: ResolutionOptions = {}): Temporal.Instant {\n if (input instanceof Temporal.Instant) return input;\n\n if (input instanceof Temporal.ZonedDateTime) return input.toInstant();\n\n if (!options.timeZone) {\n fail(\n 'This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.',\n TempoMissingTzError,\n );\n }\n\n const timeZone = validateTimeZone(options.timeZone);\n\n if (input instanceof Temporal.PlainDateTime) {\n return input.toZonedDateTime(timeZone, { disambiguation: options.disambiguation }).toInstant();\n }\n\n if (input instanceof Temporal.PlainDate) return input.toZonedDateTime({ timeZone }).toInstant();\n\n fail(`Unsupported time input type: ${String(input)}`, TempoUnsupportedInputError);\n}\n\nexport function toZoned(input: TimeInput, options: RequiredResolutionOptions): Temporal.ZonedDateTime {\n const timeZone = validateTimeZone(options.timeZone);\n\n if (input instanceof Temporal.ZonedDateTime) return input.withTimeZone(timeZone);\n\n if (input instanceof Temporal.Instant) return input.toZonedDateTimeISO(timeZone);\n\n if (input instanceof Temporal.PlainDateTime) {\n return input.toZonedDateTime(timeZone, { disambiguation: options.disambiguation });\n }\n\n if (input instanceof Temporal.PlainDate) return input.toZonedDateTime({ timeZone });\n\n fail(`Unsupported time input type: ${String(input)}`, TempoUnsupportedInputError);\n}\n\nexport function inTimeZone(input: TimeInput, timeZone: string): Temporal.ZonedDateTime {\n return toZoned(input, { timeZone });\n}\n"],"mappings":"yLAWA,SAAgB,UAAU,EAAkB,EAA6B,CAAC,EAAqB,CAC7F,GAAI,aAAiB,EAAS,QAAS,OAAO,EAE9C,GAAI,aAAiB,EAAS,cAAe,OAAO,EAAM,UAAU,EAE/D,EAAQ,UACX,EACE,0FACA,CACF,EAGF,IAAM,EAAW,EAAiB,EAAQ,QAAQ,EAElD,GAAI,aAAiB,EAAS,cAC5B,OAAO,EAAM,gBAAgB,EAAU,CAAE,eAAgB,EAAQ,cAAe,CAAC,CAAC,CAAC,UAAU,EAG/F,GAAI,aAAiB,EAAS,UAAW,OAAO,EAAM,gBAAgB,CAAE,UAAS,CAAC,CAAC,CAAC,UAAU,EAE9F,EAAK,gCAAgC,OAAO,CAAK,IAAK,CAA0B,CAClF,CAEA,SAAgB,QAAQ,EAAkB,EAA4D,CACpG,IAAM,EAAW,EAAiB,EAAQ,QAAQ,EAElD,GAAI,aAAiB,EAAS,cAAe,OAAO,EAAM,aAAa,CAAQ,EAE/E,GAAI,aAAiB,EAAS,QAAS,OAAO,EAAM,mBAAmB,CAAQ,EAE/E,GAAI,aAAiB,EAAS,cAC5B,OAAO,EAAM,gBAAgB,EAAU,CAAE,eAAgB,EAAQ,cAAe,CAAC,EAGnF,GAAI,aAAiB,EAAS,UAAW,OAAO,EAAM,gBAAgB,CAAE,UAAS,CAAC,EAElF,EAAK,gCAAgC,OAAO,CAAK,IAAK,CAA0B,CAClF,CAEA,SAAgB,WAAW,EAAkB,EAA0C,CACrF,OAAO,QAAQ,EAAO,CAAE,UAAS,CAAC,CACpC"}
|
package/dist/_floor.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./_convert.cjs");var t={hour:0,microsecond:0,millisecond:0,minute:0,nanosecond:0,second:0},n={day:t,hour:{microsecond:0,millisecond:0,minute:0,nanosecond:0,second:0},minute:{microsecond:0,millisecond:0,nanosecond:0,second:0},month:{...t,day:1},year:{...t,day:1,month:1}};function
|
|
1
|
+
const e=require("./_convert.cjs");var t={hour:0,microsecond:0,millisecond:0,minute:0,nanosecond:0,second:0},n={day:t,hour:{microsecond:0,millisecond:0,minute:0,nanosecond:0,second:0},minute:{microsecond:0,millisecond:0,nanosecond:0,second:0},month:{...t,day:1},year:{...t,day:1,month:1}};function floorToUnit(r,i,a){let o=e.toZoned(r,a);if(i===`week`){let e=(o.dayOfWeek-(a.weekStartsOn??1)+7)%7;return o.subtract({days:e}).with(t).toInstant()}return o.with(n[i]).toInstant()}exports.floorToUnit=floorToUnit;
|
|
2
2
|
//# sourceMappingURL=_floor.cjs.map
|
package/dist/_floor.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_floor.cjs","names":[],"sources":["../src/_floor.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { toZoned } from './_convert';\nimport type { BoundaryUnit, Disambiguation, TimeInput, WeekStartDay } from './types';\n\nconst TIME_ZERO: Temporal.ZonedDateTimeLike = {\n hour: 0,\n microsecond: 0,\n millisecond: 0,\n minute: 0,\n nanosecond: 0,\n second: 0,\n};\n\nconst BOUNDARY_CLEAR: Record<Exclude<BoundaryUnit, 'week'>, Temporal.ZonedDateTimeLike> = {\n day: TIME_ZERO,\n hour: { microsecond: 0, millisecond: 0, minute: 0, nanosecond: 0, second: 0 },\n minute: { microsecond: 0, millisecond: 0, nanosecond: 0, second: 0 },\n month: { ...TIME_ZERO, day: 1 },\n year: { ...TIME_ZERO, day: 1, month: 1 },\n};\n\nexport function floorToUnit(\n input: TimeInput,\n unit: BoundaryUnit,\n options: { disambiguation?: Disambiguation; timeZone: string; weekStartsOn?: WeekStartDay },\n): Temporal.Instant {\n const zoned = toZoned(input, options);\n\n if (unit === 'week') {\n const daysToSubtract = (zoned.dayOfWeek - (options.weekStartsOn ?? 1) + 7) % 7;\n\n return zoned.subtract({ days: daysToSubtract }).with(TIME_ZERO).toInstant();\n }\n\n return zoned.with(BOUNDARY_CLEAR[unit]).toInstant();\n}\n"],"mappings":"kCAIA,IAAM,EAAwC,CAC5C,KAAM,EACN,YAAa,EACb,YAAa,EACb,OAAQ,EACR,WAAY,EACZ,OAAQ,CACV,EAEM,EAAoF,CACxF,IAAK,EACL,KAAM,CAAE,YAAa,EAAG,YAAa,EAAG,OAAQ,EAAG,WAAY,EAAG,OAAQ,CAAE,EAC5E,OAAQ,CAAE,YAAa,EAAG,YAAa,EAAG,WAAY,EAAG,OAAQ,CAAE,EACnE,MAAO,CAAE,GAAG,EAAW,IAAK,CAAE,EAC9B,KAAM,CAAE,GAAG,EAAW,IAAK,EAAG,MAAO,CAAE,CACzC,EAEA,SAAgB,
|
|
1
|
+
{"version":3,"file":"_floor.cjs","names":[],"sources":["../src/_floor.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { toZoned } from './_convert';\nimport type { BoundaryUnit, Disambiguation, TimeInput, WeekStartDay } from './types';\n\nconst TIME_ZERO: Temporal.ZonedDateTimeLike = {\n hour: 0,\n microsecond: 0,\n millisecond: 0,\n minute: 0,\n nanosecond: 0,\n second: 0,\n};\n\nconst BOUNDARY_CLEAR: Record<Exclude<BoundaryUnit, 'week'>, Temporal.ZonedDateTimeLike> = {\n day: TIME_ZERO,\n hour: { microsecond: 0, millisecond: 0, minute: 0, nanosecond: 0, second: 0 },\n minute: { microsecond: 0, millisecond: 0, nanosecond: 0, second: 0 },\n month: { ...TIME_ZERO, day: 1 },\n year: { ...TIME_ZERO, day: 1, month: 1 },\n};\n\nexport function floorToUnit(\n input: TimeInput,\n unit: BoundaryUnit,\n options: { disambiguation?: Disambiguation; timeZone: string; weekStartsOn?: WeekStartDay },\n): Temporal.Instant {\n const zoned = toZoned(input, options);\n\n if (unit === 'week') {\n const daysToSubtract = (zoned.dayOfWeek - (options.weekStartsOn ?? 1) + 7) % 7;\n\n return zoned.subtract({ days: daysToSubtract }).with(TIME_ZERO).toInstant();\n }\n\n return zoned.with(BOUNDARY_CLEAR[unit]).toInstant();\n}\n"],"mappings":"kCAIA,IAAM,EAAwC,CAC5C,KAAM,EACN,YAAa,EACb,YAAa,EACb,OAAQ,EACR,WAAY,EACZ,OAAQ,CACV,EAEM,EAAoF,CACxF,IAAK,EACL,KAAM,CAAE,YAAa,EAAG,YAAa,EAAG,OAAQ,EAAG,WAAY,EAAG,OAAQ,CAAE,EAC5E,OAAQ,CAAE,YAAa,EAAG,YAAa,EAAG,WAAY,EAAG,OAAQ,CAAE,EACnE,MAAO,CAAE,GAAG,EAAW,IAAK,CAAE,EAC9B,KAAM,CAAE,GAAG,EAAW,IAAK,EAAG,MAAO,CAAE,CACzC,EAEA,SAAgB,YACd,EACA,EACA,EACkB,CAClB,IAAM,EAAQ,EAAA,QAAQ,EAAO,CAAO,EAEpC,GAAI,IAAS,OAAQ,CACnB,IAAM,GAAkB,EAAM,WAAa,EAAQ,cAAgB,GAAK,GAAK,EAE7E,OAAO,EAAM,SAAS,CAAE,KAAM,CAAe,CAAC,CAAC,CAAC,KAAK,CAAS,CAAC,CAAC,UAAU,CAC5E,CAEA,OAAO,EAAM,KAAK,EAAe,EAAK,CAAC,CAAC,UAAU,CACpD"}
|
package/dist/_floor.js
CHANGED
|
@@ -1,46 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
//#region src/_floor.ts
|
|
3
|
-
var t = {
|
|
4
|
-
hour: 0,
|
|
5
|
-
microsecond: 0,
|
|
6
|
-
millisecond: 0,
|
|
7
|
-
minute: 0,
|
|
8
|
-
nanosecond: 0,
|
|
9
|
-
second: 0
|
|
10
|
-
}, n = {
|
|
11
|
-
day: t,
|
|
12
|
-
hour: {
|
|
13
|
-
microsecond: 0,
|
|
14
|
-
millisecond: 0,
|
|
15
|
-
minute: 0,
|
|
16
|
-
nanosecond: 0,
|
|
17
|
-
second: 0
|
|
18
|
-
},
|
|
19
|
-
minute: {
|
|
20
|
-
microsecond: 0,
|
|
21
|
-
millisecond: 0,
|
|
22
|
-
nanosecond: 0,
|
|
23
|
-
second: 0
|
|
24
|
-
},
|
|
25
|
-
month: {
|
|
26
|
-
...t,
|
|
27
|
-
day: 1
|
|
28
|
-
},
|
|
29
|
-
year: {
|
|
30
|
-
...t,
|
|
31
|
-
day: 1,
|
|
32
|
-
month: 1
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
function r(r, i, a) {
|
|
36
|
-
let o = e(r, a);
|
|
37
|
-
if (i === "week") {
|
|
38
|
-
let e = (o.dayOfWeek - (a.weekStartsOn ?? 1) + 7) % 7;
|
|
39
|
-
return o.subtract({ days: e }).with(t).toInstant();
|
|
40
|
-
}
|
|
41
|
-
return o.with(n[i]).toInstant();
|
|
42
|
-
}
|
|
43
|
-
//#endregion
|
|
44
|
-
export { r as floorToUnit };
|
|
45
|
-
|
|
1
|
+
import{toZoned as e}from"./_convert.js";var t={hour:0,microsecond:0,millisecond:0,minute:0,nanosecond:0,second:0},n={day:t,hour:{microsecond:0,millisecond:0,minute:0,nanosecond:0,second:0},minute:{microsecond:0,millisecond:0,nanosecond:0,second:0},month:{...t,day:1},year:{...t,day:1,month:1}};function floorToUnit(r,i,a){let o=e(r,a);if(i===`week`){let e=(o.dayOfWeek-(a.weekStartsOn??1)+7)%7;return o.subtract({days:e}).with(t).toInstant()}return o.with(n[i]).toInstant()}export{floorToUnit};
|
|
46
2
|
//# sourceMappingURL=_floor.js.map
|
package/dist/_floor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_floor.js","names":[],"sources":["../src/_floor.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { toZoned } from './_convert';\nimport type { BoundaryUnit, Disambiguation, TimeInput, WeekStartDay } from './types';\n\nconst TIME_ZERO: Temporal.ZonedDateTimeLike = {\n hour: 0,\n microsecond: 0,\n millisecond: 0,\n minute: 0,\n nanosecond: 0,\n second: 0,\n};\n\nconst BOUNDARY_CLEAR: Record<Exclude<BoundaryUnit, 'week'>, Temporal.ZonedDateTimeLike> = {\n day: TIME_ZERO,\n hour: { microsecond: 0, millisecond: 0, minute: 0, nanosecond: 0, second: 0 },\n minute: { microsecond: 0, millisecond: 0, nanosecond: 0, second: 0 },\n month: { ...TIME_ZERO, day: 1 },\n year: { ...TIME_ZERO, day: 1, month: 1 },\n};\n\nexport function floorToUnit(\n input: TimeInput,\n unit: BoundaryUnit,\n options: { disambiguation?: Disambiguation; timeZone: string; weekStartsOn?: WeekStartDay },\n): Temporal.Instant {\n const zoned = toZoned(input, options);\n\n if (unit === 'week') {\n const daysToSubtract = (zoned.dayOfWeek - (options.weekStartsOn ?? 1) + 7) % 7;\n\n return zoned.subtract({ days: daysToSubtract }).with(TIME_ZERO).toInstant();\n }\n\n return zoned.with(BOUNDARY_CLEAR[unit]).toInstant();\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"_floor.js","names":[],"sources":["../src/_floor.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { toZoned } from './_convert';\nimport type { BoundaryUnit, Disambiguation, TimeInput, WeekStartDay } from './types';\n\nconst TIME_ZERO: Temporal.ZonedDateTimeLike = {\n hour: 0,\n microsecond: 0,\n millisecond: 0,\n minute: 0,\n nanosecond: 0,\n second: 0,\n};\n\nconst BOUNDARY_CLEAR: Record<Exclude<BoundaryUnit, 'week'>, Temporal.ZonedDateTimeLike> = {\n day: TIME_ZERO,\n hour: { microsecond: 0, millisecond: 0, minute: 0, nanosecond: 0, second: 0 },\n minute: { microsecond: 0, millisecond: 0, nanosecond: 0, second: 0 },\n month: { ...TIME_ZERO, day: 1 },\n year: { ...TIME_ZERO, day: 1, month: 1 },\n};\n\nexport function floorToUnit(\n input: TimeInput,\n unit: BoundaryUnit,\n options: { disambiguation?: Disambiguation; timeZone: string; weekStartsOn?: WeekStartDay },\n): Temporal.Instant {\n const zoned = toZoned(input, options);\n\n if (unit === 'week') {\n const daysToSubtract = (zoned.dayOfWeek - (options.weekStartsOn ?? 1) + 7) % 7;\n\n return zoned.subtract({ days: daysToSubtract }).with(TIME_ZERO).toInstant();\n }\n\n return zoned.with(BOUNDARY_CLEAR[unit]).toInstant();\n}\n"],"mappings":"wCAIA,IAAM,EAAwC,CAC5C,KAAM,EACN,YAAa,EACb,YAAa,EACb,OAAQ,EACR,WAAY,EACZ,OAAQ,CACV,EAEM,EAAoF,CACxF,IAAK,EACL,KAAM,CAAE,YAAa,EAAG,YAAa,EAAG,OAAQ,EAAG,WAAY,EAAG,OAAQ,CAAE,EAC5E,OAAQ,CAAE,YAAa,EAAG,YAAa,EAAG,WAAY,EAAG,OAAQ,CAAE,EACnE,MAAO,CAAE,GAAG,EAAW,IAAK,CAAE,EAC9B,KAAM,CAAE,GAAG,EAAW,IAAK,EAAG,MAAO,CAAE,CACzC,EAEA,SAAgB,YACd,EACA,EACA,EACkB,CAClB,IAAM,EAAQ,EAAQ,EAAO,CAAO,EAEpC,GAAI,IAAS,OAAQ,CACnB,IAAM,GAAkB,EAAM,WAAa,EAAQ,cAAgB,GAAK,GAAK,EAE7E,OAAO,EAAM,SAAS,CAAE,KAAM,CAAe,CAAC,CAAC,CAAC,KAAK,CAAS,CAAC,CAAC,UAAU,CAC5E,CAEA,OAAO,EAAM,KAAK,EAAe,EAAK,CAAC,CAAC,UAAU,CACpD"}
|
package/dist/_tz.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./errors.cjs");let t=require("@js-temporal/polyfill");function
|
|
1
|
+
const e=require("./errors.cjs");let t=require("@js-temporal/polyfill");function validateTimeZone(n){try{t.Temporal.Instant.fromEpochMilliseconds(0).toZonedDateTimeISO(n)}catch(t){e.fail(`Unknown or invalid timezone: "${n}". Expected an IANA timezone name or UTC offset.`,e.TempoInvalidTzError,{cause:t})}return n}function inferTimeZone(n,r){let i=r.timeZone??(n instanceof t.Temporal.ZonedDateTime?n.timeZoneId:void 0);return i||e.fail(`This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.`,e.TempoMissingTzError),validateTimeZone(i)}function inferSharedTimeZone(n,r){if(r.timeZone)return validateTimeZone(r.timeZone);let i;for(let r of n)r instanceof t.Temporal.ZonedDateTime&&(i?i!==r.timeZoneId&&e.fail(`Inputs use different time zones. Pass options.timeZone explicitly.`):i=r.timeZoneId);return i||e.fail(`This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.`,e.TempoMissingTzError),i}var n=new Set([`day`,`month`,`week`,`year`]);exports.CALENDAR_UNITS=n,exports.inferSharedTimeZone=inferSharedTimeZone,exports.inferTimeZone=inferTimeZone,exports.validateTimeZone=validateTimeZone;
|
|
2
2
|
//# sourceMappingURL=_tz.cjs.map
|
package/dist/_tz.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_tz.cjs","names":[],"sources":["../src/_tz.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { fail, TempoInvalidTzError, TempoMissingTzError } from './errors';\nimport type { CalendarUnit, TimeInput, TimeZoneOptions } from './types';\n\nexport function validateTimeZone(timeZone: string): string {\n try {\n Temporal.Instant.fromEpochMilliseconds(0).toZonedDateTimeISO(timeZone);\n } catch (error) {\n fail(\n `Unknown or invalid timezone: \"${timeZone}\". Expected an IANA timezone name or UTC offset.`,\n TempoInvalidTzError,\n { cause: error },\n );\n }\n\n return timeZone;\n}\n\nexport function inferTimeZone(input: TimeInput, options: TimeZoneOptions): string {\n const timeZone = options.timeZone ?? (input instanceof Temporal.ZonedDateTime ? input.timeZoneId : undefined);\n\n if (!timeZone) {\n fail(\n 'This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.',\n TempoMissingTzError,\n );\n }\n\n return validateTimeZone(timeZone);\n}\n\nexport function inferSharedTimeZone(inputs: readonly TimeInput[], options: TimeZoneOptions): string {\n if (options.timeZone) return validateTimeZone(options.timeZone);\n\n let inferred: string | undefined;\n\n for (const input of inputs) {\n if (!(input instanceof Temporal.ZonedDateTime)) continue;\n\n if (!inferred) inferred = input.timeZoneId;\n else if (inferred !== input.timeZoneId) {\n fail('Inputs use different time zones. Pass options.timeZone explicitly.');\n }\n }\n\n if (!inferred) {\n fail(\n 'This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.',\n TempoMissingTzError,\n );\n }\n\n return inferred;\n}\n\nexport const CALENDAR_UNITS = new Set<CalendarUnit>(['day', 'month', 'week', 'year']);\n"],"mappings":"uEAIA,SAAgB,
|
|
1
|
+
{"version":3,"file":"_tz.cjs","names":[],"sources":["../src/_tz.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { fail, TempoInvalidTzError, TempoMissingTzError } from './errors';\nimport type { CalendarUnit, TimeInput, TimeZoneOptions } from './types';\n\nexport function validateTimeZone(timeZone: string): string {\n try {\n Temporal.Instant.fromEpochMilliseconds(0).toZonedDateTimeISO(timeZone);\n } catch (error) {\n fail(\n `Unknown or invalid timezone: \"${timeZone}\". Expected an IANA timezone name or UTC offset.`,\n TempoInvalidTzError,\n { cause: error },\n );\n }\n\n return timeZone;\n}\n\nexport function inferTimeZone(input: TimeInput, options: TimeZoneOptions): string {\n const timeZone = options.timeZone ?? (input instanceof Temporal.ZonedDateTime ? input.timeZoneId : undefined);\n\n if (!timeZone) {\n fail(\n 'This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.',\n TempoMissingTzError,\n );\n }\n\n return validateTimeZone(timeZone);\n}\n\nexport function inferSharedTimeZone(inputs: readonly TimeInput[], options: TimeZoneOptions): string {\n if (options.timeZone) return validateTimeZone(options.timeZone);\n\n let inferred: string | undefined;\n\n for (const input of inputs) {\n if (!(input instanceof Temporal.ZonedDateTime)) continue;\n\n if (!inferred) inferred = input.timeZoneId;\n else if (inferred !== input.timeZoneId) {\n fail('Inputs use different time zones. Pass options.timeZone explicitly.');\n }\n }\n\n if (!inferred) {\n fail(\n 'This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.',\n TempoMissingTzError,\n );\n }\n\n return inferred;\n}\n\nexport const CALENDAR_UNITS = new Set<CalendarUnit>(['day', 'month', 'week', 'year']);\n"],"mappings":"uEAIA,SAAgB,iBAAiB,EAA0B,CACzD,GAAI,CACF,EAAA,SAAS,QAAQ,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,CAAQ,CACvE,OAAS,EAAO,CACd,EAAA,KACE,iCAAiC,EAAS,kDAC1C,EAAA,oBACA,CAAE,MAAO,CAAM,CACjB,CACF,CAEA,OAAO,CACT,CAEA,SAAgB,cAAc,EAAkB,EAAkC,CAChF,IAAM,EAAW,EAAQ,WAAa,aAAiB,EAAA,SAAS,cAAgB,EAAM,WAAa,IAAA,IASnG,OAPK,GACH,EAAA,KACE,0FACA,EAAA,mBACF,EAGK,iBAAiB,CAAQ,CAClC,CAEA,SAAgB,oBAAoB,EAA8B,EAAkC,CAClG,GAAI,EAAQ,SAAU,OAAO,iBAAiB,EAAQ,QAAQ,EAE9D,IAAI,EAEJ,IAAK,IAAM,KAAS,EACZ,aAAiB,EAAA,SAAS,gBAE3B,EACI,IAAa,EAAM,YAC1B,EAAA,KAAK,oEAAoE,EAF5D,EAAW,EAAM,YAalC,OAPK,GACH,EAAA,KACE,0FACA,EAAA,mBACF,EAGK,CACT,CAEA,IAAa,EAAiB,IAAI,IAAkB,CAAC,MAAO,QAAS,OAAQ,MAAM,CAAC"}
|
package/dist/_tz.js
CHANGED
|
@@ -1,31 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Temporal as r } from "@js-temporal/polyfill";
|
|
3
|
-
//#region src/_tz.ts
|
|
4
|
-
function i(t) {
|
|
5
|
-
try {
|
|
6
|
-
r.Instant.fromEpochMilliseconds(0).toZonedDateTimeISO(t);
|
|
7
|
-
} catch (r) {
|
|
8
|
-
n(`Unknown or invalid timezone: "${t}". Expected an IANA timezone name or UTC offset.`, e, { cause: r });
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
}
|
|
12
|
-
function a(e, a) {
|
|
13
|
-
let o = a.timeZone ?? (e instanceof r.ZonedDateTime ? e.timeZoneId : void 0);
|
|
14
|
-
return o || n("This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.", t), i(o);
|
|
15
|
-
}
|
|
16
|
-
function o(e, a) {
|
|
17
|
-
if (a.timeZone) return i(a.timeZone);
|
|
18
|
-
let o;
|
|
19
|
-
for (let t of e) t instanceof r.ZonedDateTime && (o ? o !== t.timeZoneId && n("Inputs use different time zones. Pass options.timeZone explicitly.") : o = t.timeZoneId);
|
|
20
|
-
return o || n("This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.", t), o;
|
|
21
|
-
}
|
|
22
|
-
var s = /* @__PURE__ */ new Set([
|
|
23
|
-
"day",
|
|
24
|
-
"month",
|
|
25
|
-
"week",
|
|
26
|
-
"year"
|
|
27
|
-
]);
|
|
28
|
-
//#endregion
|
|
29
|
-
export { s as CALENDAR_UNITS, o as inferSharedTimeZone, a as inferTimeZone, i as validateTimeZone };
|
|
30
|
-
|
|
1
|
+
import{TempoInvalidTzError as e,TempoMissingTzError as t,fail as n}from"./errors.js";import{Temporal as r}from"@js-temporal/polyfill";function validateTimeZone(t){try{r.Instant.fromEpochMilliseconds(0).toZonedDateTimeISO(t)}catch(r){n(`Unknown or invalid timezone: "${t}". Expected an IANA timezone name or UTC offset.`,e,{cause:r})}return t}function inferTimeZone(e,i){let a=i.timeZone??(e instanceof r.ZonedDateTime?e.timeZoneId:void 0);return a||n(`This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.`,t),validateTimeZone(a)}function inferSharedTimeZone(e,i){if(i.timeZone)return validateTimeZone(i.timeZone);let a;for(let t of e)t instanceof r.ZonedDateTime&&(a?a!==t.timeZoneId&&n(`Inputs use different time zones. Pass options.timeZone explicitly.`):a=t.timeZoneId);return a||n(`This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.`,t),a}var i=new Set([`day`,`month`,`week`,`year`]);export{i as CALENDAR_UNITS,inferSharedTimeZone,inferTimeZone,validateTimeZone};
|
|
31
2
|
//# sourceMappingURL=_tz.js.map
|
package/dist/_tz.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_tz.js","names":[],"sources":["../src/_tz.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { fail, TempoInvalidTzError, TempoMissingTzError } from './errors';\nimport type { CalendarUnit, TimeInput, TimeZoneOptions } from './types';\n\nexport function validateTimeZone(timeZone: string): string {\n try {\n Temporal.Instant.fromEpochMilliseconds(0).toZonedDateTimeISO(timeZone);\n } catch (error) {\n fail(\n `Unknown or invalid timezone: \"${timeZone}\". Expected an IANA timezone name or UTC offset.`,\n TempoInvalidTzError,\n { cause: error },\n );\n }\n\n return timeZone;\n}\n\nexport function inferTimeZone(input: TimeInput, options: TimeZoneOptions): string {\n const timeZone = options.timeZone ?? (input instanceof Temporal.ZonedDateTime ? input.timeZoneId : undefined);\n\n if (!timeZone) {\n fail(\n 'This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.',\n TempoMissingTzError,\n );\n }\n\n return validateTimeZone(timeZone);\n}\n\nexport function inferSharedTimeZone(inputs: readonly TimeInput[], options: TimeZoneOptions): string {\n if (options.timeZone) return validateTimeZone(options.timeZone);\n\n let inferred: string | undefined;\n\n for (const input of inputs) {\n if (!(input instanceof Temporal.ZonedDateTime)) continue;\n\n if (!inferred) inferred = input.timeZoneId;\n else if (inferred !== input.timeZoneId) {\n fail('Inputs use different time zones. Pass options.timeZone explicitly.');\n }\n }\n\n if (!inferred) {\n fail(\n 'This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.',\n TempoMissingTzError,\n );\n }\n\n return inferred;\n}\n\nexport const CALENDAR_UNITS = new Set<CalendarUnit>(['day', 'month', 'week', 'year']);\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"_tz.js","names":[],"sources":["../src/_tz.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { fail, TempoInvalidTzError, TempoMissingTzError } from './errors';\nimport type { CalendarUnit, TimeInput, TimeZoneOptions } from './types';\n\nexport function validateTimeZone(timeZone: string): string {\n try {\n Temporal.Instant.fromEpochMilliseconds(0).toZonedDateTimeISO(timeZone);\n } catch (error) {\n fail(\n `Unknown or invalid timezone: \"${timeZone}\". Expected an IANA timezone name or UTC offset.`,\n TempoInvalidTzError,\n { cause: error },\n );\n }\n\n return timeZone;\n}\n\nexport function inferTimeZone(input: TimeInput, options: TimeZoneOptions): string {\n const timeZone = options.timeZone ?? (input instanceof Temporal.ZonedDateTime ? input.timeZoneId : undefined);\n\n if (!timeZone) {\n fail(\n 'This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.',\n TempoMissingTzError,\n );\n }\n\n return validateTimeZone(timeZone);\n}\n\nexport function inferSharedTimeZone(inputs: readonly TimeInput[], options: TimeZoneOptions): string {\n if (options.timeZone) return validateTimeZone(options.timeZone);\n\n let inferred: string | undefined;\n\n for (const input of inputs) {\n if (!(input instanceof Temporal.ZonedDateTime)) continue;\n\n if (!inferred) inferred = input.timeZoneId;\n else if (inferred !== input.timeZoneId) {\n fail('Inputs use different time zones. Pass options.timeZone explicitly.');\n }\n }\n\n if (!inferred) {\n fail(\n 'This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.',\n TempoMissingTzError,\n );\n }\n\n return inferred;\n}\n\nexport const CALENDAR_UNITS = new Set<CalendarUnit>(['day', 'month', 'week', 'year']);\n"],"mappings":"sIAIA,SAAgB,iBAAiB,EAA0B,CACzD,GAAI,CACF,EAAS,QAAQ,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,CAAQ,CACvE,OAAS,EAAO,CACd,EACE,iCAAiC,EAAS,kDAC1C,EACA,CAAE,MAAO,CAAM,CACjB,CACF,CAEA,OAAO,CACT,CAEA,SAAgB,cAAc,EAAkB,EAAkC,CAChF,IAAM,EAAW,EAAQ,WAAa,aAAiB,EAAS,cAAgB,EAAM,WAAa,IAAA,IASnG,OAPK,GACH,EACE,0FACA,CACF,EAGK,iBAAiB,CAAQ,CAClC,CAEA,SAAgB,oBAAoB,EAA8B,EAAkC,CAClG,GAAI,EAAQ,SAAU,OAAO,iBAAiB,EAAQ,QAAQ,EAE9D,IAAI,EAEJ,IAAK,IAAM,KAAS,EACZ,aAAiB,EAAS,gBAE3B,EACI,IAAa,EAAM,YAC1B,EAAK,oEAAoE,EAF5D,EAAW,EAAM,YAalC,OAPK,GACH,EACE,0FACA,CACF,EAGK,CACT,CAEA,IAAa,EAAiB,IAAI,IAAkB,CAAC,MAAO,QAAS,OAAQ,MAAM,CAAC"}
|
package/dist/boundary.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./_tz.cjs"),t=require("./_floor.cjs");var n={day:{days:1},hour:{hours:1},minute:{minutes:1},month:{months:1},week:{weeks:1},year:{years:1}};function
|
|
1
|
+
const e=require("./_tz.cjs"),t=require("./_floor.cjs");var n={day:{days:1},hour:{hours:1},minute:{minutes:1},month:{months:1},week:{weeks:1},year:{years:1}};function startOf(n,r,i={}){let a=e.inferTimeZone(n,i);return t.floorToUnit(n,r,{timeZone:a,weekStartsOn:i.weekStartsOn}).toZonedDateTimeISO(a)}function endOf(r,i,a={}){let o=e.inferTimeZone(r,a);return t.floorToUnit(r,i,{timeZone:o,weekStartsOn:a.weekStartsOn}).toZonedDateTimeISO(o).add(n[i]).subtract({nanoseconds:1})}exports.endOf=endOf,exports.startOf=startOf;
|
|
2
2
|
//# sourceMappingURL=boundary.cjs.map
|
package/dist/boundary.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary.cjs","names":[],"sources":["../src/boundary.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { floorToUnit } from './_floor';\nimport { inferTimeZone } from './_tz';\nimport type { BoundaryOptions, BoundaryUnit, TimeInput } from './types';\n\nconst BOUNDARY_STEP: Record<BoundaryUnit, Temporal.DurationLike> = {\n day: { days: 1 },\n hour: { hours: 1 },\n minute: { minutes: 1 },\n month: { months: 1 },\n week: { weeks: 1 },\n year: { years: 1 },\n};\n\nexport function startOf(input: TimeInput, unit: BoundaryUnit, options: BoundaryOptions = {}): Temporal.ZonedDateTime {\n const timeZone = inferTimeZone(input, options);\n\n return floorToUnit(input, unit, { timeZone, weekStartsOn: options.weekStartsOn }).toZonedDateTimeISO(timeZone);\n}\n\nexport function endOf(input: TimeInput, unit: BoundaryUnit, options: BoundaryOptions = {}): Temporal.ZonedDateTime {\n const timeZone = inferTimeZone(input, options);\n const start = floorToUnit(input, unit, { timeZone, weekStartsOn: options.weekStartsOn });\n\n return start.toZonedDateTimeISO(timeZone).add(BOUNDARY_STEP[unit]).subtract({ nanoseconds: 1 });\n}\n"],"mappings":"uDAKA,IAAM,EAA6D,CACjE,IAAK,CAAE,KAAM,CAAE,EACf,KAAM,CAAE,MAAO,CAAE,EACjB,OAAQ,CAAE,QAAS,CAAE,EACrB,MAAO,CAAE,OAAQ,CAAE,EACnB,KAAM,CAAE,MAAO,CAAE,EACjB,KAAM,CAAE,MAAO,CAAE,CACnB,EAEA,SAAgB,
|
|
1
|
+
{"version":3,"file":"boundary.cjs","names":[],"sources":["../src/boundary.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { floorToUnit } from './_floor';\nimport { inferTimeZone } from './_tz';\nimport type { BoundaryOptions, BoundaryUnit, TimeInput } from './types';\n\nconst BOUNDARY_STEP: Record<BoundaryUnit, Temporal.DurationLike> = {\n day: { days: 1 },\n hour: { hours: 1 },\n minute: { minutes: 1 },\n month: { months: 1 },\n week: { weeks: 1 },\n year: { years: 1 },\n};\n\nexport function startOf(input: TimeInput, unit: BoundaryUnit, options: BoundaryOptions = {}): Temporal.ZonedDateTime {\n const timeZone = inferTimeZone(input, options);\n\n return floorToUnit(input, unit, { timeZone, weekStartsOn: options.weekStartsOn }).toZonedDateTimeISO(timeZone);\n}\n\nexport function endOf(input: TimeInput, unit: BoundaryUnit, options: BoundaryOptions = {}): Temporal.ZonedDateTime {\n const timeZone = inferTimeZone(input, options);\n const start = floorToUnit(input, unit, { timeZone, weekStartsOn: options.weekStartsOn });\n\n return start.toZonedDateTimeISO(timeZone).add(BOUNDARY_STEP[unit]).subtract({ nanoseconds: 1 });\n}\n"],"mappings":"uDAKA,IAAM,EAA6D,CACjE,IAAK,CAAE,KAAM,CAAE,EACf,KAAM,CAAE,MAAO,CAAE,EACjB,OAAQ,CAAE,QAAS,CAAE,EACrB,MAAO,CAAE,OAAQ,CAAE,EACnB,KAAM,CAAE,MAAO,CAAE,EACjB,KAAM,CAAE,MAAO,CAAE,CACnB,EAEA,SAAgB,QAAQ,EAAkB,EAAoB,EAA2B,CAAC,EAA2B,CACnH,IAAM,EAAW,EAAA,cAAc,EAAO,CAAO,EAE7C,OAAO,EAAA,YAAY,EAAO,EAAM,CAAE,WAAU,aAAc,EAAQ,YAAa,CAAC,CAAC,CAAC,mBAAmB,CAAQ,CAC/G,CAEA,SAAgB,MAAM,EAAkB,EAAoB,EAA2B,CAAC,EAA2B,CACjH,IAAM,EAAW,EAAA,cAAc,EAAO,CAAO,EAG7C,OAFc,EAAA,YAAY,EAAO,EAAM,CAAE,WAAU,aAAc,EAAQ,YAAa,CAE/E,CAAA,CAAM,mBAAmB,CAAQ,CAAC,CAAC,IAAI,EAAc,EAAK,CAAC,CAAC,SAAS,CAAE,YAAa,CAAE,CAAC,CAChG"}
|
package/dist/boundary.js
CHANGED
|
@@ -1,29 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { floorToUnit as t } from "./_floor.js";
|
|
3
|
-
//#region src/boundary.ts
|
|
4
|
-
var n = {
|
|
5
|
-
day: { days: 1 },
|
|
6
|
-
hour: { hours: 1 },
|
|
7
|
-
minute: { minutes: 1 },
|
|
8
|
-
month: { months: 1 },
|
|
9
|
-
week: { weeks: 1 },
|
|
10
|
-
year: { years: 1 }
|
|
11
|
-
};
|
|
12
|
-
function r(n, r, i = {}) {
|
|
13
|
-
let a = e(n, i);
|
|
14
|
-
return t(n, r, {
|
|
15
|
-
timeZone: a,
|
|
16
|
-
weekStartsOn: i.weekStartsOn
|
|
17
|
-
}).toZonedDateTimeISO(a);
|
|
18
|
-
}
|
|
19
|
-
function i(r, i, a = {}) {
|
|
20
|
-
let o = e(r, a);
|
|
21
|
-
return t(r, i, {
|
|
22
|
-
timeZone: o,
|
|
23
|
-
weekStartsOn: a.weekStartsOn
|
|
24
|
-
}).toZonedDateTimeISO(o).add(n[i]).subtract({ nanoseconds: 1 });
|
|
25
|
-
}
|
|
26
|
-
//#endregion
|
|
27
|
-
export { i as endOf, r as startOf };
|
|
28
|
-
|
|
1
|
+
import{inferTimeZone as e}from"./_tz.js";import{floorToUnit as t}from"./_floor.js";var n={day:{days:1},hour:{hours:1},minute:{minutes:1},month:{months:1},week:{weeks:1},year:{years:1}};function startOf(n,r,i={}){let a=e(n,i);return t(n,r,{timeZone:a,weekStartsOn:i.weekStartsOn}).toZonedDateTimeISO(a)}function endOf(r,i,a={}){let o=e(r,a);return t(r,i,{timeZone:o,weekStartsOn:a.weekStartsOn}).toZonedDateTimeISO(o).add(n[i]).subtract({nanoseconds:1})}export{endOf,startOf};
|
|
29
2
|
//# sourceMappingURL=boundary.js.map
|
package/dist/boundary.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary.js","names":[],"sources":["../src/boundary.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { floorToUnit } from './_floor';\nimport { inferTimeZone } from './_tz';\nimport type { BoundaryOptions, BoundaryUnit, TimeInput } from './types';\n\nconst BOUNDARY_STEP: Record<BoundaryUnit, Temporal.DurationLike> = {\n day: { days: 1 },\n hour: { hours: 1 },\n minute: { minutes: 1 },\n month: { months: 1 },\n week: { weeks: 1 },\n year: { years: 1 },\n};\n\nexport function startOf(input: TimeInput, unit: BoundaryUnit, options: BoundaryOptions = {}): Temporal.ZonedDateTime {\n const timeZone = inferTimeZone(input, options);\n\n return floorToUnit(input, unit, { timeZone, weekStartsOn: options.weekStartsOn }).toZonedDateTimeISO(timeZone);\n}\n\nexport function endOf(input: TimeInput, unit: BoundaryUnit, options: BoundaryOptions = {}): Temporal.ZonedDateTime {\n const timeZone = inferTimeZone(input, options);\n const start = floorToUnit(input, unit, { timeZone, weekStartsOn: options.weekStartsOn });\n\n return start.toZonedDateTimeISO(timeZone).add(BOUNDARY_STEP[unit]).subtract({ nanoseconds: 1 });\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"boundary.js","names":[],"sources":["../src/boundary.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { floorToUnit } from './_floor';\nimport { inferTimeZone } from './_tz';\nimport type { BoundaryOptions, BoundaryUnit, TimeInput } from './types';\n\nconst BOUNDARY_STEP: Record<BoundaryUnit, Temporal.DurationLike> = {\n day: { days: 1 },\n hour: { hours: 1 },\n minute: { minutes: 1 },\n month: { months: 1 },\n week: { weeks: 1 },\n year: { years: 1 },\n};\n\nexport function startOf(input: TimeInput, unit: BoundaryUnit, options: BoundaryOptions = {}): Temporal.ZonedDateTime {\n const timeZone = inferTimeZone(input, options);\n\n return floorToUnit(input, unit, { timeZone, weekStartsOn: options.weekStartsOn }).toZonedDateTimeISO(timeZone);\n}\n\nexport function endOf(input: TimeInput, unit: BoundaryUnit, options: BoundaryOptions = {}): Temporal.ZonedDateTime {\n const timeZone = inferTimeZone(input, options);\n const start = floorToUnit(input, unit, { timeZone, weekStartsOn: options.weekStartsOn });\n\n return start.toZonedDateTimeISO(timeZone).add(BOUNDARY_STEP[unit]).subtract({ nanoseconds: 1 });\n}\n"],"mappings":"mFAKA,IAAM,EAA6D,CACjE,IAAK,CAAE,KAAM,CAAE,EACf,KAAM,CAAE,MAAO,CAAE,EACjB,OAAQ,CAAE,QAAS,CAAE,EACrB,MAAO,CAAE,OAAQ,CAAE,EACnB,KAAM,CAAE,MAAO,CAAE,EACjB,KAAM,CAAE,MAAO,CAAE,CACnB,EAEA,SAAgB,QAAQ,EAAkB,EAAoB,EAA2B,CAAC,EAA2B,CACnH,IAAM,EAAW,EAAc,EAAO,CAAO,EAE7C,OAAO,EAAY,EAAO,EAAM,CAAE,WAAU,aAAc,EAAQ,YAAa,CAAC,CAAC,CAAC,mBAAmB,CAAQ,CAC/G,CAEA,SAAgB,MAAM,EAAkB,EAAoB,EAA2B,CAAC,EAA2B,CACjH,IAAM,EAAW,EAAc,EAAO,CAAO,EAG7C,OAFc,EAAY,EAAO,EAAM,CAAE,WAAU,aAAc,EAAQ,YAAa,CAE/E,CAAA,CAAM,mBAAmB,CAAQ,CAAC,CAAC,IAAI,EAAc,EAAK,CAAC,CAAC,SAAS,CAAE,YAAa,CAAE,CAAC,CAChG"}
|
package/dist/classify.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./errors.cjs"),t=require("./_tz.cjs"),n=require("./_convert.cjs");let r=require("@js-temporal/polyfill");var i={day:864e5,hour:36e5,microsecond:1/1e3,millisecond:1,minute:6e4,nanosecond:1/1e6,second:1e3,week:6048e5},a=[{field:`years`,unit:`year`},{field:`months`,unit:`month`},{field:`weeks`,unit:`week`},{field:`days`,unit:`day`},{field:`hours`,unit:`hour`},{field:`minutes`,unit:`minute`},{field:`seconds`,unit:`second`},{field:`milliseconds`,unit:`millisecond`}];function
|
|
1
|
+
const e=require("./errors.cjs"),t=require("./_tz.cjs"),n=require("./_convert.cjs");let r=require("@js-temporal/polyfill");var i={day:864e5,hour:36e5,microsecond:1/1e3,millisecond:1,minute:6e4,nanosecond:1/1e6,second:1e3,week:6048e5},a=[{field:`years`,unit:`year`},{field:`months`,unit:`month`},{field:`weeks`,unit:`week`},{field:`days`,unit:`day`},{field:`hours`,unit:`hour`},{field:`minutes`,unit:`minute`},{field:`seconds`,unit:`second`},{field:`milliseconds`,unit:`millisecond`}];function fixedDurationToMilliseconds(t){let n=r.Temporal.Duration.from(t);if(n.years||n.months)throw new e.TempoInvalidInputError(`classifyExpiry thresholds cannot contain months or years. Use fixed elapsed-time units.`);return n.weeks*i.week+n.days*i.day+n.hours*i.hour+n.minutes*i.minute+n.seconds*i.second+n.milliseconds+n.microseconds*i.microsecond+n.nanoseconds*i.nanosecond}function classifyExpiry(e){let t=e.relativeTo??r.Temporal.Now.instant(),i=n.toInstant(e.value,e).epochMilliseconds-t.epochMilliseconds;return Object.entries(e.thresholds).map(([e,t])=>({key:e,max:fixedDurationToMilliseconds(t)})).sort((e,t)=>e.max-t.max).find(({max:e})=>i<=e)?.key??null}function pickLargestUnit(e){for(let{field:t,unit:n}of a){let r=Math.abs(e[t]);if(r>0)return{unit:n,value:r}}return{unit:`millisecond`,value:0}}function timeDiff(e,i=r.Temporal.Now.instant(),a={}){if(!a.timeZone&&e instanceof r.Temporal.Instant&&i instanceof r.Temporal.Instant){let t=e.toZonedDateTimeISO(`UTC`),n=i.toZonedDateTimeISO(`UTC`);return pickLargestUnit(r.Temporal.ZonedDateTime.compare(t,n)<=0?n.since(t,{largestUnit:`year`}):t.since(n,{largestUnit:`year`}))}let o=t.inferSharedTimeZone([e,i],a),s=n.toZoned(e,{timeZone:o}),c=n.toZoned(i,{timeZone:o});return pickLargestUnit(r.Temporal.ZonedDateTime.compare(s,c)<=0?c.since(s,{largestUnit:`year`}):s.since(c,{largestUnit:`year`}))}exports.classifyExpiry=classifyExpiry,exports.timeDiff=timeDiff;
|
|
2
2
|
//# sourceMappingURL=classify.cjs.map
|
package/dist/classify.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classify.cjs","names":[],"sources":["../src/classify.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { toInstant, toZoned } from './_convert';\nimport { inferSharedTimeZone } from './_tz';\nimport { TempoInvalidInputError } from './errors';\nimport type {\n ClassifyExpiryInput,\n FixedDuration,\n TimeDiffResult,\n TimeDiffUnit,\n TimeInput,\n TimeZoneOptions,\n} from './types';\n\nconst MILLIS = {\n day: 86_400_000,\n hour: 3_600_000,\n microsecond: 1 / 1_000,\n millisecond: 1,\n minute: 60_000,\n nanosecond: 1 / 1_000_000,\n second: 1_000,\n week: 604_800_000,\n} as const;\nconst UNIT_ORDER: ReadonlyArray<{ field: keyof Temporal.Duration; unit: TimeDiffUnit }> = [\n { field: 'years', unit: 'year' },\n { field: 'months', unit: 'month' },\n { field: 'weeks', unit: 'week' },\n { field: 'days', unit: 'day' },\n { field: 'hours', unit: 'hour' },\n { field: 'minutes', unit: 'minute' },\n { field: 'seconds', unit: 'second' },\n { field: 'milliseconds', unit: 'millisecond' },\n];\n\n// Expiry classification is elapsed-time math. Calendar months and years are rejected rather than approximated.\nfunction fixedDurationToMilliseconds(input: FixedDuration): number {\n const duration = Temporal.Duration.from(input);\n\n if (duration.years || duration.months) {\n throw new TempoInvalidInputError(\n 'classifyExpiry thresholds cannot contain months or years. Use fixed elapsed-time units.',\n );\n }\n\n return (\n duration.weeks * MILLIS.week +\n duration.days * MILLIS.day +\n duration.hours * MILLIS.hour +\n duration.minutes * MILLIS.minute +\n duration.seconds * MILLIS.second +\n duration.milliseconds +\n duration.microseconds * MILLIS.microsecond +\n duration.nanoseconds * MILLIS.nanosecond\n );\n}\n\nexport function classifyExpiry<K extends string>(input: ClassifyExpiryInput<K>): K | null {\n const reference = input.relativeTo ?? Temporal.Now.instant();\n const value = toInstant(input.value, input);\n const elapsed = value.epochMilliseconds - reference.epochMilliseconds;\n const thresholds = (Object.entries(input.thresholds) as Array<[K, FixedDuration]>)\n .map(([key, duration]) => ({ key, max: fixedDurationToMilliseconds(duration) }))\n .sort((left, right) => left.max - right.max);\n\n return thresholds.find(({ max }) => elapsed <= max)?.key ?? null;\n}\n\nfunction pickLargestUnit(duration: Temporal.Duration): TimeDiffResult {\n for (const { field, unit } of UNIT_ORDER) {\n const value = Math.abs(duration[field] as number);\n\n if (value > 0) return { unit, value };\n }\n\n return { unit: 'millisecond', value: 0 };\n}\n\nexport function timeDiff(\n a: TimeInput,\n b: TimeInput = Temporal.Now.instant(),\n options: TimeZoneOptions = {},\n): TimeDiffResult {\n if (!options.timeZone && a instanceof Temporal.Instant && b instanceof Temporal.Instant) {\n const left = a.toZonedDateTimeISO('UTC');\n const right = b.toZonedDateTimeISO('UTC');\n\n return pickLargestUnit(\n Temporal.ZonedDateTime.compare(left, right) <= 0\n ? right.since(left, { largestUnit: 'year' })\n : left.since(right, { largestUnit: 'year' }),\n );\n }\n\n const timeZone = inferSharedTimeZone([a, b], options);\n const left = toZoned(a, { timeZone });\n const right = toZoned(b, { timeZone });\n\n return pickLargestUnit(\n Temporal.ZonedDateTime.compare(left, right) <= 0\n ? right.since(left, { largestUnit: 'year' })\n : left.since(right, { largestUnit: 'year' }),\n );\n}\n"],"mappings":"0HAaA,IAAM,EAAS,CACb,IAAK,MACL,KAAM,KACN,YAAa,EAAI,IACjB,YAAa,EACb,OAAQ,IACR,WAAY,EAAI,IAChB,OAAQ,IACR,KAAM,MACR,EACM,EAAoF,CACxF,CAAE,MAAO,QAAS,KAAM,MAAO,EAC/B,CAAE,MAAO,SAAU,KAAM,OAAQ,EACjC,CAAE,MAAO,QAAS,KAAM,MAAO,EAC/B,CAAE,MAAO,OAAQ,KAAM,KAAM,EAC7B,CAAE,MAAO,QAAS,KAAM,MAAO,EAC/B,CAAE,MAAO,UAAW,KAAM,QAAS,EACnC,CAAE,MAAO,UAAW,KAAM,QAAS,EACnC,CAAE,MAAO,eAAgB,KAAM,aAAc,CAC/C,EAGA,SAAS,
|
|
1
|
+
{"version":3,"file":"classify.cjs","names":[],"sources":["../src/classify.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { toInstant, toZoned } from './_convert';\nimport { inferSharedTimeZone } from './_tz';\nimport { TempoInvalidInputError } from './errors';\nimport type {\n ClassifyExpiryInput,\n FixedDuration,\n TimeDiffResult,\n TimeDiffUnit,\n TimeInput,\n TimeZoneOptions,\n} from './types';\n\nconst MILLIS = {\n day: 86_400_000,\n hour: 3_600_000,\n microsecond: 1 / 1_000,\n millisecond: 1,\n minute: 60_000,\n nanosecond: 1 / 1_000_000,\n second: 1_000,\n week: 604_800_000,\n} as const;\nconst UNIT_ORDER: ReadonlyArray<{ field: keyof Temporal.Duration; unit: TimeDiffUnit }> = [\n { field: 'years', unit: 'year' },\n { field: 'months', unit: 'month' },\n { field: 'weeks', unit: 'week' },\n { field: 'days', unit: 'day' },\n { field: 'hours', unit: 'hour' },\n { field: 'minutes', unit: 'minute' },\n { field: 'seconds', unit: 'second' },\n { field: 'milliseconds', unit: 'millisecond' },\n];\n\n// Expiry classification is elapsed-time math. Calendar months and years are rejected rather than approximated.\nfunction fixedDurationToMilliseconds(input: FixedDuration): number {\n const duration = Temporal.Duration.from(input);\n\n if (duration.years || duration.months) {\n throw new TempoInvalidInputError(\n 'classifyExpiry thresholds cannot contain months or years. Use fixed elapsed-time units.',\n );\n }\n\n // Fixed-length units only (months/years rejected above), so the sum is exact\n // without a relativeTo reference — Duration.total() would need a magic base date.\n return (\n duration.weeks * MILLIS.week +\n duration.days * MILLIS.day +\n duration.hours * MILLIS.hour +\n duration.minutes * MILLIS.minute +\n duration.seconds * MILLIS.second +\n duration.milliseconds +\n duration.microseconds * MILLIS.microsecond +\n duration.nanoseconds * MILLIS.nanosecond\n );\n}\n\nexport function classifyExpiry<K extends string>(input: ClassifyExpiryInput<K>): K | null {\n const reference = input.relativeTo ?? Temporal.Now.instant();\n const value = toInstant(input.value, input);\n const elapsed = value.epochMilliseconds - reference.epochMilliseconds;\n const thresholds = (Object.entries(input.thresholds) as Array<[K, FixedDuration]>)\n .map(([key, duration]) => ({ key, max: fixedDurationToMilliseconds(duration) }))\n .sort((left, right) => left.max - right.max);\n\n return thresholds.find(({ max }) => elapsed <= max)?.key ?? null;\n}\n\nfunction pickLargestUnit(duration: Temporal.Duration): TimeDiffResult {\n for (const { field, unit } of UNIT_ORDER) {\n const value = Math.abs(duration[field] as number);\n\n if (value > 0) return { unit, value };\n }\n\n return { unit: 'millisecond', value: 0 };\n}\n\nexport function timeDiff(\n a: TimeInput,\n b: TimeInput = Temporal.Now.instant(),\n options: TimeZoneOptions = {},\n): TimeDiffResult {\n if (!options.timeZone && a instanceof Temporal.Instant && b instanceof Temporal.Instant) {\n const left = a.toZonedDateTimeISO('UTC');\n const right = b.toZonedDateTimeISO('UTC');\n\n return pickLargestUnit(\n Temporal.ZonedDateTime.compare(left, right) <= 0\n ? right.since(left, { largestUnit: 'year' })\n : left.since(right, { largestUnit: 'year' }),\n );\n }\n\n const timeZone = inferSharedTimeZone([a, b], options);\n const left = toZoned(a, { timeZone });\n const right = toZoned(b, { timeZone });\n\n return pickLargestUnit(\n Temporal.ZonedDateTime.compare(left, right) <= 0\n ? right.since(left, { largestUnit: 'year' })\n : left.since(right, { largestUnit: 'year' }),\n );\n}\n"],"mappings":"0HAaA,IAAM,EAAS,CACb,IAAK,MACL,KAAM,KACN,YAAa,EAAI,IACjB,YAAa,EACb,OAAQ,IACR,WAAY,EAAI,IAChB,OAAQ,IACR,KAAM,MACR,EACM,EAAoF,CACxF,CAAE,MAAO,QAAS,KAAM,MAAO,EAC/B,CAAE,MAAO,SAAU,KAAM,OAAQ,EACjC,CAAE,MAAO,QAAS,KAAM,MAAO,EAC/B,CAAE,MAAO,OAAQ,KAAM,KAAM,EAC7B,CAAE,MAAO,QAAS,KAAM,MAAO,EAC/B,CAAE,MAAO,UAAW,KAAM,QAAS,EACnC,CAAE,MAAO,UAAW,KAAM,QAAS,EACnC,CAAE,MAAO,eAAgB,KAAM,aAAc,CAC/C,EAGA,SAAS,4BAA4B,EAA8B,CACjE,IAAM,EAAW,EAAA,SAAS,SAAS,KAAK,CAAK,EAE7C,GAAI,EAAS,OAAS,EAAS,OAC7B,MAAM,IAAI,EAAA,uBACR,yFACF,EAKF,OACE,EAAS,MAAQ,EAAO,KACxB,EAAS,KAAO,EAAO,IACvB,EAAS,MAAQ,EAAO,KACxB,EAAS,QAAU,EAAO,OAC1B,EAAS,QAAU,EAAO,OAC1B,EAAS,aACT,EAAS,aAAe,EAAO,YAC/B,EAAS,YAAc,EAAO,UAElC,CAEA,SAAgB,eAAiC,EAAyC,CACxF,IAAM,EAAY,EAAM,YAAc,EAAA,SAAS,IAAI,QAAQ,EAErD,EADQ,EAAA,UAAU,EAAM,MAAO,CACrB,CAAA,CAAM,kBAAoB,EAAU,kBAKpD,OAJoB,OAAO,QAAQ,EAAM,UAAU,CAAC,CACjD,KAAK,CAAC,EAAK,MAAe,CAAE,MAAK,IAAK,4BAA4B,CAAQ,CAAE,EAAE,CAAC,CAC/E,MAAM,EAAM,IAAU,EAAK,IAAM,EAAM,GAEnC,CAAA,CAAW,MAAM,CAAE,SAAU,GAAW,CAAG,CAAC,EAAE,KAAO,IAC9D,CAEA,SAAS,gBAAgB,EAA6C,CACpE,IAAK,GAAM,CAAE,QAAO,UAAU,EAAY,CACxC,IAAM,EAAQ,KAAK,IAAI,EAAS,EAAgB,EAEhD,GAAI,EAAQ,EAAG,MAAO,CAAE,OAAM,OAAM,CACtC,CAEA,MAAO,CAAE,KAAM,cAAe,MAAO,CAAE,CACzC,CAEA,SAAgB,SACd,EACA,EAAe,EAAA,SAAS,IAAI,QAAQ,EACpC,EAA2B,CAAC,EACZ,CAChB,GAAI,CAAC,EAAQ,UAAY,aAAa,EAAA,SAAS,SAAW,aAAa,EAAA,SAAS,QAAS,CACvF,IAAM,EAAO,EAAE,mBAAmB,KAAK,EACjC,EAAQ,EAAE,mBAAmB,KAAK,EAExC,OAAO,gBACL,EAAA,SAAS,cAAc,QAAQ,EAAM,CAAK,GAAK,EAC3C,EAAM,MAAM,EAAM,CAAE,YAAa,MAAO,CAAC,EACzC,EAAK,MAAM,EAAO,CAAE,YAAa,MAAO,CAAC,CAC/C,CACF,CAEA,IAAM,EAAW,EAAA,oBAAoB,CAAC,EAAG,CAAC,EAAG,CAAO,EAC9C,EAAO,EAAA,QAAQ,EAAG,CAAE,UAAS,CAAC,EAC9B,EAAQ,EAAA,QAAQ,EAAG,CAAE,UAAS,CAAC,EAErC,OAAO,gBACL,EAAA,SAAS,cAAc,QAAQ,EAAM,CAAK,GAAK,EAC3C,EAAM,MAAM,EAAM,CAAE,YAAa,MAAO,CAAC,EACzC,EAAK,MAAM,EAAO,CAAE,YAAa,MAAO,CAAC,CAC/C,CACF"}
|
package/dist/classify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../src/classify.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,mBAAmB,EAEnB,cAAc,EAEd,SAAS,EACT,eAAe,EAChB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../src/classify.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,mBAAmB,EAEnB,cAAc,EAEd,SAAS,EACT,eAAe,EAChB,MAAM,SAAS,CAAC;AA+CjB,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CASxF;AAYD,wBAAgB,QAAQ,CACtB,CAAC,EAAE,SAAS,EACZ,CAAC,GAAE,SAAkC,EACrC,OAAO,GAAE,eAAoB,GAC5B,cAAc,CAqBhB"}
|
package/dist/classify.js
CHANGED
|
@@ -1,85 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { inferSharedTimeZone as t } from "./_tz.js";
|
|
3
|
-
import { toInstant as n, toZoned as r } from "./_convert.js";
|
|
4
|
-
import { Temporal as i } from "@js-temporal/polyfill";
|
|
5
|
-
//#region src/classify.ts
|
|
6
|
-
var a = {
|
|
7
|
-
day: 864e5,
|
|
8
|
-
hour: 36e5,
|
|
9
|
-
microsecond: 1 / 1e3,
|
|
10
|
-
millisecond: 1,
|
|
11
|
-
minute: 6e4,
|
|
12
|
-
nanosecond: 1 / 1e6,
|
|
13
|
-
second: 1e3,
|
|
14
|
-
week: 6048e5
|
|
15
|
-
}, o = [
|
|
16
|
-
{
|
|
17
|
-
field: "years",
|
|
18
|
-
unit: "year"
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
field: "months",
|
|
22
|
-
unit: "month"
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
field: "weeks",
|
|
26
|
-
unit: "week"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
field: "days",
|
|
30
|
-
unit: "day"
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
field: "hours",
|
|
34
|
-
unit: "hour"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
field: "minutes",
|
|
38
|
-
unit: "minute"
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
field: "seconds",
|
|
42
|
-
unit: "second"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
field: "milliseconds",
|
|
46
|
-
unit: "millisecond"
|
|
47
|
-
}
|
|
48
|
-
];
|
|
49
|
-
function s(t) {
|
|
50
|
-
let n = i.Duration.from(t);
|
|
51
|
-
if (n.years || n.months) throw new e("classifyExpiry thresholds cannot contain months or years. Use fixed elapsed-time units.");
|
|
52
|
-
return n.weeks * a.week + n.days * a.day + n.hours * a.hour + n.minutes * a.minute + n.seconds * a.second + n.milliseconds + n.microseconds * a.microsecond + n.nanoseconds * a.nanosecond;
|
|
53
|
-
}
|
|
54
|
-
function c(e) {
|
|
55
|
-
let t = e.relativeTo ?? i.Now.instant(), r = n(e.value, e).epochMilliseconds - t.epochMilliseconds;
|
|
56
|
-
return Object.entries(e.thresholds).map(([e, t]) => ({
|
|
57
|
-
key: e,
|
|
58
|
-
max: s(t)
|
|
59
|
-
})).sort((e, t) => e.max - t.max).find(({ max: e }) => r <= e)?.key ?? null;
|
|
60
|
-
}
|
|
61
|
-
function l(e) {
|
|
62
|
-
for (let { field: t, unit: n } of o) {
|
|
63
|
-
let r = Math.abs(e[t]);
|
|
64
|
-
if (r > 0) return {
|
|
65
|
-
unit: n,
|
|
66
|
-
value: r
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
return {
|
|
70
|
-
unit: "millisecond",
|
|
71
|
-
value: 0
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
function u(e, n = i.Now.instant(), a = {}) {
|
|
75
|
-
if (!a.timeZone && e instanceof i.Instant && n instanceof i.Instant) {
|
|
76
|
-
let t = e.toZonedDateTimeISO("UTC"), r = n.toZonedDateTimeISO("UTC");
|
|
77
|
-
return l(i.ZonedDateTime.compare(t, r) <= 0 ? r.since(t, { largestUnit: "year" }) : t.since(r, { largestUnit: "year" }));
|
|
78
|
-
}
|
|
79
|
-
let o = t([e, n], a), s = r(e, { timeZone: o }), c = r(n, { timeZone: o });
|
|
80
|
-
return l(i.ZonedDateTime.compare(s, c) <= 0 ? c.since(s, { largestUnit: "year" }) : s.since(c, { largestUnit: "year" }));
|
|
81
|
-
}
|
|
82
|
-
//#endregion
|
|
83
|
-
export { c as classifyExpiry, u as timeDiff };
|
|
84
|
-
|
|
1
|
+
import{TempoInvalidInputError as e}from"./errors.js";import{inferSharedTimeZone as t}from"./_tz.js";import{toInstant as n,toZoned as r}from"./_convert.js";import{Temporal as i}from"@js-temporal/polyfill";var a={day:864e5,hour:36e5,microsecond:1/1e3,millisecond:1,minute:6e4,nanosecond:1/1e6,second:1e3,week:6048e5},o=[{field:`years`,unit:`year`},{field:`months`,unit:`month`},{field:`weeks`,unit:`week`},{field:`days`,unit:`day`},{field:`hours`,unit:`hour`},{field:`minutes`,unit:`minute`},{field:`seconds`,unit:`second`},{field:`milliseconds`,unit:`millisecond`}];function fixedDurationToMilliseconds(t){let n=i.Duration.from(t);if(n.years||n.months)throw new e(`classifyExpiry thresholds cannot contain months or years. Use fixed elapsed-time units.`);return n.weeks*a.week+n.days*a.day+n.hours*a.hour+n.minutes*a.minute+n.seconds*a.second+n.milliseconds+n.microseconds*a.microsecond+n.nanoseconds*a.nanosecond}function classifyExpiry(e){let t=e.relativeTo??i.Now.instant(),r=n(e.value,e).epochMilliseconds-t.epochMilliseconds;return Object.entries(e.thresholds).map(([e,t])=>({key:e,max:fixedDurationToMilliseconds(t)})).sort((e,t)=>e.max-t.max).find(({max:e})=>r<=e)?.key??null}function pickLargestUnit(e){for(let{field:t,unit:n}of o){let r=Math.abs(e[t]);if(r>0)return{unit:n,value:r}}return{unit:`millisecond`,value:0}}function timeDiff(e,n=i.Now.instant(),a={}){if(!a.timeZone&&e instanceof i.Instant&&n instanceof i.Instant){let t=e.toZonedDateTimeISO(`UTC`),r=n.toZonedDateTimeISO(`UTC`);return pickLargestUnit(i.ZonedDateTime.compare(t,r)<=0?r.since(t,{largestUnit:`year`}):t.since(r,{largestUnit:`year`}))}let o=t([e,n],a),s=r(e,{timeZone:o}),c=r(n,{timeZone:o});return pickLargestUnit(i.ZonedDateTime.compare(s,c)<=0?c.since(s,{largestUnit:`year`}):s.since(c,{largestUnit:`year`}))}export{classifyExpiry,timeDiff};
|
|
85
2
|
//# sourceMappingURL=classify.js.map
|
package/dist/classify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classify.js","names":[],"sources":["../src/classify.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { toInstant, toZoned } from './_convert';\nimport { inferSharedTimeZone } from './_tz';\nimport { TempoInvalidInputError } from './errors';\nimport type {\n ClassifyExpiryInput,\n FixedDuration,\n TimeDiffResult,\n TimeDiffUnit,\n TimeInput,\n TimeZoneOptions,\n} from './types';\n\nconst MILLIS = {\n day: 86_400_000,\n hour: 3_600_000,\n microsecond: 1 / 1_000,\n millisecond: 1,\n minute: 60_000,\n nanosecond: 1 / 1_000_000,\n second: 1_000,\n week: 604_800_000,\n} as const;\nconst UNIT_ORDER: ReadonlyArray<{ field: keyof Temporal.Duration; unit: TimeDiffUnit }> = [\n { field: 'years', unit: 'year' },\n { field: 'months', unit: 'month' },\n { field: 'weeks', unit: 'week' },\n { field: 'days', unit: 'day' },\n { field: 'hours', unit: 'hour' },\n { field: 'minutes', unit: 'minute' },\n { field: 'seconds', unit: 'second' },\n { field: 'milliseconds', unit: 'millisecond' },\n];\n\n// Expiry classification is elapsed-time math. Calendar months and years are rejected rather than approximated.\nfunction fixedDurationToMilliseconds(input: FixedDuration): number {\n const duration = Temporal.Duration.from(input);\n\n if (duration.years || duration.months) {\n throw new TempoInvalidInputError(\n 'classifyExpiry thresholds cannot contain months or years. Use fixed elapsed-time units.',\n );\n }\n\n return (\n duration.weeks * MILLIS.week +\n duration.days * MILLIS.day +\n duration.hours * MILLIS.hour +\n duration.minutes * MILLIS.minute +\n duration.seconds * MILLIS.second +\n duration.milliseconds +\n duration.microseconds * MILLIS.microsecond +\n duration.nanoseconds * MILLIS.nanosecond\n );\n}\n\nexport function classifyExpiry<K extends string>(input: ClassifyExpiryInput<K>): K | null {\n const reference = input.relativeTo ?? Temporal.Now.instant();\n const value = toInstant(input.value, input);\n const elapsed = value.epochMilliseconds - reference.epochMilliseconds;\n const thresholds = (Object.entries(input.thresholds) as Array<[K, FixedDuration]>)\n .map(([key, duration]) => ({ key, max: fixedDurationToMilliseconds(duration) }))\n .sort((left, right) => left.max - right.max);\n\n return thresholds.find(({ max }) => elapsed <= max)?.key ?? null;\n}\n\nfunction pickLargestUnit(duration: Temporal.Duration): TimeDiffResult {\n for (const { field, unit } of UNIT_ORDER) {\n const value = Math.abs(duration[field] as number);\n\n if (value > 0) return { unit, value };\n }\n\n return { unit: 'millisecond', value: 0 };\n}\n\nexport function timeDiff(\n a: TimeInput,\n b: TimeInput = Temporal.Now.instant(),\n options: TimeZoneOptions = {},\n): TimeDiffResult {\n if (!options.timeZone && a instanceof Temporal.Instant && b instanceof Temporal.Instant) {\n const left = a.toZonedDateTimeISO('UTC');\n const right = b.toZonedDateTimeISO('UTC');\n\n return pickLargestUnit(\n Temporal.ZonedDateTime.compare(left, right) <= 0\n ? right.since(left, { largestUnit: 'year' })\n : left.since(right, { largestUnit: 'year' }),\n );\n }\n\n const timeZone = inferSharedTimeZone([a, b], options);\n const left = toZoned(a, { timeZone });\n const right = toZoned(b, { timeZone });\n\n return pickLargestUnit(\n Temporal.ZonedDateTime.compare(left, right) <= 0\n ? right.since(left, { largestUnit: 'year' })\n : left.since(right, { largestUnit: 'year' }),\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"classify.js","names":[],"sources":["../src/classify.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { toInstant, toZoned } from './_convert';\nimport { inferSharedTimeZone } from './_tz';\nimport { TempoInvalidInputError } from './errors';\nimport type {\n ClassifyExpiryInput,\n FixedDuration,\n TimeDiffResult,\n TimeDiffUnit,\n TimeInput,\n TimeZoneOptions,\n} from './types';\n\nconst MILLIS = {\n day: 86_400_000,\n hour: 3_600_000,\n microsecond: 1 / 1_000,\n millisecond: 1,\n minute: 60_000,\n nanosecond: 1 / 1_000_000,\n second: 1_000,\n week: 604_800_000,\n} as const;\nconst UNIT_ORDER: ReadonlyArray<{ field: keyof Temporal.Duration; unit: TimeDiffUnit }> = [\n { field: 'years', unit: 'year' },\n { field: 'months', unit: 'month' },\n { field: 'weeks', unit: 'week' },\n { field: 'days', unit: 'day' },\n { field: 'hours', unit: 'hour' },\n { field: 'minutes', unit: 'minute' },\n { field: 'seconds', unit: 'second' },\n { field: 'milliseconds', unit: 'millisecond' },\n];\n\n// Expiry classification is elapsed-time math. Calendar months and years are rejected rather than approximated.\nfunction fixedDurationToMilliseconds(input: FixedDuration): number {\n const duration = Temporal.Duration.from(input);\n\n if (duration.years || duration.months) {\n throw new TempoInvalidInputError(\n 'classifyExpiry thresholds cannot contain months or years. Use fixed elapsed-time units.',\n );\n }\n\n // Fixed-length units only (months/years rejected above), so the sum is exact\n // without a relativeTo reference — Duration.total() would need a magic base date.\n return (\n duration.weeks * MILLIS.week +\n duration.days * MILLIS.day +\n duration.hours * MILLIS.hour +\n duration.minutes * MILLIS.minute +\n duration.seconds * MILLIS.second +\n duration.milliseconds +\n duration.microseconds * MILLIS.microsecond +\n duration.nanoseconds * MILLIS.nanosecond\n );\n}\n\nexport function classifyExpiry<K extends string>(input: ClassifyExpiryInput<K>): K | null {\n const reference = input.relativeTo ?? Temporal.Now.instant();\n const value = toInstant(input.value, input);\n const elapsed = value.epochMilliseconds - reference.epochMilliseconds;\n const thresholds = (Object.entries(input.thresholds) as Array<[K, FixedDuration]>)\n .map(([key, duration]) => ({ key, max: fixedDurationToMilliseconds(duration) }))\n .sort((left, right) => left.max - right.max);\n\n return thresholds.find(({ max }) => elapsed <= max)?.key ?? null;\n}\n\nfunction pickLargestUnit(duration: Temporal.Duration): TimeDiffResult {\n for (const { field, unit } of UNIT_ORDER) {\n const value = Math.abs(duration[field] as number);\n\n if (value > 0) return { unit, value };\n }\n\n return { unit: 'millisecond', value: 0 };\n}\n\nexport function timeDiff(\n a: TimeInput,\n b: TimeInput = Temporal.Now.instant(),\n options: TimeZoneOptions = {},\n): TimeDiffResult {\n if (!options.timeZone && a instanceof Temporal.Instant && b instanceof Temporal.Instant) {\n const left = a.toZonedDateTimeISO('UTC');\n const right = b.toZonedDateTimeISO('UTC');\n\n return pickLargestUnit(\n Temporal.ZonedDateTime.compare(left, right) <= 0\n ? right.since(left, { largestUnit: 'year' })\n : left.since(right, { largestUnit: 'year' }),\n );\n }\n\n const timeZone = inferSharedTimeZone([a, b], options);\n const left = toZoned(a, { timeZone });\n const right = toZoned(b, { timeZone });\n\n return pickLargestUnit(\n Temporal.ZonedDateTime.compare(left, right) <= 0\n ? right.since(left, { largestUnit: 'year' })\n : left.since(right, { largestUnit: 'year' }),\n );\n}\n"],"mappings":"4MAaA,IAAM,EAAS,CACb,IAAK,MACL,KAAM,KACN,YAAa,EAAI,IACjB,YAAa,EACb,OAAQ,IACR,WAAY,EAAI,IAChB,OAAQ,IACR,KAAM,MACR,EACM,EAAoF,CACxF,CAAE,MAAO,QAAS,KAAM,MAAO,EAC/B,CAAE,MAAO,SAAU,KAAM,OAAQ,EACjC,CAAE,MAAO,QAAS,KAAM,MAAO,EAC/B,CAAE,MAAO,OAAQ,KAAM,KAAM,EAC7B,CAAE,MAAO,QAAS,KAAM,MAAO,EAC/B,CAAE,MAAO,UAAW,KAAM,QAAS,EACnC,CAAE,MAAO,UAAW,KAAM,QAAS,EACnC,CAAE,MAAO,eAAgB,KAAM,aAAc,CAC/C,EAGA,SAAS,4BAA4B,EAA8B,CACjE,IAAM,EAAW,EAAS,SAAS,KAAK,CAAK,EAE7C,GAAI,EAAS,OAAS,EAAS,OAC7B,MAAM,IAAI,EACR,yFACF,EAKF,OACE,EAAS,MAAQ,EAAO,KACxB,EAAS,KAAO,EAAO,IACvB,EAAS,MAAQ,EAAO,KACxB,EAAS,QAAU,EAAO,OAC1B,EAAS,QAAU,EAAO,OAC1B,EAAS,aACT,EAAS,aAAe,EAAO,YAC/B,EAAS,YAAc,EAAO,UAElC,CAEA,SAAgB,eAAiC,EAAyC,CACxF,IAAM,EAAY,EAAM,YAAc,EAAS,IAAI,QAAQ,EAErD,EADQ,EAAU,EAAM,MAAO,CACrB,CAAA,CAAM,kBAAoB,EAAU,kBAKpD,OAJoB,OAAO,QAAQ,EAAM,UAAU,CAAC,CACjD,KAAK,CAAC,EAAK,MAAe,CAAE,MAAK,IAAK,4BAA4B,CAAQ,CAAE,EAAE,CAAC,CAC/E,MAAM,EAAM,IAAU,EAAK,IAAM,EAAM,GAEnC,CAAA,CAAW,MAAM,CAAE,SAAU,GAAW,CAAG,CAAC,EAAE,KAAO,IAC9D,CAEA,SAAS,gBAAgB,EAA6C,CACpE,IAAK,GAAM,CAAE,QAAO,UAAU,EAAY,CACxC,IAAM,EAAQ,KAAK,IAAI,EAAS,EAAgB,EAEhD,GAAI,EAAQ,EAAG,MAAO,CAAE,OAAM,OAAM,CACtC,CAEA,MAAO,CAAE,KAAM,cAAe,MAAO,CAAE,CACzC,CAEA,SAAgB,SACd,EACA,EAAe,EAAS,IAAI,QAAQ,EACpC,EAA2B,CAAC,EACZ,CAChB,GAAI,CAAC,EAAQ,UAAY,aAAa,EAAS,SAAW,aAAa,EAAS,QAAS,CACvF,IAAM,EAAO,EAAE,mBAAmB,KAAK,EACjC,EAAQ,EAAE,mBAAmB,KAAK,EAExC,OAAO,gBACL,EAAS,cAAc,QAAQ,EAAM,CAAK,GAAK,EAC3C,EAAM,MAAM,EAAM,CAAE,YAAa,MAAO,CAAC,EACzC,EAAK,MAAM,EAAO,CAAE,YAAa,MAAO,CAAC,CAC/C,CACF,CAEA,IAAM,EAAW,EAAoB,CAAC,EAAG,CAAC,EAAG,CAAO,EAC9C,EAAO,EAAQ,EAAG,CAAE,UAAS,CAAC,EAC9B,EAAQ,EAAQ,EAAG,CAAE,UAAS,CAAC,EAErC,OAAO,gBACL,EAAS,cAAc,QAAQ,EAAM,CAAK,GAAK,EAC3C,EAAM,MAAM,EAAM,CAAE,YAAa,MAAO,CAAC,EACzC,EAAK,MAAM,EAAO,CAAE,YAAa,MAAO,CAAC,CAC/C,CACF"}
|
package/dist/compare.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./_tz.cjs"),t=require("./_convert.cjs"),n=require("./_floor.cjs");let r=require("@js-temporal/polyfill");function
|
|
1
|
+
const e=require("./_tz.cjs"),t=require("./_convert.cjs"),n=require("./_floor.cjs");let r=require("@js-temporal/polyfill");function normalizeRange(e,t){return r.Temporal.Instant.compare(e,t)<=0?[e,t]:[t,e]}function compareByUnit(i,a,o){if(!o.unit)return r.Temporal.Instant.compare(t.toInstant(i,o),t.toInstant(a,o));let s={timeZone:e.inferSharedTimeZone([i,a],o),weekStartsOn:o.weekStartsOn};return r.Temporal.Instant.compare(n.floorToUnit(i,o.unit,s),n.floorToUnit(a,o.unit,s))}function resolveRange({end:r,start:i,value:a,...o}){if(!o.unit){let e=t.toInstant(a,o),[n,s]=normalizeRange(t.toInstant(i,o),t.toInstant(r,o));return{lower:n,target:e,upper:s}}let s={timeZone:e.inferSharedTimeZone([a,i,r],o),weekStartsOn:o.weekStartsOn},c=n.floorToUnit(a,o.unit,s),[l,u]=normalizeRange(n.floorToUnit(i,o.unit,s),n.floorToUnit(r,o.unit,s));return{lower:l,target:c,upper:u}}function isBefore(e,t,n={}){return compareByUnit(e,t,n)<0}function isAfter(e,t,n={}){return compareByUnit(e,t,n)>0}function isSame(e,t,n={}){return compareByUnit(e,t,n)===0}function contains(e){let{lower:t,target:n,upper:i}=resolveRange(e);return r.Temporal.Instant.compare(t,n)<=0&&r.Temporal.Instant.compare(n,i)<=0}function clamp(e){let{lower:t,target:n,upper:i}=resolveRange(e),a=r.Temporal.Instant.compare(n,t)<0?t:r.Temporal.Instant.compare(n,i)>0?i:n;return e.value instanceof r.Temporal.ZonedDateTime?a.toZonedDateTimeISO(e.timeZone??e.value.timeZoneId):a}exports.clamp=clamp,exports.contains=contains,exports.isAfter=isAfter,exports.isBefore=isBefore,exports.isSame=isSame;
|
|
2
2
|
//# sourceMappingURL=compare.cjs.map
|
package/dist/compare.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.cjs","names":[],"sources":["../src/compare.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { toInstant } from './_convert';\nimport { floorToUnit } from './_floor';\nimport { inferSharedTimeZone } from './_tz';\nimport type { ClampInput, CompareOptions, ContainsInput, TimeInput } from './types';\n\nfunction normalizeRange(start: Temporal.Instant, end: Temporal.Instant): [Temporal.Instant, Temporal.Instant] {\n return Temporal.Instant.compare(start, end) <= 0 ? [start, end] : [end, start];\n}\n\nfunction compareByUnit(a: TimeInput, b: TimeInput, options: CompareOptions): number {\n if (!options.unit) return Temporal.Instant.compare(toInstant(a, options), toInstant(b, options));\n\n const timeZone = inferSharedTimeZone([a, b], options);\n const unitOptions = { timeZone, weekStartsOn: options.weekStartsOn };\n\n return Temporal.Instant.compare(floorToUnit(a, options.unit, unitOptions), floorToUnit(b, options.unit, unitOptions));\n}\n\nfunction resolveRange({ end, start, value, ...options }: ContainsInput | ClampInput): {\n lower: Temporal.Instant;\n target: Temporal.Instant;\n upper: Temporal.Instant;\n} {\n if (!options.unit) {\n const target = toInstant(value, options);\n const [lower, upper] = normalizeRange(toInstant(start, options), toInstant(end, options));\n\n return { lower, target, upper };\n }\n\n const timeZone = inferSharedTimeZone([value, start, end], options);\n const unitOptions = { timeZone, weekStartsOn: options.weekStartsOn };\n const target = floorToUnit(value, options.unit, unitOptions);\n const [lower, upper] = normalizeRange(\n floorToUnit(start, options.unit, unitOptions),\n floorToUnit(end, options.unit, unitOptions),\n );\n\n return { lower, target, upper };\n}\n\nexport function isBefore(a: TimeInput, b: TimeInput, options: CompareOptions = {}): boolean {\n return compareByUnit(a, b, options) < 0;\n}\n\nexport function isAfter(a: TimeInput, b: TimeInput, options: CompareOptions = {}): boolean {\n return compareByUnit(a, b, options) > 0;\n}\n\nexport function isSame(a: TimeInput, b: TimeInput, options: CompareOptions = {}): boolean {\n return compareByUnit(a, b, options) === 0;\n}\n\nexport function contains(input: ContainsInput): boolean {\n const { lower, target, upper } = resolveRange(input);\n\n return Temporal.Instant.compare(lower, target) <= 0 && Temporal.Instant.compare(target, upper) <= 0;\n}\n\nexport function clamp(input: ClampInput & { value: Temporal.ZonedDateTime }): Temporal.ZonedDateTime;\nexport function clamp(input: ClampInput): Temporal.Instant;\nexport function clamp(input: ClampInput): Temporal.Instant | Temporal.ZonedDateTime {\n const { lower, target, upper } = resolveRange(input);\n const clamped =\n Temporal.Instant.compare(target, lower) < 0 ? lower : Temporal.Instant.compare(target, upper) > 0 ? upper : target;\n\n return input.value instanceof Temporal.ZonedDateTime\n ? clamped.toZonedDateTimeISO(input.timeZone ?? input.value.timeZoneId)\n : clamped;\n}\n"],"mappings":"0HAMA,SAAS,
|
|
1
|
+
{"version":3,"file":"compare.cjs","names":[],"sources":["../src/compare.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { toInstant } from './_convert';\nimport { floorToUnit } from './_floor';\nimport { inferSharedTimeZone } from './_tz';\nimport type { ClampInput, CompareOptions, ContainsInput, TimeInput } from './types';\n\nfunction normalizeRange(start: Temporal.Instant, end: Temporal.Instant): [Temporal.Instant, Temporal.Instant] {\n return Temporal.Instant.compare(start, end) <= 0 ? [start, end] : [end, start];\n}\n\nfunction compareByUnit(a: TimeInput, b: TimeInput, options: CompareOptions): number {\n if (!options.unit) return Temporal.Instant.compare(toInstant(a, options), toInstant(b, options));\n\n const timeZone = inferSharedTimeZone([a, b], options);\n const unitOptions = { timeZone, weekStartsOn: options.weekStartsOn };\n\n return Temporal.Instant.compare(floorToUnit(a, options.unit, unitOptions), floorToUnit(b, options.unit, unitOptions));\n}\n\nfunction resolveRange({ end, start, value, ...options }: ContainsInput | ClampInput): {\n lower: Temporal.Instant;\n target: Temporal.Instant;\n upper: Temporal.Instant;\n} {\n if (!options.unit) {\n const target = toInstant(value, options);\n const [lower, upper] = normalizeRange(toInstant(start, options), toInstant(end, options));\n\n return { lower, target, upper };\n }\n\n const timeZone = inferSharedTimeZone([value, start, end], options);\n const unitOptions = { timeZone, weekStartsOn: options.weekStartsOn };\n const target = floorToUnit(value, options.unit, unitOptions);\n const [lower, upper] = normalizeRange(\n floorToUnit(start, options.unit, unitOptions),\n floorToUnit(end, options.unit, unitOptions),\n );\n\n return { lower, target, upper };\n}\n\nexport function isBefore(a: TimeInput, b: TimeInput, options: CompareOptions = {}): boolean {\n return compareByUnit(a, b, options) < 0;\n}\n\nexport function isAfter(a: TimeInput, b: TimeInput, options: CompareOptions = {}): boolean {\n return compareByUnit(a, b, options) > 0;\n}\n\nexport function isSame(a: TimeInput, b: TimeInput, options: CompareOptions = {}): boolean {\n return compareByUnit(a, b, options) === 0;\n}\n\nexport function contains(input: ContainsInput): boolean {\n const { lower, target, upper } = resolveRange(input);\n\n return Temporal.Instant.compare(lower, target) <= 0 && Temporal.Instant.compare(target, upper) <= 0;\n}\n\nexport function clamp(input: ClampInput & { value: Temporal.ZonedDateTime }): Temporal.ZonedDateTime;\nexport function clamp(input: ClampInput): Temporal.Instant;\nexport function clamp(input: ClampInput): Temporal.Instant | Temporal.ZonedDateTime {\n const { lower, target, upper } = resolveRange(input);\n const clamped =\n Temporal.Instant.compare(target, lower) < 0 ? lower : Temporal.Instant.compare(target, upper) > 0 ? upper : target;\n\n return input.value instanceof Temporal.ZonedDateTime\n ? clamped.toZonedDateTimeISO(input.timeZone ?? input.value.timeZoneId)\n : clamped;\n}\n"],"mappings":"0HAMA,SAAS,eAAe,EAAyB,EAA6D,CAC5G,OAAO,EAAA,SAAS,QAAQ,QAAQ,EAAO,CAAG,GAAK,EAAI,CAAC,EAAO,CAAG,EAAI,CAAC,EAAK,CAAK,CAC/E,CAEA,SAAS,cAAc,EAAc,EAAc,EAAiC,CAClF,GAAI,CAAC,EAAQ,KAAM,OAAO,EAAA,SAAS,QAAQ,QAAQ,EAAA,UAAU,EAAG,CAAO,EAAG,EAAA,UAAU,EAAG,CAAO,CAAC,EAG/F,IAAM,EAAc,CAAE,SADL,EAAA,oBAAoB,CAAC,EAAG,CAAC,EAAG,CACvB,EAAU,aAAc,EAAQ,YAAa,EAEnE,OAAO,EAAA,SAAS,QAAQ,QAAQ,EAAA,YAAY,EAAG,EAAQ,KAAM,CAAW,EAAG,EAAA,YAAY,EAAG,EAAQ,KAAM,CAAW,CAAC,CACtH,CAEA,SAAS,aAAa,CAAE,MAAK,QAAO,QAAO,GAAG,GAI5C,CACA,GAAI,CAAC,EAAQ,KAAM,CACjB,IAAM,EAAS,EAAA,UAAU,EAAO,CAAO,EACjC,CAAC,EAAO,GAAS,eAAe,EAAA,UAAU,EAAO,CAAO,EAAG,EAAA,UAAU,EAAK,CAAO,CAAC,EAExF,MAAO,CAAE,QAAO,SAAQ,OAAM,CAChC,CAGA,IAAM,EAAc,CAAE,SADL,EAAA,oBAAoB,CAAC,EAAO,EAAO,CAAG,EAAG,CACpC,EAAU,aAAc,EAAQ,YAAa,EAC7D,EAAS,EAAA,YAAY,EAAO,EAAQ,KAAM,CAAW,EACrD,CAAC,EAAO,GAAS,eACrB,EAAA,YAAY,EAAO,EAAQ,KAAM,CAAW,EAC5C,EAAA,YAAY,EAAK,EAAQ,KAAM,CAAW,CAC5C,EAEA,MAAO,CAAE,QAAO,SAAQ,OAAM,CAChC,CAEA,SAAgB,SAAS,EAAc,EAAc,EAA0B,CAAC,EAAY,CAC1F,OAAO,cAAc,EAAG,EAAG,CAAO,EAAI,CACxC,CAEA,SAAgB,QAAQ,EAAc,EAAc,EAA0B,CAAC,EAAY,CACzF,OAAO,cAAc,EAAG,EAAG,CAAO,EAAI,CACxC,CAEA,SAAgB,OAAO,EAAc,EAAc,EAA0B,CAAC,EAAY,CACxF,OAAO,cAAc,EAAG,EAAG,CAAO,IAAM,CAC1C,CAEA,SAAgB,SAAS,EAA+B,CACtD,GAAM,CAAE,QAAO,SAAQ,SAAU,aAAa,CAAK,EAEnD,OAAO,EAAA,SAAS,QAAQ,QAAQ,EAAO,CAAM,GAAK,GAAK,EAAA,SAAS,QAAQ,QAAQ,EAAQ,CAAK,GAAK,CACpG,CAIA,SAAgB,MAAM,EAA8D,CAClF,GAAM,CAAE,QAAO,SAAQ,SAAU,aAAa,CAAK,EAC7C,EACJ,EAAA,SAAS,QAAQ,QAAQ,EAAQ,CAAK,EAAI,EAAI,EAAQ,EAAA,SAAS,QAAQ,QAAQ,EAAQ,CAAK,EAAI,EAAI,EAAQ,EAE9G,OAAO,EAAM,iBAAiB,EAAA,SAAS,cACnC,EAAQ,mBAAmB,EAAM,UAAY,EAAM,MAAM,UAAU,EACnE,CACN"}
|
package/dist/compare.js
CHANGED
|
@@ -1,60 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { toInstant as t } from "./_convert.js";
|
|
3
|
-
import { floorToUnit as n } from "./_floor.js";
|
|
4
|
-
import { Temporal as r } from "@js-temporal/polyfill";
|
|
5
|
-
//#region src/compare.ts
|
|
6
|
-
function i(e, t) {
|
|
7
|
-
return r.Instant.compare(e, t) <= 0 ? [e, t] : [t, e];
|
|
8
|
-
}
|
|
9
|
-
function a(i, a, o) {
|
|
10
|
-
if (!o.unit) return r.Instant.compare(t(i, o), t(a, o));
|
|
11
|
-
let s = {
|
|
12
|
-
timeZone: e([i, a], o),
|
|
13
|
-
weekStartsOn: o.weekStartsOn
|
|
14
|
-
};
|
|
15
|
-
return r.Instant.compare(n(i, o.unit, s), n(a, o.unit, s));
|
|
16
|
-
}
|
|
17
|
-
function o({ end: r, start: a, value: o, ...s }) {
|
|
18
|
-
if (!s.unit) {
|
|
19
|
-
let e = t(o, s), [n, c] = i(t(a, s), t(r, s));
|
|
20
|
-
return {
|
|
21
|
-
lower: n,
|
|
22
|
-
target: e,
|
|
23
|
-
upper: c
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
let c = {
|
|
27
|
-
timeZone: e([
|
|
28
|
-
o,
|
|
29
|
-
a,
|
|
30
|
-
r
|
|
31
|
-
], s),
|
|
32
|
-
weekStartsOn: s.weekStartsOn
|
|
33
|
-
}, l = n(o, s.unit, c), [u, d] = i(n(a, s.unit, c), n(r, s.unit, c));
|
|
34
|
-
return {
|
|
35
|
-
lower: u,
|
|
36
|
-
target: l,
|
|
37
|
-
upper: d
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
function s(e, t, n = {}) {
|
|
41
|
-
return a(e, t, n) < 0;
|
|
42
|
-
}
|
|
43
|
-
function c(e, t, n = {}) {
|
|
44
|
-
return a(e, t, n) > 0;
|
|
45
|
-
}
|
|
46
|
-
function l(e, t, n = {}) {
|
|
47
|
-
return a(e, t, n) === 0;
|
|
48
|
-
}
|
|
49
|
-
function u(e) {
|
|
50
|
-
let { lower: t, target: n, upper: i } = o(e);
|
|
51
|
-
return r.Instant.compare(t, n) <= 0 && r.Instant.compare(n, i) <= 0;
|
|
52
|
-
}
|
|
53
|
-
function d(e) {
|
|
54
|
-
let { lower: t, target: n, upper: i } = o(e), a = r.Instant.compare(n, t) < 0 ? t : r.Instant.compare(n, i) > 0 ? i : n;
|
|
55
|
-
return e.value instanceof r.ZonedDateTime ? a.toZonedDateTimeISO(e.timeZone ?? e.value.timeZoneId) : a;
|
|
56
|
-
}
|
|
57
|
-
//#endregion
|
|
58
|
-
export { d as clamp, u as contains, c as isAfter, s as isBefore, l as isSame };
|
|
59
|
-
|
|
1
|
+
import{inferSharedTimeZone as e}from"./_tz.js";import{toInstant as t}from"./_convert.js";import{floorToUnit as n}from"./_floor.js";import{Temporal as r}from"@js-temporal/polyfill";function normalizeRange(e,t){return r.Instant.compare(e,t)<=0?[e,t]:[t,e]}function compareByUnit(i,a,o){if(!o.unit)return r.Instant.compare(t(i,o),t(a,o));let s={timeZone:e([i,a],o),weekStartsOn:o.weekStartsOn};return r.Instant.compare(n(i,o.unit,s),n(a,o.unit,s))}function resolveRange({end:r,start:i,value:a,...o}){if(!o.unit){let e=t(a,o),[n,s]=normalizeRange(t(i,o),t(r,o));return{lower:n,target:e,upper:s}}let s={timeZone:e([a,i,r],o),weekStartsOn:o.weekStartsOn},c=n(a,o.unit,s),[l,u]=normalizeRange(n(i,o.unit,s),n(r,o.unit,s));return{lower:l,target:c,upper:u}}function isBefore(e,t,n={}){return compareByUnit(e,t,n)<0}function isAfter(e,t,n={}){return compareByUnit(e,t,n)>0}function isSame(e,t,n={}){return compareByUnit(e,t,n)===0}function contains(e){let{lower:t,target:n,upper:i}=resolveRange(e);return r.Instant.compare(t,n)<=0&&r.Instant.compare(n,i)<=0}function clamp(e){let{lower:t,target:n,upper:i}=resolveRange(e),a=r.Instant.compare(n,t)<0?t:r.Instant.compare(n,i)>0?i:n;return e.value instanceof r.ZonedDateTime?a.toZonedDateTimeISO(e.timeZone??e.value.timeZoneId):a}export{clamp,contains,isAfter,isBefore,isSame};
|
|
60
2
|
//# sourceMappingURL=compare.js.map
|