@bessemer/cornerstone 0.5.88 → 0.5.90
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/signature.js +2 -2
- package/dist/signature.js.map +1 -1
- package/dist/temporal/chrono.d.ts +1 -1
- package/dist/temporal/chrono.d.ts.map +1 -1
- package/dist/temporal/chrono.js +2 -2
- package/dist/temporal/chrono.js.map +1 -1
- package/dist/temporal/clock.d.ts +4 -4
- package/dist/temporal/clock.d.ts.map +1 -1
- package/dist/temporal/clock.js.map +1 -1
- package/dist/temporal/duration.d.ts +21 -18
- package/dist/temporal/duration.d.ts.map +1 -1
- package/dist/temporal/duration.js +7 -3
- package/dist/temporal/duration.js.map +1 -1
- package/dist/temporal/instant.d.ts +15 -12
- package/dist/temporal/instant.d.ts.map +1 -1
- package/dist/temporal/instant.js +8 -2
- package/dist/temporal/instant.js.map +1 -1
- package/dist/temporal/plain-time.d.ts +19 -16
- package/dist/temporal/plain-time.d.ts.map +1 -1
- package/dist/temporal/plain-time.js +7 -2
- package/dist/temporal/plain-time.js.map +1 -1
- package/dist/temporal/time-zone-offset.d.ts +2 -2
- package/dist/temporal/time-zone-offset.d.ts.map +1 -1
- package/dist/temporal/time-zone-offset.js.map +1 -1
- package/package.json +1 -1
package/dist/signature.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
import { isReferencable } from "@bessemer/cornerstone/reference";
|
3
3
|
import { isObject } from "@bessemer/cornerstone/object";
|
4
4
|
import { isDate } from "@bessemer/cornerstone/temporal/date";
|
5
|
-
import { _isInstant,
|
5
|
+
import { _isInstant, instantToLiteral } from "@bessemer/cornerstone/temporal/chrono";
|
6
6
|
var sign = (value) => {
|
7
7
|
if (value === null) {
|
8
8
|
return null;
|
@@ -18,7 +18,7 @@ var sign = (value) => {
|
|
18
18
|
return value.getTime();
|
19
19
|
}
|
20
20
|
if (_isInstant(value)) {
|
21
|
-
return
|
21
|
+
return instantToLiteral(value);
|
22
22
|
}
|
23
23
|
if (value === true) {
|
24
24
|
return 1;
|
package/dist/signature.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/signature.ts"],"sourcesContent":["import { isReferencable, Reference } from '@bessemer/cornerstone/reference'\nimport { BasicType } from '@bessemer/cornerstone/types'\nimport { isObject } from '@bessemer/cornerstone/object'\nimport { isDate } from '@bessemer/cornerstone/temporal/date'\nimport { _isInstant,
|
1
|
+
{"version":3,"sources":["../src/signature.ts"],"sourcesContent":["import { isReferencable, Reference } from '@bessemer/cornerstone/reference'\nimport { BasicType } from '@bessemer/cornerstone/types'\nimport { isObject } from '@bessemer/cornerstone/object'\nimport { isDate } from '@bessemer/cornerstone/temporal/date'\nimport { _isInstant, instantToLiteral } from '@bessemer/cornerstone/temporal/chrono'\n\n// JOHN it is probably worth revisiting this in the context of using this library code more frequently... in particular\n// all of these things have similar properties (\"primitives\", sortable, value equality, etc.) but this method of implementation\n// forces them all to be converted to strings or numbers first which is an expensive operation.\n\nexport type Signable = BasicType | null | { id: string } | { reference: Reference<string> }\nexport type Signature = string | number | null\n\nexport const sign = (value: Signable): Signature => {\n if (value === null) {\n return null\n }\n\n if (isObject(value)) {\n if (isReferencable(value)) {\n return value.reference.id\n } else {\n return value.id\n }\n }\n\n if (isDate(value)) {\n return value.getTime()\n }\n\n if (_isInstant(value)) {\n return instantToLiteral(value)\n }\n\n if (value === true) {\n return 1\n }\n if (value === false) {\n return 0\n }\n\n return value\n}\n\nexport const signAll = (values: Array<Signable>): Array<Signature> => {\n return values.map(sign)\n}\n"],"mappings":";AAAA,SAAS,sBAAiC;AAE1C,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,YAAY,wBAAwB;AAStC,IAAM,OAAO,CAAC,UAA+B;AAClD,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,KAAK,GAAG;AACnB,QAAI,eAAe,KAAK,GAAG;AACzB,aAAO,MAAM,UAAU;AAAA,IACzB,OAAO;AACL,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AAEA,MAAI,OAAO,KAAK,GAAG;AACjB,WAAO,MAAM,QAAQ;AAAA,EACvB;AAEA,MAAI,WAAW,KAAK,GAAG;AACrB,WAAO,iBAAiB,KAAK;AAAA,EAC/B;AAEA,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,OAAO;AACnB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,IAAM,UAAU,CAAC,WAA8C;AACpE,SAAO,OAAO,IAAI,IAAI;AACxB;","names":[]}
|
@@ -29,6 +29,6 @@ export declare const ChronoUnit: {
|
|
29
29
|
readonly Nanosecond: "nanosecond";
|
30
30
|
};
|
31
31
|
export type ChronoUnit = ValueOf<typeof ChronoUnit>;
|
32
|
-
export declare const
|
32
|
+
export declare const instantToLiteral: (value: Instant) => InstantLiteral;
|
33
33
|
export declare const _isInstant: (value: unknown) => value is Instant;
|
34
34
|
//# sourceMappingURL=chrono.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"chrono.d.ts","sourceRoot":"","sources":["../../src/temporal/chrono.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAGhF,eAAO,MAAM,QAAQ;;;;;;;CAOX,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,QAAQ,CAAC,CAAA;AAE/C,eAAO,MAAM,QAAQ;;;;;CAKX,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,QAAQ,CAAC,CAAA;AAE/C,eAAO,MAAM,UAAU;;;;;;;;;;;CAGb,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,UAAU,CAAC,CAAA;AAGnD,eAAO,MAAM,
|
1
|
+
{"version":3,"file":"chrono.d.ts","sourceRoot":"","sources":["../../src/temporal/chrono.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAGhF,eAAO,MAAM,QAAQ;;;;;;;CAOX,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,QAAQ,CAAC,CAAA;AAE/C,eAAO,MAAM,QAAQ;;;;;CAKX,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,QAAQ,CAAC,CAAA;AAE/C,eAAO,MAAM,UAAU;;;;;;;;;;;CAGb,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,UAAU,CAAC,CAAA;AAGnD,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,cAEjD,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OAEpD,CAAA"}
|
package/dist/temporal/chrono.js
CHANGED
@@ -18,7 +18,7 @@ var ChronoUnit = {
|
|
18
18
|
...TimeUnit,
|
19
19
|
...DateUnit
|
20
20
|
};
|
21
|
-
var
|
21
|
+
var instantToLiteral = (value) => {
|
22
22
|
return value.toJSON();
|
23
23
|
};
|
24
24
|
var _isInstant = (value) => {
|
@@ -29,6 +29,6 @@ export {
|
|
29
29
|
DateUnit,
|
30
30
|
TimeUnit,
|
31
31
|
_isInstant,
|
32
|
-
|
32
|
+
instantToLiteral
|
33
33
|
};
|
34
34
|
//# sourceMappingURL=chrono.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/temporal/chrono.ts"],"sourcesContent":["import { ValueOf } from 'type-fest'\nimport { Instant, InstantLiteral } from '@bessemer/cornerstone/temporal/instant'\nimport { Temporal } from '@js-temporal/polyfill'\n\nexport const TimeUnit = {\n Hour: 'hour',\n Minute: 'minute',\n Second: 'second',\n Millisecond: 'millisecond',\n Microsecond: 'microsecond',\n Nanosecond: 'nanosecond',\n} as const\n\nexport type TimeUnit = ValueOf<typeof TimeUnit>\n\nexport const DateUnit = {\n Year: 'year',\n Month: 'month',\n Week: 'week',\n Day: 'day',\n} as const\n\nexport type DateUnit = ValueOf<typeof DateUnit>\n\nexport const ChronoUnit = {\n ...TimeUnit,\n ...DateUnit,\n} as const\n\nexport type ChronoUnit = ValueOf<typeof ChronoUnit>\n\n// These methods are here to avoid circular dependencies\nexport const
|
1
|
+
{"version":3,"sources":["../../src/temporal/chrono.ts"],"sourcesContent":["import { ValueOf } from 'type-fest'\nimport { Instant, InstantLiteral } from '@bessemer/cornerstone/temporal/instant'\nimport { Temporal } from '@js-temporal/polyfill'\n\nexport const TimeUnit = {\n Hour: 'hour',\n Minute: 'minute',\n Second: 'second',\n Millisecond: 'millisecond',\n Microsecond: 'microsecond',\n Nanosecond: 'nanosecond',\n} as const\n\nexport type TimeUnit = ValueOf<typeof TimeUnit>\n\nexport const DateUnit = {\n Year: 'year',\n Month: 'month',\n Week: 'week',\n Day: 'day',\n} as const\n\nexport type DateUnit = ValueOf<typeof DateUnit>\n\nexport const ChronoUnit = {\n ...TimeUnit,\n ...DateUnit,\n} as const\n\nexport type ChronoUnit = ValueOf<typeof ChronoUnit>\n\n// These methods are here to avoid circular dependencies\nexport const instantToLiteral = (value: Instant): InstantLiteral => {\n return value.toJSON() as InstantLiteral\n}\n\nexport const _isInstant = (value: unknown): value is Instant => {\n return value instanceof Temporal.Instant\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AAElB,IAAM,WAAW;AAAA,EACtB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AACd;AAIO,IAAM,WAAW;AAAA,EACtB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,KAAK;AACP;AAIO,IAAM,aAAa;AAAA,EACxB,GAAG;AAAA,EACH,GAAG;AACL;AAKO,IAAM,mBAAmB,CAAC,UAAmC;AAClE,SAAO,MAAM,OAAO;AACtB;AAEO,IAAM,aAAa,CAAC,UAAqC;AAC9D,SAAO,iBAAiB,SAAS;AACnC;","names":[]}
|
package/dist/temporal/clock.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { TimeZoneId } from '@bessemer/cornerstone/temporal/time-zone-id';
|
2
|
-
import {
|
3
|
-
import { Instant,
|
2
|
+
import { DurationLike } from '@bessemer/cornerstone/temporal/duration';
|
3
|
+
import { Instant, InstantLike } from '@bessemer/cornerstone/temporal/instant';
|
4
4
|
export interface Clock {
|
5
5
|
readonly zone: TimeZoneId;
|
6
6
|
withZone: (zone: TimeZoneId) => Clock;
|
@@ -15,7 +15,7 @@ declare class SystemClock implements Clock {
|
|
15
15
|
export declare const SystemUtc: SystemClock;
|
16
16
|
export declare const Default: SystemClock;
|
17
17
|
export declare const system: (zone?: TimeZoneId) => Clock;
|
18
|
-
export declare const fixed: (fixedInstant:
|
19
|
-
export declare const offset: (clock: Clock, offset:
|
18
|
+
export declare const fixed: (fixedInstant: InstantLike, zone?: TimeZoneId) => Clock;
|
19
|
+
export declare const offset: (clock: Clock, offset: DurationLike) => Clock;
|
20
20
|
export {};
|
21
21
|
//# sourceMappingURL=clock.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/temporal/clock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAO,MAAM,6CAA6C,CAAA;AAC7E,OAAO,EAAY,
|
1
|
+
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/temporal/clock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAO,MAAM,6CAA6C,CAAA;AAC7E,OAAO,EAAY,YAAY,EAAgC,MAAM,yCAAyC,CAAA;AAC9G,OAAO,EAAuB,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AAGlG,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IAEzB,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,KAAK,CAAA;IAErC,OAAO,EAAE,MAAM,OAAO,CAAA;CACvB;AAED,cAAM,WAAY,YAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,UAAU;gBAAhB,IAAI,EAAE,UAAU;IAErC,OAAO,IAAI,OAAO;IAIlB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,KAAK;CAOlC;AAsCD,eAAO,MAAM,SAAS,aAAuB,CAAA;AAC7C,eAAO,MAAM,OAAO,aAAY,CAAA;AAEhC,eAAO,MAAM,MAAM,GAAI,OAAM,UAAgB,KAAG,KAM/C,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,cAAc,WAAW,EAAE,OAAM,UAAgB,KAAG,KAEzE,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,QAAQ,YAAY,KAAG,KAM3D,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/temporal/clock.ts"],"sourcesContent":["import { TimeZoneId, Utc } from '@bessemer/cornerstone/temporal/time-zone-id'\nimport { Duration,
|
1
|
+
{"version":3,"sources":["../../src/temporal/clock.ts"],"sourcesContent":["import { TimeZoneId, Utc } from '@bessemer/cornerstone/temporal/time-zone-id'\nimport { Duration, DurationLike, from as fromDuration, isZero } from '@bessemer/cornerstone/temporal/duration'\nimport { from as fromInstant, Instant, InstantLike } from '@bessemer/cornerstone/temporal/instant'\nimport { Temporal } from '@js-temporal/polyfill'\n\nexport interface Clock {\n readonly zone: TimeZoneId\n\n withZone: (zone: TimeZoneId) => Clock\n\n instant: () => Instant\n}\n\nclass SystemClock implements Clock {\n constructor(readonly zone: TimeZoneId) {}\n\n instant(): Instant {\n return Temporal.Now.instant()\n }\n\n withZone(zone: TimeZoneId): Clock {\n if (zone === this.zone) {\n return this\n }\n\n return new SystemClock(zone)\n }\n}\n\nclass FixedClock implements Clock {\n constructor(private fixedInstant: Instant, readonly zone: TimeZoneId) {}\n\n instant(): Instant {\n return this.fixedInstant\n }\n\n withZone(zone: TimeZoneId): Clock {\n if (zone === this.zone) {\n return this\n }\n\n return new FixedClock(this.fixedInstant, zone)\n }\n}\n\nclass OffsetClock implements Clock {\n readonly zone: TimeZoneId\n\n constructor(private clock: Clock, private offset: Duration) {\n this.zone = this.clock.zone\n }\n\n instant(): Instant {\n return this.clock.instant().add(this.offset)\n }\n\n withZone(zone: TimeZoneId): Clock {\n if (zone === this.clock.zone) {\n return this\n }\n\n return new OffsetClock(this.clock.withZone(zone), this.offset)\n }\n}\n\nexport const SystemUtc = new SystemClock(Utc)\nexport const Default = SystemUtc\n\nexport const system = (zone: TimeZoneId = Utc): Clock => {\n if (zone == Utc) {\n return SystemUtc\n }\n\n return new SystemClock(zone)\n}\n\nexport const fixed = (fixedInstant: InstantLike, zone: TimeZoneId = Utc): Clock => {\n return new FixedClock(fromInstant(fixedInstant), zone)\n}\n\nexport const offset = (clock: Clock, offset: DurationLike): Clock => {\n if (isZero(offset)) {\n return clock\n }\n\n return new OffsetClock(clock, fromDuration(offset))\n}\n"],"mappings":";AAAA,SAAqB,WAAW;AAChC,SAAiC,QAAQ,cAAc,cAAc;AACrE,SAAS,QAAQ,mBAAyC;AAC1D,SAAS,gBAAgB;AAUzB,IAAM,cAAN,MAAM,aAA6B;AAAA,EACjC,YAAqB,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAExC,UAAmB;AACjB,WAAO,SAAS,IAAI,QAAQ;AAAA,EAC9B;AAAA,EAEA,SAAS,MAAyB;AAChC,QAAI,SAAS,KAAK,MAAM;AACtB,aAAO;AAAA,IACT;AAEA,WAAO,IAAI,aAAY,IAAI;AAAA,EAC7B;AACF;AAEA,IAAM,aAAN,MAAM,YAA4B;AAAA,EAChC,YAAoB,cAAgC,MAAkB;AAAlD;AAAgC;AAAA,EAAmB;AAAA,EAEvE,UAAmB;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS,MAAyB;AAChC,QAAI,SAAS,KAAK,MAAM;AACtB,aAAO;AAAA,IACT;AAEA,WAAO,IAAI,YAAW,KAAK,cAAc,IAAI;AAAA,EAC/C;AACF;AAEA,IAAM,cAAN,MAAM,aAA6B;AAAA,EAGjC,YAAoB,OAAsBA,SAAkB;AAAxC;AAAsB,kBAAAA;AACxC,SAAK,OAAO,KAAK,MAAM;AAAA,EACzB;AAAA,EAJS;AAAA,EAMT,UAAmB;AACjB,WAAO,KAAK,MAAM,QAAQ,EAAE,IAAI,KAAK,MAAM;AAAA,EAC7C;AAAA,EAEA,SAAS,MAAyB;AAChC,QAAI,SAAS,KAAK,MAAM,MAAM;AAC5B,aAAO;AAAA,IACT;AAEA,WAAO,IAAI,aAAY,KAAK,MAAM,SAAS,IAAI,GAAG,KAAK,MAAM;AAAA,EAC/D;AACF;AAEO,IAAM,YAAY,IAAI,YAAY,GAAG;AACrC,IAAM,UAAU;AAEhB,IAAM,SAAS,CAAC,OAAmB,QAAe;AACvD,MAAI,QAAQ,KAAK;AACf,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,YAAY,IAAI;AAC7B;AAEO,IAAM,QAAQ,CAAC,cAA2B,OAAmB,QAAe;AACjF,SAAO,IAAI,WAAW,YAAY,YAAY,GAAG,IAAI;AACvD;AAEO,IAAM,SAAS,CAAC,OAAcA,YAAgC;AACnE,MAAI,OAAOA,OAAM,GAAG;AAClB,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,YAAY,OAAO,aAAaA,OAAM,CAAC;AACpD;","names":["offset"]}
|
@@ -16,35 +16,38 @@ export type DurationBuilder = {
|
|
16
16
|
microseconds?: number;
|
17
17
|
nanoseconds?: number;
|
18
18
|
};
|
19
|
-
export type
|
20
|
-
export declare const from: (value:
|
19
|
+
export type DurationLike = Duration | DurationLiteral | DurationBuilder;
|
20
|
+
export declare const from: (value: DurationLike) => Duration;
|
21
21
|
export declare const CompareBy: Comparator<Duration>;
|
22
22
|
export declare const EqualBy: import("@bessemer/cornerstone/equalitor").Equalitor<Temporal.Duration>;
|
23
23
|
export declare const parseString: (value: string) => Result<Duration, ErrorEvent>;
|
24
24
|
export declare const fromString: (value: string) => Duration;
|
25
|
-
export declare
|
26
|
-
export declare
|
25
|
+
export declare function toLiteral(value: DurationLike): DurationLiteral;
|
26
|
+
export declare function toLiteral(value: DurationLike | null): DurationLiteral | null;
|
27
|
+
export declare function toLiteral(value: DurationLike | undefined): DurationLiteral | undefined;
|
28
|
+
export declare function toLiteral(value: DurationLike | null | undefined): DurationLiteral | null | undefined;
|
29
|
+
export declare const SchemaLiteral: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<DurationLiteral | null | undefined, string>>;
|
27
30
|
export declare const SchemaInstance: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<Temporal.Duration, string>>;
|
28
31
|
export declare const isDuration: (value: unknown) => value is Duration;
|
29
|
-
export declare const merge: (element:
|
32
|
+
export declare const merge: (element: DurationLike, builder: DurationBuilder) => Duration;
|
30
33
|
export declare const fromMilliseconds: (value: number) => Duration;
|
31
|
-
export declare const toMilliseconds: (duration:
|
34
|
+
export declare const toMilliseconds: (duration: DurationLike) => number;
|
32
35
|
export declare const fromSeconds: (value: number) => Duration;
|
33
|
-
export declare const toSeconds: (duration:
|
36
|
+
export declare const toSeconds: (duration: DurationLike) => number;
|
34
37
|
export declare const fromMinutes: (value: number) => Duration;
|
35
|
-
export declare const toMinutes: (duration:
|
38
|
+
export declare const toMinutes: (duration: DurationLike) => number;
|
36
39
|
export declare const fromHours: (value: number) => Duration;
|
37
|
-
export declare const toHours: (duration:
|
40
|
+
export declare const toHours: (duration: DurationLike) => number;
|
38
41
|
export declare const fromUnit: (value: number, timeUnit: TimeUnit) => Duration;
|
39
|
-
export declare const toUnit: (duration:
|
40
|
-
export declare const isZero: (duration:
|
41
|
-
export declare const round: (element:
|
42
|
-
export declare const add: (...durations: Array<
|
43
|
-
export declare const subtract: (...durations: Array<
|
44
|
-
export declare const negate: (element:
|
45
|
-
export declare const isEqual: (element:
|
46
|
-
export declare const isLess: (element:
|
47
|
-
export declare const isGreater: (element:
|
42
|
+
export declare const toUnit: (duration: DurationLike, timeUnit: TimeUnit) => number;
|
43
|
+
export declare const isZero: (duration: DurationLike) => boolean;
|
44
|
+
export declare const round: (element: DurationLike, unit: TimeUnit) => Duration;
|
45
|
+
export declare const add: (...durations: Array<DurationLike>) => Duration;
|
46
|
+
export declare const subtract: (...durations: Array<DurationLike>) => Duration;
|
47
|
+
export declare const negate: (element: DurationLike) => Duration;
|
48
|
+
export declare const isEqual: (element: DurationLike, other: DurationLike) => boolean;
|
49
|
+
export declare const isLess: (element: DurationLike, other: DurationLike) => boolean;
|
50
|
+
export declare const isGreater: (element: DurationLike, other: DurationLike) => boolean;
|
48
51
|
export declare const Zero: Temporal.Duration;
|
49
52
|
export declare const OneMillisecond: Temporal.Duration;
|
50
53
|
export declare const OneSecond: Temporal.Duration;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/temporal/duration.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAG7D,OAAO,EAAsB,MAAM,EAAW,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAEhG,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAA;
|
1
|
+
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/temporal/duration.ts"],"names":[],"mappings":"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"}
|
@@ -9,6 +9,7 @@ import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-ev
|
|
9
9
|
import { isError } from "@bessemer/cornerstone/error/error";
|
10
10
|
import { TimeUnit } from "@bessemer/cornerstone/temporal/chrono";
|
11
11
|
import { isString } from "@bessemer/cornerstone/string";
|
12
|
+
import { isNil } from "@bessemer/cornerstone/object";
|
12
13
|
var Namespace = namespace("duration");
|
13
14
|
var from = (value) => {
|
14
15
|
if (value instanceof Temporal.Duration) {
|
@@ -34,9 +35,12 @@ var parseString = (value) => {
|
|
34
35
|
var fromString = (value) => {
|
35
36
|
return unpackResult(parseString(value));
|
36
37
|
};
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
function toLiteral(value) {
|
39
|
+
if (isNil(value)) {
|
40
|
+
return value;
|
41
|
+
}
|
42
|
+
return from(value).toString();
|
43
|
+
}
|
40
44
|
var SchemaLiteral = structuredTransform(Zod.string(), (it) => mapResult(parseString(it), toLiteral));
|
41
45
|
var SchemaInstance = structuredTransform(Zod.string(), parseString);
|
42
46
|
var isDuration = (value) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/temporal/duration.ts"],"sourcesContent":["import Zod from 'zod'\nimport { Temporal } from '@js-temporal/polyfill'\nimport { namespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport { failure, mapResult, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { isError } from '@bessemer/cornerstone/error/error'\nimport { TimeUnit } from '@bessemer/cornerstone/temporal/chrono'\nimport { isString } from '@bessemer/cornerstone/string'\n\nexport type Duration = Temporal.Duration\nexport const Namespace = namespace('duration')\nexport type DurationLiteral = NominalType<string, typeof Namespace>\nexport type DurationBuilder = {\n hours?: number\n minutes?: number\n seconds?: number\n milliseconds?: number\n microseconds?: number\n nanoseconds?: number\n}\nexport type
|
1
|
+
{"version":3,"sources":["../../src/temporal/duration.ts"],"sourcesContent":["import Zod from 'zod'\nimport { Temporal } from '@js-temporal/polyfill'\nimport { namespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport { failure, mapResult, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { isError } from '@bessemer/cornerstone/error/error'\nimport { TimeUnit } from '@bessemer/cornerstone/temporal/chrono'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { isNil } from '@bessemer/cornerstone/object'\n\nexport type Duration = Temporal.Duration\nexport const Namespace = namespace('duration')\nexport type DurationLiteral = NominalType<string, typeof Namespace>\nexport type DurationBuilder = {\n hours?: number\n minutes?: number\n seconds?: number\n milliseconds?: number\n microseconds?: number\n nanoseconds?: number\n}\nexport type DurationLike = Duration | DurationLiteral | DurationBuilder\n\nexport const from = (value: DurationLike): Duration => {\n if (value instanceof Temporal.Duration) {\n return value\n }\n if (isString(value)) {\n return fromString(value)\n }\n\n return Temporal.Duration.from(value)\n}\n\nexport const CompareBy: Comparator<Duration> = (first: Duration, second: Duration): number => Temporal.Duration.compare(first, second)\nexport const EqualBy = fromComparator(CompareBy)\n\nexport const parseString = (value: string): Result<Duration, ErrorEvent> => {\n try {\n return success(Temporal.Duration.from(value))\n } catch (e) {\n if (!isError(e)) {\n throw e\n }\n\n return failure(invalidValue(value, { namespace: Namespace, message: e.message }))\n }\n}\n\nexport const fromString = (value: string): Duration => {\n return unpackResult(parseString(value))\n}\n\nexport function toLiteral(value: DurationLike): DurationLiteral\nexport function toLiteral(value: DurationLike | null): DurationLiteral | null\nexport function toLiteral(value: DurationLike | undefined): DurationLiteral | undefined\nexport function toLiteral(value: DurationLike | null | undefined): DurationLiteral | null | undefined\nexport function toLiteral(value: DurationLike | null | undefined): DurationLiteral | null | undefined {\n if (isNil(value)) {\n return value\n }\n\n return from(value).toString() as DurationLiteral\n}\n\nexport const SchemaLiteral = structuredTransform(Zod.string(), (it: string) => mapResult(parseString(it), toLiteral))\nexport const SchemaInstance = structuredTransform(Zod.string(), parseString)\n\nexport const isDuration = (value: unknown): value is Duration => {\n return value instanceof Temporal.Duration\n}\n\nexport const merge = (element: DurationLike, builder: DurationBuilder): Duration => {\n return from(element).with(builder)\n}\n\nexport const fromMilliseconds = (value: number): Duration => {\n return from({ milliseconds: value })\n}\n\nexport const toMilliseconds = (duration: DurationLike): number => {\n return from(duration).total(TimeUnit.Millisecond)\n}\n\nexport const fromSeconds = (value: number): Duration => {\n return from({ seconds: value })\n}\n\nexport const toSeconds = (duration: DurationLike): number => {\n return from(duration).total(TimeUnit.Second)\n}\n\nexport const fromMinutes = (value: number): Duration => {\n return from({ minutes: value })\n}\n\nexport const toMinutes = (duration: DurationLike): number => {\n return from(duration).total(TimeUnit.Minute)\n}\n\nexport const fromHours = (value: number): Duration => {\n return from({ hours: value })\n}\n\nexport const toHours = (duration: DurationLike): number => {\n return from(duration).total(TimeUnit.Hour)\n}\n\nexport const fromUnit = (value: number, timeUnit: TimeUnit): Duration => {\n switch (timeUnit) {\n case TimeUnit.Nanosecond:\n return from({ nanoseconds: value })\n case TimeUnit.Microsecond:\n return from({ microseconds: value })\n case TimeUnit.Millisecond:\n return from({ milliseconds: value })\n case TimeUnit.Second:\n return from({ seconds: value })\n case TimeUnit.Minute:\n return from({ minutes: value })\n case TimeUnit.Hour:\n return from({ hours: value })\n }\n}\n\nexport const toUnit = (duration: DurationLike, timeUnit: TimeUnit): number => {\n return from(duration).total(timeUnit)\n}\n\nexport const isZero = (duration: DurationLike): boolean => {\n return EqualBy(from(duration), Zero)\n}\n\nexport const round = (element: DurationLike, unit: TimeUnit): Duration => {\n return from(element).round({ smallestUnit: unit })\n}\n\nexport const add = (...durations: Array<DurationLike>): Duration => {\n return durations.map(from).reduce((first, second) => first.add(second), Zero)\n}\n\nexport const subtract = (...durations: Array<DurationLike>): Duration => {\n if (durations.length === 0) {\n return Zero\n }\n\n const instances = durations.map(from)\n return instances.slice(1).reduce((result, current) => result.subtract(current), instances[0]!)\n}\n\nexport const negate = (element: DurationLike): Duration => {\n return from(element).negated()\n}\n\nexport const isEqual = (element: DurationLike, other: DurationLike): boolean => {\n return EqualBy(from(element), from(other))\n}\n\nexport const isLess = (element: DurationLike, other: DurationLike): boolean => {\n return CompareBy(from(element), from(other)) < 0\n}\n\nexport const isGreater = (element: DurationLike, other: DurationLike): boolean => {\n return CompareBy(from(element), from(other)) > 0\n}\n\nexport const Zero = from({ nanoseconds: 0 })\nexport const OneMillisecond = fromMilliseconds(1)\nexport const OneSecond = fromSeconds(1)\nexport const OneMinute = fromMinutes(1)\nexport const OneHour = fromHours(1)\nexport const OneDay = fromHours(24)\n"],"mappings":";AAAA,OAAO,SAAS;AAChB,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAG1B,SAAS,sBAAsB;AAC/B,SAAS,2BAA2B;AACpC,SAAS,SAAS,WAAmB,eAAe;AACpD,SAAqB,cAAc,oBAAoB;AACvD,SAAS,eAAe;AACxB,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AACzB,SAAS,aAAa;AAGf,IAAM,YAAY,UAAU,UAAU;AAYtC,IAAM,OAAO,CAAC,UAAkC;AACrD,MAAI,iBAAiB,SAAS,UAAU;AACtC,WAAO;AAAA,EACT;AACA,MAAI,SAAS,KAAK,GAAG;AACnB,WAAO,WAAW,KAAK;AAAA,EACzB;AAEA,SAAO,SAAS,SAAS,KAAK,KAAK;AACrC;AAEO,IAAM,YAAkC,CAAC,OAAiB,WAA6B,SAAS,SAAS,QAAQ,OAAO,MAAM;AAC9H,IAAM,UAAU,eAAe,SAAS;AAExC,IAAM,cAAc,CAAC,UAAgD;AAC1E,MAAI;AACF,WAAO,QAAQ,SAAS,SAAS,KAAK,KAAK,CAAC;AAAA,EAC9C,SAAS,GAAG;AACV,QAAI,CAAC,QAAQ,CAAC,GAAG;AACf,YAAM;AAAA,IACR;AAEA,WAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,EAClF;AACF;AAEO,IAAM,aAAa,CAAC,UAA4B;AACrD,SAAO,aAAa,YAAY,KAAK,CAAC;AACxC;AAMO,SAAS,UAAU,OAA4E;AACpG,MAAI,MAAM,KAAK,GAAG;AAChB,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,KAAK,EAAE,SAAS;AAC9B;AAEO,IAAM,gBAAgB,oBAAoB,IAAI,OAAO,GAAG,CAAC,OAAe,UAAU,YAAY,EAAE,GAAG,SAAS,CAAC;AAC7G,IAAM,iBAAiB,oBAAoB,IAAI,OAAO,GAAG,WAAW;AAEpE,IAAM,aAAa,CAAC,UAAsC;AAC/D,SAAO,iBAAiB,SAAS;AACnC;AAEO,IAAM,QAAQ,CAAC,SAAuB,YAAuC;AAClF,SAAO,KAAK,OAAO,EAAE,KAAK,OAAO;AACnC;AAEO,IAAM,mBAAmB,CAAC,UAA4B;AAC3D,SAAO,KAAK,EAAE,cAAc,MAAM,CAAC;AACrC;AAEO,IAAM,iBAAiB,CAAC,aAAmC;AAChE,SAAO,KAAK,QAAQ,EAAE,MAAM,SAAS,WAAW;AAClD;AAEO,IAAM,cAAc,CAAC,UAA4B;AACtD,SAAO,KAAK,EAAE,SAAS,MAAM,CAAC;AAChC;AAEO,IAAM,YAAY,CAAC,aAAmC;AAC3D,SAAO,KAAK,QAAQ,EAAE,MAAM,SAAS,MAAM;AAC7C;AAEO,IAAM,cAAc,CAAC,UAA4B;AACtD,SAAO,KAAK,EAAE,SAAS,MAAM,CAAC;AAChC;AAEO,IAAM,YAAY,CAAC,aAAmC;AAC3D,SAAO,KAAK,QAAQ,EAAE,MAAM,SAAS,MAAM;AAC7C;AAEO,IAAM,YAAY,CAAC,UAA4B;AACpD,SAAO,KAAK,EAAE,OAAO,MAAM,CAAC;AAC9B;AAEO,IAAM,UAAU,CAAC,aAAmC;AACzD,SAAO,KAAK,QAAQ,EAAE,MAAM,SAAS,IAAI;AAC3C;AAEO,IAAM,WAAW,CAAC,OAAe,aAAiC;AACvE,UAAQ,UAAU;AAAA,IAChB,KAAK,SAAS;AACZ,aAAO,KAAK,EAAE,aAAa,MAAM,CAAC;AAAA,IACpC,KAAK,SAAS;AACZ,aAAO,KAAK,EAAE,cAAc,MAAM,CAAC;AAAA,IACrC,KAAK,SAAS;AACZ,aAAO,KAAK,EAAE,cAAc,MAAM,CAAC;AAAA,IACrC,KAAK,SAAS;AACZ,aAAO,KAAK,EAAE,SAAS,MAAM,CAAC;AAAA,IAChC,KAAK,SAAS;AACZ,aAAO,KAAK,EAAE,SAAS,MAAM,CAAC;AAAA,IAChC,KAAK,SAAS;AACZ,aAAO,KAAK,EAAE,OAAO,MAAM,CAAC;AAAA,EAChC;AACF;AAEO,IAAM,SAAS,CAAC,UAAwB,aAA+B;AAC5E,SAAO,KAAK,QAAQ,EAAE,MAAM,QAAQ;AACtC;AAEO,IAAM,SAAS,CAAC,aAAoC;AACzD,SAAO,QAAQ,KAAK,QAAQ,GAAG,IAAI;AACrC;AAEO,IAAM,QAAQ,CAAC,SAAuB,SAA6B;AACxE,SAAO,KAAK,OAAO,EAAE,MAAM,EAAE,cAAc,KAAK,CAAC;AACnD;AAEO,IAAM,MAAM,IAAI,cAA6C;AAClE,SAAO,UAAU,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO,WAAW,MAAM,IAAI,MAAM,GAAG,IAAI;AAC9E;AAEO,IAAM,WAAW,IAAI,cAA6C;AACvE,MAAI,UAAU,WAAW,GAAG;AAC1B,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,UAAU,IAAI,IAAI;AACpC,SAAO,UAAU,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,YAAY,OAAO,SAAS,OAAO,GAAG,UAAU,CAAC,CAAE;AAC/F;AAEO,IAAM,SAAS,CAAC,YAAoC;AACzD,SAAO,KAAK,OAAO,EAAE,QAAQ;AAC/B;AAEO,IAAM,UAAU,CAAC,SAAuB,UAAiC;AAC9E,SAAO,QAAQ,KAAK,OAAO,GAAG,KAAK,KAAK,CAAC;AAC3C;AAEO,IAAM,SAAS,CAAC,SAAuB,UAAiC;AAC7E,SAAO,UAAU,KAAK,OAAO,GAAG,KAAK,KAAK,CAAC,IAAI;AACjD;AAEO,IAAM,YAAY,CAAC,SAAuB,UAAiC;AAChF,SAAO,UAAU,KAAK,OAAO,GAAG,KAAK,KAAK,CAAC,IAAI;AACjD;AAEO,IAAM,OAAO,KAAK,EAAE,aAAa,EAAE,CAAC;AACpC,IAAM,iBAAiB,iBAAiB,CAAC;AACzC,IAAM,YAAY,YAAY,CAAC;AAC/B,IAAM,YAAY,YAAY,CAAC;AAC/B,IAAM,UAAU,UAAU,CAAC;AAC3B,IAAM,SAAS,UAAU,EAAE;","names":[]}
|
@@ -4,20 +4,23 @@ import { Comparator } from '@bessemer/cornerstone/comparator';
|
|
4
4
|
import { Result } from '@bessemer/cornerstone/result';
|
5
5
|
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
6
6
|
import Zod from 'zod';
|
7
|
-
import { Duration,
|
7
|
+
import { Duration, DurationLike } from '@bessemer/cornerstone/temporal/duration';
|
8
8
|
import { TimeUnit } from '@bessemer/cornerstone/temporal/chrono';
|
9
9
|
export type Instant = Temporal.Instant;
|
10
10
|
export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"instant">;
|
11
11
|
export type InstantLiteral = NominalType<string, typeof Namespace>;
|
12
|
-
export type
|
13
|
-
export declare const from: (value:
|
12
|
+
export type InstantLike = Instant | Date | InstantLiteral;
|
13
|
+
export declare const from: (value: InstantLike) => Instant;
|
14
14
|
export declare const CompareBy: Comparator<Instant>;
|
15
15
|
export declare const EqualBy: import("@bessemer/cornerstone/equalitor").Equalitor<Temporal.Instant>;
|
16
16
|
export declare const parseString: (value: string) => Result<Instant, ErrorEvent>;
|
17
17
|
export declare const fromString: (value: string) => Instant;
|
18
|
-
export declare
|
18
|
+
export declare function toLiteral(value: InstantLike): InstantLiteral;
|
19
|
+
export declare function toLiteral(value: InstantLike | null): InstantLiteral | null;
|
20
|
+
export declare function toLiteral(value: InstantLike | undefined): InstantLiteral | undefined;
|
21
|
+
export declare function toLiteral(value: InstantLike | null | undefined): InstantLiteral | null | undefined;
|
19
22
|
export declare const toDate: (value: Instant) => Date;
|
20
|
-
export declare const SchemaLiteral: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<InstantLiteral, string>>;
|
23
|
+
export declare const SchemaLiteral: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<InstantLiteral | null | undefined, string>>;
|
21
24
|
export declare const SchemaInstance: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<Temporal.Instant, string>>;
|
22
25
|
export declare const isInstant: (value: unknown) => value is Instant;
|
23
26
|
export declare const now: (clock?: {
|
@@ -25,11 +28,11 @@ export declare const now: (clock?: {
|
|
25
28
|
instant(): Instant;
|
26
29
|
withZone(zone: import("./time-zone-id").TimeZoneId): import("@bessemer/cornerstone/temporal/clock").Clock;
|
27
30
|
}) => Instant;
|
28
|
-
export declare const add: (element:
|
29
|
-
export declare const subtract: (element:
|
30
|
-
export declare const until: (element:
|
31
|
-
export declare const round: (element:
|
32
|
-
export declare const isEqual: (element:
|
33
|
-
export declare const isBefore: (element:
|
34
|
-
export declare const isAfter: (element:
|
31
|
+
export declare const add: (element: InstantLike, duration: DurationLike) => Instant;
|
32
|
+
export declare const subtract: (element: InstantLike, duration: DurationLike) => Instant;
|
33
|
+
export declare const until: (element: InstantLike, other: InstantLike) => Duration;
|
34
|
+
export declare const round: (element: InstantLike, unit: TimeUnit) => Instant;
|
35
|
+
export declare const isEqual: (element: InstantLike, other: InstantLike) => boolean;
|
36
|
+
export declare const isBefore: (element: InstantLike, other: InstantLike) => boolean;
|
37
|
+
export declare const isAfter: (element: InstantLike, other: InstantLike) => boolean;
|
35
38
|
//# sourceMappingURL=instant.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"instant.d.ts","sourceRoot":"","sources":["../../src/temporal/instant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D,OAAO,EAAsB,MAAM,EAAW,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAGhG,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,QAAQ,EAAE,
|
1
|
+
{"version":3,"file":"instant.d.ts","sourceRoot":"","sources":["../../src/temporal/instant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D,OAAO,EAAsB,MAAM,EAAW,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAGhG,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAwB,MAAM,yCAAyC,CAAA;AACtG,OAAO,EAAgC,QAAQ,EAAE,MAAM,uCAAuC,CAAA;AAI9F,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;AACtC,eAAO,MAAM,SAAS,2EAAuB,CAAA;AAC7C,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAClE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,IAAI,GAAG,cAAc,CAAA;AAEzD,eAAO,MAAM,IAAI,GAAI,OAAO,WAAW,KAAG,OASzC,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,UAAU,CAAC,OAAO,CAAwF,CAAA;AAClI,eAAO,MAAM,OAAO,uEAA4B,CAAA;AAEhD,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,OAAO,EAAE,UAAU,CAUrE,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,OAE1C,CAAA;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAAA;AAC7D,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI,CAAA;AAC3E,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAAA;AACrF,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,GAAG,IAAI,GAAG,SAAS,CAAA;AASnG,eAAO,MAAM,MAAM,GAAI,OAAO,OAAO,KAAG,IAEvC,CAAA;AAED,eAAO,MAAM,aAAa,yFAA2F,CAAA;AACrH,eAAO,MAAM,cAAc,wEAAiD,CAAA;AAE5E,eAAO,MAAM,SAAS,sCAAa,CAAA;AAEnC,eAAO,MAAM,GAAG,GAAI;;;;CAAoB,KAAG,OAE1C,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,SAAS,WAAW,EAAE,UAAU,YAAY,KAAG,OAElE,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,SAAS,WAAW,EAAE,UAAU,YAAY,KAAG,OAEvE,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,SAAS,WAAW,EAAE,OAAO,WAAW,KAAG,QAEhE,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,SAAS,WAAW,EAAE,MAAM,QAAQ,KAAG,OAE5D,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,SAAS,WAAW,EAAE,OAAO,WAAW,KAAG,OAElE,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,SAAS,WAAW,EAAE,OAAO,WAAW,KAAG,OAEnE,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,SAAS,WAAW,EAAE,OAAO,WAAW,KAAG,OAElE,CAAA"}
|
package/dist/temporal/instant.js
CHANGED
@@ -9,8 +9,9 @@ import { structuredTransform } from "@bessemer/cornerstone/zod-util";
|
|
9
9
|
import Zod from "zod";
|
10
10
|
import { Default as DefaultClock } from "@bessemer/cornerstone/temporal/clock";
|
11
11
|
import { from as fromDuration } from "@bessemer/cornerstone/temporal/duration";
|
12
|
-
import { _isInstant,
|
12
|
+
import { _isInstant, instantToLiteral } from "@bessemer/cornerstone/temporal/chrono";
|
13
13
|
import { isString } from "@bessemer/cornerstone/string";
|
14
|
+
import { isNil } from "@bessemer/cornerstone/object";
|
14
15
|
var Namespace = namespace("instant");
|
15
16
|
var from = (value) => {
|
16
17
|
if (value instanceof Temporal.Instant) {
|
@@ -36,7 +37,12 @@ var parseString = (value) => {
|
|
36
37
|
var fromString = (value) => {
|
37
38
|
return unpackResult(parseString(value));
|
38
39
|
};
|
39
|
-
|
40
|
+
function toLiteral(value) {
|
41
|
+
if (isNil(value)) {
|
42
|
+
return value;
|
43
|
+
}
|
44
|
+
return instantToLiteral(from(value));
|
45
|
+
}
|
40
46
|
var toDate = (value) => {
|
41
47
|
return new Date(value.epochMilliseconds);
|
42
48
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/temporal/instant.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill'\nimport { namespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { failure, mapResult, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { isError } from '@bessemer/cornerstone/error/error'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport Zod from 'zod'\nimport { Default as DefaultClock } from '@bessemer/cornerstone/temporal/clock'\nimport { Duration,
|
1
|
+
{"version":3,"sources":["../../src/temporal/instant.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill'\nimport { namespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { failure, mapResult, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { isError } from '@bessemer/cornerstone/error/error'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport Zod from 'zod'\nimport { Default as DefaultClock } from '@bessemer/cornerstone/temporal/clock'\nimport { Duration, DurationLike, from as fromDuration } from '@bessemer/cornerstone/temporal/duration'\nimport { _isInstant, instantToLiteral, TimeUnit } from '@bessemer/cornerstone/temporal/chrono'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { isNil } from '@bessemer/cornerstone/object'\n\nexport type Instant = Temporal.Instant\nexport const Namespace = namespace('instant')\nexport type InstantLiteral = NominalType<string, typeof Namespace>\nexport type InstantLike = Instant | Date | InstantLiteral\n\nexport const from = (value: InstantLike): Instant => {\n if (value instanceof Temporal.Instant) {\n return value\n }\n if (isString(value)) {\n return fromString(value)\n }\n\n return Temporal.Instant.fromEpochMilliseconds(value.getTime())\n}\n\nexport const CompareBy: Comparator<Instant> = (first: Instant, second: Instant): number => Temporal.Instant.compare(first, second)\nexport const EqualBy = fromComparator(CompareBy)\n\nexport const parseString = (value: string): Result<Instant, ErrorEvent> => {\n try {\n return success(Temporal.Instant.from(value))\n } catch (e) {\n if (!isError(e)) {\n throw e\n }\n\n return failure(invalidValue(value, { namespace: Namespace, message: e.message }))\n }\n}\n\nexport const fromString = (value: string): Instant => {\n return unpackResult(parseString(value))\n}\n\nexport function toLiteral(value: InstantLike): InstantLiteral\nexport function toLiteral(value: InstantLike | null): InstantLiteral | null\nexport function toLiteral(value: InstantLike | undefined): InstantLiteral | undefined\nexport function toLiteral(value: InstantLike | null | undefined): InstantLiteral | null | undefined\nexport function toLiteral(value: InstantLike | null | undefined): InstantLiteral | null | undefined {\n if (isNil(value)) {\n return value\n }\n\n return instantToLiteral(from(value))\n}\n\nexport const toDate = (value: Instant): Date => {\n return new Date(value.epochMilliseconds)\n}\n\nexport const SchemaLiteral = structuredTransform(Zod.string(), (it: string) => mapResult(parseString(it), toLiteral))\nexport const SchemaInstance = structuredTransform(Zod.string(), parseString)\n\nexport const isInstant = _isInstant\n\nexport const now = (clock = DefaultClock): Instant => {\n return clock.instant()\n}\n\nexport const add = (element: InstantLike, duration: DurationLike): Instant => {\n return from(element).add(fromDuration(duration))\n}\n\nexport const subtract = (element: InstantLike, duration: DurationLike): Instant => {\n return from(element).subtract(fromDuration(duration))\n}\n\nexport const until = (element: InstantLike, other: InstantLike): Duration => {\n return from(element).until(from(other))\n}\n\nexport const round = (element: InstantLike, unit: TimeUnit): Instant => {\n return from(element).round({ smallestUnit: unit })\n}\n\nexport const isEqual = (element: InstantLike, other: InstantLike): boolean => {\n return EqualBy(from(element), from(other))\n}\n\nexport const isBefore = (element: InstantLike, other: InstantLike): boolean => {\n return CompareBy(from(element), from(other)) < 0\n}\n\nexport const isAfter = (element: InstantLike, other: InstantLike): boolean => {\n return CompareBy(from(element), from(other)) > 0\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAG1B,SAAS,sBAAsB;AAC/B,SAAS,SAAS,WAAmB,eAAe;AACpD,SAAqB,cAAc,oBAAoB;AACvD,SAAS,eAAe;AACxB,SAAS,2BAA2B;AACpC,OAAO,SAAS;AAChB,SAAS,WAAW,oBAAoB;AACxC,SAAiC,QAAQ,oBAAoB;AAC7D,SAAS,YAAY,wBAAkC;AACvD,SAAS,gBAAgB;AACzB,SAAS,aAAa;AAGf,IAAM,YAAY,UAAU,SAAS;AAIrC,IAAM,OAAO,CAAC,UAAgC;AACnD,MAAI,iBAAiB,SAAS,SAAS;AACrC,WAAO;AAAA,EACT;AACA,MAAI,SAAS,KAAK,GAAG;AACnB,WAAO,WAAW,KAAK;AAAA,EACzB;AAEA,SAAO,SAAS,QAAQ,sBAAsB,MAAM,QAAQ,CAAC;AAC/D;AAEO,IAAM,YAAiC,CAAC,OAAgB,WAA4B,SAAS,QAAQ,QAAQ,OAAO,MAAM;AAC1H,IAAM,UAAU,eAAe,SAAS;AAExC,IAAM,cAAc,CAAC,UAA+C;AACzE,MAAI;AACF,WAAO,QAAQ,SAAS,QAAQ,KAAK,KAAK,CAAC;AAAA,EAC7C,SAAS,GAAG;AACV,QAAI,CAAC,QAAQ,CAAC,GAAG;AACf,YAAM;AAAA,IACR;AAEA,WAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,EAClF;AACF;AAEO,IAAM,aAAa,CAAC,UAA2B;AACpD,SAAO,aAAa,YAAY,KAAK,CAAC;AACxC;AAMO,SAAS,UAAU,OAA0E;AAClG,MAAI,MAAM,KAAK,GAAG;AAChB,WAAO;AAAA,EACT;AAEA,SAAO,iBAAiB,KAAK,KAAK,CAAC;AACrC;AAEO,IAAM,SAAS,CAAC,UAAyB;AAC9C,SAAO,IAAI,KAAK,MAAM,iBAAiB;AACzC;AAEO,IAAM,gBAAgB,oBAAoB,IAAI,OAAO,GAAG,CAAC,OAAe,UAAU,YAAY,EAAE,GAAG,SAAS,CAAC;AAC7G,IAAM,iBAAiB,oBAAoB,IAAI,OAAO,GAAG,WAAW;AAEpE,IAAM,YAAY;AAElB,IAAM,MAAM,CAAC,QAAQ,iBAA0B;AACpD,SAAO,MAAM,QAAQ;AACvB;AAEO,IAAM,MAAM,CAAC,SAAsB,aAAoC;AAC5E,SAAO,KAAK,OAAO,EAAE,IAAI,aAAa,QAAQ,CAAC;AACjD;AAEO,IAAM,WAAW,CAAC,SAAsB,aAAoC;AACjF,SAAO,KAAK,OAAO,EAAE,SAAS,aAAa,QAAQ,CAAC;AACtD;AAEO,IAAM,QAAQ,CAAC,SAAsB,UAAiC;AAC3E,SAAO,KAAK,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC;AACxC;AAEO,IAAM,QAAQ,CAAC,SAAsB,SAA4B;AACtE,SAAO,KAAK,OAAO,EAAE,MAAM,EAAE,cAAc,KAAK,CAAC;AACnD;AAEO,IAAM,UAAU,CAAC,SAAsB,UAAgC;AAC5E,SAAO,QAAQ,KAAK,OAAO,GAAG,KAAK,KAAK,CAAC;AAC3C;AAEO,IAAM,WAAW,CAAC,SAAsB,UAAgC;AAC7E,SAAO,UAAU,KAAK,OAAO,GAAG,KAAK,KAAK,CAAC,IAAI;AACjD;AAEO,IAAM,UAAU,CAAC,SAAsB,UAAgC;AAC5E,SAAO,UAAU,KAAK,OAAO,GAAG,KAAK,KAAK,CAAC,IAAI;AACjD;","names":[]}
|
@@ -4,8 +4,8 @@ import { Comparator } from '@bessemer/cornerstone/comparator';
|
|
4
4
|
import { Result } from '@bessemer/cornerstone/result';
|
5
5
|
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
6
6
|
import Zod from 'zod';
|
7
|
-
import { Duration,
|
8
|
-
import {
|
7
|
+
import { Duration, DurationLike } from '@bessemer/cornerstone/temporal/duration';
|
8
|
+
import { InstantLike } from '@bessemer/cornerstone/temporal/instant';
|
9
9
|
import { TimeZoneId } from '@bessemer/cornerstone/temporal/time-zone-id';
|
10
10
|
import { TimeUnit } from '@bessemer/cornerstone/temporal/chrono';
|
11
11
|
export type PlainTime = Temporal.PlainTime;
|
@@ -19,16 +19,19 @@ export type PlainTimeBuilder = {
|
|
19
19
|
microsecond?: number;
|
20
20
|
nanosecond?: number;
|
21
21
|
};
|
22
|
-
export type
|
23
|
-
export declare const from: (value:
|
22
|
+
export type PlainTimeLike = PlainTime | PlainTimeLiteral | PlainTimeBuilder;
|
23
|
+
export declare const from: (value: PlainTimeLike) => PlainTime;
|
24
24
|
export declare const CompareBy: Comparator<PlainTime>;
|
25
25
|
export declare const EqualBy: import("@bessemer/cornerstone/equalitor").Equalitor<Temporal.PlainTime>;
|
26
26
|
export declare const parseString: (value: string) => Result<PlainTime, ErrorEvent>;
|
27
27
|
export declare const fromString: (value: string) => PlainTime;
|
28
|
-
export declare const fromDuration: (duration:
|
29
|
-
export declare const fromInstant: (instant:
|
30
|
-
export declare
|
31
|
-
export declare
|
28
|
+
export declare const fromDuration: (duration: DurationLike) => PlainTime;
|
29
|
+
export declare const fromInstant: (instant: InstantLike, zone: TimeZoneId) => PlainTime;
|
30
|
+
export declare function toLiteral(likeValue: PlainTimeLike): PlainTimeLiteral;
|
31
|
+
export declare function toLiteral(likeValue: PlainTimeLike | null): PlainTimeLiteral | null;
|
32
|
+
export declare function toLiteral(likeValue: PlainTimeLike | undefined): PlainTimeLiteral | undefined;
|
33
|
+
export declare function toLiteral(likeValue: PlainTimeLike | null | undefined): PlainTimeLiteral | null | undefined;
|
34
|
+
export declare const SchemaLiteral: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<PlainTimeLiteral | null | undefined, string>>;
|
32
35
|
export declare const SchemaInstance: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<Temporal.PlainTime, string>>;
|
33
36
|
export declare const isPlainTime: (value: unknown) => value is PlainTime;
|
34
37
|
export declare const now: (clock?: {
|
@@ -36,14 +39,14 @@ export declare const now: (clock?: {
|
|
36
39
|
instant(): import("@bessemer/cornerstone/temporal/instant").Instant;
|
37
40
|
withZone(zone: TimeZoneId): import("@bessemer/cornerstone/temporal/clock").Clock;
|
38
41
|
}) => PlainTime;
|
39
|
-
export declare const merge: (element:
|
40
|
-
export declare const add: (element:
|
41
|
-
export declare const subtract: (element:
|
42
|
-
export declare const until: (element:
|
43
|
-
export declare const round: (element:
|
44
|
-
export declare const isEqual: (element:
|
45
|
-
export declare const isBefore: (element:
|
46
|
-
export declare const isAfter: (element:
|
42
|
+
export declare const merge: (element: PlainTimeLike, builder: PlainTimeBuilder) => PlainTime;
|
43
|
+
export declare const add: (element: PlainTimeLike, duration: DurationLike) => PlainTime;
|
44
|
+
export declare const subtract: (element: PlainTimeLike, duration: DurationLike) => PlainTime;
|
45
|
+
export declare const until: (element: PlainTimeLike, other: PlainTimeLike) => Duration;
|
46
|
+
export declare const round: (element: PlainTimeLike, unit: TimeUnit) => PlainTime;
|
47
|
+
export declare const isEqual: (element: PlainTimeLike, other: PlainTimeLike) => boolean;
|
48
|
+
export declare const isBefore: (element: PlainTimeLike, other: PlainTimeLike) => boolean;
|
49
|
+
export declare const isAfter: (element: PlainTimeLike, other: PlainTimeLike) => boolean;
|
47
50
|
export declare const Midnight: Temporal.PlainTime;
|
48
51
|
export declare const Noon: Temporal.PlainTime;
|
49
52
|
//# sourceMappingURL=plain-time.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"plain-time.d.ts","sourceRoot":"","sources":["../../src/temporal/plain-time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D,OAAO,EAAsB,MAAM,EAAW,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAGhG,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,QAAQ,EAAE,
|
1
|
+
{"version":3,"file":"plain-time.d.ts","sourceRoot":"","sources":["../../src/temporal/plain-time.ts"],"names":[],"mappings":"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"}
|
@@ -11,6 +11,7 @@ import { Default as DefaultClock } from "@bessemer/cornerstone/temporal/clock";
|
|
11
11
|
import { from as _fromDuration } from "@bessemer/cornerstone/temporal/duration";
|
12
12
|
import { from as _fromInstant } from "@bessemer/cornerstone/temporal/instant";
|
13
13
|
import { isString } from "@bessemer/cornerstone/string";
|
14
|
+
import { isNil } from "@bessemer/cornerstone/object";
|
14
15
|
var Namespace = namespace("plain-time");
|
15
16
|
var from = (value) => {
|
16
17
|
if (value instanceof Temporal.PlainTime) {
|
@@ -42,12 +43,16 @@ var fromDuration = (duration) => {
|
|
42
43
|
var fromInstant = (instant, zone) => {
|
43
44
|
return _fromInstant(instant).toZonedDateTimeISO(zone).toPlainTime();
|
44
45
|
};
|
45
|
-
|
46
|
+
function toLiteral(likeValue) {
|
47
|
+
if (isNil(likeValue)) {
|
48
|
+
return likeValue;
|
49
|
+
}
|
50
|
+
const value = from(likeValue);
|
46
51
|
if (value.second === 0 && value.millisecond === 0 && value.microsecond === 0 && value.nanosecond === 0) {
|
47
52
|
return `${value.hour.toString().padStart(2, "0")}:${value.minute.toString().padStart(2, "0")}`;
|
48
53
|
}
|
49
54
|
return value.toString();
|
50
|
-
}
|
55
|
+
}
|
51
56
|
var SchemaLiteral = structuredTransform(Zod.string(), (it) => mapResult(parseString(it), toLiteral));
|
52
57
|
var SchemaInstance = structuredTransform(Zod.string(), parseString);
|
53
58
|
var isPlainTime = (value) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/temporal/plain-time.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill'\nimport { namespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { failure, mapResult, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { isError } from '@bessemer/cornerstone/error/error'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport Zod from 'zod'\nimport { Default as DefaultClock } from '@bessemer/cornerstone/temporal/clock'\nimport { Duration,
|
1
|
+
{"version":3,"sources":["../../src/temporal/plain-time.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill'\nimport { namespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { failure, mapResult, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { isError } from '@bessemer/cornerstone/error/error'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport Zod from 'zod'\nimport { Default as DefaultClock } from '@bessemer/cornerstone/temporal/clock'\nimport { Duration, DurationLike, from as _fromDuration } from '@bessemer/cornerstone/temporal/duration'\nimport { from as _fromInstant, InstantLike } from '@bessemer/cornerstone/temporal/instant'\nimport { TimeZoneId } from '@bessemer/cornerstone/temporal/time-zone-id'\nimport { TimeUnit } from '@bessemer/cornerstone/temporal/chrono'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { isNil } from '@bessemer/cornerstone/object'\n\nexport type PlainTime = Temporal.PlainTime\nexport const Namespace = namespace('plain-time')\nexport type PlainTimeLiteral = NominalType<string, typeof Namespace>\nexport type PlainTimeBuilder = {\n hour?: number\n minute?: number\n second?: number\n millisecond?: number\n microsecond?: number\n nanosecond?: number\n}\nexport type PlainTimeLike = PlainTime | PlainTimeLiteral | PlainTimeBuilder\n\nexport const from = (value: PlainTimeLike): PlainTime => {\n if (value instanceof Temporal.PlainTime) {\n return value\n }\n if (isString(value)) {\n return fromString(value)\n }\n\n return Temporal.PlainTime.from(value)\n}\n\nexport const CompareBy: Comparator<PlainTime> = (first: PlainTime, second: PlainTime): number => Temporal.PlainTime.compare(first, second)\nexport const EqualBy = fromComparator(CompareBy)\n\nexport const parseString = (value: string): Result<PlainTime, ErrorEvent> => {\n try {\n return success(Temporal.PlainTime.from(value))\n } catch (e) {\n if (!isError(e)) {\n throw e\n }\n\n return failure(invalidValue(value, { namespace: Namespace, message: e.message }))\n }\n}\n\nexport const fromString = (value: string): PlainTime => {\n return unpackResult(parseString(value))\n}\n\nexport const fromDuration = (duration: DurationLike): PlainTime => {\n return Midnight.add(_fromDuration(duration))\n}\n\nexport const fromInstant = (instant: InstantLike, zone: TimeZoneId): PlainTime => {\n return _fromInstant(instant).toZonedDateTimeISO(zone).toPlainTime()\n}\n\nexport function toLiteral(likeValue: PlainTimeLike): PlainTimeLiteral\nexport function toLiteral(likeValue: PlainTimeLike | null): PlainTimeLiteral | null\nexport function toLiteral(likeValue: PlainTimeLike | undefined): PlainTimeLiteral | undefined\nexport function toLiteral(likeValue: PlainTimeLike | null | undefined): PlainTimeLiteral | null | undefined\nexport function toLiteral(likeValue: PlainTimeLike | null | undefined): PlainTimeLiteral | null | undefined {\n if (isNil(likeValue)) {\n return likeValue\n }\n\n const value = from(likeValue)\n\n if (value.second === 0 && value.millisecond === 0 && value.microsecond === 0 && value.nanosecond === 0) {\n return `${value.hour.toString().padStart(2, '0')}:${value.minute.toString().padStart(2, '0')}` as PlainTimeLiteral\n }\n\n return value.toString() as PlainTimeLiteral\n}\n\nexport const SchemaLiteral = structuredTransform(Zod.string(), (it: string) => mapResult(parseString(it), toLiteral))\nexport const SchemaInstance = structuredTransform(Zod.string(), parseString)\n\nexport const isPlainTime = (value: unknown): value is PlainTime => {\n return value instanceof Temporal.PlainTime\n}\n\nexport const now = (clock = DefaultClock): PlainTime => {\n return fromInstant(clock.instant(), clock.zone)\n}\n\nexport const merge = (element: PlainTimeLike, builder: PlainTimeBuilder): PlainTime => {\n return from(element).with(builder)\n}\n\nexport const add = (element: PlainTimeLike, duration: DurationLike): PlainTime => {\n return from(element).add(_fromDuration(duration))\n}\n\nexport const subtract = (element: PlainTimeLike, duration: DurationLike): PlainTime => {\n return from(element).subtract(_fromDuration(duration))\n}\n\nexport const until = (element: PlainTimeLike, other: PlainTimeLike): Duration => {\n return from(element).until(from(other))\n}\n\nexport const round = (element: PlainTimeLike, unit: TimeUnit): PlainTime => {\n return from(element).round({ smallestUnit: unit })\n}\n\nexport const isEqual = (element: PlainTimeLike, other: PlainTimeLike): boolean => {\n return EqualBy(from(element), from(other))\n}\n\nexport const isBefore = (element: PlainTimeLike, other: PlainTimeLike): boolean => {\n return CompareBy(from(element), from(other)) < 0\n}\n\nexport const isAfter = (element: PlainTimeLike, other: PlainTimeLike): boolean => {\n return CompareBy(from(element), from(other)) > 0\n}\n\nexport const Midnight = from({ nanosecond: 0 })\nexport const Noon = from({ hour: 12 })\n"],"mappings":"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","names":[]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { NominalType } from '@bessemer/cornerstone/types';
|
2
|
-
import { Duration,
|
2
|
+
import { Duration, DurationLike } from '@bessemer/cornerstone/temporal/duration';
|
3
3
|
import { Result } from '@bessemer/cornerstone/result';
|
4
4
|
import Zod from 'zod';
|
5
5
|
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
@@ -10,7 +10,7 @@ export type TimeZoneOffset = NominalType<number, typeof Namespace>;
|
|
10
10
|
export declare const parseMinutes: (value: number) => Result<TimeZoneOffset, ErrorEvent>;
|
11
11
|
export declare const parseDuration: (value: Duration) => Result<TimeZoneOffset, ErrorEvent>;
|
12
12
|
export declare const fromMinutes: (value: number) => TimeZoneOffset;
|
13
|
-
export declare const fromDuration: (value:
|
13
|
+
export declare const fromDuration: (value: DurationLike) => TimeZoneOffset;
|
14
14
|
export declare const fromTimeZone: (timeZone: TimeZoneId, instant: Instant) => TimeZoneOffset;
|
15
15
|
export declare const parseString: (value: string) => Result<TimeZoneOffset, ErrorEvent>;
|
16
16
|
export declare const fromString: (value: string) => TimeZoneOffset;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"time-zone-offset.d.ts","sourceRoot":"","sources":["../../src/temporal/time-zone-offset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EACL,QAAQ,EACR,
|
1
|
+
{"version":3,"file":"time-zone-offset.d.ts","sourceRoot":"","sources":["../../src/temporal/time-zone-offset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EACL,QAAQ,EACR,YAAY,EAQb,MAAM,yCAAyC,CAAA;AAEhD,OAAO,EAAW,MAAM,EAAW,MAAM,8BAA8B,CAAA;AACvE,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAGhG,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAA;AAExE,eAAO,MAAM,SAAS,oFAAgC,CAAA;AACtD,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAIlE,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,cAAc,EAAE,UAAU,CAU7E,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,QAAQ,KAAG,MAAM,CAAC,cAAc,EAAE,UAAU,CAEhF,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,cAE3C,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,YAAY,KAAG,cAElD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,UAAU,UAAU,EAAE,SAAS,OAAO,KAAG,cAsBrE,CAAA;AAGD,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,cAAc,EAAE,UAAU,CAyE5E,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,cAE1C,CAAA;AAED,eAAO,MAAM,MAAM,qKAA+G,CAAA;AAElI,eAAO,MAAM,UAAU,GAAI,QAAQ,cAAc,KAAG,QAEnD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,QAAQ,cAAc,KAAG,MAEvD,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,QAAQ,cAAc,KAAG,MASjD,CAAA;AAED,eAAO,MAAM,GAAG,EAAQ,cAAc,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/temporal/time-zone-offset.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport {\n Duration,\n DurationInput,\n from as _fromDuration,\n fromHours,\n fromMilliseconds,\n fromMinutes as durationFromMinutes,\n isGreater,\n isLess,\n toMinutes,\n} from '@bessemer/cornerstone/temporal/duration'\nimport { fromDuration as plainTimeFromDuration, toLiteral as plainTimeToLiteral } from '@bessemer/cornerstone/temporal/plain-time'\nimport { failure, Result, success } from '@bessemer/cornerstone/result'\nimport Zod from 'zod'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { namespace } from '@bessemer/cornerstone/resource-key'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport { Instant } from '@bessemer/cornerstone/temporal/instant'\nimport { TimeZoneId } from '@bessemer/cornerstone/temporal/time-zone-id'\n\nexport const Namespace = namespace('time-zone-offset')\nexport type TimeZoneOffset = NominalType<number, typeof Namespace>\n\nconst EighteenHours = fromHours(18)\n\nexport const parseMinutes = (value: number): Result<TimeZoneOffset, ErrorEvent> => {\n if (!Number.isInteger(value)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset must be a round number of minutes.` }))\n }\n\n if (value < toMinutes(EighteenHours.negated()) || value > toMinutes(EighteenHours)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset must be between -18:00 and +18:00 inclusive.` }))\n }\n\n return success(value as TimeZoneOffset)\n}\n\nexport const parseDuration = (value: Duration): Result<TimeZoneOffset, ErrorEvent> => {\n return parseMinutes(toMinutes(value))\n}\n\nexport const fromMinutes = (value: number): TimeZoneOffset => {\n return unpackResult(parseMinutes(value))\n}\n\nexport const fromDuration = (value: DurationInput): TimeZoneOffset => {\n return unpackResult(parseDuration(_fromDuration(value)))\n}\n\nexport const fromTimeZone = (timeZone: TimeZoneId, instant: Instant): TimeZoneOffset => {\n const instantWithoutMs = new Date(Math.floor(instant.epochMilliseconds / 1000) * 1000)\n\n // Note: We use 'en-CA' locale because it produces ISO 8601 format (YYYY-MM-DD, HH:MM:SS)\n // which is predictable and easily parseable. The locale only affects the output format,\n // not the timezone conversion - that's handled by the timeZone parameter.\n const formatter = new Intl.DateTimeFormat('en-CA', {\n timeZone: timeZone,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n })\n\n const formatted = formatter.format(instantWithoutMs)\n const localTime = new Date(formatted + 'Z').getTime()\n\n const offsetMs = localTime - instantWithoutMs.getTime()\n return fromDuration({ milliseconds: offsetMs })\n}\n\n// JOHN maybe this parsing could be consolidated with LocalTime?\nexport const parseString = (value: string): Result<TimeZoneOffset, ErrorEvent> => {\n if (value === 'Z') {\n return success(0 as TimeZoneOffset)\n }\n\n if (!value.startsWith('+') && !value.startsWith('-')) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset must start with +, -, or be Z.` }))\n }\n\n const sign = value[0] === '+' ? 1 : -1\n const offsetStr = value.slice(1)\n\n let hours = 0\n let minutes = 0\n\n // Parse different formats\n if (offsetStr.length === 1) {\n // +h format\n hours = parseInt(offsetStr, 10)\n if (isNaN(hours)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid hour value in time zone offset.` }))\n }\n } else if (offsetStr.length === 2) {\n // +hh format\n hours = parseInt(offsetStr, 10)\n if (isNaN(hours)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid hour value in time zone offset.` }))\n }\n } else if (offsetStr.includes(':')) {\n // Formats with colons: +hh:mm or +hh:mm:ss\n const parts = offsetStr.split(':')\n if (parts.length < 2 || parts.length > 3) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid time zone offset format.` }))\n }\n\n hours = parseInt(parts[0]!, 10)\n minutes = parseInt(parts[1]!, 10)\n\n if (parts.length === 3) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid time values in time zone offset.` }))\n }\n\n if (isNaN(hours) || isNaN(minutes)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid time values in time zone offset.` }))\n }\n } else if (offsetStr.length === 4) {\n // +hhmm format\n hours = parseInt(offsetStr.slice(0, 2), 10)\n minutes = parseInt(offsetStr.slice(2, 4), 10)\n\n if (isNaN(hours) || isNaN(minutes)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid time values in time zone offset.` }))\n }\n } else {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid time zone offset format.` }))\n }\n\n if (minutes >= 60) {\n return failure(\n invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid minutes in time zone offset: must be less than 60.` })\n )\n }\n\n let duration = _fromDuration({ hours, minutes })\n if (sign === -1) {\n duration = duration.negated()\n }\n\n if (isLess(duration, EighteenHours.negated()) || isGreater(duration, EighteenHours)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset must be between -18:00 and +18:00 inclusive.` }))\n }\n\n return success(toMinutes(duration) as TimeZoneOffset)\n}\n\nexport const fromString = (value: string): TimeZoneOffset => {\n return unpackResult(parseString(value))\n}\n\nexport const Schema = Zod.union([structuredTransform(Zod.number(), parseMinutes), structuredTransform(Zod.string(), parseString)])\n\nexport const toDuration = (offset: TimeZoneOffset): Duration => {\n return fromMilliseconds(offset)\n}\n\nexport const toMilliseconds = (offset: TimeZoneOffset): number => {\n return offset\n}\n\nexport const toString = (offset: TimeZoneOffset): string => {\n if (offset === 0) {\n return 'Z'\n }\n\n const sign = offset > 0 ? '+' : '-'\n\n const time = plainTimeFromDuration(durationFromMinutes(Math.abs(offset)))\n return `${sign}${plainTimeToLiteral(time)}`\n}\n\nexport const Utc = 0 as TimeZoneOffset\n"],"mappings":";AACA;AAAA,EAGE,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,gBAAgB,uBAAuB,aAAa,0BAA0B;AACvF,SAAS,SAAiB,eAAe;AACzC,OAAO,SAAS;AAChB,SAAqB,cAAc,oBAAoB;AACvD,SAAS,iBAAiB;AAC1B,SAAS,2BAA2B;AAI7B,IAAM,YAAY,UAAU,kBAAkB;AAGrD,IAAM,gBAAgB,UAAU,EAAE;AAE3B,IAAM,eAAe,CAAC,UAAsD;AACjF,MAAI,CAAC,OAAO,UAAU,KAAK,GAAG;AAC5B,WAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,oDAAoD,CAAC,CAAC;AAAA,EAC5H;AAEA,MAAI,QAAQ,UAAU,cAAc,QAAQ,CAAC,KAAK,QAAQ,UAAU,aAAa,GAAG;AAClF,WAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,8DAA8D,CAAC,CAAC;AAAA,EACtI;AAEA,SAAO,QAAQ,KAAuB;AACxC;AAEO,IAAM,gBAAgB,CAAC,UAAwD;AACpF,SAAO,aAAa,UAAU,KAAK,CAAC;AACtC;AAEO,IAAM,cAAc,CAAC,UAAkC;AAC5D,SAAO,aAAa,aAAa,KAAK,CAAC;AACzC;AAEO,IAAM,eAAe,CAAC,UAAyC;AACpE,SAAO,aAAa,cAAc,cAAc,KAAK,CAAC,CAAC;AACzD;AAEO,IAAM,eAAe,CAAC,UAAsB,YAAqC;AACtF,QAAM,mBAAmB,IAAI,KAAK,KAAK,MAAM,QAAQ,oBAAoB,GAAI,IAAI,GAAI;AAKrF,QAAM,YAAY,IAAI,KAAK,eAAe,SAAS;AAAA,IACjD;AAAA,IACA,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,CAAC;AAED,QAAM,YAAY,UAAU,OAAO,gBAAgB;AACnD,QAAM,aAAY,oBAAI,KAAK,YAAY,GAAG,GAAE,QAAQ;AAEpD,QAAM,WAAW,YAAY,iBAAiB,QAAQ;AACtD,SAAO,aAAa,EAAE,cAAc,SAAS,CAAC;AAChD;AAGO,IAAM,cAAc,CAAC,UAAsD;AAChF,MAAI,UAAU,KAAK;AACjB,WAAO,QAAQ,CAAmB;AAAA,EACpC;AAEA,MAAI,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,WAAW,GAAG,GAAG;AACpD,WAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,gDAAgD,CAAC,CAAC;AAAA,EACxH;AAEA,QAAM,OAAO,MAAM,CAAC,MAAM,MAAM,IAAI;AACpC,QAAM,YAAY,MAAM,MAAM,CAAC;AAE/B,MAAI,QAAQ;AACZ,MAAI,UAAU;AAGd,MAAI,UAAU,WAAW,GAAG;AAE1B,YAAQ,SAAS,WAAW,EAAE;AAC9B,QAAI,MAAM,KAAK,GAAG;AAChB,aAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,2DAA2D,CAAC,CAAC;AAAA,IACnI;AAAA,EACF,WAAW,UAAU,WAAW,GAAG;AAEjC,YAAQ,SAAS,WAAW,EAAE;AAC9B,QAAI,MAAM,KAAK,GAAG;AAChB,aAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,2DAA2D,CAAC,CAAC;AAAA,IACnI;AAAA,EACF,WAAW,UAAU,SAAS,GAAG,GAAG;AAElC,UAAM,QAAQ,UAAU,MAAM,GAAG;AACjC,QAAI,MAAM,SAAS,KAAK,MAAM,SAAS,GAAG;AACxC,aAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,oDAAoD,CAAC,CAAC;AAAA,IAC5H;AAEA,YAAQ,SAAS,MAAM,CAAC,GAAI,EAAE;AAC9B,cAAU,SAAS,MAAM,CAAC,GAAI,EAAE;AAEhC,QAAI,MAAM,WAAW,GAAG;AACtB,aAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,4DAA4D,CAAC,CAAC;AAAA,IACpI;AAEA,QAAI,MAAM,KAAK,KAAK,MAAM,OAAO,GAAG;AAClC,aAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,4DAA4D,CAAC,CAAC;AAAA,IACpI;AAAA,EACF,WAAW,UAAU,WAAW,GAAG;AAEjC,YAAQ,SAAS,UAAU,MAAM,GAAG,CAAC,GAAG,EAAE;AAC1C,cAAU,SAAS,UAAU,MAAM,GAAG,CAAC,GAAG,EAAE;AAE5C,QAAI,MAAM,KAAK,KAAK,MAAM,OAAO,GAAG;AAClC,aAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,4DAA4D,CAAC,CAAC;AAAA,IACpI;AAAA,EACF,OAAO;AACL,WAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,oDAAoD,CAAC,CAAC;AAAA,EAC5H;AAEA,MAAI,WAAW,IAAI;AACjB,WAAO;AAAA,MACL,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,8EAA8E,CAAC;AAAA,IACtI;AAAA,EACF;AAEA,MAAI,WAAW,cAAc,EAAE,OAAO,QAAQ,CAAC;AAC/C,MAAI,SAAS,IAAI;AACf,eAAW,SAAS,QAAQ;AAAA,EAC9B;AAEA,MAAI,OAAO,UAAU,cAAc,QAAQ,CAAC,KAAK,UAAU,UAAU,aAAa,GAAG;AACnF,WAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,8DAA8D,CAAC,CAAC;AAAA,EACtI;AAEA,SAAO,QAAQ,UAAU,QAAQ,CAAmB;AACtD;AAEO,IAAM,aAAa,CAAC,UAAkC;AAC3D,SAAO,aAAa,YAAY,KAAK,CAAC;AACxC;AAEO,IAAM,SAAS,IAAI,MAAM,CAAC,oBAAoB,IAAI,OAAO,GAAG,YAAY,GAAG,oBAAoB,IAAI,OAAO,GAAG,WAAW,CAAC,CAAC;AAE1H,IAAM,aAAa,CAAC,WAAqC;AAC9D,SAAO,iBAAiB,MAAM;AAChC;AAEO,IAAM,iBAAiB,CAAC,WAAmC;AAChE,SAAO;AACT;AAEO,IAAM,WAAW,CAAC,WAAmC;AAC1D,MAAI,WAAW,GAAG;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,SAAS,IAAI,MAAM;AAEhC,QAAM,OAAO,sBAAsB,oBAAoB,KAAK,IAAI,MAAM,CAAC,CAAC;AACxE,SAAO,GAAG,IAAI,GAAG,mBAAmB,IAAI,CAAC;AAC3C;AAEO,IAAM,MAAM;","names":[]}
|
1
|
+
{"version":3,"sources":["../../src/temporal/time-zone-offset.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport {\n Duration,\n DurationLike,\n from as _fromDuration,\n fromHours,\n fromMilliseconds,\n fromMinutes as durationFromMinutes,\n isGreater,\n isLess,\n toMinutes,\n} from '@bessemer/cornerstone/temporal/duration'\nimport { fromDuration as plainTimeFromDuration, toLiteral as plainTimeToLiteral } from '@bessemer/cornerstone/temporal/plain-time'\nimport { failure, Result, success } from '@bessemer/cornerstone/result'\nimport Zod from 'zod'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { namespace } from '@bessemer/cornerstone/resource-key'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport { Instant } from '@bessemer/cornerstone/temporal/instant'\nimport { TimeZoneId } from '@bessemer/cornerstone/temporal/time-zone-id'\n\nexport const Namespace = namespace('time-zone-offset')\nexport type TimeZoneOffset = NominalType<number, typeof Namespace>\n\nconst EighteenHours = fromHours(18)\n\nexport const parseMinutes = (value: number): Result<TimeZoneOffset, ErrorEvent> => {\n if (!Number.isInteger(value)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset must be a round number of minutes.` }))\n }\n\n if (value < toMinutes(EighteenHours.negated()) || value > toMinutes(EighteenHours)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset must be between -18:00 and +18:00 inclusive.` }))\n }\n\n return success(value as TimeZoneOffset)\n}\n\nexport const parseDuration = (value: Duration): Result<TimeZoneOffset, ErrorEvent> => {\n return parseMinutes(toMinutes(value))\n}\n\nexport const fromMinutes = (value: number): TimeZoneOffset => {\n return unpackResult(parseMinutes(value))\n}\n\nexport const fromDuration = (value: DurationLike): TimeZoneOffset => {\n return unpackResult(parseDuration(_fromDuration(value)))\n}\n\nexport const fromTimeZone = (timeZone: TimeZoneId, instant: Instant): TimeZoneOffset => {\n const instantWithoutMs = new Date(Math.floor(instant.epochMilliseconds / 1000) * 1000)\n\n // Note: We use 'en-CA' locale because it produces ISO 8601 format (YYYY-MM-DD, HH:MM:SS)\n // which is predictable and easily parseable. The locale only affects the output format,\n // not the timezone conversion - that's handled by the timeZone parameter.\n const formatter = new Intl.DateTimeFormat('en-CA', {\n timeZone: timeZone,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n })\n\n const formatted = formatter.format(instantWithoutMs)\n const localTime = new Date(formatted + 'Z').getTime()\n\n const offsetMs = localTime - instantWithoutMs.getTime()\n return fromDuration({ milliseconds: offsetMs })\n}\n\n// JOHN maybe this parsing could be consolidated with LocalTime?\nexport const parseString = (value: string): Result<TimeZoneOffset, ErrorEvent> => {\n if (value === 'Z') {\n return success(0 as TimeZoneOffset)\n }\n\n if (!value.startsWith('+') && !value.startsWith('-')) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset must start with +, -, or be Z.` }))\n }\n\n const sign = value[0] === '+' ? 1 : -1\n const offsetStr = value.slice(1)\n\n let hours = 0\n let minutes = 0\n\n // Parse different formats\n if (offsetStr.length === 1) {\n // +h format\n hours = parseInt(offsetStr, 10)\n if (isNaN(hours)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid hour value in time zone offset.` }))\n }\n } else if (offsetStr.length === 2) {\n // +hh format\n hours = parseInt(offsetStr, 10)\n if (isNaN(hours)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid hour value in time zone offset.` }))\n }\n } else if (offsetStr.includes(':')) {\n // Formats with colons: +hh:mm or +hh:mm:ss\n const parts = offsetStr.split(':')\n if (parts.length < 2 || parts.length > 3) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid time zone offset format.` }))\n }\n\n hours = parseInt(parts[0]!, 10)\n minutes = parseInt(parts[1]!, 10)\n\n if (parts.length === 3) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid time values in time zone offset.` }))\n }\n\n if (isNaN(hours) || isNaN(minutes)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid time values in time zone offset.` }))\n }\n } else if (offsetStr.length === 4) {\n // +hhmm format\n hours = parseInt(offsetStr.slice(0, 2), 10)\n minutes = parseInt(offsetStr.slice(2, 4), 10)\n\n if (isNaN(hours) || isNaN(minutes)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid time values in time zone offset.` }))\n }\n } else {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid time zone offset format.` }))\n }\n\n if (minutes >= 60) {\n return failure(\n invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset - Invalid minutes in time zone offset: must be less than 60.` })\n )\n }\n\n let duration = _fromDuration({ hours, minutes })\n if (sign === -1) {\n duration = duration.negated()\n }\n\n if (isLess(duration, EighteenHours.negated()) || isGreater(duration, EighteenHours)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `TimeZoneOffset must be between -18:00 and +18:00 inclusive.` }))\n }\n\n return success(toMinutes(duration) as TimeZoneOffset)\n}\n\nexport const fromString = (value: string): TimeZoneOffset => {\n return unpackResult(parseString(value))\n}\n\nexport const Schema = Zod.union([structuredTransform(Zod.number(), parseMinutes), structuredTransform(Zod.string(), parseString)])\n\nexport const toDuration = (offset: TimeZoneOffset): Duration => {\n return fromMilliseconds(offset)\n}\n\nexport const toMilliseconds = (offset: TimeZoneOffset): number => {\n return offset\n}\n\nexport const toString = (offset: TimeZoneOffset): string => {\n if (offset === 0) {\n return 'Z'\n }\n\n const sign = offset > 0 ? '+' : '-'\n\n const time = plainTimeFromDuration(durationFromMinutes(Math.abs(offset)))\n return `${sign}${plainTimeToLiteral(time)}`\n}\n\nexport const Utc = 0 as TimeZoneOffset\n"],"mappings":"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","names":[]}
|