@venizia/ignis-helpers 0.2.1 → 0.2.2-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/cjs/modules/temporal/adapters/index.d.ts +1 -0
  2. package/dist/cjs/modules/temporal/adapters/index.d.ts.map +1 -1
  3. package/dist/cjs/modules/temporal/adapters/index.js +1 -0
  4. package/dist/cjs/modules/temporal/adapters/index.js.map +1 -1
  5. package/dist/cjs/modules/temporal/adapters/intl.d.ts +16 -0
  6. package/dist/cjs/modules/temporal/adapters/intl.d.ts.map +1 -0
  7. package/dist/cjs/modules/temporal/adapters/intl.js +83 -0
  8. package/dist/cjs/modules/temporal/adapters/intl.js.map +1 -0
  9. package/dist/cjs/modules/temporal/common/constants.d.ts +12 -0
  10. package/dist/cjs/modules/temporal/common/constants.d.ts.map +1 -1
  11. package/dist/cjs/modules/temporal/common/constants.js +15 -1
  12. package/dist/cjs/modules/temporal/common/constants.js.map +1 -1
  13. package/dist/cjs/modules/temporal/common/types.d.ts +9 -0
  14. package/dist/cjs/modules/temporal/common/types.d.ts.map +1 -1
  15. package/dist/cjs/modules/temporal/duration.d.ts +19 -0
  16. package/dist/cjs/modules/temporal/duration.d.ts.map +1 -0
  17. package/dist/cjs/modules/temporal/duration.js +64 -0
  18. package/dist/cjs/modules/temporal/duration.js.map +1 -0
  19. package/dist/cjs/modules/temporal/helper.d.ts +90 -4
  20. package/dist/cjs/modules/temporal/helper.d.ts.map +1 -1
  21. package/dist/cjs/modules/temporal/helper.js +213 -3
  22. package/dist/cjs/modules/temporal/helper.js.map +1 -1
  23. package/dist/cjs/modules/temporal/locale.d.ts +40 -0
  24. package/dist/cjs/modules/temporal/locale.d.ts.map +1 -0
  25. package/dist/cjs/modules/temporal/locale.js +124 -0
  26. package/dist/cjs/modules/temporal/locale.js.map +1 -0
  27. package/dist/cjs/modules/temporal/pattern.d.ts +2 -0
  28. package/dist/cjs/modules/temporal/pattern.d.ts.map +1 -1
  29. package/dist/cjs/modules/temporal/pattern.js +15 -2
  30. package/dist/cjs/modules/temporal/pattern.js.map +1 -1
  31. package/dist/cjs/modules/temporal/tokens.d.ts +19 -6
  32. package/dist/cjs/modules/temporal/tokens.d.ts.map +1 -1
  33. package/dist/cjs/modules/temporal/tokens.js +49 -17
  34. package/dist/cjs/modules/temporal/tokens.js.map +1 -1
  35. package/dist/esm/modules/temporal/adapters/index.d.ts +1 -0
  36. package/dist/esm/modules/temporal/adapters/index.d.ts.map +1 -1
  37. package/dist/esm/modules/temporal/adapters/index.js +1 -0
  38. package/dist/esm/modules/temporal/adapters/index.js.map +1 -1
  39. package/dist/esm/modules/temporal/adapters/intl.d.ts +16 -0
  40. package/dist/esm/modules/temporal/adapters/intl.d.ts.map +1 -0
  41. package/dist/esm/modules/temporal/adapters/intl.js +79 -0
  42. package/dist/esm/modules/temporal/adapters/intl.js.map +1 -0
  43. package/dist/esm/modules/temporal/common/constants.d.ts +12 -0
  44. package/dist/esm/modules/temporal/common/constants.d.ts.map +1 -1
  45. package/dist/esm/modules/temporal/common/constants.js +13 -0
  46. package/dist/esm/modules/temporal/common/constants.js.map +1 -1
  47. package/dist/esm/modules/temporal/common/types.d.ts +9 -0
  48. package/dist/esm/modules/temporal/common/types.d.ts.map +1 -1
  49. package/dist/esm/modules/temporal/duration.d.ts +19 -0
  50. package/dist/esm/modules/temporal/duration.d.ts.map +1 -0
  51. package/dist/esm/modules/temporal/duration.js +60 -0
  52. package/dist/esm/modules/temporal/duration.js.map +1 -0
  53. package/dist/esm/modules/temporal/helper.d.ts +90 -4
  54. package/dist/esm/modules/temporal/helper.d.ts.map +1 -1
  55. package/dist/esm/modules/temporal/helper.js +215 -5
  56. package/dist/esm/modules/temporal/helper.js.map +1 -1
  57. package/dist/esm/modules/temporal/locale.d.ts +40 -0
  58. package/dist/esm/modules/temporal/locale.d.ts.map +1 -0
  59. package/dist/esm/modules/temporal/locale.js +120 -0
  60. package/dist/esm/modules/temporal/locale.js.map +1 -0
  61. package/dist/esm/modules/temporal/pattern.d.ts +2 -0
  62. package/dist/esm/modules/temporal/pattern.d.ts.map +1 -1
  63. package/dist/esm/modules/temporal/pattern.js +16 -3
  64. package/dist/esm/modules/temporal/pattern.js.map +1 -1
  65. package/dist/esm/modules/temporal/tokens.d.ts +19 -6
  66. package/dist/esm/modules/temporal/tokens.d.ts.map +1 -1
  67. package/dist/esm/modules/temporal/tokens.js +47 -16
  68. package/dist/esm/modules/temporal/tokens.js.map +1 -1
  69. package/package.json +1 -1
