@venizia/ignis-helpers 0.2.1-3 → 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.
- package/dist/cjs/modules/temporal/adapters/index.d.ts +1 -0
- package/dist/cjs/modules/temporal/adapters/index.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/adapters/index.js +1 -0
- package/dist/cjs/modules/temporal/adapters/index.js.map +1 -1
- package/dist/cjs/modules/temporal/adapters/intl.d.ts +16 -0
- package/dist/cjs/modules/temporal/adapters/intl.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/adapters/intl.js +83 -0
- package/dist/cjs/modules/temporal/adapters/intl.js.map +1 -0
- package/dist/cjs/modules/temporal/common/constants.d.ts +12 -0
- package/dist/cjs/modules/temporal/common/constants.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/common/constants.js +15 -1
- package/dist/cjs/modules/temporal/common/constants.js.map +1 -1
- package/dist/cjs/modules/temporal/common/types.d.ts +9 -0
- package/dist/cjs/modules/temporal/common/types.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/duration.d.ts +19 -0
- package/dist/cjs/modules/temporal/duration.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/duration.js +64 -0
- package/dist/cjs/modules/temporal/duration.js.map +1 -0
- package/dist/cjs/modules/temporal/helper.d.ts +90 -4
- package/dist/cjs/modules/temporal/helper.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/helper.js +213 -3
- package/dist/cjs/modules/temporal/helper.js.map +1 -1
- package/dist/cjs/modules/temporal/locale.d.ts +40 -0
- package/dist/cjs/modules/temporal/locale.d.ts.map +1 -0
- package/dist/cjs/modules/temporal/locale.js +124 -0
- package/dist/cjs/modules/temporal/locale.js.map +1 -0
- package/dist/cjs/modules/temporal/pattern.d.ts +2 -0
- package/dist/cjs/modules/temporal/pattern.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/pattern.js +15 -2
- package/dist/cjs/modules/temporal/pattern.js.map +1 -1
- package/dist/cjs/modules/temporal/tokens.d.ts +19 -6
- package/dist/cjs/modules/temporal/tokens.d.ts.map +1 -1
- package/dist/cjs/modules/temporal/tokens.js +49 -17
- package/dist/cjs/modules/temporal/tokens.js.map +1 -1
- package/dist/esm/modules/temporal/adapters/index.d.ts +1 -0
- package/dist/esm/modules/temporal/adapters/index.d.ts.map +1 -1
- package/dist/esm/modules/temporal/adapters/index.js +1 -0
- package/dist/esm/modules/temporal/adapters/index.js.map +1 -1
- package/dist/esm/modules/temporal/adapters/intl.d.ts +16 -0
- package/dist/esm/modules/temporal/adapters/intl.d.ts.map +1 -0
- package/dist/esm/modules/temporal/adapters/intl.js +79 -0
- package/dist/esm/modules/temporal/adapters/intl.js.map +1 -0
- package/dist/esm/modules/temporal/common/constants.d.ts +12 -0
- package/dist/esm/modules/temporal/common/constants.d.ts.map +1 -1
- package/dist/esm/modules/temporal/common/constants.js +13 -0
- package/dist/esm/modules/temporal/common/constants.js.map +1 -1
- package/dist/esm/modules/temporal/common/types.d.ts +9 -0
- package/dist/esm/modules/temporal/common/types.d.ts.map +1 -1
- package/dist/esm/modules/temporal/duration.d.ts +19 -0
- package/dist/esm/modules/temporal/duration.d.ts.map +1 -0
- package/dist/esm/modules/temporal/duration.js +60 -0
- package/dist/esm/modules/temporal/duration.js.map +1 -0
- package/dist/esm/modules/temporal/helper.d.ts +90 -4
- package/dist/esm/modules/temporal/helper.d.ts.map +1 -1
- package/dist/esm/modules/temporal/helper.js +215 -5
- package/dist/esm/modules/temporal/helper.js.map +1 -1
- package/dist/esm/modules/temporal/locale.d.ts +40 -0
- package/dist/esm/modules/temporal/locale.d.ts.map +1 -0
- package/dist/esm/modules/temporal/locale.js +120 -0
- package/dist/esm/modules/temporal/locale.js.map +1 -0
- package/dist/esm/modules/temporal/pattern.d.ts +2 -0
- package/dist/esm/modules/temporal/pattern.d.ts.map +1 -1
- package/dist/esm/modules/temporal/pattern.js +16 -3
- package/dist/esm/modules/temporal/pattern.js.map +1 -1
- package/dist/esm/modules/temporal/tokens.d.ts +19 -6
- package/dist/esm/modules/temporal/tokens.d.ts.map +1 -1
- package/dist/esm/modules/temporal/tokens.js +47 -16
- package/dist/esm/modules/temporal/tokens.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
import type { ITemporalParts, IZonedTemporalParts } from './common/types';
|
|
2
|
+
import type { TemporalLocale } from './locale';
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
4
|
+
* Tokens a pattern can write but never read: names and the written date come from a locale, and a
|
|
5
|
+
* parse stays numeric and strict.
|
|
5
6
|
*/
|
|
6
|
-
export type
|
|
7
|
+
export type TLocaleToken = 'MMMM' | 'MMM' | 'dddd' | 'ddd' | 'A' | 'a' | 'hh' | 'h' | 'LL' | 'L';
|
|
8
|
+
/**
|
|
9
|
+
* The pattern dialect, one for every adapter: `YYYY YY MM M DD D HH H mm m ss s SSS Z ZZ` both ways,
|
|
10
|
+
* plus the locale tokens `MMMM MMM dddd ddd A a hh h LL L` for writing only, with text in `[brackets]`.
|
|
11
|
+
*/
|
|
12
|
+
export type TPatternToken = TLocaleToken | 'YYYY' | 'YY' | 'MM' | 'M' | 'DD' | 'D' | 'HH' | 'H' | 'mm' | 'm' | 'ss' | 's' | 'SSS' | 'Z' | 'ZZ';
|
|
7
13
|
export type TPatternSegment = {
|
|
8
14
|
token: TPatternToken;
|
|
9
15
|
} | {
|
|
10
16
|
literal: string;
|
|
11
17
|
};
|
|
12
|
-
export type TNumericToken = Exclude<TPatternToken, 'Z' | 'ZZ' | 'YY'>;
|
|
13
|
-
export declare const SUPPORTED = "YYYY YY MM M DD D HH H mm m ss s SSS Z ZZ";
|
|
18
|
+
export type TNumericToken = Exclude<TPatternToken, 'Z' | 'ZZ' | 'YY' | TLocaleToken>;
|
|
19
|
+
export declare const SUPPORTED = "YYYY YY MM M DD D HH H mm m ss s SSS Z ZZ, and for writing only MMMM MMM dddd ddd A a hh h LL L";
|
|
20
|
+
export declare const LOCALE_TOKENS: ReadonlySet<TPatternToken>;
|
|
21
|
+
export declare const isLocaleToken: (token: TPatternToken) => token is TLocaleToken;
|
|
14
22
|
export declare const MAX_COMPILED_PATTERNS = 64;
|
|
15
23
|
/** Two-digit years pivot as dayjs and moment do: 00-68 is 2000-2068, 69-99 is 1969-1999. */
|
|
16
24
|
export declare const TWO_DIGIT_YEAR_PIVOT = 68;
|
|
@@ -25,8 +33,13 @@ export declare const formatOffset: (opts: {
|
|
|
25
33
|
offsetMinutes: number;
|
|
26
34
|
separator: string;
|
|
27
35
|
}) => string;
|
|
36
|
+
/** What a writer reads: the wall clock, and the locale - resolved only when a locale token asks for it. */
|
|
37
|
+
export interface ITokenWriterInput {
|
|
38
|
+
parts: IZonedTemporalParts;
|
|
39
|
+
locale: () => TemporalLocale;
|
|
40
|
+
}
|
|
28
41
|
/** One writer per token - a lookup rather than a branch per token on every format. */
|
|
29
|
-
export declare const WRITERS: Map<TPatternToken, (
|
|
42
|
+
export declare const WRITERS: Map<TPatternToken, (input: ITokenWriterInput) => string>;
|
|
30
43
|
export declare const isLetter: (code: number) => boolean;
|
|
31
44
|
export declare const isDigit: (code: number) => boolean;
|
|
32
45
|
/** Reads `min`..`max` digits at `position`, greedily; undefined when fewer than `min` are there. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../../src/modules/temporal/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../../src/modules/temporal/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isToken = exports.TOKEN_NAMES = exports.readOffset = exports.readOffsetField = exports.readDigits = exports.isDigit = exports.isLetter = exports.WRITERS = exports.formatOffset = exports.pad = exports.NUMERIC_TOKENS = exports.TWO_DIGIT_YEAR_PIVOT = exports.MAX_COMPILED_PATTERNS = exports.SUPPORTED = void 0;
|
|
4
|
-
exports.SUPPORTED = 'YYYY YY MM M DD D HH H mm m ss s SSS Z ZZ';
|
|
3
|
+
exports.isToken = exports.TOKEN_NAMES = exports.readOffset = exports.readOffsetField = exports.readDigits = exports.isDigit = exports.isLetter = exports.WRITERS = exports.formatOffset = exports.pad = exports.NUMERIC_TOKENS = exports.TWO_DIGIT_YEAR_PIVOT = exports.MAX_COMPILED_PATTERNS = exports.isLocaleToken = exports.LOCALE_TOKENS = exports.SUPPORTED = void 0;
|
|
4
|
+
exports.SUPPORTED = 'YYYY YY MM M DD D HH H mm m ss s SSS Z ZZ, and for writing only MMMM MMM dddd ddd A a hh h LL L';
|
|
5
|
+
exports.LOCALE_TOKENS = new Set([
|
|
6
|
+
'MMMM',
|
|
7
|
+
'MMM',
|
|
8
|
+
'dddd',
|
|
9
|
+
'ddd',
|
|
10
|
+
'A',
|
|
11
|
+
'a',
|
|
12
|
+
'hh',
|
|
13
|
+
'h',
|
|
14
|
+
'LL',
|
|
15
|
+
'L',
|
|
16
|
+
]);
|
|
17
|
+
const isLocaleToken = (token) => exports.LOCALE_TOKENS.has(token);
|
|
18
|
+
exports.isLocaleToken = isLocaleToken;
|
|
5
19
|
exports.MAX_COMPILED_PATTERNS = 64;
|
|
6
20
|
/** Two-digit years pivot as dayjs and moment do: 00-68 is 2000-2068, 69-99 is 1969-1999. */
|
|
7
21
|
exports.TWO_DIGIT_YEAR_PIVOT = 68;
|
|
@@ -35,23 +49,41 @@ const formatOffset = (opts) => {
|
|
|
35
49
|
return seconds === 0 ? text : text + separator + (0, exports.pad)({ value: seconds, width: 2 });
|
|
36
50
|
};
|
|
37
51
|
exports.formatOffset = formatOffset;
|
|
52
|
+
/** The hour on a 12-hour clock: 12, 1, ... 11. */
|
|
53
|
+
const twelveHour = (hour) => hour % 12 || 12;
|
|
38
54
|
/** One writer per token - a lookup rather than a branch per token on every format. */
|
|
39
55
|
exports.WRITERS = new Map([
|
|
40
|
-
['YYYY', parts => (0, exports.pad)({ value: parts.year, width: 4 })],
|
|
41
|
-
['YY', parts => (0, exports.pad)({ value: parts.year % 100, width: 2 })],
|
|
42
|
-
['
|
|
43
|
-
['
|
|
44
|
-
['
|
|
45
|
-
['
|
|
46
|
-
['
|
|
47
|
-
['
|
|
48
|
-
[
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
[
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
['YYYY', ({ parts }) => (0, exports.pad)({ value: parts.year, width: 4 })],
|
|
57
|
+
['YY', ({ parts }) => (0, exports.pad)({ value: parts.year % 100, width: 2 })],
|
|
58
|
+
['MMMM', ({ parts, locale }) => locale().monthName({ month: parts.month, width: 'long' })],
|
|
59
|
+
['MMM', ({ parts, locale }) => locale().monthName({ month: parts.month, width: 'short' })],
|
|
60
|
+
['MM', ({ parts }) => (0, exports.pad)({ value: parts.month, width: 2 })],
|
|
61
|
+
['M', ({ parts }) => String(parts.month)],
|
|
62
|
+
['DD', ({ parts }) => (0, exports.pad)({ value: parts.day, width: 2 })],
|
|
63
|
+
['D', ({ parts }) => String(parts.day)],
|
|
64
|
+
[
|
|
65
|
+
'dddd',
|
|
66
|
+
({ parts, locale }) => locale().weekdayName({ dayOfWeek: parts.dayOfWeek, width: 'long' }),
|
|
67
|
+
],
|
|
68
|
+
[
|
|
69
|
+
'ddd',
|
|
70
|
+
({ parts, locale }) => locale().weekdayName({ dayOfWeek: parts.dayOfWeek, width: 'short' }),
|
|
71
|
+
],
|
|
72
|
+
['HH', ({ parts }) => (0, exports.pad)({ value: parts.hour, width: 2 })],
|
|
73
|
+
['H', ({ parts }) => String(parts.hour)],
|
|
74
|
+
['hh', ({ parts }) => (0, exports.pad)({ value: twelveHour(parts.hour), width: 2 })],
|
|
75
|
+
['h', ({ parts }) => String(twelveHour(parts.hour))],
|
|
76
|
+
['A', ({ parts, locale }) => locale().dayPeriod({ hour: parts.hour })],
|
|
77
|
+
['a', ({ parts, locale }) => locale().dayPeriod({ hour: parts.hour, isLowerCase: true })],
|
|
78
|
+
['mm', ({ parts }) => (0, exports.pad)({ value: parts.minute, width: 2 })],
|
|
79
|
+
['m', ({ parts }) => String(parts.minute)],
|
|
80
|
+
['ss', ({ parts }) => (0, exports.pad)({ value: parts.second, width: 2 })],
|
|
81
|
+
['s', ({ parts }) => String(parts.second)],
|
|
82
|
+
['SSS', ({ parts }) => (0, exports.pad)({ value: parts.millisecond, width: 3 })],
|
|
83
|
+
['Z', ({ parts }) => (0, exports.formatOffset)({ offsetMinutes: parts.offsetMinutes, separator: ':' })],
|
|
84
|
+
['ZZ', ({ parts }) => (0, exports.formatOffset)({ offsetMinutes: parts.offsetMinutes, separator: '' })],
|
|
85
|
+
['LL', ({ parts, locale }) => locale().writtenDate({ parts, style: 'long' })],
|
|
86
|
+
['L', ({ parts, locale }) => locale().writtenDate({ parts, style: 'numeric' })],
|
|
55
87
|
]);
|
|
56
88
|
const isLetter = (code) => (code >= 65 && code <= 90) || (code >= 97 && code <= 122);
|
|
57
89
|
exports.isLetter = isLetter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../src/modules/temporal/tokens.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../src/modules/temporal/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ITemporalAdapter } from '../common/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Time zones through `Intl.DateTimeFormat` alone - no `Temporal`, no polyfill, no date library - so
|
|
4
|
+
* it runs in every browser and every server runtime. The offset is the zone's wall clock at the
|
|
5
|
+
* instant, read field by field, minus the instant itself.
|
|
6
|
+
*/
|
|
7
|
+
export declare class IntlTemporalAdapter implements ITemporalAdapter {
|
|
8
|
+
private static readonly formatters;
|
|
9
|
+
/** The zone's formatter, and how it spells the common era - so any other era is before year 1, whatever the engine calls it. */
|
|
10
|
+
private static formatterOf;
|
|
11
|
+
getOffsetMilliseconds(opts: {
|
|
12
|
+
value: Date;
|
|
13
|
+
timeZone: string;
|
|
14
|
+
}): number;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=intl.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { HTTP } from '../../../common/constants/http.js';
|
|
2
|
+
import { getError } from '../../error/index.js';
|
|
3
|
+
/** One formatter per zone: building an `Intl.DateTimeFormat` costs far more than using one. */
|
|
4
|
+
const MAX_CACHED_FORMATTERS = 256;
|
|
5
|
+
const SECOND_MILLISECONDS = 1000;
|
|
6
|
+
/**
|
|
7
|
+
* Time zones through `Intl.DateTimeFormat` alone - no `Temporal`, no polyfill, no date library - so
|
|
8
|
+
* it runs in every browser and every server runtime. The offset is the zone's wall clock at the
|
|
9
|
+
* instant, read field by field, minus the instant itself.
|
|
10
|
+
*/
|
|
11
|
+
export class IntlTemporalAdapter {
|
|
12
|
+
static { this.formatters = new Map(); }
|
|
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
|
+
static formatterOf(opts) {
|
|
15
|
+
const { timeZone } = opts;
|
|
16
|
+
const cached = IntlTemporalAdapter.formatters.get(timeZone);
|
|
17
|
+
if (cached) {
|
|
18
|
+
return cached;
|
|
19
|
+
}
|
|
20
|
+
let formatter;
|
|
21
|
+
try {
|
|
22
|
+
formatter = new Intl.DateTimeFormat('en-US', {
|
|
23
|
+
timeZone,
|
|
24
|
+
hourCycle: 'h23',
|
|
25
|
+
era: 'short',
|
|
26
|
+
year: 'numeric',
|
|
27
|
+
month: 'numeric',
|
|
28
|
+
day: 'numeric',
|
|
29
|
+
hour: 'numeric',
|
|
30
|
+
minute: 'numeric',
|
|
31
|
+
second: 'numeric',
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
throw getError({
|
|
36
|
+
statusCode: HTTP.ResultCodes.RS_4.BadRequest,
|
|
37
|
+
message: `[IntlTemporalAdapter] unknown time zone '${timeZone}' | ${error instanceof Error ? error.message : String(error)}`,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const commonEra = formatter.formatToParts(new Date(0)).find(part => part.type === 'era')?.value;
|
|
41
|
+
// Full: the oldest zone makes room, so zone 257 is not rebuilt on every call.
|
|
42
|
+
if (IntlTemporalAdapter.formatters.size >= MAX_CACHED_FORMATTERS) {
|
|
43
|
+
const oldest = IntlTemporalAdapter.formatters.keys().next().value;
|
|
44
|
+
if (oldest !== undefined) {
|
|
45
|
+
IntlTemporalAdapter.formatters.delete(oldest);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const entry = { formatter, commonEra };
|
|
49
|
+
IntlTemporalAdapter.formatters.set(timeZone, entry);
|
|
50
|
+
return entry;
|
|
51
|
+
}
|
|
52
|
+
getOffsetMilliseconds(opts) {
|
|
53
|
+
const { value, timeZone } = opts;
|
|
54
|
+
const epoch = value.getTime();
|
|
55
|
+
const fields = { year: 0, month: 1, day: 1, hour: 0, minute: 0, second: 0 };
|
|
56
|
+
let isBeforeCommonEra = false;
|
|
57
|
+
const { formatter, commonEra } = IntlTemporalAdapter.formatterOf({ timeZone });
|
|
58
|
+
for (const part of formatter.formatToParts(value)) {
|
|
59
|
+
if (part.type === 'era') {
|
|
60
|
+
isBeforeCommonEra = commonEra !== undefined && part.value !== commonEra;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (part.type in fields) {
|
|
64
|
+
Reflect.set(fields, part.type, Number(part.value));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Before year 1 the formatter counts eras: 1 BC is year 0 on the proleptic calendar.
|
|
68
|
+
const year = isBeforeCommonEra ? 1 - fields.year : fields.year;
|
|
69
|
+
// Some engines still write midnight as hour 24 under h23.
|
|
70
|
+
const hour = fields.hour === 24 ? 0 : fields.hour;
|
|
71
|
+
const wallClock = new Date(0);
|
|
72
|
+
wallClock.setUTCFullYear(year, fields.month - 1, fields.day);
|
|
73
|
+
wallClock.setUTCHours(hour, fields.minute, fields.second, 0);
|
|
74
|
+
// The formatter writes whole seconds: compare against the instant truncated the same way.
|
|
75
|
+
const wholeSecond = epoch - (((epoch % SECOND_MILLISECONDS) + SECOND_MILLISECONDS) % SECOND_MILLISECONDS);
|
|
76
|
+
return wallClock.getTime() - wholeSecond;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=intl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intl.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/intl.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,4 +17,16 @@ export type TTemporalUnit = TConstValue<typeof TemporalUnits>;
|
|
|
17
17
|
export declare const DEFAULT_TEMPORAL_TIME_ZONE = "UTC";
|
|
18
18
|
/** `format` with no pattern writes ISO 8601 with the zone's offset: `2026-09-19T12:00:00.000+07:00`. */
|
|
19
19
|
export declare const DEFAULT_TEMPORAL_PATTERN = "YYYY-MM-DDTHH:mm:ss.SSSZ";
|
|
20
|
+
/** The locale name tokens and `formatIntl` write in when a helper is built without one. */
|
|
21
|
+
export declare const DEFAULT_TEMPORAL_LOCALE = "en-US";
|
|
22
|
+
/** How `formatDuration` writes: `compact` is `1d1h30m`; the others are the locale's own unit words. */
|
|
23
|
+
export declare class TemporalDurationStyles {
|
|
24
|
+
static readonly COMPACT = "compact";
|
|
25
|
+
static readonly NARROW = "narrow";
|
|
26
|
+
static readonly SHORT = "short";
|
|
27
|
+
static readonly LONG = "long";
|
|
28
|
+
static readonly SCHEME_SET: Set<string>;
|
|
29
|
+
static isValid(input: string): input is TTemporalDurationStyle;
|
|
30
|
+
}
|
|
31
|
+
export type TTemporalDurationStyle = TConstValue<typeof TemporalDurationStyles>;
|
|
20
32
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,yGAAyG;AACzG,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;IAC5C,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cASvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa;CAGtD;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,iHAAiH;AACjH,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,wGAAwG;AACxG,eAAO,MAAM,wBAAwB,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,yGAAyG;AACzG,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;IAC5C,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cASvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa;CAGtD;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,iHAAiH;AACjH,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,wGAAwG;AACxG,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAEnE,2FAA2F;AAC3F,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C,uGAAuG;AACvG,qBAAa,sBAAsB;IACjC,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAA+D;IAEzF,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,sBAAsB;CAG/D;AAED,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -26,4 +26,17 @@ export class TemporalUnits {
|
|
|
26
26
|
export const DEFAULT_TEMPORAL_TIME_ZONE = 'UTC';
|
|
27
27
|
/** `format` with no pattern writes ISO 8601 with the zone's offset: `2026-09-19T12:00:00.000+07:00`. */
|
|
28
28
|
export const DEFAULT_TEMPORAL_PATTERN = 'YYYY-MM-DDTHH:mm:ss.SSSZ';
|
|
29
|
+
/** The locale name tokens and `formatIntl` write in when a helper is built without one. */
|
|
30
|
+
export const DEFAULT_TEMPORAL_LOCALE = 'en-US';
|
|
31
|
+
/** How `formatDuration` writes: `compact` is `1d1h30m`; the others are the locale's own unit words. */
|
|
32
|
+
export class TemporalDurationStyles {
|
|
33
|
+
static { this.COMPACT = 'compact'; }
|
|
34
|
+
static { this.NARROW = 'narrow'; }
|
|
35
|
+
static { this.SHORT = 'short'; }
|
|
36
|
+
static { this.LONG = 'long'; }
|
|
37
|
+
static { this.SCHEME_SET = new Set([this.COMPACT, this.NARROW, this.SHORT, this.LONG]); }
|
|
38
|
+
static isValid(input) {
|
|
39
|
+
return this.SCHEME_SET.has(input);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
29
42
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/constants.ts"],"names":[],"mappings":"AAEA,yGAAyG;AACzG,MAAM,OAAO,aAAa;aACR,gBAAW,GAAG,aAAa,CAAC;aAC5B,WAAM,GAAG,QAAQ,CAAC;aAClB,WAAM,GAAG,QAAQ,CAAC;aAClB,SAAI,GAAG,MAAM,CAAC;aACd,QAAG,GAAG,KAAK,CAAC;aACZ,SAAI,GAAG,MAAM,CAAC;aACd,UAAK,GAAG,OAAO,CAAC;aAChB,SAAI,GAAG,MAAM,CAAC;aAEd,eAAU,GAAG,IAAI,GAAG,CAAC;QACnC,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,GAAG;QACR,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,IAAI;KACV,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAKH,iHAAiH;AACjH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD,wGAAwG;AACxG,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/constants.ts"],"names":[],"mappings":"AAEA,yGAAyG;AACzG,MAAM,OAAO,aAAa;aACR,gBAAW,GAAG,aAAa,CAAC;aAC5B,WAAM,GAAG,QAAQ,CAAC;aAClB,WAAM,GAAG,QAAQ,CAAC;aAClB,SAAI,GAAG,MAAM,CAAC;aACd,QAAG,GAAG,KAAK,CAAC;aACZ,SAAI,GAAG,MAAM,CAAC;aACd,UAAK,GAAG,OAAO,CAAC;aAChB,SAAI,GAAG,MAAM,CAAC;aAEd,eAAU,GAAG,IAAI,GAAG,CAAC;QACnC,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,GAAG;QACR,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,IAAI;KACV,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAKH,iHAAiH;AACjH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD,wGAAwG;AACxG,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AAEnE,2FAA2F;AAC3F,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAE/C,uGAAuG;AACvG,MAAM,OAAO,sBAAsB;aACjB,YAAO,GAAG,SAAS,CAAC;aACpB,WAAM,GAAG,QAAQ,CAAC;aAClB,UAAK,GAAG,OAAO,CAAC;aAChB,SAAI,GAAG,MAAM,CAAC;aAEd,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEzF,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC"}
|
|
@@ -66,4 +66,13 @@ export interface ILuxonDateTimeFactory {
|
|
|
66
66
|
zone: string;
|
|
67
67
|
}): ILuxonDateTime;
|
|
68
68
|
}
|
|
69
|
+
/** A span of time split into whole units, every field non-negative; `isNegative` carries the sign. */
|
|
70
|
+
export interface ITemporalDurationParts {
|
|
71
|
+
isNegative: boolean;
|
|
72
|
+
days: number;
|
|
73
|
+
hours: number;
|
|
74
|
+
minutes: number;
|
|
75
|
+
seconds: number;
|
|
76
|
+
milliseconds: number;
|
|
77
|
+
}
|
|
69
78
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/types.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,iGAAiG;AACjG,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,wGAAwG;IACxG,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;CACxE;AAID,iEAAiE;AACjE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE;QACP,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,GAAG;YAChD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,CAAC;SAC9D,CAAC;KACH,CAAC;CACH;AAED,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,SAAS,IAAI,MAAM,CAAC;IACpB,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;CACtC;AAED,4GAA4G;AAC5G,MAAM,WAAW,aAAa;IAC5B,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC;IACxC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,cAAc,CAAC;CACzD;AAED,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc,CAAC;CAC7E"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/types.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,iGAAiG;AACjG,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,wGAAwG;IACxG,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;CACxE;AAID,iEAAiE;AACjE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE;QACP,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,GAAG;YAChD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,CAAC;SAC9D,CAAC;KACH,CAAC;CACH;AAED,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,SAAS,IAAI,MAAM,CAAC;IACpB,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;CACtC;AAED,4GAA4G;AAC5G,MAAM,WAAW,aAAa;IAC5B,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC;IACxC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,cAAc,CAAC;CACzD;AAED,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc,CAAC;CAC7E;AAED,sGAAsG;AACtG,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { TTemporalDurationStyle } from './common/constants.js';
|
|
2
|
+
import type { ITemporalDurationParts } from './common/types.js';
|
|
3
|
+
/** A span of milliseconds, split into days to milliseconds and written out. A day is always 24 hours here. */
|
|
4
|
+
export declare class TemporalDuration {
|
|
5
|
+
static parts(opts: {
|
|
6
|
+
milliseconds: number;
|
|
7
|
+
}): ITemporalDurationParts;
|
|
8
|
+
/**
|
|
9
|
+
* Days, hours, minutes and seconds, zero units left out and milliseconds dropped: `compact` is
|
|
10
|
+
* `1d1h30m`, the other styles use the locale's unit words (`1 ngày 1 giờ 30 phút`). Under a
|
|
11
|
+
* second writes `0s` or `0 seconds`.
|
|
12
|
+
*/
|
|
13
|
+
static format(opts: {
|
|
14
|
+
milliseconds: number;
|
|
15
|
+
style?: TTemporalDurationStyle;
|
|
16
|
+
locale: string;
|
|
17
|
+
}): string;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=duration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../../../src/modules/temporal/duration.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAe7D,8GAA8G;AAC9G,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,sBAAsB;IAoBpE;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,sBAAsB,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,MAAM;CA0BX"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { HTTP } from '../../common/constants/http.js';
|
|
2
|
+
import { getError } from '../error/index.js';
|
|
3
|
+
import { TemporalDurationStyles } from './common/constants.js';
|
|
4
|
+
const SECOND_MILLISECONDS = 1000;
|
|
5
|
+
const MINUTE_MILLISECONDS = 60 * SECOND_MILLISECONDS;
|
|
6
|
+
const HOUR_MILLISECONDS = 60 * MINUTE_MILLISECONDS;
|
|
7
|
+
const DAY_MILLISECONDS = 24 * HOUR_MILLISECONDS;
|
|
8
|
+
/** Largest first: the order a written duration reads in. */
|
|
9
|
+
const FIELDS = [
|
|
10
|
+
{ field: 'days', unit: 'day', letter: 'd' },
|
|
11
|
+
{ field: 'hours', unit: 'hour', letter: 'h' },
|
|
12
|
+
{ field: 'minutes', unit: 'minute', letter: 'm' },
|
|
13
|
+
{ field: 'seconds', unit: 'second', letter: 's' },
|
|
14
|
+
];
|
|
15
|
+
/** A span of milliseconds, split into days to milliseconds and written out. A day is always 24 hours here. */
|
|
16
|
+
export class TemporalDuration {
|
|
17
|
+
static parts(opts) {
|
|
18
|
+
const { milliseconds } = opts;
|
|
19
|
+
if (!Number.isSafeInteger(milliseconds)) {
|
|
20
|
+
throw getError({
|
|
21
|
+
statusCode: HTTP.ResultCodes.RS_4.BadRequest,
|
|
22
|
+
message: `[TemporalDuration] milliseconds must be a safe integer - received ${milliseconds}`,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
const total = Math.abs(milliseconds);
|
|
26
|
+
return {
|
|
27
|
+
isNegative: milliseconds < 0,
|
|
28
|
+
days: Math.floor(total / DAY_MILLISECONDS),
|
|
29
|
+
hours: Math.floor((total % DAY_MILLISECONDS) / HOUR_MILLISECONDS),
|
|
30
|
+
minutes: Math.floor((total % HOUR_MILLISECONDS) / MINUTE_MILLISECONDS),
|
|
31
|
+
seconds: Math.floor((total % MINUTE_MILLISECONDS) / SECOND_MILLISECONDS),
|
|
32
|
+
milliseconds: total % SECOND_MILLISECONDS,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Days, hours, minutes and seconds, zero units left out and milliseconds dropped: `compact` is
|
|
37
|
+
* `1d1h30m`, the other styles use the locale's unit words (`1 ngày 1 giờ 30 phút`). Under a
|
|
38
|
+
* second writes `0s` or `0 seconds`.
|
|
39
|
+
*/
|
|
40
|
+
static format(opts) {
|
|
41
|
+
const { style = TemporalDurationStyles.COMPACT, locale } = opts;
|
|
42
|
+
if (!TemporalDurationStyles.isValid(style)) {
|
|
43
|
+
throw getError({
|
|
44
|
+
statusCode: HTTP.ResultCodes.RS_4.BadRequest,
|
|
45
|
+
message: `[TemporalDuration] unknown style '${style}' | Supported: ${[...TemporalDurationStyles.SCHEME_SET].join(', ')}`,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
const parts = TemporalDuration.parts({ milliseconds: opts.milliseconds });
|
|
49
|
+
const present = FIELDS.filter(({ field }) => parts[field] > 0);
|
|
50
|
+
const written = present.length > 0 ? present : [FIELDS[FIELDS.length - 1]];
|
|
51
|
+
// Under a second writes `0s` whatever the sign: there is no negative zero to show.
|
|
52
|
+
const sign = parts.isNegative && present.length > 0 ? '-' : '';
|
|
53
|
+
if (style === TemporalDurationStyles.COMPACT) {
|
|
54
|
+
return sign + written.map(({ field, letter }) => `${parts[field]}${letter}`).join('');
|
|
55
|
+
}
|
|
56
|
+
const words = written.map(({ field, unit }) => new Intl.NumberFormat(locale, { style: 'unit', unit, unitDisplay: style }).format(parts[field]));
|
|
57
|
+
return sign + new Intl.ListFormat(locale, { type: 'unit', style }).format(words);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=duration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.js","sourceRoot":"","sources":["../../../../src/modules/temporal/duration.ts"],"names":[],"mappings":"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"}
|