@bessemer/cornerstone 0.5.109 → 0.5.113

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 (123) hide show
  1. package/dist/array.d.ts +4 -3
  2. package/dist/array.d.ts.map +1 -1
  3. package/dist/array.js +18 -5
  4. package/dist/array.js.map +1 -1
  5. package/dist/either.d.ts +23 -40
  6. package/dist/either.d.ts.map +1 -1
  7. package/dist/either.js +50 -88
  8. package/dist/either.js.map +1 -1
  9. package/dist/error/error-event.d.ts.map +1 -1
  10. package/dist/error/error-event.js +3 -2
  11. package/dist/error/error-event.js.map +1 -1
  12. package/dist/error/error.d.ts +10 -0
  13. package/dist/error/error.d.ts.map +1 -1
  14. package/dist/error/error.js +21 -2
  15. package/dist/error/error.js.map +1 -1
  16. package/dist/generators.d.ts +4 -0
  17. package/dist/generators.d.ts.map +1 -0
  18. package/dist/generators.js +24 -0
  19. package/dist/generators.js.map +1 -0
  20. package/dist/index.d.ts +6 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +10 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/json.d.ts +2 -1
  25. package/dist/json.d.ts.map +1 -1
  26. package/dist/json.js.map +1 -1
  27. package/dist/math.d.ts +3 -0
  28. package/dist/math.d.ts.map +1 -1
  29. package/dist/math.js +11 -1
  30. package/dist/math.js.map +1 -1
  31. package/dist/mime-type.d.ts +4 -3
  32. package/dist/mime-type.d.ts.map +1 -1
  33. package/dist/mime-type.js +9 -6
  34. package/dist/mime-type.js.map +1 -1
  35. package/dist/net/content-type.d.ts +21 -0
  36. package/dist/net/content-type.d.ts.map +1 -0
  37. package/dist/net/content-type.js +120 -0
  38. package/dist/net/content-type.js.map +1 -0
  39. package/dist/net/fetch.d.ts +18 -0
  40. package/dist/net/fetch.d.ts.map +1 -0
  41. package/dist/net/fetch.js +65 -0
  42. package/dist/net/fetch.js.map +1 -0
  43. package/dist/net/http-method.d.ts +18 -0
  44. package/dist/net/http-method.d.ts.map +1 -0
  45. package/dist/net/http-method.js +37 -0
  46. package/dist/net/http-method.js.map +1 -0
  47. package/dist/net/http-request.d.ts +12 -0
  48. package/dist/net/http-request.d.ts.map +1 -0
  49. package/dist/net/http-request.js +1 -0
  50. package/dist/net/http-request.js.map +1 -0
  51. package/dist/net/uri-host-name.d.ts +1 -1
  52. package/dist/net/uri-host-name.d.ts.map +1 -1
  53. package/dist/net/uri-host-name.js +6 -6
  54. package/dist/net/uri-host-name.js.map +1 -1
  55. package/dist/net/uri.d.ts +12 -4
  56. package/dist/net/uri.d.ts.map +1 -1
  57. package/dist/net/uri.js +87 -36
  58. package/dist/net/uri.js.map +1 -1
  59. package/dist/net/url.d.ts +9 -6
  60. package/dist/net/url.d.ts.map +1 -1
  61. package/dist/net/url.js +58 -21
  62. package/dist/net/url.js.map +1 -1
  63. package/dist/object/object-diff.d.ts.map +1 -1
  64. package/dist/object/object-diff.js.map +1 -1
  65. package/dist/object/type-path.d.ts.map +1 -1
  66. package/dist/object/type-path.js +12 -14
  67. package/dist/object/type-path.js.map +1 -1
  68. package/dist/object.d.ts +2 -0
  69. package/dist/object.d.ts.map +1 -1
  70. package/dist/object.js +17 -1
  71. package/dist/object.js.map +1 -1
  72. package/dist/promise.d.ts +3 -1
  73. package/dist/promise.d.ts.map +1 -1
  74. package/dist/promise.js +9 -0
  75. package/dist/promise.js.map +1 -1
  76. package/dist/proxy.d.ts +2 -0
  77. package/dist/proxy.d.ts.map +1 -0
  78. package/dist/proxy.js +20 -0
  79. package/dist/proxy.js.map +1 -0
  80. package/dist/range.d.ts +0 -1
  81. package/dist/range.d.ts.map +1 -1
  82. package/dist/range.js.map +1 -1
  83. package/dist/result.d.ts +18 -20
  84. package/dist/result.d.ts.map +1 -1
  85. package/dist/result.js +41 -61
  86. package/dist/result.js.map +1 -1
  87. package/dist/retry.d.ts.map +1 -1
  88. package/dist/retry.js +3 -3
  89. package/dist/retry.js.map +1 -1
  90. package/dist/sql/sql-expression-parser.d.ts.map +1 -1
  91. package/dist/sql/sql-expression-parser.js +5 -5
  92. package/dist/sql/sql-expression-parser.js.map +1 -1
  93. package/dist/string.d.ts +1 -0
  94. package/dist/string.d.ts.map +1 -1
  95. package/dist/string.js +4 -0
  96. package/dist/string.js.map +1 -1
  97. package/dist/temporal/duration.d.ts.map +1 -1
  98. package/dist/temporal/duration.js +2 -1
  99. package/dist/temporal/duration.js.map +1 -1
  100. package/dist/temporal/instant.d.ts.map +1 -1
  101. package/dist/temporal/instant.js +2 -1
  102. package/dist/temporal/instant.js.map +1 -1
  103. package/dist/temporal/plain-date-time.d.ts.map +1 -1
  104. package/dist/temporal/plain-date-time.js +2 -1
  105. package/dist/temporal/plain-date-time.js.map +1 -1
  106. package/dist/temporal/plain-date.d.ts.map +1 -1
  107. package/dist/temporal/plain-date.js +2 -1
  108. package/dist/temporal/plain-date.js.map +1 -1
  109. package/dist/temporal/plain-time.d.ts.map +1 -1
  110. package/dist/temporal/plain-time.js +2 -1
  111. package/dist/temporal/plain-time.js.map +1 -1
  112. package/dist/temporal/zoned-date-time.d.ts.map +1 -1
  113. package/dist/temporal/zoned-date-time.js +2 -1
  114. package/dist/temporal/zoned-date-time.js.map +1 -1
  115. package/dist/types.d.ts +23 -0
  116. package/dist/types.d.ts.map +1 -1
  117. package/dist/types.js +6 -0
  118. package/dist/types.js.map +1 -1
  119. package/dist/zod-util.d.ts +55 -6
  120. package/dist/zod-util.d.ts.map +1 -1
  121. package/dist/zod-util.js +99 -11
  122. package/dist/zod-util.js.map +1 -1
  123. package/package.json +2 -2
package/dist/proxy.js ADDED
@@ -0,0 +1,20 @@
1
+ // src/proxy.ts
2
+ import { isFunction } from "@bessemer/cornerstone/function";
3
+ var extend = (target, extensions) => {
4
+ return new Proxy(target, {
5
+ get(target2, prop, receiver) {
6
+ if (prop in extensions) {
7
+ return extensions[prop];
8
+ }
9
+ const value = Reflect.get(target2, prop, receiver);
10
+ if (isFunction(value)) {
11
+ return value.bind(target2);
12
+ }
13
+ return value;
14
+ }
15
+ });
16
+ };
17
+ export {
18
+ extend
19
+ };
20
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/proxy.ts"],"sourcesContent":["import { isFunction } from '@bessemer/cornerstone/function'\n\nexport const extend = <Target extends object, E extends Record<string, unknown>>(target: Target, extensions: E): Target & E => {\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (prop in extensions) {\n return extensions[prop as string]\n }\n\n const value = Reflect.get(target, prop, receiver)\n if (isFunction(value)) {\n return value.bind(target)\n }\n\n return value\n },\n }) as Target & E\n}\n"],"mappings":";AAAA,SAAS,kBAAkB;AAEpB,IAAM,SAAS,CAA2D,QAAgB,eAA8B;AAC7H,SAAO,IAAI,MAAM,QAAQ;AAAA,IACvB,IAAIA,SAAQ,MAAM,UAAU;AAC1B,UAAI,QAAQ,YAAY;AACtB,eAAO,WAAW,IAAc;AAAA,MAClC;AAEA,YAAM,QAAQ,QAAQ,IAAIA,SAAQ,MAAM,QAAQ;AAChD,UAAI,WAAW,KAAK,GAAG;AACrB,eAAO,MAAM,KAAKA,OAAM;AAAA,MAC1B;AAEA,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;","names":["target"]}
package/dist/range.d.ts CHANGED
@@ -6,6 +6,5 @@ export declare const schema: <T extends ZodType>(type: T) => ZodType<Bounds<Zod.
6
6
  export type NumericBounds = Bounds<number>;
7
7
  export declare const NumericSchema: Zod.ZodType<Bounds<number>, Bounds<number>, Zod.core.$ZodTypeInternals<Bounds<number>, Bounds<number>>>;
8
8
  export type FiniteBounds<T> = [T, T];
9
- export type FiniteNumericBounds = FiniteBounds<number>;
10
9
  export declare const of: <T>(bounds: BoundsInput<T>) => Bounds<T>;
11
10
  //# sourceMappingURL=range.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../src/range.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAIzD,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAA;AACnE,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAE5E,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAErG,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC1C,eAAO,MAAM,aAAa,yGAAuB,CAAA;AAEjD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACpC,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;AAEtD,eAAO,MAAM,EAAE,GAAI,CAAC,EAAE,QAAQ,WAAW,CAAC,CAAC,CAAC,KAAG,MAAM,CAAC,CAAC,CAMtD,CAAA"}