@@ -4,9 +4,13 @@ exports.TemporalHelper = void 0;
4
4
  const http_1 = require("../../common/constants/http");
5
5
  const base_1 = require("../base");
6
6
  const error_1 = require("../error");
7
+ const guards_1 = require("./adapters/guards");
8
+ const intl_1 = require("./adapters/intl");
7
9
  const native_1 = require("./adapters/native");
8
10
  const calendar_1 = require("./calendar");
9
11
  const constants_1 = require("./common/constants");
12
+ const duration_1 = require("./duration");
13
+ const locale_1 = require("./locale");
10
14
  const pattern_1 = require("./pattern");
11
15
  /** `2026-09-19`, `2026-09-19T12:00`, `2026-09-19 12:00:00.021+07:00`, `...Z` - an offset only after a time. */
12
16
  const ISO_8601 = /^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,9}))?)?(Z|[+-]\d{2}(?::?\d{2}(?::?\d{2})?)?)?)?$/i;
@@ -17,10 +21,22 @@ const DAY_MILLISECONDS = 86_400_000;
17
21
  const MIN_INSTANT = -62_135_596_800_000;
18
22
  const MAX_INSTANT = 253_402_300_799_999;
19
23
  const MAX_KNOWN_TIME_ZONES = 256;
24
+ /** `formatIntl` builds one formatter per locale, options and zone; capped so caller-fed options cannot grow it. */
25
+ const MAX_INTL_FORMATTERS = 128;
26
+ /** `relative` without a unit says it in the largest whole one, down to seconds. */
27
+ const RELATIVE_UNITS = [
28
+ constants_1.TemporalUnits.YEAR,
29
+ constants_1.TemporalUnits.MONTH,
30
+ constants_1.TemporalUnits.WEEK,
31
+ constants_1.TemporalUnits.DAY,
32
+ constants_1.TemporalUnits.HOUR,
33
+ constants_1.TemporalUnits.MINUTE,
34
+ constants_1.TemporalUnits.SECOND,
35
+ ];
20
36
  const OUT_OF_RANGE = `outside the years ${calendar_1.MIN_TEMPORAL_YEAR}-${calendar_1.MAX_TEMPORAL_YEAR}`;
21
37
  /**
22
38
  * Dates in one time zone, through whichever library you choose: pass an adapter - the runtime's
23
- * `Temporal` (the default), your own dayjs, your own Luxon. The adapter only reports a zone's UTC
39
+ * `Temporal` (the default where the runtime has it, `Intl` everywhere else), your own dayjs, your own Luxon. The adapter only reports a zone's UTC
24
40
  * offset at an instant; the wall clock, daylight-saving gaps and repeats, and the calendar math all
25
41
  * live here, so every adapter shares one behaviour.
26
42
  *
@@ -31,13 +47,33 @@ const OUT_OF_RANGE = `outside the years ${calendar_1.MIN_TEMPORAL_YEAR}-${calend
31
47
  class TemporalHelper extends base_1.BaseHelper {
32
48
  /** Validated once per process: `Intl` answers the same for a zone name every time. */
