@venizia/ignis-helpers 0.2.2-1 → 0.2.2-3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/dist/cjs/modules/temporal/abstract.d.ts +295 -0
  2. package/dist/cjs/modules/temporal/abstract.d.ts.map +1 -0
  3. package/dist/cjs/modules/temporal/abstract.js +330 -0
  4. package/dist/cjs/modules/temporal/abstract.js.map +1 -0
  5. package/dist/cjs/modules/temporal/adapters/dayjs.d.ts +1 -1
  6. package/dist/cjs/modules/temporal/adapters/dayjs.d.ts.map +1 -1
  7. package/dist/cjs/modules/temporal/adapters/dayjs.js +3 -3
  8. package/dist/cjs/modules/temporal/adapters/dayjs.js.map +1 -1
  9. package/dist/cjs/modules/temporal/adapters/intl.d.ts +1 -1
  10. package/dist/cjs/modules/temporal/adapters/intl.d.ts.map +1 -1
  11. package/dist/cjs/modules/temporal/adapters/intl.js +7 -7
  12. package/dist/cjs/modules/temporal/adapters/intl.js.map +1 -1
  13. package/dist/cjs/modules/temporal/adapters/luxon.d.ts +1 -1
  14. package/dist/cjs/modules/temporal/adapters/luxon.d.ts.map +1 -1
  15. package/dist/cjs/modules/temporal/adapters/luxon.js +3 -3
  16. package/dist/cjs/modules/temporal/adapters/luxon.js.map +1 -1
  17. package/dist/cjs/modules/temporal/adapters/native.d.ts +3 -1
  18. package/dist/cjs/modules/temporal/adapters/native.d.ts.map +1 -1
  19. package/dist/cjs/modules/temporal/adapters/native.js +13 -5
  20. package/dist/cjs/modules/temporal/adapters/native.js.map +1 -1
  21. package/dist/cjs/modules/temporal/calendar/calendar.d.ts +56 -0
  22. package/dist/cjs/modules/temporal/calendar/calendar.d.ts.map +1 -0
  23. package/dist/cjs/modules/temporal/calendar/calendar.js +166 -0
  24. package/dist/cjs/modules/temporal/calendar/calendar.js.map +1 -0
  25. package/dist/cjs/modules/temporal/calendar/index.d.ts +2 -0
  26. package/dist/cjs/modules/temporal/calendar/index.d.ts.map +1 -0
  27. package/dist/cjs/modules/temporal/calendar/index.js +18 -0
  28. package/dist/cjs/modules/temporal/calendar/index.js.map +1 -0
  29. package/dist/cjs/modules/temporal/common/constants.d.ts +14 -3
  30. package/dist/cjs/modules/temporal/common/constants.d.ts.map +1 -1
  31. package/dist/cjs/modules/temporal/common/constants.js +23 -4
  32. package/dist/cjs/modules/temporal/common/constants.js.map +1 -1
  33. package/dist/cjs/modules/temporal/common/types.d.ts +258 -5
  34. package/dist/cjs/modules/temporal/common/types.d.ts.map +1 -1
  35. package/dist/cjs/modules/temporal/{duration.d.ts → duration/duration.d.ts} +9 -2
  36. package/dist/cjs/modules/temporal/duration/duration.d.ts.map +1 -0
  37. package/dist/cjs/modules/temporal/duration/duration.js +135 -0
  38. package/dist/cjs/modules/temporal/duration/duration.js.map +1 -0
  39. package/dist/cjs/modules/temporal/duration/index.d.ts +2 -0
  40. package/dist/cjs/modules/temporal/duration/index.d.ts.map +1 -0
  41. package/dist/cjs/modules/temporal/duration/index.js +18 -0
  42. package/dist/cjs/modules/temporal/duration/index.js.map +1 -0
  43. package/dist/cjs/modules/temporal/helper.d.ts +105 -77
  44. package/dist/cjs/modules/temporal/helper.d.ts.map +1 -1
  45. package/dist/cjs/modules/temporal/helper.js +209 -258
  46. package/dist/cjs/modules/temporal/helper.js.map +1 -1
  47. package/dist/cjs/modules/temporal/index.d.ts +1 -0
  48. package/dist/cjs/modules/temporal/index.d.ts.map +1 -1
  49. package/dist/cjs/modules/temporal/index.js +1 -0
  50. package/dist/cjs/modules/temporal/index.js.map +1 -1
  51. package/dist/cjs/modules/temporal/locale/index.d.ts +2 -0
  52. package/dist/cjs/modules/temporal/locale/index.d.ts.map +1 -0
  53. package/dist/cjs/modules/temporal/locale/index.js +18 -0
  54. package/dist/cjs/modules/temporal/locale/index.js.map +1 -0
  55. package/dist/{esm/modules/temporal → cjs/modules/temporal/locale}/locale.d.ts +3 -2
  56. package/dist/cjs/modules/temporal/locale/locale.d.ts.map +1 -0
  57. package/dist/cjs/modules/temporal/{locale.js → locale/locale.js} +3 -3
  58. package/dist/cjs/modules/temporal/locale/locale.js.map +1 -0
  59. package/dist/cjs/modules/temporal/pattern/common/index.d.ts +2 -0
  60. package/dist/cjs/modules/temporal/pattern/common/index.d.ts.map +1 -0
  61. package/dist/cjs/modules/temporal/pattern/common/index.js +18 -0
  62. package/dist/cjs/modules/temporal/pattern/common/index.js.map +1 -0
  63. package/dist/cjs/modules/temporal/pattern/common/types.d.ts +26 -0
  64. package/dist/cjs/modules/temporal/pattern/common/types.d.ts.map +1 -0
  65. package/dist/cjs/modules/temporal/pattern/common/types.js +3 -0
  66. package/dist/cjs/modules/temporal/pattern/common/types.js.map +1 -0
  67. package/dist/cjs/modules/temporal/pattern/index.d.ts +4 -0
  68. package/dist/cjs/modules/temporal/pattern/index.d.ts.map +1 -0
  69. package/dist/cjs/modules/temporal/pattern/index.js +20 -0
  70. package/dist/cjs/modules/temporal/pattern/index.js.map +1 -0
  71. package/dist/{esm/modules/temporal → cjs/modules/temporal/pattern}/pattern.d.ts +2 -1
  72. package/dist/cjs/modules/temporal/pattern/pattern.d.ts.map +1 -0
  73. package/dist/cjs/modules/temporal/{pattern.js → pattern/pattern.js} +19 -14
  74. package/dist/cjs/modules/temporal/pattern/pattern.js.map +1 -0
  75. package/dist/cjs/modules/temporal/pattern/tokens.d.ts +59 -0
  76. package/dist/cjs/modules/temporal/pattern/tokens.d.ts.map +1 -0
  77. package/dist/cjs/modules/temporal/pattern/tokens.js +195 -0
  78. package/dist/cjs/modules/temporal/pattern/tokens.js.map +1 -0
  79. package/dist/esm/modules/temporal/abstract.d.ts +295 -0
  80. package/dist/esm/modules/temporal/abstract.d.ts.map +1 -0
  81. package/dist/esm/modules/temporal/abstract.js +326 -0
  82. package/dist/esm/modules/temporal/abstract.js.map +1 -0
  83. package/dist/esm/modules/temporal/adapters/dayjs.d.ts +1 -1
  84. package/dist/esm/modules/temporal/adapters/dayjs.d.ts.map +1 -1
  85. package/dist/esm/modules/temporal/adapters/dayjs.js +3 -3
  86. package/dist/esm/modules/temporal/adapters/dayjs.js.map +1 -1
  87. package/dist/esm/modules/temporal/adapters/intl.d.ts +1 -1
  88. package/dist/esm/modules/temporal/adapters/intl.d.ts.map +1 -1
  89. package/dist/esm/modules/temporal/adapters/intl.js +7 -7
  90. package/dist/esm/modules/temporal/adapters/intl.js.map +1 -1
  91. package/dist/esm/modules/temporal/adapters/luxon.d.ts +1 -1
  92. package/dist/esm/modules/temporal/adapters/luxon.d.ts.map +1 -1
  93. package/dist/esm/modules/temporal/adapters/luxon.js +3 -3
  94. package/dist/esm/modules/temporal/adapters/luxon.js.map +1 -1
  95. package/dist/esm/modules/temporal/adapters/native.d.ts +3 -1
  96. package/dist/esm/modules/temporal/adapters/native.d.ts.map +1 -1
  97. package/dist/esm/modules/temporal/adapters/native.js +13 -5
  98. package/dist/esm/modules/temporal/adapters/native.js.map +1 -1
  99. package/dist/esm/modules/temporal/calendar/calendar.d.ts +56 -0
  100. package/dist/esm/modules/temporal/calendar/calendar.d.ts.map +1 -0
  101. package/dist/esm/modules/temporal/calendar/calendar.js +162 -0
  102. package/dist/esm/modules/temporal/calendar/calendar.js.map +1 -0
  103. package/dist/esm/modules/temporal/calendar/index.d.ts +2 -0
  104. package/dist/esm/modules/temporal/calendar/index.d.ts.map +1 -0
  105. package/dist/esm/modules/temporal/calendar/index.js +2 -0
  106. package/dist/esm/modules/temporal/calendar/index.js.map +1 -0
  107. package/dist/esm/modules/temporal/common/constants.d.ts +14 -3
  108. package/dist/esm/modules/temporal/common/constants.d.ts.map +1 -1
  109. package/dist/esm/modules/temporal/common/constants.js +21 -3
  110. package/dist/esm/modules/temporal/common/constants.js.map +1 -1
  111. package/dist/esm/modules/temporal/common/types.d.ts +258 -5
  112. package/dist/esm/modules/temporal/common/types.d.ts.map +1 -1
  113. package/dist/esm/modules/temporal/{duration.d.ts → duration/duration.d.ts} +9 -2
  114. package/dist/esm/modules/temporal/duration/duration.d.ts.map +1 -0
  115. package/dist/esm/modules/temporal/duration/duration.js +131 -0
  116. package/dist/esm/modules/temporal/duration/duration.js.map +1 -0
  117. package/dist/esm/modules/temporal/duration/index.d.ts +2 -0
  118. package/dist/esm/modules/temporal/duration/index.d.ts.map +1 -0
  119. package/dist/esm/modules/temporal/duration/index.js +2 -0
  120. package/dist/esm/modules/temporal/duration/index.js.map +1 -0
  121. package/dist/esm/modules/temporal/helper.d.ts +105 -77
  122. package/dist/esm/modules/temporal/helper.d.ts.map +1 -1
  123. package/dist/esm/modules/temporal/helper.js +214 -263
  124. package/dist/esm/modules/temporal/helper.js.map +1 -1
  125. package/dist/esm/modules/temporal/index.d.ts +1 -0
  126. package/dist/esm/modules/temporal/index.d.ts.map +1 -1
  127. package/dist/esm/modules/temporal/index.js +1 -0
  128. package/dist/esm/modules/temporal/index.js.map +1 -1
  129. package/dist/esm/modules/temporal/locale/index.d.ts +2 -0
  130. package/dist/esm/modules/temporal/locale/index.d.ts.map +1 -0
  131. package/dist/esm/modules/temporal/locale/index.js +2 -0
  132. package/dist/esm/modules/temporal/locale/index.js.map +1 -0
  133. package/dist/{cjs/modules/temporal → esm/modules/temporal/locale}/locale.d.ts +3 -2
  134. package/dist/esm/modules/temporal/locale/locale.d.ts.map +1 -0
  135. package/dist/esm/modules/temporal/{locale.js → locale/locale.js} +3 -3
  136. package/dist/esm/modules/temporal/locale/locale.js.map +1 -0
  137. package/dist/esm/modules/temporal/pattern/common/index.d.ts +2 -0
  138. package/dist/esm/modules/temporal/pattern/common/index.d.ts.map +1 -0
  139. package/dist/esm/modules/temporal/pattern/common/index.js +2 -0
  140. package/dist/esm/modules/temporal/pattern/common/index.js.map +1 -0
  141. package/dist/esm/modules/temporal/pattern/common/types.d.ts +26 -0
  142. package/dist/esm/modules/temporal/pattern/common/types.d.ts.map +1 -0
  143. package/dist/esm/modules/temporal/pattern/common/types.js +2 -0
  144. package/dist/esm/modules/temporal/pattern/common/types.js.map +1 -0
  145. package/dist/esm/modules/temporal/pattern/index.d.ts +4 -0
  146. package/dist/esm/modules/temporal/pattern/index.d.ts.map +1 -0
  147. package/dist/esm/modules/temporal/pattern/index.js +4 -0
  148. package/dist/esm/modules/temporal/pattern/index.js.map +1 -0
  149. package/dist/{cjs/modules/temporal → esm/modules/temporal/pattern}/pattern.d.ts +2 -1
  150. package/dist/esm/modules/temporal/pattern/pattern.d.ts.map +1 -0
  151. package/dist/esm/modules/temporal/{pattern.js → pattern/pattern.js} +20 -15
  152. package/dist/esm/modules/temporal/pattern/pattern.js.map +1 -0
  153. package/dist/esm/modules/temporal/pattern/tokens.d.ts +59 -0
  154. package/dist/esm/modules/temporal/pattern/tokens.d.ts.map +1 -0
  155. package/dist/esm/modules/temporal/pattern/tokens.js +191 -0
  156. package/dist/esm/modules/temporal/pattern/tokens.js.map +1 -0
  157. package/package.json +2 -2
  158. package/dist/cjs/modules/temporal/adapters/guards.d.ts +0 -4
  159. package/dist/cjs/modules/temporal/adapters/guards.d.ts.map +0 -1
  160. package/dist/cjs/modules/temporal/adapters/guards.js +0 -14
  161. package/dist/cjs/modules/temporal/adapters/guards.js.map +0 -1
  162. package/dist/cjs/modules/temporal/calendar.d.ts +0 -52
  163. package/dist/cjs/modules/temporal/calendar.d.ts.map +0 -1
  164. package/dist/cjs/modules/temporal/calendar.js +0 -151
  165. package/dist/cjs/modules/temporal/calendar.js.map +0 -1
  166. package/dist/cjs/modules/temporal/duration.d.ts.map +0 -1
  167. package/dist/cjs/modules/temporal/duration.js +0 -64
  168. package/dist/cjs/modules/temporal/duration.js.map +0 -1
  169. package/dist/cjs/modules/temporal/locale.d.ts.map +0 -1
  170. package/dist/cjs/modules/temporal/locale.js.map +0 -1
  171. package/dist/cjs/modules/temporal/pattern.d.ts.map +0 -1
  172. package/dist/cjs/modules/temporal/pattern.js.map +0 -1
  173. package/dist/cjs/modules/temporal/tokens.d.ts +0 -78
  174. package/dist/cjs/modules/temporal/tokens.d.ts.map +0 -1
  175. package/dist/cjs/modules/temporal/tokens.js +0 -145
  176. package/dist/cjs/modules/temporal/tokens.js.map +0 -1
  177. package/dist/esm/modules/temporal/adapters/guards.d.ts +0 -4
  178. package/dist/esm/modules/temporal/adapters/guards.d.ts.map +0 -1
  179. package/dist/esm/modules/temporal/adapters/guards.js +0 -10
  180. package/dist/esm/modules/temporal/adapters/guards.js.map +0 -1
  181. package/dist/esm/modules/temporal/calendar.d.ts +0 -52
  182. package/dist/esm/modules/temporal/calendar.d.ts.map +0 -1
  183. package/dist/esm/modules/temporal/calendar.js +0 -138
  184. package/dist/esm/modules/temporal/calendar.js.map +0 -1
  185. package/dist/esm/modules/temporal/duration.d.ts.map +0 -1
  186. package/dist/esm/modules/temporal/duration.js +0 -60
  187. package/dist/esm/modules/temporal/duration.js.map +0 -1
  188. package/dist/esm/modules/temporal/locale.d.ts.map +0 -1
  189. package/dist/esm/modules/temporal/locale.js.map +0 -1
  190. package/dist/esm/modules/temporal/pattern.d.ts.map +0 -1
  191. package/dist/esm/modules/temporal/pattern.js.map +0 -1
  192. package/dist/esm/modules/temporal/tokens.d.ts +0 -78
  193. package/dist/esm/modules/temporal/tokens.d.ts.map +0 -1
  194. package/dist/esm/modules/temporal/tokens.js +0 -133
  195. package/dist/esm/modules/temporal/tokens.js.map +0 -1
