@bessemer/cornerstone 0.5.108 → 0.5.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array.d.ts +2 -1
- package/dist/array.d.ts.map +1 -1
- package/dist/array.js +11 -0
- package/dist/array.js.map +1 -1
- package/dist/either.d.ts +23 -40
- package/dist/either.d.ts.map +1 -1
- package/dist/either.js +50 -88
- package/dist/either.js.map +1 -1
- package/dist/error/error-event.d.ts.map +1 -1
- package/dist/error/error-event.js +3 -2
- package/dist/error/error-event.js.map +1 -1
- package/dist/error/error.d.ts +10 -0
- package/dist/error/error.d.ts.map +1 -1
- package/dist/error/error.js +21 -2
- package/dist/error/error.js.map +1 -1
- package/dist/generators.d.ts +2 -0
- package/dist/generators.d.ts.map +1 -0
- package/dist/generators.js +14 -0
- package/dist/generators.js.map +1 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts +2 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js.map +1 -1
- package/dist/math.d.ts +2 -0
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +9 -1
- package/dist/math.js.map +1 -1
- package/dist/mime-type.d.ts +4 -3
- package/dist/mime-type.d.ts.map +1 -1
- package/dist/mime-type.js +9 -6
- package/dist/mime-type.js.map +1 -1
- package/dist/net/content-type.d.ts +21 -0
- package/dist/net/content-type.d.ts.map +1 -0
- package/dist/net/content-type.js +120 -0
- package/dist/net/content-type.js.map +1 -0
- package/dist/net/fetch.d.ts +18 -0
- package/dist/net/fetch.d.ts.map +1 -0
- package/dist/net/fetch.js +65 -0
- package/dist/net/fetch.js.map +1 -0
- package/dist/net/http-method.d.ts +18 -0
- package/dist/net/http-method.d.ts.map +1 -0
- package/dist/net/http-method.js +37 -0
- package/dist/net/http-method.js.map +1 -0
- package/dist/net/http-request.d.ts +12 -0
- package/dist/net/http-request.d.ts.map +1 -0
- package/dist/net/http-request.js +1 -0
- package/dist/net/http-request.js.map +1 -0
- package/dist/net/uri-host-name.d.ts +1 -1
- package/dist/net/uri-host-name.d.ts.map +1 -1
- package/dist/net/uri-host-name.js +6 -6
- package/dist/net/uri-host-name.js.map +1 -1
- package/dist/net/uri.d.ts +12 -4
- package/dist/net/uri.d.ts.map +1 -1
- package/dist/net/uri.js +87 -36
- package/dist/net/uri.js.map +1 -1
- package/dist/net/url.d.ts +9 -6
- package/dist/net/url.d.ts.map +1 -1
- package/dist/net/url.js +58 -21
- package/dist/net/url.js.map +1 -1
- package/dist/object/object-diff.d.ts.map +1 -1
- package/dist/object/object-diff.js.map +1 -1
- package/dist/object/type-path.d.ts.map +1 -1
- package/dist/object/type-path.js +12 -14
- package/dist/object/type-path.js.map +1 -1
- package/dist/object.d.ts +2 -0
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +17 -1
- package/dist/object.js.map +1 -1
- package/dist/promise.d.ts +3 -1
- package/dist/promise.d.ts.map +1 -1
- package/dist/promise.js +13 -0
- package/dist/promise.js.map +1 -1
- package/dist/proxy.d.ts +2 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +20 -0
- package/dist/proxy.js.map +1 -0
- package/dist/result.d.ts +18 -20
- package/dist/result.d.ts.map +1 -1
- package/dist/result.js +41 -61
- package/dist/result.js.map +1 -1
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +3 -3
- package/dist/retry.js.map +1 -1
- package/dist/sql/sql-expression-parser.d.ts.map +1 -1
- package/dist/sql/sql-expression-parser.js +5 -5
- package/dist/sql/sql-expression-parser.js.map +1 -1
- package/dist/string.d.ts +1 -0
- package/dist/string.d.ts.map +1 -1
- package/dist/string.js +4 -0
- package/dist/string.js.map +1 -1
- package/dist/temporal/duration.d.ts.map +1 -1
- package/dist/temporal/duration.js +2 -1
- package/dist/temporal/duration.js.map +1 -1
- package/dist/temporal/instant.d.ts.map +1 -1
- package/dist/temporal/instant.js +2 -1
- package/dist/temporal/instant.js.map +1 -1
- package/dist/temporal/plain-date-time.d.ts.map +1 -1
- package/dist/temporal/plain-date-time.js +2 -1
- package/dist/temporal/plain-date-time.js.map +1 -1
- package/dist/temporal/plain-date.d.ts.map +1 -1
- package/dist/temporal/plain-date.js +2 -1
- package/dist/temporal/plain-date.js.map +1 -1
- package/dist/temporal/plain-time.d.ts.map +1 -1
- package/dist/temporal/plain-time.js +2 -1
- package/dist/temporal/plain-time.js.map +1 -1
- package/dist/temporal/zoned-date-time.d.ts.map +1 -1
- package/dist/temporal/zoned-date-time.js +2 -1
- package/dist/temporal/zoned-date-time.js.map +1 -1
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -1
- package/dist/zod-util.d.ts +55 -6
- package/dist/zod-util.d.ts.map +1 -1
- package/dist/zod-util.js +99 -11
- package/dist/zod-util.js.map +1 -1
- package/package.json +2 -2
package/dist/array.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export declare const range: ([start, end]: FiniteNumericBounds) => 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,
|
|
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
|
package/dist/array.d.ts.map
CHANGED
|
@@ -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
|
@@ -25,6 +25,16 @@ var fromIterable = (collection) => {
|
|
|
25
25
|
var take = (array, elementsToSkip = 1) => {
|
|
26
26
|
return array.slice(elementsToSkip);
|
|
27
27
|
};
|
|
28
|
+
var takeWhile = (array, predicate) => {
|
|
29
|
+
const result = [];
|
|
30
|
+
for (let i = 0; i < array.length; i++) {
|
|
31
|
+
if (!predicate(array[i], i)) {
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
result.push(array[i]);
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
28
38
|
var equalWith = (first2, second, equalitor) => {
|
|
29
39
|
if (first2.length !== second.length) {
|
|
30
40
|
return false;
|
|
@@ -223,6 +233,7 @@ export {
|
|
|
223
233
|
sortBy,
|
|
224
234
|
sortWith,
|
|
225
235
|
take,
|
|
236
|
+
takeWhile,
|
|
226
237
|
toArray
|
|
227
238
|
};
|
|
228
239
|
//# 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":"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","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 { 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\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 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 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
|
-
|
|
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<
|
|
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
|
|
47
|
-
export declare const
|
|
48
|
-
export declare function
|
|
49
|
-
export declare function
|
|
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
|
package/dist/either.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"either.d.ts","sourceRoot":"","sources":["../src/either.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"either.d.ts","sourceRoot":"","sources":["../src/either.ts"],"names":[],"mappings":"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"}
|
package/dist/either.js
CHANGED
|
@@ -1,107 +1,69 @@
|
|
|
1
1
|
// src/either.ts
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
return mapper(value);
|
|
38
|
+
}
|
|
39
|
+
function mapRight(value, mapper) {
|
|
40
|
+
if (isLeft(value)) {
|
|
41
|
+
return value;
|
|
36
42
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return
|
|
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
|
-
|
|
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
|
|
62
|
-
const rights = array.filter((it) => it
|
|
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
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
};
|
package/dist/either.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/either.ts"],"sourcesContent":["import {
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAEnE,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAY,SAAS,EAAE,MAAM,4BAA4B,CAAA;
|
|
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 (
|
|
125
|
+
if (Results.isFailure(result)) {
|
|
125
126
|
throw new ErrorEventException(result.value);
|
|
126
127
|
}
|
|
127
|
-
return result
|
|
128
|
+
return result;
|
|
128
129
|
};
|
|
129
130
|
export {
|
|
130
131
|
ErrorEventException,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/error/error-event.ts"],"sourcesContent":["import { Dictionary, Throwable } from '@bessemer/cornerstone/types'\nimport { deepMerge, isNil, isObject, isPresent } from '@bessemer/cornerstone/object'\nimport Zod from 'zod'\nimport { evaluate, LazyValue } from '@bessemer/cornerstone/lazy'\nimport { findInCausalChain as errorsFindInCausalChain, isError } from '@bessemer/cornerstone/error/error'\nimport { isPromise } from '@bessemer/cornerstone/promise'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { Result } from '@bessemer/cornerstone/result'\nimport * as ErrorCauses from '@bessemer/cornerstone/error/error-cause'\nimport { ErrorCause, ErrorCauseAugment, ErrorCauseBuilder } from '@bessemer/cornerstone/error/error-cause'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\nimport { MergeExclusive } from 'type-fest'\nimport { isEmpty } from '@bessemer/cornerstone/array'\n\nexport const Namespace = createNamespace('error-event')\n\nexport const Schema = Zod.object({\n _type: Namespace,\n message: Zod.string(),\n causes: Zod.array(ErrorCauses.Schema),\n context: Zod.record(Zod.string(), Zod.unknown()),\n})\n\nexport type ErrorEvent = {\n _type: typeof Namespace\n message: string\n causes: Array<ErrorCause>\n context: Dictionary<unknown>\n}\n\ntype ErrorEventCommonBuilder = {\n message: string\n context?: Dictionary<unknown>\n}\n\ntype ErrorEventFullBuilder = ErrorEventCommonBuilder & {\n causes: Array<ErrorCauseBuilder>\n}\ntype ErrorEventSingletonBuilder = ErrorEventCommonBuilder & ErrorCauseBuilder\nexport type ErrorEventBuilder = MergeExclusive<ErrorEventFullBuilder, ErrorEventSingletonBuilder>\n\n// An exception type that contains an ErrorEvent\nexport class ErrorEventException extends Error {\n readonly errorEvent: ErrorEvent\n\n constructor(errorEvent: ErrorEvent, cause?: unknown) {\n super(errorEvent.message ?? '', { cause })\n this.name = this.constructor.name\n this.errorEvent = errorEvent\n }\n}\n\nexport const from = (builder: ErrorEventBuilder): ErrorEvent => {\n if (isPresent(builder.code)) {\n const code = builder.code\n return {\n _type: Namespace,\n causes: [ErrorCauses.from({ code, ...builder })],\n message: builder.message,\n context: builder.context ?? {},\n }\n } else {\n Assertions.assertPresent(builder.causes)\n Assertions.assert(!isEmpty(builder.causes), () => 'ErrorEvent - Unable to construct ErrorEvent with empty causes array.')\n\n return {\n _type: Namespace,\n causes: builder.causes.map(ErrorCauses.from),\n message: builder.message,\n context: builder.context ?? {},\n }\n }\n}\n\nexport const fromThrowable = (throwable: Throwable): ErrorEvent => {\n if (isErrorEvent(throwable)) {\n return throwable\n }\n\n if (!isError(throwable)) {\n return unhandled()\n }\n\n const errorEventException = errorsFindInCausalChain(throwable, isErrorEventException) as ErrorEventException | undefined\n if (isNil(errorEventException)) {\n return unhandled()\n }\n\n return errorEventException.errorEvent\n}\n\nexport const isErrorEvent = (value: unknown): value is ErrorEvent => {\n if (!isObject(value)) {\n return false\n }\n\n const errorEvent = value as ErrorEvent\n return errorEvent._type === Namespace\n}\n\nexport const isErrorEventException = (value: unknown): value is ErrorEventException => {\n return value instanceof ErrorEventException\n}\n\nexport function withPropagation<ReturnType>(runnable: () => ReturnType, attributes: LazyValue<Dictionary<unknown>>): ReturnType\nexport function withPropagation<ReturnType>(runnable: () => Promise<ReturnType>, attributes: LazyValue<Dictionary<unknown>>): Promise<ReturnType>\nexport function withPropagation<ReturnType>(\n runnable: () => ReturnType | Promise<ReturnType>,\n attributes: LazyValue<Dictionary<unknown>>\n): ReturnType | Promise<ReturnType> {\n try {\n let result = runnable()\n if (isPromise(result)) {\n return result.then((it) => it).catch((it) => propagate(it, evaluate(attributes)))\n } else {\n return result\n }\n } catch (throwable: Throwable) {\n throw propagate(throwable, evaluate(attributes))\n }\n}\n\nexport const propagate = (throwable: Throwable, context: Dictionary<unknown>): never => {\n if (isErrorEventException(throwable)) {\n // We just mutate the existing error event to avoid nested exceptions\n const errorEvent = throwable.errorEvent\n errorEvent.context = { ...errorEvent.context, ...context }\n throw throwable\n } else {\n const errorEvent = fromThrowable(throwable)\n const contextualizedEvent = from({ ...errorEvent, context: { ...errorEvent.context, ...context } })\n throw new ErrorEventException(contextualizedEvent, throwable)\n }\n}\n\nexport type ErrorEventAugment = ErrorCauseAugment & {\n context?: Dictionary<unknown>\n}\n\nexport const unhandled = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.unhandled(builder), builder))\n\nexport const required = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.required(builder), builder))\n\nexport const unauthorized = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.unauthorized(builder), builder))\n\nexport const forbidden = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.forbidden(builder), builder))\n\nexport const badRequest = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.badRequest(builder), builder))\n\nexport const invalidValue = (value: unknown, builder?: ErrorEventAugment): ErrorEvent =>\n from(deepMerge(ErrorCauses.invalidValue(value, builder), builder))\n\nexport function assertPresent<T>(value: T, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is NonNullable<T> {\n if (isNil(value)) {\n throw new ErrorEventException(required(evaluate(builder)))\n }\n}\n\nexport function assertAuthorized(value: boolean, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is true {\n if (!value) {\n throw new ErrorEventException(unauthorized(evaluate(builder)))\n }\n}\n\nexport function assertPermitted(value: boolean, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is true {\n if (!value) {\n throw new ErrorEventException(forbidden(evaluate(builder)))\n }\n}\n\nexport function assertValid(value: boolean, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is true {\n if (!value) {\n throw new ErrorEventException(badRequest(evaluate(builder)))\n }\n}\n\nexport function assert(value: boolean, builder: LazyValue<ErrorEventBuilder>): asserts value is true {\n if (!value) {\n throw new ErrorEventException(from(evaluate(builder)))\n }\n}\n\nexport const unpackResult = <T>(result: Result<T, ErrorEvent>): T => {\n if (!result.isSuccess) {\n throw new ErrorEventException(result.value)\n }\n\n return result.value\n}\n"],"mappings":"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","names":["Schema","from","unhandled","required","unauthorized","forbidden","badRequest","invalidValue","assertPresent","assert"]}
|
|
1
|
+
{"version":3,"sources":["../../src/error/error-event.ts"],"sourcesContent":["import { Dictionary, Throwable } from '@bessemer/cornerstone/types'\nimport { deepMerge, isNil, isObject, isPresent } from '@bessemer/cornerstone/object'\nimport Zod from 'zod'\nimport { evaluate, LazyValue } from '@bessemer/cornerstone/lazy'\nimport { findInCausalChain as errorsFindInCausalChain, isError } from '@bessemer/cornerstone/error/error'\nimport { isPromise } from '@bessemer/cornerstone/promise'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport * as Results from '@bessemer/cornerstone/result'\nimport { Result } from '@bessemer/cornerstone/result'\nimport * as ErrorCauses from '@bessemer/cornerstone/error/error-cause'\nimport { ErrorCause, ErrorCauseAugment, ErrorCauseBuilder } from '@bessemer/cornerstone/error/error-cause'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\nimport { MergeExclusive } from 'type-fest'\nimport { isEmpty } from '@bessemer/cornerstone/array'\n\nexport const Namespace = createNamespace('error-event')\n\nexport const Schema = Zod.object({\n _type: Namespace,\n message: Zod.string(),\n causes: Zod.array(ErrorCauses.Schema),\n context: Zod.record(Zod.string(), Zod.unknown()),\n})\n\nexport type ErrorEvent = {\n _type: typeof Namespace\n message: string\n causes: Array<ErrorCause>\n context: Dictionary<unknown>\n}\n\ntype ErrorEventCommonBuilder = {\n message: string\n context?: Dictionary<unknown>\n}\n\ntype ErrorEventFullBuilder = ErrorEventCommonBuilder & {\n causes: Array<ErrorCauseBuilder>\n}\ntype ErrorEventSingletonBuilder = ErrorEventCommonBuilder & ErrorCauseBuilder\nexport type ErrorEventBuilder = MergeExclusive<ErrorEventFullBuilder, ErrorEventSingletonBuilder>\n\n// An exception type that contains an ErrorEvent\nexport class ErrorEventException extends Error {\n readonly errorEvent: ErrorEvent\n\n constructor(errorEvent: ErrorEvent, cause?: unknown) {\n super(errorEvent.message ?? '', { cause })\n this.name = this.constructor.name\n this.errorEvent = errorEvent\n }\n}\n\nexport const from = (builder: ErrorEventBuilder): ErrorEvent => {\n if (isPresent(builder.code)) {\n const code = builder.code\n return {\n _type: Namespace,\n causes: [ErrorCauses.from({ code, ...builder })],\n message: builder.message,\n context: builder.context ?? {},\n }\n } else {\n Assertions.assertPresent(builder.causes)\n Assertions.assert(!isEmpty(builder.causes), () => 'ErrorEvent - Unable to construct ErrorEvent with empty causes array.')\n\n return {\n _type: Namespace,\n causes: builder.causes.map(ErrorCauses.from),\n message: builder.message,\n context: builder.context ?? {},\n }\n }\n}\n\nexport const fromThrowable = (throwable: Throwable): ErrorEvent => {\n if (isErrorEvent(throwable)) {\n return throwable\n }\n\n if (!isError(throwable)) {\n return unhandled()\n }\n\n const errorEventException = errorsFindInCausalChain(throwable, isErrorEventException) as ErrorEventException | undefined\n if (isNil(errorEventException)) {\n return unhandled()\n }\n\n return errorEventException.errorEvent\n}\n\nexport const isErrorEvent = (value: unknown): value is ErrorEvent => {\n if (!isObject(value)) {\n return false\n }\n\n const errorEvent = value as ErrorEvent\n return errorEvent._type === Namespace\n}\n\nexport const isErrorEventException = (value: unknown): value is ErrorEventException => {\n return value instanceof ErrorEventException\n}\n\nexport function withPropagation<ReturnType>(runnable: () => ReturnType, attributes: LazyValue<Dictionary<unknown>>): ReturnType\nexport function withPropagation<ReturnType>(runnable: () => Promise<ReturnType>, attributes: LazyValue<Dictionary<unknown>>): Promise<ReturnType>\nexport function withPropagation<ReturnType>(\n runnable: () => ReturnType | Promise<ReturnType>,\n attributes: LazyValue<Dictionary<unknown>>\n): ReturnType | Promise<ReturnType> {\n try {\n let result = runnable()\n if (isPromise(result)) {\n return result.then((it) => it).catch((it) => propagate(it, evaluate(attributes)))\n } else {\n return result\n }\n } catch (throwable: Throwable) {\n throw propagate(throwable, evaluate(attributes))\n }\n}\n\nexport const propagate = (throwable: Throwable, context: Dictionary<unknown>): never => {\n if (isErrorEventException(throwable)) {\n // We just mutate the existing error event to avoid nested exceptions\n const errorEvent = throwable.errorEvent\n errorEvent.context = { ...errorEvent.context, ...context }\n throw throwable\n } else {\n const errorEvent = fromThrowable(throwable)\n const contextualizedEvent = from({ ...errorEvent, context: { ...errorEvent.context, ...context } })\n throw new ErrorEventException(contextualizedEvent, throwable)\n }\n}\n\nexport type ErrorEventAugment = ErrorCauseAugment & {\n context?: Dictionary<unknown>\n}\n\nexport const unhandled = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.unhandled(builder), builder))\n\nexport const required = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.required(builder), builder))\n\nexport const unauthorized = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.unauthorized(builder), builder))\n\nexport const forbidden = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.forbidden(builder), builder))\n\nexport const badRequest = (builder?: ErrorEventAugment): ErrorEvent => from(deepMerge(ErrorCauses.badRequest(builder), builder))\n\nexport const invalidValue = (value: unknown, builder?: ErrorEventAugment): ErrorEvent =>\n from(deepMerge(ErrorCauses.invalidValue(value, builder), builder))\n\nexport function assertPresent<T>(value: T, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is NonNullable<T> {\n if (isNil(value)) {\n throw new ErrorEventException(required(evaluate(builder)))\n }\n}\n\nexport function assertAuthorized(value: boolean, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is true {\n if (!value) {\n throw new ErrorEventException(unauthorized(evaluate(builder)))\n }\n}\n\nexport function assertPermitted(value: boolean, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is true {\n if (!value) {\n throw new ErrorEventException(forbidden(evaluate(builder)))\n }\n}\n\nexport function assertValid(value: boolean, builder: LazyValue<ErrorEventAugment | undefined> = () => undefined): asserts value is true {\n if (!value) {\n throw new ErrorEventException(badRequest(evaluate(builder)))\n }\n}\n\nexport function assert(value: boolean, builder: LazyValue<ErrorEventBuilder>): asserts value is true {\n if (!value) {\n throw new ErrorEventException(from(evaluate(builder)))\n }\n}\n\nexport const unpackResult = <T>(result: Result<T, ErrorEvent>): T => {\n if (Results.isFailure(result)) {\n throw new ErrorEventException(result.value)\n }\n\n return result\n}\n"],"mappings":"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","names":["Schema","from","unhandled","required","unauthorized","forbidden","badRequest","invalidValue","assertPresent","assert"]}
|
package/dist/error/error.d.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
|
+
import { Throwable } from '@bessemer/cornerstone/types';
|
|
2
|
+
import { LazyValue } from '@bessemer/cornerstone/lazy';
|
|
1
3
|
export declare const isError: (value: unknown) => value is Error;
|
|
4
|
+
export declare function assertError(value: unknown, message?: LazyValue<string>): asserts value is Error;
|
|
2
5
|
export declare const getCausalChain: (error: Error) => Array<Error>;
|
|
3
6
|
export declare const findInCausalChain: (error: Error, predicate: (error: Error) => boolean) => Error | undefined;
|
|
7
|
+
export type ErrorDto = {
|
|
8
|
+
name: string;
|
|
9
|
+
message: string;
|
|
10
|
+
stack: string | null;
|
|
11
|
+
cause: ErrorDto | null;
|
|
12
|
+
};
|
|
13
|
+
export declare const serialize: (error: Throwable) => ErrorDto;
|
|
4
14
|
//# sourceMappingURL=error.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error/error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error/error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAGtD,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,KAUjD,CAAA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAgD,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAE7I;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,KAAK,CAAC,KAAK,CAexD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,OAAO,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,KAAG,KAAK,GAAG,SAE9F,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,SAAS,KAAG,QAgB5C,CAAA"}
|