@ts-fns/stdlib 0.1.0
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/LICENSE +7 -0
- package/README.md +132 -0
- package/dist/array/index.cjs +551 -0
- package/dist/array/index.cjs.map +1 -0
- package/dist/array/index.d.cts +334 -0
- package/dist/array/index.d.cts.map +1 -0
- package/dist/array/index.d.mts +334 -0
- package/dist/array/index.d.mts.map +1 -0
- package/dist/array/index.mjs +498 -0
- package/dist/array/index.mjs.map +1 -0
- package/dist/errors-CJsLpYo9.d.cts +25 -0
- package/dist/errors-CJsLpYo9.d.cts.map +1 -0
- package/dist/errors-CJsLpYo9.d.mts +25 -0
- package/dist/errors-CJsLpYo9.d.mts.map +1 -0
- package/dist/errors-Dw1kitu_.mjs +39 -0
- package/dist/errors-Dw1kitu_.mjs.map +1 -0
- package/dist/errors-O-d_Vemi.cjs +74 -0
- package/dist/errors-O-d_Vemi.cjs.map +1 -0
- package/dist/function/index.cjs +15 -0
- package/dist/function/index.d.cts +107 -0
- package/dist/function/index.d.cts.map +1 -0
- package/dist/function/index.d.mts +107 -0
- package/dist/function/index.d.mts.map +1 -0
- package/dist/function/index.mjs +3 -0
- package/dist/function-CB82a2GS.cjs +186 -0
- package/dist/function-CB82a2GS.cjs.map +1 -0
- package/dist/function-DnI2v0p3.mjs +121 -0
- package/dist/function-DnI2v0p3.mjs.map +1 -0
- package/dist/get-CWL_cu6G.mjs +27 -0
- package/dist/get-CWL_cu6G.mjs.map +1 -0
- package/dist/get-yrs1Kqho.cjs +38 -0
- package/dist/get-yrs1Kqho.cjs.map +1 -0
- package/dist/guard/index.cjs +43 -0
- package/dist/guard/index.cjs.map +1 -0
- package/dist/guard/index.d.cts +52 -0
- package/dist/guard/index.d.cts.map +1 -0
- package/dist/guard/index.d.mts +52 -0
- package/dist/guard/index.d.mts.map +1 -0
- package/dist/guard/index.mjs +40 -0
- package/dist/guard/index.mjs.map +1 -0
- package/dist/index-BJlKyBJH.d.cts +18 -0
- package/dist/index-BJlKyBJH.d.cts.map +1 -0
- package/dist/index-DGrnGMDt.d.mts +18 -0
- package/dist/index-DGrnGMDt.d.mts.map +1 -0
- package/dist/isNotNil-DrF-ohem.cjs +28 -0
- package/dist/isNotNil-DrF-ohem.cjs.map +1 -0
- package/dist/isNotNil-R5f1hC53.mjs +23 -0
- package/dist/isNotNil-R5f1hC53.mjs.map +1 -0
- package/dist/iterator/index.cjs +160 -0
- package/dist/iterator/index.cjs.map +1 -0
- package/dist/iterator/index.d.cts +71 -0
- package/dist/iterator/index.d.cts.map +1 -0
- package/dist/iterator/index.d.mts +71 -0
- package/dist/iterator/index.d.mts.map +1 -0
- package/dist/iterator/index.mjs +148 -0
- package/dist/iterator/index.mjs.map +1 -0
- package/dist/lens/index.cjs +199 -0
- package/dist/lens/index.cjs.map +1 -0
- package/dist/lens/index.d.cts +109 -0
- package/dist/lens/index.d.cts.map +1 -0
- package/dist/lens/index.d.mts +109 -0
- package/dist/lens/index.d.mts.map +1 -0
- package/dist/lens/index.mjs +187 -0
- package/dist/lens/index.mjs.map +1 -0
- package/dist/map/index.cjs +86 -0
- package/dist/map/index.cjs.map +1 -0
- package/dist/map/index.d.cts +41 -0
- package/dist/map/index.d.cts.map +1 -0
- package/dist/map/index.d.mts +41 -0
- package/dist/map/index.d.mts.map +1 -0
- package/dist/map/index.mjs +75 -0
- package/dist/map/index.mjs.map +1 -0
- package/dist/number/index.cjs +179 -0
- package/dist/number/index.cjs.map +1 -0
- package/dist/number/index.d.cts +112 -0
- package/dist/number/index.d.cts.map +1 -0
- package/dist/number/index.d.mts +112 -0
- package/dist/number/index.d.mts.map +1 -0
- package/dist/number/index.mjs +159 -0
- package/dist/number/index.mjs.map +1 -0
- package/dist/object/index.cjs +190 -0
- package/dist/object/index.cjs.map +1 -0
- package/dist/object/index.d.cts +118 -0
- package/dist/object/index.d.cts.map +1 -0
- package/dist/object/index.d.mts +118 -0
- package/dist/object/index.d.mts.map +1 -0
- package/dist/object/index.mjs +169 -0
- package/dist/object/index.mjs.map +1 -0
- package/dist/orThrow-V91Jw2lF.mjs +15 -0
- package/dist/orThrow-V91Jw2lF.mjs.map +1 -0
- package/dist/orThrow-ejzcQYAI.cjs +20 -0
- package/dist/orThrow-ejzcQYAI.cjs.map +1 -0
- package/dist/order/index.cjs +50 -0
- package/dist/order/index.cjs.map +1 -0
- package/dist/order/index.d.cts +3 -0
- package/dist/order/index.d.mts +3 -0
- package/dist/order/index.mjs +42 -0
- package/dist/order/index.mjs.map +1 -0
- package/dist/order.constants-BWSCg3C7.d.cts +11 -0
- package/dist/order.constants-BWSCg3C7.d.cts.map +1 -0
- package/dist/order.constants-BWSCg3C7.d.mts +11 -0
- package/dist/order.constants-BWSCg3C7.d.mts.map +1 -0
- package/dist/purry-B2_0DGLV.cjs +28 -0
- package/dist/purry-B2_0DGLV.cjs.map +1 -0
- package/dist/purry-BOWmqwDB.mjs +23 -0
- package/dist/purry-BOWmqwDB.mjs.map +1 -0
- package/dist/set/index.cjs +131 -0
- package/dist/set/index.cjs.map +1 -0
- package/dist/set/index.d.cts +61 -0
- package/dist/set/index.d.cts.map +1 -0
- package/dist/set/index.d.mts +61 -0
- package/dist/set/index.d.mts.map +1 -0
- package/dist/set/index.mjs +115 -0
- package/dist/set/index.mjs.map +1 -0
- package/dist/string/index.cjs +288 -0
- package/dist/string/index.cjs.map +1 -0
- package/dist/string/index.d.cts +144 -0
- package/dist/string/index.d.cts.map +1 -0
- package/dist/string/index.d.mts +144 -0
- package/dist/string/index.d.mts.map +1 -0
- package/dist/string/index.mjs +254 -0
- package/dist/string/index.mjs.map +1 -0
- package/dist/tuple/index.cjs +135 -0
- package/dist/tuple/index.cjs.map +1 -0
- package/dist/tuple/index.d.cts +207 -0
- package/dist/tuple/index.d.cts.map +1 -0
- package/dist/tuple/index.d.mts +207 -0
- package/dist/tuple/index.d.mts.map +1 -0
- package/dist/tuple/index.mjs +122 -0
- package/dist/tuple/index.mjs.map +1 -0
- package/dist/types-D8f67ZCe.d.cts +54 -0
- package/dist/types-D8f67ZCe.d.cts.map +1 -0
- package/dist/types-D8f67ZCe.d.mts +54 -0
- package/dist/types-D8f67ZCe.d.mts.map +1 -0
- package/package.json +177 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
const require_purry = require("./purry-B2_0DGLV.cjs");
|
|
2
|
+
//#region src/function/always.ts
|
|
3
|
+
function always(value) {
|
|
4
|
+
return () => value;
|
|
5
|
+
}
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/function/internal/_compose.ts
|
|
8
|
+
function composeImplementation(input, ...pipeline) {
|
|
9
|
+
const len = pipeline.length;
|
|
10
|
+
let output = input;
|
|
11
|
+
for (let i = len - 1; i >= 0; i -= 1) {
|
|
12
|
+
output = pipeline[i](output);
|
|
13
|
+
if (Error.isError(output)) return output;
|
|
14
|
+
}
|
|
15
|
+
return output;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/function/compose.ts
|
|
19
|
+
function compose(input, ...pipeline) {
|
|
20
|
+
return composeImplementation(input, ...pipeline);
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/function/composed.ts
|
|
24
|
+
function composed(...pipeline) {
|
|
25
|
+
return (input) => composeImplementation(input, ...pipeline);
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/function/memoizeOne.ts
|
|
29
|
+
function equalsByRef(first, second) {
|
|
30
|
+
if (first === second) return true;
|
|
31
|
+
if (Number.isNaN(first) && Number.isNaN(second)) return true;
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
function areInputsEqual(newInputs, lastInputs) {
|
|
35
|
+
if (newInputs.length !== lastInputs.length) return false;
|
|
36
|
+
for (let i = 0; i < newInputs.length; i += 1) if (!equalsByRef(newInputs[i], lastInputs[i])) return false;
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
function memoizeOneImplementation(fn, argumentCompareFn) {
|
|
40
|
+
let cache = null;
|
|
41
|
+
function memoized(...newArgs) {
|
|
42
|
+
if (cache?.lastThis === this && argumentCompareFn(newArgs, cache.lastArgs)) return cache.lastResult;
|
|
43
|
+
const lastResult = fn.apply(this, newArgs);
|
|
44
|
+
cache = {
|
|
45
|
+
lastArgs: newArgs,
|
|
46
|
+
lastResult,
|
|
47
|
+
lastThis: this
|
|
48
|
+
};
|
|
49
|
+
return lastResult;
|
|
50
|
+
}
|
|
51
|
+
memoized.clear = () => {
|
|
52
|
+
cache = null;
|
|
53
|
+
};
|
|
54
|
+
return memoized;
|
|
55
|
+
}
|
|
56
|
+
function memoizeOne(fn) {
|
|
57
|
+
return memoizeOneImplementation(fn, areInputsEqual);
|
|
58
|
+
}
|
|
59
|
+
memoizeOne.with = memoizeOneImplementation;
|
|
60
|
+
//#endregion
|
|
61
|
+
//#region src/function/noop.ts
|
|
62
|
+
/**
|
|
63
|
+
* No operation function.
|
|
64
|
+
*
|
|
65
|
+
* @param args - The arguments to pass to the function.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* noop(); // void
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
function noop(...args) {}
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/function/internal/_pipe.ts
|
|
75
|
+
function pipeImplementation(input, ...pipeline) {
|
|
76
|
+
const len = pipeline.length;
|
|
77
|
+
let output = input;
|
|
78
|
+
for (let i = 0; i < len; i += 1) {
|
|
79
|
+
output = pipeline[i](output);
|
|
80
|
+
if (Error.isError(output)) return output;
|
|
81
|
+
}
|
|
82
|
+
return output;
|
|
83
|
+
}
|
|
84
|
+
//#endregion
|
|
85
|
+
//#region src/function/pipe.ts
|
|
86
|
+
function pipe(input, ...pipeline) {
|
|
87
|
+
return pipeImplementation(input, ...pipeline);
|
|
88
|
+
}
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/function/piped.ts
|
|
91
|
+
function piped(...pipeline) {
|
|
92
|
+
return (value) => pipeImplementation(value, ...pipeline);
|
|
93
|
+
}
|
|
94
|
+
//#endregion
|
|
95
|
+
//#region src/function/tap.ts
|
|
96
|
+
function tap(callbackFn) {
|
|
97
|
+
return (data) => {
|
|
98
|
+
callbackFn(data);
|
|
99
|
+
return data;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
103
|
+
//#region src/function/unless.ts
|
|
104
|
+
function unlessImplementation(data, predicate, fn) {
|
|
105
|
+
return predicate(data) ? data : fn(data);
|
|
106
|
+
}
|
|
107
|
+
function unless(...args) {
|
|
108
|
+
return require_purry.purry(unlessImplementation, args);
|
|
109
|
+
}
|
|
110
|
+
//#endregion
|
|
111
|
+
//#region src/function/when.ts
|
|
112
|
+
function whenImplementation(data, predicate, fn) {
|
|
113
|
+
return predicate(data) ? fn(data) : data;
|
|
114
|
+
}
|
|
115
|
+
function when(...args) {
|
|
116
|
+
return require_purry.purry(whenImplementation, args);
|
|
117
|
+
}
|
|
118
|
+
//#endregion
|
|
119
|
+
Object.defineProperty(exports, "always", {
|
|
120
|
+
enumerable: true,
|
|
121
|
+
get: function() {
|
|
122
|
+
return always;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
Object.defineProperty(exports, "compose", {
|
|
126
|
+
enumerable: true,
|
|
127
|
+
get: function() {
|
|
128
|
+
return compose;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
Object.defineProperty(exports, "composed", {
|
|
132
|
+
enumerable: true,
|
|
133
|
+
get: function() {
|
|
134
|
+
return composed;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
Object.defineProperty(exports, "memoizeOne", {
|
|
138
|
+
enumerable: true,
|
|
139
|
+
get: function() {
|
|
140
|
+
return memoizeOne;
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
Object.defineProperty(exports, "memoizeOneImplementation", {
|
|
144
|
+
enumerable: true,
|
|
145
|
+
get: function() {
|
|
146
|
+
return memoizeOneImplementation;
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
Object.defineProperty(exports, "noop", {
|
|
150
|
+
enumerable: true,
|
|
151
|
+
get: function() {
|
|
152
|
+
return noop;
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
Object.defineProperty(exports, "pipe", {
|
|
156
|
+
enumerable: true,
|
|
157
|
+
get: function() {
|
|
158
|
+
return pipe;
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
Object.defineProperty(exports, "piped", {
|
|
162
|
+
enumerable: true,
|
|
163
|
+
get: function() {
|
|
164
|
+
return piped;
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
Object.defineProperty(exports, "tap", {
|
|
168
|
+
enumerable: true,
|
|
169
|
+
get: function() {
|
|
170
|
+
return tap;
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
Object.defineProperty(exports, "unless", {
|
|
174
|
+
enumerable: true,
|
|
175
|
+
get: function() {
|
|
176
|
+
return unless;
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
Object.defineProperty(exports, "when", {
|
|
180
|
+
enumerable: true,
|
|
181
|
+
get: function() {
|
|
182
|
+
return when;
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
//# sourceMappingURL=function-CB82a2GS.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-CB82a2GS.cjs","names":["purry","purry"],"sources":["../src/function/always.ts","../src/function/internal/_compose.ts","../src/function/compose.ts","../src/function/composed.ts","../src/function/memoizeOne.ts","../src/function/noop.ts","../src/function/internal/_pipe.ts","../src/function/pipe.ts","../src/function/piped.ts","../src/function/tap.ts","../src/function/unless.ts","../src/function/when.ts"],"sourcesContent":["export function always<T>(value: T): (...args: unknown[]) => T {\n return () => value;\n}\n","export function composeImplementation(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n const len = pipeline.length;\n let output: unknown = input;\n for (let i = len - 1; i >= 0; i -= 1) {\n output = pipeline[i]!(output);\n if (Error.isError(output)) {\n return output;\n }\n }\n return output;\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { composeImplementation } from './internal/_compose';\n\nexport function compose<A, B>(input: A, fn1: Fn<Ok<A>, B>): B | Err<A>;\nexport function compose<A, B, C>(input: A, fn2: Fn<Ok<B>, C>, fn1: Fn<Ok<A>, B>): C | Err<A> | Err<B>;\nexport function compose<A, B, C, D>(\n input: A,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): D | Err<A> | Err<B> | Err<C>;\nexport function compose<A, B, C, D, E>(\n input: A,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function compose<A, B, C, D, E, F>(\n input: A,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function compose<A, B, C, D, E, F, G>(\n input: A,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function compose<A, B, C, D, E, F, G, H>(\n input: A,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function compose<A, B, C, D, E, F, G, H, I>(\n input: A,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function compose<A, B, C, D, E, F, G, H, I, J>(\n input: A,\n fn9: Fn<Ok<I>, J>,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function compose(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return composeImplementation(input, ...pipeline);\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { composeImplementation } from './internal/_compose';\n\nexport function composed<A, B>(fn1: Fn<Ok<A>, B>): (input: A) => B | Err<A>;\nexport function composed<A, B, C>(fn2: Fn<Ok<B>, C>, fn1: Fn<Ok<A>, B>): (input: A) => C | Err<A> | Err<B>;\nexport function composed<A, B, C, D>(\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => D | Err<A> | Err<B> | Err<C>;\nexport function composed<A, B, C, D, E>(\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function composed<A, B, C, D, E, F>(\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function composed<A, B, C, D, E, F, G>(\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function composed<A, B, C, D, E, F, G, H>(\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function composed<A, B, C, D, E, F, G, H, I>(\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function composed<A, B, C, D, E, F, G, H, I, J>(\n fn9: Fn<Ok<I>, J>,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function composed(...pipeline: readonly ((input: unknown) => unknown)[]): (input: unknown) => any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (input: unknown) => composeImplementation(input, ...pipeline);\n}\n","function equalsByRef(first: unknown, second: unknown): boolean {\n if (first === second) {\n return true;\n }\n if (Number.isNaN(first) && Number.isNaN(second)) {\n return true;\n }\n\n return false;\n}\n\nfunction areInputsEqual(newInputs: readonly unknown[], lastInputs: readonly unknown[]): boolean {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (let i = 0; i < newInputs.length; i += 1) {\n if (!equalsByRef(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport type ArgumentCompareFn<TFunc extends (...args: unknown[]) => unknown> = (\n newArgs: Parameters<TFunc>,\n lastArgs: Parameters<TFunc>,\n) => boolean;\n\nexport type MemoizedFn<TFunc extends (this: unknown, ...args: unknown[]) => unknown> = {\n clear: () => void;\n (this: ThisParameterType<TFunc>, ...args: Parameters<TFunc>): ReturnType<TFunc>;\n};\n\ntype Cache<TFunc extends (this: unknown, ...args: unknown[]) => unknown> = {\n lastArgs: Parameters<TFunc>;\n lastResult: ReturnType<TFunc>;\n lastThis: ThisParameterType<TFunc>;\n};\n\nexport function memoizeOneImplementation<TFunc extends (this: unknown, ...args: unknown[]) => unknown>(\n fn: TFunc,\n argumentCompareFn: ArgumentCompareFn<TFunc>,\n): MemoizedFn<TFunc> {\n let cache: Cache<TFunc> | null = null;\n\n function memoized(this: ThisParameterType<TFunc>, ...newArgs: Parameters<TFunc>): ReturnType<TFunc> {\n if (cache?.lastThis === this && argumentCompareFn(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n\n const lastResult = fn.apply(this, newArgs) as ReturnType<TFunc>;\n cache = {\n lastArgs: newArgs,\n lastResult,\n lastThis: this,\n };\n\n return lastResult;\n }\n\n memoized.clear = () => {\n cache = null;\n };\n\n return memoized;\n}\n\nexport function memoizeOne<TFunc extends (this: unknown, ...args: unknown[]) => unknown>(fn: TFunc): MemoizedFn<TFunc> {\n return memoizeOneImplementation(fn, areInputsEqual);\n}\n\nmemoizeOne.with = memoizeOneImplementation;\n","/**\n * No operation function.\n *\n * @param args - The arguments to pass to the function.\n *\n * @example\n * ```ts\n * noop(); // void\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function noop(...args: unknown[]): void {\n // noop\n}\n","export function pipeImplementation(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n const len = pipeline.length;\n let output: unknown = input;\n for (let i = 0; i < len; i += 1) {\n output = pipeline[i]!(output);\n if (Error.isError(output)) {\n return output;\n }\n }\n return output;\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { pipeImplementation } from './internal/_pipe';\n\n// TODO: add up to 9 arguments\nexport function pipe<A, B>(value: A, fn1: Fn<Ok<A>, B>): B | Err<A>;\nexport function pipe<A, B, C>(value: A, fn1: Fn<Ok<A>, B>, fn2: Fn<Ok<B>, C>): C | Err<A> | Err<B>;\nexport function pipe<A, B, C, D>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n): D | Err<A> | Err<B> | Err<C>;\nexport function pipe<A, B, C, D, E>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n): E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function pipe<A, B, C, D, E, F>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function pipe<A, B, C, D, E, F, G>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function pipe<A, B, C, D, E, F, G, H>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function pipe<A, B, C, D, E, F, G, H, I>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function pipe<A, B, C, D, E, F, G, H, I, J>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n fn9: Fn<Ok<I>, J>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function pipe(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return pipeImplementation(input, ...pipeline);\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { pipeImplementation } from './internal/_pipe';\n\nexport function piped<A, B>(fn1: Fn<Ok<A>, B>): (input: A) => B | Err<A>;\nexport function piped<A, B, C>(fn1: Fn<Ok<A>, B>, fn2: Fn<Ok<B>, C>): (input: A) => C | Err<A> | Err<B>;\nexport function piped<A, B, C, D>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n): (input: A) => D | Err<A> | Err<B> | Err<C>;\nexport function piped<A, B, C, D, E>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n): (input: A) => E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function piped<A, B, C, D, E, F>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function piped<A, B, C, D, E, F, G>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function piped<A, B, C, D, E, F, G, H>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function piped<A, B, C, D, E, F, G, H, I>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function piped<A, B, C, D, E, F, G, H, I, J>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n fn9: Fn<Ok<I>, J>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function piped(...pipeline: readonly ((input: unknown) => unknown)[]): (input: unknown) => any {\n return (value: unknown): unknown => pipeImplementation(value, ...pipeline);\n}\n","export function tap<T>(callbackFn: (data: T) => void): (data: T) => T {\n return (data: T) => {\n callbackFn(data);\n return data;\n };\n}\n","import { purry } from './purry';\n\nfunction unlessImplementation<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T {\n return predicate(data) ? data : fn(data);\n}\n\nexport function unless<T, S extends T>(predicate: (data: T) => data is S, fn: (data: S) => T): (data: T) => T;\nexport function unless<T>(predicate: (data: T) => boolean, fn: (data: T) => T): (data: T) => T;\nexport function unless<T, S extends T>(data: T, predicate: (data: T) => data is S, fn: (data: S) => T): T;\nexport function unless<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T;\nexport function unless(...args: unknown[]): unknown {\n return purry(unlessImplementation, args);\n}\n","import { purry } from './purry';\n\nfunction whenImplementation<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T {\n return predicate(data) ? fn(data) : data;\n}\n\nexport function when<T, S extends T>(predicate: (data: T) => data is S, fn: (data: S) => T): (data: T) => T;\nexport function when<T>(predicate: (data: T) => boolean, fn: (data: T) => T): (data: T) => T;\nexport function when<T, S extends T>(data: T, predicate: (data: T) => data is S, fn: (data: S) => T): T;\nexport function when<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T;\nexport function when(...args: unknown[]): unknown {\n return purry(whenImplementation, args);\n}\n"],"mappings":";;AAAA,SAAgB,OAAU,OAAqC;CAC7D,aAAa;AACf;;;ACFA,SAAgB,sBAAsB,OAAgB,GAAG,UAAqD;CAC5G,MAAM,MAAM,SAAS;CACrB,IAAI,SAAkB;CACtB,KAAK,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG;EACpC,SAAS,SAAS,GAAI,MAAM;EAC5B,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO;CAEX;CACA,OAAO;AACT;;;AC2DA,SAAgB,QAAQ,OAAgB,GAAG,UAAqD;CAE9F,OAAO,sBAAsB,OAAO,GAAG,QAAQ;AACjD;;;ACVA,SAAgB,SAAS,GAAG,UAA6E;CAEvG,QAAQ,UAAmB,sBAAsB,OAAO,GAAG,QAAQ;AACrE;;;ACjEA,SAAS,YAAY,OAAgB,QAA0B;CAC7D,IAAI,UAAU,QACZ,OAAO;CAET,IAAI,OAAO,MAAM,KAAK,KAAK,OAAO,MAAM,MAAM,GAC5C,OAAO;CAGT,OAAO;AACT;AAEA,SAAS,eAAe,WAA+B,YAAyC;CAC9F,IAAI,UAAU,WAAW,WAAW,QAClC,OAAO;CAGT,KAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK,GACzC,IAAI,CAAC,YAAY,UAAU,IAAI,WAAW,EAAE,GAC1C,OAAO;CAGX,OAAO;AACT;AAkBA,SAAgB,yBACd,IACA,mBACmB;CACnB,IAAI,QAA6B;CAEjC,SAAS,SAAyC,GAAG,SAA+C;EAClG,IAAI,OAAO,aAAa,QAAQ,kBAAkB,SAAS,MAAM,QAAQ,GACvE,OAAO,MAAM;EAGf,MAAM,aAAa,GAAG,MAAM,MAAM,OAAO;EACzC,QAAQ;GACN,UAAU;GACV;GACA,UAAU;EACZ;EAEA,OAAO;CACT;CAEA,SAAS,cAAc;EACrB,QAAQ;CACV;CAEA,OAAO;AACT;AAEA,SAAgB,WAAyE,IAA8B;CACrH,OAAO,yBAAyB,IAAI,cAAc;AACpD;AAEA,WAAW,OAAO;;;;;;;;;;;;;AC7DlB,SAAgB,KAAK,GAAG,MAAuB,CAE/C;;;ACbA,SAAgB,mBAAmB,OAAgB,GAAG,UAAqD;CACzG,MAAM,MAAM,SAAS;CACrB,IAAI,SAAkB;CACtB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;EAC/B,SAAS,SAAS,GAAI,MAAM;EAC5B,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO;CAEX;CACA,OAAO;AACT;;;AC4DA,SAAgB,KAAK,OAAgB,GAAG,UAAqD;CAE3F,OAAO,mBAAmB,OAAO,GAAG,QAAQ;AAC9C;;;ACXA,SAAgB,MAAM,GAAG,UAA6E;CACpG,QAAQ,UAA4B,mBAAmB,OAAO,GAAG,QAAQ;AAC3E;;;AChEA,SAAgB,IAAO,YAA+C;CACpE,QAAQ,SAAY;EAClB,WAAW,IAAI;EACf,OAAO;CACT;AACF;;;ACHA,SAAS,qBAAwB,MAAS,WAAiC,IAAuB;CAChG,OAAO,UAAU,IAAI,IAAI,OAAO,GAAG,IAAI;AACzC;AAMA,SAAgB,OAAO,GAAG,MAA0B;CAClD,OAAOA,cAAAA,MAAM,sBAAsB,IAAI;AACzC;;;ACVA,SAAS,mBAAsB,MAAS,WAAiC,IAAuB;CAC9F,OAAO,UAAU,IAAI,IAAI,GAAG,IAAI,IAAI;AACtC;AAMA,SAAgB,KAAK,GAAG,MAA0B;CAChD,OAAOC,cAAAA,MAAM,oBAAoB,IAAI;AACvC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { t as purry } from "./purry-BOWmqwDB.mjs";
|
|
2
|
+
//#region src/function/always.ts
|
|
3
|
+
function always(value) {
|
|
4
|
+
return () => value;
|
|
5
|
+
}
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/function/internal/_compose.ts
|
|
8
|
+
function composeImplementation(input, ...pipeline) {
|
|
9
|
+
const len = pipeline.length;
|
|
10
|
+
let output = input;
|
|
11
|
+
for (let i = len - 1; i >= 0; i -= 1) {
|
|
12
|
+
output = pipeline[i](output);
|
|
13
|
+
if (Error.isError(output)) return output;
|
|
14
|
+
}
|
|
15
|
+
return output;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/function/compose.ts
|
|
19
|
+
function compose(input, ...pipeline) {
|
|
20
|
+
return composeImplementation(input, ...pipeline);
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/function/composed.ts
|
|
24
|
+
function composed(...pipeline) {
|
|
25
|
+
return (input) => composeImplementation(input, ...pipeline);
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/function/memoizeOne.ts
|
|
29
|
+
function equalsByRef(first, second) {
|
|
30
|
+
if (first === second) return true;
|
|
31
|
+
if (Number.isNaN(first) && Number.isNaN(second)) return true;
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
function areInputsEqual(newInputs, lastInputs) {
|
|
35
|
+
if (newInputs.length !== lastInputs.length) return false;
|
|
36
|
+
for (let i = 0; i < newInputs.length; i += 1) if (!equalsByRef(newInputs[i], lastInputs[i])) return false;
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
function memoizeOneImplementation(fn, argumentCompareFn) {
|
|
40
|
+
let cache = null;
|
|
41
|
+
function memoized(...newArgs) {
|
|
42
|
+
if (cache?.lastThis === this && argumentCompareFn(newArgs, cache.lastArgs)) return cache.lastResult;
|
|
43
|
+
const lastResult = fn.apply(this, newArgs);
|
|
44
|
+
cache = {
|
|
45
|
+
lastArgs: newArgs,
|
|
46
|
+
lastResult,
|
|
47
|
+
lastThis: this
|
|
48
|
+
};
|
|
49
|
+
return lastResult;
|
|
50
|
+
}
|
|
51
|
+
memoized.clear = () => {
|
|
52
|
+
cache = null;
|
|
53
|
+
};
|
|
54
|
+
return memoized;
|
|
55
|
+
}
|
|
56
|
+
function memoizeOne(fn) {
|
|
57
|
+
return memoizeOneImplementation(fn, areInputsEqual);
|
|
58
|
+
}
|
|
59
|
+
memoizeOne.with = memoizeOneImplementation;
|
|
60
|
+
//#endregion
|
|
61
|
+
//#region src/function/noop.ts
|
|
62
|
+
/**
|
|
63
|
+
* No operation function.
|
|
64
|
+
*
|
|
65
|
+
* @param args - The arguments to pass to the function.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* noop(); // void
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
function noop(...args) {}
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/function/internal/_pipe.ts
|
|
75
|
+
function pipeImplementation(input, ...pipeline) {
|
|
76
|
+
const len = pipeline.length;
|
|
77
|
+
let output = input;
|
|
78
|
+
for (let i = 0; i < len; i += 1) {
|
|
79
|
+
output = pipeline[i](output);
|
|
80
|
+
if (Error.isError(output)) return output;
|
|
81
|
+
}
|
|
82
|
+
return output;
|
|
83
|
+
}
|
|
84
|
+
//#endregion
|
|
85
|
+
//#region src/function/pipe.ts
|
|
86
|
+
function pipe(input, ...pipeline) {
|
|
87
|
+
return pipeImplementation(input, ...pipeline);
|
|
88
|
+
}
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/function/piped.ts
|
|
91
|
+
function piped(...pipeline) {
|
|
92
|
+
return (value) => pipeImplementation(value, ...pipeline);
|
|
93
|
+
}
|
|
94
|
+
//#endregion
|
|
95
|
+
//#region src/function/tap.ts
|
|
96
|
+
function tap(callbackFn) {
|
|
97
|
+
return (data) => {
|
|
98
|
+
callbackFn(data);
|
|
99
|
+
return data;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
103
|
+
//#region src/function/unless.ts
|
|
104
|
+
function unlessImplementation(data, predicate, fn) {
|
|
105
|
+
return predicate(data) ? data : fn(data);
|
|
106
|
+
}
|
|
107
|
+
function unless(...args) {
|
|
108
|
+
return purry(unlessImplementation, args);
|
|
109
|
+
}
|
|
110
|
+
//#endregion
|
|
111
|
+
//#region src/function/when.ts
|
|
112
|
+
function whenImplementation(data, predicate, fn) {
|
|
113
|
+
return predicate(data) ? fn(data) : data;
|
|
114
|
+
}
|
|
115
|
+
function when(...args) {
|
|
116
|
+
return purry(whenImplementation, args);
|
|
117
|
+
}
|
|
118
|
+
//#endregion
|
|
119
|
+
export { pipe as a, memoizeOneImplementation as c, always as d, piped as i, composed as l, unless as n, noop as o, tap as r, memoizeOne as s, when as t, compose as u };
|
|
120
|
+
|
|
121
|
+
//# sourceMappingURL=function-DnI2v0p3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-DnI2v0p3.mjs","names":[],"sources":["../src/function/always.ts","../src/function/internal/_compose.ts","../src/function/compose.ts","../src/function/composed.ts","../src/function/memoizeOne.ts","../src/function/noop.ts","../src/function/internal/_pipe.ts","../src/function/pipe.ts","../src/function/piped.ts","../src/function/tap.ts","../src/function/unless.ts","../src/function/when.ts"],"sourcesContent":["export function always<T>(value: T): (...args: unknown[]) => T {\n return () => value;\n}\n","export function composeImplementation(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n const len = pipeline.length;\n let output: unknown = input;\n for (let i = len - 1; i >= 0; i -= 1) {\n output = pipeline[i]!(output);\n if (Error.isError(output)) {\n return output;\n }\n }\n return output;\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { composeImplementation } from './internal/_compose';\n\nexport function compose<A, B>(input: A, fn1: Fn<Ok<A>, B>): B | Err<A>;\nexport function compose<A, B, C>(input: A, fn2: Fn<Ok<B>, C>, fn1: Fn<Ok<A>, B>): C | Err<A> | Err<B>;\nexport function compose<A, B, C, D>(\n input: A,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): D | Err<A> | Err<B> | Err<C>;\nexport function compose<A, B, C, D, E>(\n input: A,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function compose<A, B, C, D, E, F>(\n input: A,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function compose<A, B, C, D, E, F, G>(\n input: A,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function compose<A, B, C, D, E, F, G, H>(\n input: A,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function compose<A, B, C, D, E, F, G, H, I>(\n input: A,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function compose<A, B, C, D, E, F, G, H, I, J>(\n input: A,\n fn9: Fn<Ok<I>, J>,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function compose(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return composeImplementation(input, ...pipeline);\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { composeImplementation } from './internal/_compose';\n\nexport function composed<A, B>(fn1: Fn<Ok<A>, B>): (input: A) => B | Err<A>;\nexport function composed<A, B, C>(fn2: Fn<Ok<B>, C>, fn1: Fn<Ok<A>, B>): (input: A) => C | Err<A> | Err<B>;\nexport function composed<A, B, C, D>(\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => D | Err<A> | Err<B> | Err<C>;\nexport function composed<A, B, C, D, E>(\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function composed<A, B, C, D, E, F>(\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function composed<A, B, C, D, E, F, G>(\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function composed<A, B, C, D, E, F, G, H>(\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function composed<A, B, C, D, E, F, G, H, I>(\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function composed<A, B, C, D, E, F, G, H, I, J>(\n fn9: Fn<Ok<I>, J>,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function composed(...pipeline: readonly ((input: unknown) => unknown)[]): (input: unknown) => any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (input: unknown) => composeImplementation(input, ...pipeline);\n}\n","function equalsByRef(first: unknown, second: unknown): boolean {\n if (first === second) {\n return true;\n }\n if (Number.isNaN(first) && Number.isNaN(second)) {\n return true;\n }\n\n return false;\n}\n\nfunction areInputsEqual(newInputs: readonly unknown[], lastInputs: readonly unknown[]): boolean {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (let i = 0; i < newInputs.length; i += 1) {\n if (!equalsByRef(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport type ArgumentCompareFn<TFunc extends (...args: unknown[]) => unknown> = (\n newArgs: Parameters<TFunc>,\n lastArgs: Parameters<TFunc>,\n) => boolean;\n\nexport type MemoizedFn<TFunc extends (this: unknown, ...args: unknown[]) => unknown> = {\n clear: () => void;\n (this: ThisParameterType<TFunc>, ...args: Parameters<TFunc>): ReturnType<TFunc>;\n};\n\ntype Cache<TFunc extends (this: unknown, ...args: unknown[]) => unknown> = {\n lastArgs: Parameters<TFunc>;\n lastResult: ReturnType<TFunc>;\n lastThis: ThisParameterType<TFunc>;\n};\n\nexport function memoizeOneImplementation<TFunc extends (this: unknown, ...args: unknown[]) => unknown>(\n fn: TFunc,\n argumentCompareFn: ArgumentCompareFn<TFunc>,\n): MemoizedFn<TFunc> {\n let cache: Cache<TFunc> | null = null;\n\n function memoized(this: ThisParameterType<TFunc>, ...newArgs: Parameters<TFunc>): ReturnType<TFunc> {\n if (cache?.lastThis === this && argumentCompareFn(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n\n const lastResult = fn.apply(this, newArgs) as ReturnType<TFunc>;\n cache = {\n lastArgs: newArgs,\n lastResult,\n lastThis: this,\n };\n\n return lastResult;\n }\n\n memoized.clear = () => {\n cache = null;\n };\n\n return memoized;\n}\n\nexport function memoizeOne<TFunc extends (this: unknown, ...args: unknown[]) => unknown>(fn: TFunc): MemoizedFn<TFunc> {\n return memoizeOneImplementation(fn, areInputsEqual);\n}\n\nmemoizeOne.with = memoizeOneImplementation;\n","/**\n * No operation function.\n *\n * @param args - The arguments to pass to the function.\n *\n * @example\n * ```ts\n * noop(); // void\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function noop(...args: unknown[]): void {\n // noop\n}\n","export function pipeImplementation(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n const len = pipeline.length;\n let output: unknown = input;\n for (let i = 0; i < len; i += 1) {\n output = pipeline[i]!(output);\n if (Error.isError(output)) {\n return output;\n }\n }\n return output;\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { pipeImplementation } from './internal/_pipe';\n\n// TODO: add up to 9 arguments\nexport function pipe<A, B>(value: A, fn1: Fn<Ok<A>, B>): B | Err<A>;\nexport function pipe<A, B, C>(value: A, fn1: Fn<Ok<A>, B>, fn2: Fn<Ok<B>, C>): C | Err<A> | Err<B>;\nexport function pipe<A, B, C, D>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n): D | Err<A> | Err<B> | Err<C>;\nexport function pipe<A, B, C, D, E>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n): E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function pipe<A, B, C, D, E, F>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function pipe<A, B, C, D, E, F, G>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function pipe<A, B, C, D, E, F, G, H>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function pipe<A, B, C, D, E, F, G, H, I>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function pipe<A, B, C, D, E, F, G, H, I, J>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n fn9: Fn<Ok<I>, J>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function pipe(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return pipeImplementation(input, ...pipeline);\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { pipeImplementation } from './internal/_pipe';\n\nexport function piped<A, B>(fn1: Fn<Ok<A>, B>): (input: A) => B | Err<A>;\nexport function piped<A, B, C>(fn1: Fn<Ok<A>, B>, fn2: Fn<Ok<B>, C>): (input: A) => C | Err<A> | Err<B>;\nexport function piped<A, B, C, D>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n): (input: A) => D | Err<A> | Err<B> | Err<C>;\nexport function piped<A, B, C, D, E>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n): (input: A) => E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function piped<A, B, C, D, E, F>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function piped<A, B, C, D, E, F, G>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function piped<A, B, C, D, E, F, G, H>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function piped<A, B, C, D, E, F, G, H, I>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function piped<A, B, C, D, E, F, G, H, I, J>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n fn9: Fn<Ok<I>, J>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function piped(...pipeline: readonly ((input: unknown) => unknown)[]): (input: unknown) => any {\n return (value: unknown): unknown => pipeImplementation(value, ...pipeline);\n}\n","export function tap<T>(callbackFn: (data: T) => void): (data: T) => T {\n return (data: T) => {\n callbackFn(data);\n return data;\n };\n}\n","import { purry } from './purry';\n\nfunction unlessImplementation<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T {\n return predicate(data) ? data : fn(data);\n}\n\nexport function unless<T, S extends T>(predicate: (data: T) => data is S, fn: (data: S) => T): (data: T) => T;\nexport function unless<T>(predicate: (data: T) => boolean, fn: (data: T) => T): (data: T) => T;\nexport function unless<T, S extends T>(data: T, predicate: (data: T) => data is S, fn: (data: S) => T): T;\nexport function unless<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T;\nexport function unless(...args: unknown[]): unknown {\n return purry(unlessImplementation, args);\n}\n","import { purry } from './purry';\n\nfunction whenImplementation<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T {\n return predicate(data) ? fn(data) : data;\n}\n\nexport function when<T, S extends T>(predicate: (data: T) => data is S, fn: (data: S) => T): (data: T) => T;\nexport function when<T>(predicate: (data: T) => boolean, fn: (data: T) => T): (data: T) => T;\nexport function when<T, S extends T>(data: T, predicate: (data: T) => data is S, fn: (data: S) => T): T;\nexport function when<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T;\nexport function when(...args: unknown[]): unknown {\n return purry(whenImplementation, args);\n}\n"],"mappings":";;AAAA,SAAgB,OAAU,OAAqC;CAC7D,aAAa;AACf;;;ACFA,SAAgB,sBAAsB,OAAgB,GAAG,UAAqD;CAC5G,MAAM,MAAM,SAAS;CACrB,IAAI,SAAkB;CACtB,KAAK,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG;EACpC,SAAS,SAAS,GAAI,MAAM;EAC5B,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO;CAEX;CACA,OAAO;AACT;;;AC2DA,SAAgB,QAAQ,OAAgB,GAAG,UAAqD;CAE9F,OAAO,sBAAsB,OAAO,GAAG,QAAQ;AACjD;;;ACVA,SAAgB,SAAS,GAAG,UAA6E;CAEvG,QAAQ,UAAmB,sBAAsB,OAAO,GAAG,QAAQ;AACrE;;;ACjEA,SAAS,YAAY,OAAgB,QAA0B;CAC7D,IAAI,UAAU,QACZ,OAAO;CAET,IAAI,OAAO,MAAM,KAAK,KAAK,OAAO,MAAM,MAAM,GAC5C,OAAO;CAGT,OAAO;AACT;AAEA,SAAS,eAAe,WAA+B,YAAyC;CAC9F,IAAI,UAAU,WAAW,WAAW,QAClC,OAAO;CAGT,KAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK,GACzC,IAAI,CAAC,YAAY,UAAU,IAAI,WAAW,EAAE,GAC1C,OAAO;CAGX,OAAO;AACT;AAkBA,SAAgB,yBACd,IACA,mBACmB;CACnB,IAAI,QAA6B;CAEjC,SAAS,SAAyC,GAAG,SAA+C;EAClG,IAAI,OAAO,aAAa,QAAQ,kBAAkB,SAAS,MAAM,QAAQ,GACvE,OAAO,MAAM;EAGf,MAAM,aAAa,GAAG,MAAM,MAAM,OAAO;EACzC,QAAQ;GACN,UAAU;GACV;GACA,UAAU;EACZ;EAEA,OAAO;CACT;CAEA,SAAS,cAAc;EACrB,QAAQ;CACV;CAEA,OAAO;AACT;AAEA,SAAgB,WAAyE,IAA8B;CACrH,OAAO,yBAAyB,IAAI,cAAc;AACpD;AAEA,WAAW,OAAO;;;;;;;;;;;;;AC7DlB,SAAgB,KAAK,GAAG,MAAuB,CAE/C;;;ACbA,SAAgB,mBAAmB,OAAgB,GAAG,UAAqD;CACzG,MAAM,MAAM,SAAS;CACrB,IAAI,SAAkB;CACtB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;EAC/B,SAAS,SAAS,GAAI,MAAM;EAC5B,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO;CAEX;CACA,OAAO;AACT;;;AC4DA,SAAgB,KAAK,OAAgB,GAAG,UAAqD;CAE3F,OAAO,mBAAmB,OAAO,GAAG,QAAQ;AAC9C;;;ACXA,SAAgB,MAAM,GAAG,UAA6E;CACpG,QAAQ,UAA4B,mBAAmB,OAAO,GAAG,QAAQ;AAC3E;;;AChEA,SAAgB,IAAO,YAA+C;CACpE,QAAQ,SAAY;EAClB,WAAW,IAAI;EACf,OAAO;CACT;AACF;;;ACHA,SAAS,qBAAwB,MAAS,WAAiC,IAAuB;CAChG,OAAO,UAAU,IAAI,IAAI,OAAO,GAAG,IAAI;AACzC;AAMA,SAAgB,OAAO,GAAG,MAA0B;CAClD,OAAO,MAAM,sBAAsB,IAAI;AACzC;;;ACVA,SAAS,mBAAsB,MAAS,WAAiC,IAAuB;CAC9F,OAAO,UAAU,IAAI,IAAI,GAAG,IAAI,IAAI;AACtC;AAMA,SAAgB,KAAK,GAAG,MAA0B;CAChD,OAAO,MAAM,oBAAoB,IAAI;AACvC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { t as purry } from "./purry-BOWmqwDB.mjs";
|
|
2
|
+
import { i as NotFoundError } from "./errors-Dw1kitu_.mjs";
|
|
3
|
+
//#region src/object/get.ts
|
|
4
|
+
function getImplementation(obj, key) {
|
|
5
|
+
return obj[key] ?? new NotFoundError(`Obj.get() :: Property ${String(key)} not found in object`);
|
|
6
|
+
}
|
|
7
|
+
function get(...args) {
|
|
8
|
+
return purry(getImplementation, args);
|
|
9
|
+
}
|
|
10
|
+
function getOrImplementation(obj, key, defaultValue) {
|
|
11
|
+
return obj[key] ?? defaultValue;
|
|
12
|
+
}
|
|
13
|
+
function getOr(...args) {
|
|
14
|
+
return purry(getOrImplementation, args);
|
|
15
|
+
}
|
|
16
|
+
get.or = getOr;
|
|
17
|
+
function getAssertImplementation(obj, key) {
|
|
18
|
+
return obj[key];
|
|
19
|
+
}
|
|
20
|
+
function getAssert(...args) {
|
|
21
|
+
return purry(getAssertImplementation, args);
|
|
22
|
+
}
|
|
23
|
+
get.assert = getAssert;
|
|
24
|
+
//#endregion
|
|
25
|
+
export { getAssert as n, get as t };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=get-CWL_cu6G.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-CWL_cu6G.mjs","names":[],"sources":["../src/object/get.ts"],"sourcesContent":["import { NotFoundError } from '../errors';\nimport { purry } from '../function/purry';\n\nfunction getImplementation<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n): NonNullable<Obj[Key]> | NotFoundError {\n return obj[key] ?? new NotFoundError(`Obj.get() :: Property ${String(key)} not found in object`);\n}\n\n/**\n * Get a property from an object by key.\n *\n * @category Object\n * @param key - The key to get the property from.\n * @param obj - The object to get the property from.\n *\n * @example\n * ```ts\n * get('name', { name: 'John' }); // 'John'\n * ```\n */\nexport function get<Obj extends object, Key extends keyof Obj>(\n key: Key,\n): (obj: Obj) => NonNullable<Obj[Key]> | NotFoundError;\nexport function get<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n): NonNullable<Obj[Key]> | NotFoundError;\nexport function get(...args: unknown[]): unknown {\n return purry(getImplementation, args);\n}\n\nfunction getOrImplementation<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n defaultValue: NonNullable<Obj[Key]>,\n): Obj[Key] {\n return obj[key] ?? defaultValue;\n}\n\nfunction getOr<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n defaultValue: NonNullable<Obj[Key]>,\n): Obj[Key];\nfunction getOr(...args: unknown[]): unknown {\n return purry(getOrImplementation, args);\n}\n\nget.or = getOr;\n\nfunction getAssertImplementation<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): Obj[Key] {\n return obj[key];\n}\n\nexport function getAssert<Obj extends object, Key extends keyof Obj>(key: Key): (obj: Obj) => NonNullable<Obj[Key]>;\nexport function getAssert<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): NonNullable<Obj[Key]>;\nexport function getAssert(...args: unknown[]): unknown {\n return purry(getAssertImplementation, args);\n}\n\nget.assert = getAssert;\n"],"mappings":";;;AAGA,SAAS,kBACP,KACA,KACuC;CACvC,OAAO,IAAI,QAAQ,IAAI,cAAc,yBAAyB,OAAO,GAAG,EAAE,qBAAqB;AACjG;AAqBA,SAAgB,IAAI,GAAG,MAA0B;CAC/C,OAAO,MAAM,mBAAmB,IAAI;AACtC;AAEA,SAAS,oBACP,KACA,KACA,cACU;CACV,OAAO,IAAI,QAAQ;AACrB;AAOA,SAAS,MAAM,GAAG,MAA0B;CAC1C,OAAO,MAAM,qBAAqB,IAAI;AACxC;AAEA,IAAI,KAAK;AAET,SAAS,wBAAmE,KAAU,KAAoB;CACxG,OAAO,IAAI;AACb;AAIA,SAAgB,UAAU,GAAG,MAA0B;CACrD,OAAO,MAAM,yBAAyB,IAAI;AAC5C;AAEA,IAAI,SAAS"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const require_purry = require("./purry-B2_0DGLV.cjs");
|
|
2
|
+
const require_errors = require("./errors-O-d_Vemi.cjs");
|
|
3
|
+
//#region src/object/get.ts
|
|
4
|
+
function getImplementation(obj, key) {
|
|
5
|
+
return obj[key] ?? new require_errors.NotFoundError(`Obj.get() :: Property ${String(key)} not found in object`);
|
|
6
|
+
}
|
|
7
|
+
function get(...args) {
|
|
8
|
+
return require_purry.purry(getImplementation, args);
|
|
9
|
+
}
|
|
10
|
+
function getOrImplementation(obj, key, defaultValue) {
|
|
11
|
+
return obj[key] ?? defaultValue;
|
|
12
|
+
}
|
|
13
|
+
function getOr(...args) {
|
|
14
|
+
return require_purry.purry(getOrImplementation, args);
|
|
15
|
+
}
|
|
16
|
+
get.or = getOr;
|
|
17
|
+
function getAssertImplementation(obj, key) {
|
|
18
|
+
return obj[key];
|
|
19
|
+
}
|
|
20
|
+
function getAssert(...args) {
|
|
21
|
+
return require_purry.purry(getAssertImplementation, args);
|
|
22
|
+
}
|
|
23
|
+
get.assert = getAssert;
|
|
24
|
+
//#endregion
|
|
25
|
+
Object.defineProperty(exports, "get", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function() {
|
|
28
|
+
return get;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, "getAssert", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function() {
|
|
34
|
+
return getAssert;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=get-yrs1Kqho.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-yrs1Kqho.cjs","names":["NotFoundError","purry"],"sources":["../src/object/get.ts"],"sourcesContent":["import { NotFoundError } from '../errors';\nimport { purry } from '../function/purry';\n\nfunction getImplementation<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n): NonNullable<Obj[Key]> | NotFoundError {\n return obj[key] ?? new NotFoundError(`Obj.get() :: Property ${String(key)} not found in object`);\n}\n\n/**\n * Get a property from an object by key.\n *\n * @category Object\n * @param key - The key to get the property from.\n * @param obj - The object to get the property from.\n *\n * @example\n * ```ts\n * get('name', { name: 'John' }); // 'John'\n * ```\n */\nexport function get<Obj extends object, Key extends keyof Obj>(\n key: Key,\n): (obj: Obj) => NonNullable<Obj[Key]> | NotFoundError;\nexport function get<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n): NonNullable<Obj[Key]> | NotFoundError;\nexport function get(...args: unknown[]): unknown {\n return purry(getImplementation, args);\n}\n\nfunction getOrImplementation<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n defaultValue: NonNullable<Obj[Key]>,\n): Obj[Key] {\n return obj[key] ?? defaultValue;\n}\n\nfunction getOr<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n defaultValue: NonNullable<Obj[Key]>,\n): Obj[Key];\nfunction getOr(...args: unknown[]): unknown {\n return purry(getOrImplementation, args);\n}\n\nget.or = getOr;\n\nfunction getAssertImplementation<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): Obj[Key] {\n return obj[key];\n}\n\nexport function getAssert<Obj extends object, Key extends keyof Obj>(key: Key): (obj: Obj) => NonNullable<Obj[Key]>;\nexport function getAssert<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): NonNullable<Obj[Key]>;\nexport function getAssert(...args: unknown[]): unknown {\n return purry(getAssertImplementation, args);\n}\n\nget.assert = getAssert;\n"],"mappings":";;;AAGA,SAAS,kBACP,KACA,KACuC;CACvC,OAAO,IAAI,QAAQ,IAAIA,eAAAA,cAAc,yBAAyB,OAAO,GAAG,EAAE,qBAAqB;AACjG;AAqBA,SAAgB,IAAI,GAAG,MAA0B;CAC/C,OAAOC,cAAAA,MAAM,mBAAmB,IAAI;AACtC;AAEA,SAAS,oBACP,KACA,KACA,cACU;CACV,OAAO,IAAI,QAAQ;AACrB;AAOA,SAAS,MAAM,GAAG,MAA0B;CAC1C,OAAOA,cAAAA,MAAM,qBAAqB,IAAI;AACxC;AAEA,IAAI,KAAK;AAET,SAAS,wBAAmE,KAAU,KAAoB;CACxG,OAAO,IAAI;AACb;AAIA,SAAgB,UAAU,GAAG,MAA0B;CACrD,OAAOA,cAAAA,MAAM,yBAAyB,IAAI;AAC5C;AAEA,IAAI,SAAS"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_isNotNil = require("../isNotNil-DrF-ohem.cjs");
|
|
3
|
+
//#region src/guard/isNull.ts
|
|
4
|
+
/**
|
|
5
|
+
* Check whether a value is strictly `null`.
|
|
6
|
+
*
|
|
7
|
+
* @category Guard
|
|
8
|
+
* @param value - The value to check.
|
|
9
|
+
* @returns `true` if `value` is `null`; otherwise `false`.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* isNull(null); // true
|
|
14
|
+
* isNull(undefined); // false
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
function isNull(value) {
|
|
18
|
+
return value === null;
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/guard/isUndefined.ts
|
|
22
|
+
/**
|
|
23
|
+
* Check whether a value is strictly `undefined`.
|
|
24
|
+
*
|
|
25
|
+
* @category Guard
|
|
26
|
+
* @param value - The value to check.
|
|
27
|
+
* @returns `true` if `value` is `undefined`; otherwise `false`.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* isUndefined(undefined); // true
|
|
32
|
+
* isUndefined(null); // false
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
function isUndefined(value) {
|
|
36
|
+
return value === void 0;
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
exports.isNotNil = require_isNotNil.isNotNil;
|
|
40
|
+
exports.isNull = isNull;
|
|
41
|
+
exports.isUndefined = isUndefined;
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"sourcesContent":["/**\n * Check whether a value is strictly `null`.\n *\n * @category Guard\n * @param value - The value to check.\n * @returns `true` if `value` is `null`; otherwise `false`.\n *\n * @example\n * ```ts\n * isNull(null); // true\n * isNull(undefined); // false\n * ```\n */\nexport function isNull<T>(value: T): value is T & null {\n return value === null;\n}\n","/**\n * Check whether a value is strictly `undefined`.\n *\n * @category Guard\n * @param value - The value to check.\n * @returns `true` if `value` is `undefined`; otherwise `false`.\n *\n * @example\n * ```ts\n * isUndefined(undefined); // true\n * isUndefined(null); // false\n * ```\n */\nexport function isUndefined<T>(value: T): value is T & undefined {\n return value === undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAaA,SAAgB,OAAU,OAA6B;CACrD,OAAO,UAAU;AACnB;;;;;;;;;;;;;;;;ACFA,SAAgB,YAAe,OAAkC;CAC/D,OAAO,UAAU,KAAA;AACnB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
//#region src/guard/isNotNil.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Check whether a value is not nullish (`null` nor `undefined`), using loose inequality (`!= null`).
|
|
4
|
+
* Narrows the type to {@link NonNullable}.
|
|
5
|
+
*
|
|
6
|
+
* @category Guard
|
|
7
|
+
* @param value - The value to check.
|
|
8
|
+
* @returns `true` if `value` is neither `null` nor `undefined`; otherwise `false`.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* isNotNil(0); // true
|
|
13
|
+
* isNotNil(null); // false
|
|
14
|
+
* isNotNil(undefined); // false
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare function isNotNil<T>(value: T): value is NonNullable<T>;
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region src/guard/isNull.d.ts
|
|
20
|
+
/**
|
|
21
|
+
* Check whether a value is strictly `null`.
|
|
22
|
+
*
|
|
23
|
+
* @category Guard
|
|
24
|
+
* @param value - The value to check.
|
|
25
|
+
* @returns `true` if `value` is `null`; otherwise `false`.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* isNull(null); // true
|
|
30
|
+
* isNull(undefined); // false
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
declare function isNull<T>(value: T): value is T & null;
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/guard/isUndefined.d.ts
|
|
36
|
+
/**
|
|
37
|
+
* Check whether a value is strictly `undefined`.
|
|
38
|
+
*
|
|
39
|
+
* @category Guard
|
|
40
|
+
* @param value - The value to check.
|
|
41
|
+
* @returns `true` if `value` is `undefined`; otherwise `false`.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* isUndefined(undefined); // true
|
|
46
|
+
* isUndefined(null); // false
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
declare function isUndefined<T>(value: T): value is T & undefined;
|
|
50
|
+
//#endregion
|
|
51
|
+
export { isNotNil, isNull, isUndefined };
|
|
52
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/guard/isNotNil.ts","../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"mappings":";;AAeA;;;;;;;;;;;;;;iBAAgB,QAAA,IAAY,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,WAAA,CAAY,CAAA;;;;AAA5D;;;;;;;;;;;;iBCFgB,MAAA,IAAU,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC;;;;ADE/C;;;;;;;;;;;;iBEFgB,WAAA,IAAe,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
//#region src/guard/isNotNil.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Check whether a value is not nullish (`null` nor `undefined`), using loose inequality (`!= null`).
|
|
4
|
+
* Narrows the type to {@link NonNullable}.
|
|
5
|
+
*
|
|
6
|
+
* @category Guard
|
|
7
|
+
* @param value - The value to check.
|
|
8
|
+
* @returns `true` if `value` is neither `null` nor `undefined`; otherwise `false`.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* isNotNil(0); // true
|
|
13
|
+
* isNotNil(null); // false
|
|
14
|
+
* isNotNil(undefined); // false
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare function isNotNil<T>(value: T): value is NonNullable<T>;
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region src/guard/isNull.d.ts
|
|
20
|
+
/**
|
|
21
|
+
* Check whether a value is strictly `null`.
|
|
22
|
+
*
|
|
23
|
+
* @category Guard
|
|
24
|
+
* @param value - The value to check.
|
|
25
|
+
* @returns `true` if `value` is `null`; otherwise `false`.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* isNull(null); // true
|
|
30
|
+
* isNull(undefined); // false
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
declare function isNull<T>(value: T): value is T & null;
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/guard/isUndefined.d.ts
|
|
36
|
+
/**
|
|
37
|
+
* Check whether a value is strictly `undefined`.
|
|
38
|
+
*
|
|
39
|
+
* @category Guard
|
|
40
|
+
* @param value - The value to check.
|
|
41
|
+
* @returns `true` if `value` is `undefined`; otherwise `false`.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* isUndefined(undefined); // true
|
|
46
|
+
* isUndefined(null); // false
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
declare function isUndefined<T>(value: T): value is T & undefined;
|
|
50
|
+
//#endregion
|
|
51
|
+
export { isNotNil, isNull, isUndefined };
|
|
52
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/guard/isNotNil.ts","../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"mappings":";;AAeA;;;;;;;;;;;;;;iBAAgB,QAAA,IAAY,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,WAAA,CAAY,CAAA;;;;AAA5D;;;;;;;;;;;;iBCFgB,MAAA,IAAU,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC;;;;ADE/C;;;;;;;;;;;;iBEFgB,WAAA,IAAe,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC"}
|