@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.
Files changed (189) hide show
  1. package/dist/array.d.ts +62 -1
  2. package/dist/array.d.ts.map +1 -1
  3. package/dist/array.js +24 -11
  4. package/dist/array.js.map +1 -1
  5. package/dist/aspect-ratio.d.ts +1 -1
  6. package/dist/aspect-ratio.d.ts.map +1 -1
  7. package/dist/aspect-ratio.js +4 -4
  8. package/dist/aspect-ratio.js.map +1 -1
  9. package/dist/async-value.d.ts +7 -1
  10. package/dist/async-value.d.ts.map +1 -1
  11. package/dist/async-value.js +26 -1
  12. package/dist/async-value.js.map +1 -1
  13. package/dist/cache.js +1 -1
  14. package/dist/cache.js.map +1 -1
  15. package/dist/equalitor.d.ts +1 -0
  16. package/dist/equalitor.d.ts.map +1 -1
  17. package/dist/equalitor.js +3 -0
  18. package/dist/equalitor.js.map +1 -1
  19. package/dist/error/error-cause.d.ts +35 -0
  20. package/dist/error/error-cause.d.ts.map +1 -0
  21. package/dist/error/error-cause.js +97 -0
  22. package/dist/error/error-cause.js.map +1 -0
  23. package/dist/error/error-code.d.ts +17 -0
  24. package/dist/error/error-code.d.ts.map +1 -0
  25. package/dist/error/error-code.js +32 -0
  26. package/dist/error/error-code.js.map +1 -0
  27. package/dist/error/error-event.d.ts +29 -48
  28. package/dist/error/error-event.d.ts.map +1 -1
  29. package/dist/error/error-event.js +62 -151
  30. package/dist/error/error-event.js.map +1 -1
  31. package/dist/error/error-type.d.ts +1 -0
  32. package/dist/error/error-type.d.ts.map +1 -1
  33. package/dist/error/error-type.js +4 -2
  34. package/dist/error/error-type.js.map +1 -1
  35. package/dist/function.d.ts +1 -1
  36. package/dist/function.d.ts.map +1 -1
  37. package/dist/function.js +3 -2
  38. package/dist/function.js.map +1 -1
  39. package/dist/glob.d.ts +1 -1
  40. package/dist/glob.d.ts.map +1 -1
  41. package/dist/glob.js +4 -4
  42. package/dist/glob.js.map +1 -1
  43. package/dist/hex-code.d.ts +1 -1
  44. package/dist/hex-code.d.ts.map +1 -1
  45. package/dist/hex-code.js +4 -4
  46. package/dist/hex-code.js.map +1 -1
  47. package/dist/index.d.ts +10 -5
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +15 -5
  50. package/dist/index.js.map +1 -1
  51. package/dist/intl/country-code.d.ts +1 -1
  52. package/dist/intl/country-code.d.ts.map +1 -1
  53. package/dist/intl/country-code.js +4 -4
  54. package/dist/intl/country-code.js.map +1 -1
  55. package/dist/intl/country-subdivision-code.d.ts +1 -1
  56. package/dist/intl/country-subdivision-code.d.ts.map +1 -1
  57. package/dist/intl/country-subdivision-code.js +4 -4
  58. package/dist/intl/country-subdivision-code.js.map +1 -1
  59. package/dist/intl/currency-code.d.ts +1 -1
  60. package/dist/intl/currency-code.d.ts.map +1 -1
  61. package/dist/intl/currency-code.js +4 -4
  62. package/dist/intl/currency-code.js.map +1 -1
  63. package/dist/intl/language-code.d.ts +1 -1
  64. package/dist/intl/language-code.d.ts.map +1 -1
  65. package/dist/intl/language-code.js +4 -4
  66. package/dist/intl/language-code.js.map +1 -1
  67. package/dist/intl/locale.d.ts +1 -1
  68. package/dist/intl/locale.d.ts.map +1 -1
  69. package/dist/intl/locale.js +6 -6
  70. package/dist/intl/locale.js.map +1 -1
  71. package/dist/mime-type.d.ts +1 -1
  72. package/dist/mime-type.d.ts.map +1 -1
  73. package/dist/mime-type.js +4 -4
  74. package/dist/mime-type.js.map +1 -1
  75. package/dist/net/domain-name.d.ts +10 -0
  76. package/dist/net/domain-name.d.ts.map +1 -0
  77. package/dist/net/domain-name.js +30 -0
  78. package/dist/net/domain-name.js.map +1 -0
  79. package/dist/net/ipv4-address.d.ts +10 -0
  80. package/dist/net/ipv4-address.d.ts.map +1 -0
  81. package/dist/net/ipv4-address.js +30 -0
  82. package/dist/net/ipv4-address.js.map +1 -0
  83. package/dist/net/ipv6-address.d.ts +10 -0
  84. package/dist/net/ipv6-address.d.ts.map +1 -0
  85. package/dist/net/ipv6-address.js +30 -0
  86. package/dist/net/ipv6-address.js.map +1 -0
  87. package/dist/net/uri-host-name.d.ts +12 -0
  88. package/dist/net/uri-host-name.d.ts.map +1 -0
  89. package/dist/net/uri-host-name.js +44 -0
  90. package/dist/net/uri-host-name.js.map +1 -0
  91. package/dist/net/uri.d.ts +249 -0
  92. package/dist/net/uri.d.ts.map +1 -0
  93. package/dist/net/uri.js +444 -0
  94. package/dist/net/uri.js.map +1 -0
  95. package/dist/net/url.d.ts +58 -0
  96. package/dist/net/url.d.ts.map +1 -0
  97. package/dist/net/url.js +211 -0
  98. package/dist/net/url.js.map +1 -0
  99. package/dist/object/object-path.d.ts +1 -1
  100. package/dist/object/object-path.d.ts.map +1 -1
  101. package/dist/object/object-path.js +4 -4
  102. package/dist/object/object-path.js.map +1 -1
  103. package/dist/object/type-path.d.ts +1 -1
  104. package/dist/object/type-path.d.ts.map +1 -1
  105. package/dist/object/type-path.js +3 -3
  106. package/dist/object/type-path.js.map +1 -1
  107. package/dist/object.d.ts +1 -1
  108. package/dist/object.d.ts.map +1 -1
  109. package/dist/object.js +8 -6
  110. package/dist/object.js.map +1 -1
  111. package/dist/property.d.ts +2 -3
  112. package/dist/property.d.ts.map +1 -1
  113. package/dist/property.js.map +1 -1
  114. package/dist/resource-key.d.ts +7 -5
  115. package/dist/resource-key.d.ts.map +1 -1
  116. package/dist/resource-key.js +27 -15
  117. package/dist/resource-key.js.map +1 -1
  118. package/dist/result.d.ts.map +1 -1
  119. package/dist/result.js +3 -3
  120. package/dist/result.js.map +1 -1
  121. package/dist/string.d.ts +10 -21
  122. package/dist/string.d.ts.map +1 -1
  123. package/dist/string.js +54 -25
  124. package/dist/string.js.map +1 -1
  125. package/dist/tag.d.ts +2 -2
  126. package/dist/tag.d.ts.map +1 -1
  127. package/dist/tag.js +11 -12
  128. package/dist/tag.js.map +1 -1
  129. package/dist/temporal/duration.d.ts +4 -5
  130. package/dist/temporal/duration.d.ts.map +1 -1
  131. package/dist/temporal/duration.js +3 -7
  132. package/dist/temporal/duration.js.map +1 -1
  133. package/dist/temporal/instant.d.ts +4 -5
  134. package/dist/temporal/instant.d.ts.map +1 -1
  135. package/dist/temporal/instant.js +3 -7
  136. package/dist/temporal/instant.js.map +1 -1
  137. package/dist/temporal/plain-date-time.d.ts +4 -5
  138. package/dist/temporal/plain-date-time.d.ts.map +1 -1
  139. package/dist/temporal/plain-date-time.js +3 -7
  140. package/dist/temporal/plain-date-time.js.map +1 -1
  141. package/dist/temporal/plain-date.d.ts +8 -9
  142. package/dist/temporal/plain-date.d.ts.map +1 -1
  143. package/dist/temporal/plain-date.js +3 -7
  144. package/dist/temporal/plain-date.js.map +1 -1
  145. package/dist/temporal/plain-time.d.ts +6 -7
  146. package/dist/temporal/plain-time.d.ts.map +1 -1
  147. package/dist/temporal/plain-time.js +4 -8
  148. package/dist/temporal/plain-time.js.map +1 -1
  149. package/dist/temporal/time-zone-id.d.ts +1 -1
  150. package/dist/temporal/time-zone-id.d.ts.map +1 -1
  151. package/dist/temporal/time-zone-id.js +4 -4
  152. package/dist/temporal/time-zone-id.js.map +1 -1
  153. package/dist/temporal/time-zone-offset.d.ts +1 -1
  154. package/dist/temporal/time-zone-offset.d.ts.map +1 -1
  155. package/dist/temporal/time-zone-offset.js +4 -4
  156. package/dist/temporal/time-zone-offset.js.map +1 -1
  157. package/dist/temporal/zoned-date-time.d.ts +51 -0
  158. package/dist/temporal/zoned-date-time.d.ts.map +1 -0
  159. package/dist/temporal/zoned-date-time.js +106 -0
  160. package/dist/temporal/zoned-date-time.js.map +1 -0
  161. package/dist/types.d.ts +2 -2
  162. package/dist/types.d.ts.map +1 -1
  163. package/dist/{ulid.d.ts → uuid/ulid.d.ts} +2 -2
  164. package/dist/uuid/ulid.d.ts.map +1 -0
  165. package/dist/uuid/ulid.js +29 -0
  166. package/dist/uuid/ulid.js.map +1 -0
  167. package/dist/uuid/uuid-v4.d.ts +11 -0
  168. package/dist/uuid/uuid-v4.d.ts.map +1 -0
  169. package/dist/{uuid.js → uuid/uuid-v4.js} +11 -11
  170. package/dist/uuid/uuid-v4.js.map +1 -0
  171. package/dist/uuid/uuid-v7.d.ts +18 -0
  172. package/dist/uuid/uuid-v7.d.ts.map +1 -0
  173. package/dist/uuid/uuid-v7.js +44 -0
  174. package/dist/uuid/uuid-v7.js.map +1 -0
  175. package/package.json +1 -1
  176. package/dist/ulid.d.ts.map +0 -1
  177. package/dist/ulid.js +0 -29
  178. package/dist/ulid.js.map +0 -1
  179. package/dist/uri.d.ts +0 -52
  180. package/dist/uri.d.ts.map +0 -1
  181. package/dist/uri.js +0 -222
  182. package/dist/uri.js.map +0 -1
  183. package/dist/url.d.ts +0 -26
  184. package/dist/url.d.ts.map +0 -1
  185. package/dist/url.js +0 -120
  186. package/dist/url.js.map +0 -1
  187. package/dist/uuid.d.ts +0 -11
  188. package/dist/uuid.d.ts.map +0 -1
  189. 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?: number;
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":"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"}
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 { namespace } from "@bessemer/cornerstone/resource-key";
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 = namespace("plain-time");
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 fromString(value);
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({ nanosecond: 0 });
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 { namespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { failure, mapResult, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { isError } from '@bessemer/cornerstone/error/error'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport Zod from 'zod'\nimport { Default as DefaultClock } from '@bessemer/cornerstone/temporal/clock'\nimport { Duration, DurationLike, from as _fromDuration } from '@bessemer/cornerstone/temporal/duration'\nimport { from as _fromInstant, InstantLike } from '@bessemer/cornerstone/temporal/instant'\nimport { TimeZoneId } from '@bessemer/cornerstone/temporal/time-zone-id'\nimport { TimeUnit } from '@bessemer/cornerstone/temporal/chrono'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { isNil } from '@bessemer/cornerstone/object'\nimport { Locale } from '@bessemer/cornerstone/intl/locale'\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 function from(value: PlainTimeLike): PlainTime\nexport function from(value: PlainTimeLike | null): PlainTime | null\nexport function from(value: PlainTimeLike | undefined): PlainTime | undefined\nexport function from(value: PlainTimeLike | null | undefined): PlainTime | null | undefined\nexport function from(value: PlainTimeLike | 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 fromString(value)\n }\n\n return Temporal.PlainTime.from(value)\n}\n\nexport const CompareBy: Comparator<PlainTime> = (first: PlainTime, second: PlainTime): number => Temporal.PlainTime.compare(first, second)\nexport const EqualBy = fromComparator(CompareBy)\n\nexport const parseString = (value: string): Result<PlainTime, ErrorEvent> => {\n try {\n return success(Temporal.PlainTime.from(value))\n } catch (e) {\n if (!isError(e)) {\n throw e\n }\n\n return failure(invalidValue(value, { namespace: Namespace, message: e.message }))\n }\n}\n\nexport const fromString = (value: string): PlainTime => {\n return unpackResult(parseString(value))\n}\n\nexport const fromDuration = (duration: DurationLike): PlainTime => {\n return Midnight.add(_fromDuration(duration))\n}\n\nexport const fromInstant = (instant: InstantLike, zone: TimeZoneId): PlainTime => {\n return _fromInstant(instant).toZonedDateTimeISO(zone).toPlainTime()\n}\n\nexport function toLiteral(likeValue: PlainTimeLike): PlainTimeLiteral\nexport function toLiteral(likeValue: PlainTimeLike | null): PlainTimeLiteral | null\nexport function toLiteral(likeValue: PlainTimeLike | undefined): PlainTimeLiteral | undefined\nexport function toLiteral(likeValue: PlainTimeLike | null | undefined): PlainTimeLiteral | null | undefined\nexport function toLiteral(likeValue: PlainTimeLike | null | undefined): PlainTimeLiteral | null | undefined {\n if (isNil(likeValue)) {\n return likeValue\n }\n\n const value = from(likeValue)\n\n if (value.second === 0 && value.millisecond === 0 && value.microsecond === 0 && value.nanosecond === 0) {\n return `${value.hour.toString().padStart(2, '0')}:${value.minute.toString().padStart(2, '0')}` as PlainTimeLiteral\n }\n\n return value.toString() as PlainTimeLiteral\n}\n\nexport const SchemaLiteral = structuredTransform(Zod.string(), (it: string) => mapResult(parseString(it), (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: 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({ nanosecond: 0 })\nexport const Noon = from({ hour: 12 })\n"],"mappings":"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","names":["it"]}
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 fromString: (value: string) => TimeZoneId;
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,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,gBAAgB,QAAO,UAEnC,CAAA"}
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 { namespace } from "@bessemer/cornerstone/resource-key";
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 = namespace("time-zone-id");
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 fromString = (value) => {
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
- fromString,
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 { 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 getSystemDefault = (): TimeZoneId => {\n return Intl.DateTimeFormat().resolvedOptions().timeZone as TimeZoneId\n}\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,mBAAmB,MAAkB;AAChD,SAAO,KAAK,eAAe,EAAE,gBAAgB,EAAE;AACjD;","names":[]}
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 fromString: (value: string) => TimeZoneOffset;
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,oFAAgC,CAAA;AACtD,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAIlE,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,cAAc,EAAE,UAAU,CAU7E,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,QAAQ,KAAG,MAAM,CAAC,cAAc,EAAE,UAAU,CAEhF,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,cAE3C,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,YAAY,KAAG,cAElD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,UAAU,UAAU,EAAE,SAAS,OAAO,KAAG,cAsBrE,CAAA;AAGD,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,cAAc,EAAE,UAAU,CAyE5E,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,cAE1C,CAAA;AAED,eAAO,MAAM,MAAM,qKAA+G,CAAA;AAElI,eAAO,MAAM,UAAU,GAAI,QAAQ,cAAc,KAAG,QAEnD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,QAAQ,cAAc,KAAG,MAEvD,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,QAAQ,cAAc,KAAG,MASjD,CAAA;AAED,eAAO,MAAM,GAAG,EAAQ,cAAc,CAAA"}
1
+ {"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 { namespace } from "@bessemer/cornerstone/resource-key";
15
+ import { createNamespace } from "@bessemer/cornerstone/resource-key";
16
16
  import { structuredTransform } from "@bessemer/cornerstone/zod-util";
17
- var Namespace = namespace("time-zone-offset");
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 fromString = (value) => {
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":"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,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAA;AAC/F,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAE/F,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAA;AAClD,eAAO,MAAM,SAAS,mFAAqC,CAAA;AAC3D,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AACxE,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GACjD,gBAAgB,GAAG;IACjB,QAAQ,EAAE,UAAU,CAAA;CACrB,CAAA;AAEH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,oBAAoB,GAAG,oBAAoB,CAAA;AAE3F,wBAAgB,IAAI,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,aAAa,CAAA;AACtE,wBAAgB,IAAI,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAAA;AACpF,wBAAgB,IAAI,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAA;AAC9F,wBAAgB,IAAI,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,GAAG,IAAI,GAAG,SAAS,CAAA;AAiB5G,eAAO,MAAM,SAAS,EAAE,UAAU,CAAC,aAAa,CACD,CAAA;AAC/C,eAAO,MAAM,OAAO,6EAA4B,CAAA;AAEhD,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,aAAa,EAAE,UAAU,CAU3E,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,SAAS,WAAW,EAAE,MAAM,UAAU,KAAG,aAEpE,CAAA;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,iBAAiB,GAAG,oBAAoB,CAAA;AAC7E,wBAAgB,SAAS,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI,GAAG,oBAAoB,GAAG,IAAI,CAAA;AAC3F,wBAAgB,SAAS,CAAC,SAAS,EAAE,iBAAiB,GAAG,SAAS,GAAG,oBAAoB,GAAG,SAAS,CAAA;AACrG,wBAAgB,SAAS,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,oBAAoB,GAAG,IAAI,GAAG,SAAS,CAAA;AAUnH,eAAO,MAAM,aAAa,4EAAuG,CAAA;AACjI,eAAO,MAAM,cAAc,8EAAiD,CAAA;AAE5E,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,aAEzD,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,MAAM,UAAU,EAAE;;;;CAAoB,KAAG,aAE5D,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,SAAS,iBAAiB,EAAE,SAAS,OAAO,CAAC,oBAAoB,CAAC,KAAG,aAE1F,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,SAAS,iBAAiB,EAAE,UAAU,YAAY,KAAG,aAExE,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,SAAS,iBAAiB,EAAE,UAAU,YAAY,KAAG,aAE7E,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,SAAS,iBAAiB,EAAE,OAAO,iBAAiB,KAAG,QAE5E,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,SAAS,iBAAiB,EAAE,MAAM,QAAQ,KAAG,aAElE,CAAA;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAA;AACtF,wBAAgB,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAA;AACpG,wBAAgB,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,EAAE,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAA;AAS9G,eAAO,MAAM,QAAQ,GAAI,SAAS,iBAAiB,EAAE,OAAO,iBAAiB,KAAG,OAE/E,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,SAAS,iBAAiB,EAAE,OAAO,iBAAiB,KAAG,OAE9E,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG,iBAAiB,CAAA"}
@@ -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 DeepPartial<T> = {
16
- [P in keyof T]?: T[P] extends Array<infer U> ? DeepPartial<U>[] : T[P] extends object | undefined ? DeepPartial<T[P]> : T[P];
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;
@@ -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,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC7H,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"}
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 parseString: (value: string) => Result<Ulid, ErrorEvent>;
8
- export declare const fromString: (value: string) => Ulid;
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"}