1
+ {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../src/range.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAIzD,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAA;AACnE,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAE5E,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAErG,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC1C,eAAO,MAAM,aAAa,yGAAuB,CAAA;AAEjD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEpC,eAAO,MAAM,EAAE,GAAI,CAAC,EAAE,QAAQ,WAAW,CAAC,CAAC,CAAC,KAAG,MAAM,CAAC,CAAC,CAMtD,CAAA"}
package/dist/range.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/range.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { isUndefined } from '@bessemer/cornerstone/object'\n\n// JOHN bounds are still a mess! what about finite bounds ???\nexport type Bounds<T> = NominalType<[T | null, T | null], 'Bounds'>\nexport type BoundsInput<T> = [lower: T | null, upper?: T | null] | Bounds<T>\n\nexport const schema = <T extends ZodType>(type: T): ZodType<Bounds<Zod.infer<T>>, Bounds<Zod.infer<T>>> => {\n return Zod.tuple([type.nullable(), type.nullable()]) as any\n}\n\nexport type NumericBounds = Bounds<number>\nexport const NumericSchema = schema(Zod.number())\n\nexport type FiniteBounds<T> = [T, T]\nexport type FiniteNumericBounds = FiniteBounds<number>\n\nexport const of = <T>(bounds: BoundsInput<T>): Bounds<T> => {\n if (isUndefined(bounds[1])) {\n return [bounds[0], null] as Bounds<T>\n }\n\n return bounds as Bounds<T>\n}\n"],"mappings":";AAAA,OAAO,SAAsB;AAE7B,SAAS,mBAAmB;AAMrB,IAAM,SAAS,CAAoB,SAAiE;AACzG,SAAO,IAAI,MAAM,CAAC,KAAK,SAAS,GAAG,KAAK,SAAS,CAAC,CAAC;AACrD;AAGO,IAAM,gBAAgB,OAAO,IAAI,OAAO,CAAC;AAKzC,IAAM,KAAK,CAAI,WAAsC;AAC1D,MAAI,YAAY,OAAO,CAAC,CAAC,GAAG;AAC1B,WAAO,CAAC,OAAO,CAAC,GAAG,IAAI;AAAA,EACzB;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/range.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { isUndefined } from '@bessemer/cornerstone/object'\n\n// JOHN bounds are still a mess! what about finite bounds ???\nexport type Bounds<T> = NominalType<[T | null, T | null], 'Bounds'>\nexport type BoundsInput<T> = [lower: T | null, upper?: T | null] | Bounds<T>\n\nexport const schema = <T extends ZodType>(type: T): ZodType<Bounds<Zod.infer<T>>, Bounds<Zod.infer<T>>> => {\n return Zod.tuple([type.nullable(), type.nullable()]) as any\n}\n\nexport type NumericBounds = Bounds<number>\nexport const NumericSchema = schema(Zod.number())\n\nexport type FiniteBounds<T> = [T, T]\n\nexport const of = <T>(bounds: BoundsInput<T>): Bounds<T> => {\n if (isUndefined(bounds[1])) {\n return [bounds[0], null] as Bounds<T>\n }\n\n return bounds as Bounds<T>\n}\n"],"mappings":";AAAA,OAAO,SAAsB;AAE7B,SAAS,mBAAmB;AAMrB,IAAM,SAAS,CAAoB,SAAiE;AACzG,SAAO,IAAI,MAAM,CAAC,KAAK,SAAS,GAAG,KAAK,SAAS,CAAC,CAAC;AACrD;AAGO,IAAM,gBAAgB,OAAO,IAAI,OAAO,CAAC;AAIzC,IAAM,KAAK,CAAI,WAAsC;AAC1D,MAAI,YAAY,OAAO,CAAC,CAAC,GAAG;AAC1B,WAAO,CAAC,OAAO,CAAC,GAAG,IAAI;AAAA,EACzB;AAEA,SAAO;AACT;","names":[]}
package/dist/result.d.ts CHANGED
@@ -1,28 +1,26 @@
1
1
  import { Left, Right } from '@bessemer/cornerstone/either';
2
- import { Throwable } from '@bessemer/cornerstone/types';
3
- export type Success<SuccessType> = Omit<Right<SuccessType>, 'map' | 'mapLeft'> & {
4
- isSuccess: true;
5
- getOrThrow: () => SuccessType;
6
- map: <T>(mapper: (element: SuccessType) => T) => T extends Promise<infer U> ? Promise<Success<U>> : Success<T>;
7
- mapLeft: () => Success<SuccessType>;
8
- [Symbol.iterator](): Generator<Result<SuccessType, never>, SuccessType>;
9
- };
10
- export type Failure<FailureType = unknown> = Omit<Left<FailureType>, 'map' | 'mapLeft'> & {
11
- isSuccess: false;
12
- getOrThrow: () => never;
13
- map: () => Failure<FailureType>;
14
- mapLeft: <T>(mapper: (element: FailureType) => T) => T extends Promise<infer U> ? Promise<Failure<U>> : Failure<T>;
15
- [Symbol.iterator](): Generator<Result<never, FailureType>, never>;
16
- };
17
- export type Result<SuccessType, FailureType = unknown> = Failure<FailureType> | Success<SuccessType>;
18
- export type AsyncResult<T, N = Throwable> = Promise<Result<T, N>>;
19
- export declare const success: <T>(value: T) => Success<T>;
2
+ export type Success<SuccessType> = Left<SuccessType>;
3
+ export type Failure<FailureType = unknown> = Right<FailureType>;
4
+ export type Result<SuccessType, FailureType = unknown> = Success<SuccessType> | Failure<FailureType>;
5
+ export type AsyncResult<SuccessType, FailureType = unknown> = Promise<Result<SuccessType, FailureType>>;
6
+ export declare const success: <SuccessType>(value: SuccessType) => Success<SuccessType>;
20
7
  export declare function failure(): Failure<never>;
21
8
  export declare function failure<N>(failure: N): Failure<N>;
9
+ export declare const isSuccess: <SuccessType, FailureType>(value: Result<SuccessType, FailureType>) => value is Success<SuccessType>;
10
+ export declare const isFailure: <SuccessType, FailureType>(value: Result<SuccessType, FailureType>) => value is Failure<FailureType>;
11
+ export declare function assertSuccess<SuccessType, FailureType>(value: Result<SuccessType, FailureType>): asserts value is Success<SuccessType>;
12
+ export declare function assertFailure<SuccessType, FailureType>(value: Result<SuccessType, FailureType>): asserts value is Failure<FailureType>;
13
+ export declare function map<SuccessType, FailureType, MappedType>(value: Result<SuccessType, FailureType>, mapper: (value: SuccessType) => Promise<MappedType>): Promise<Result<MappedType, FailureType>>;
14
+ export declare function map<SuccessType, FailureType, MappedType>(value: Result<SuccessType, FailureType>, mapper: (value: SuccessType) => MappedType): Result<MappedType, FailureType>;
15
+ export declare function flatMap<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(value: Result<SuccessType, FailureType>, mapper: (value: SuccessType) => Promise<Result<MappedSuccessType, MappedFailureType>>): Promise<Result<MappedSuccessType, FailureType | MappedFailureType>>;
16
+ export declare function flatMap<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(value: Result<SuccessType, FailureType>, mapper: (value: SuccessType) => Result<MappedSuccessType, MappedFailureType>): Result<MappedSuccessType, FailureType | MappedFailureType>;
17
+ export declare function mapFailure<SuccessType, FailureType, MappedType>(value: Result<SuccessType, FailureType>, mapper: (value: FailureType) => Promise<MappedType>): Promise<Result<SuccessType, MappedType>>;
18
+ export declare function mapFailure<SuccessType, FailureType, MappedType>(value: Result<SuccessType, FailureType>, mapper: (value: FailureType) => MappedType): Result<SuccessType, MappedType>;
19
+ export declare function flatMapFailure<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(value: Result<SuccessType, FailureType>, mapper: (value: FailureType) => Promise<Result<MappedSuccessType, MappedFailureType>>): Promise<Result<SuccessType | MappedSuccessType, MappedFailureType>>;
20
+ export declare function flatMapFailure<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(value: Result<SuccessType, FailureType>, mapper: (value: FailureType) => Result<MappedSuccessType, MappedFailureType>): Result<SuccessType | MappedSuccessType, MappedFailureType>;
21
+ export declare const split: <SuccessType, FailureType>(array: Array<Result<SuccessType, FailureType>>) => [Array<SuccessType>, Array<FailureType>];
22
22
  export declare function tryValue<SOURCE_VALUE>(resolver: () => Promise<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>;
23
23
  export declare function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE): Result<SOURCE_VALUE>;
24
24
  export declare function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE>): Result<SOURCE_VALUE>;
