@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/array.d.ts CHANGED
@@ -3,12 +3,13 @@ import { Signable } from '@bessemer/cornerstone/signature';
3
3
  import { Either } from '@bessemer/cornerstone/either';
4
4
  import { Comparator } from '@bessemer/cornerstone/comparator';
5
5
  import { Arrayable } from 'type-fest';
6
- import { FiniteNumericBounds } from '@bessemer/cornerstone/range';
6
+ import { FiniteBounds } from '@bessemer/cornerstone/range';
7
7
  export declare const makeBy: <T>(n: number, f: (i: number) => T) => Array<T>;
8
- export declare const range: ([start, end]: FiniteNumericBounds) => Array<number>;
8
+ export declare const range: ([start, end]: FiniteBounds<number>) => Array<number>;
9
9
  export declare const repeat: <T>(a: T, n: number) => Array<T>;
10
10
  export declare const fromIterable: <A>(collection: Iterable<A>) => Array<A>;
11
11
  export declare const take: <T>(array: Array<T>, elementsToSkip?: number) => Array<T>;
12
+ export declare const takeWhile: <T>(array: Array<T>, predicate: (item: T, index: number) => boolean) => T[];
12
13
  /**
13
14
  * Determines if two arrays are equal by comparing each element using an Equalitor.
14
15
  * Returns `true` if all corresponding elements are equal according to the provided
@@ -103,7 +104,7 @@ export declare function groupBy<T, N extends string | number | symbol>(array: Ar
103
104
  export declare const rest: <T>(array: Array<T>, elementsToSkip?: number) => Array<T>;
104
105
  export declare const filterInPlace: <T>(array: Array<T>, predicate: (value: T, index: number, array: Array<T>) => boolean) => void;
105
106
  export declare const clear: (array: Array<unknown>) => void;
106
- export declare const bisect: <T, RightType, LeftType>(array: Array<T>, bisector: (element: T, index: number) => Either<RightType, LeftType>) => [Array<LeftType>, Array<RightType>];
107
+ export declare const bisect: <T, LeftType, RightType>(array: Array<T>, bisector: (element: T, index: number) => Either<LeftType, RightType>) => [Array<LeftType>, Array<RightType>];
107
108
  export declare const toArray: <T>(array: Arrayable<T>) => Array<T>;
108
109
  export declare const flatten: <T>(array: Array<Array<T>>) => Array<T>;
109
110
  //# sourceMappingURL=array.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"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"}
package/dist/array.js CHANGED
@@ -4,11 +4,13 @@ import { sign } from "@bessemer/cornerstone/signature";
4
4
  import { split } from "@bessemer/cornerstone/either";
5
5
  import { compareBy, natural as naturalComparison } from "@bessemer/cornerstone/comparator";
6
6
  import { isNil } from "@bessemer/cornerstone/object";
7
- import { assert } from "@bessemer/cornerstone/assertion";
7
+ import * as Assertions from "@bessemer/cornerstone/assertion";
8
+ import * as Maths from "@bessemer/cornerstone/math";
8
9
  var makeBy = (n, f) => {
9
- const max = Math.max(1, Math.floor(n));
10
- const out = new Array(max);
11
- for (let i = 0; i < max; i++) {
10
+ Assertions.assert(Maths.isWhole(n));
11
+ Assertions.assert(n >= 0);
12
+ const out = new Array(n);
13
+ for (let i = 0; i < n; i++) {
12
14
  out[i] = f(i);
13
15
  }
14
16
  return out;
@@ -25,6 +27,16 @@ var fromIterable = (collection) => {
25
27
  var take = (array, elementsToSkip = 1) => {
26
28
  return array.slice(elementsToSkip);
27
29
  };
30
+ var takeWhile = (array, predicate) => {
31
+ const result = [];
32
+ for (let i = 0; i < array.length; i++) {
33
+ if (!predicate(array[i], i)) {
34
+ break;
35
+ }
36
+ result.push(array[i]);
37
+ }
38
+ return result;
39
+ };
28
40
  var equalWith = (first2, second, equalitor) => {
29
41
  if (first2.length !== second.length) {
30
42
  return false;
@@ -140,7 +152,7 @@ var first = (array) => {
140
152
  return array.length > 0 ? array[0] : void 0;
141
153
  };
142
154
  var only = (array) => {
143
- assert(array.length === 1);
155
+ Assertions.assert(array.length === 1);
144
156
  return first(array);
145
157
  };
146
158
  var last = (array) => {
@@ -223,6 +235,7 @@ export {
223
235
  sortBy,
224
236
  sortWith,
225
237
  take,
238
+ takeWhile,
226
239
  toArray
227
240
  };
228
241
  //# sourceMappingURL=array.js.map
package/dist/array.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/array.ts"],"sourcesContent":["import { equalBy as equalitorEqualBy, Equalitor, natural as naturalEquality } from '@bessemer/cornerstone/equalitor'\nimport { sign, Signable, Signature } from '@bessemer/cornerstone/signature'\nimport { Either, split } from '@bessemer/cornerstone/either'\nimport { Comparator, compareBy, natural as naturalComparison } from '@bessemer/cornerstone/comparator'\nimport { Arrayable } from 'type-fest'\nimport { isNil } from '@bessemer/cornerstone/object'\nimport { FiniteNumericBounds } from '@bessemer/cornerstone/range'\nimport { assert } from '@bessemer/cornerstone/assertion'\n\nexport const makeBy = <T>(n: number, f: (i: number) => T): Array<T> => {\n const max = Math.max(1, Math.floor(n))\n const out = new Array(max)\n for (let i = 0; i < max; i++) {\n out[i] = f(i)\n }\n return out\n}\n\nexport const range = ([start, end]: FiniteNumericBounds): Array<number> => {\n return start <= end ? makeBy(end - start + 1, (i) => start + i) : [start]\n}\n\nexport const repeat = <T>(a: T, n: number): Array<T> => {\n return makeBy(n, () => a)\n}\n\nexport const fromIterable = <A>(collection: Iterable<A>): Array<A> => {\n return Array.isArray(collection) ? collection : Array.from(collection)\n}\n\nexport const take = <T>(array: Array<T>, elementsToSkip: number = 1): Array<T> => {\n return array.slice(elementsToSkip)\n}\n\n/**\n * Determines if two arrays are equal by comparing each element using an Equalitor.\n * Returns `true` if all corresponding elements are equal according to the provided\n * equalitor function in both arrays.\n *\n * **Example**\n *\n * ```ts\n * import { Arrays } from \"@bessemer/cornerstone\"\n *\n * const users1 = [{ id: 1, name: \"Alice\" }, { id: 2, name: \"Bob\" }]\n * const users2 = [{ id: 1, name: \"Alice\" }, { id: 2, name: \"Bob\" }]\n *\n * const result = Arrays.equalWith(users1, users2, (a, b) => a.id === b.id && a.name === b.name)\n * console.log(result) // true\n *\n * const numbers1 = [1.1, 2.2, 3.3]\n * const numbers2 = [1.0, 2.0, 3.0]\n *\n * const closeEnough = Arrays.equalWith(numbers1, numbers2, (a, b) => Math.abs(a - b) < 0.5)\n * console.log(closeEnough) // false\n * ```\n *\n * @category comparison\n */\nexport const equalWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean => {\n if (first.length !== second.length) {\n return false\n }\n\n return first.every((element, index) => equalitor(element, second[index]!))\n}\n\n/**\n * Determines if two arrays are equal by comparing mapped values from each element.\n * Returns `true` if all corresponding mapped values are equal according to the\n * provided Equalitor or natural equality.\n *\n * **Example**\n *\n * ```ts\n * import { Arrays } from \"@bessemer/cornerstone\"\n *\n * const users1 = [{ id: 1, name: \"Alice\" }, { id: 2, name: \"Bob\" }]\n * const users2 = [{ id: 1, name: \"Alice\" }, { id: 2, name: \"Bob\" }]\n *\n * // Compare by mapped property using natural equality\n * const result = Arrays.equalBy(users1, users2, user => user.id)\n * console.log(result) // true\n *\n * // Compare by mapped property using custom Equalitor\n * const products1 = [{ name: \"Apple\", price: 1.99 }, { name: \"Orange\", price: 2.49 }]\n * const products2 = [{ name: \"Apple\", price: 2.00 }, { name: \"Orange\", price: 2.50 }]\n *\n * const closeEnough = Arrays.equalBy(\n * products1,\n * products2,\n * product => product.price,\n * (a, b) => Math.abs(a - b) < 0.1\n * )\n * console.log(closeEnough) // true\n * ```\n *\n * @category comparison\n */\nexport function equalBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean\nexport function equalBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean\nexport function equalBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): boolean {\n if (isNil(equalitor)) {\n return equalWith(\n first,\n second,\n equalitorEqualBy((it) => sign(mapper(it) as Signable), naturalEquality())\n )\n } else {\n return equalWith(first, second, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const equal = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => {\n return equalBy(first, second, sign)\n}\n\nexport const differenceWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n return first.filter((firstItem) => !second.some((it) => equalitor(firstItem, it)))\n}\n\nexport function differenceBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): Array<T>\nexport function differenceBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>\nexport function differenceBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): Array<T> {\n if (isNil(equalitor)) {\n return differenceWith(\n first,\n second,\n equalitorEqualBy((it) => sign(mapper(it) as Signable), naturalEquality())\n )\n } else {\n return differenceWith(first, second, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const difference = <T extends Signable>(first: Array<T>, second: Array<T>): Array<T> => {\n return differenceBy(first, second, sign)\n}\n\nexport const removeWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): Array<T> => {\n return differenceWith(array, [element], equalitor)\n}\n\nexport function removeBy<T>(array: Array<T>, element: T, mapper: (element: T) => Signable): Array<T>\nexport function removeBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>\nexport function removeBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor?: Equalitor<N>): Array<T> {\n return differenceBy(array, [element], mapper, equalitor as any)\n}\n\nexport const remove = <T extends Signable>(array: Array<T>, element: T): Array<T> => {\n return difference(array, [element])\n}\n\nexport const containsWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): boolean => {\n return array.some((it) => equalitor(it, element))\n}\n\nexport function containsBy<T>(array: Array<T>, element: T, mapper: (element: T) => Signable): boolean\nexport function containsBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean\nexport function containsBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor?: Equalitor<N>): boolean {\n if (isNil(equalitor)) {\n return containsWith(\n array,\n element,\n equalitorEqualBy((it) => sign(mapper(it) as Signable), naturalEquality())\n )\n } else {\n return containsWith(array, element, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const contains = <T extends Signable>(array: Array<T>, element: T): boolean => containsBy(array, element, sign)\n\nexport const containsAllWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean =>\n isEmpty(differenceWith(second, first, equalitor))\n\nexport function containsAllBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean\nexport function containsAllBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean\nexport function containsAllBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): boolean {\n return isEmpty(differenceBy(second, first, mapper, equalitor as any))\n}\n\nexport const containsAll = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => isEmpty(difference(second, first))\n\nexport const dedupeWith = <T>(array: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n const result: Array<T> = []\n\n for (const element of array) {\n const isDuplicate = result.some((existing) => equalitor(existing, element))\n if (!isDuplicate) {\n result.push(element)\n }\n }\n\n return result\n}\n\nexport function dedupeBy<T>(array: Array<T>, mapper: (element: T) => Signable): Array<T>\nexport function dedupeBy<T, N>(array: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>\nexport function dedupeBy<T, N>(array: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): Array<T> {\n if (isNil(equalitor)) {\n return dedupeWith(array, equalitorEqualBy(mapper as any, naturalEquality()))\n } else {\n return dedupeWith(array, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const dedupe = <T extends Signable>(array: Array<T>): Array<T> => {\n return dedupeBy(array, sign)\n}\n\nexport const sortWith = <T>(array: Array<T>, comparator: Comparator<T>): Array<T> => {\n return [...array].sort(comparator)\n}\n\nexport function sortBy<T>(array: Array<T>, mapper: (element: T) => Signable): Array<T>\nexport function sortBy<T, N>(array: Array<T>, mapper: (element: T) => N, comparator: Comparator<N>): Array<T>\nexport function sortBy<T, N>(array: Array<T>, mapper: (element: T) => N, comparator?: Comparator<N>): Array<T> {\n if (isNil(comparator)) {\n return sortWith(\n array,\n compareBy((it) => sign(mapper(it as any) as Signature), naturalComparison())\n )\n } else {\n return sortWith(array, compareBy(mapper, comparator))\n }\n}\n\nexport const sort = <T extends Signable>(array: Array<T>): Array<T> => sortBy(array, sign)\n\nexport const concatenate = <T>(array: Array<T>, ...values: Array<T | Array<T>>): Array<T> => {\n const result = [...array]\n\n for (const value of values) {\n if (Array.isArray(value)) {\n result.push(...value)\n } else {\n result.push(value)\n }\n }\n\n return result\n}\n\nexport const first = <T>(array: Array<T>): T | undefined => {\n return array.length > 0 ? array[0] : undefined\n}\n\nexport const only = <T>(array: Array<T>): T => {\n assert(array.length === 1)\n return first(array)!\n}\n\nexport const last = <T>(array: Array<T>): T | undefined => {\n return array.length > 0 ? array[array.length - 1] : undefined\n}\n\nexport const isEmpty = <T>(array: Array<T>): boolean => {\n return array.length === 0\n}\n\n// JOHN i don't think this function should exist here... maybe examine the use cases more thoroughly\nexport function groupBy<T, N extends string | number | symbol>(array: Array<T>, iteratee: (it: T) => N): Record<N, Array<T>> {\n return array.reduce<Record<N, Array<T>>>((result, value) => {\n const key = iteratee(value)\n\n if (!result[key]) {\n result[key] = []\n }\n\n result[key].push(value)\n return result\n }, {} as any)\n}\n\nexport const rest = <T>(array: Array<T>, elementsToSkip: number = 1): Array<T> => {\n return array.slice(elementsToSkip)\n}\n\nexport const filterInPlace = <T>(array: Array<T>, predicate: (value: T, index: number, array: Array<T>) => boolean): void => {\n for (let i = array.length - 1; i >= 0; i--) {\n const value = array[i]\n if (value !== undefined && !predicate(value, i, array)) {\n array.splice(i, 1)\n }\n }\n}\n\nexport const clear = (array: Array<unknown>): void => {\n filterInPlace(array, () => false)\n}\n\nexport const bisect = <T, RightType, LeftType>(\n array: Array<T>,\n bisector: (element: T, index: number) => Either<RightType, LeftType>\n): [Array<LeftType>, Array<RightType>] => {\n return split(array.map(bisector))\n}\n\nexport const toArray = <T>(array: Arrayable<T>): Array<T> => {\n if (Array.isArray(array)) {\n return array\n }\n\n return [array]\n}\n\nexport const flatten = <T>(array: Array<Array<T>>): Array<T> => {\n return array.flatMap((it) => it)\n}\n"],"mappings":";AAAA,SAAS,WAAW,kBAA6B,WAAW,uBAAuB;AACnF,SAAS,YAAiC;AAC1C,SAAiB,aAAa;AAC9B,SAAqB,WAAW,WAAW,yBAAyB;AAEpE,SAAS,aAAa;AAEtB,SAAS,cAAc;AAEhB,IAAM,SAAS,CAAI,GAAW,MAAkC;AACrE,QAAM,MAAM,KAAK,IAAI,GAAG,KAAK,MAAM,CAAC,CAAC;AACrC,QAAM,MAAM,IAAI,MAAM,GAAG;AACzB,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,QAAI,CAAC,IAAI,EAAE,CAAC;AAAA,EACd;AACA,SAAO;AACT;AAEO,IAAM,QAAQ,CAAC,CAAC,OAAO,GAAG,MAA0C;AACzE,SAAO,SAAS,MAAM,OAAO,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK;AAC1E;AAEO,IAAM,SAAS,CAAI,GAAM,MAAwB;AACtD,SAAO,OAAO,GAAG,MAAM,CAAC;AAC1B;AAEO,IAAM,eAAe,CAAI,eAAsC;AACpE,SAAO,MAAM,QAAQ,UAAU,IAAI,aAAa,MAAM,KAAK,UAAU;AACvE;AAEO,IAAM,OAAO,CAAI,OAAiB,iBAAyB,MAAgB;AAChF,SAAO,MAAM,MAAM,cAAc;AACnC;AA2BO,IAAM,YAAY,CAAIA,QAAiB,QAAkB,cAAqC;AACnG,MAAIA,OAAM,WAAW,OAAO,QAAQ;AAClC,WAAO;AAAA,EACT;AAEA,SAAOA,OAAM,MAAM,CAAC,SAAS,UAAU,UAAU,SAAS,OAAO,KAAK,CAAE,CAAC;AAC3E;AAoCO,SAAS,QAAcA,QAAiB,QAAkB,QAA2B,WAAmC;AAC7H,MAAI,MAAM,SAAS,GAAG;AACpB,WAAO;AAAA,MACLA;AAAA,MACA;AAAA,MACA,iBAAiB,CAAC,OAAO,KAAK,OAAO,EAAE,CAAa,GAAG,gBAAgB,CAAC;AAAA,IAC1E;AAAA,EACF,OAAO;AACL,WAAO,UAAUA,QAAO,QAAQ,iBAAiB,QAAQ,SAAS,CAAC;AAAA,EACrE;AACF;AAEO,IAAM,QAAQ,CAAqBA,QAAiB,WAA8B;AACvF,SAAO,QAAQA,QAAO,QAAQ,IAAI;AACpC;AAEO,IAAM,iBAAiB,CAAIA,QAAiB,QAAkB,cAAsC;AACzG,SAAOA,OAAM,OAAO,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,OAAO,UAAU,WAAW,EAAE,CAAC,CAAC;AACnF;AAIO,SAAS,aAAmBA,QAAiB,QAAkB,QAA2B,WAAoC;AACnI,MAAI,MAAM,SAAS,GAAG;AACpB,WAAO;AAAA,MACLA;AAAA,MACA;AAAA,MACA,iBAAiB,CAAC,OAAO,KAAK,OAAO,EAAE,CAAa,GAAG,gBAAgB,CAAC;AAAA,IAC1E;AAAA,EACF,OAAO;AACL,WAAO,eAAeA,QAAO,QAAQ,iBAAiB,QAAQ,SAAS,CAAC;AAAA,EAC1E;AACF;AAEO,IAAM,aAAa,CAAqBA,QAAiB,WAA+B;AAC7F,SAAO,aAAaA,QAAO,QAAQ,IAAI;AACzC;AAEO,IAAM,aAAa,CAAI,OAAiB,SAAY,cAAsC;AAC/F,SAAO,eAAe,OAAO,CAAC,OAAO,GAAG,SAAS;AACnD;AAIO,SAAS,SAAe,OAAiB,SAAY,QAA2B,WAAoC;AACzH,SAAO,aAAa,OAAO,CAAC,OAAO,GAAG,QAAQ,SAAgB;AAChE;AAEO,IAAM,SAAS,CAAqB,OAAiB,YAAyB;AACnF,SAAO,WAAW,OAAO,CAAC,OAAO,CAAC;AACpC;AAEO,IAAM,eAAe,CAAI,OAAiB,SAAY,cAAqC;AAChG,SAAO,MAAM,KAAK,CAAC,OAAO,UAAU,IAAI,OAAO,CAAC;AAClD;AAIO,SAAS,WAAiB,OAAiB,SAAY,QAA2B,WAAmC;AAC1H,MAAI,MAAM,SAAS,GAAG;AACpB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,iBAAiB,CAAC,OAAO,KAAK,OAAO,EAAE,CAAa,GAAG,gBAAgB,CAAC;AAAA,IAC1E;AAAA,EACF,OAAO;AACL,WAAO,aAAa,OAAO,SAAS,iBAAiB,QAAQ,SAAS,CAAC;AAAA,EACzE;AACF;AAEO,IAAM,WAAW,CAAqB,OAAiB,YAAwB,WAAW,OAAO,SAAS,IAAI;AAE9G,IAAM,kBAAkB,CAAIA,QAAiB,QAAkB,cACpE,QAAQ,eAAe,QAAQA,QAAO,SAAS,CAAC;AAI3C,SAAS,cAAoBA,QAAiB,QAAkB,QAA2B,WAAmC;AACnI,SAAO,QAAQ,aAAa,QAAQA,QAAO,QAAQ,SAAgB,CAAC;AACtE;AAEO,IAAM,cAAc,CAAqBA,QAAiB,WAA8B,QAAQ,WAAW,QAAQA,MAAK,CAAC;AAEzH,IAAM,aAAa,CAAI,OAAiB,cAAsC;AACnF,QAAM,SAAmB,CAAC;AAE1B,aAAW,WAAW,OAAO;AAC3B,UAAM,cAAc,OAAO,KAAK,CAAC,aAAa,UAAU,UAAU,OAAO,CAAC;AAC1E,QAAI,CAAC,aAAa;AAChB,aAAO,KAAK,OAAO;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AACT;AAIO,SAAS,SAAe,OAAiB,QAA2B,WAAoC;AAC7G,MAAI,MAAM,SAAS,GAAG;AACpB,WAAO,WAAW,OAAO,iBAAiB,QAAe,gBAAgB,CAAC,CAAC;AAAA,EAC7E,OAAO;AACL,WAAO,WAAW,OAAO,iBAAiB,QAAQ,SAAS,CAAC;AAAA,EAC9D;AACF;AAEO,IAAM,SAAS,CAAqB,UAA8B;AACvE,SAAO,SAAS,OAAO,IAAI;AAC7B;AAEO,IAAM,WAAW,CAAI,OAAiB,eAAwC;AACnF,SAAO,CAAC,GAAG,KAAK,EAAE,KAAK,UAAU;AACnC;AAIO,SAAS,OAAa,OAAiB,QAA2B,YAAsC;AAC7G,MAAI,MAAM,UAAU,GAAG;AACrB,WAAO;AAAA,MACL;AAAA,MACA,UAAU,CAAC,OAAO,KAAK,OAAO,EAAS,CAAc,GAAG,kBAAkB,CAAC;AAAA,IAC7E;AAAA,EACF,OAAO;AACL,WAAO,SAAS,OAAO,UAAU,QAAQ,UAAU,CAAC;AAAA,EACtD;AACF;AAEO,IAAM,OAAO,CAAqB,UAA8B,OAAO,OAAO,IAAI;AAElF,IAAM,cAAc,CAAI,UAAoB,WAA0C;AAC3F,QAAM,SAAS,CAAC,GAAG,KAAK;AAExB,aAAW,SAAS,QAAQ;AAC1B,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO,KAAK,GAAG,KAAK;AAAA,IACtB,OAAO;AACL,aAAO,KAAK,KAAK;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,QAAQ,CAAI,UAAmC;AAC1D,SAAO,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI;AACvC;AAEO,IAAM,OAAO,CAAI,UAAuB;AAC7C,SAAO,MAAM,WAAW,CAAC;AACzB,SAAO,MAAM,KAAK;AACpB;AAEO,IAAM,OAAO,CAAI,UAAmC;AACzD,SAAO,MAAM,SAAS,IAAI,MAAM,MAAM,SAAS,CAAC,IAAI;AACtD;AAEO,IAAM,UAAU,CAAI,UAA6B;AACtD,SAAO,MAAM,WAAW;AAC1B;AAGO,SAAS,QAA+C,OAAiB,UAA6C;AAC3H,SAAO,MAAM,OAA4B,CAAC,QAAQ,UAAU;AAC1D,UAAM,MAAM,SAAS,KAAK;AAE1B,QAAI,CAAC,OAAO,GAAG,GAAG;AAChB,aAAO,GAAG,IAAI,CAAC;AAAA,IACjB;AAEA,WAAO,GAAG,EAAE,KAAK,KAAK;AACtB,WAAO;AAAA,EACT,GAAG,CAAC,CAAQ;AACd;AAEO,IAAM,OAAO,CAAI,OAAiB,iBAAyB,MAAgB;AAChF,SAAO,MAAM,MAAM,cAAc;AACnC;AAEO,IAAM,gBAAgB,CAAI,OAAiB,cAA2E;AAC3H,WAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,UAAM,QAAQ,MAAM,CAAC;AACrB,QAAI,UAAU,UAAa,CAAC,UAAU,OAAO,GAAG,KAAK,GAAG;AACtD,YAAM,OAAO,GAAG,CAAC;AAAA,IACnB;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,CAAC,UAAgC;AACpD,gBAAc,OAAO,MAAM,KAAK;AAClC;AAEO,IAAM,SAAS,CACpB,OACA,aACwC;AACxC,SAAO,MAAM,MAAM,IAAI,QAAQ,CAAC;AAClC;AAEO,IAAM,UAAU,CAAI,UAAkC;AAC3D,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,SAAO,CAAC,KAAK;AACf;AAEO,IAAM,UAAU,CAAI,UAAqC;AAC9D,SAAO,MAAM,QAAQ,CAAC,OAAO,EAAE;AACjC;","names":["first"]}
1
+ {"version":3,"sources":["../src/array.ts"],"sourcesContent":["import { equalBy as equalitorEqualBy, Equalitor, natural as naturalEquality } from '@bessemer/cornerstone/equalitor'\nimport { sign, Signable, Signature } from '@bessemer/cornerstone/signature'\nimport { Either, split } from '@bessemer/cornerstone/either'\nimport { Comparator, compareBy, natural as naturalComparison } from '@bessemer/cornerstone/comparator'\nimport { Arrayable } from 'type-fest'\nimport { isNil } from '@bessemer/cornerstone/object'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\nimport * as Maths from '@bessemer/cornerstone/math'\nimport { FiniteBounds } from '@bessemer/cornerstone/range'\n\nexport const makeBy = <T>(n: number, f: (i: number) => T): Array<T> => {\n Assertions.assert(Maths.isWhole(n))\n Assertions.assert(n >= 0)\n\n const out = new Array(n)\n for (let i = 0; i < n; i++) {\n out[i] = f(i)\n }\n\n return out\n}\n\nexport const range = ([start, end]: FiniteBounds<number>): Array<number> => {\n return start <= end ? makeBy(end - start + 1, (i) => start + i) : [start]\n}\n\nexport const repeat = <T>(a: T, n: number): Array<T> => {\n return makeBy(n, () => a)\n}\n\nexport const fromIterable = <A>(collection: Iterable<A>): Array<A> => {\n return Array.isArray(collection) ? collection : Array.from(collection)\n}\n\nexport const take = <T>(array: Array<T>, elementsToSkip: number = 1): Array<T> => {\n return array.slice(elementsToSkip)\n}\n\nexport const takeWhile = <T>(array: Array<T>, predicate: (item: T, index: number) => boolean): T[] => {\n const result: T[] = []\n for (let i = 0; i < array.length; i++) {\n if (!predicate(array[i]!, i)) {\n break\n }\n\n result.push(array[i]!)\n }\n return result\n}\n\n/**\n * Determines if two arrays are equal by comparing each element using an Equalitor.\n * Returns `true` if all corresponding elements are equal according to the provided\n * equalitor function in both arrays.\n *\n * **Example**\n *\n * ```ts\n * import { Arrays } from \"@bessemer/cornerstone\"\n *\n * const users1 = [{ id: 1, name: \"Alice\" }, { id: 2, name: \"Bob\" }]\n * const users2 = [{ id: 1, name: \"Alice\" }, { id: 2, name: \"Bob\" }]\n *\n * const result = Arrays.equalWith(users1, users2, (a, b) => a.id === b.id && a.name === b.name)\n * console.log(result) // true\n *\n * const numbers1 = [1.1, 2.2, 3.3]\n * const numbers2 = [1.0, 2.0, 3.0]\n *\n * const closeEnough = Arrays.equalWith(numbers1, numbers2, (a, b) => Math.abs(a - b) < 0.5)\n * console.log(closeEnough) // false\n * ```\n *\n * @category comparison\n */\nexport const equalWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean => {\n if (first.length !== second.length) {\n return false\n }\n\n return first.every((element, index) => equalitor(element, second[index]!))\n}\n\n/**\n * Determines if two arrays are equal by comparing mapped values from each element.\n * Returns `true` if all corresponding mapped values are equal according to the\n * provided Equalitor or natural equality.\n *\n * **Example**\n *\n * ```ts\n * import { Arrays } from \"@bessemer/cornerstone\"\n *\n * const users1 = [{ id: 1, name: \"Alice\" }, { id: 2, name: \"Bob\" }]\n * const users2 = [{ id: 1, name: \"Alice\" }, { id: 2, name: \"Bob\" }]\n *\n * // Compare by mapped property using natural equality\n * const result = Arrays.equalBy(users1, users2, user => user.id)\n * console.log(result) // true\n *\n * // Compare by mapped property using custom Equalitor\n * const products1 = [{ name: \"Apple\", price: 1.99 }, { name: \"Orange\", price: 2.49 }]\n * const products2 = [{ name: \"Apple\", price: 2.00 }, { name: \"Orange\", price: 2.50 }]\n *\n * const closeEnough = Arrays.equalBy(\n * products1,\n * products2,\n * product => product.price,\n * (a, b) => Math.abs(a - b) < 0.1\n * )\n * console.log(closeEnough) // true\n * ```\n *\n * @category comparison\n */\nexport function equalBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean\nexport function equalBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean\nexport function equalBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): boolean {\n if (isNil(equalitor)) {\n return equalWith(\n first,\n second,\n equalitorEqualBy((it) => sign(mapper(it) as Signable), naturalEquality())\n )\n } else {\n return equalWith(first, second, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const equal = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => {\n return equalBy(first, second, sign)\n}\n\nexport const differenceWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n return first.filter((firstItem) => !second.some((it) => equalitor(firstItem, it)))\n}\n\nexport function differenceBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): Array<T>\nexport function differenceBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>\nexport function differenceBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): Array<T> {\n if (isNil(equalitor)) {\n return differenceWith(\n first,\n second,\n equalitorEqualBy((it) => sign(mapper(it) as Signable), naturalEquality())\n )\n } else {\n return differenceWith(first, second, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const difference = <T extends Signable>(first: Array<T>, second: Array<T>): Array<T> => {\n return differenceBy(first, second, sign)\n}\n\nexport const removeWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): Array<T> => {\n return differenceWith(array, [element], equalitor)\n}\n\nexport function removeBy<T>(array: Array<T>, element: T, mapper: (element: T) => Signable): Array<T>\nexport function removeBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>\nexport function removeBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor?: Equalitor<N>): Array<T> {\n return differenceBy(array, [element], mapper, equalitor as any)\n}\n\nexport const remove = <T extends Signable>(array: Array<T>, element: T): Array<T> => {\n return difference(array, [element])\n}\n\nexport const containsWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): boolean => {\n return array.some((it) => equalitor(it, element))\n}\n\nexport function containsBy<T>(array: Array<T>, element: T, mapper: (element: T) => Signable): boolean\nexport function containsBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean\nexport function containsBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor?: Equalitor<N>): boolean {\n if (isNil(equalitor)) {\n return containsWith(\n array,\n element,\n equalitorEqualBy((it) => sign(mapper(it) as Signable), naturalEquality())\n )\n } else {\n return containsWith(array, element, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const contains = <T extends Signable>(array: Array<T>, element: T): boolean => containsBy(array, element, sign)\n\nexport const containsAllWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean =>\n isEmpty(differenceWith(second, first, equalitor))\n\nexport function containsAllBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean\nexport function containsAllBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean\nexport function containsAllBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): boolean {\n return isEmpty(differenceBy(second, first, mapper, equalitor as any))\n}\n\nexport const containsAll = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => isEmpty(difference(second, first))\n\nexport const dedupeWith = <T>(array: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n const result: Array<T> = []\n\n for (const element of array) {\n const isDuplicate = result.some((existing) => equalitor(existing, element))\n if (!isDuplicate) {\n result.push(element)\n }\n }\n\n return result\n}\n\nexport function dedupeBy<T>(array: Array<T>, mapper: (element: T) => Signable): Array<T>\nexport function dedupeBy<T, N>(array: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>\nexport function dedupeBy<T, N>(array: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): Array<T> {\n if (isNil(equalitor)) {\n return dedupeWith(array, equalitorEqualBy(mapper as any, naturalEquality()))\n } else {\n return dedupeWith(array, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const dedupe = <T extends Signable>(array: Array<T>): Array<T> => {\n return dedupeBy(array, sign)\n}\n\nexport const sortWith = <T>(array: Array<T>, comparator: Comparator<T>): Array<T> => {\n return [...array].sort(comparator)\n}\n\nexport function sortBy<T>(array: Array<T>, mapper: (element: T) => Signable): Array<T>\nexport function sortBy<T, N>(array: Array<T>, mapper: (element: T) => N, comparator: Comparator<N>): Array<T>\nexport function sortBy<T, N>(array: Array<T>, mapper: (element: T) => N, comparator?: Comparator<N>): Array<T> {\n if (isNil(comparator)) {\n return sortWith(\n array,\n compareBy((it) => sign(mapper(it as any) as Signature), naturalComparison())\n )\n } else {\n return sortWith(array, compareBy(mapper, comparator))\n }\n}\n\nexport const sort = <T extends Signable>(array: Array<T>): Array<T> => sortBy(array, sign)\n\nexport const concatenate = <T>(array: Array<T>, ...values: Array<T | Array<T>>): Array<T> => {\n const result = [...array]\n\n for (const value of values) {\n if (Array.isArray(value)) {\n result.push(...value)\n } else {\n result.push(value)\n }\n }\n\n return result\n}\n\nexport const first = <T>(array: Array<T>): T | undefined => {\n return array.length > 0 ? array[0] : undefined\n}\n\nexport const only = <T>(array: Array<T>): T => {\n Assertions.assert(array.length === 1)\n return first(array)!\n}\n\nexport const last = <T>(array: Array<T>): T | undefined => {\n return array.length > 0 ? array[array.length - 1] : undefined\n}\n\nexport const isEmpty = <T>(array: Array<T>): boolean => {\n return array.length === 0\n}\n\n// JOHN i don't think this function should exist here... maybe examine the use cases more thoroughly\nexport function groupBy<T, N extends string | number | symbol>(array: Array<T>, iteratee: (it: T) => N): Record<N, Array<T>> {\n return array.reduce<Record<N, Array<T>>>((result, value) => {\n const key = iteratee(value)\n\n if (!result[key]) {\n result[key] = []\n }\n\n result[key].push(value)\n return result\n }, {} as any)\n}\n\nexport const rest = <T>(array: Array<T>, elementsToSkip: number = 1): Array<T> => {\n return array.slice(elementsToSkip)\n}\n\nexport const filterInPlace = <T>(array: Array<T>, predicate: (value: T, index: number, array: Array<T>) => boolean): void => {\n for (let i = array.length - 1; i >= 0; i--) {\n const value = array[i]\n if (value !== undefined && !predicate(value, i, array)) {\n array.splice(i, 1)\n }\n }\n}\n\nexport const clear = (array: Array<unknown>): void => {\n filterInPlace(array, () => false)\n}\n\nexport const bisect = <T, LeftType, RightType>(\n array: Array<T>,\n bisector: (element: T, index: number) => Either<LeftType, RightType>\n): [Array<LeftType>, Array<RightType>] => {\n return split(array.map(bisector))\n}\n\nexport const toArray = <T>(array: Arrayable<T>): Array<T> => {\n if (Array.isArray(array)) {\n return array\n }\n\n return [array]\n}\n\nexport const flatten = <T>(array: Array<Array<T>>): Array<T> => {\n return array.flatMap((it) => it)\n}\n"],"mappings":"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","names":["first"]}
package/dist/either.d.ts CHANGED
@@ -1,50 +1,33 @@
1
+ declare const TypeToken = "__Either.type";
1
2
  export declare enum EitherType {
2
3
  Left = "Left",
3
4
  Right = "Right"
4
5
  }
6
+ declare const __types: unique symbol;
7
+ export type NominalTyping2<NominalType> = {
8
+ [__types]: NominalType;
9
+ };
10
+ export type NominalType2<ConcreteType, NominalType> = ConcreteType & NominalTyping2<NominalType>;
11
+ export type Left<LeftType> = NominalType2<LeftType, 'Left'>;
5
12
  export type Right<RightType> = {
6
- type: EitherType.Right;
13
+ [TypeToken]: EitherType.Right;
7
14
  value: RightType;
8
- isRight: true;
9
- isLeft: false;
10
- map: <T>(mapper: (element: RightType) => T) => T extends Promise<infer U> ? Promise<Right<U>> : Right<T>;
11
- mapLeft: () => Right<RightType>;
12
- [Symbol.iterator](): Generator<Either<RightType, never>, RightType>;
13
- };
14
- export type Left<LeftType> = {
15
- type: EitherType.Left;
16
- value: LeftType;
17
- isRight: false;
18
- isLeft: true;
19
- map: () => Left<LeftType>;
20
- mapLeft: <T>(mapper: (element: LeftType) => T) => T extends Promise<infer U> ? Promise<Left<U>> : Left<T>;
21
- [Symbol.iterator](): Generator<Either<never, LeftType>, never>;
22
15
  };
23
- export type Either<RightType, LeftType> = Left<LeftType> | Right<RightType>;
24
- export declare class RightImpl<RightType> implements Right<RightType> {
25
- readonly value: RightType;
26
- readonly type: EitherType.Right;
27
- readonly isRight = true;
28
- readonly isLeft = false;
29
- constructor(value: RightType);
30
- map: <T>(mapper: (element: RightType) => T) => T extends Promise<infer U> ? Promise<Right<U>> : Right<T>;
31
- mapLeft: () => Right<RightType>;
32
- [Symbol.iterator](): Generator<Either<RightType, never>, RightType>;
33
- }
34
- export declare class LeftImpl<LeftType> implements Left<LeftType> {
35
- readonly value: LeftType;
36
- readonly type = EitherType.Left;
37
- readonly isRight = false;
38
- readonly isLeft = true;
39
- constructor(value: LeftType);
40
- map: () => Left<LeftType>;
41
- mapLeft: <T>(mapper: (element: LeftType) => T) => T extends Promise<infer U> ? Promise<Left<U>> : Left<T>;
42
- [Symbol.iterator](): Generator<Either<never, LeftType>, never>;
43
- }
16
+ export type Either<LeftType, RightType> = Left<LeftType> | Right<RightType>;
44
17
  export declare const left: <LeftType>(value: LeftType) => Left<LeftType>;
45
18
  export declare const right: <RightType>(value: RightType) => Right<RightType>;
46
- export declare const split: <RightType, LeftType>(array: Array<Either<RightType, LeftType>>) => [Array<LeftType>, Array<RightType>];
47
- export declare const buildGenerator: <EitherType extends Either<any, any>, TGen extends () => Generator<EitherType> | AsyncGenerator<EitherType>>(lift: (val: any) => EitherType) => ((generatorFn: TGen) => TGen extends () => Generator<EitherType, infer R> ? EitherType : TGen extends () => AsyncGenerator<EitherType, infer R> ? Promise<EitherType> : never);
48
- export declare function gen<TGen extends () => Generator<Either<any, any>>>(generatorFn: TGen): TGen extends () => Generator<Either<any, infer L>, infer R> ? Either<R, L> : never;
49
- export declare function gen<TGen extends () => AsyncGenerator<Either<any, any>>>(generatorFn: TGen): Promise<TGen extends () => AsyncGenerator<Either<any, infer L>, infer R> ? Either<R, L> : never>;
19
+ export declare const isLeft: <LeftType, RightType>(value: Either<LeftType, RightType>) => value is Left<LeftType>;
20
+ export declare const isRight: <LeftType, RightType>(value: Either<LeftType, RightType>) => value is Right<RightType>;
21
+ export declare function assertLeft<LeftType, RightType>(value: Either<LeftType, RightType>): asserts value is Left<LeftType>;
22
+ export declare function assertRight<LeftType, RightType>(value: Either<LeftType, RightType>): asserts value is Right<RightType>;
23
+ export declare function map<LeftType, RightType, MappedType>(value: Either<LeftType, RightType>, mapper: (value: LeftType) => Promise<MappedType>): Promise<Either<MappedType, RightType>>;
24
+ export declare function map<LeftType, RightType, MappedType>(value: Either<LeftType, RightType>, mapper: (value: LeftType) => MappedType): Either<MappedType, RightType>;
25
+ export declare function flatMap<LeftType, RightType, MappedLeftType, MappedRightType>(value: Either<LeftType, RightType>, mapper: (value: LeftType) => Promise<Either<MappedLeftType, MappedRightType>>): Promise<Either<MappedLeftType, RightType | MappedRightType>>;
26
+ export declare function flatMap<LeftType, RightType, MappedLeftType, MappedRightType>(value: Either<LeftType, RightType>, mapper: (value: LeftType) => Either<MappedLeftType, MappedRightType>): Either<MappedLeftType, RightType | MappedRightType>;
27
+ export declare function mapRight<LeftType, RightType, MappedType>(value: Either<LeftType, RightType>, mapper: (value: RightType) => Promise<MappedType>): Promise<Either<LeftType, MappedType>>;
28
+ export declare function mapRight<LeftType, RightType, MappedType>(value: Either<LeftType, RightType>, mapper: (value: RightType) => MappedType): Either<LeftType, MappedType>;
29
+ export declare function flatMapRight<LeftType, RightType, MappedLeftType, MappedRightType>(value: Either<LeftType, RightType>, mapper: (value: RightType) => Promise<Either<MappedLeftType, MappedRightType>>): Promise<Either<LeftType | MappedLeftType, MappedRightType>>;
30
+ export declare function flatMapRight<LeftType, RightType, MappedLeftType, MappedRightType>(value: Either<LeftType, RightType>, mapper: (value: RightType) => Either<MappedLeftType, MappedRightType>): Either<LeftType | MappedLeftType, MappedRightType>;
31
+ export declare const split: <LeftType, RightType>(array: Array<Either<LeftType, RightType>>) => [Array<LeftType>, Array<RightType>];
32
+ export {};
50
33
  //# sourceMappingURL=either.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"either.d.ts","sourceRoot":"","sources":["../src/either.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"either.d.ts","sourceRoot":"","sources":["../src/either.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,SAAS,kBAAkB,CAAA;AAEjC,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,OAAO,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,CAAA;AACpC,MAAM,MAAM,cAAc,CAAC,WAAW,IAAI;IAAE,CAAC,OAAO,CAAC,EAAE,WAAW,CAAA;CAAE,CAAA;AACpE,MAAM,MAAM,YAAY,CAAC,YAAY,EAAE,WAAW,IAAI,YAAY,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;AAEhG,MAAM,MAAM,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;AAC3D,MAAM,MAAM,KAAK,CAAC,SAAS,IAAI;IAC7B,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,KAAK,CAAA;IAC7B,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AACD,MAAM,MAAM,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;AAE3E,eAAO,MAAM,IAAI,GAAI,QAAQ,EAAE,OAAO,QAAQ,KAAG,IAAI,CAAC,QAAQ,CAA4B,CAAA;AAC1F,eAAO,MAAM,KAAK,GAAI,SAAS,EAAE,OAAO,SAAS,KAAG,KAAK,CAAC,SAAS,CAElE,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,QAAQ,EAAE,SAAS,EAAE,OAAO,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAG,KAAK,IAAI,IAAI,CAAC,QAAQ,CAEtG,CAAA;AACD,eAAO,MAAM,OAAO,GAAI,QAAQ,EAAE,SAAS,EAAE,OAAO,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAG,KAAK,IAAI,KAAK,CAAC,SAAS,CAEzG,CAAA;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,CAEnH;AACD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAEtH;AAED,wBAAgB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EACjD,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAClC,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,UAAU,CAAC,GAC/C,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAA;AACzC,wBAAgB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EACjD,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAClC,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,UAAU,GACtC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AAYhC,wBAAgB,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAC1E,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAClC,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,GAC5E,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,GAAG,eAAe,CAAC,CAAC,CAAA;AAC/D,wBAAgB,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAC1E,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAClC,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,GACnE,MAAM,CAAC,cAAc,EAAE,SAAS,GAAG,eAAe,CAAC,CAAA;AAYtD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EACtD,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAClC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,UAAU,CAAC,GAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;AACxC,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EACtD,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAClC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,UAAU,GACvC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;AAY/B,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAC/E,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAClC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,GAC7E,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,cAAc,EAAE,eAAe,CAAC,CAAC,CAAA;AAC9D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAC/E,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAClC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,GACpE,MAAM,CAAC,QAAQ,GAAG,cAAc,EAAE,eAAe,CAAC,CAAA;AAYrD,eAAO,MAAM,KAAK,GAAI,QAAQ,EAAE,SAAS,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,KAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAIxH,CAAA"}
package/dist/either.js CHANGED
@@ -1,107 +1,69 @@
1
1
  // src/either.ts
2
- import { isPromise } from "@bessemer/cornerstone/promise";
3
- import { executeAsync } from "@bessemer/cornerstone/internal";
2
+ import { isObject } from "@bessemer/cornerstone/object";
3
+ import { assert } from "@bessemer/cornerstone/assertion";
4
+ import * as Promises from "@bessemer/cornerstone/promise";
5
+ var TypeToken = "__Either.type";
4
6
  var EitherType = /* @__PURE__ */ ((EitherType2) => {
5
7
  EitherType2["Left"] = "Left";
6
8
  EitherType2["Right"] = "Right";
7
9
  return EitherType2;
8
10
  })(EitherType || {});
9
- var RightImpl = class {
10
- constructor(value) {
11
- this.value = value;
11
+ var left = (value) => value;
12
+ var right = (value) => {
13
+ return { [TypeToken]: "Right" /* Right */, value };
14
+ };
15
+ var isLeft = (value) => {
16
+ return !isRight(value);
17
+ };
18
+ var isRight = (value) => {
19
+ return isObject(value) && value[TypeToken] === "Right" /* Right */;
20
+ };
21
+ function assertLeft(value) {
22
+ assert(isLeft(value));
23
+ }
24
+ function assertRight(value) {
25
+ assert(isRight(value));
26
+ }
27
+ function map2(value, mapper) {
28
+ if (isRight(value)) {
29
+ return value;
12
30
  }
13
- type = "Right" /* Right */;
14
- isRight = true;
15
- isLeft = false;
16
- map = (mapper) => {
17
- const mappedValue = mapper(this.value);
18
- if (isPromise(mappedValue)) {
19
- return executeAsync(async () => right(await mappedValue));
20
- } else {
21
- return right(mappedValue);
22
- }
23
- };
24
- mapLeft = () => {
25
- return this;
26
- };
27
- [Symbol.iterator]() {
28
- return function* () {
29
- return this.value;
30
- }.call(this);
31
+ return Promises.map(mapper(value), left);
32
+ }
33
+ function flatMap(value, mapper) {
34
+ if (isRight(value)) {
35
+ return value;
31
36
  }
32
- };
33
- var LeftImpl = class {
34
- constructor(value) {
35
- this.value = value;
37
+ return mapper(value);
38
+ }
39
+ function mapRight(value, mapper) {
40
+ if (isLeft(value)) {
41
+ return value;
36
42
  }
37
- type = "Left" /* Left */;
38
- isRight = false;
39
- isLeft = true;
40
- map = () => {
41
- return this;
42
- };
43
- mapLeft = (mapper) => {
44
- const mappedValue = mapper(this.value);
45
- if (isPromise(mappedValue)) {
46
- return executeAsync(async () => left(await mappedValue));
47
- } else {
48
- return left(mappedValue);
49
- }
50
- };
51
- [Symbol.iterator]() {
52
- return function* () {
53
- yield this;
54
- throw new Error("Illegal State");
55
- }.call(this);
43
+ return Promises.map(mapper(value.value), right);
44
+ }
45
+ function flatMapRight(value, mapper) {
46
+ if (isLeft(value)) {
47
+ return value;
56
48
  }
57
- };
58
- var left = (value) => new LeftImpl(value);
59
- var right = (value) => new RightImpl(value);
49
+ return mapper(value.value);
50
+ }
60
51
  var split = (array) => {
61
- const lefts = array.filter((it) => it.isLeft).map((it) => it.value);
62
- const rights = array.filter((it) => it.isRight).map((it) => it.value);
52
+ const lefts = array.filter((it) => isLeft(it)).map((it) => it);
53
+ const rights = array.filter((it) => isRight(it)).map((it) => it.value);
63
54
  return [lefts, rights];
64
55
  };
65
- var buildGenerator = (lift) => {
66
- return (generatorFn) => {
67
- const generator2 = generatorFn();
68
- const firstNext = generator2.next();
69
- if (isPromise(firstNext)) {
70
- return (async () => {
71
- let current = await firstNext;
72
- while (!current.done) {
73
- const result = current.value;
74
- if (result.isLeft) {
75
- return result;
76
- }
77
- current = await generator2.next(result.value);
78
- }
79
- return lift(current.value);
80
- })();
81
- } else {
82
- let current = firstNext;
83
- while (!current.done) {
84
- const result = current.value;
85
- if (result.isLeft) {
86
- return result;
87
- }
88
- current = generator2.next(result.value);
89
- }
90
- return lift(current.value);
91
- }
92
- };
93
- };
94
- var generator = buildGenerator((it) => right(it));
95
- function gen(generatorFn) {
96
- return generator(generatorFn);
97
- }
98
56
  export {
99
57
  EitherType,
100
- LeftImpl,
101
- RightImpl,
102
- buildGenerator,
103
- gen,
58
+ assertLeft,
59
+ assertRight,
60
+ flatMap,
61
+ flatMapRight,
62
+ isLeft,
63
+ isRight,
104
64
  left,
65
+ map2 as map,
66
+ mapRight,
105
67
  right,
106
68
  split
107
69
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/either.ts"],"sourcesContent":["import { isPromise } from '@bessemer/cornerstone/promise'\nimport { executeAsync } from '@bessemer/cornerstone/internal'\n\nexport enum EitherType {\n Left = 'Left',\n Right = 'Right',\n}\n\nexport type Right<RightType> = {\n type: EitherType.Right\n value: RightType\n isRight: true\n isLeft: false\n map: <T>(mapper: (element: RightType) => T) => T extends Promise<infer U> ? Promise<Right<U>> : Right<T>\n mapLeft: () => Right<RightType>\n [Symbol.iterator](): Generator<Either<RightType, never>, RightType>\n}\n\nexport type Left<LeftType> = {\n type: EitherType.Left\n value: LeftType\n isRight: false\n isLeft: true\n map: () => Left<LeftType>\n mapLeft: <T>(mapper: (element: LeftType) => T) => T extends Promise<infer U> ? Promise<Left<U>> : Left<T>\n [Symbol.iterator](): Generator<Either<never, LeftType>, never>\n}\n\nexport type Either<RightType, LeftType> = Left<LeftType> | Right<RightType>\n\nexport class RightImpl<RightType> implements Right<RightType> {\n public readonly type: EitherType.Right = EitherType.Right\n public readonly isRight = true\n public readonly isLeft = false\n\n constructor(public readonly value: RightType) {}\n\n map = <T>(mapper: (element: RightType) => T): T extends Promise<infer U> ? Promise<Right<U>> : Right<T> => {\n const mappedValue = mapper(this.value)\n if (isPromise(mappedValue)) {\n return executeAsync(async () => right(await mappedValue)) as any\n } else {\n return right(mappedValue) as any\n }\n }\n\n mapLeft = (): Right<RightType> => {\n return this\n };\n\n [Symbol.iterator](): Generator<Either<RightType, never>, RightType> {\n return function* (this: Right<RightType>) {\n return this.value\n }.call(this)\n }\n}\n\nexport class LeftImpl<LeftType> implements Left<LeftType> {\n public readonly type = EitherType.Left\n public readonly isRight = false\n public readonly isLeft = true\n\n constructor(public readonly value: LeftType) {}\n\n map = (): Left<LeftType> => {\n return this\n }\n\n mapLeft = <T>(mapper: (element: LeftType) => T): T extends Promise<infer U> ? Promise<Left<U>> : Left<T> => {\n const mappedValue = mapper(this.value)\n if (isPromise(mappedValue)) {\n return executeAsync(async () => left(await mappedValue)) as any\n } else {\n return left(mappedValue) as any\n }\n };\n\n [Symbol.iterator](): Generator<Either<never, LeftType>, never> {\n return function* (this: Left<LeftType>) {\n yield this as any\n throw new Error('Illegal State')\n }.call(this)\n }\n}\n\nexport const left = <LeftType>(value: LeftType): Left<LeftType> => new LeftImpl(value)\nexport const right = <RightType>(value: RightType): Right<RightType> => new RightImpl(value)\n\nexport const split = <RightType, LeftType>(array: Array<Either<RightType, LeftType>>): [Array<LeftType>, Array<RightType>] => {\n const lefts = array.filter((it) => it.isLeft).map((it) => it.value)\n const rights = array.filter((it) => it.isRight).map((it) => it.value)\n return [lefts, rights]\n}\n\nexport const buildGenerator = <EitherType extends Either<any, any>, TGen extends () => Generator<EitherType> | AsyncGenerator<EitherType>>(\n lift: (val: any) => EitherType\n): ((\n generatorFn: TGen\n) => TGen extends () => Generator<EitherType, infer R>\n ? EitherType\n : TGen extends () => AsyncGenerator<EitherType, infer R>\n ? Promise<EitherType>\n : never) => {\n return (generatorFn) => {\n const generator = generatorFn()\n const firstNext = generator.next()\n if (isPromise(firstNext)) {\n return (async () => {\n let current = await firstNext\n while (!current.done) {\n const result = current.value\n if (result.isLeft) {\n return result\n }\n current = await generator.next(result.value)\n }\n return lift(current.value)\n })() as any\n } else {\n let current = firstNext\n while (!current.done) {\n const result = current.value\n if (result.isLeft) {\n return result\n }\n\n current = generator.next(result.value) as IteratorResult<EitherType>\n }\n\n return lift(current.value)\n }\n }\n}\n\nconst generator = buildGenerator((it) => right(it) as Either<any, any>)\n\nexport function gen<TGen extends () => Generator<Either<any, any>>>(\n generatorFn: TGen\n): TGen extends () => Generator<Either<any, infer L>, infer R> ? Either<R, L> : never\nexport function gen<TGen extends () => AsyncGenerator<Either<any, any>>>(\n generatorFn: TGen\n): Promise<TGen extends () => AsyncGenerator<Either<any, infer L>, infer R> ? Either<R, L> : never>\nexport function gen<TGen extends () => Generator<Either<any, any>> | AsyncGenerator<Either<any, any>>>(\n generatorFn: TGen\n): TGen extends () => Generator<Either<any, infer L>, infer R>\n ? Either<R, L>\n : TGen extends () => AsyncGenerator<Either<any, infer L>, infer R>\n ? Promise<Either<R, L>>\n : never {\n return generator(generatorFn)\n}\n"],"mappings":";AAAA,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAEtB,IAAK,aAAL,kBAAKA,gBAAL;AACL,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,WAAQ;AAFE,SAAAA;AAAA,GAAA;AA2BL,IAAM,YAAN,MAAuD;AAAA,EAK5D,YAA4B,OAAkB;AAAlB;AAAA,EAAmB;AAAA,EAJ/B,OAAyB;AAAA,EACzB,UAAU;AAAA,EACV,SAAS;AAAA,EAIzB,MAAM,CAAI,WAAiG;AACzG,UAAM,cAAc,OAAO,KAAK,KAAK;AACrC,QAAI,UAAU,WAAW,GAAG;AAC1B,aAAO,aAAa,YAAY,MAAM,MAAM,WAAW,CAAC;AAAA,IAC1D,OAAO;AACL,aAAO,MAAM,WAAW;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,UAAU,MAAwB;AAChC,WAAO;AAAA,EACT;AAAA,EAEA,CAAC,OAAO,QAAQ,IAAoD;AAClE,WAAO,aAAmC;AACxC,aAAO,KAAK;AAAA,IACd,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAEO,IAAM,WAAN,MAAmD;AAAA,EAKxD,YAA4B,OAAiB;AAAjB;AAAA,EAAkB;AAAA,EAJ9B,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EAIzB,MAAM,MAAsB;AAC1B,WAAO;AAAA,EACT;AAAA,EAEA,UAAU,CAAI,WAA8F;AAC1G,UAAM,cAAc,OAAO,KAAK,KAAK;AACrC,QAAI,UAAU,WAAW,GAAG;AAC1B,aAAO,aAAa,YAAY,KAAK,MAAM,WAAW,CAAC;AAAA,IACzD,OAAO;AACL,aAAO,KAAK,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,CAAC,OAAO,QAAQ,IAA+C;AAC7D,WAAO,aAAiC;AACtC,YAAM;AACN,YAAM,IAAI,MAAM,eAAe;AAAA,IACjC,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAEO,IAAM,OAAO,CAAW,UAAoC,IAAI,SAAS,KAAK;AAC9E,IAAM,QAAQ,CAAY,UAAuC,IAAI,UAAU,KAAK;AAEpF,IAAM,QAAQ,CAAsB,UAAmF;AAC5H,QAAM,QAAQ,MAAM,OAAO,CAAC,OAAO,GAAG,MAAM,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK;AAClE,QAAM,SAAS,MAAM,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK;AACpE,SAAO,CAAC,OAAO,MAAM;AACvB;AAEO,IAAM,iBAAiB,CAC5B,SAOY;AACZ,SAAO,CAAC,gBAAgB;AACtB,UAAMC,aAAY,YAAY;AAC9B,UAAM,YAAYA,WAAU,KAAK;AACjC,QAAI,UAAU,SAAS,GAAG;AACxB,cAAQ,YAAY;AAClB,YAAI,UAAU,MAAM;AACpB,eAAO,CAAC,QAAQ,MAAM;AACpB,gBAAM,SAAS,QAAQ;AACvB,cAAI,OAAO,QAAQ;AACjB,mBAAO;AAAA,UACT;AACA,oBAAU,MAAMA,WAAU,KAAK,OAAO,KAAK;AAAA,QAC7C;AACA,eAAO,KAAK,QAAQ,KAAK;AAAA,MAC3B,GAAG;AAAA,IACL,OAAO;AACL,UAAI,UAAU;AACd,aAAO,CAAC,QAAQ,MAAM;AACpB,cAAM,SAAS,QAAQ;AACvB,YAAI,OAAO,QAAQ;AACjB,iBAAO;AAAA,QACT;AAEA,kBAAUA,WAAU,KAAK,OAAO,KAAK;AAAA,MACvC;AAEA,aAAO,KAAK,QAAQ,KAAK;AAAA,IAC3B;AAAA,EACF;AACF;AAEA,IAAM,YAAY,eAAe,CAAC,OAAO,MAAM,EAAE,CAAqB;AAQ/D,SAAS,IACd,aAKQ;AACR,SAAO,UAAU,WAAW;AAC9B;","names":["EitherType","generator"]}
1
+ {"version":3,"sources":["../src/either.ts"],"sourcesContent":["import { isObject } from '@bessemer/cornerstone/object'\nimport { assert } from '@bessemer/cornerstone/assertion'\nimport * as Promises from '@bessemer/cornerstone/promise'\nimport { Promisable } from 'type-fest'\n\nconst TypeToken = '__Either.type'\n\nexport enum EitherType {\n Left = 'Left',\n Right = 'Right',\n}\n\ndeclare const __types: unique symbol\nexport type NominalTyping2<NominalType> = { [__types]: NominalType }\nexport type NominalType2<ConcreteType, NominalType> = ConcreteType & NominalTyping2<NominalType>\n\nexport type Left<LeftType> = NominalType2<LeftType, 'Left'>\nexport type Right<RightType> = {\n [TypeToken]: EitherType.Right\n value: RightType\n}\nexport type Either<LeftType, RightType> = Left<LeftType> | Right<RightType>\n\nexport const left = <LeftType>(value: LeftType): Left<LeftType> => value as Left<LeftType>\nexport const right = <RightType>(value: RightType): Right<RightType> => {\n return { [TypeToken]: EitherType.Right, value }\n}\n\nexport const isLeft = <LeftType, RightType>(value: Either<LeftType, RightType>): value is Left<LeftType> => {\n return !isRight(value)\n}\nexport const isRight = <LeftType, RightType>(value: Either<LeftType, RightType>): value is Right<RightType> => {\n return isObject(value) && (value as any)[TypeToken] === EitherType.Right\n}\n\nexport function assertLeft<LeftType, RightType>(value: Either<LeftType, RightType>): asserts value is Left<LeftType> {\n assert(isLeft(value))\n}\nexport function assertRight<LeftType, RightType>(value: Either<LeftType, RightType>): asserts value is Right<RightType> {\n assert(isRight(value))\n}\n\nexport function map<LeftType, RightType, MappedType>(\n value: Either<LeftType, RightType>,\n mapper: (value: LeftType) => Promise<MappedType>\n): Promise<Either<MappedType, RightType>>\nexport function map<LeftType, RightType, MappedType>(\n value: Either<LeftType, RightType>,\n mapper: (value: LeftType) => MappedType\n): Either<MappedType, RightType>\nexport function map<LeftType, RightType, MappedType>(\n value: Either<LeftType, RightType>,\n mapper: (value: LeftType) => MappedType\n): Promisable<Either<MappedType, RightType>> {\n if (isRight(value)) {\n return value\n }\n\n return Promises.map(mapper(value), left)\n}\n\nexport function flatMap<LeftType, RightType, MappedLeftType, MappedRightType>(\n value: Either<LeftType, RightType>,\n mapper: (value: LeftType) => Promise<Either<MappedLeftType, MappedRightType>>\n): Promise<Either<MappedLeftType, RightType | MappedRightType>>\nexport function flatMap<LeftType, RightType, MappedLeftType, MappedRightType>(\n value: Either<LeftType, RightType>,\n mapper: (value: LeftType) => Either<MappedLeftType, MappedRightType>\n): Either<MappedLeftType, RightType | MappedRightType>\nexport function flatMap<LeftType, RightType, MappedLeftType, MappedRightType>(\n value: Either<LeftType, RightType>,\n mapper: (value: LeftType) => Either<MappedLeftType, MappedRightType>\n): Promisable<Either<MappedLeftType, RightType | MappedRightType>> {\n if (isRight(value)) {\n return value\n }\n\n return mapper(value)\n}\n\nexport function mapRight<LeftType, RightType, MappedType>(\n value: Either<LeftType, RightType>,\n mapper: (value: RightType) => Promise<MappedType>\n): Promise<Either<LeftType, MappedType>>\nexport function mapRight<LeftType, RightType, MappedType>(\n value: Either<LeftType, RightType>,\n mapper: (value: RightType) => MappedType\n): Either<LeftType, MappedType>\nexport function mapRight<LeftType, RightType, MappedType>(\n value: Either<LeftType, RightType>,\n mapper: (value: RightType) => MappedType\n): Promisable<Either<LeftType, MappedType>> {\n if (isLeft(value)) {\n return value\n }\n\n return Promises.map(mapper(value.value), right)\n}\n\nexport function flatMapRight<LeftType, RightType, MappedLeftType, MappedRightType>(\n value: Either<LeftType, RightType>,\n mapper: (value: RightType) => Promise<Either<MappedLeftType, MappedRightType>>\n): Promise<Either<LeftType | MappedLeftType, MappedRightType>>\nexport function flatMapRight<LeftType, RightType, MappedLeftType, MappedRightType>(\n value: Either<LeftType, RightType>,\n mapper: (value: RightType) => Either<MappedLeftType, MappedRightType>\n): Either<LeftType | MappedLeftType, MappedRightType>\nexport function flatMapRight<LeftType, RightType, MappedLeftType, MappedRightType>(\n value: Either<LeftType, RightType>,\n mapper: (value: RightType) => Either<MappedLeftType, MappedRightType>\n): Promisable<Either<LeftType | MappedLeftType, MappedRightType>> {\n if (isLeft(value)) {\n return value\n }\n\n return mapper(value.value)\n}\n\nexport const split = <LeftType, RightType>(array: Array<Either<LeftType, RightType>>): [Array<LeftType>, Array<RightType>] => {\n const lefts = array.filter((it) => isLeft(it)).map((it) => it)\n const rights = array.filter((it) => isRight(it)).map((it) => it.value)\n return [lefts, rights]\n}\n\n// export const buildGenerator = <EitherType extends Either<any, any>, TGen extends () => Generator<EitherType> | AsyncGenerator<EitherType>>(\n// lift: (val: any) => EitherType\n// ): ((\n// generatorFn: TGen\n// ) => TGen extends () => Generator<EitherType, infer R>\n// ? EitherType\n// : TGen extends () => AsyncGenerator<EitherType, infer R>\n// ? Promise<EitherType>\n// : never) => {\n// return (generatorFn) => {\n// const generator = generatorFn()\n// const firstNext = generator.next()\n// if (isPromise(firstNext)) {\n// return (async () => {\n// let current = await firstNext\n// while (!current.done) {\n// const result = current.value\n// if (result.isLeft) {\n// return result\n// }\n// current = await generator.next(result.value)\n// }\n// return lift(current.value)\n// })() as any\n// } else {\n// let current = firstNext\n// while (!current.done) {\n// const result = current.value\n// if (result.isLeft) {\n// return result\n// }\n//\n// current = generator.next(result.value) as IteratorResult<EitherType>\n// }\n//\n// return lift(current.value)\n// }\n// }\n// }\n//\n// const generator = buildGenerator((it) => right(it) as Either<any, any>)\n//\n// export function gen<TGen extends () => Generator<Either<any, any>>>(\n// generatorFn: TGen\n// ): TGen extends () => Generator<Either<any, infer L>, infer R> ? Either<R, L> : never\n// export function gen<TGen extends () => AsyncGenerator<Either<any, any>>>(\n// generatorFn: TGen\n// ): Promise<TGen extends () => AsyncGenerator<Either<any, infer L>, infer R> ? Either<R, L> : never>\n// export function gen<TGen extends () => Generator<Either<any, any>> | AsyncGenerator<Either<any, any>>>(\n// generatorFn: TGen\n// ): TGen extends () => Generator<Either<any, infer L>, infer R>\n// ? Either<R, L>\n// : TGen extends () => AsyncGenerator<Either<any, infer L>, infer R>\n// ? Promise<Either<R, L>>\n// : never {\n// return generator(generatorFn)\n// }\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,YAAY,cAAc;AAG1B,IAAM,YAAY;AAEX,IAAK,aAAL,kBAAKA,gBAAL;AACL,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,WAAQ;AAFE,SAAAA;AAAA,GAAA;AAgBL,IAAM,OAAO,CAAW,UAAoC;AAC5D,IAAM,QAAQ,CAAY,UAAuC;AACtE,SAAO,EAAE,CAAC,SAAS,GAAG,qBAAkB,MAAM;AAChD;AAEO,IAAM,SAAS,CAAsB,UAAgE;AAC1G,SAAO,CAAC,QAAQ,KAAK;AACvB;AACO,IAAM,UAAU,CAAsB,UAAkE;AAC7G,SAAO,SAAS,KAAK,KAAM,MAAc,SAAS,MAAM;AAC1D;AAEO,SAAS,WAAgC,OAAqE;AACnH,SAAO,OAAO,KAAK,CAAC;AACtB;AACO,SAAS,YAAiC,OAAuE;AACtH,SAAO,QAAQ,KAAK,CAAC;AACvB;AAUO,SAASC,KACd,OACA,QAC2C;AAC3C,MAAI,QAAQ,KAAK,GAAG;AAClB,WAAO;AAAA,EACT;AAEA,SAAgB,aAAI,OAAO,KAAK,GAAG,IAAI;AACzC;AAUO,SAAS,QACd,OACA,QACiE;AACjE,MAAI,QAAQ,KAAK,GAAG;AAClB,WAAO;AAAA,EACT;AAEA,SAAO,OAAO,KAAK;AACrB;AAUO,SAAS,SACd,OACA,QAC0C;AAC1C,MAAI,OAAO,KAAK,GAAG;AACjB,WAAO;AAAA,EACT;AAEA,SAAgB,aAAI,OAAO,MAAM,KAAK,GAAG,KAAK;AAChD;AAUO,SAAS,aACd,OACA,QACgE;AAChE,MAAI,OAAO,KAAK,GAAG;AACjB,WAAO;AAAA,EACT;AAEA,SAAO,OAAO,MAAM,KAAK;AAC3B;AAEO,IAAM,QAAQ,CAAsB,UAAmF;AAC5H,QAAM,QAAQ,MAAM,OAAO,CAAC,OAAO,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE;AAC7D,QAAM,SAAS,MAAM,OAAO,CAAC,OAAO,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK;AACrE,SAAO,CAAC,OAAO,MAAM;AACvB;","names":["EitherType","map"]}
@@ -1 +1 @@
1
- {"version":3,"file":"error-event.d.ts","sourceRoot":"","sources":["../../src/error/error-event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-event.d.ts","sourceRoot":"","sources":["../../src/error/error-event.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { evaluate } from "@bessemer/cornerstone/lazy";
5
5
  import { findInCausalChain as errorsFindInCausalChain, isError } from "@bessemer/cornerstone/error/error";
6
6
  import { isPromise } from "@bessemer/cornerstone/promise";
7
7
  import { createNamespace } from "@bessemer/cornerstone/resource-key";
8
+ import * as Results from "@bessemer/cornerstone/result";
8
9
  import * as ErrorCauses from "@bessemer/cornerstone/error/error-cause";
9
10
  import * as Assertions from "@bessemer/cornerstone/assertion";
10
11
  import { isEmpty } from "@bessemer/cornerstone/array";
@@ -121,10 +122,10 @@ function assert2(value, builder) {
121
122
  }
122
123
  }
123
124
  var unpackResult = (result) => {
124
- if (!result.isSuccess) {
125
+ if (Results.isFailure(result)) {
125
126
  throw new ErrorEventException(result.value);
126
127
  }
127
- return result.value;
128
+ return result;
128
129
  };
129
130
  export {
130
131
  ErrorEventException,