33
49
  static { this.knownTimeZones = new Set(); }
50
+ static { this.intlFormatters = new Map(); }
51
+ /**
52
+ * `locale` (default `en-US`) spells month and weekday names, AM/PM, relative time and durations,
53
+ * unless a call passes its own.
54
+ */
34
55
  constructor(opts) {
35
56
  super({ scope: opts?.scope ?? TemporalHelper.name });
36
57
  this.timeZone = TemporalHelper.ensureTimeZone({
37
58
  timeZone: opts?.timeZone ?? constants_1.DEFAULT_TEMPORAL_TIME_ZONE,
38
59
  statusCode: http_1.HTTP.ResultCodes.RS_5.InternalServerError,
39
60
  });
40
- this.adapter = opts?.adapter ?? new native_1.NativeTemporalAdapter();
61
+ this.locale = TemporalHelper.ensureLocale({ locale: opts?.locale ?? constants_1.DEFAULT_TEMPORAL_LOCALE });
62
+ this.adapter = opts?.adapter ?? TemporalHelper.defaultAdapter();
63
+ }
64
+ /** The runtime's `Temporal` where it has one; `Intl`, which every runtime has, everywhere else. */
65
+ static defaultAdapter() {
66
+ return (0, guards_1.isTemporalNamespace)(Reflect.get(globalThis, 'Temporal'))
67
+ ? new native_1.NativeTemporalAdapter()
68
+ : new intl_1.IntlTemporalAdapter();
69
+ }
70
+ static ensureLocale(opts) {
71
+ locale_1.TemporalLocale.of({ locale: opts.locale });
72
+ return opts.locale;
73
+ }
74
+ /** A parse or input error the caller may treat as "not a date"; anything else is a bug and still throws. */
75
+ static isRefusal(error) {
76
+ return (0, error_1.isApplicationError)(error) && error.statusCode === http_1.HTTP.ResultCodes.RS_4.BadRequest;
41
77
  }
