@bessemer/cornerstone 0.5.86 → 0.5.89
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/aspect-ratio.d.ts +7 -4
- package/dist/aspect-ratio.d.ts.map +1 -1
- package/dist/aspect-ratio.js +16 -7
- package/dist/aspect-ratio.js.map +1 -1
- package/dist/async.d.ts +1 -1
- package/dist/async.d.ts.map +1 -1
- package/dist/async.js +1 -1
- package/dist/async.js.map +1 -1
- package/dist/cache.d.ts +7 -6
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +12 -12
- package/dist/cache.js.map +1 -1
- package/dist/comparator.js +1 -1
- package/dist/comparator.js.map +1 -1
- package/dist/content.d.ts +5 -5
- package/dist/content.d.ts.map +1 -1
- package/dist/content.js.map +1 -1
- package/dist/data-size.d.ts +2 -2
- package/dist/data-size.d.ts.map +1 -1
- package/dist/data-size.js.map +1 -1
- package/dist/{error-event.d.ts → error/error-event.d.ts} +42 -23
- package/dist/error/error-event.d.ts.map +1 -0
- package/dist/{error-event.js → error/error-event.js} +82 -60
- package/dist/error/error-event.js.map +1 -0
- package/dist/error/error-type.d.ts +11 -0
- package/dist/error/error-type.d.ts.map +1 -0
- package/dist/error/error-type.js +20 -0
- package/dist/error/error-type.js.map +1 -0
- package/dist/error/error.d.ts.map +1 -0
- package/dist/{error.js → error/error.js} +1 -1
- package/dist/error/error.js.map +1 -0
- package/dist/expression.d.ts +2 -2
- package/dist/expression.d.ts.map +1 -1
- package/dist/expression.js.map +1 -1
- package/dist/glob.d.ts +7 -3
- package/dist/glob.d.ts.map +1 -1
- package/dist/glob.js +23 -15
- package/dist/glob.js.map +1 -1
- package/dist/hash.d.ts +2 -2
- package/dist/hash.d.ts.map +1 -1
- package/dist/hash.js.map +1 -1
- package/dist/hex-code.d.ts +7 -4
- package/dist/hex-code.d.ts.map +1 -1
- package/dist/hex-code.js +19 -5
- package/dist/hex-code.js.map +1 -1
- package/dist/index.d.ts +12 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -4
- package/dist/index.js.map +1 -1
- package/dist/intl/country-code.d.ts +7 -4
- package/dist/intl/country-code.d.ts.map +1 -1
- package/dist/intl/country-code.js +52 -43
- package/dist/intl/country-code.js.map +1 -1
- package/dist/intl/country-subdivision-code.d.ts +7 -4
- package/dist/intl/country-subdivision-code.d.ts.map +1 -1
- package/dist/intl/country-subdivision-code.js +16 -5
- package/dist/intl/country-subdivision-code.js.map +1 -1
- package/dist/intl/currency-code.d.ts +7 -4
- package/dist/intl/currency-code.d.ts.map +1 -1
- package/dist/intl/currency-code.js +20 -11
- package/dist/intl/currency-code.js.map +1 -1
- package/dist/intl/language-code.d.ts +7 -4
- package/dist/intl/language-code.d.ts.map +1 -1
- package/dist/intl/language-code.js +39 -30
- package/dist/intl/language-code.js.map +1 -1
- package/dist/intl/locale.d.ts +8 -5
- package/dist/intl/locale.d.ts.map +1 -1
- package/dist/intl/locale.js +37 -30
- package/dist/intl/locale.js.map +1 -1
- package/dist/math.d.ts +2 -0
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +12 -1
- package/dist/math.js.map +1 -1
- package/dist/mime-type.d.ts +7 -4
- package/dist/mime-type.d.ts.map +1 -1
- package/dist/mime-type.js +44 -35
- package/dist/mime-type.js.map +1 -1
- package/dist/monetary-amount.d.ts +3 -3
- package/dist/monetary-amount.d.ts.map +1 -1
- package/dist/monetary-amount.js +4 -4
- package/dist/monetary-amount.js.map +1 -1
- package/dist/object/object-path.d.ts +2 -2
- package/dist/object/object-path.d.ts.map +1 -1
- package/dist/object/object-path.js.map +1 -1
- package/dist/object/type-path.d.ts +2 -2
- package/dist/object/type-path.d.ts.map +1 -1
- package/dist/object/type-path.js.map +1 -1
- package/dist/object.d.ts +2 -2
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +3 -2
- package/dist/object.js.map +1 -1
- package/dist/range.d.ts +2 -2
- package/dist/range.d.ts.map +1 -1
- package/dist/range.js.map +1 -1
- package/dist/reference.d.ts +2 -2
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js.map +1 -1
- package/dist/resource-key.d.ts +17 -8
- package/dist/resource-key.d.ts.map +1 -1
- package/dist/resource-key.js +42 -13
- package/dist/resource-key.js.map +1 -1
- package/dist/result.d.ts +6 -5
- package/dist/result.d.ts.map +1 -1
- package/dist/result.js +4 -4
- package/dist/result.js.map +1 -1
- package/dist/retry.d.ts +1 -1
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +1 -1
- package/dist/retry.js.map +1 -1
- package/dist/rich-text.d.ts +2 -2
- package/dist/rich-text.d.ts.map +1 -1
- package/dist/rich-text.js.map +1 -1
- package/dist/signature.d.ts.map +1 -1
- package/dist/signature.js +5 -1
- package/dist/signature.js.map +1 -1
- package/dist/sql.d.ts +2 -2
- package/dist/sql.d.ts.map +1 -1
- package/dist/sql.js.map +1 -1
- package/dist/tag.d.ts +3 -3
- package/dist/tag.d.ts.map +1 -1
- package/dist/tag.js.map +1 -1
- package/dist/temporal/chrono.d.ts +34 -0
- package/dist/temporal/chrono.d.ts.map +1 -0
- package/dist/temporal/chrono.js +34 -0
- package/dist/temporal/chrono.js.map +1 -0
- package/dist/temporal/clock.d.ts +21 -0
- package/dist/temporal/clock.d.ts.map +1 -0
- package/dist/temporal/clock.js +76 -0
- package/dist/temporal/clock.js.map +1 -0
- package/dist/temporal/date.d.ts +2 -0
- package/dist/temporal/date.d.ts.map +1 -0
- package/dist/temporal/date.js +8 -0
- package/dist/temporal/date.js.map +1 -0
- package/dist/temporal/duration.d.ts +54 -0
- package/dist/temporal/duration.d.ts.map +1 -0
- package/dist/temporal/duration.js +162 -0
- package/dist/temporal/duration.js.map +1 -0
- package/dist/temporal/instant.d.ts +35 -0
- package/dist/temporal/instant.d.ts.map +1 -0
- package/dist/temporal/instant.js +93 -0
- package/dist/temporal/instant.js.map +1 -0
- package/dist/temporal/plain-time.d.ts +49 -0
- package/dist/temporal/plain-time.d.ts.map +1 -0
- package/dist/temporal/plain-time.js +111 -0
- package/dist/temporal/plain-time.js.map +1 -0
- package/dist/temporal/time-zone-id.d.ts +12 -0
- package/dist/temporal/time-zone-id.d.ts.map +1 -0
- package/dist/temporal/time-zone-id.js +35 -0
- package/dist/temporal/time-zone-id.js.map +1 -0
- package/dist/temporal/time-zone-offset.d.ts +22 -0
- package/dist/temporal/time-zone-offset.d.ts.map +1 -0
- package/dist/temporal/time-zone-offset.js +145 -0
- package/dist/temporal/time-zone-offset.js.map +1 -0
- package/dist/types.d.ts +12 -12
- package/dist/types.d.ts.map +1 -1
- package/dist/ulid.d.ts +7 -4
- package/dist/ulid.d.ts.map +1 -1
- package/dist/ulid.js +14 -5
- package/dist/ulid.js.map +1 -1
- package/dist/unit.d.ts +2 -2
- package/dist/unit.d.ts.map +1 -1
- package/dist/unit.js.map +1 -1
- package/dist/uri.d.ts +2 -2
- package/dist/uri.d.ts.map +1 -1
- package/dist/uri.js.map +1 -1
- package/dist/uuid.d.ts +7 -4
- package/dist/uuid.d.ts.map +1 -1
- package/dist/uuid.js +14 -5
- package/dist/uuid.js.map +1 -1
- package/dist/zod-util.d.ts +5 -0
- package/dist/zod-util.d.ts.map +1 -1
- package/dist/zod-util.js +28 -2
- package/dist/zod-util.js.map +1 -1
- package/package.json +2 -2
- package/dist/date.d.ts +0 -13
- package/dist/date.d.ts.map +0 -1
- package/dist/date.js +0 -40
- package/dist/date.js.map +0 -1
- package/dist/duration.d.ts +0 -18
- package/dist/duration.d.ts.map +0 -1
- package/dist/duration.js +0 -53
- package/dist/duration.js.map +0 -1
- package/dist/error-event.d.ts.map +0 -1
- package/dist/error-event.js.map +0 -1
- package/dist/error.d.ts.map +0 -1
- package/dist/error.js.map +0 -1
- /package/dist/{error.d.ts → error/error.d.ts} +0 -0
@@ -0,0 +1,162 @@
|
|
1
|
+
// src/temporal/duration.ts
|
2
|
+
import Zod from "zod";
|
3
|
+
import { Temporal } from "@js-temporal/polyfill";
|
4
|
+
import { namespace } from "@bessemer/cornerstone/resource-key";
|
5
|
+
import { fromComparator } from "@bessemer/cornerstone/equalitor";
|
6
|
+
import { structuredTransform } from "@bessemer/cornerstone/zod-util";
|
7
|
+
import { failure, mapResult, success } from "@bessemer/cornerstone/result";
|
8
|
+
import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
|
9
|
+
import { isError } from "@bessemer/cornerstone/error/error";
|
10
|
+
import { TimeUnit } from "@bessemer/cornerstone/temporal/chrono";
|
11
|
+
import { isString } from "@bessemer/cornerstone/string";
|
12
|
+
var Namespace = namespace("duration");
|
13
|
+
var from = (value) => {
|
14
|
+
if (value instanceof Temporal.Duration) {
|
15
|
+
return value;
|
16
|
+
}
|
17
|
+
if (isString(value)) {
|
18
|
+
return fromString(value);
|
19
|
+
}
|
20
|
+
return Temporal.Duration.from(value);
|
21
|
+
};
|
22
|
+
var CompareBy = (first, second) => Temporal.Duration.compare(first, second);
|
23
|
+
var EqualBy = fromComparator(CompareBy);
|
24
|
+
var parseString = (value) => {
|
25
|
+
try {
|
26
|
+
return success(Temporal.Duration.from(value));
|
27
|
+
} catch (e) {
|
28
|
+
if (!isError(e)) {
|
29
|
+
throw e;
|
30
|
+
}
|
31
|
+
return failure(invalidValue(value, { namespace: Namespace, message: e.message }));
|
32
|
+
}
|
33
|
+
};
|
34
|
+
var fromString = (value) => {
|
35
|
+
return unpackResult(parseString(value));
|
36
|
+
};
|
37
|
+
var toLiteral = (value) => {
|
38
|
+
return from(value).toString();
|
39
|
+
};
|
40
|
+
var SchemaLiteral = structuredTransform(Zod.string(), (it) => mapResult(parseString(it), toLiteral));
|
41
|
+
var SchemaInstance = structuredTransform(Zod.string(), parseString);
|
42
|
+
var isDuration = (value) => {
|
43
|
+
return value instanceof Temporal.Duration;
|
44
|
+
};
|
45
|
+
var merge = (element, builder) => {
|
46
|
+
return from(element).with(builder);
|
47
|
+
};
|
48
|
+
var fromMilliseconds = (value) => {
|
49
|
+
return from({ milliseconds: value });
|
50
|
+
};
|
51
|
+
var toMilliseconds = (duration) => {
|
52
|
+
return from(duration).total(TimeUnit.Millisecond);
|
53
|
+
};
|
54
|
+
var fromSeconds = (value) => {
|
55
|
+
return from({ seconds: value });
|
56
|
+
};
|
57
|
+
var toSeconds = (duration) => {
|
58
|
+
return from(duration).total(TimeUnit.Second);
|
59
|
+
};
|
60
|
+
var fromMinutes = (value) => {
|
61
|
+
return from({ minutes: value });
|
62
|
+
};
|
63
|
+
var toMinutes = (duration) => {
|
64
|
+
return from(duration).total(TimeUnit.Minute);
|
65
|
+
};
|
66
|
+
var fromHours = (value) => {
|
67
|
+
return from({ hours: value });
|
68
|
+
};
|
69
|
+
var toHours = (duration) => {
|
70
|
+
return from(duration).total(TimeUnit.Hour);
|
71
|
+
};
|
72
|
+
var fromUnit = (value, timeUnit) => {
|
73
|
+
switch (timeUnit) {
|
74
|
+
case TimeUnit.Nanosecond:
|
75
|
+
return from({ nanoseconds: value });
|
76
|
+
case TimeUnit.Microsecond:
|
77
|
+
return from({ microseconds: value });
|
78
|
+
case TimeUnit.Millisecond:
|
79
|
+
return from({ milliseconds: value });
|
80
|
+
case TimeUnit.Second:
|
81
|
+
return from({ seconds: value });
|
82
|
+
case TimeUnit.Minute:
|
83
|
+
return from({ minutes: value });
|
84
|
+
case TimeUnit.Hour:
|
85
|
+
return from({ hours: value });
|
86
|
+
}
|
87
|
+
};
|
88
|
+
var toUnit = (duration, timeUnit) => {
|
89
|
+
return from(duration).total(timeUnit);
|
90
|
+
};
|
91
|
+
var isZero = (duration) => {
|
92
|
+
return EqualBy(from(duration), Zero);
|
93
|
+
};
|
94
|
+
var round = (element, unit) => {
|
95
|
+
return from(element).round({ smallestUnit: unit });
|
96
|
+
};
|
97
|
+
var add = (...durations) => {
|
98
|
+
return durations.map(from).reduce((first, second) => first.add(second), Zero);
|
99
|
+
};
|
100
|
+
var subtract = (...durations) => {
|
101
|
+
if (durations.length === 0) {
|
102
|
+
return Zero;
|
103
|
+
}
|
104
|
+
const instances = durations.map(from);
|
105
|
+
return instances.slice(1).reduce((result, current) => result.subtract(current), instances[0]);
|
106
|
+
};
|
107
|
+
var negate = (element) => {
|
108
|
+
return from(element).negated();
|
109
|
+
};
|
110
|
+
var isEqual = (element, other) => {
|
111
|
+
return EqualBy(from(element), from(other));
|
112
|
+
};
|
113
|
+
var isLess = (element, other) => {
|
114
|
+
return CompareBy(from(element), from(other)) < 0;
|
115
|
+
};
|
116
|
+
var isGreater = (element, other) => {
|
117
|
+
return CompareBy(from(element), from(other)) > 0;
|
118
|
+
};
|
119
|
+
var Zero = from({ nanoseconds: 0 });
|
120
|
+
var OneMillisecond = fromMilliseconds(1);
|
121
|
+
var OneSecond = fromSeconds(1);
|
122
|
+
var OneMinute = fromMinutes(1);
|
123
|
+
var OneHour = fromHours(1);
|
124
|
+
var OneDay = fromHours(24);
|
125
|
+
export {
|
126
|
+
CompareBy,
|
127
|
+
EqualBy,
|
128
|
+
Namespace,
|
129
|
+
OneDay,
|
130
|
+
OneHour,
|
131
|
+
OneMillisecond,
|
132
|
+
OneMinute,
|
133
|
+
OneSecond,
|
134
|
+
SchemaInstance,
|
135
|
+
SchemaLiteral,
|
136
|
+
Zero,
|
137
|
+
add,
|
138
|
+
from,
|
139
|
+
fromHours,
|
140
|
+
fromMilliseconds,
|
141
|
+
fromMinutes,
|
142
|
+
fromSeconds,
|
143
|
+
fromString,
|
144
|
+
fromUnit,
|
145
|
+
isDuration,
|
146
|
+
isEqual,
|
147
|
+
isGreater,
|
148
|
+
isLess,
|
149
|
+
isZero,
|
150
|
+
merge,
|
151
|
+
negate,
|
152
|
+
parseString,
|
153
|
+
round,
|
154
|
+
subtract,
|
155
|
+
toHours,
|
156
|
+
toLiteral,
|
157
|
+
toMilliseconds,
|
158
|
+
toMinutes,
|
159
|
+
toSeconds,
|
160
|
+
toUnit
|
161
|
+
};
|
162
|
+
//# sourceMappingURL=duration.js.map
|
@@ -0,0 +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 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 const toLiteral = (value: DurationLike): DurationLiteral => {\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":"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","names":[]}
|
@@ -0,0 +1,35 @@
|
|
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 { TimeUnit } from '@bessemer/cornerstone/temporal/chrono';
|
9
|
+
export type Instant = Temporal.Instant;
|
10
|
+
export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"instant">;
|
11
|
+
export type InstantLiteral = NominalType<string, typeof Namespace>;
|
12
|
+
export type InstantLike = Instant | Date | InstantLiteral;
|
13
|
+
export declare const from: (value: InstantLike) => Instant;
|
14
|
+
export declare const CompareBy: Comparator<Instant>;
|
15
|
+
export declare const EqualBy: import("@bessemer/cornerstone/equalitor").Equalitor<Temporal.Instant>;
|
16
|
+
export declare const parseString: (value: string) => Result<Instant, ErrorEvent>;
|
17
|
+
export declare const fromString: (value: string) => Instant;
|
18
|
+
export declare const toLiteral: (value: InstantLike) => InstantLiteral;
|
19
|
+
export declare const toDate: (value: Instant) => Date;
|
20
|
+
export declare const SchemaLiteral: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<InstantLiteral, string>>;
|
21
|
+
export declare const SchemaInstance: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<Temporal.Instant, string>>;
|
22
|
+
export declare const isInstant: (value: unknown) => value is Instant;
|
23
|
+
export declare const now: (clock?: {
|
24
|
+
readonly zone: import("./time-zone-id").TimeZoneId;
|
25
|
+
instant(): Instant;
|
26
|
+
withZone(zone: import("./time-zone-id").TimeZoneId): import("@bessemer/cornerstone/temporal/clock").Clock;
|
27
|
+
}) => Instant;
|
28
|
+
export declare const add: (element: InstantLike, duration: DurationLike) => Instant;
|
29
|
+
export declare const subtract: (element: InstantLike, duration: DurationLike) => Instant;
|
30
|
+
export declare const until: (element: InstantLike, other: InstantLike) => Duration;
|
31
|
+
export declare const round: (element: InstantLike, unit: TimeUnit) => Instant;
|
32
|
+
export declare const isEqual: (element: InstantLike, other: InstantLike) => boolean;
|
33
|
+
export declare const isBefore: (element: InstantLike, other: InstantLike) => boolean;
|
34
|
+
export declare const isAfter: (element: InstantLike, other: InstantLike) => boolean;
|
35
|
+
//# sourceMappingURL=instant.d.ts.map
|
@@ -0,0 +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,YAAY,EAAwB,MAAM,yCAAyC,CAAA;AACtG,OAAO,EAAgC,QAAQ,EAAE,MAAM,uCAAuC,CAAA;AAG9F,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,eAAO,MAAM,SAAS,GAAI,OAAO,WAAW,mBAE3C,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,OAAO,OAAO,KAAG,IAEvC,CAAA;AAED,eAAO,MAAM,aAAa,sEAA2F,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"}
|
@@ -0,0 +1,93 @@
|
|
1
|
+
// src/temporal/instant.ts
|
2
|
+
import { Temporal } from "@js-temporal/polyfill";
|
3
|
+
import { namespace } 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 { _isInstant, instantToLiteral } from "@bessemer/cornerstone/temporal/chrono";
|
13
|
+
import { isString } from "@bessemer/cornerstone/string";
|
14
|
+
var Namespace = namespace("instant");
|
15
|
+
var from = (value) => {
|
16
|
+
if (value instanceof Temporal.Instant) {
|
17
|
+
return value;
|
18
|
+
}
|
19
|
+
if (isString(value)) {
|
20
|
+
return fromString(value);
|
21
|
+
}
|
22
|
+
return Temporal.Instant.fromEpochMilliseconds(value.getTime());
|
23
|
+
};
|
24
|
+
var CompareBy = (first, second) => Temporal.Instant.compare(first, second);
|
25
|
+
var EqualBy = fromComparator(CompareBy);
|
26
|
+
var parseString = (value) => {
|
27
|
+
try {
|
28
|
+
return success(Temporal.Instant.from(value));
|
29
|
+
} catch (e) {
|
30
|
+
if (!isError(e)) {
|
31
|
+
throw e;
|
32
|
+
}
|
33
|
+
return failure(invalidValue(value, { namespace: Namespace, message: e.message }));
|
34
|
+
}
|
35
|
+
};
|
36
|
+
var fromString = (value) => {
|
37
|
+
return unpackResult(parseString(value));
|
38
|
+
};
|
39
|
+
var toLiteral = (value) => {
|
40
|
+
return instantToLiteral(from(value));
|
41
|
+
};
|
42
|
+
var toDate = (value) => {
|
43
|
+
return new Date(value.epochMilliseconds);
|
44
|
+
};
|
45
|
+
var SchemaLiteral = structuredTransform(Zod.string(), (it) => mapResult(parseString(it), toLiteral));
|
46
|
+
var SchemaInstance = structuredTransform(Zod.string(), parseString);
|
47
|
+
var isInstant = _isInstant;
|
48
|
+
var now = (clock = DefaultClock) => {
|
49
|
+
return clock.instant();
|
50
|
+
};
|
51
|
+
var add = (element, duration) => {
|
52
|
+
return from(element).add(fromDuration(duration));
|
53
|
+
};
|
54
|
+
var subtract = (element, duration) => {
|
55
|
+
return from(element).subtract(fromDuration(duration));
|
56
|
+
};
|
57
|
+
var until = (element, other) => {
|
58
|
+
return from(element).until(from(other));
|
59
|
+
};
|
60
|
+
var round = (element, unit) => {
|
61
|
+
return from(element).round({ smallestUnit: unit });
|
62
|
+
};
|
63
|
+
var isEqual = (element, other) => {
|
64
|
+
return EqualBy(from(element), from(other));
|
65
|
+
};
|
66
|
+
var isBefore = (element, other) => {
|
67
|
+
return CompareBy(from(element), from(other)) < 0;
|
68
|
+
};
|
69
|
+
var isAfter = (element, other) => {
|
70
|
+
return CompareBy(from(element), from(other)) > 0;
|
71
|
+
};
|
72
|
+
export {
|
73
|
+
CompareBy,
|
74
|
+
EqualBy,
|
75
|
+
Namespace,
|
76
|
+
SchemaInstance,
|
77
|
+
SchemaLiteral,
|
78
|
+
add,
|
79
|
+
from,
|
80
|
+
fromString,
|
81
|
+
isAfter,
|
82
|
+
isBefore,
|
83
|
+
isEqual,
|
84
|
+
isInstant,
|
85
|
+
now,
|
86
|
+
parseString,
|
87
|
+
round,
|
88
|
+
subtract,
|
89
|
+
toDate,
|
90
|
+
toLiteral,
|
91
|
+
until
|
92
|
+
};
|
93
|
+
//# sourceMappingURL=instant.js.map
|
@@ -0,0 +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, DurationLike, from as fromDuration } from '@bessemer/cornerstone/temporal/duration'\nimport { _isInstant, instantToLiteral, TimeUnit } from '@bessemer/cornerstone/temporal/chrono'\nimport { isString } from '@bessemer/cornerstone/string'\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 const toLiteral = (value: InstantLike) => {\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;AAGlB,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;AAEO,IAAM,YAAY,CAAC,UAAuB;AAC/C,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":[]}
|
@@ -0,0 +1,49 @@
|
|
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
|
+
export type PlainTime = Temporal.PlainTime;
|
12
|
+
export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"plain-time">;
|
13
|
+
export type PlainTimeLiteral = NominalType<string, typeof Namespace>;
|
14
|
+
export type PlainTimeBuilder = {
|
15
|
+
hour?: number;
|
16
|
+
minute?: number;
|
17
|
+
second?: number;
|
18
|
+
millisecond?: number;
|
19
|
+
microsecond?: number;
|
20
|
+
nanosecond?: number;
|
21
|
+
};
|
22
|
+
export type PlainTimeLike = PlainTime | PlainTimeLiteral | PlainTimeBuilder;
|
23
|
+
export declare const from: (value: PlainTimeLike) => PlainTime;
|
24
|
+
export declare const CompareBy: Comparator<PlainTime>;
|
25
|
+
export declare const EqualBy: import("@bessemer/cornerstone/equalitor").Equalitor<Temporal.PlainTime>;
|
26
|
+
export declare const parseString: (value: string) => Result<PlainTime, ErrorEvent>;
|
27
|
+
export declare const fromString: (value: string) => PlainTime;
|
28
|
+
export declare const fromDuration: (duration: DurationLike) => PlainTime;
|
29
|
+
export declare const fromInstant: (instant: InstantLike, zone: TimeZoneId) => PlainTime;
|
30
|
+
export declare const toLiteral: (likeValue: PlainTimeLike) => PlainTimeLiteral;
|
31
|
+
export declare const SchemaLiteral: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<PlainTimeLiteral, string>>;
|
32
|
+
export declare const SchemaInstance: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<Temporal.PlainTime, string>>;
|
33
|
+
export declare const isPlainTime: (value: unknown) => value is PlainTime;
|
34
|
+
export declare const now: (clock?: {
|
35
|
+
readonly zone: TimeZoneId;
|
36
|
+
instant(): import("@bessemer/cornerstone/temporal/instant").Instant;
|
37
|
+
withZone(zone: TimeZoneId): import("@bessemer/cornerstone/temporal/clock").Clock;
|
38
|
+
}) => PlainTime;
|
39
|
+
export declare const merge: (element: PlainTimeLike, builder: PlainTimeBuilder) => PlainTime;
|
40
|
+
export declare const add: (element: PlainTimeLike, duration: DurationLike) => PlainTime;
|
41
|
+
export declare const subtract: (element: PlainTimeLike, duration: DurationLike) => PlainTime;
|
42
|
+
export declare const until: (element: PlainTimeLike, other: PlainTimeLike) => Duration;
|
43
|
+
export declare const round: (element: PlainTimeLike, unit: TimeUnit) => PlainTime;
|
44
|
+
export declare const isEqual: (element: PlainTimeLike, other: PlainTimeLike) => boolean;
|
45
|
+
export declare const isBefore: (element: PlainTimeLike, other: PlainTimeLike) => boolean;
|
46
|
+
export declare const isAfter: (element: PlainTimeLike, other: PlainTimeLike) => boolean;
|
47
|
+
export declare const Midnight: Temporal.PlainTime;
|
48
|
+
export declare const Noon: Temporal.PlainTime;
|
49
|
+
//# sourceMappingURL=plain-time.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"plain-time.d.ts","sourceRoot":"","sources":["../../src/temporal/plain-time.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,111 @@
|
|
1
|
+
// src/temporal/plain-time.ts
|
2
|
+
import { Temporal } from "@js-temporal/polyfill";
|
3
|
+
import { namespace } 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
|
+
var Namespace = namespace("plain-time");
|
15
|
+
var from = (value) => {
|
16
|
+
if (value instanceof Temporal.PlainTime) {
|
17
|
+
return value;
|
18
|
+
}
|
19
|
+
if (isString(value)) {
|
20
|
+
return fromString(value);
|
21
|
+
}
|
22
|
+
return Temporal.PlainTime.from(value);
|
23
|
+
};
|
24
|
+
var CompareBy = (first, second) => Temporal.PlainTime.compare(first, second);
|
25
|
+
var EqualBy = fromComparator(CompareBy);
|
26
|
+
var parseString = (value) => {
|
27
|
+
try {
|
28
|
+
return success(Temporal.PlainTime.from(value));
|
29
|
+
} catch (e) {
|
30
|
+
if (!isError(e)) {
|
31
|
+
throw e;
|
32
|
+
}
|
33
|
+
return failure(invalidValue(value, { namespace: Namespace, message: e.message }));
|
34
|
+
}
|
35
|
+
};
|
36
|
+
var fromString = (value) => {
|
37
|
+
return unpackResult(parseString(value));
|
38
|
+
};
|
39
|
+
var fromDuration = (duration) => {
|
40
|
+
return Midnight.add(_fromDuration(duration));
|
41
|
+
};
|
42
|
+
var fromInstant = (instant, zone) => {
|
43
|
+
return _fromInstant(instant).toZonedDateTimeISO(zone).toPlainTime();
|
44
|
+
};
|
45
|
+
var toLiteral = (likeValue) => {
|
46
|
+
const value = from(likeValue);
|
47
|
+
if (value.second === 0 && value.millisecond === 0 && value.microsecond === 0 && value.nanosecond === 0) {
|
48
|
+
return `${value.hour.toString().padStart(2, "0")}:${value.minute.toString().padStart(2, "0")}`;
|
49
|
+
}
|
50
|
+
return value.toString();
|
51
|
+
};
|
52
|
+
var SchemaLiteral = structuredTransform(Zod.string(), (it) => mapResult(parseString(it), toLiteral));
|
53
|
+
var SchemaInstance = structuredTransform(Zod.string(), parseString);
|
54
|
+
var isPlainTime = (value) => {
|
55
|
+
return value instanceof Temporal.PlainTime;
|
56
|
+
};
|
57
|
+
var now = (clock = DefaultClock) => {
|
58
|
+
return fromInstant(clock.instant(), clock.zone);
|
59
|
+
};
|
60
|
+
var merge = (element, builder) => {
|
61
|
+
return from(element).with(builder);
|
62
|
+
};
|
63
|
+
var add = (element, duration) => {
|
64
|
+
return from(element).add(_fromDuration(duration));
|
65
|
+
};
|
66
|
+
var subtract = (element, duration) => {
|
67
|
+
return from(element).subtract(_fromDuration(duration));
|
68
|
+
};
|
69
|
+
var until = (element, other) => {
|
70
|
+
return from(element).until(from(other));
|
71
|
+
};
|
72
|
+
var round = (element, unit) => {
|
73
|
+
return from(element).round({ smallestUnit: unit });
|
74
|
+
};
|
75
|
+
var isEqual = (element, other) => {
|
76
|
+
return EqualBy(from(element), from(other));
|
77
|
+
};
|
78
|
+
var isBefore = (element, other) => {
|
79
|
+
return CompareBy(from(element), from(other)) < 0;
|
80
|
+
};
|
81
|
+
var isAfter = (element, other) => {
|
82
|
+
return CompareBy(from(element), from(other)) > 0;
|
83
|
+
};
|
84
|
+
var Midnight = from({ nanosecond: 0 });
|
85
|
+
var Noon = from({ hour: 12 });
|
86
|
+
export {
|
87
|
+
CompareBy,
|
88
|
+
EqualBy,
|
89
|
+
Midnight,
|
90
|
+
Namespace,
|
91
|
+
Noon,
|
92
|
+
SchemaInstance,
|
93
|
+
SchemaLiteral,
|
94
|
+
add,
|
95
|
+
from,
|
96
|
+
fromDuration,
|
97
|
+
fromInstant,
|
98
|
+
fromString,
|
99
|
+
isAfter,
|
100
|
+
isBefore,
|
101
|
+
isEqual,
|
102
|
+
isPlainTime,
|
103
|
+
merge,
|
104
|
+
now,
|
105
|
+
parseString,
|
106
|
+
round,
|
107
|
+
subtract,
|
108
|
+
toLiteral,
|
109
|
+
until
|
110
|
+
};
|
111
|
+
//# sourceMappingURL=plain-time.js.map
|
@@ -0,0 +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, 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'\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 const toLiteral = (likeValue: PlainTimeLike): PlainTimeLiteral => {\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":[]}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { Result } from '@bessemer/cornerstone/result';
|
2
|
+
import Zod from 'zod';
|
3
|
+
import { NominalType } from '@bessemer/cornerstone/types';
|
4
|
+
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
5
|
+
export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"time-zone-id">;
|
6
|
+
export type TimeZoneId = NominalType<string, typeof Namespace>;
|
7
|
+
export declare const parseString: (value: string) => Result<TimeZoneId, ErrorEvent>;
|
8
|
+
export declare const fromString: (value: string) => TimeZoneId;
|
9
|
+
export declare const Schema: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<TimeZoneId, string>>;
|
10
|
+
export declare const Utc: TimeZoneId;
|
11
|
+
export declare const SystemDefault: TimeZoneId;
|
12
|
+
//# sourceMappingURL=time-zone-id.d.ts.map
|
@@ -0,0 +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,gFAA4B,CAAA;AAClD,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,UAAU,GAAI,OAAO,MAAM,KAAG,UAE1C,CAAA;AAED,eAAO,MAAM,MAAM,kEAAiD,CAAA;AAEpE,eAAO,MAAM,GAAG,EAAY,UAAU,CAAA;AACtC,eAAO,MAAM,aAAa,EAAuD,UAAU,CAAA"}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
// src/temporal/time-zone-id.ts
|
2
|
+
import { failure, success } from "@bessemer/cornerstone/result";
|
3
|
+
import Zod from "zod";
|
4
|
+
import { namespace } from "@bessemer/cornerstone/resource-key";
|
5
|
+
import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
|
6
|
+
import { isError } from "@bessemer/cornerstone/error/error";
|
7
|
+
import { structuredTransform } from "@bessemer/cornerstone/zod-util";
|
8
|
+
var Namespace = namespace("time-zone-id");
|
9
|
+
var parseString = (value) => {
|
10
|
+
try {
|
11
|
+
const fmt = new Intl.DateTimeFormat(void 0, { timeZone: value });
|
12
|
+
return success(fmt.resolvedOptions().timeZone);
|
13
|
+
} catch (e) {
|
14
|
+
if (isError(e)) {
|
15
|
+
return failure(invalidValue(value, { namespace: Namespace, message: e.message }));
|
16
|
+
} else {
|
17
|
+
throw e;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
};
|
21
|
+
var fromString = (value) => {
|
22
|
+
return unpackResult(parseString(value));
|
23
|
+
};
|
24
|
+
var Schema = structuredTransform(Zod.string(), parseString);
|
25
|
+
var Utc = "UTC";
|
26
|
+
var SystemDefault = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
27
|
+
export {
|
28
|
+
Namespace,
|
29
|
+
Schema,
|
30
|
+
SystemDefault,
|
31
|
+
Utc,
|
32
|
+
fromString,
|
33
|
+
parseString
|
34
|
+
};
|
35
|
+
//# sourceMappingURL=time-zone-id.js.map
|
@@ -0,0 +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 { namespace } 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 = namespace('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 fromString = (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 SystemDefault = Intl.DateTimeFormat().resolvedOptions().timeZone as TimeZoneId\n"],"mappings":";AAAA,SAAS,SAAiB,eAAe;AACzC,OAAO,SAAS;AAEhB,SAAS,iBAAiB;AAC1B,SAAqB,cAAc,oBAAoB;AACvD,SAAS,eAAe;AACxB,SAAS,2BAA2B;AAE7B,IAAM,YAAY,UAAU,cAAc;AAG1C,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,aAAa,CAAC,UAA8B;AACvD,SAAO,aAAa,YAAY,KAAK,CAAC;AACxC;AAEO,IAAM,SAAS,oBAAoB,IAAI,OAAO,GAAG,WAAW;AAE5D,IAAM,MAAM;AACZ,IAAM,gBAAgB,KAAK,eAAe,EAAE,gBAAgB,EAAE;","names":[]}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { NominalType } from '@bessemer/cornerstone/types';
|
2
|
+
import { Duration, DurationLike } from '@bessemer/cornerstone/temporal/duration';
|
3
|
+
import { Result } from '@bessemer/cornerstone/result';
|
4
|
+
import Zod from 'zod';
|
5
|
+
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
6
|
+
import { Instant } from '@bessemer/cornerstone/temporal/instant';
|
7
|
+
import { TimeZoneId } from '@bessemer/cornerstone/temporal/time-zone-id';
|
8
|
+
export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"time-zone-offset">;
|
9
|
+
export type TimeZoneOffset = NominalType<number, typeof Namespace>;
|
10
|
+
export declare const parseMinutes: (value: number) => Result<TimeZoneOffset, ErrorEvent>;
|
11
|
+
export declare const parseDuration: (value: Duration) => Result<TimeZoneOffset, ErrorEvent>;
|
12
|
+
export declare const fromMinutes: (value: number) => TimeZoneOffset;
|
13
|
+
export declare const fromDuration: (value: DurationLike) => TimeZoneOffset;
|
14
|
+
export declare const fromTimeZone: (timeZone: TimeZoneId, instant: Instant) => TimeZoneOffset;
|
15
|
+
export declare const parseString: (value: string) => Result<TimeZoneOffset, ErrorEvent>;
|
16
|
+
export declare const fromString: (value: string) => TimeZoneOffset;
|
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
|
+
export declare const toDuration: (offset: TimeZoneOffset) => Duration;
|
19
|
+
export declare const toMilliseconds: (offset: TimeZoneOffset) => number;
|
20
|
+
export declare const toString: (offset: TimeZoneOffset) => string;
|
21
|
+
export declare const Utc: TimeZoneOffset;
|
22
|
+
//# sourceMappingURL=time-zone-offset.d.ts.map
|
@@ -0,0 +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,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"}
|