@vielzeug/tempo 3.0.0 → 26.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +1 -1
  2. package/dist/_convert.cjs +1 -1
  3. package/dist/_convert.cjs.map +1 -1
  4. package/dist/_convert.js +1 -27
  5. package/dist/_convert.js.map +1 -1
  6. package/dist/_floor.cjs +1 -1
  7. package/dist/_floor.cjs.map +1 -1
  8. package/dist/_floor.js +1 -45
  9. package/dist/_floor.js.map +1 -1
  10. package/dist/_tz.cjs +1 -1
  11. package/dist/_tz.cjs.map +1 -1
  12. package/dist/_tz.js +1 -30
  13. package/dist/_tz.js.map +1 -1
  14. package/dist/boundary.cjs +1 -1
  15. package/dist/boundary.cjs.map +1 -1
  16. package/dist/boundary.js +1 -28
  17. package/dist/boundary.js.map +1 -1
  18. package/dist/classify.cjs +1 -1
  19. package/dist/classify.cjs.map +1 -1
  20. package/dist/classify.d.ts.map +1 -1
  21. package/dist/classify.js +1 -84
  22. package/dist/classify.js.map +1 -1
  23. package/dist/compare.cjs +1 -1
  24. package/dist/compare.cjs.map +1 -1
  25. package/dist/compare.js +1 -59
  26. package/dist/compare.js.map +1 -1
  27. package/dist/core.cjs +1 -1
  28. package/dist/core.cjs.map +1 -1
  29. package/dist/core.js +1 -45
  30. package/dist/core.js.map +1 -1
  31. package/dist/errors.cjs +1 -1
  32. package/dist/errors.cjs.map +1 -1
  33. package/dist/errors.js +1 -12
  34. package/dist/errors.js.map +1 -1
  35. package/dist/format.cjs +1 -1
  36. package/dist/format.cjs.map +1 -1
  37. package/dist/format.d.ts +16 -2
  38. package/dist/format.d.ts.map +1 -1
  39. package/dist/format.js +1 -192
  40. package/dist/format.js.map +1 -1
  41. package/dist/index.cjs +1 -1
  42. package/dist/index.d.ts +2 -2
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +1 -10
  45. package/dist/range.cjs +1 -1
  46. package/dist/range.cjs.map +1 -1
  47. package/dist/range.js +1 -34
  48. package/dist/range.js.map +1 -1
  49. package/dist/tempo.cjs +1 -1
  50. package/dist/tempo.cjs.map +1 -1
  51. package/dist/tempo.iife.js +1 -1
  52. package/dist/tempo.iife.js.map +1 -1
  53. package/dist/tempo.js +1 -1
  54. package/dist/tempo.js.map +1 -1
  55. package/dist/types.d.ts +4 -0
  56. package/dist/types.d.ts.map +1 -1
  57. package/package.json +5 -5
package/README.md CHANGED
@@ -31,4 +31,4 @@ console.log(format(reminder, { locale: 'en-US', pattern: 'short' }));
31
31
 
32
32
  ## License
33
33
 