25
25
  export declare function tryResult<SOURCE_VALUE>(resolver: () => AsyncResult<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>;
26
- export declare function gen<TGen extends () => Generator<Result<any, any>>>(generatorFn: TGen): TGen extends () => Generator<Result<any, infer L>, infer R> ? Result<R, L> : never;
27
- export declare function gen<TGen extends () => AsyncGenerator<Result<any, any>>>(generatorFn: TGen): Promise<TGen extends () => AsyncGenerator<Result<any, infer L>, infer R> ? Result<R, L> : never>;
28
26
  //# sourceMappingURL=result.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"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"}
package/dist/result.js CHANGED
@@ -1,64 +1,40 @@
1
1
  // src/result.ts
2
- import { buildGenerator, LeftImpl, RightImpl } from "@bessemer/cornerstone/either";
3
2
  import { isPromise } from "@bessemer/cornerstone/promise";
4
- import { executeAsync } from "@bessemer/cornerstone/internal";
5
- var SuccessImpl = class extends RightImpl {
6
- isSuccess = true;
7
- constructor(value) {
8
- super(value);
9
- }
10
- getOrThrow() {
11
- return this.value;
12
- }
13
- map = (mapper) => {
14
- const mappedValue = mapper(this.value);
15
- if (isPromise(mappedValue)) {
16
- return executeAsync(async () => success(await mappedValue));
17
- } else {
18
- return success(mappedValue);
19
- }
20
- };
21
- mapLeft = () => {
22
- return this;
23
- };
24
- [Symbol.iterator]() {
25
- return function* () {
26
- return this.value;
27
- }.call(this);
28
- }
29
- };
30
- var FailureImpl = class extends LeftImpl {
31
- isSuccess = false;
32
- constructor(value) {
33
- super(value);
34
- }
35
- getOrThrow() {
36
- throw this.value;
37
- }
38
- map = () => {
39
- return this;
40
- };
41
- mapLeft = (mapper) => {
42
- const mappedValue = mapper(this.value);
43
- if (isPromise(mappedValue)) {
44
- return executeAsync(async () => failure(await mappedValue));
45
- } else {
46
- return failure(mappedValue);
47
- }
48
- };
49
- [Symbol.iterator]() {
50
- return function* () {
51
- yield this;
52
- throw new Error("Illegal State");
53
- }.call(this);
54
- }
3
+ import * as Eithers from "@bessemer/cornerstone/either";
4
+ import { assert } from "@bessemer/cornerstone/assertion";
5
+ var success = (value) => Eithers.left(value);
6
+ function failure(failure2) {
7
+ return Eithers.right(failure2);
8
+ }
9
+ var isSuccess = (value) => {
10
+ return Eithers.isLeft(value);
55
11
  };
56
- var success = (value) => {
57
- return new SuccessImpl(value);
12
+ var isFailure = (value) => {
13
+ return Eithers.isRight(value);
58
14
  };
59
- function failure(failure2) {
60
- return new FailureImpl(failure2);
15
+ function assertSuccess(value) {
16
+ if (isFailure(value)) {
17
+ throw value.value;
18
+ }
19
+ }
20
+ function assertFailure(value) {
21
+ assert(isFailure(value));
22
+ }
23
+ function map2(value, mapper) {
24
+ return Eithers.map(value, mapper);
61
25
  }
26
+ function flatMap2(value, mapper) {
27
+ return Eithers.flatMap(value, mapper);
28
+ }
29
+ function mapFailure(value, mapper) {
30
+ return Eithers.mapRight(value, mapper);
31
+ }
32
+ function flatMapFailure(value, mapper) {
33
+ return Eithers.flatMapRight(value, mapper);
34
+ }
35
+ var split2 = (array) => {
36
+ return Eithers.split(array);
37
+ };
62
38
  function tryValue(resolver) {
63
39
  try {
64
40
  let result = resolver();
@@ -83,13 +59,17 @@ function tryResult(resolver) {
83
59
  return failure(e);
84
60
  }
85
61
  }
86
- var generator = buildGenerator((it) => success(it));
87
- function gen(generatorFn) {
88
- return generator(generatorFn);
89
- }
90
62
  export {
63
+ assertFailure,
64
+ assertSuccess,
91
65
  failure,
92
- gen,
66
+ flatMap2 as flatMap,
67
+ flatMapFailure,
68
+ isFailure,
69
+ isSuccess,
70
+ map2 as map,
71
+ mapFailure,
72
+ split2 as split,
93
73
  success,
94
74
  tryResult,
95
75
  tryValue
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/result.ts"],"sourcesContent":["import { buildGenerator, Left, LeftImpl, Right, RightImpl } from '@bessemer/cornerstone/either'\nimport { Throwable } from '@bessemer/cornerstone/types'\nimport { isPromise } from '@bessemer/cornerstone/promise'\nimport { executeAsync } from '@bessemer/cornerstone/internal'\n\nexport type Success<SuccessType> = Omit<Right<SuccessType>, 'map' | 'mapLeft'> & {\n isSuccess: true\n getOrThrow: () => SuccessType\n map: <T>(mapper: (element: SuccessType) => T) => T extends Promise<infer U> ? Promise<Success<U>> : Success<T>\n mapLeft: () => Success<SuccessType>\n [Symbol.iterator](): Generator<Result<SuccessType, never>, SuccessType>\n}\n\nexport type Failure<FailureType = unknown> = Omit<Left<FailureType>, 'map' | 'mapLeft'> & {\n isSuccess: false\n getOrThrow: () => never\n map: () => Failure<FailureType>\n mapLeft: <T>(mapper: (element: FailureType) => T) => T extends Promise<infer U> ? Promise<Failure<U>> : Failure<T>\n [Symbol.iterator](): Generator<Result<never, FailureType>, never>\n}\n\nexport type Result<SuccessType, FailureType = unknown> = Failure<FailureType> | Success<SuccessType>\n\nclass SuccessImpl<SuccessType> extends RightImpl<SuccessType> implements Success<SuccessType> {\n public readonly isSuccess = true\n\n constructor(value: SuccessType) {\n super(value)\n }\n\n getOrThrow(): SuccessType {\n return this.value\n }\n\n override map = <T>(mapper: (element: SuccessType) => T): T extends Promise<infer U> ? Promise<Success<U>> : Success<T> => {\n const mappedValue = mapper(this.value)\n if (isPromise(mappedValue)) {\n return executeAsync(async () => success(await mappedValue)) as any\n } else {\n return success(mappedValue) as any\n }\n }\n\n override mapLeft = (): Success<SuccessType> => {\n return this\n };\n\n override [Symbol.iterator](): Generator<Result<SuccessType, never>, SuccessType> {\n return function* (this: Success<SuccessType>) {\n return this.value\n }.call(this)\n }\n}\n\nclass FailureImpl<FailureType> extends LeftImpl<FailureType> implements Failure<FailureType> {\n public readonly isSuccess = false\n\n constructor(value: FailureType) {\n super(value)\n }\n\n getOrThrow(): never {\n throw this.value\n }\n\n override map = (): Failure<FailureType> => {\n return this\n }\n\n override mapLeft = <T>(mapper: (element: FailureType) => T): T extends Promise<infer U> ? Promise<Failure<U>> : Failure<T> => {\n const mappedValue = mapper(this.value)\n if (isPromise(mappedValue)) {\n return executeAsync(async () => failure(await mappedValue)) as any\n } else {\n return failure(mappedValue) as any\n }\n };\n\n override [Symbol.iterator](): Generator<Result<never, FailureType>, never> {\n return function* (this: Failure<FailureType>) {\n yield this as any\n throw new Error('Illegal State')\n }.call(this)\n }\n}\n\nexport type AsyncResult<T, N = Throwable> = Promise<Result<T, N>>\n\nexport const success = <T>(value: T): Success<T> => {\n return new SuccessImpl<T>(value)\n}\n\nexport function failure(): Failure<never>\nexport function failure<N>(failure: N): Failure<N>\nexport function failure(failure?: unknown): Failure {\n return new FailureImpl<unknown>(failure)\n}\n\nexport function tryValue<SOURCE_VALUE>(resolver: () => Promise<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>\nexport function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE): Result<SOURCE_VALUE>\nexport function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE | Promise<SOURCE_VALUE>): Result<SOURCE_VALUE> | Promise<Result<SOURCE_VALUE>> {\n try {\n let result = resolver()\n if (isPromise(result)) {\n return result.then((it) => success(it)).catch((it) => failure(it))\n } else {\n return success(result)\n }\n } catch (e: any) {\n return failure(e)\n }\n}\n\nexport function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE>): Result<SOURCE_VALUE>\nexport function tryResult<SOURCE_VALUE>(resolver: () => AsyncResult<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>\nexport function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE> | AsyncResult<SOURCE_VALUE>): ReturnType<typeof resolver> {\n try {\n let result = resolver()\n if (isPromise(result)) {\n return result.catch((it) => failure(it))\n } else {\n return result\n }\n } catch (e: any) {\n return failure(e)\n }\n}\n\nconst generator = buildGenerator((it) => success(it) as Result<any, any>)\n\nexport function gen<TGen extends () => Generator<Result<any, any>>>(\n generatorFn: TGen\n): TGen extends () => Generator<Result<any, infer L>, infer R> ? Result<R, L> : never\nexport function gen<TGen extends () => AsyncGenerator<Result<any, any>>>(\n generatorFn: TGen\n): Promise<TGen extends () => AsyncGenerator<Result<any, infer L>, infer R> ? Result<R, L> : never>\nexport function gen<TGen extends () => Generator<Result<any, any>> | AsyncGenerator<Result<any, any>>>(\n generatorFn: TGen\n): TGen extends () => Generator<Result<any, infer L>, infer R>\n ? Result<R, L>\n : TGen extends () => AsyncGenerator<Result<any, infer L>, infer R>\n ? Promise<Result<R, L>>\n : never {\n return generator(generatorFn)\n}\n"],"mappings":";AAAA,SAAS,gBAAsB,UAAiB,iBAAiB;AAEjE,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAoB7B,IAAM,cAAN,cAAuC,UAAuD;AAAA,EAC5E,YAAY;AAAA,EAE5B,YAAY,OAAoB;AAC9B,UAAM,KAAK;AAAA,EACb;AAAA,EAEA,aAA0B;AACxB,WAAO,KAAK;AAAA,EACd;AAAA,EAES,MAAM,CAAI,WAAuG;AACxH,UAAM,cAAc,OAAO,KAAK,KAAK;AACrC,QAAI,UAAU,WAAW,GAAG;AAC1B,aAAO,aAAa,YAAY,QAAQ,MAAM,WAAW,CAAC;AAAA,IAC5D,OAAO;AACL,aAAO,QAAQ,WAAW;AAAA,IAC5B;AAAA,EACF;AAAA,EAES,UAAU,MAA4B;AAC7C,WAAO;AAAA,EACT;AAAA,EAEA,CAAU,OAAO,QAAQ,IAAwD;AAC/E,WAAO,aAAuC;AAC5C,aAAO,KAAK;AAAA,IACd,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAEA,IAAM,cAAN,cAAuC,SAAsD;AAAA,EAC3E,YAAY;AAAA,EAE5B,YAAY,OAAoB;AAC9B,UAAM,KAAK;AAAA,EACb;AAAA,EAEA,aAAoB;AAClB,UAAM,KAAK;AAAA,EACb;AAAA,EAES,MAAM,MAA4B;AACzC,WAAO;AAAA,EACT;AAAA,EAES,UAAU,CAAI,WAAuG;AAC5H,UAAM,cAAc,OAAO,KAAK,KAAK;AACrC,QAAI,UAAU,WAAW,GAAG;AAC1B,aAAO,aAAa,YAAY,QAAQ,MAAM,WAAW,CAAC;AAAA,IAC5D,OAAO;AACL,aAAO,QAAQ,WAAW;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,CAAU,OAAO,QAAQ,IAAkD;AACzE,WAAO,aAAuC;AAC5C,YAAM;AACN,YAAM,IAAI,MAAM,eAAe;AAAA,IACjC,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAIO,IAAM,UAAU,CAAI,UAAyB;AAClD,SAAO,IAAI,YAAe,KAAK;AACjC;AAIO,SAAS,QAAQA,UAA4B;AAClD,SAAO,IAAI,YAAqBA,QAAO;AACzC;AAIO,SAAS,SAAuB,UAA4G;AACjJ,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO,OAAO,KAAK,CAAC,OAAO,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC;AAAA,IACnE,OAAO;AACL,aAAO,QAAQ,MAAM;AAAA,IACvB;AAAA,EACF,SAAS,GAAQ;AACf,WAAO,QAAQ,CAAC;AAAA,EAClB;AACF;AAIO,SAAS,UAAwB,UAA+F;AACrI,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO,OAAO,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC;AAAA,IACzC,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF,SAAS,GAAQ;AACf,WAAO,QAAQ,CAAC;AAAA,EAClB;AACF;AAEA,IAAM,YAAY,eAAe,CAAC,OAAO,QAAQ,EAAE,CAAqB;AAQjE,SAAS,IACd,aAKQ;AACR,SAAO,UAAU,WAAW;AAC9B;","names":["failure"]}
1
+ {"version":3,"sources":["../src/result.ts"],"sourcesContent":["import { isPromise } from '@bessemer/cornerstone/promise'\nimport * as Eithers from '@bessemer/cornerstone/either'\nimport { Left, Right } from '@bessemer/cornerstone/either'\nimport { assert } from '@bessemer/cornerstone/assertion'\nimport { Promisable } from 'type-fest'\n\nexport type Success<SuccessType> = Left<SuccessType>\nexport type Failure<FailureType = unknown> = Right<FailureType>\nexport type Result<SuccessType, FailureType = unknown> = Success<SuccessType> | Failure<FailureType>\nexport type AsyncResult<SuccessType, FailureType = unknown> = Promise<Result<SuccessType, FailureType>>\n\nexport const success = <SuccessType>(value: SuccessType): Success<SuccessType> => Eithers.left(value)\n\nexport function failure(): Failure<never>\nexport function failure<N>(failure: N): Failure<N>\nexport function failure(failure?: unknown): Failure {\n return Eithers.right(failure)\n}\n\nexport const isSuccess = <SuccessType, FailureType>(value: Result<SuccessType, FailureType>): value is Success<SuccessType> => {\n return Eithers.isLeft(value)\n}\nexport const isFailure = <SuccessType, FailureType>(value: Result<SuccessType, FailureType>): value is Failure<FailureType> => {\n return Eithers.isRight(value)\n}\n\nexport function assertSuccess<SuccessType, FailureType>(value: Result<SuccessType, FailureType>): asserts value is Success<SuccessType> {\n if (isFailure(value)) {\n throw value.value\n }\n}\nexport function assertFailure<SuccessType, FailureType>(value: Result<SuccessType, FailureType>): asserts value is Failure<FailureType> {\n assert(isFailure(value))\n}\n\nexport function map<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => Promise<MappedType>\n): Promise<Result<MappedType, FailureType>>\nexport function map<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => MappedType\n): Result<MappedType, FailureType>\nexport function map<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => MappedType\n): Promisable<Result<MappedType, FailureType>> {\n return Eithers.map(value, mapper)\n}\n\nexport function flatMap<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => Promise<Result<MappedSuccessType, MappedFailureType>>\n): Promise<Result<MappedSuccessType, FailureType | MappedFailureType>>\nexport function flatMap<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => Result<MappedSuccessType, MappedFailureType>\n): Result<MappedSuccessType, FailureType | MappedFailureType>\nexport function flatMap<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: SuccessType) => Result<MappedSuccessType, MappedFailureType>\n): Promisable<Result<MappedSuccessType, FailureType | MappedFailureType>> {\n return Eithers.flatMap(value, mapper)\n}\n\nexport function mapFailure<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => Promise<MappedType>\n): Promise<Result<SuccessType, MappedType>>\nexport function mapFailure<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => MappedType\n): Result<SuccessType, MappedType>\nexport function mapFailure<SuccessType, FailureType, MappedType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => MappedType\n): Promisable<Result<SuccessType, MappedType>> {\n return Eithers.mapRight(value, mapper)\n}\n\nexport function flatMapFailure<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => Promise<Result<MappedSuccessType, MappedFailureType>>\n): Promise<Result<SuccessType | MappedSuccessType, MappedFailureType>>\nexport function flatMapFailure<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => Result<MappedSuccessType, MappedFailureType>\n): Result<SuccessType | MappedSuccessType, MappedFailureType>\nexport function flatMapFailure<SuccessType, FailureType, MappedSuccessType, MappedFailureType>(\n value: Result<SuccessType, FailureType>,\n mapper: (value: FailureType) => Result<MappedSuccessType, MappedFailureType>\n): Promisable<Result<SuccessType | MappedSuccessType, MappedFailureType>> {\n return Eithers.flatMapRight(value, mapper)\n}\n\nexport const split = <SuccessType, FailureType>(array: Array<Result<SuccessType, FailureType>>): [Array<SuccessType>, Array<FailureType>] => {\n return Eithers.split(array)\n}\n\nexport function tryValue<SOURCE_VALUE>(resolver: () => Promise<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>\nexport function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE): Result<SOURCE_VALUE>\nexport function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE | Promise<SOURCE_VALUE>): Result<SOURCE_VALUE> | Promise<Result<SOURCE_VALUE>> {\n try {\n let result = resolver()\n if (isPromise(result)) {\n return result.then((it) => success(it)).catch((it) => failure(it))\n } else {\n return success(result)\n }\n } catch (e: any) {\n return failure(e)\n }\n}\n\nexport function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE>): Result<SOURCE_VALUE>\nexport function tryResult<SOURCE_VALUE>(resolver: () => AsyncResult<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>\nexport function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE> | AsyncResult<SOURCE_VALUE>): ReturnType<typeof resolver> {\n try {\n let result = resolver()\n if (isPromise(result)) {\n return result.catch((it) => failure(it))\n } else {\n return result\n }\n } catch (e: any) {\n return failure(e)\n }\n}\n\n// const generator = buildGenerator((it) => success(it) as Result<any, any>)\n//\n// export function gen<TGen extends () => Generator<Result<any, any>>>(\n// generatorFn: TGen\n// ): TGen extends () => Generator<Result<any, infer L>, infer R> ? Result<R, L> : never\n// export function gen<TGen extends () => AsyncGenerator<Result<any, any>>>(\n// generatorFn: TGen\n// ): Promise<TGen extends () => AsyncGenerator<Result<any, infer L>, infer R> ? Result<R, L> : never>\n// export function gen<TGen extends () => Generator<Result<any, any>> | AsyncGenerator<Result<any, any>>>(\n// generatorFn: TGen\n// ): TGen extends () => Generator<Result<any, infer L>, infer R>\n// ? Result<R, L>\n// : TGen extends () => AsyncGenerator<Result<any, infer L>, infer R>\n// ? Promise<Result<R, L>>\n// : never {\n// return generator(generatorFn)\n// }\n"],"mappings":";AAAA,SAAS,iBAAiB;AAC1B,YAAY,aAAa;AAEzB,SAAS,cAAc;AAQhB,IAAM,UAAU,CAAc,UAAqD,aAAK,KAAK;AAI7F,SAAS,QAAQA,UAA4B;AAClD,SAAe,cAAMA,QAAO;AAC9B;AAEO,IAAM,YAAY,CAA2B,UAA2E;AAC7H,SAAe,eAAO,KAAK;AAC7B;AACO,IAAM,YAAY,CAA2B,UAA2E;AAC7H,SAAe,gBAAQ,KAAK;AAC9B;AAEO,SAAS,cAAwC,OAAgF;AACtI,MAAI,UAAU,KAAK,GAAG;AACpB,UAAM,MAAM;AAAA,EACd;AACF;AACO,SAAS,cAAwC,OAAgF;AACtI,SAAO,UAAU,KAAK,CAAC;AACzB;AAUO,SAASC,KACd,OACA,QAC6C;AAC7C,SAAe,YAAI,OAAO,MAAM;AAClC;AAUO,SAASC,SACd,OACA,QACwE;AACxE,SAAe,gBAAQ,OAAO,MAAM;AACtC;AAUO,SAAS,WACd,OACA,QAC6C;AAC7C,SAAe,iBAAS,OAAO,MAAM;AACvC;AAUO,SAAS,eACd,OACA,QACwE;AACxE,SAAe,qBAAa,OAAO,MAAM;AAC3C;AAEO,IAAMC,SAAQ,CAA2B,UAA6F;AAC3I,SAAe,cAAM,KAAK;AAC5B;AAIO,SAAS,SAAuB,UAA4G;AACjJ,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO,OAAO,KAAK,CAAC,OAAO,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC;AAAA,IACnE,OAAO;AACL,aAAO,QAAQ,MAAM;AAAA,IACvB;AAAA,EACF,SAAS,GAAQ;AACf,WAAO,QAAQ,CAAC;AAAA,EAClB;AACF;AAIO,SAAS,UAAwB,UAA+F;AACrI,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO,OAAO,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC;AAAA,IACzC,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF,SAAS,GAAQ;AACf,WAAO,QAAQ,CAAC;AAAA,EAClB;AACF;","names":["failure","map","flatMap","split"]}
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA0C,MAAM,yCAAyC,CAAA;AAC1G,OAAO,EAAE,WAAW,EAAW,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAMvC,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;AAElD,eAAO,MAAM,IAAI,EAAE,UAGlB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,UAG/B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,UAAU,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,iBAAiB,YAAY,KAAG,UAQ1D,CAAA;AAED,eAAO,MAAM,KAAK,GAAU,OAAO,UAAU,KAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAa7E,CAAA;AAED,eAAO,MAAM,UAAU,GAAU,CAAC,EAAE,UAAU,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,YAAY,KAAG,WAAW,CAAC,CAAC,CAiBpH,CAAA"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA0C,MAAM,yCAAyC,CAAA;AAE1G,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAMvC,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;AAElD,eAAO,MAAM,IAAI,EAAE,UAGlB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,UAG/B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,UAAU,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,iBAAiB,YAAY,KAAG,UAQ1D,CAAA;AAED,eAAO,MAAM,KAAK,GAAU,OAAO,UAAU,KAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAa7E,CAAA;AAED,eAAO,MAAM,UAAU,GAAU,CAAC,EAAE,UAAU,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,YAAY,KAAG,WAAW,CAAC,CAAC,CAiBpH,CAAA"}
package/dist/retry.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/retry.ts
2
2
  import { fromMilliseconds, toMilliseconds, Zero } from "@bessemer/cornerstone/temporal/duration";
3
- import { failure } from "@bessemer/cornerstone/result";
3
+ import * as Results from "@bessemer/cornerstone/result";
4
4
  import { deepMerge, isUndefined } from "@bessemer/cornerstone/object";
5
5
  import { sleep } from "@bessemer/cornerstone/async";
6
6
  import { random } from "@bessemer/cornerstone/math";
@@ -35,11 +35,11 @@ var retry = async (state) => {
35
35
  };
36
36
  var usingRetry = async (runnable, initialOptions) => {
37
37
  let retryState = initialize(initialOptions);
38
- let previousResult = failure();
38
+ let previousResult = Results.failure();
39
39
  do {
40
40
  const result = await runnable();
41
41
  previousResult = result;
42
- if (result.isSuccess) {
42
+ if (Results.isSuccess(result)) {
43
43
  return result;
44
44
  }
45
45
  retryState = await retry(retryState);
package/dist/retry.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/retry.ts"],"sourcesContent":["import { Duration, fromMilliseconds, toMilliseconds, Zero } from '@bessemer/cornerstone/temporal/duration'\nimport { AsyncResult, failure, Result } from '@bessemer/cornerstone/result'\nimport { PartialDeep } from 'type-fest'\nimport { deepMerge, isUndefined } from '@bessemer/cornerstone/object'\nimport { sleep } from '@bessemer/cornerstone/async'\nimport { random } from '@bessemer/cornerstone/math'\nimport { assert } from '@bessemer/cornerstone/assertion'\n\nexport type RetryProps = {\n attempts: number\n delay: Duration\n}\n\nexport type RetryOptions = PartialDeep<RetryProps>\n\nexport const None: RetryProps = {\n attempts: 0,\n delay: Zero,\n}\n\nexport const DefaultRetryProps: RetryProps = {\n attempts: 3,\n delay: fromMilliseconds(500),\n}\n\nexport type RetryState = {\n attempt: number\n props: RetryProps\n}\n\nexport const initialize = (initialOptions?: RetryOptions): RetryState => {\n const props = deepMerge(DefaultRetryProps, initialOptions)\n assert(props.attempts >= 0, () => 'usingRetry attempts must be >= 0')\n\n return {\n attempt: 0,\n props,\n }\n}\n\nexport const retry = async (state: RetryState): Promise<RetryState | undefined> => {\n if (state.attempt >= state.props.attempts - 1) {\n return undefined\n }\n\n const delayMs = toMilliseconds(state.props.delay)\n const maxJitterMs = delayMs * 0.3 // We calculate max jitter as 30% of the delay\n await sleep(fromMilliseconds(delayMs + random(0, maxJitterMs)))\n\n return {\n props: state.props,\n attempt: state.attempt + 1,\n }\n}\n\nexport const usingRetry = async <T>(runnable: () => Promise<Result<T>>, initialOptions?: RetryOptions): AsyncResult<T> => {\n let retryState: RetryState | undefined = initialize(initialOptions)\n let previousResult: Result<T> = failure()\n\n do {\n // JOHN Should this be a try/catch? it was causing debugging problems\n const result = await runnable()\n previousResult = result\n\n if (result.isSuccess) {\n return result\n }\n\n retryState = await retry(retryState)\n } while (!isUndefined(retryState))\n\n return previousResult\n}\n"],"mappings":";AAAA,SAAmB,kBAAkB,gBAAgB,YAAY;AACjE,SAAsB,eAAuB;AAE7C,SAAS,WAAW,mBAAmB;AACvC,SAAS,aAAa;AACtB,SAAS,cAAc;AACvB,SAAS,cAAc;AAShB,IAAM,OAAmB;AAAA,EAC9B,UAAU;AAAA,EACV,OAAO;AACT;AAEO,IAAM,oBAAgC;AAAA,EAC3C,UAAU;AAAA,EACV,OAAO,iBAAiB,GAAG;AAC7B;AAOO,IAAM,aAAa,CAAC,mBAA8C;AACvE,QAAM,QAAQ,UAAU,mBAAmB,cAAc;AACzD,SAAO,MAAM,YAAY,GAAG,MAAM,kCAAkC;AAEpE,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,OAAO,UAAuD;AACjF,MAAI,MAAM,WAAW,MAAM,MAAM,WAAW,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,eAAe,MAAM,MAAM,KAAK;AAChD,QAAM,cAAc,UAAU;AAC9B,QAAM,MAAM,iBAAiB,UAAU,OAAO,GAAG,WAAW,CAAC,CAAC;AAE9D,SAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb,SAAS,MAAM,UAAU;AAAA,EAC3B;AACF;AAEO,IAAM,aAAa,OAAU,UAAoC,mBAAkD;AACxH,MAAI,aAAqC,WAAW,cAAc;AAClE,MAAI,iBAA4B,QAAQ;AAExC,KAAG;AAED,UAAM,SAAS,MAAM,SAAS;AAC9B,qBAAiB;AAEjB,QAAI,OAAO,WAAW;AACpB,aAAO;AAAA,IACT;AAEA,iBAAa,MAAM,MAAM,UAAU;AAAA,EACrC,SAAS,CAAC,YAAY,UAAU;AAEhC,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/retry.ts"],"sourcesContent":["import { Duration, fromMilliseconds, toMilliseconds, Zero } from '@bessemer/cornerstone/temporal/duration'\nimport * as Results from '@bessemer/cornerstone/result'\nimport { AsyncResult, Result } from '@bessemer/cornerstone/result'\nimport { PartialDeep } from 'type-fest'\nimport { deepMerge, isUndefined } from '@bessemer/cornerstone/object'\nimport { sleep } from '@bessemer/cornerstone/async'\nimport { random } from '@bessemer/cornerstone/math'\nimport { assert } from '@bessemer/cornerstone/assertion'\n\nexport type RetryProps = {\n attempts: number\n delay: Duration\n}\n\nexport type RetryOptions = PartialDeep<RetryProps>\n\nexport const None: RetryProps = {\n attempts: 0,\n delay: Zero,\n}\n\nexport const DefaultRetryProps: RetryProps = {\n attempts: 3,\n delay: fromMilliseconds(500),\n}\n\nexport type RetryState = {\n attempt: number\n props: RetryProps\n}\n\nexport const initialize = (initialOptions?: RetryOptions): RetryState => {\n const props = deepMerge(DefaultRetryProps, initialOptions)\n assert(props.attempts >= 0, () => 'usingRetry attempts must be >= 0')\n\n return {\n attempt: 0,\n props,\n }\n}\n\nexport const retry = async (state: RetryState): Promise<RetryState | undefined> => {\n if (state.attempt >= state.props.attempts - 1) {\n return undefined\n }\n\n const delayMs = toMilliseconds(state.props.delay)\n const maxJitterMs = delayMs * 0.3 // We calculate max jitter as 30% of the delay\n await sleep(fromMilliseconds(delayMs + random(0, maxJitterMs)))\n\n return {\n props: state.props,\n attempt: state.attempt + 1,\n }\n}\n\nexport const usingRetry = async <T>(runnable: () => Promise<Result<T>>, initialOptions?: RetryOptions): AsyncResult<T> => {\n let retryState: RetryState | undefined = initialize(initialOptions)\n let previousResult: Result<T> = Results.failure()\n\n do {\n // JOHN Should this be a try/catch? it was causing debugging problems\n const result = await runnable()\n previousResult = result\n\n if (Results.isSuccess(result)) {\n return result\n }\n\n retryState = await retry(retryState)\n } while (!isUndefined(retryState))\n\n return previousResult\n}\n"],"mappings":";AAAA,SAAmB,kBAAkB,gBAAgB,YAAY;AACjE,YAAY,aAAa;AAGzB,SAAS,WAAW,mBAAmB;AACvC,SAAS,aAAa;AACtB,SAAS,cAAc;AACvB,SAAS,cAAc;AAShB,IAAM,OAAmB;AAAA,EAC9B,UAAU;AAAA,EACV,OAAO;AACT;AAEO,IAAM,oBAAgC;AAAA,EAC3C,UAAU;AAAA,EACV,OAAO,iBAAiB,GAAG;AAC7B;AAOO,IAAM,aAAa,CAAC,mBAA8C;AACvE,QAAM,QAAQ,UAAU,mBAAmB,cAAc;AACzD,SAAO,MAAM,YAAY,GAAG,MAAM,kCAAkC;AAEpE,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,OAAO,UAAuD;AACjF,MAAI,MAAM,WAAW,MAAM,MAAM,WAAW,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,eAAe,MAAM,MAAM,KAAK;AAChD,QAAM,cAAc,UAAU;AAC9B,QAAM,MAAM,iBAAiB,UAAU,OAAO,GAAG,WAAW,CAAC,CAAC;AAE9D,SAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb,SAAS,MAAM,UAAU;AAAA,EAC3B;AACF;AAEO,IAAM,aAAa,OAAU,UAAoC,mBAAkD;AACxH,MAAI,aAAqC,WAAW,cAAc;AAClE,MAAI,iBAAoC,gBAAQ;AAEhD,KAAG;AAED,UAAM,SAAS,MAAM,SAAS;AAC9B,qBAAiB;AAEjB,QAAY,kBAAU,MAAM,GAAG;AAC7B,aAAO;AAAA,IACT;AAEA,iBAAa,MAAM,MAAM,UAAU;AAAA,EACrC,SAAS,CAAC,YAAY,UAAU;AAEhC,SAAO;AACT;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"sql-expression-parser.d.ts","sourceRoot":"","sources":["../../src/sql/sql-expression-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAA;AAErF,OAAO,EAAa,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAgBnE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAGxE,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,eAAe,CAAA;CAC5B,CAAA;AACD,qBAAa,mBAAoB,SAAQ,gBAAgB,CAAC,WAAW,EAAE,0BAA0B,CAAC;CAAG;AAwDrG,eAAO,MAAM,0BAA0B,qBAA4B,CAAA"}
1
+ {"version":3,"file":"sql-expression-parser.d.ts","sourceRoot":"","sources":["../../src/sql/sql-expression-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAA;AAErF,OAAO,EAAa,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAgBnE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAGxE,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,eAAe,CAAA;CAC5B,CAAA;AACD,qBAAa,mBAAoB,SAAQ,gBAAgB,CAAC,WAAW,EAAE,0BAA0B,CAAC;CAAG;AAyDrG,eAAO,MAAM,0BAA0B,qBAA4B,CAAA"}
@@ -1,6 +1,6 @@
1
1
  // src/sql/sql-expression-parser.ts
2
2
  import { ExpressionMapper } from "@bessemer/cornerstone/expression/expression-mapper";
3
- import { Arrays, Eithers, Entries, Objects, Ulids } from "@bessemer/cornerstone";
3
+ import { Arrays, Eithers, Entries, Objects, Results, Ulids } from "@bessemer/cornerstone";
4
4
  import {
5
5
  AndExpression,
6
6
  ContainsExpression,
@@ -21,10 +21,10 @@ var SqlExpressionParser = class extends ExpressionMapper {
21
21
  var resolveContainsExpression = (expression, map, context, invert = false) => {
22
22
  const collection = expression.collection;
23
23
  const parsedValue = getValue(collection);
24
- if (!parsedValue.isSuccess) {
24
+ if (Results.isFailure(parsedValue)) {
25
25
  throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`);
26
26
  }
27
- const value = parsedValue.value;
27
+ const value = parsedValue;
28
28
  if (Arrays.isEmpty(value)) {
29
29
  return invert ? "(1 = 1)" : "(1 = 0)";
30
30
  }
@@ -88,8 +88,8 @@ DefaultSqlExpressionParser.register(EqualsExpression, (expression, map) => {
88
88
  const mappedFirst = map(first);
89
89
  const equalsExpressions = rest.map((it) => {
90
90
  const parsedValue = getValue(it);
91
- if (parsedValue.isSuccess) {
92
- if (parsedValue.value === null) {
91
+ if (Results.isSuccess(parsedValue)) {
92
+ if (parsedValue === null) {
93
93
  return `(${mappedFirst} IS NULL)`;
94
94
  } else {
95
95
  return `(${mappedFirst} = ${map(it)})`;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sql/sql-expression-parser.ts"],"sourcesContent":["import { ExpressionMapper } from '@bessemer/cornerstone/expression/expression-mapper'\nimport { Arrays, Eithers, Entries, Objects, Ulids } from '@bessemer/cornerstone'\nimport { BasicType, Dictionary } from '@bessemer/cornerstone/types'\nimport {\n AndExpression,\n ContainsExpression,\n EqualsExpression,\n getValue,\n GreaterThanExpression,\n GreaterThanOrEqualExpression,\n LessThanExpression,\n LessThanOrEqualExpression,\n NotExpression,\n OrExpression,\n ValueExpression,\n VariableExpression,\n} from '@bessemer/cornerstone/expression/core-expression'\nimport { isType } from '@bessemer/cornerstone/expression/internal'\nimport { SqlFragment, SqlParameterMap } from '@bessemer/cornerstone/sql'\nimport { Expression } from '@bessemer/cornerstone/expression'\n\nexport type SqlExpressionParserContext = {\n variables: Dictionary<string>\n parameters: SqlParameterMap\n}\nexport class SqlExpressionParser extends ExpressionMapper<SqlFragment, SqlExpressionParserContext> {}\n\nconst resolveContainsExpression = (\n // JOHN should be easier to define this type\n expression: ReturnType<typeof ContainsExpression.builder>,\n map: (expression: Expression<unknown>) => SqlFragment,\n context: SqlExpressionParserContext,\n invert = false\n) => {\n const collection = expression.collection\n\n const parsedValue = getValue(collection)\n if (!parsedValue.isSuccess) {\n throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`)\n }\n const value = parsedValue.value as Array<BasicType | null>\n if (Arrays.isEmpty(value)) {\n return invert ? '(1 = 1)' : '(1 = 0)'\n }\n\n value.forEach((it) => {\n if (it !== null && !Objects.isBasic(it)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(it)}`)\n }\n })\n\n const [nonNullValues, nullValues] = Arrays.bisect(value, (it) => (it !== null ? Eithers.left(it) : Eithers.right(null)))\n const parameters = nonNullValues.map((it) => Entries.of(`_${Ulids.generate()}`, it))\n parameters.forEach(([key, value]) => {\n context.parameters[key] = value\n })\n\n const containsExpression = expression.operands\n .map(map)\n .map((sql) => {\n const conditions = []\n\n if (!Arrays.isEmpty(parameters)) {\n conditions.push(\n `(${sql} ${invert ? 'NOT IN' : 'IN'} (${Entries.keys(parameters)\n .map((it) => `:${it}`)\n .join(',')}))`\n )\n }\n\n if (!Arrays.isEmpty(nullValues)) {\n conditions.push(`(${sql} ${invert ? 'IS NOT' : 'IS'} NULL)`)\n }\n\n return `(${conditions.join(' OR ')})`\n })\n .join(' AND ')\n\n return `(${containsExpression})`\n}\n\nexport const DefaultSqlExpressionParser = new SqlExpressionParser()\nDefaultSqlExpressionParser.register(ValueExpression, (expression, _, context) => {\n const value = expression.value\n const parameterName = `_${Ulids.generate()}`\n if (value === null) {\n throw new Error(`SqlExpressionParser - Unable to resolve null ValueExpression as Sql`)\n }\n if (!Objects.isBasic(value)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(value)}`)\n }\n\n context.parameters[parameterName] = value\n return `:${parameterName}`\n})\nDefaultSqlExpressionParser.register(VariableExpression, (expression, _, context) => {\n const variableName = context.variables[expression.name]\n return variableName ?? expression.name\n})\nDefaultSqlExpressionParser.register(NotExpression, (expression, map, context) => {\n if (isType(expression.value, ContainsExpression)) {\n return resolveContainsExpression(expression.value, map, context, true)\n } else {\n return `(NOT ${map(expression.value)})`\n }\n})\nDefaultSqlExpressionParser.register(AndExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' AND ')})`\n})\nDefaultSqlExpressionParser.register(OrExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' OR ')})`\n})\nDefaultSqlExpressionParser.register(EqualsExpression, (expression, map) => {\n const first = Arrays.first(expression.operands)!\n const rest = Arrays.rest(expression.operands)\n\n const mappedFirst = map(first)\n const equalsExpressions = rest\n .map((it) => {\n const parsedValue = getValue(it)\n if (parsedValue.isSuccess) {\n if (parsedValue.value === null) {\n return `(${mappedFirst} IS NULL)`\n } else {\n return `(${mappedFirst} = ${map(it)})`\n }\n } else {\n return `(${mappedFirst} = ${map(it)})`\n }\n })\n .join(' AND ')\n return `(${equalsExpressions})`\n})\nDefaultSqlExpressionParser.register(ContainsExpression, resolveContainsExpression)\nDefaultSqlExpressionParser.register(LessThanExpression, (expression, map) => {\n return `(${map(expression.left)} < ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(LessThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} <= ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanExpression, (expression, map) => {\n return `(${map(expression.left)} > ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} >= ${map(expression.right)})`\n})\n"],"mappings":"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","names":["value"]}
1
+ {"version":3,"sources":["../../src/sql/sql-expression-parser.ts"],"sourcesContent":["import { ExpressionMapper } from '@bessemer/cornerstone/expression/expression-mapper'\nimport { Arrays, Eithers, Entries, Objects, Results, Ulids } from '@bessemer/cornerstone'\nimport { BasicType, Dictionary } from '@bessemer/cornerstone/types'\nimport {\n AndExpression,\n ContainsExpression,\n EqualsExpression,\n getValue,\n GreaterThanExpression,\n GreaterThanOrEqualExpression,\n LessThanExpression,\n LessThanOrEqualExpression,\n NotExpression,\n OrExpression,\n ValueExpression,\n VariableExpression,\n} from '@bessemer/cornerstone/expression/core-expression'\nimport { isType } from '@bessemer/cornerstone/expression/internal'\nimport { SqlFragment, SqlParameterMap } from '@bessemer/cornerstone/sql'\nimport { Expression } from '@bessemer/cornerstone/expression'\n\nexport type SqlExpressionParserContext = {\n variables: Dictionary<string>\n parameters: SqlParameterMap\n}\nexport class SqlExpressionParser extends ExpressionMapper<SqlFragment, SqlExpressionParserContext> {}\n\nconst resolveContainsExpression = (\n // JOHN should be easier to define this type\n expression: ReturnType<typeof ContainsExpression.builder>,\n map: (expression: Expression<unknown>) => SqlFragment,\n context: SqlExpressionParserContext,\n invert = false\n) => {\n const collection = expression.collection\n\n const parsedValue = getValue(collection)\n if (Results.isFailure(parsedValue)) {\n throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`)\n }\n\n const value = parsedValue as Array<BasicType | null>\n if (Arrays.isEmpty(value)) {\n return invert ? '(1 = 1)' : '(1 = 0)'\n }\n\n value.forEach((it) => {\n if (it !== null && !Objects.isBasic(it)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(it)}`)\n }\n })\n\n const [nonNullValues, nullValues] = Arrays.bisect(value, (it) => (it !== null ? Eithers.left(it) : Eithers.right(null)))\n const parameters = nonNullValues.map((it) => Entries.of(`_${Ulids.generate()}`, it))\n parameters.forEach(([key, value]) => {\n context.parameters[key] = value\n })\n\n const containsExpression = expression.operands\n .map(map)\n .map((sql) => {\n const conditions = []\n\n if (!Arrays.isEmpty(parameters)) {\n conditions.push(\n `(${sql} ${invert ? 'NOT IN' : 'IN'} (${Entries.keys(parameters)\n .map((it) => `:${it}`)\n .join(',')}))`\n )\n }\n\n if (!Arrays.isEmpty(nullValues)) {\n conditions.push(`(${sql} ${invert ? 'IS NOT' : 'IS'} NULL)`)\n }\n\n return `(${conditions.join(' OR ')})`\n })\n .join(' AND ')\n\n return `(${containsExpression})`\n}\n\nexport const DefaultSqlExpressionParser = new SqlExpressionParser()\nDefaultSqlExpressionParser.register(ValueExpression, (expression, _, context) => {\n const value = expression.value\n const parameterName = `_${Ulids.generate()}`\n if (value === null) {\n throw new Error(`SqlExpressionParser - Unable to resolve null ValueExpression as Sql`)\n }\n if (!Objects.isBasic(value)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(value)}`)\n }\n\n context.parameters[parameterName] = value\n return `:${parameterName}`\n})\nDefaultSqlExpressionParser.register(VariableExpression, (expression, _, context) => {\n const variableName = context.variables[expression.name]\n return variableName ?? expression.name\n})\nDefaultSqlExpressionParser.register(NotExpression, (expression, map, context) => {\n if (isType(expression.value, ContainsExpression)) {\n return resolveContainsExpression(expression.value, map, context, true)\n } else {\n return `(NOT ${map(expression.value)})`\n }\n})\nDefaultSqlExpressionParser.register(AndExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' AND ')})`\n})\nDefaultSqlExpressionParser.register(OrExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' OR ')})`\n})\nDefaultSqlExpressionParser.register(EqualsExpression, (expression, map) => {\n const first = Arrays.first(expression.operands)!\n const rest = Arrays.rest(expression.operands)\n\n const mappedFirst = map(first)\n const equalsExpressions = rest\n .map((it) => {\n const parsedValue = getValue(it)\n if (Results.isSuccess(parsedValue)) {\n if (parsedValue === null) {\n return `(${mappedFirst} IS NULL)`\n } else {\n return `(${mappedFirst} = ${map(it)})`\n }\n } else {\n return `(${mappedFirst} = ${map(it)})`\n }\n })\n .join(' AND ')\n return `(${equalsExpressions})`\n})\nDefaultSqlExpressionParser.register(ContainsExpression, resolveContainsExpression)\nDefaultSqlExpressionParser.register(LessThanExpression, (expression, map) => {\n return `(${map(expression.left)} < ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(LessThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} <= ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanExpression, (expression, map) => {\n return `(${map(expression.left)} > ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} >= ${map(expression.right)})`\n})\n"],"mappings":"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","names":["value"]}
package/dist/string.d.ts CHANGED
@@ -24,6 +24,7 @@ export declare const replacePlaceholders: (string: string, parameters: UnknownRe
24
24
  export declare const padStart: (str: string, length: number, chars: string) => string;
25
25
  export declare const padEnd: (str: string, length: number, chars: string) => string;
26
26
  export declare const isNumber: (value: string) => boolean;
27
+ export declare const capitalize: <T extends string>(str: T) => Capitalize<T>;
27
28
  export declare namespace Schema {
28
29
  }
29
30
  //# sourceMappingURL=string.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAKzC,eAAO,MAAM,QAAQ,GAAI,OAAO,GAAG,KAAG,KAAK,IAAI,MAE9C,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,KAAG,OAEvC,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,OAM/D,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,IAMpD,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,GAAG,IAAI,KAAG,OAG7C,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3I,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,GAAG,MAAM,KAAG,iBAqBnE,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,GAAG,MAAM,KAAG,iBAgClE,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,iBAuB3D,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,CAEnE,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,MAM/D,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,MAM7D,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,MAAM,GAAG,IA2B5E,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,EAAE,YAAY,aAAa,EAAE,uBAAuB,WAAW,MAAM,WAAuB,WAK7I,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MASrE,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MASnE,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,KAAG,OAOxC,CAAA;AAED,yBAAiB,MAAM,CAAC;CAMvB"}
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAKzC,eAAO,MAAM,QAAQ,GAAI,OAAO,GAAG,KAAG,KAAK,IAAI,MAE9C,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,KAAG,OAEvC,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,OAM/D,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,IAMpD,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,GAAG,IAAI,KAAG,OAG7C,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3I,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,GAAG,MAAM,KAAG,iBAqBnE,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,GAAG,MAAM,KAAG,iBAgClE,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,iBAuB3D,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,CAEnE,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,MAM/D,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,MAM7D,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,MAAM,GAAG,IA2B5E,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,EAAE,YAAY,aAAa,EAAE,uBAAuB,WAAW,MAAM,WAAuB,WAK7I,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MASrE,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MASnE,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,KAAG,OAOxC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,KAAG,UAAU,CAAC,CAAC,CAEjE,CAAA;AAED,yBAAiB,MAAM,CAAC;CAMvB"}
package/dist/string.js CHANGED
@@ -155,6 +155,9 @@ var isNumber = (value) => {
155
155
  const num = Number(value);
156
156
  return !isNaN(num) && isFinite(num);
157
157
  };
158
+ var capitalize = (str) => {
159
+ return str.charAt(0).toUpperCase() + str.slice(1);
160
+ };
158
161
  var Schema;
159
162
  ((Schema2) => {
160
163
  const Text = Zod.string().trim().min(1);
@@ -162,6 +165,7 @@ var Schema;
162
165
  })(Schema || (Schema = {}));
163
166
  export {
164
167
  Schema,
168
+ capitalize,
165
169
  emptyToNull,
166
170
  isBlank,
167
171
  isEmpty,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/string.ts"],"sourcesContent":["import { UnknownRecord } from 'type-fest'\nimport { rest } from '@bessemer/cornerstone/array'\nimport { isNil } from '@bessemer/cornerstone/object'\nimport Zod from 'zod'\n\nexport const isString = (value: any): value is string => {\n return typeof value === 'string'\n}\n\nexport const isEmpty = (value: string): boolean => {\n return value.length === 0\n}\n\nexport const isEmptyOrNil = (value: string | null | undefined): boolean => {\n if (isNil(value)) {\n return true\n }\n\n return isEmpty(value)\n}\n\nexport const emptyToNull = (value: string): string | null => {\n if (isEmptyOrNil(value)) {\n return null\n }\n\n return value\n}\n\nexport const isBlank = (str?: string | null): boolean => {\n const testStr = str ?? ''\n return /^\\s*$/.test(testStr)\n}\n\nexport type StringSplitResult = { selection: string; separator: string; rest: string } | { selection: null; separator: null; rest: string }\n\nexport const splitFirst = (str: string, splitter: string | RegExp): StringSplitResult => {\n if (isString(splitter)) {\n const results = str.split(splitter)\n if (results.length === 1) {\n return { selection: null, separator: null, rest: str }\n }\n\n return { selection: results[0]!, separator: splitter, rest: rest(results).join(splitter) }\n } else {\n const match = splitter.exec(str)\n\n if (!match) {\n return { selection: null, separator: null, rest: str }\n }\n\n const matchIndex = match.index\n const beforeMatch = str.slice(0, matchIndex)\n const afterMatch = str.slice(matchIndex + match[0].length)\n const separator = match[0]\n return { selection: beforeMatch, separator, rest: afterMatch }\n }\n}\n\nexport const splitLast = (str: string, splitter: string | RegExp): StringSplitResult => {\n if (isString(splitter)) {\n const results = str.split(splitter)\n if (results.length === 1) {\n return { selection: null, separator: null, rest: str }\n }\n\n return { selection: results[results.length - 1]!, separator: splitter, rest: results.slice(0, results.length - 1).join(splitter) }\n } else {\n if (!splitter.global) {\n splitter = new RegExp(splitter.source, splitter.flags + 'g')\n }\n\n const matches = Array.from(str.matchAll(splitter))\n\n if (matches.length === 0) {\n return { selection: null, separator: null, rest: str }\n }\n\n // Use the last match\n const lastMatch = matches[matches.length - 1]!\n const matchIndex = lastMatch.index!\n const separator = lastMatch[0]!\n const beforeMatch = str.slice(0, matchIndex)\n const afterMatch = str.slice(matchIndex + separator.length)\n\n return {\n selection: afterMatch,\n separator: separator,\n rest: beforeMatch,\n }\n }\n}\n\nexport const splitLastRegex = (str: string, regex: RegExp): StringSplitResult => {\n // Find the last match using regex lastIndex\n let lastMatch: RegExpExecArray | null = null\n let match\n\n while ((match = regex.exec(str)) !== null) {\n lastMatch = match\n }\n\n if (!lastMatch) {\n return { selection: null, separator: null, rest: str }\n }\n\n const matchIndex = lastMatch.index!\n const separator = lastMatch[0]\n const beforeMatch = str.slice(0, matchIndex)\n const afterMatch = str.slice(matchIndex + separator.length)\n\n return {\n selection: afterMatch,\n separator,\n rest: beforeMatch,\n }\n}\n\nexport const splitAt = (str: string, index: number): [string, string] => {\n return [str.slice(0, index), str.slice(index)] as const\n}\n\nexport const removeStart = (string: string, substring: string): string => {\n if (!string.startsWith(substring)) {\n return string\n }\n\n return string.slice(substring.length)\n}\n\nexport const removeEnd = (string: string, substring: string): string => {\n if (!string.endsWith(substring)) {\n return string\n }\n\n return string.slice(0, -substring.length)\n}\n\nexport const mostCentralOccurrence = (str: string, substr: string): number | null => {\n const occurrences: number[] = []\n let index = str.indexOf(substr)\n\n while (index !== -1) {\n occurrences.push(index)\n index = str.indexOf(substr, index + 1)\n }\n\n if (occurrences.length === 0) {\n return null\n }\n\n const center = str.length / 2\n\n let closestIndex = occurrences[0]!\n let minDistance = Math.abs(center - closestIndex)\n\n for (let i = 1; i < occurrences.length; i++) {\n const distance = Math.abs(center - occurrences[i]!)\n if (distance < minDistance) {\n minDistance = distance\n closestIndex = occurrences[i]!\n }\n }\n\n return closestIndex\n}\n\nexport const replacePlaceholders = (string: string, parameters: UnknownRecord, getParamPlaceholder = (paramName: string) => `{{${paramName}}}`) => {\n return Object.entries(parameters).reduce(\n (intermediateString, [paramName, paramValue]) => intermediateString.replaceAll(getParamPlaceholder(paramName), `${paramValue}`),\n string\n )\n}\n\nexport const padStart = (str: string, length: number, chars: string): string => {\n if (str.length >= length) {\n return str\n }\n\n const padLength = length - str.length\n const padString = chars.repeat(Math.ceil(padLength / chars.length))\n\n return padString.slice(0, padLength) + str\n}\n\nexport const padEnd = (str: string, length: number, chars: string): string => {\n if (str.length >= length) {\n return str\n }\n\n const padLength = length - str.length\n const padString = chars.repeat(Math.ceil(padLength / chars.length))\n\n return str + padString.slice(0, padLength)\n}\n\nexport const isNumber = (value: string): boolean => {\n if (value.trim() === '') {\n return false\n }\n\n const num = Number(value)\n return !isNaN(num) && isFinite(num)\n}\n\nexport namespace Schema {\n const Text = Zod.string().trim().min(1)\n\n const TextNullable = Zod.string()\n .trim()\n .transform((val) => (isEmpty(val) ? null : val))\n}\n"],"mappings":"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","names":["Schema"]}
1
+ {"version":3,"sources":["../src/string.ts"],"sourcesContent":["import { UnknownRecord } from 'type-fest'\nimport { rest } from '@bessemer/cornerstone/array'\nimport { isNil } from '@bessemer/cornerstone/object'\nimport Zod from 'zod'\n\nexport const isString = (value: any): value is string => {\n return typeof value === 'string'\n}\n\nexport const isEmpty = (value: string): boolean => {\n return value.length === 0\n}\n\nexport const isEmptyOrNil = (value: string | null | undefined): boolean => {\n if (isNil(value)) {\n return true\n }\n\n return isEmpty(value)\n}\n\nexport const emptyToNull = (value: string): string | null => {\n if (isEmptyOrNil(value)) {\n return null\n }\n\n return value\n}\n\nexport const isBlank = (str?: string | null): boolean => {\n const testStr = str ?? ''\n return /^\\s*$/.test(testStr)\n}\n\nexport type StringSplitResult = { selection: string; separator: string; rest: string } | { selection: null; separator: null; rest: string }\n\nexport const splitFirst = (str: string, splitter: string | RegExp): StringSplitResult => {\n if (isString(splitter)) {\n const results = str.split(splitter)\n if (results.length === 1) {\n return { selection: null, separator: null, rest: str }\n }\n\n return { selection: results[0]!, separator: splitter, rest: rest(results).join(splitter) }\n } else {\n const match = splitter.exec(str)\n\n if (!match) {\n return { selection: null, separator: null, rest: str }\n }\n\n const matchIndex = match.index\n const beforeMatch = str.slice(0, matchIndex)\n const afterMatch = str.slice(matchIndex + match[0].length)\n const separator = match[0]\n return { selection: beforeMatch, separator, rest: afterMatch }\n }\n}\n\nexport const splitLast = (str: string, splitter: string | RegExp): StringSplitResult => {\n if (isString(splitter)) {\n const results = str.split(splitter)\n if (results.length === 1) {\n return { selection: null, separator: null, rest: str }\n }\n\n return { selection: results[results.length - 1]!, separator: splitter, rest: results.slice(0, results.length - 1).join(splitter) }\n } else {\n if (!splitter.global) {\n splitter = new RegExp(splitter.source, splitter.flags + 'g')\n }\n\n const matches = Array.from(str.matchAll(splitter))\n\n if (matches.length === 0) {\n return { selection: null, separator: null, rest: str }\n }\n\n // Use the last match\n const lastMatch = matches[matches.length - 1]!\n const matchIndex = lastMatch.index!\n const separator = lastMatch[0]!\n const beforeMatch = str.slice(0, matchIndex)\n const afterMatch = str.slice(matchIndex + separator.length)\n\n return {\n selection: afterMatch,\n separator: separator,\n rest: beforeMatch,\n }\n }\n}\n\nexport const splitLastRegex = (str: string, regex: RegExp): StringSplitResult => {\n // Find the last match using regex lastIndex\n let lastMatch: RegExpExecArray | null = null\n let match\n\n while ((match = regex.exec(str)) !== null) {\n lastMatch = match\n }\n\n if (!lastMatch) {\n return { selection: null, separator: null, rest: str }\n }\n\n const matchIndex = lastMatch.index!\n const separator = lastMatch[0]\n const beforeMatch = str.slice(0, matchIndex)\n const afterMatch = str.slice(matchIndex + separator.length)\n\n return {\n selection: afterMatch,\n separator,\n rest: beforeMatch,\n }\n}\n\nexport const splitAt = (str: string, index: number): [string, string] => {\n return [str.slice(0, index), str.slice(index)] as const\n}\n\nexport const removeStart = (string: string, substring: string): string => {\n if (!string.startsWith(substring)) {\n return string\n }\n\n return string.slice(substring.length)\n}\n\nexport const removeEnd = (string: string, substring: string): string => {\n if (!string.endsWith(substring)) {\n return string\n }\n\n return string.slice(0, -substring.length)\n}\n\nexport const mostCentralOccurrence = (str: string, substr: string): number | null => {\n const occurrences: number[] = []\n let index = str.indexOf(substr)\n\n while (index !== -1) {\n occurrences.push(index)\n index = str.indexOf(substr, index + 1)\n }\n\n if (occurrences.length === 0) {\n return null\n }\n\n const center = str.length / 2\n\n let closestIndex = occurrences[0]!\n let minDistance = Math.abs(center - closestIndex)\n\n for (let i = 1; i < occurrences.length; i++) {\n const distance = Math.abs(center - occurrences[i]!)\n if (distance < minDistance) {\n minDistance = distance\n closestIndex = occurrences[i]!\n }\n }\n\n return closestIndex\n}\n\nexport const replacePlaceholders = (string: string, parameters: UnknownRecord, getParamPlaceholder = (paramName: string) => `{{${paramName}}}`) => {\n return Object.entries(parameters).reduce(\n (intermediateString, [paramName, paramValue]) => intermediateString.replaceAll(getParamPlaceholder(paramName), `${paramValue}`),\n string\n )\n}\n\nexport const padStart = (str: string, length: number, chars: string): string => {\n if (str.length >= length) {\n return str\n }\n\n const padLength = length - str.length\n const padString = chars.repeat(Math.ceil(padLength / chars.length))\n\n return padString.slice(0, padLength) + str\n}\n\nexport const padEnd = (str: string, length: number, chars: string): string => {\n if (str.length >= length) {\n return str\n }\n\n const padLength = length - str.length\n const padString = chars.repeat(Math.ceil(padLength / chars.length))\n\n return str + padString.slice(0, padLength)\n}\n\nexport const isNumber = (value: string): boolean => {\n if (value.trim() === '') {\n return false\n }\n\n const num = Number(value)\n return !isNaN(num) && isFinite(num)\n}\n\nexport const capitalize = <T extends string>(str: T): Capitalize<T> => {\n return (str.charAt(0).toUpperCase() + str.slice(1)) as Capitalize<T>\n}\n\nexport namespace Schema {\n const Text = Zod.string().trim().min(1)\n\n const TextNullable = Zod.string()\n .trim()\n .transform((val) => (isEmpty(val) ? null : val))\n}\n"],"mappings":"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","names":["Schema"]}
@@ -1 +1 @@
1
- {"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/temporal/duration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/temporal/duration.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { Temporal } from "@js-temporal/polyfill";
4
4
  import { createNamespace } from "@bessemer/cornerstone/resource-key";
5
5
  import { fromComparator } from "@bessemer/cornerstone/equalitor";
6
6
  import { structuredTransform } from "@bessemer/cornerstone/zod-util";
7
+ import * as Results from "@bessemer/cornerstone/result";
7
8
  import { failure, success } from "@bessemer/cornerstone/result";
8
9
  import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
9
10
  import { isError } from "@bessemer/cornerstone/error/error";
@@ -41,7 +42,7 @@ function toLiteral(value) {
41
42
  }
42
43
  return from(value).toString();
43
44
  }
44
- var SchemaLiteral = structuredTransform(Zod.string(), (it) => parseString(it).map((it2) => toLiteral(it2)));
45
+ var SchemaLiteral = structuredTransform(Zod.string(), (it) => Results.map(parseString(it), (it2) => toLiteral(it2)));
45
46
  var SchemaInstance = structuredTransform(Zod.string(), parseString);
46
47
  var isDuration = (value) => {
47
48
  return value instanceof Temporal.Duration;