@bessemer/cornerstone 0.5.98 → 0.5.99
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/array.d.ts +62 -1
- package/dist/array.d.ts.map +1 -1
- package/dist/array.js +24 -11
- package/dist/array.js.map +1 -1
- package/dist/aspect-ratio.d.ts +1 -1
- package/dist/aspect-ratio.d.ts.map +1 -1
- package/dist/aspect-ratio.js +4 -4
- package/dist/aspect-ratio.js.map +1 -1
- package/dist/async-value.d.ts +7 -1
- package/dist/async-value.d.ts.map +1 -1
- package/dist/async-value.js +26 -1
- package/dist/async-value.js.map +1 -1
- package/dist/cache.js +1 -1
- package/dist/cache.js.map +1 -1
- package/dist/equalitor.d.ts +1 -0
- package/dist/equalitor.d.ts.map +1 -1
- package/dist/equalitor.js +3 -0
- package/dist/equalitor.js.map +1 -1
- package/dist/error/error-cause.d.ts +35 -0
- package/dist/error/error-cause.d.ts.map +1 -0
- package/dist/error/error-cause.js +97 -0
- package/dist/error/error-cause.js.map +1 -0
- package/dist/error/error-code.d.ts +17 -0
- package/dist/error/error-code.d.ts.map +1 -0
- package/dist/error/error-code.js +32 -0
- package/dist/error/error-code.js.map +1 -0
- package/dist/error/error-event.d.ts +29 -48
- package/dist/error/error-event.d.ts.map +1 -1
- package/dist/error/error-event.js +62 -151
- package/dist/error/error-event.js.map +1 -1
- package/dist/error/error-type.d.ts +1 -0
- package/dist/error/error-type.d.ts.map +1 -1
- package/dist/error/error-type.js +4 -2
- package/dist/error/error-type.js.map +1 -1
- package/dist/function.d.ts +1 -1
- package/dist/function.d.ts.map +1 -1
- package/dist/function.js +3 -2
- package/dist/function.js.map +1 -1
- package/dist/glob.d.ts +1 -1
- package/dist/glob.d.ts.map +1 -1
- package/dist/glob.js +4 -4
- package/dist/glob.js.map +1 -1
- package/dist/hex-code.d.ts +1 -1
- package/dist/hex-code.d.ts.map +1 -1
- package/dist/hex-code.js +4 -4
- package/dist/hex-code.js.map +1 -1
- package/dist/index.d.ts +10 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/intl/country-code.d.ts +1 -1
- package/dist/intl/country-code.d.ts.map +1 -1
- package/dist/intl/country-code.js +4 -4
- package/dist/intl/country-code.js.map +1 -1
- package/dist/intl/country-subdivision-code.d.ts +1 -1
- package/dist/intl/country-subdivision-code.d.ts.map +1 -1
- package/dist/intl/country-subdivision-code.js +4 -4
- package/dist/intl/country-subdivision-code.js.map +1 -1
- package/dist/intl/currency-code.d.ts +1 -1
- package/dist/intl/currency-code.d.ts.map +1 -1
- package/dist/intl/currency-code.js +4 -4
- package/dist/intl/currency-code.js.map +1 -1
- package/dist/intl/language-code.d.ts +1 -1
- package/dist/intl/language-code.d.ts.map +1 -1
- package/dist/intl/language-code.js +4 -4
- package/dist/intl/language-code.js.map +1 -1
- package/dist/intl/locale.d.ts +1 -1
- package/dist/intl/locale.d.ts.map +1 -1
- package/dist/intl/locale.js +6 -6
- package/dist/intl/locale.js.map +1 -1
- package/dist/mime-type.d.ts +1 -1
- package/dist/mime-type.d.ts.map +1 -1
- package/dist/mime-type.js +4 -4
- package/dist/mime-type.js.map +1 -1
- package/dist/net/domain-name.d.ts +10 -0
- package/dist/net/domain-name.d.ts.map +1 -0
- package/dist/net/domain-name.js +30 -0
- package/dist/net/domain-name.js.map +1 -0
- package/dist/net/ipv4-address.d.ts +10 -0
- package/dist/net/ipv4-address.d.ts.map +1 -0
- package/dist/net/ipv4-address.js +30 -0
- package/dist/net/ipv4-address.js.map +1 -0
- package/dist/net/ipv6-address.d.ts +10 -0
- package/dist/net/ipv6-address.d.ts.map +1 -0
- package/dist/net/ipv6-address.js +30 -0
- package/dist/net/ipv6-address.js.map +1 -0
- package/dist/net/uri-host-name.d.ts +12 -0
- package/dist/net/uri-host-name.d.ts.map +1 -0
- package/dist/net/uri-host-name.js +44 -0
- package/dist/net/uri-host-name.js.map +1 -0
- package/dist/net/uri.d.ts +249 -0
- package/dist/net/uri.d.ts.map +1 -0
- package/dist/net/uri.js +444 -0
- package/dist/net/uri.js.map +1 -0
- package/dist/net/url.d.ts +58 -0
- package/dist/net/url.d.ts.map +1 -0
- package/dist/net/url.js +211 -0
- package/dist/net/url.js.map +1 -0
- package/dist/object/object-path.d.ts +1 -1
- package/dist/object/object-path.d.ts.map +1 -1
- package/dist/object/object-path.js +4 -4
- package/dist/object/object-path.js.map +1 -1
- package/dist/object/type-path.d.ts +1 -1
- package/dist/object/type-path.d.ts.map +1 -1
- package/dist/object/type-path.js +3 -3
- package/dist/object/type-path.js.map +1 -1
- package/dist/object.d.ts +1 -1
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +8 -6
- package/dist/object.js.map +1 -1
- package/dist/property.d.ts +2 -3
- package/dist/property.d.ts.map +1 -1
- package/dist/property.js.map +1 -1
- package/dist/resource-key.d.ts +7 -5
- package/dist/resource-key.d.ts.map +1 -1
- package/dist/resource-key.js +27 -15
- package/dist/resource-key.js.map +1 -1
- package/dist/result.d.ts.map +1 -1
- package/dist/result.js +3 -3
- package/dist/result.js.map +1 -1
- package/dist/string.d.ts +10 -21
- package/dist/string.d.ts.map +1 -1
- package/dist/string.js +54 -25
- package/dist/string.js.map +1 -1
- package/dist/tag.d.ts +2 -2
- package/dist/tag.d.ts.map +1 -1
- package/dist/tag.js +11 -12
- package/dist/tag.js.map +1 -1
- package/dist/temporal/duration.d.ts +4 -5
- package/dist/temporal/duration.d.ts.map +1 -1
- package/dist/temporal/duration.js +3 -7
- package/dist/temporal/duration.js.map +1 -1
- package/dist/temporal/instant.d.ts +4 -5
- package/dist/temporal/instant.d.ts.map +1 -1
- package/dist/temporal/instant.js +3 -7
- package/dist/temporal/instant.js.map +1 -1
- package/dist/temporal/plain-date-time.d.ts +4 -5
- package/dist/temporal/plain-date-time.d.ts.map +1 -1
- package/dist/temporal/plain-date-time.js +3 -7
- package/dist/temporal/plain-date-time.js.map +1 -1
- package/dist/temporal/plain-date.d.ts +8 -9
- package/dist/temporal/plain-date.d.ts.map +1 -1
- package/dist/temporal/plain-date.js +3 -7
- package/dist/temporal/plain-date.js.map +1 -1
- package/dist/temporal/plain-time.d.ts +6 -7
- package/dist/temporal/plain-time.d.ts.map +1 -1
- package/dist/temporal/plain-time.js +4 -8
- package/dist/temporal/plain-time.js.map +1 -1
- package/dist/temporal/time-zone-id.d.ts +1 -1
- package/dist/temporal/time-zone-id.d.ts.map +1 -1
- package/dist/temporal/time-zone-id.js +4 -4
- package/dist/temporal/time-zone-id.js.map +1 -1
- package/dist/temporal/time-zone-offset.d.ts +1 -1
- package/dist/temporal/time-zone-offset.d.ts.map +1 -1
- package/dist/temporal/time-zone-offset.js +4 -4
- package/dist/temporal/time-zone-offset.js.map +1 -1
- package/dist/temporal/zoned-date-time.d.ts +51 -0
- package/dist/temporal/zoned-date-time.d.ts.map +1 -0
- package/dist/temporal/zoned-date-time.js +106 -0
- package/dist/temporal/zoned-date-time.js.map +1 -0
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/{ulid.d.ts → uuid/ulid.d.ts} +2 -2
- package/dist/uuid/ulid.d.ts.map +1 -0
- package/dist/uuid/ulid.js +29 -0
- package/dist/uuid/ulid.js.map +1 -0
- package/dist/uuid/uuid-v4.d.ts +11 -0
- package/dist/uuid/uuid-v4.d.ts.map +1 -0
- package/dist/{uuid.js → uuid/uuid-v4.js} +11 -11
- package/dist/uuid/uuid-v4.js.map +1 -0
- package/dist/uuid/uuid-v7.d.ts +18 -0
- package/dist/uuid/uuid-v7.d.ts.map +1 -0
- package/dist/uuid/uuid-v7.js +44 -0
- package/dist/uuid/uuid-v7.js.map +1 -0
- package/package.json +1 -1
- package/dist/ulid.d.ts.map +0 -1
- package/dist/ulid.js +0 -29
- package/dist/ulid.js.map +0 -1
- package/dist/uri.d.ts +0 -52
- package/dist/uri.d.ts.map +0 -1
- package/dist/uri.js +0 -222
- package/dist/uri.js.map +0 -1
- package/dist/url.d.ts +0 -26
- package/dist/url.d.ts.map +0 -1
- package/dist/url.js +0 -120
- package/dist/url.js.map +0 -1
- package/dist/uuid.d.ts +0 -11
- package/dist/uuid.d.ts.map +0 -1
- package/dist/uuid.js.map +0 -1
|
@@ -13,7 +13,7 @@ export type PlainTime = Temporal.PlainTime;
|
|
|
13
13
|
export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"plain-time">;
|
|
14
14
|
export type PlainTimeLiteral = NominalType<string, typeof Namespace>;
|
|
15
15
|
export type PlainTimeBuilder = {
|
|
16
|
-
hour
|
|
16
|
+
hour: number;
|
|
17
17
|
minute?: number;
|
|
18
18
|
second?: number;
|
|
19
19
|
millisecond?: number;
|
|
@@ -21,14 +21,13 @@ export type PlainTimeBuilder = {
|
|
|
21
21
|
nanosecond?: number;
|
|
22
22
|
};
|
|
23
23
|
export type PlainTimeLike = PlainTime | PlainTimeLiteral | PlainTimeBuilder;
|
|
24
|
-
export declare function from(value: PlainTimeLike): PlainTime;
|
|
25
|
-
export declare function from(value: PlainTimeLike | null): PlainTime | null;
|
|
26
|
-
export declare function from(value: PlainTimeLike | undefined): PlainTime | undefined;
|
|
27
|
-
export declare function from(value: PlainTimeLike | null | undefined): PlainTime | null | undefined;
|
|
24
|
+
export declare function from(value: PlainTimeLike | string): PlainTime;
|
|
25
|
+
export declare function from(value: PlainTimeLike | string | null): PlainTime | null;
|
|
26
|
+
export declare function from(value: PlainTimeLike | string | undefined): PlainTime | undefined;
|
|
27
|
+
export declare function from(value: PlainTimeLike | string | null | undefined): PlainTime | null | undefined;
|
|
28
28
|
export declare const CompareBy: Comparator<PlainTime>;
|
|
29
29
|
export declare const EqualBy: import("@bessemer/cornerstone/equalitor").Equalitor<Temporal.PlainTime>;
|
|
30
30
|
export declare const parseString: (value: string) => Result<PlainTime, ErrorEvent>;
|
|
31
|
-
export declare const fromString: (value: string) => PlainTime;
|
|
32
31
|
export declare const fromDuration: (duration: DurationLike) => PlainTime;
|
|
33
32
|
export declare const fromInstant: (instant: InstantLike, zone: TimeZoneId) => PlainTime;
|
|
34
33
|
export declare function toLiteral(likeValue: PlainTimeLike): PlainTimeLiteral;
|
|
@@ -43,7 +42,7 @@ export declare const now: (zone: TimeZoneId, clock?: {
|
|
|
43
42
|
instant(): import("@bessemer/cornerstone/temporal/instant").Instant;
|
|
44
43
|
withZone(zone: TimeZoneId): import("@bessemer/cornerstone/temporal/clock").Clock;
|
|
45
44
|
}) => PlainTime;
|
|
46
|
-
export declare const merge: (element: PlainTimeLike, builder: PlainTimeBuilder) => PlainTime;
|
|
45
|
+
export declare const merge: (element: PlainTimeLike, builder: Partial<PlainTimeBuilder>) => PlainTime;
|
|
47
46
|
export declare const add: (element: PlainTimeLike, duration: DurationLike) => PlainTime;
|
|
48
47
|
export declare const subtract: (element: PlainTimeLike, duration: DurationLike) => PlainTime;
|
|
49
48
|
export declare const until: (element: PlainTimeLike, other: PlainTimeLike) => Duration;
|
|
@@ -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,YAAY,EAAyB,MAAM,yCAAyC,CAAA;AACvG,OAAO,EAAwB,WAAW,EAAE,MAAM,wCAAwC,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAA;AAGhE,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAE1D,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;AAC1C,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"plain-time.d.ts","sourceRoot":"","sources":["../../src/temporal/plain-time.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/temporal/plain-time.ts
|
|
2
2
|
import { Temporal } from "@js-temporal/polyfill";
|
|
3
|
-
import {
|
|
3
|
+
import { createNamespace } from "@bessemer/cornerstone/resource-key";
|
|
4
4
|
import { fromComparator } from "@bessemer/cornerstone/equalitor";
|
|
5
5
|
import { failure, mapResult, success } from "@bessemer/cornerstone/result";
|
|
6
6
|
import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
|
|
@@ -12,7 +12,7 @@ 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
14
|
import { isNil } from "@bessemer/cornerstone/object";
|
|
15
|
-
var Namespace =
|
|
15
|
+
var Namespace = createNamespace("plain-time");
|
|
16
16
|
function from(value) {
|
|
17
17
|
if (isNil(value)) {
|
|
18
18
|
return value;
|
|
@@ -21,7 +21,7 @@ function from(value) {
|
|
|
21
21
|
return value;
|
|
22
22
|
}
|
|
23
23
|
if (isString(value)) {
|
|
24
|
-
return
|
|
24
|
+
return unpackResult(parseString(value));
|
|
25
25
|
}
|
|
26
26
|
return Temporal.PlainTime.from(value);
|
|
27
27
|
}
|
|
@@ -37,9 +37,6 @@ var parseString = (value) => {
|
|
|
37
37
|
return failure(invalidValue(value, { namespace: Namespace, message: e.message }));
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
|
-
var fromString = (value) => {
|
|
41
|
-
return unpackResult(parseString(value));
|
|
42
|
-
};
|
|
43
40
|
var fromDuration = (duration) => {
|
|
44
41
|
return Midnight.add(_fromDuration(duration));
|
|
45
42
|
};
|
|
@@ -100,7 +97,7 @@ var format = (element, locale, options) => {
|
|
|
100
97
|
const formatter = new Intl.DateTimeFormat(locale, options);
|
|
101
98
|
return formatter.format(date);
|
|
102
99
|
};
|
|
103
|
-
var Midnight = from({
|
|
100
|
+
var Midnight = from({ hour: 0 });
|
|
104
101
|
var Noon = from({ hour: 12 });
|
|
105
102
|
export {
|
|
106
103
|
CompareBy,
|
|
@@ -115,7 +112,6 @@ export {
|
|
|
115
112
|
from,
|
|
116
113
|
fromDuration,
|
|
117
114
|
fromInstant,
|
|
118
|
-
fromString,
|
|
119
115
|
isAfter,
|
|
120
116
|
isBefore,
|
|
121
117
|
isEqual,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/temporal/plain-time.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/temporal/plain-time.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill'\nimport { createNamespace } 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'\nimport { Locale } from '@bessemer/cornerstone/intl/locale'\n\nexport type PlainTime = Temporal.PlainTime\nexport const Namespace = createNamespace('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 function from(value: PlainTimeLike | string): PlainTime\nexport function from(value: PlainTimeLike | string | null): PlainTime | null\nexport function from(value: PlainTimeLike | string | undefined): PlainTime | undefined\nexport function from(value: PlainTimeLike | string | null | undefined): PlainTime | null | undefined\nexport function from(value: PlainTimeLike | string | null | undefined): PlainTime | null | undefined {\n if (isNil(value)) {\n return value\n }\n\n if (value instanceof Temporal.PlainTime) {\n return value\n }\n if (isString(value)) {\n return unpackResult(parseString(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 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), (it) => toLiteral(it)))\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 = (zone: TimeZoneId, clock = DefaultClock): PlainTime => {\n return fromInstant(clock.instant(), zone)\n}\n\nexport const merge = (element: PlainTimeLike, builder: Partial<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 function isEqual(element: PlainTimeLike, other: PlainTimeLike): boolean\nexport function isEqual(element: PlainTimeLike | null, other: PlainTimeLike | null): boolean\nexport function isEqual(element: PlainTimeLike | undefined, other: PlainTimeLike | undefined): boolean\nexport function isEqual(element: PlainTimeLike | null | undefined, other: PlainTimeLike | null | undefined): boolean {\n if (isNil(element) || isNil(other)) {\n return element === other\n }\n\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 type TimeFormatOptions = {\n hour12?: boolean | undefined\n hour?: 'numeric' | '2-digit' | undefined\n minute?: 'numeric' | '2-digit' | undefined\n second?: 'numeric' | '2-digit' | undefined\n}\n\nexport const format = (element: PlainTimeLike, locale: Locale, options?: TimeFormatOptions): string => {\n const plainTime = from(element)\n\n // Create a Date at Unix epoch with the time components\n const date = new Date(1970, 0, 1, plainTime.hour, plainTime.minute, plainTime.second, plainTime.millisecond)\n\n if (isNil(options) || (isNil(options.hour) && isNil(options.minute) && isNil(options.second))) {\n options = { ...options, hour: 'numeric', minute: '2-digit', ...(plainTime.second > 0 || plainTime.millisecond > 0 ? { second: '2-digit' } : {}) }\n }\n\n const formatter = new Intl.DateTimeFormat(locale, options)\n return formatter.format(date)\n}\n\nexport const Midnight = from({ hour: 0 })\nexport const Noon = from({ hour: 12 })\n"],"mappings":"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","names":["it"]}
|
|
@@ -5,7 +5,7 @@ import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
|
|
5
5
|
export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"time-zone-id">;
|
|
6
6
|
export type TimeZoneId = NominalType<string, typeof Namespace>;
|
|
7
7
|
export declare const parseString: (value: string) => Result<TimeZoneId, ErrorEvent>;
|
|
8
|
-
export declare const
|
|
8
|
+
export declare const from: (value: string) => TimeZoneId;
|
|
9
9
|
export declare const Schema: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<TimeZoneId, string>>;
|
|
10
10
|
export declare const Utc: TimeZoneId;
|
|
11
11
|
export declare const getSystemDefault: () => TimeZoneId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-zone-id.d.ts","sourceRoot":"","sources":["../../src/temporal/time-zone-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAW,MAAM,8BAA8B,CAAA;AACvE,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAIhG,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"time-zone-id.d.ts","sourceRoot":"","sources":["../../src/temporal/time-zone-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAW,MAAM,8BAA8B,CAAA;AACvE,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAIhG,eAAO,MAAM,SAAS,gFAAkC,CAAA;AACxD,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAE9D,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,UAAU,EAAE,UAAU,CAWxE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,KAAG,UAEpC,CAAA;AAED,eAAO,MAAM,MAAM,kEAAiD,CAAA;AAEpE,eAAO,MAAM,GAAG,EAAY,UAAU,CAAA;AACtC,eAAO,MAAM,gBAAgB,QAAO,UAEnC,CAAA"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// src/temporal/time-zone-id.ts
|
|
2
2
|
import { failure, success } from "@bessemer/cornerstone/result";
|
|
3
3
|
import Zod from "zod";
|
|
4
|
-
import {
|
|
4
|
+
import { createNamespace } from "@bessemer/cornerstone/resource-key";
|
|
5
5
|
import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
|
|
6
6
|
import { isError } from "@bessemer/cornerstone/error/error";
|
|
7
7
|
import { structuredTransform } from "@bessemer/cornerstone/zod-util";
|
|
8
|
-
var Namespace =
|
|
8
|
+
var Namespace = createNamespace("time-zone-id");
|
|
9
9
|
var parseString = (value) => {
|
|
10
10
|
try {
|
|
11
11
|
const fmt = new Intl.DateTimeFormat(void 0, { timeZone: value });
|
|
@@ -18,7 +18,7 @@ var parseString = (value) => {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
-
var
|
|
21
|
+
var from = (value) => {
|
|
22
22
|
return unpackResult(parseString(value));
|
|
23
23
|
};
|
|
24
24
|
var Schema = structuredTransform(Zod.string(), parseString);
|
|
@@ -30,7 +30,7 @@ export {
|
|
|
30
30
|
Namespace,
|
|
31
31
|
Schema,
|
|
32
32
|
Utc,
|
|
33
|
-
|
|
33
|
+
from,
|
|
34
34
|
getSystemDefault,
|
|
35
35
|
parseString
|
|
36
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/temporal/time-zone-id.ts"],"sourcesContent":["import { failure, Result, success } from '@bessemer/cornerstone/result'\nimport Zod from 'zod'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/temporal/time-zone-id.ts"],"sourcesContent":["import { failure, Result, success } from '@bessemer/cornerstone/result'\nimport Zod from 'zod'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { isError } from '@bessemer/cornerstone/error/error'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\n\nexport const Namespace = createNamespace('time-zone-id')\nexport type TimeZoneId = NominalType<string, typeof Namespace>\n\nexport const parseString = (value: string): Result<TimeZoneId, ErrorEvent> => {\n try {\n const fmt = new Intl.DateTimeFormat(undefined, { timeZone: value })\n return success(fmt.resolvedOptions().timeZone as TimeZoneId)\n } catch (e) {\n if (isError(e)) {\n return failure(invalidValue(value, { namespace: Namespace, message: e.message }))\n } else {\n throw e\n }\n }\n}\n\nexport const from = (value: string): TimeZoneId => {\n return unpackResult(parseString(value))\n}\n\nexport const Schema = structuredTransform(Zod.string(), parseString)\n\nexport const Utc = 'UTC' as TimeZoneId\nexport const getSystemDefault = (): TimeZoneId => {\n return Intl.DateTimeFormat().resolvedOptions().timeZone as TimeZoneId\n}\n"],"mappings":";AAAA,SAAS,SAAiB,eAAe;AACzC,OAAO,SAAS;AAEhB,SAAS,uBAAuB;AAChC,SAAqB,cAAc,oBAAoB;AACvD,SAAS,eAAe;AACxB,SAAS,2BAA2B;AAE7B,IAAM,YAAY,gBAAgB,cAAc;AAGhD,IAAM,cAAc,CAAC,UAAkD;AAC5E,MAAI;AACF,UAAM,MAAM,IAAI,KAAK,eAAe,QAAW,EAAE,UAAU,MAAM,CAAC;AAClE,WAAO,QAAQ,IAAI,gBAAgB,EAAE,QAAsB;AAAA,EAC7D,SAAS,GAAG;AACV,QAAI,QAAQ,CAAC,GAAG;AACd,aAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,IAClF,OAAO;AACL,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,IAAM,OAAO,CAAC,UAA8B;AACjD,SAAO,aAAa,YAAY,KAAK,CAAC;AACxC;AAEO,IAAM,SAAS,oBAAoB,IAAI,OAAO,GAAG,WAAW;AAE5D,IAAM,MAAM;AACZ,IAAM,mBAAmB,MAAkB;AAChD,SAAO,KAAK,eAAe,EAAE,gBAAgB,EAAE;AACjD;","names":[]}
|
|
@@ -13,7 +13,7 @@ export declare const fromMinutes: (value: number) => TimeZoneOffset;
|
|
|
13
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
|
-
export declare const
|
|
16
|
+
export declare const from: (value: string) => TimeZoneOffset;
|
|
17
17
|
export declare const Schema: Zod.ZodUnion<readonly [Zod.ZodPipe<Zod.ZodNumber, Zod.ZodTransform<TimeZoneOffset, number>>, Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<TimeZoneOffset, string>>]>;
|
|
18
18
|
export declare const toDuration: (offset: TimeZoneOffset) => Duration;
|
|
19
19
|
export declare const toMilliseconds: (offset: TimeZoneOffset) => number;
|
|
@@ -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,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,
|
|
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,oFAAsC,CAAA;AAC5D,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,IAAI,GAAI,OAAO,MAAM,KAAG,cAEpC,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"}
|
|
@@ -12,9 +12,9 @@ import { fromDuration as plainTimeFromDuration, toLiteral as plainTimeToLiteral
|
|
|
12
12
|
import { failure, success } from "@bessemer/cornerstone/result";
|
|
13
13
|
import Zod from "zod";
|
|
14
14
|
import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
|
|
15
|
-
import {
|
|
15
|
+
import { createNamespace } from "@bessemer/cornerstone/resource-key";
|
|
16
16
|
import { structuredTransform } from "@bessemer/cornerstone/zod-util";
|
|
17
|
-
var Namespace =
|
|
17
|
+
var Namespace = createNamespace("time-zone-offset");
|
|
18
18
|
var EighteenHours = fromHours(18);
|
|
19
19
|
var parseMinutes = (value) => {
|
|
20
20
|
if (!Number.isInteger(value)) {
|
|
@@ -108,7 +108,7 @@ var parseString = (value) => {
|
|
|
108
108
|
}
|
|
109
109
|
return success(toMinutes(duration));
|
|
110
110
|
};
|
|
111
|
-
var
|
|
111
|
+
var from = (value) => {
|
|
112
112
|
return unpackResult(parseString(value));
|
|
113
113
|
};
|
|
114
114
|
var Schema = Zod.union([structuredTransform(Zod.number(), parseMinutes), structuredTransform(Zod.string(), parseString)]);
|
|
@@ -131,9 +131,9 @@ export {
|
|
|
131
131
|
Namespace,
|
|
132
132
|
Schema,
|
|
133
133
|
Utc,
|
|
134
|
+
from,
|
|
134
135
|
fromDuration,
|
|
135
136
|
fromMinutes,
|
|
136
|
-
fromString,
|
|
137
137
|
fromTimeZone,
|
|
138
138
|
parseDuration,
|
|
139
139
|
parseMinutes,
|
|
@@ -1 +1 @@
|
|
|
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":[]}
|
|
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 { createNamespace } 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 = createNamespace('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 from = (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":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Temporal } from '@js-temporal/polyfill';
|
|
2
|
+
import { NominalType } from '@bessemer/cornerstone/types';
|
|
3
|
+
import { Comparator } from '@bessemer/cornerstone/comparator';
|
|
4
|
+
import { Result } from '@bessemer/cornerstone/result';
|
|
5
|
+
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
|
6
|
+
import Zod from 'zod';
|
|
7
|
+
import { Duration, DurationLike } from '@bessemer/cornerstone/temporal/duration';
|
|
8
|
+
import { InstantLike } from '@bessemer/cornerstone/temporal/instant';
|
|
9
|
+
import { TimeZoneId } from '@bessemer/cornerstone/temporal/time-zone-id';
|
|
10
|
+
import { TimeUnit } from '@bessemer/cornerstone/temporal/chrono';
|
|
11
|
+
import { PlainTimeBuilder, TimeFormatOptions } from '@bessemer/cornerstone/temporal/plain-time';
|
|
12
|
+
import { DateFormatOptions, PlainDateBuilder } from '@bessemer/cornerstone/temporal/plain-date';
|
|
13
|
+
export type ZonedDateTime = Temporal.ZonedDateTime;
|
|
14
|
+
export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"zoned-date-time">;
|
|
15
|
+
export type ZonedDateTimeLiteral = NominalType<string, typeof Namespace>;
|
|
16
|
+
export type ZonedDateTimeBuilder = PlainDateBuilder & PlainTimeBuilder & {
|
|
17
|
+
timeZone: TimeZoneId;
|
|
18
|
+
};
|
|
19
|
+
export type ZonedDateTimeLike = ZonedDateTime | ZonedDateTimeLiteral | ZonedDateTimeBuilder;
|
|
20
|
+
export declare function from(value: ZonedDateTimeLike | string): ZonedDateTime;
|
|
21
|
+
export declare function from(value: ZonedDateTimeLike | string | null): ZonedDateTime | null;
|
|
22
|
+
export declare function from(value: ZonedDateTimeLike | string | undefined): ZonedDateTime | undefined;
|
|
23
|
+
export declare function from(value: ZonedDateTimeLike | string | null | undefined): ZonedDateTime | null | undefined;
|
|
24
|
+
export declare const CompareBy: Comparator<ZonedDateTime>;
|
|
25
|
+
export declare const EqualBy: import("@bessemer/cornerstone/equalitor").Equalitor<Temporal.ZonedDateTime>;
|
|
26
|
+
export declare const parseString: (value: string) => Result<ZonedDateTime, ErrorEvent>;
|
|
27
|
+
export declare const fromInstant: (instant: InstantLike, zone: TimeZoneId) => ZonedDateTime;
|
|
28
|
+
export declare function toLiteral(likeValue: ZonedDateTimeLike): ZonedDateTimeLiteral;
|
|
29
|
+
export declare function toLiteral(likeValue: ZonedDateTimeLike | null): ZonedDateTimeLiteral | null;
|
|
30
|
+
export declare function toLiteral(likeValue: ZonedDateTimeLike | undefined): ZonedDateTimeLiteral | undefined;
|
|
31
|
+
export declare function toLiteral(likeValue: ZonedDateTimeLike | null | undefined): ZonedDateTimeLiteral | null | undefined;
|
|
32
|
+
export declare const SchemaLiteral: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<ZonedDateTimeLiteral, string>>;
|
|
33
|
+
export declare const SchemaInstance: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<Temporal.ZonedDateTime, string>>;
|
|
34
|
+
export declare const isPlainDateTime: (value: unknown) => value is ZonedDateTime;
|
|
35
|
+
export declare const now: (zone: TimeZoneId, clock?: {
|
|
36
|
+
readonly zone: TimeZoneId;
|
|
37
|
+
instant(): import("@bessemer/cornerstone/temporal/instant").Instant;
|
|
38
|
+
withZone(zone: TimeZoneId): import("@bessemer/cornerstone/temporal/clock").Clock;
|
|
39
|
+
}) => ZonedDateTime;
|
|
40
|
+
export declare const merge: (element: ZonedDateTimeLike, builder: Partial<ZonedDateTimeBuilder>) => ZonedDateTime;
|
|
41
|
+
export declare const add: (element: ZonedDateTimeLike, duration: DurationLike) => ZonedDateTime;
|
|
42
|
+
export declare const subtract: (element: ZonedDateTimeLike, duration: DurationLike) => ZonedDateTime;
|
|
43
|
+
export declare const until: (element: ZonedDateTimeLike, other: ZonedDateTimeLike) => Duration;
|
|
44
|
+
export declare const round: (element: ZonedDateTimeLike, unit: TimeUnit) => ZonedDateTime;
|
|
45
|
+
export declare function isEqual(element: ZonedDateTimeLike, other: ZonedDateTimeLike): boolean;
|
|
46
|
+
export declare function isEqual(element: ZonedDateTimeLike | null, other: ZonedDateTimeLike | null): boolean;
|
|
47
|
+
export declare function isEqual(element: ZonedDateTimeLike | undefined, other: ZonedDateTimeLike | undefined): boolean;
|
|
48
|
+
export declare const isBefore: (element: ZonedDateTimeLike, other: ZonedDateTimeLike) => boolean;
|
|
49
|
+
export declare const isAfter: (element: ZonedDateTimeLike, other: ZonedDateTimeLike) => boolean;
|
|
50
|
+
export type DateTimeFormatOptions = DateFormatOptions & TimeFormatOptions;
|
|
51
|
+
//# sourceMappingURL=zoned-date-time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zoned-date-time.d.ts","sourceRoot":"","sources":["../../src/temporal/zoned-date-time.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// src/temporal/zoned-date-time.ts
|
|
2
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
3
|
+
import { createNamespace } from "@bessemer/cornerstone/resource-key";
|
|
4
|
+
import { fromComparator } from "@bessemer/cornerstone/equalitor";
|
|
5
|
+
import { failure, mapResult, success } from "@bessemer/cornerstone/result";
|
|
6
|
+
import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
|
|
7
|
+
import { isError } from "@bessemer/cornerstone/error/error";
|
|
8
|
+
import { structuredTransform } from "@bessemer/cornerstone/zod-util";
|
|
9
|
+
import Zod from "zod";
|
|
10
|
+
import { Default as DefaultClock } from "@bessemer/cornerstone/temporal/clock";
|
|
11
|
+
import { from as _fromDuration } from "@bessemer/cornerstone/temporal/duration";
|
|
12
|
+
import { from as _fromInstant } from "@bessemer/cornerstone/temporal/instant";
|
|
13
|
+
import { isString } from "@bessemer/cornerstone/string";
|
|
14
|
+
import { isNil } from "@bessemer/cornerstone/object";
|
|
15
|
+
var Namespace = createNamespace("zoned-date-time");
|
|
16
|
+
function from(value) {
|
|
17
|
+
if (isNil(value)) {
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
if (value instanceof Temporal.ZonedDateTime) {
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
if (isString(value)) {
|
|
24
|
+
return unpackResult(parseString(value));
|
|
25
|
+
}
|
|
26
|
+
return Temporal.ZonedDateTime.from(value);
|
|
27
|
+
}
|
|
28
|
+
var CompareBy = (first, second) => Temporal.PlainDateTime.compare(first, second);
|
|
29
|
+
var EqualBy = fromComparator(CompareBy);
|
|
30
|
+
var parseString = (value) => {
|
|
31
|
+
try {
|
|
32
|
+
return success(Temporal.ZonedDateTime.from(value));
|
|
33
|
+
} catch (e) {
|
|
34
|
+
if (!isError(e)) {
|
|
35
|
+
throw e;
|
|
36
|
+
}
|
|
37
|
+
return failure(invalidValue(value, { namespace: Namespace, message: e.message }));
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
var fromInstant = (instant, zone) => {
|
|
41
|
+
return _fromInstant(instant).toZonedDateTimeISO(zone);
|
|
42
|
+
};
|
|
43
|
+
function toLiteral(likeValue) {
|
|
44
|
+
if (isNil(likeValue)) {
|
|
45
|
+
return likeValue;
|
|
46
|
+
}
|
|
47
|
+
const value = from(likeValue);
|
|
48
|
+
return value.toString();
|
|
49
|
+
}
|
|
50
|
+
var SchemaLiteral = structuredTransform(Zod.string(), (it) => mapResult(parseString(it), (it2) => toLiteral(it2)));
|
|
51
|
+
var SchemaInstance = structuredTransform(Zod.string(), parseString);
|
|
52
|
+
var isPlainDateTime = (value) => {
|
|
53
|
+
return value instanceof Temporal.PlainDateTime;
|
|
54
|
+
};
|
|
55
|
+
var now = (zone, clock = DefaultClock) => {
|
|
56
|
+
return fromInstant(clock.instant(), zone);
|
|
57
|
+
};
|
|
58
|
+
var merge = (element, builder) => {
|
|
59
|
+
return from(element).with(builder);
|
|
60
|
+
};
|
|
61
|
+
var add = (element, duration) => {
|
|
62
|
+
return from(element).add(_fromDuration(duration));
|
|
63
|
+
};
|
|
64
|
+
var subtract = (element, duration) => {
|
|
65
|
+
return from(element).subtract(_fromDuration(duration));
|
|
66
|
+
};
|
|
67
|
+
var until = (element, other) => {
|
|
68
|
+
return from(element).until(from(other));
|
|
69
|
+
};
|
|
70
|
+
var round = (element, unit) => {
|
|
71
|
+
return from(element).round({ smallestUnit: unit });
|
|
72
|
+
};
|
|
73
|
+
function isEqual(element, other) {
|
|
74
|
+
if (isNil(element) || isNil(other)) {
|
|
75
|
+
return element === other;
|
|
76
|
+
}
|
|
77
|
+
return EqualBy(from(element), from(other));
|
|
78
|
+
}
|
|
79
|
+
var isBefore = (element, other) => {
|
|
80
|
+
return CompareBy(from(element), from(other)) < 0;
|
|
81
|
+
};
|
|
82
|
+
var isAfter = (element, other) => {
|
|
83
|
+
return CompareBy(from(element), from(other)) > 0;
|
|
84
|
+
};
|
|
85
|
+
export {
|
|
86
|
+
CompareBy,
|
|
87
|
+
EqualBy,
|
|
88
|
+
Namespace,
|
|
89
|
+
SchemaInstance,
|
|
90
|
+
SchemaLiteral,
|
|
91
|
+
add,
|
|
92
|
+
from,
|
|
93
|
+
fromInstant,
|
|
94
|
+
isAfter,
|
|
95
|
+
isBefore,
|
|
96
|
+
isEqual,
|
|
97
|
+
isPlainDateTime,
|
|
98
|
+
merge,
|
|
99
|
+
now,
|
|
100
|
+
parseString,
|
|
101
|
+
round,
|
|
102
|
+
subtract,
|
|
103
|
+
toLiteral,
|
|
104
|
+
until
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=zoned-date-time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/temporal/zoned-date-time.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill'\nimport { createNamespace } 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'\nimport { PlainTimeBuilder, TimeFormatOptions } from '@bessemer/cornerstone/temporal/plain-time'\nimport { DateFormatOptions, PlainDateBuilder } from '@bessemer/cornerstone/temporal/plain-date'\n\nexport type ZonedDateTime = Temporal.ZonedDateTime\nexport const Namespace = createNamespace('zoned-date-time')\nexport type ZonedDateTimeLiteral = NominalType<string, typeof Namespace>\nexport type ZonedDateTimeBuilder = PlainDateBuilder &\n PlainTimeBuilder & {\n timeZone: TimeZoneId\n }\n\nexport type ZonedDateTimeLike = ZonedDateTime | ZonedDateTimeLiteral | ZonedDateTimeBuilder\n\nexport function from(value: ZonedDateTimeLike | string): ZonedDateTime\nexport function from(value: ZonedDateTimeLike | string | null): ZonedDateTime | null\nexport function from(value: ZonedDateTimeLike | string | undefined): ZonedDateTime | undefined\nexport function from(value: ZonedDateTimeLike | string | null | undefined): ZonedDateTime | null | undefined\nexport function from(value: ZonedDateTimeLike | string | null | undefined): ZonedDateTime | null | undefined {\n if (isNil(value)) {\n return value\n }\n\n if (value instanceof Temporal.ZonedDateTime) {\n return value\n }\n\n if (isString(value)) {\n return unpackResult(parseString(value))\n }\n\n return Temporal.ZonedDateTime.from(value)\n}\n\nexport const CompareBy: Comparator<ZonedDateTime> = (first: ZonedDateTime, second: ZonedDateTime): number =>\n Temporal.PlainDateTime.compare(first, second)\nexport const EqualBy = fromComparator(CompareBy)\n\nexport const parseString = (value: string): Result<ZonedDateTime, ErrorEvent> => {\n try {\n return success(Temporal.ZonedDateTime.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 fromInstant = (instant: InstantLike, zone: TimeZoneId): ZonedDateTime => {\n return _fromInstant(instant).toZonedDateTimeISO(zone)\n}\n\nexport function toLiteral(likeValue: ZonedDateTimeLike): ZonedDateTimeLiteral\nexport function toLiteral(likeValue: ZonedDateTimeLike | null): ZonedDateTimeLiteral | null\nexport function toLiteral(likeValue: ZonedDateTimeLike | undefined): ZonedDateTimeLiteral | undefined\nexport function toLiteral(likeValue: ZonedDateTimeLike | null | undefined): ZonedDateTimeLiteral | null | undefined\nexport function toLiteral(likeValue: ZonedDateTimeLike | null | undefined): ZonedDateTimeLiteral | null | undefined {\n if (isNil(likeValue)) {\n return likeValue\n }\n\n const value = from(likeValue)\n return value.toString() as ZonedDateTimeLiteral\n}\n\nexport const SchemaLiteral = structuredTransform(Zod.string(), (it: string) => mapResult(parseString(it), (it) => toLiteral(it)))\nexport const SchemaInstance = structuredTransform(Zod.string(), parseString)\n\nexport const isPlainDateTime = (value: unknown): value is ZonedDateTime => {\n return value instanceof Temporal.PlainDateTime\n}\n\nexport const now = (zone: TimeZoneId, clock = DefaultClock): ZonedDateTime => {\n return fromInstant(clock.instant(), zone)\n}\n\nexport const merge = (element: ZonedDateTimeLike, builder: Partial<ZonedDateTimeBuilder>): ZonedDateTime => {\n return from(element).with(builder)\n}\n\nexport const add = (element: ZonedDateTimeLike, duration: DurationLike): ZonedDateTime => {\n return from(element).add(_fromDuration(duration))\n}\n\nexport const subtract = (element: ZonedDateTimeLike, duration: DurationLike): ZonedDateTime => {\n return from(element).subtract(_fromDuration(duration))\n}\n\nexport const until = (element: ZonedDateTimeLike, other: ZonedDateTimeLike): Duration => {\n return from(element).until(from(other))\n}\n\nexport const round = (element: ZonedDateTimeLike, unit: TimeUnit): ZonedDateTime => {\n return from(element).round({ smallestUnit: unit })\n}\n\nexport function isEqual(element: ZonedDateTimeLike, other: ZonedDateTimeLike): boolean\nexport function isEqual(element: ZonedDateTimeLike | null, other: ZonedDateTimeLike | null): boolean\nexport function isEqual(element: ZonedDateTimeLike | undefined, other: ZonedDateTimeLike | undefined): boolean\nexport function isEqual(element: ZonedDateTimeLike | null | undefined, other: ZonedDateTimeLike | null | undefined): boolean {\n if (isNil(element) || isNil(other)) {\n return element === other\n }\n\n return EqualBy(from(element), from(other))\n}\n\nexport const isBefore = (element: ZonedDateTimeLike, other: ZonedDateTimeLike): boolean => {\n return CompareBy(from(element), from(other)) < 0\n}\n\nexport const isAfter = (element: ZonedDateTimeLike, other: ZonedDateTimeLike): boolean => {\n return CompareBy(from(element), from(other)) > 0\n}\n\nexport type DateTimeFormatOptions = DateFormatOptions & TimeFormatOptions\n\n// JOHN need to consider what to do about time zone offset vs. time zone id discrepancy\n// export const format = (element: ZonedDateTimeLike, locale: Locale, options: DateTimeFormatOptions): string => {\n// const zonedDateTime = from(element)\n//\n// // Convert PlainDateTime to Date\n// const date = new Date(\n// zonedDateTime.year,\n// zonedDateTime.month - 1, // Date months are 0-based\n// zonedDateTime.day,\n// zonedDateTime.hour,\n// zonedDateTime.minute,\n// zonedDateTime.second,\n// zonedDateTime.millisecond\n// )\n//\n// const formatter = new Intl.DateTimeFormat(locale, { ...options, timeZone: zonedDateTime.timeZoneId })\n// return formatter.format(date)\n// }\n"],"mappings":"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","names":["it"]}
|
package/dist/types.d.ts
CHANGED
|
@@ -12,8 +12,8 @@ export type Alias<T> = TaggedType<T, any>;
|
|
|
12
12
|
export type Throwable = unknown;
|
|
13
13
|
export type Dictionary<T> = Record<string, T>;
|
|
14
14
|
export type Nil = null | undefined;
|
|
15
|
-
export type
|
|
16
|
-
[P in keyof T]?: T[P] extends Array<infer U> ?
|
|
15
|
+
export type DEPRECATEDDeepPartial<T> = {
|
|
16
|
+
[P in keyof T]?: T[P] extends Array<infer U> ? DEPRECATEDDeepPartial<U>[] : T[P] extends object | undefined ? DEPRECATEDDeepPartial<T[P]> : T[P];
|
|
17
17
|
};
|
|
18
18
|
export type BasicType = string | number | boolean | Date | Instant;
|
|
19
19
|
export type ToString<T> = T extends string | number ? `${T}` : never;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAA;AAEhE,OAAO,CAAC,MAAM,MAAM,EAAE,OAAO,MAAM,CAAA;AAEnC,MAAM,MAAM,aAAa,CAAC,WAAW,IAAI;IAAE,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAA;AAElE,MAAM,MAAM,WAAW,CAAC,YAAY,EAAE,WAAW,IAAI,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;AAE9F,MAAM,MAAM,YAAY,CAAC,WAAW,IAAI;IAAE,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAA;CAAE,CAAA;AAElE,MAAM,MAAM,UAAU,CAAC,YAAY,EAAE,WAAW,IAAI,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;AAE5F,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAEzC,MAAM,MAAM,SAAS,GAAG,OAAO,CAAA;AAE/B,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAE7C,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,SAAS,CAAA;AAElC,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAA;AAEhE,OAAO,CAAC,MAAM,MAAM,EAAE,OAAO,MAAM,CAAA;AAEnC,MAAM,MAAM,aAAa,CAAC,WAAW,IAAI;IAAE,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAA;AAElE,MAAM,MAAM,WAAW,CAAC,YAAY,EAAE,WAAW,IAAI,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;AAE9F,MAAM,MAAM,YAAY,CAAC,WAAW,IAAI;IAAE,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAA;CAAE,CAAA;AAElE,MAAM,MAAM,UAAU,CAAC,YAAY,EAAE,WAAW,IAAI,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;AAE5F,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAEzC,MAAM,MAAM,SAAS,GAAG,OAAO,CAAA;AAE/B,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAE7C,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,SAAS,CAAA;AAElC,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;KACpC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACjJ,CAAA;AAGD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,CAAA;AAElE,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,KAAK,CAAA;AAEpE,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI;KAC3D,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK;CACjE,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GAC/F,KAAK,SAAS,MAAM,GAClB,IAAI,SAAS,SAAS,MAAM,EAAE,GAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GACtB,KAAK,GACL,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,GAC9B,KAAK,GACP,KAAK,GACP,EAAE,CAAA"}
|
|
@@ -4,8 +4,8 @@ import { Result } from '@bessemer/cornerstone/result';
|
|
|
4
4
|
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
|
5
5
|
export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"ulid">;
|
|
6
6
|
export type Ulid = NominalType<string, typeof Namespace>;
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const
|
|
7
|
+
export declare const parse: (value: string) => Result<Ulid, ErrorEvent>;
|
|
8
|
+
export declare const from: (value: string) => Ulid;
|
|
9
9
|
export declare const Schema: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<Ulid, string>>;
|
|
10
10
|
export declare const generate: () => Ulid;
|
|
11
11
|
//# sourceMappingURL=ulid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ulid.d.ts","sourceRoot":"","sources":["../../src/uuid/ulid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAW,MAAM,EAAW,MAAM,8BAA8B,CAAA;AAEvE,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAGhG,eAAO,MAAM,SAAS,wEAA0B,CAAA;AAChD,MAAM,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAExD,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,IAAI,EAAE,UAAU,CAM5D,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,KAAG,IAEpC,CAAA;AAED,eAAO,MAAM,MAAM,4DAA2C,CAAA;AAE9D,eAAO,MAAM,QAAQ,QAAO,IAE3B,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// src/uuid/ulid.ts
|
|
2
|
+
import { ulid } from "ulid";
|
|
3
|
+
import Zod from "zod";
|
|
4
|
+
import { failure, success } from "@bessemer/cornerstone/result";
|
|
5
|
+
import { createNamespace } from "@bessemer/cornerstone/resource-key";
|
|
6
|
+
import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
|
|
7
|
+
import { structuredTransform } from "@bessemer/cornerstone/zod-util";
|
|
8
|
+
var Namespace = createNamespace("ulid");
|
|
9
|
+
var parse = (value) => {
|
|
10
|
+
if (!/^[0-9A-HJKMNP-TV-Z]{26}$/i.test(value)) {
|
|
11
|
+
return failure(invalidValue(value, { namespace: Namespace, message: `[${Namespace}]: Invalid Ulid format: [${value}]` }));
|
|
12
|
+
}
|
|
13
|
+
return success(value.toUpperCase());
|
|
14
|
+
};
|
|
15
|
+
var from = (value) => {
|
|
16
|
+
return unpackResult(parse(value));
|
|
17
|
+
};
|
|
18
|
+
var Schema = structuredTransform(Zod.string(), parse);
|
|
19
|
+
var generate = () => {
|
|
20
|
+
return ulid();
|
|
21
|
+
};
|
|
22
|
+
export {
|
|
23
|
+
Namespace,
|
|
24
|
+
Schema,
|
|
25
|
+
from,
|
|
26
|
+
generate,
|
|
27
|
+
parse
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=ulid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/uuid/ulid.ts"],"sourcesContent":["import { ulid } from 'ulid'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport Zod from 'zod'\nimport { failure, Result, success } from '@bessemer/cornerstone/result'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\n\nexport const Namespace = createNamespace('ulid')\nexport type Ulid = NominalType<string, typeof Namespace>\n\nexport const parse = (value: string): Result<Ulid, ErrorEvent> => {\n if (!/^[0-9A-HJKMNP-TV-Z]{26}$/i.test(value)) {\n return failure(invalidValue(value, { namespace: Namespace, message: `[${Namespace}]: Invalid Ulid format: [${value}]` }))\n }\n\n return success(value.toUpperCase() as Ulid)\n}\n\nexport const from = (value: string): Ulid => {\n return unpackResult(parse(value))\n}\n\nexport const Schema = structuredTransform(Zod.string(), parse)\n\nexport const generate = (): Ulid => {\n return ulid() as Ulid\n}\n"],"mappings":";AAAA,SAAS,YAAY;AAErB,OAAO,SAAS;AAChB,SAAS,SAAiB,eAAe;AACzC,SAAS,uBAAuB;AAChC,SAAqB,cAAc,oBAAoB;AACvD,SAAS,2BAA2B;AAE7B,IAAM,YAAY,gBAAgB,MAAM;AAGxC,IAAM,QAAQ,CAAC,UAA4C;AAChE,MAAI,CAAC,4BAA4B,KAAK,KAAK,GAAG;AAC5C,WAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,IAAI,SAAS,4BAA4B,KAAK,IAAI,CAAC,CAAC;AAAA,EAC1H;AAEA,SAAO,QAAQ,MAAM,YAAY,CAAS;AAC5C;AAEO,IAAM,OAAO,CAAC,UAAwB;AAC3C,SAAO,aAAa,MAAM,KAAK,CAAC;AAClC;AAEO,IAAM,SAAS,oBAAoB,IAAI,OAAO,GAAG,KAAK;AAEtD,IAAM,WAAW,MAAY;AAClC,SAAO,KAAK;AACd;","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { NominalType } from '@bessemer/cornerstone/types';
|
|
2
|
+
import Zod from 'zod';
|
|
3
|
+
import { Result } from '@bessemer/cornerstone/result';
|
|
4
|
+
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
|
5
|
+
export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"uuid-v4">;
|
|
6
|
+
export type UuidV4 = NominalType<string, typeof Namespace>;
|
|
7
|
+
export declare const parse: (value: string) => Result<UuidV4, ErrorEvent>;
|
|
8
|
+
export declare const from: (value: string) => UuidV4;
|
|
9
|
+
export declare const Schema: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<UuidV4, string>>;
|
|
10
|
+
export declare const generate: () => UuidV4;
|
|
11
|
+
//# sourceMappingURL=uuid-v4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid-v4.d.ts","sourceRoot":"","sources":["../../src/uuid/uuid-v4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,GAAG,MAAM,KAAK,CAAA;AAGrB,OAAO,EAAW,MAAM,EAAW,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAIhG,eAAO,MAAM,SAAS,2EAA6B,CAAA;AACnD,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAE1D,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAM9D,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,KAAG,MAEpC,CAAA;AAED,eAAO,MAAM,MAAM,8DAA2C,CAAA;AAE9D,eAAO,MAAM,QAAQ,QAAO,MAM3B,CAAA"}
|