34
- MIT © [Helmuth Saatkamp](https://github.com/helmuthdu) — part of the [Vielzeug](https://github.com/helmuthdu/vielzeug) monorepo.
34
+ MIT © [Helmuth Saatkamp](https://github.com/helmuthdu): part of the [Vielzeug](https://github.com/helmuthdu/vielzeug) monorepo.
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 r(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 i(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 a(e,t){return i(e,{timeZone:t})}exports.inTimeZone=a,exports.toInstant=r,exports.toZoned=i;
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
@@ -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,EAAU,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,EAAQ,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,EAAW,EAAkB,EAA0C,CACrF,OAAO,EAAQ,EAAO,CAAE,UAAS,CAAC,CACpC"}
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 { TempoMissingTzError as e, TempoUnsupportedInputError as t, fail as n } from "./errors.js";
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
@@ -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":";;;;AAWA,SAAgB,EAAU,GAAkB,IAA6B,CAAC,GAAqB;CAC7F,IAAI,aAAiB,EAAS,SAAS,OAAO;CAE9C,IAAI,aAAiB,EAAS,eAAe,OAAO,EAAM,UAAU;CAEpE,AAAK,EAAQ,YACX,EACE,2FACA,CACF;CAGF,IAAM,IAAW,EAAiB,EAAQ,QAAQ;CAElD,IAAI,aAAiB,EAAS,eAC5B,OAAO,EAAM,gBAAgB,GAAU,EAAE,gBAAgB,EAAQ,eAAe,CAAC,CAAC,CAAC,UAAU;CAG/F,IAAI,aAAiB,EAAS,WAAW,OAAO,EAAM,gBAAgB,EAAE,YAAS,CAAC,CAAC,CAAC,UAAU;CAE9F,EAAK,gCAAgC,OAAO,CAAK,KAAK,CAA0B;AAClF;AAEA,SAAgB,EAAQ,GAAkB,GAA4D;CACpG,IAAM,IAAW,EAAiB,EAAQ,QAAQ;CAElD,IAAI,aAAiB,EAAS,eAAe,OAAO,EAAM,aAAa,CAAQ;CAE/E,IAAI,aAAiB,EAAS,SAAS,OAAO,EAAM,mBAAmB,CAAQ;CAE/E,IAAI,aAAiB,EAAS,eAC5B,OAAO,EAAM,gBAAgB,GAAU,EAAE,gBAAgB,EAAQ,eAAe,CAAC;CAGnF,IAAI,aAAiB,EAAS,WAAW,OAAO,EAAM,gBAAgB,EAAE,YAAS,CAAC;CAElF,EAAK,gCAAgC,OAAO,CAAK,KAAK,CAA0B;AAClF;AAEA,SAAgB,EAAW,GAAkB,GAA0C;CACrF,OAAO,EAAQ,GAAO,EAAE,YAAS,CAAC;AACpC"}
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 r(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=r;
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
@@ -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,EACd,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"}
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 { toZoned as e } from "./_convert.js";
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
@@ -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":";;AAIA,IAAM,IAAwC;CAC5C,MAAM;CACN,aAAa;CACb,aAAa;CACb,QAAQ;CACR,YAAY;CACZ,QAAQ;AACV,GAEM,IAAoF;CACxF,KAAK;CACL,MAAM;EAAE,aAAa;EAAG,aAAa;EAAG,QAAQ;EAAG,YAAY;EAAG,QAAQ;CAAE;CAC5E,QAAQ;EAAE,aAAa;EAAG,aAAa;EAAG,YAAY;EAAG,QAAQ;CAAE;CACnE,OAAO;EAAE,GAAG;EAAW,KAAK;CAAE;CAC9B,MAAM;EAAE,GAAG;EAAW,KAAK;EAAG,OAAO;CAAE;AACzC;AAEA,SAAgB,EACd,GACA,GACA,GACkB;CAClB,IAAM,IAAQ,EAAQ,GAAO,CAAO;CAEpC,IAAI,MAAS,QAAQ;EACnB,IAAM,KAAkB,EAAM,aAAa,EAAQ,gBAAgB,KAAK,KAAK;EAE7E,OAAO,EAAM,SAAS,EAAE,MAAM,EAAe,CAAC,CAAC,CAAC,KAAK,CAAS,CAAC,CAAC,UAAU;CAC5E;CAEA,OAAO,EAAM,KAAK,EAAe,EAAK,CAAC,CAAC,UAAU;AACpD"}
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 n(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 r(r,i){let a=i.timeZone??(r instanceof t.Temporal.ZonedDateTime?r.timeZoneId:void 0);return a||e.fail(`This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.`,e.TempoMissingTzError),n(a)}function i(r,i){if(i.timeZone)return n(i.timeZone);let a;for(let n of r)n instanceof t.Temporal.ZonedDateTime&&(a?a!==n.timeZoneId&&e.fail(`Inputs use different time zones. Pass options.timeZone explicitly.`):a=n.timeZoneId);return a||e.fail(`This operation requires a timeZone. Pass options.timeZone or use a ZonedDateTime input.`,e.TempoMissingTzError),a}var a=new Set([`day`,`month`,`week`,`year`]);exports.CALENDAR_UNITS=a,exports.inferSharedTimeZone=i,exports.inferTimeZone=r,exports.validateTimeZone=n;
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,EAAiB,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,EAAc,EAAkB,EAAkC,CAChF,IAAM,EAAW,EAAQ,WAAa,aAAiB,EAAA,SAAS,cAAgB,EAAM,WAAa,IAAA,IASnG,OAPK,GACH,EAAA,KACE,0FACA,EAAA,mBACF,EAGK,EAAiB,CAAQ,CAClC,CAEA,SAAgB,EAAoB,EAA8B,EAAkC,CAClG,GAAI,EAAQ,SAAU,OAAO,EAAiB,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"}
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 { TempoInvalidTzError as e, TempoMissingTzError as t, fail as n } from "./errors.js";
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":";;;AAIA,SAAgB,EAAiB,GAA0B;CACzD,IAAI;EACF,EAAS,QAAQ,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,CAAQ;CACvE,SAAS,GAAO;EACd,EACE,iCAAiC,EAAS,mDAC1C,GACA,EAAE,OAAO,EAAM,CACjB;CACF;CAEA,OAAO;AACT;AAEA,SAAgB,EAAc,GAAkB,GAAkC;CAChF,IAAM,IAAW,EAAQ,aAAa,aAAiB,EAAS,gBAAgB,EAAM,aAAa,KAAA;CASnG,OAPK,KACH,EACE,2FACA,CACF,GAGK,EAAiB,CAAQ;AAClC;AAEA,SAAgB,EAAoB,GAA8B,GAAkC;CAClG,IAAI,EAAQ,UAAU,OAAO,EAAiB,EAAQ,QAAQ;CAE9D,IAAI;CAEJ,KAAK,IAAM,KAAS,GACZ,aAAiB,EAAS,kBAE3B,IACI,MAAa,EAAM,cAC1B,EAAK,oEAAoE,IAF5D,IAAW,EAAM;CAalC,OAPK,KACH,EACE,2FACA,CACF,GAGK;AACT;AAEA,IAAa,oBAAiB,IAAI,IAAkB;CAAC;CAAO;CAAS;CAAQ;AAAM,CAAC"}
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 r(n,r,i={}){let a=e.inferTimeZone(n,i);return t.floorToUnit(n,r,{timeZone:a,weekStartsOn:i.weekStartsOn}).toZonedDateTimeISO(a)}function i(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=i,exports.startOf=r;
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
@@ -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,EAAQ,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,EAAM,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"}
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 { inferTimeZone as e } from "./_tz.js";
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
@@ -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":";;;AAKA,IAAM,IAA6D;CACjE,KAAK,EAAE,MAAM,EAAE;CACf,MAAM,EAAE,OAAO,EAAE;CACjB,QAAQ,EAAE,SAAS,EAAE;CACrB,OAAO,EAAE,QAAQ,EAAE;CACnB,MAAM,EAAE,OAAO,EAAE;CACjB,MAAM,EAAE,OAAO,EAAE;AACnB;AAEA,SAAgB,EAAQ,GAAkB,GAAoB,IAA2B,CAAC,GAA2B;CACnH,IAAM,IAAW,EAAc,GAAO,CAAO;CAE7C,OAAO,EAAY,GAAO,GAAM;EAAE;EAAU,cAAc,EAAQ;CAAa,CAAC,CAAC,CAAC,mBAAmB,CAAQ;AAC/G;AAEA,SAAgB,EAAM,GAAkB,GAAoB,IAA2B,CAAC,GAA2B;CACjH,IAAM,IAAW,EAAc,GAAO,CAAO;CAG7C,OAFc,EAAY,GAAO,GAAM;EAAE;EAAU,cAAc,EAAQ;CAAa,CAE/E,CAAA,CAAM,mBAAmB,CAAQ,CAAC,CAAC,IAAI,EAAc,EAAK,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAChG"}
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 o(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 s(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:o(t)})).sort((e,t)=>e.max-t.max).find(({max:e})=>i<=e)?.key??null}function c(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 l(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 c(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}),l=n.toZoned(i,{timeZone:o});return c(r.Temporal.ZonedDateTime.compare(s,l)<=0?l.since(s,{largestUnit:`year`}):s.since(l,{largestUnit:`year`}))}exports.classifyExpiry=s,exports.timeDiff=l;
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
@@ -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,EAA4B,EAA8B,CACjE,IAAM,EAAW,EAAA,SAAS,SAAS,KAAK,CAAK,EAE7C,GAAI,EAAS,OAAS,EAAS,OAC7B,MAAM,IAAI,EAAA,uBACR,yFACF,EAGF,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,EAA4B,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,EAAgB,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,EACd,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,EACL,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,EACL,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"}
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"}
@@ -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;AA6CjB,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"}
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 { TempoInvalidInputError as e } from "./errors.js";
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
@@ -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":";;;;;AAaA,IAAM,IAAS;CACb,KAAK;CACL,MAAM;CACN,aAAa,IAAI;CACjB,aAAa;CACb,QAAQ;CACR,YAAY,IAAI;CAChB,QAAQ;CACR,MAAM;AACR,GACM,IAAoF;CACxF;EAAE,OAAO;EAAS,MAAM;CAAO;CAC/B;EAAE,OAAO;EAAU,MAAM;CAAQ;CACjC;EAAE,OAAO;EAAS,MAAM;CAAO;CAC/B;EAAE,OAAO;EAAQ,MAAM;CAAM;CAC7B;EAAE,OAAO;EAAS,MAAM;CAAO;CAC/B;EAAE,OAAO;EAAW,MAAM;CAAS;CACnC;EAAE,OAAO;EAAW,MAAM;CAAS;CACnC;EAAE,OAAO;EAAgB,MAAM;CAAc;AAC/C;AAGA,SAAS,EAA4B,GAA8B;CACjE,IAAM,IAAW,EAAS,SAAS,KAAK,CAAK;CAE7C,IAAI,EAAS,SAAS,EAAS,QAC7B,MAAM,IAAI,EACR,yFACF;CAGF,OACE,EAAS,QAAQ,EAAO,OACxB,EAAS,OAAO,EAAO,MACvB,EAAS,QAAQ,EAAO,OACxB,EAAS,UAAU,EAAO,SAC1B,EAAS,UAAU,EAAO,SAC1B,EAAS,eACT,EAAS,eAAe,EAAO,cAC/B,EAAS,cAAc,EAAO;AAElC;AAEA,SAAgB,EAAiC,GAAyC;CACxF,IAAM,IAAY,EAAM,cAAc,EAAS,IAAI,QAAQ,GAErD,IADQ,EAAU,EAAM,OAAO,CACrB,CAAA,CAAM,oBAAoB,EAAU;CAKpD,OAJoB,OAAO,QAAQ,EAAM,UAAU,CAAC,CACjD,KAAK,CAAC,GAAK,QAAe;EAAE;EAAK,KAAK,EAA4B,CAAQ;CAAE,EAAE,CAAC,CAC/E,MAAM,GAAM,MAAU,EAAK,MAAM,EAAM,GAEnC,CAAA,CAAW,MAAM,EAAE,aAAU,KAAW,CAAG,CAAC,EAAE,OAAO;AAC9D;AAEA,SAAS,EAAgB,GAA6C;CACpE,KAAK,IAAM,EAAE,UAAO,aAAU,GAAY;EACxC,IAAM,IAAQ,KAAK,IAAI,EAAS,EAAgB;EAEhD,IAAI,IAAQ,GAAG,OAAO;GAAE;GAAM;EAAM;CACtC;CAEA,OAAO;EAAE,MAAM;EAAe,OAAO;CAAE;AACzC;AAEA,SAAgB,EACd,GACA,IAAe,EAAS,IAAI,QAAQ,GACpC,IAA2B,CAAC,GACZ;CAChB,IAAI,CAAC,EAAQ,YAAY,aAAa,EAAS,WAAW,aAAa,EAAS,SAAS;EACvF,IAAM,IAAO,EAAE,mBAAmB,KAAK,GACjC,IAAQ,EAAE,mBAAmB,KAAK;EAExC,OAAO,EACL,EAAS,cAAc,QAAQ,GAAM,CAAK,KAAK,IAC3C,EAAM,MAAM,GAAM,EAAE,aAAa,OAAO,CAAC,IACzC,EAAK,MAAM,GAAO,EAAE,aAAa,OAAO,CAAC,CAC/C;CACF;CAEA,IAAM,IAAW,EAAoB,CAAC,GAAG,CAAC,GAAG,CAAO,GAC9C,IAAO,EAAQ,GAAG,EAAE,YAAS,CAAC,GAC9B,IAAQ,EAAQ,GAAG,EAAE,YAAS,CAAC;CAErC,OAAO,EACL,EAAS,cAAc,QAAQ,GAAM,CAAK,KAAK,IAC3C,EAAM,MAAM,GAAM,EAAE,aAAa,OAAO,CAAC,IACzC,EAAK,MAAM,GAAO,EAAE,aAAa,OAAO,CAAC,CAC/C;AACF"}
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 i(e,t){return r.Temporal.Instant.compare(e,t)<=0?[e,t]:[t,e]}function a(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 o({end:r,start:a,value:o,...s}){if(!s.unit){let e=t.toInstant(o,s),[n,c]=i(t.toInstant(a,s),t.toInstant(r,s));return{lower:n,target:e,upper:c}}let c={timeZone:e.inferSharedTimeZone([o,a,r],s),weekStartsOn:s.weekStartsOn},l=n.floorToUnit(o,s.unit,c),[u,d]=i(n.floorToUnit(a,s.unit,c),n.floorToUnit(r,s.unit,c));return{lower:u,target:l,upper:d}}function s(e,t,n={}){return a(e,t,n)<0}function c(e,t,n={}){return a(e,t,n)>0}function l(e,t,n={}){return a(e,t,n)===0}function u(e){let{lower:t,target:n,upper:i}=o(e);return r.Temporal.Instant.compare(t,n)<=0&&r.Temporal.Instant.compare(n,i)<=0}function d(e){let{lower:t,target:n,upper:i}=o(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=d,exports.contains=u,exports.isAfter=c,exports.isBefore=s,exports.isSame=l;
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
@@ -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,EAAe,EAAyB,EAA6D,CAC5G,OAAO,EAAA,SAAS,QAAQ,QAAQ,EAAO,CAAG,GAAK,EAAI,CAAC,EAAO,CAAG,EAAI,CAAC,EAAK,CAAK,CAC/E,CAEA,SAAS,EAAc,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,EAAa,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,EAAS,EAAc,EAAc,EAA0B,CAAC,EAAY,CAC1F,OAAO,EAAc,EAAG,EAAG,CAAO,EAAI,CACxC,CAEA,SAAgB,EAAQ,EAAc,EAAc,EAA0B,CAAC,EAAY,CACzF,OAAO,EAAc,EAAG,EAAG,CAAO,EAAI,CACxC,CAEA,SAAgB,EAAO,EAAc,EAAc,EAA0B,CAAC,EAAY,CACxF,OAAO,EAAc,EAAG,EAAG,CAAO,IAAM,CAC1C,CAEA,SAAgB,EAAS,EAA+B,CACtD,GAAM,CAAE,QAAO,SAAQ,SAAU,EAAa,CAAK,EAEnD,OAAO,EAAA,SAAS,QAAQ,QAAQ,EAAO,CAAM,GAAK,GAAK,EAAA,SAAS,QAAQ,QAAQ,EAAQ,CAAK,GAAK,CACpG,CAIA,SAAgB,EAAM,EAA8D,CAClF,GAAM,CAAE,QAAO,SAAQ,SAAU,EAAa,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"}
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 { inferSharedTimeZone as e } from "./_tz.js";
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