@@ -0,0 +1,326 @@
1
+ import { HTTP } from '../../common/constants/http.js';
2
+ import { BaseHelper } from '../base.js';
3
+ import { getError, isApplicationError } from '../error/index.js';
4
+ import { IntlTemporalAdapter } from './adapters/intl.js';
5
+ import { NativeTemporalAdapter } from './adapters/native.js';
6
+ import { TemporalCalendar } from './calendar/index.js';
7
+ import { DEFAULT_TEMPORAL_LOCALE, DEFAULT_TEMPORAL_TZ as DEFAULT_TEMPORAL_TZ, TemporalUnits, } from './common/constants.js';
8
+ import { TemporalLocale } from './locale/index.js';
9
+ const DAY_MILLISECONDS = 86_400_000;
10
+ /** 0001-01-01T00:00:00.000Z and 9999-12-31T23:59:59.999Z. */
11
+ const MIN_INSTANT = -62_135_596_800_000;
12
+ const MAX_INSTANT = 253_402_300_799_999;
13
+ const MAX_KNOWN_TIME_ZONES = 256;
14
+ /** How many entries each `names` list must hold. */
15
+ const NAME_LENGTHS = {
16
+ months: 12,
17
+ monthsShort: 12,
18
+ weekdays: 7,
19
+ weekdaysShort: 7,
20
+ weekdaysMin: 7,
21
+ meridiem: 2,
22
+ };
23
+ const OUT_OF_RANGE = `outside the years ${TemporalCalendar.MIN_YEAR}-${TemporalCalendar.MAX_YEAR}`; /**
24
+ * The machinery every temporal helper shares: the adapter, the zone and locale it holds, reading a
25
+ * zone's offset, turning wall clocks into instants across daylight-saving gaps and repeats, and the
26
+ * input checks. A helper extends this and supplies the operations in `ITemporalHelper`.
27
+ */
28
+ export class AbstractTemporalHelper extends BaseHelper {
29
+ /** Validated once per process: `Intl` answers the same for a zone name every time. */
30
+ static { this.knownTzs = new Set(); }
31
+ /**
32
+ * `locale` (default `en-US`) spells month and weekday names, AM/PM, relative time and durations,
33
+ * unless a call passes its own. `names` replaces `Intl`'s wording for a locale - month and weekday
34
+ * names, the AM/PM marker - keyed by the locale tag a call writes in.
35
+ */
36
+ constructor(opts) {
37
+ super({ scope: opts?.scope ?? new.target.name });
38
+ this.tz = AbstractTemporalHelper.ensureTz({
39
+ tz: opts?.tz ?? DEFAULT_TEMPORAL_TZ,
40
+ statusCode: HTTP.ResultCodes.RS_5.InternalServerError,
41
+ });
42
+ this.locale = AbstractTemporalHelper.ensureLocale({
43
+ locale: opts?.locale ?? DEFAULT_TEMPORAL_LOCALE,
44
+ });
45
+ this.adapter = opts?.adapter ?? AbstractTemporalHelper.defaultAdapter();
46
+ this.names = AbstractTemporalHelper.ensureNames({ names: opts?.names ?? {} });
47
+ }
48
+ /**
49
+ * The zone a `Date`'s local getters use on this runtime - the browser's or the server's. The one
50
+ * place this helper reads the host zone, and only when a wall-clock bridge is not given one.
51
+ */
52
+ static getHostTz() {
53
+ return new Intl.DateTimeFormat().resolvedOptions().timeZone;
54
+ }
55
+ /** The instant whose wall clock in `to` reads what `value`'s wall clock reads in `from`. */
56
+ moveWallClock(opts) {
57
+ const from = this.resolveTz({ tz: opts.from });
58
+ const to = this.resolveTz({ tz: opts.to });
59
+ const date = this.toDate({ value: opts.value, tz: from });
60
+ const wall = TemporalCalendar.wallClockOf({
61
+ parts: this.zonedParts({ epoch: date.getTime(), tz: from }),
62
+ });
63
+ return AbstractTemporalHelper.ensureInstant({
64
+ epoch: this.earliestOf({ parts: wall, tz: to }),
65
+ });
66
+ }
67
+ /** Every list the right length, so a bad table fails when the helper is built, not on a screen. */
68
+ static ensureNames(opts) {
69
+ for (const [locale, names] of Object.entries(opts.names)) {
70
+ AbstractTemporalHelper.ensureLocale({ locale });
71
+ for (const [key, length] of Object.entries(NAME_LENGTHS)) {
72
+ const list = Reflect.get(names, key);
73
+ if (list === undefined) {
74
+ continue;
75
+ }
76
+ if (!Array.isArray(list) ||
77
+ list.length !== length ||
78
+ !list.every(entry => typeof entry === 'string')) {
79
+ throw getError({
80
+ statusCode: HTTP.ResultCodes.RS_5.InternalServerError,
81
+ message: `[TemporalHelper] names['${locale}'].${key} must hold ${length} strings`,
82
+ });
83
+ }
84
+ }
85
+ }
86
+ return opts.names;
87
+ }
88
+ /** The wording this helper holds for `locale`, if any. */
89
+ namesOf(opts) {
90
+ return Object.hasOwn(this.names, opts.locale) ? this.names[opts.locale] : undefined;
91
+ }
92
+ /** The runtime's `Temporal` where it has one; `Intl`, which every runtime has, everywhere else. */
93
+ static defaultAdapter() {
94
+ return NativeTemporalAdapter.isTemporalNamespace(Reflect.get(globalThis, 'Temporal'))
95
+ ? new NativeTemporalAdapter()
96
+ : new IntlTemporalAdapter();
97
+ }
98
+ static ensureLocale(opts) {
99
+ TemporalLocale.of({ locale: opts.locale });
100
+ return opts.locale;
101
+ }
102
+ /** A parse or input error the caller may treat as "not a date"; anything else is a bug and still throws. */
103
+ static isRefusal(error) {
104
+ return isApplicationError(error) && error.statusCode === HTTP.ResultCodes.RS_4.BadRequest;
105
+ }
106
+ static ensureTz(opts) {
107
+ const { tz, statusCode } = opts;
108
+ if (AbstractTemporalHelper.knownTzs.has(tz)) {
109
+ return tz;
110
+ }
111
+ try {
112
+ new Intl.DateTimeFormat('en-US', { timeZone: tz });
113
+ }
114
+ catch (error) {
115
+ throw getError({
116
+ statusCode,
117
+ message: `[TemporalHelper] unknown time zone '${tz}' | ${error instanceof Error ? error.message : String(error)}`,
118
+ });
119
+ }
120
+ if (AbstractTemporalHelper.knownTzs.size < MAX_KNOWN_TIME_ZONES) {
121
+ AbstractTemporalHelper.knownTzs.add(tz);
122
+ }
123
+ return tz;
124
+ }
125
+ static ensureUnit(opts) {
126
+ const { unit, amount } = opts;
127
+ if (!TemporalUnits.isValid(unit)) {
128
+ throw getError({
129
+ statusCode: HTTP.ResultCodes.RS_4.BadRequest,
130
+ message: `[TemporalHelper] unknown unit '${unit}' | Supported: ${[...TemporalUnits.SCHEME_SET].join(', ')}`,
131
+ });
132
+ }
133
+ if (amount === undefined) {
134
+ return;
135
+ }
136
+ // Elapsed time takes a fraction (1.5 hours is 90 minutes); a calendar unit has no half.
137
+ const isElapsed = TemporalCalendar.EXACT_UNIT_MILLISECONDS[unit] !== undefined;
138
+ if (isElapsed ? !Number.isFinite(amount) : !Number.isInteger(amount)) {
139
+ throw getError({
140
+ statusCode: HTTP.ResultCodes.RS_4.BadRequest,
141
+ message: isElapsed
142
+ ? `[TemporalHelper] amount must be a finite number - received ${amount}`
143
+ : `[TemporalHelper] amount must be an integer for '${unit}' - received ${amount}`,
144
+ });
145
+ }
146
+ }
147
+ /** Every result passes here: an overflowing `add` is refused, never an Invalid Date. */
148
+ static ensureInstant(opts) {
149
+ const { epoch } = opts;
150
+ if (!(epoch >= MIN_INSTANT && epoch <= MAX_INSTANT)) {
151
+ throw getError({
152
+ statusCode: HTTP.ResultCodes.RS_4.BadRequest,
153
+ message: `[TemporalHelper] ${Number.isNaN(epoch) ? 'invalid date' : OUT_OF_RANGE} - received ${epoch}`,
154
+ });
155
+ }
156
+ return new Date(epoch);
157
+ }
158
+ static ensureYear(opts) {
159
+ if (!TemporalCalendar.isSupportedYear({ year: opts.parts.year })) {
160
+ throw getError({
161
+ statusCode: HTTP.ResultCodes.RS_4.BadRequest,
162
+ message: `[TemporalHelper] year ${opts.parts.year} is ${OUT_OF_RANGE}`,
163
+ });
164
+ }
165
+ }
166
+ resolveTz(opts) {
167
+ return opts.tz === undefined
168
+ ? this.tz
169
+ : AbstractTemporalHelper.ensureTz({
170
+ tz: opts.tz,
171
+ statusCode: HTTP.ResultCodes.RS_4.BadRequest,
172
+ });
173
+ }
174
+ /** The adapter's one answer, rounded: an offset is whole milliseconds, a library's float may not be. */
175
+ offsetAt(opts) {
176
+ return Math.round(this.adapter.getOffsetMilliseconds({ value: new Date(opts.epoch), tz: opts.tz }));
177
+ }
178
+ zonedParts(opts) {
179
+ const parts = TemporalCalendar.wallClockAt({
180
+ epoch: opts.epoch,
181
+ offsetMilliseconds: this.offsetAt(opts),
182
+ });
183
+ AbstractTemporalHelper.ensureYear({ parts });
184
+ return parts;
185
+ }
186
+ /**
187
+ * Every instant whose wall clock reads `parts` in the zone, earliest first: one as a rule, two
188
+ * when the clock goes back, none when it jumps forward. `forward` is where a skipped time lands -
189
+ * read with the offset from before the jump, so it moves past the gap.
190
+ */
191
+ instantsOf(opts) {
192
+ const { parts, tz } = opts;
193
+ const local = TemporalCalendar.epochAtOffset({ parts, offsetMilliseconds: 0 });
194
+ const before = this.offsetAt({ epoch: local - DAY_MILLISECONDS, tz });
195
+ const after = this.offsetAt({ epoch: local + DAY_MILLISECONDS, tz });
196
+ const offsets = before === after ? [before] : [before, after];
197
+ const instants = [];
198
+ for (const offset of offsets) {
199
+ const candidate = local - offset;
200
+ if (this.offsetAt({ epoch: candidate, tz }) === offset) {
201
+ instants.push(candidate);
202
+ }
203
+ }
204
+ instants.sort((left, right) => left - right);
205
+ return { instants, forward: local - before };
206
+ }
207
+ /** The instant wall-clock `parts` name: a skipped time moves forward, a repeated one takes the earlier. */
208
+ earliestOf(opts) {
209
+ const { instants, forward } = this.instantsOf(opts);
210
+ return instants[0] ?? forward;
211
+ }
212
+ /**
213
+ * `[start, end)` of the unit holding `epoch`. A day or longer starts at its first instant. An hour
214
+ * or less repeats when the clock goes back, so it starts at the latest start not after `epoch`,
215
+ * and ends where the wall clock next shows either the following unit or this one's start again.
216
+ */
217
+ unitBounds(opts) {
218
+ const { epoch, unit, tz } = opts;
219
+ const startParts = TemporalCalendar.truncate({
220
+ parts: this.zonedParts({ epoch, tz }),
221
+ unit,
222
+ });
223
+ const nextParts = TemporalCalendar.shift({ parts: startParts, amount: 1, unit });
224
+ AbstractTemporalHelper.ensureYear({ parts: nextParts });
225
+ const starts = this.instantsOf({ parts: startParts, tz });
226
+ if (TemporalCalendar.EXACT_UNIT_MILLISECONDS[unit] === undefined) {
227
+ const start = starts.instants[0] ?? starts.forward;
228
+ return { start, end: this.earliestOf({ parts: nextParts, tz }) };
229
+ }
230
+ const started = starts.instants.filter(instant => instant <= epoch);
231
+ const start = started.at(-1) ?? starts.instants[0] ?? starts.forward;
232
+ const nexts = this.instantsOf({ parts: nextParts, tz });
233
+ const following = nexts.instants.find(instant => instant > start) ?? nexts.forward;
234
+ const repeated = starts.instants.find(instant => instant > start);
235
+ return { start, end: repeated === undefined ? following : Math.min(repeated, following) };
236
+ }
237
+ getTz() {
238
+ return this.tz;
239
+ }
240
+ getLocale() {
241
+ return this.locale;
242
+ }
243
+ now() {
244
+ return new Date();
245
+ }
246
+ /** The instant a value names. An ISO string without an offset is read as wall clock in the zone. */
247
+ toDate(opts) {
248
+ const { value } = opts;
249
+ if (typeof value === 'string') {
250
+ return this.parse({ value, tz: opts.tz });
251
+ }
252
+ if (value instanceof Date) {
253
+ return AbstractTemporalHelper.ensureInstant({ epoch: value.getTime() });
254
+ }
255
+ if (typeof value === 'number') {
256
+ return AbstractTemporalHelper.ensureInstant({ epoch: value });
257
+ }
258
+ // `null` above all: read as a number it would be 1970, a date nobody meant.
259
+ throw AbstractTemporalHelper.notADate({ value });
260
+ }
261
+ static notADate(opts) {
262
+ const { value } = opts;
263
+ return getError({
264
+ statusCode: HTTP.ResultCodes.RS_4.BadRequest,
265
+ message: `[TemporalHelper] not a date - received ${value === null ? 'null' : typeof value}`,
266
+ });
267
+ }
268
+ /** `toDate`, answering `null` where `toDate` refuses the value: null, undefined, bad text, NaN. */
269
+ tryToDate(opts) {
270
+ const { value } = opts;
271
+ // Outside the try: a bad zone is the caller's bug, not an unreadable value.
272
+ const tz = this.resolveTz({ tz: opts.tz });
273
+ if (value === null || value === undefined) {
274
+ return null;
275
+ }
276
+ try {
277
+ return this.toDate({ value, tz });
278
+ }
279
+ catch (error) {
280
+ if (AbstractTemporalHelper.isRefusal(error)) {
281
+ return null;
282
+ }
283
+ throw error;
284
+ }
285
+ }
286
+ /** The wall clock the value shows in the zone, with its ISO weekday and UTC offset. */
287
+ parts(opts) {
288
+ const tz = this.resolveTz({ tz: opts.tz });
289
+ const date = this.toDate({ value: opts.value, tz });
290
+ return this.zonedParts({ epoch: date.getTime(), tz });
291
+ }
292
+ /**
293
+ * Fractional months from `other` to `value` (dayjs and moment's month difference): anchored on the
294
+ * date with the later day of the month, whole months by `add`, the rest as a share of the month
295
+ * it falls in.
296
+ */
297
+ monthGap(opts) {
298
+ const { value, other, tz } = opts;
299
+ const valueParts = this.zonedParts({ epoch: value, tz });
300
+ const otherParts = this.zonedParts({ epoch: other, tz });
301
+ if (valueParts.day < otherParts.day) {
302
+ return -this.monthGap({ value: other, other: value, tz });
303
+ }
304
+ const whole = (otherParts.year - valueParts.year) * 12 + (otherParts.month - valueParts.month);
305
+ const anchor = this.shiftMonthsFrom({ parts: valueParts, months: whole, tz });
306
+ const isBelow = other - anchor < 0;
307
+ const nextAnchor = this.shiftMonthsFrom({
308
+ parts: valueParts,
309
+ months: whole + (isBelow ? -1 : 1),
310
+ tz,
311
+ });
312
+ const span = isBelow ? anchor - nextAnchor : nextAnchor - anchor;
313
+ return -(whole + (other - anchor) / span) || 0;
314
+ }
315
+ /** `add` by months without the 1-9999 check: an anchor one month past the range is still a number. */
316
+ shiftMonthsFrom(opts) {
317
+ const { parts, months, tz } = opts;
318
+ const shifted = TemporalCalendar.shift({
319
+ parts: TemporalCalendar.wallClockOf({ parts }),
320
+ amount: months,
321
+ unit: TemporalUnits.MONTH,
322
+ });
323
+ return this.earliestOf({ parts: shifted, tz });
324
+ }
325
+ }
326
+ //# sourceMappingURL=abstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../src/modules/temporal/abstract.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export declare class DayjsTemporalAdapter implements ITemporalAdapter {
15
15
  });