42
78
  static ensureTimeZone(opts) {
43
79
  const { timeZone, statusCode } = opts;
@@ -160,6 +196,9 @@ class TemporalHelper extends base_1.BaseHelper {
160
196
  getTimeZone() {
161
197
  return this.timeZone;
162
198
  }
199
+ getLocale() {
200
+ return this.locale;
201
+ }
163
202
  now() {
164
203
  return new Date();
165
204
  }
@@ -238,13 +277,57 @@ class TemporalHelper extends base_1.BaseHelper {
238
277
  const milliseconds = ((hours * 60 + minutes) * 60 + seconds) * 1000;
239
278
  return { parts, offsetMilliseconds: sign === '-' ? -milliseconds : milliseconds };
240
279
  }
241
- /** Writes the value in the zone. Without a `pattern`: ISO 8601 with the zone's offset. */
280
+ /** `parse`, answering `null` where `parse` refuses the value. A pattern that does not compile still throws. */
281
+ tryParse(opts) {
282
+ // Outside the try: a bad zone is the caller's bug, as a broken pattern is.
283
+ const timeZone = this.resolveTimeZone({ timeZone: opts.timeZone });
284
+ try {
285
+ return this.parse({ ...opts, timeZone });
286
+ }
287
+ catch (error) {
288
+ if (TemporalHelper.isRefusal(error)) {
289
+ return null;
290
+ }
291
+ throw error;
292
+ }
293
+ }
294
+ /** Whether the value names an instant in years 1-9999 - a string read as `parse` reads it. */
295
+ isValid(opts) {
296
+ const { value, pattern, timeZone } = opts;
297
+ if (typeof value === 'string') {
298
+ return this.tryParse({ value, pattern, timeZone }) !== null;
299
+ }
300
+ const epoch = value instanceof Date ? value.getTime() : value;
301
+ return epoch >= MIN_INSTANT && epoch <= MAX_INSTANT;
302
+ }
303
+ /**
304
+ * Writes the value in the zone. Without a `pattern`: ISO 8601 with the zone's offset. The locale
305
+ * tokens `MMMM MMM dddd ddd A a hh h LL L` are spelled in `locale`.
306
+ */
242
307
  format(opts) {
243
308
  return pattern_1.TemporalPattern.format({
244
309
  pattern: opts.pattern ?? constants_1.DEFAULT_TEMPORAL_PATTERN,
245
310
  parts: this.parts({ value: opts.value, timeZone: opts.timeZone }),
311
+ locale: opts.locale ?? this.locale,
246
312
  });
247
313
  }
314
+ /** Writes the value with `Intl.DateTimeFormat` options, in the zone - for what the pattern tokens cannot say. */
315
+ formatIntl(opts) {
316
+ const timeZone = this.resolveTimeZone({ timeZone: opts.timeZone });
317
+ const locale = opts.locale === undefined
318
+ ? this.locale
319
+ : TemporalHelper.ensureLocale({ locale: opts.locale });
320
+ const date = this.toDate({ value: opts.value, timeZone });
321
+ const key = `${locale}|${timeZone}|${JSON.stringify(opts.options ?? {})}`;
322
+ let formatter = TemporalHelper.intlFormatters.get(key);
323
+ if (!formatter) {
324
+ formatter = new Intl.DateTimeFormat(locale, { ...opts.options, timeZone });
325
+ if (TemporalHelper.intlFormatters.size < MAX_INTL_FORMATTERS) {
326
+ TemporalHelper.intlFormatters.set(key, formatter);
327
+ }
328
+ }
329
+ return formatter.format(date);
330
+ }
248
331
  /**
249
332
  * Moves the value by whole units. Hours and smaller are elapsed time; days and larger move the
250
333
  * calendar in the zone, so a day across a daylight-saving jump keeps the wall time, and a month
@@ -321,6 +404,133 @@ class TemporalHelper extends base_1.BaseHelper {
321
404
  }
322
405
  return candidate;
323
406
  }
407
+ /**
408
+ * How many whole units `value` is past `other` - negative when it is before - truncated toward
409
+ * zero. Hours and smaller count elapsed time. Days and larger count the calendar in the zone, as
410
+ * `add` moves it: the answer is the largest `n` that `add` can move `other` by without passing
411
+ * `value`, so `diff(add(x, n), x)` is `n` wherever the zone skips no whole day.
412
+ */
413
+ diff(opts) {
414
+ const { unit } = opts;
415
+ TemporalHelper.ensureUnit({ unit });
416
+ const timeZone = this.resolveTimeZone({ timeZone: opts.timeZone });
417
+ const value = this.toDate({ value: opts.value, timeZone }).getTime();
418
+ const other = this.toDate({ value: opts.other, timeZone }).getTime();
419
+ const exact = calendar_1.EXACT_UNIT_MILLISECONDS[unit];
420
+ if (exact !== undefined) {
421
+ // `+ 0` turns a truncated `-0` into `0`.
422
+ return Math.trunc((value - other) / exact) + 0;
423
+ }
424
+ if (value === other) {
425
+ return 0;
426
+ }
427
+ const later = this.zonedParts({ epoch: value, timeZone });
428
+ const earlier = this.zonedParts({ epoch: other, timeZone });
429
+ // A first guess from the wall clocks, settled by `add` itself: back while it passes `value`, then
430
+ // on while the next step does not - a zone that repeats or skips a whole day can put it either side.
431
+ let guess;
432
+ if (unit === constants_1.TemporalUnits.MONTH || unit === constants_1.TemporalUnits.YEAR) {
433
+ const months = (later.year - earlier.year) * 12 + (later.month - earlier.month);
434
+ guess = unit === constants_1.TemporalUnits.YEAR ? Math.trunc(months / 12) : months;
435
+ }
436
+ else {
437
+ const days = Math.round(((0, calendar_1.epochAtOffset)({ parts: (0, calendar_1.wallClockOf)({ parts: later }), offsetMilliseconds: 0 }) -
438
+ (0, calendar_1.epochAtOffset)({ parts: (0, calendar_1.wallClockOf)({ parts: earlier }), offsetMilliseconds: 0 })) /
439
+ DAY_MILLISECONDS);
440
+ guess = unit === constants_1.TemporalUnits.WEEK ? Math.trunc(days / 7) : Math.trunc(days);
441
+ }
442
+ const direction = Math.sign(value - other);
443
+ const start = (0, calendar_1.wallClockOf)({ parts: earlier });
444
+ const passes = (amount) => {
445
+ // A move past years 1-9999 passes every value inside them, and `add` would refuse it.
446
+ if (!(0, calendar_1.isSupportedYear)((0, calendar_1.shiftWallClock)({ parts: start, amount, unit }).year)) {
447
+ return true;
448
+ }
449
+ const moved = this.add({ value: other, amount, unit, timeZone }).getTime();
450
+ return direction > 0 ? moved > value : moved < value;
451
+ };
452
+ while (guess !== 0 && passes(guess)) {
453
+ guess -= direction;
454
+ }
455
+ while (!passes(guess + direction)) {
456
+ guess += direction;
457
+ }
458
+ return guess + 0;
459
+ }
460
+ /**
461
+ * `-1`, `0` or `1` as `value` is before, in, or after the unit that holds `other`, in the zone.
462
+ * Without a unit the two instants are compared to the millisecond.
463
+ */
464
+ compare(opts) {
465
+ const { unit } = opts;
466
+ const timeZone = this.resolveTimeZone({ timeZone: opts.timeZone });
467
+ const value = unit === undefined
468
+ ? this.toDate({ value: opts.value, timeZone })
469
+ : this.startOf({ value: opts.value, unit, timeZone });
470
+ const other = unit === undefined
471
+ ? this.toDate({ value: opts.other, timeZone })
472
+ : this.startOf({ value: opts.other, unit, timeZone });
473
+ const delta = value.getTime() - other.getTime();
474
+ return delta < 0 ? -1 : delta > 0 ? 1 : 0;
475
+ }
476
+ /**
477
+ * `value` relative to `base` (default: now) in words, through `Intl.RelativeTimeFormat`:
478
+ * `3 hours ago`, `in 2 days`. With a `unit`, it counts the unit's boundaries in the zone, so
479
+ * 23:00 yesterday seen at 01:00 is `yesterday` under `numeric: 'auto'`. Without one it says the
480
+ * largest whole unit that has elapsed, from years down to seconds.
481
+ */
482
+ relative(opts) {
483
+ const { unit, numeric = 'always', style = 'long' } = opts;
484
+ const timeZone = this.resolveTimeZone({ timeZone: opts.timeZone });
485
+ const locale = opts.locale === undefined
486
+ ? this.locale
487
+ : TemporalHelper.ensureLocale({ locale: opts.locale });
488
+ const value = this.toDate({ value: opts.value, timeZone });
489
+ const base = opts.base === undefined ? this.now() : this.toDate({ value: opts.base, timeZone });
490
+ let amount = 0;
491
+ let said = constants_1.TemporalUnits.SECOND;
492
+ if (unit !== undefined) {
493
+ TemporalHelper.ensureUnit({ unit });
494
+ if (unit === constants_1.TemporalUnits.MILLISECOND) {
495
+ throw (0, error_1.getError)({
496
+ statusCode: http_1.HTTP.ResultCodes.RS_4.BadRequest,
497
+ message: '[TemporalHelper] relative time has no millisecond unit | Use second or larger',
498
+ });
499
+ }
500
+ amount = this.diff({
501
+ value: this.startOf({ value, unit, timeZone }),
502
+ other: this.startOf({ value: base, unit, timeZone }),
503
+ unit,
504
+ timeZone,
505
+ });
506
+ said = unit;
507
+ }
508
+ else {
509
+ for (const candidate of RELATIVE_UNITS) {
510
+ const counted = this.diff({ value, other: base, unit: candidate, timeZone });
511
+ if (counted !== 0 || candidate === constants_1.TemporalUnits.SECOND) {
512
+ amount = counted;
513
+ said = candidate;
514
+ break;
515
+ }
516
+ }
517
+ }
518
+ return new Intl.RelativeTimeFormat(locale, { numeric, style }).format(amount, said);
519
+ }
520
+ /** A span of milliseconds as days, hours, minutes, seconds and milliseconds. A day is 24 hours. */
521
+ durationParts(opts) {
522
+ return duration_1.TemporalDuration.parts(opts);
523
+ }
524
+ /**
525
+ * A span of milliseconds written out: `compact` (the default) is `1d1h30m`; `narrow`, `short` and
526
+ * `long` use the locale's unit words. Zero units are left out and milliseconds dropped.
527
+ */
528
+ formatDuration(opts) {
529
+ const locale = opts.locale === undefined
530
+ ? this.locale
531
+ : TemporalHelper.ensureLocale({ locale: opts.locale });
532
+ return duration_1.TemporalDuration.format({ milliseconds: opts.milliseconds, style: opts.style, locale });
533
+ }
324
534
  }
325
535
  exports.TemporalHelper = TemporalHelper;
326
536
  //# sourceMappingURL=helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../../src/modules/temporal/helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../../src/modules/temporal/helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { ITemporalParts } from './common/types';
2
+ /**
3
+ * Month and weekday names, the AM/PM marker and the written date of one locale, as `Intl` spells
4
+ * them. Every table is read once, on first use, from a fixed UTC date: the names belong to the
5
+ * calendar, not to a time zone, so the wall clock is formatted as if it were UTC.
6
+ */
7
+ export declare class TemporalLocale {
8
+ private static readonly locales;
9
+ private readonly locale;
10
+ private readonly tables;
11
+ private readonly formatters;
12
+ private constructor();
13
+ /** The locale's names; a malformed tag is a 400. */
14
+ static of(opts: {
15
+ locale: string;
16
+ }): TemporalLocale;
17
+ private formatterOf;
18
+ private tableOf;
19
+ /** `month` is 1-12. */
20
+ monthName(opts: {
21
+ month: number;
22
+ width: 'short' | 'long';
23
+ }): string;
24
+ /** `dayOfWeek` is ISO: 1 Monday - 7 Sunday. */
25
+ weekdayName(opts: {
26
+ dayOfWeek: number;
27
+ width: 'short' | 'long';
28
+ }): string;
29
+ /** The AM or PM marker the locale writes for `hour` (0-23), lower-cased by the locale's own rules when asked. */
30
+ dayPeriod(opts: {
31
+ hour: number;
32
+ isLowerCase?: boolean;
33
+ }): string;
34
+ /** The wall-clock date the way the locale writes it: `numeric` is `10/14/2026`, `long` is `October 14, 2026`. */
35
+ writtenDate(opts: {
36
+ parts: ITemporalParts;
37
+ style: 'numeric' | 'long';
38
+ }): string;
39
+ }
40
+ //# sourceMappingURL=locale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../../../src/modules/temporal/locale.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAarD;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAEpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0C;IAErE,OAAO;IAIP,oDAAoD;IACpD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc;IA4BnD,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,OAAO;IAef,uBAAuB;IACvB,SAAS,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM;IAWnE,+CAA+C;IAC/C,WAAW,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM;IAWzE,iHAAiH;IACjH,SAAS,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAchE,iHAAiH;IACjH,WAAW,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM;CAWhF"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TemporalLocale = void 0;
4
+ const http_1 = require("../../common/constants/http");
5
+ const error_1 = require("../error");
6
+ /** A service writes a handful of locales; capped so caller-fed locales cannot grow it. */
7
+ const MAX_CACHED_LOCALES = 32;
8
+ const MONTHS = 12;
9
+ const WEEKDAYS = 7;
10
+ const NOON = 12;
11
+ /** A Monday: ISO weekday `n` is this date plus `n - 1` days. */
12
+ const MONDAY = Date.UTC(2024, 0, 1);
13
+ const DAY_MILLISECONDS = 86_400_000;
14
+ /**
15
+ * Month and weekday names, the AM/PM marker and the written date of one locale, as `Intl` spells
16
+ * them. Every table is read once, on first use, from a fixed UTC date: the names belong to the
17
+ * calendar, not to a time zone, so the wall clock is formatted as if it were UTC.
18
+ */
19
+ class TemporalLocale {
20
+ static { this.locales = new Map(); }
21
+ constructor(opts) {
22
+ this.tables = new Map();
23
+ this.formatters = new Map();
24
+ this.locale = opts.locale;
25
+ }
26
+ /** The locale's names; a malformed tag is a 400. */
27
+ static of(opts) {
28
+ const { locale } = opts;
29
+ const cached = TemporalLocale.locales.get(locale);
30
+ if (cached) {
31
+ return cached;
32
+ }
33
+ try {
34
+ Intl.getCanonicalLocales(locale);
35
+ }
36
+ catch (error) {
37
+ throw (0, error_1.getError)({
38
+ statusCode: http_1.HTTP.ResultCodes.RS_4.BadRequest,
39
+ message: `[TemporalLocale] invalid locale '${locale}' | ${error instanceof Error ? error.message : String(error)}`,
40
+ });
41
+ }
42
+ // Full: the oldest locale makes room, so the 33rd locale is not rebuilt on every call.
43
+ if (TemporalLocale.locales.size >= MAX_CACHED_LOCALES) {
44
+ const oldest = TemporalLocale.locales.keys().next().value;
45
+ if (oldest !== undefined) {
46
+ TemporalLocale.locales.delete(oldest);
47
+ }
48
+ }
49
+ const created = new TemporalLocale({ locale });
50
+ TemporalLocale.locales.set(locale, created);
51
+ return created;
52
+ }
53
+ formatterOf(opts) {
54
+ const key = JSON.stringify(opts);
55
+ const cached = this.formatters.get(key);
56
+ if (cached) {
57
+ return cached;
58
+ }
59
+ // Gregorian always: the numeric tokens are, and a name from another calendar would sit beside them.
60
+ const formatter = new Intl.DateTimeFormat(this.locale, {
61
+ ...opts,
62
+ calendar: 'gregory',
63
+ timeZone: 'UTC',
64
+ });
65
+ this.formatters.set(key, formatter);
66
+ return formatter;
67
+ }
68
+ tableOf(opts) {
69
+ const cached = this.tables.get(opts.key);
70
+ if (cached) {
71
+ return cached;
72
+ }
73
+ const table = Array.from({ length: opts.size }, (_, index) => opts.read(index));
74
+ this.tables.set(opts.key, table);
75
+ return table;
76
+ }
77
+ /** `month` is 1-12. */
78
+ monthName(opts) {
79
+ const { month, width } = opts;
80
+ const formatter = this.formatterOf({ month: width });
81
+ const table = this.tableOf({
82
+ key: `month-${width}`,
83
+ size: MONTHS,
84
+ read: index => formatter.format(Date.UTC(2024, index, 15)),
85
+ });
86
+ return table[month - 1];
87
+ }
88
+ /** `dayOfWeek` is ISO: 1 Monday - 7 Sunday. */
89
+ weekdayName(opts) {
90
+ const { dayOfWeek, width } = opts;
91
+ const formatter = this.formatterOf({ weekday: width });
92
+ const table = this.tableOf({
93
+ key: `weekday-${width}`,
94
+ size: WEEKDAYS,
95
+ read: index => formatter.format(MONDAY + index * DAY_MILLISECONDS),
96
+ });
97
+ return table[dayOfWeek - 1];
98
+ }
99
+ /** The AM or PM marker the locale writes for `hour` (0-23), lower-cased by the locale's own rules when asked. */
100
+ dayPeriod(opts) {
101
+ const formatter = this.formatterOf({ hour: 'numeric', hourCycle: 'h12' });
102
+ const table = this.tableOf({
103
+ key: 'day-period',
104
+ size: 2,
105
+ read: index => formatter
106
+ .formatToParts(Date.UTC(2024, 0, 1, index === 0 ? 1 : NOON + 1))
107
+ .find(part => part.type === 'dayPeriod')?.value ?? (index === 0 ? 'AM' : 'PM'),
108
+ });
109
+ const marker = table[opts.hour < NOON ? 0 : 1];
110
+ return opts.isLowerCase ? marker.toLocaleLowerCase(this.locale) : marker;
111
+ }
112
+ /** The wall-clock date the way the locale writes it: `numeric` is `10/14/2026`, `long` is `October 14, 2026`. */
113
+ writtenDate(opts) {
114
+ const { parts, style } = opts;
115
+ const formatter = style === 'numeric'
116
+ ? this.formatterOf({ year: 'numeric', month: '2-digit', day: '2-digit' })
117
+ : this.formatterOf({ dateStyle: 'long' });
118
+ const date = new Date(0);
119
+ date.setUTCFullYear(parts.year, parts.month - 1, parts.day);
120
+ return formatter.format(date);
121
+ }
122
+ }
123
+ exports.TemporalLocale = TemporalLocale;
124
+ //# sourceMappingURL=locale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../../src/modules/temporal/locale.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,11 @@ export declare class TemporalPattern {
8
8
  * is refused: `yyyy` is not `YYYY`, and `MMM` is never read as `MM` then `M`.
9
9
  */
10
10
  private static compile;
11
+ /** Writes the wall clock; `locale` spells the name tokens, and is only resolved when one is used. */
11
12
  static format(opts: {
12
13
  pattern: string;
13
14
  parts: IZonedTemporalParts;
15
+ locale: string;
14
16
  }): string;
15
17
  /** The fields a value spells under a pattern, or undefined when it does not match. Unset fields default to the start: month 1, day 1, 00:00. */
16
18
  static parse(opts: {
@@ -1 +1 @@
1
- {"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../../../../src/modules/temporal/pattern.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAc1E,gGAAgG;AAChG,qBAAa,eAAe;IAC1B,+GAA+G;IAC/G,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IAE7E;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;IAiEtB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAE,GAAG,MAAM;IAU5E,gJAAgJ;IAChJ,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;CAwDvE"}
1
+ {"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../../../../src/modules/temporal/pattern.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAgB1E,gGAAgG;AAChG,qBAAa,eAAe;IAC1B,+GAA+G;IAC/G,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IAE7E;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;IAiEtB,qGAAqG;IACrG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAe5F,gJAAgJ;IAChJ,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;CAgEvE"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TemporalPattern = void 0;
4
4
  const http_1 = require("../../common/constants/http");
5
5
  const error_1 = require("../error");
6
+ const locale_1 = require("./locale");
6
7
  const tokens_1 = require("./tokens");
7
8
  /** The pattern dialect: compiled once per pattern, then formatted and parsed from the cache. */
8
9
  class TemporalPattern {
@@ -67,12 +68,17 @@ class TemporalPattern {
67
68
  }
68
69
  return segments;
69
70
  }
71
+ /** Writes the wall clock; `locale` spells the name tokens, and is only resolved when one is used. */
70
72
  static format(opts) {
71
73
  const segments = TemporalPattern.compile({ pattern: opts.pattern });
74
+ let resolved;
75
+ const input = {
76
+ parts: opts.parts,
77
+ locale: () => (resolved ??= locale_1.TemporalLocale.of({ locale: opts.locale })),
78
+ };
72
79
  let text = '';
73
80
  for (const segment of segments) {
74
- text +=
75
- 'literal' in segment ? segment.literal : (tokens_1.WRITERS.get(segment.token)?.(opts.parts) ?? '');
81
+ text += 'literal' in segment ? segment.literal : (tokens_1.WRITERS.get(segment.token)?.(input) ?? '');
76
82
  }
77
83
  return text;
78
84
  }
@@ -100,6 +106,13 @@ class TemporalPattern {
100
106
  continue;
101
107
  }
102
108
  const { token } = segment;
109
+ // A pattern is code, not input: a write-only token here is a bug, as an unknown token is.
110
+ if ((0, tokens_1.isLocaleToken)(token)) {
111
+ throw (0, error_1.getError)({
112
+ statusCode: http_1.HTTP.ResultCodes.RS_5.InternalServerError,
113
+ message: `[TemporalPattern] '${token}' in pattern '${opts.pattern}' is for writing only | A parse reads the numeric tokens`,
114
+ });
115
+ }
103
116
  if (token === 'Z' || token === 'ZZ') {
104
117
  const offset = (0, tokens_1.readOffset)({ value, position, separator: token === 'Z' });
105
118
  if (!offset) {
@@ -1 +1 @@
1
- {"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../../../src/modules/temporal/pattern.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../../../src/modules/temporal/pattern.ts"],"names":[],"mappings":"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"}