16
16
  getOffsetMilliseconds(opts: {
17
17
  value: Date;
18
- timeZone: string;
18
+ tz: string;
19
19
  }): number;
20
20
  }
21
21
  //# sourceMappingURL=dayjs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dayjs.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/dayjs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAUvE;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;gBAE1B,IAAI,EAAE;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE;IAY1C,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAiBvE"}
1
+ {"version":3,"file":"dayjs.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/dayjs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAUvE;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;gBAE1B,IAAI,EAAE;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE;IAY1C,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAiBjE"}
@@ -25,18 +25,18 @@ export class DayjsTemporalAdapter {
25
25
  this.dayjs = opts.dayjs;
26
26
  }
27
27
  getOffsetMilliseconds(opts) {
28
- const { value, timeZone } = opts;
28
+ const { value, tz } = opts;
29
29
  let epoch = value.getTime();
30
30
  while (epoch < FIRST_SAFE_EPOCH) {
31
31
  epoch += GREGORIAN_CYCLE_MILLISECONDS;
32
32
  }
33
33
  try {
34
- return this.dayjs(epoch).tz(timeZone).utcOffset() * MILLISECONDS_PER_MINUTE;
34
+ return this.dayjs(epoch).tz(tz).utcOffset() * MILLISECONDS_PER_MINUTE;
35
35
  }
36
36
  catch (error) {
37
37
  throw getError({
38
38
  statusCode: HTTP.ResultCodes.RS_4.BadRequest,
39
- message: `[DayjsTemporalAdapter] no offset for ${timeZone} at ${value.getTime()} | ${error instanceof Error ? error.message : String(error)}`,
39
+ message: `[DayjsTemporalAdapter] no offset for ${tz} at ${value.getTime()} | ${error instanceof Error ? error.message : String(error)}`,
40
40
  });
41
41
  }
42
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dayjs.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/dayjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC,kFAAkF;AAClF,MAAM,4BAA4B,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,+GAA+G;AAC/G,MAAM,gBAAgB,GAAG,CAAC,kBAAkB,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,OAAO,oBAAoB;IAG/B,YAAY,IAA8B;QACxC,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,UAAU,EAAE,CAAC;YACzC,MAAM,QAAQ,CAAC;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB;gBACrD,OAAO,EACL,sIAAsI;aACzI,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,qBAAqB,CAAC,IAAuC;QAC3D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAEjC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,KAAK,GAAG,gBAAgB,EAAE,CAAC;YAChC,KAAK,IAAI,4BAA4B,CAAC;QACxC,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,GAAG,uBAAuB,CAAC;QAC9E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,CAAC;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;gBAC5C,OAAO,EAAE,wCAAwC,QAAQ,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAC9I,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"dayjs.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/dayjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC,kFAAkF;AAClF,MAAM,4BAA4B,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,+GAA+G;AAC/G,MAAM,gBAAgB,GAAG,CAAC,kBAAkB,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,OAAO,oBAAoB;IAG/B,YAAY,IAA8B;QACxC,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,UAAU,EAAE,CAAC;YACzC,MAAM,QAAQ,CAAC;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB;gBACrD,OAAO,EACL,sIAAsI;aACzI,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,qBAAqB,CAAC,IAAiC;QACrD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAE3B,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,KAAK,GAAG,gBAAgB,EAAE,CAAC;YAChC,KAAK,IAAI,4BAA4B,CAAC;QACxC,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,uBAAuB,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,CAAC;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;gBAC5C,OAAO,EAAE,wCAAwC,EAAE,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACxI,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
@@ -10,7 +10,7 @@ export declare class IntlTemporalAdapter implements ITemporalAdapter {
10
10
  private static formatterOf;
11
11
  getOffsetMilliseconds(opts: {
12
12
  value: Date;
13
- timeZone: string;
13
+ tz: string;
14
14
  }): number;
15
15
  }
16
16
  //# sourceMappingURL=intl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intl.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/intl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOxD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,gBAAgB;IAC1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAG9B;IAEJ,gIAAgI;IAChI,OAAO,CAAC,MAAM,CAAC,WAAW;IA4C1B,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CA+BvE"}
1
+ {"version":3,"file":"intl.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/intl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOxD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,gBAAgB;IAC1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAG9B;IAEJ,gIAAgI;IAChI,OAAO,CAAC,MAAM,CAAC,WAAW;IA4C1B,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CA+BjE"}
@@ -12,15 +12,15 @@ export class IntlTemporalAdapter {
12
12
  static { this.formatters = new Map(); }
13
13
  /** The zone's formatter, and how it spells the common era - so any other era is before year 1, whatever the engine calls it. */
14
14
  static formatterOf(opts) {
15
- const { timeZone } = opts;
16
- const cached = IntlTemporalAdapter.formatters.get(timeZone);
15
+ const { tz } = opts;
16
+ const cached = IntlTemporalAdapter.formatters.get(tz);
17
17
  if (cached) {
18
18
  return cached;
19
19
  }
20
20
  let formatter;
21
21
  try {
22
22
  formatter = new Intl.DateTimeFormat('en-US', {
23
- timeZone,
23
+ timeZone: tz,
24
24
  hourCycle: 'h23',
25
25
  era: 'short',
26
26
  year: 'numeric',
@@ -34,7 +34,7 @@ export class IntlTemporalAdapter {
34
34
  catch (error) {
35
35
  throw getError({
36
36
  statusCode: HTTP.ResultCodes.RS_4.BadRequest,
37
- message: `[IntlTemporalAdapter] unknown time zone '${timeZone}' | ${error instanceof Error ? error.message : String(error)}`,
37
+ message: `[IntlTemporalAdapter] unknown time zone '${tz}' | ${error instanceof Error ? error.message : String(error)}`,
38
38
  });
39
39
  }
40
40
  const commonEra = formatter.formatToParts(new Date(0)).find(part => part.type === 'era')?.value;
@@ -46,15 +46,15 @@ export class IntlTemporalAdapter {
46
46
  }
47
47
  }
48
48
  const entry = { formatter, commonEra };
49
- IntlTemporalAdapter.formatters.set(timeZone, entry);
49
+ IntlTemporalAdapter.formatters.set(tz, entry);
50
50
  return entry;
51
51
  }
52
52
  getOffsetMilliseconds(opts) {
53
- const { value, timeZone } = opts;
53
+ const { value, tz } = opts;
54
54
  const epoch = value.getTime();
55
55
  const fields = { year: 0, month: 1, day: 1, hour: 0, minute: 0, second: 0 };
56
56
  let isBeforeCommonEra = false;
57
- const { formatter, commonEra } = IntlTemporalAdapter.formatterOf({ timeZone });
57
+ const { formatter, commonEra } = IntlTemporalAdapter.formatterOf({ tz });
58
58
  for (const part of formatter.formatToParts(value)) {
59
59
  if (part.type === 'era') {
60
60
  isBeforeCommonEra = commonEra !== undefined && part.value !== commonEra;
@@ -1 +1 @@
1
- {"version":3,"file":"intl.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/intl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intl.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/intl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,+FAA+F;AAC/F,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;aACN,eAAU,GAAG,IAAI,GAAG,EAGzC,CAAC;IAEJ,gIAAgI;IACxH,MAAM,CAAC,WAAW,CAAC,IAAoB;QAI7C,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,SAA8B,CAAC;QACnC,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;gBAC3C,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,KAAK;gBAChB,GAAG,EAAE,OAAO;gBACZ,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,CAAC;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;gBAC5C,OAAO,EAAE,4CAA4C,EAAE,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACvH,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,KAAK,CAAC;QAEhG,8EAA8E;QAC9E,IAAI,mBAAmB,CAAC,UAAU,CAAC,IAAI,IAAI,qBAAqB,EAAE,CAAC;YACjE,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAClE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QACvC,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB,CAAC,IAAiC;QACrD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAE9B,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC5E,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACzE,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACxB,iBAAiB,GAAG,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;gBACxE,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,qFAAqF;QACrF,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/D,0DAA0D;QAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAElD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAE7D,0FAA0F;QAC1F,MAAM,WAAW,GACf,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,CAAC;QACxF,OAAO,SAAS,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC;IAC3C,CAAC"}
@@ -7,7 +7,7 @@ export declare class LuxonTemporalAdapter implements ITemporalAdapter {
7
7
  });
8
8
  getOffsetMilliseconds(opts: {
9
9
  value: Date;
10
- timeZone: string;
10
+ tz: string;
11
11
  }): number;
12
12
  }
13
13
  //# sourceMappingURL=luxon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"luxon.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/luxon.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAI/E,oFAAoF;AACpF,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;gBAErC,IAAI,EAAE;QAAE,QAAQ,EAAE,qBAAqB,CAAA;KAAE;IAIrD,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAavE"}
1
+ {"version":3,"file":"luxon.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/luxon.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAI/E,oFAAoF;AACpF,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;gBAErC,IAAI,EAAE;QAAE,QAAQ,EAAE,qBAAqB,CAAA;KAAE;IAIrD,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAajE"}
@@ -7,13 +7,13 @@ export class LuxonTemporalAdapter {
7
7
  this.dateTime = opts.DateTime;
8
8
  }
9
9
  getOffsetMilliseconds(opts) {
10
- const { value, timeZone } = opts;
11
- const zoned = this.dateTime.fromMillis(value.getTime(), { zone: timeZone });
10
+ const { value, tz } = opts;
11
+ const zoned = this.dateTime.fromMillis(value.getTime(), { zone: tz });
12
12
  // Luxon answers an unusable zone with an invalid `DateTime` rather than a throw.
13
13
  if (!zoned.isValid) {
14
14
  throw getError({
15
15
  statusCode: HTTP.ResultCodes.RS_4.BadRequest,
16
- message: `[LuxonTemporalAdapter] no offset for ${timeZone} at ${value.getTime()} | ${zoned.invalidReason ?? 'invalid'}`,
16
+ message: `[LuxonTemporalAdapter] no offset for ${tz} at ${value.getTime()} | ${zoned.invalidReason ?? 'invalid'}`,
17
17
  });
18
18
  }
19
19
  return zoned.offset * MILLISECONDS_PER_MINUTE;
@@ -1 +1 @@
1
- {"version":3,"file":"luxon.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/luxon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC,oFAAoF;AACpF,MAAM,OAAO,oBAAoB;IAG/B,YAAY,IAAyC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,qBAAqB,CAAC,IAAuC;QAC3D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE5E,iFAAiF;QACjF,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,QAAQ,CAAC;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;gBAC5C,OAAO,EAAE,wCAAwC,QAAQ,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,aAAa,IAAI,SAAS,EAAE;aACxH,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,uBAAuB,CAAC;IAChD,CAAC;CACF"}
1
+ {"version":3,"file":"luxon.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/luxon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC,oFAAoF;AACpF,MAAM,OAAO,oBAAoB;IAG/B,YAAY,IAAyC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,qBAAqB,CAAC,IAAiC;QACrD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAEtE,iFAAiF;QACjF,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,QAAQ,CAAC;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;gBAC5C,OAAO,EAAE,wCAAwC,EAAE,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,aAAa,IAAI,SAAS,EAAE;aAClH,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,uBAAuB,CAAC;IAChD,CAAC;CACF"}
@@ -5,12 +5,14 @@ import type { ITemporalAdapter, ITemporalNamespace } from '../common/types.js';
5
5
  */
6
6
  export declare class NativeTemporalAdapter implements ITemporalAdapter {
7
7
  private readonly temporal;
8
+ /** A `Temporal` namespace - the runtime's global or a polyfill's - by the one member the adapter drives. */
9
+ static isTemporalNamespace(value: unknown): value is ITemporalNamespace;
8
10
  constructor(opts?: {
9
11
  temporal?: ITemporalNamespace;
10
12
  });
11
13
  getOffsetMilliseconds(opts: {
12
14
  value: Date;
13
- timeZone: string;
15
+ tz: string;
14
16
  }): number;
15
17
  }
16
18
  //# sourceMappingURL=native.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/native.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAK5E;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAElC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,kBAAkB,CAAA;KAAE;IAcpD,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAevE"}
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/native.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI5E;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C,4GAA4G;IAC5G,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB;gBAY3D,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,kBAAkB,CAAA;KAAE;IAcpD,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAejE"}
@@ -1,15 +1,23 @@
1
1
  import { HTTP } from '../../../common/constants/http.js';
2
2
  import { getError } from '../../error/index.js';
3
- import { isTemporalNamespace } from './guards.js';
4
3
  const NANOSECONDS_PER_MILLISECOND = 1_000_000;
5
4
  /**
6
5
  * Time zones through the TC39 `Temporal` API: the runtime's global (Bun has it, as do current
7
6
  * browsers), or a polyfill's namespace passed as `temporal`.
8
7
  */
9
8
  export class NativeTemporalAdapter {
9
+ /** A `Temporal` namespace - the runtime's global or a polyfill's - by the one member the adapter drives. */
10
+ static isTemporalNamespace(value) {
11
+ if (typeof value !== 'object' || value === null || !('Instant' in value)) {
12
+ return false;
13
+ }
14
+ const instant = value.Instant;
15
+ return ((typeof instant === 'function' || (typeof instant === 'object' && instant !== null)) &&
16
+ typeof Reflect.get(instant, 'fromEpochMilliseconds') === 'function');
17
+ }
10
18
  constructor(opts) {
11
19
  const temporal = opts?.temporal ?? Reflect.get(globalThis, 'Temporal');
12
- if (!isTemporalNamespace(temporal)) {
20
+ if (!NativeTemporalAdapter.isTemporalNamespace(temporal)) {
13
21
  throw getError({
14
22
  statusCode: HTTP.ResultCodes.RS_5.InternalServerError,
15
23
  message: '[NativeTemporalAdapter] Temporal is not available on this runtime | Pass a polyfill as `temporal`, or use DayjsTemporalAdapter / LuxonTemporalAdapter',
@@ -18,15 +26,15 @@ export class NativeTemporalAdapter {
18
26
  this.temporal = temporal;
19
27
  }
20
28
  getOffsetMilliseconds(opts) {
21
- const { value, timeZone } = opts;
29
+ const { value, tz } = opts;
22
30
  try {
23
- const zoned = this.temporal.Instant.fromEpochMilliseconds(value.getTime()).toZonedDateTimeISO(timeZone);
31
+ const zoned = this.temporal.Instant.fromEpochMilliseconds(value.getTime()).toZonedDateTimeISO(tz);
24
32
  return zoned.offsetNanoseconds / NANOSECONDS_PER_MILLISECOND;
25
33
  }
26
34
  catch (error) {
27
35
  throw getError({
28
36
  statusCode: HTTP.ResultCodes.RS_4.BadRequest,
29
- message: `[NativeTemporalAdapter] no offset for ${timeZone} at ${value.getTime()} | ${error instanceof Error ? error.message : String(error)}`,
37
+ message: `[NativeTemporalAdapter] no offset for ${tz} at ${value.getTime()} | ${error instanceof Error ? error.message : String(error)}`,
30
38
  });
31
39
  }
32
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,2BAA2B,GAAG,SAAS,CAAC;AAE9C;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IAGhC,YAAY,IAAwC;QAClD,MAAM,QAAQ,GAAY,IAAI,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEhF,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,MAAM,QAAQ,CAAC;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB;gBACrD,OAAO,EACL,uJAAuJ;aAC1J,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,qBAAqB,CAAC,IAAuC;QAC3D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,kBAAkB,CAC3F,QAAQ,CACT,CAAC;YACF,OAAO,KAAK,CAAC,iBAAiB,GAAG,2BAA2B,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,CAAC;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;gBAC5C,OAAO,EAAE,yCAAyC,QAAQ,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAC/I,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,2BAA2B,GAAG,SAAS,CAAC;AAE9C;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IAGhC,4GAA4G;IAC5G,MAAM,CAAC,mBAAmB,CAAC,KAAc;QACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,EAAE,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,OAAO,CACL,CAAC,OAAO,OAAO,KAAK,UAAU,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC;YACpF,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,uBAAuB,CAAC,KAAK,UAAU,CACpE,CAAC;IACJ,CAAC;IAED,YAAY,IAAwC;QAClD,MAAM,QAAQ,GAAY,IAAI,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEhF,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,MAAM,QAAQ,CAAC;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB;gBACrD,OAAO,EACL,uJAAuJ;aAC1J,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,qBAAqB,CAAC,IAAiC;QACrD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,kBAAkB,CAC3F,EAAE,CACH,CAAC;YACF,OAAO,KAAK,CAAC,iBAAiB,GAAG,2BAA2B,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,CAAC;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;gBAC5C,OAAO,EAAE,yCAAyC,EAAE,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACzI,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}