fp-pack 0.1.0 → 0.2.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/README.md +27 -7
- package/dist/fp-pack.umd.js +1 -1
- package/dist/fp-pack.umd.js.map +1 -1
- package/dist/implement/async/index.d.ts +1 -0
- package/dist/implement/async/index.d.ts.map +1 -1
- package/dist/implement/async/pipeAsyncSideEffectStrict.d.ts +57 -0
- package/dist/implement/async/pipeAsyncSideEffectStrict.d.ts.map +1 -0
- package/dist/implement/async/pipeAsyncSideEffectStrict.mjs +16 -0
- package/dist/implement/async/pipeAsyncSideEffectStrict.mjs.map +1 -0
- package/dist/implement/composition/from.d.ts +6 -0
- package/dist/implement/composition/from.d.ts.map +1 -0
- package/dist/implement/composition/from.mjs +7 -0
- package/dist/implement/composition/from.mjs.map +1 -0
- package/dist/implement/composition/index.d.ts +2 -0
- package/dist/implement/composition/index.d.ts.map +1 -1
- package/dist/implement/composition/pipe.d.ts +6 -0
- package/dist/implement/composition/pipe.d.ts.map +1 -1
- package/dist/implement/composition/pipe.mjs.map +1 -1
- package/dist/implement/composition/pipe.type-test.d.ts +29 -0
- package/dist/implement/composition/pipe.type-test.d.ts.map +1 -1
- package/dist/implement/composition/pipeSideEffect.d.ts +6 -0
- package/dist/implement/composition/pipeSideEffect.d.ts.map +1 -1
- package/dist/implement/composition/pipeSideEffect.mjs.map +1 -1
- package/dist/implement/composition/pipeSideEffectStrict.d.ts +53 -0
- package/dist/implement/composition/pipeSideEffectStrict.d.ts.map +1 -0
- package/dist/implement/composition/pipeSideEffectStrict.mjs +16 -0
- package/dist/implement/composition/pipeSideEffectStrict.mjs.map +1 -0
- package/dist/implement/control/ifElse.d.ts +4 -3
- package/dist/implement/control/ifElse.d.ts.map +1 -1
- package/dist/implement/control/ifElse.mjs.map +1 -1
- package/dist/implement/control/unless.d.ts +14 -2
- package/dist/implement/control/unless.d.ts.map +1 -1
- package/dist/implement/control/unless.mjs.map +1 -1
- package/dist/implement/control/when.d.ts +14 -2
- package/dist/implement/control/when.d.ts.map +1 -1
- package/dist/implement/control/when.mjs.map +1 -1
- package/dist/implement/object/index.d.ts +1 -0
- package/dist/implement/object/index.d.ts.map +1 -1
- package/dist/implement/object/propStrict.d.ts +7 -0
- package/dist/implement/object/propStrict.d.ts.map +1 -0
- package/dist/implement/object/propStrict.mjs +12 -0
- package/dist/implement/object/propStrict.mjs.map +1 -0
- package/dist/index.mjs +248 -240
- package/dist/index.mjs.map +1 -1
- package/dist/skills/fp-pack/SKILL.md +1699 -0
- package/dist/skills/fp-pack.md +56 -8
- package/package.json +1 -1
- package/src/implement/async/index.ts +1 -0
- package/src/implement/async/pipeAsyncSideEffectStrict.test.ts +23 -0
- package/src/implement/async/pipeAsyncSideEffectStrict.ts +140 -0
- package/src/implement/composition/from.test.ts +16 -0
- package/src/implement/composition/from.ts +8 -0
- package/src/implement/composition/index.ts +2 -0
- package/src/implement/composition/pipe.test.ts +8 -0
- package/src/implement/composition/pipe.ts +12 -0
- package/src/implement/composition/pipe.type-test.ts +49 -0
- package/src/implement/composition/pipeSideEffect.test.ts +8 -0
- package/src/implement/composition/pipeSideEffect.ts +17 -0
- package/src/implement/composition/pipeSideEffectStrict.test.ts +23 -0
- package/src/implement/composition/pipeSideEffectStrict.ts +134 -0
- package/src/implement/control/curried.test.ts +18 -0
- package/src/implement/control/ifElse.ts +5 -3
- package/src/implement/control/unless.ts +20 -2
- package/src/implement/control/when.ts +20 -2
- package/src/implement/object/index.ts +1 -0
- package/src/implement/object/propStrict.test.ts +29 -0
- package/src/implement/object/propStrict.ts +20 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { default as SideEffect } from '../composition/sideEffect';
|
|
2
|
+
type AnyFn = (...args: any[]) => any;
|
|
3
|
+
type MaybeSideEffect<T, E> = T | SideEffect<E>;
|
|
4
|
+
type NonSideEffect<T> = Exclude<T, SideEffect<any>>;
|
|
5
|
+
type AsyncOrSync<A, R> = (a: A) => R | Promise<R>;
|
|
6
|
+
type ZeroFn<R> = () => R | Promise<R>;
|
|
7
|
+
type EffectOfReturn<R> = R extends SideEffect<infer E> ? E : never;
|
|
8
|
+
type EffectOfFn<F> = F extends (...args: any[]) => infer R ? EffectOfReturn<Awaited<R>> : never;
|
|
9
|
+
type EffectsOf<Fns extends AnyFn[]> = EffectOfFn<Fns[number]>;
|
|
10
|
+
type PipeValueOutputUnary<Fns extends AsyncOrSync<any, any>[]> = Fns extends [AsyncOrSync<any, infer R>] ? NonSideEffect<Awaited<R>> : Fns extends [AsyncOrSync<any, infer R>, ...infer Rest] ? Rest extends [AsyncOrSync<NonSideEffect<Awaited<R>>, any>, ...AsyncOrSync<any, any>[]] ? PipeValueOutputUnary<Rest> : never : never;
|
|
11
|
+
type PipeValueOutputStrict<Fns extends [AnyFn, ...AnyFn[]]> = Fns extends [ZeroFn<infer R>] ? NonSideEffect<Awaited<R>> : Fns extends [ZeroFn<infer R>, ...infer Rest] ? Rest extends [AsyncOrSync<NonSideEffect<Awaited<R>>, any>, ...AsyncOrSync<any, any>[]] ? PipeValueOutputUnary<Rest> : never : Fns extends [AsyncOrSync<any, any>, ...AsyncOrSync<any, any>[]] ? PipeValueOutputUnary<Fns> : never;
|
|
12
|
+
type PipeInputStrict<Fns extends [AnyFn, ...AnyFn[]]> = Fns extends [ZeroFn<any>, ...AnyFn[]] ? never : Fns extends [AsyncOrSync<infer A, any>, ...AnyFn[]] ? A : never;
|
|
13
|
+
type Resolve<T> = T extends infer R ? R : never;
|
|
14
|
+
type PipeAsyncSideEffectStrictUnary<Fns extends [AnyFn, ...AnyFn[]]> = {
|
|
15
|
+
(input: PipeInputStrict<Fns>): Promise<Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns>>>>;
|
|
16
|
+
<EIn>(input: PipeInputStrict<Fns> | SideEffect<EIn>): Promise<Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns> | EIn>>>;
|
|
17
|
+
};
|
|
18
|
+
type PipeAsyncSideEffectStrict<Fns extends [AnyFn, ...AnyFn[]]> = Fns extends [ZeroFn<any>, ...AnyFn[]] ? () => Promise<Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns>>>> : PipeAsyncSideEffectStrictUnary<Fns>;
|
|
19
|
+
declare function pipeAsyncSideEffectStrict<R>(ab: ZeroFn<R>): PipeAsyncSideEffectStrict<[ZeroFn<R>]>;
|
|
20
|
+
declare function pipeAsyncSideEffectStrict<B, R>(ab: ZeroFn<B>, bc: AsyncOrSync<NonSideEffect<Awaited<B>>, R>): PipeAsyncSideEffectStrict<[ZeroFn<B>, AsyncOrSync<NonSideEffect<Awaited<B>>, R>]>;
|
|
21
|
+
declare function pipeAsyncSideEffectStrict<B, C, R>(ab: ZeroFn<B>, bc: AsyncOrSync<NonSideEffect<Awaited<B>>, C>, cd: AsyncOrSync<NonSideEffect<Awaited<C>>, R>): PipeAsyncSideEffectStrict<[ZeroFn<B>, AsyncOrSync<NonSideEffect<Awaited<B>>, C>, AsyncOrSync<NonSideEffect<Awaited<C>>, R>]>;
|
|
22
|
+
declare function pipeAsyncSideEffectStrict<B, C, D, R>(ab: ZeroFn<B>, bc: AsyncOrSync<NonSideEffect<Awaited<B>>, C>, cd: AsyncOrSync<NonSideEffect<Awaited<C>>, D>, de: AsyncOrSync<NonSideEffect<Awaited<D>>, R>): PipeAsyncSideEffectStrict<[
|
|
23
|
+
ZeroFn<B>,
|
|
24
|
+
AsyncOrSync<NonSideEffect<Awaited<B>>, C>,
|
|
25
|
+
AsyncOrSync<NonSideEffect<Awaited<C>>, D>,
|
|
26
|
+
AsyncOrSync<NonSideEffect<Awaited<D>>, R>
|
|
27
|
+
]>;
|
|
28
|
+
declare function pipeAsyncSideEffectStrict<B, C, D, E, R>(ab: ZeroFn<B>, bc: AsyncOrSync<NonSideEffect<Awaited<B>>, C>, cd: AsyncOrSync<NonSideEffect<Awaited<C>>, D>, de: AsyncOrSync<NonSideEffect<Awaited<D>>, E>, ef: AsyncOrSync<NonSideEffect<Awaited<E>>, R>): PipeAsyncSideEffectStrict<[
|
|
29
|
+
ZeroFn<B>,
|
|
30
|
+
AsyncOrSync<NonSideEffect<Awaited<B>>, C>,
|
|
31
|
+
AsyncOrSync<NonSideEffect<Awaited<C>>, D>,
|
|
32
|
+
AsyncOrSync<NonSideEffect<Awaited<D>>, E>,
|
|
33
|
+
AsyncOrSync<NonSideEffect<Awaited<E>>, R>
|
|
34
|
+
]>;
|
|
35
|
+
declare function pipeAsyncSideEffectStrict<A, R>(ab: AsyncOrSync<A, R>): PipeAsyncSideEffectStrict<[AsyncOrSync<A, R>]>;
|
|
36
|
+
declare function pipeAsyncSideEffectStrict<A, B, R>(ab: AsyncOrSync<A, B>, bc: AsyncOrSync<NonSideEffect<Awaited<B>>, R>): PipeAsyncSideEffectStrict<[AsyncOrSync<A, B>, AsyncOrSync<NonSideEffect<Awaited<B>>, R>]>;
|
|
37
|
+
declare function pipeAsyncSideEffectStrict<A, B, C, R>(ab: AsyncOrSync<A, B>, bc: AsyncOrSync<NonSideEffect<Awaited<B>>, C>, cd: AsyncOrSync<NonSideEffect<Awaited<C>>, R>): PipeAsyncSideEffectStrict<[
|
|
38
|
+
AsyncOrSync<A, B>,
|
|
39
|
+
AsyncOrSync<NonSideEffect<Awaited<B>>, C>,
|
|
40
|
+
AsyncOrSync<NonSideEffect<Awaited<C>>, R>
|
|
41
|
+
]>;
|
|
42
|
+
declare function pipeAsyncSideEffectStrict<A, B, C, D, R>(ab: AsyncOrSync<A, B>, bc: AsyncOrSync<NonSideEffect<Awaited<B>>, C>, cd: AsyncOrSync<NonSideEffect<Awaited<C>>, D>, de: AsyncOrSync<NonSideEffect<Awaited<D>>, R>): PipeAsyncSideEffectStrict<[
|
|
43
|
+
AsyncOrSync<A, B>,
|
|
44
|
+
AsyncOrSync<NonSideEffect<Awaited<B>>, C>,
|
|
45
|
+
AsyncOrSync<NonSideEffect<Awaited<C>>, D>,
|
|
46
|
+
AsyncOrSync<NonSideEffect<Awaited<D>>, R>
|
|
47
|
+
]>;
|
|
48
|
+
declare function pipeAsyncSideEffectStrict<A, B, C, D, E, R>(ab: AsyncOrSync<A, B>, bc: AsyncOrSync<NonSideEffect<Awaited<B>>, C>, cd: AsyncOrSync<NonSideEffect<Awaited<C>>, D>, de: AsyncOrSync<NonSideEffect<Awaited<D>>, E>, ef: AsyncOrSync<NonSideEffect<Awaited<E>>, R>): PipeAsyncSideEffectStrict<[
|
|
49
|
+
AsyncOrSync<A, B>,
|
|
50
|
+
AsyncOrSync<NonSideEffect<Awaited<B>>, C>,
|
|
51
|
+
AsyncOrSync<NonSideEffect<Awaited<C>>, D>,
|
|
52
|
+
AsyncOrSync<NonSideEffect<Awaited<D>>, E>,
|
|
53
|
+
AsyncOrSync<NonSideEffect<Awaited<E>>, R>
|
|
54
|
+
]>;
|
|
55
|
+
declare function pipeAsyncSideEffectStrict<Fns extends [AnyFn, ...AnyFn[]]>(...funcs: Fns): PipeAsyncSideEffectStrict<Fns>;
|
|
56
|
+
export default pipeAsyncSideEffectStrict;
|
|
57
|
+
//# sourceMappingURL=pipeAsyncSideEffectStrict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeAsyncSideEffectStrict.d.ts","sourceRoot":"","sources":["../../../src/implement/async/pipeAsyncSideEffectStrict.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { isSideEffect as c } from "../composition/sideEffect.mjs";
|
|
2
|
+
function n(...e) {
|
|
3
|
+
return async (f) => {
|
|
4
|
+
let t = f;
|
|
5
|
+
for (const r of e) {
|
|
6
|
+
if (c(t))
|
|
7
|
+
return t;
|
|
8
|
+
t = await r(t);
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
n as default
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=pipeAsyncSideEffectStrict.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeAsyncSideEffectStrict.mjs","sources":["../../../src/implement/async/pipeAsyncSideEffectStrict.ts"],"sourcesContent":["import SideEffect, { isSideEffect } from '../composition/sideEffect';\n\ntype AnyFn = (...args: any[]) => any;\ntype MaybeSideEffect<T, E> = T | SideEffect<E>;\ntype NonSideEffect<T> = Exclude<T, SideEffect<any>>;\ntype AsyncOrSync<A, R> = (a: A) => R | Promise<R>;\ntype ZeroFn<R> = () => R | Promise<R>;\n\ntype EffectOfReturn<R> = R extends SideEffect<infer E> ? E : never;\ntype EffectOfFn<F> = F extends (...args: any[]) => infer R ? EffectOfReturn<Awaited<R>> : never;\ntype EffectsOf<Fns extends AnyFn[]> = EffectOfFn<Fns[number]>;\n\ntype PipeValueOutputUnary<Fns extends AsyncOrSync<any, any>[]> = Fns extends [AsyncOrSync<any, infer R>]\n ? NonSideEffect<Awaited<R>>\n : Fns extends [AsyncOrSync<any, infer R>, ...infer Rest]\n ? Rest extends [AsyncOrSync<NonSideEffect<Awaited<R>>, any>, ...AsyncOrSync<any, any>[]]\n ? PipeValueOutputUnary<Rest>\n : never\n : never;\n\ntype PipeValueOutputStrict<Fns extends [AnyFn, ...AnyFn[]]> =\n Fns extends [ZeroFn<infer R>]\n ? NonSideEffect<Awaited<R>>\n : Fns extends [ZeroFn<infer R>, ...infer Rest]\n ? Rest extends [AsyncOrSync<NonSideEffect<Awaited<R>>, any>, ...AsyncOrSync<any, any>[]]\n ? PipeValueOutputUnary<Rest>\n : never\n : Fns extends [AsyncOrSync<any, any>, ...AsyncOrSync<any, any>[]]\n ? PipeValueOutputUnary<Fns>\n : never;\n\ntype PipeInputStrict<Fns extends [AnyFn, ...AnyFn[]]> = Fns extends [ZeroFn<any>, ...AnyFn[]]\n ? never\n : Fns extends [AsyncOrSync<infer A, any>, ...AnyFn[]]\n ? A\n : never;\n\ntype Resolve<T> = T extends infer R ? R : never;\n\ntype PipeAsyncSideEffectStrictUnary<Fns extends [AnyFn, ...AnyFn[]]> = {\n (input: PipeInputStrict<Fns>): Promise<Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns>>>>;\n <EIn>(\n input: PipeInputStrict<Fns> | SideEffect<EIn>\n ): Promise<Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns> | EIn>>>;\n};\n\ntype PipeAsyncSideEffectStrict<Fns extends [AnyFn, ...AnyFn[]]> = Fns extends [ZeroFn<any>, ...AnyFn[]]\n ? () => Promise<Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns>>>>\n : PipeAsyncSideEffectStrictUnary<Fns>;\n\nfunction pipeAsyncSideEffectStrict<R>(ab: ZeroFn<R>): PipeAsyncSideEffectStrict<[ZeroFn<R>]>;\nfunction pipeAsyncSideEffectStrict<B, R>(\n ab: ZeroFn<B>,\n bc: AsyncOrSync<NonSideEffect<Awaited<B>>, R>\n): PipeAsyncSideEffectStrict<[ZeroFn<B>, AsyncOrSync<NonSideEffect<Awaited<B>>, R>]>;\nfunction pipeAsyncSideEffectStrict<B, C, R>(\n ab: ZeroFn<B>,\n bc: AsyncOrSync<NonSideEffect<Awaited<B>>, C>,\n cd: AsyncOrSync<NonSideEffect<Awaited<C>>, R>\n): PipeAsyncSideEffectStrict<[ZeroFn<B>, AsyncOrSync<NonSideEffect<Awaited<B>>, C>, AsyncOrSync<NonSideEffect<Awaited<C>>, R>]>;\nfunction pipeAsyncSideEffectStrict<B, C, D, R>(\n ab: ZeroFn<B>,\n bc: AsyncOrSync<NonSideEffect<Awaited<B>>, C>,\n cd: AsyncOrSync<NonSideEffect<Awaited<C>>, D>,\n de: AsyncOrSync<NonSideEffect<Awaited<D>>, R>\n): PipeAsyncSideEffectStrict<[\n ZeroFn<B>,\n AsyncOrSync<NonSideEffect<Awaited<B>>, C>,\n AsyncOrSync<NonSideEffect<Awaited<C>>, D>,\n AsyncOrSync<NonSideEffect<Awaited<D>>, R>\n]>;\nfunction pipeAsyncSideEffectStrict<B, C, D, E, R>(\n ab: ZeroFn<B>,\n bc: AsyncOrSync<NonSideEffect<Awaited<B>>, C>,\n cd: AsyncOrSync<NonSideEffect<Awaited<C>>, D>,\n de: AsyncOrSync<NonSideEffect<Awaited<D>>, E>,\n ef: AsyncOrSync<NonSideEffect<Awaited<E>>, R>\n): PipeAsyncSideEffectStrict<[\n ZeroFn<B>,\n AsyncOrSync<NonSideEffect<Awaited<B>>, C>,\n AsyncOrSync<NonSideEffect<Awaited<C>>, D>,\n AsyncOrSync<NonSideEffect<Awaited<D>>, E>,\n AsyncOrSync<NonSideEffect<Awaited<E>>, R>\n]>;\nfunction pipeAsyncSideEffectStrict<A, R>(\n ab: AsyncOrSync<A, R>\n): PipeAsyncSideEffectStrict<[AsyncOrSync<A, R>]>;\nfunction pipeAsyncSideEffectStrict<A, B, R>(\n ab: AsyncOrSync<A, B>,\n bc: AsyncOrSync<NonSideEffect<Awaited<B>>, R>\n): PipeAsyncSideEffectStrict<[AsyncOrSync<A, B>, AsyncOrSync<NonSideEffect<Awaited<B>>, R>]>;\nfunction pipeAsyncSideEffectStrict<A, B, C, R>(\n ab: AsyncOrSync<A, B>,\n bc: AsyncOrSync<NonSideEffect<Awaited<B>>, C>,\n cd: AsyncOrSync<NonSideEffect<Awaited<C>>, R>\n): PipeAsyncSideEffectStrict<[\n AsyncOrSync<A, B>,\n AsyncOrSync<NonSideEffect<Awaited<B>>, C>,\n AsyncOrSync<NonSideEffect<Awaited<C>>, R>\n]>;\nfunction pipeAsyncSideEffectStrict<A, B, C, D, R>(\n ab: AsyncOrSync<A, B>,\n bc: AsyncOrSync<NonSideEffect<Awaited<B>>, C>,\n cd: AsyncOrSync<NonSideEffect<Awaited<C>>, D>,\n de: AsyncOrSync<NonSideEffect<Awaited<D>>, R>\n): PipeAsyncSideEffectStrict<[\n AsyncOrSync<A, B>,\n AsyncOrSync<NonSideEffect<Awaited<B>>, C>,\n AsyncOrSync<NonSideEffect<Awaited<C>>, D>,\n AsyncOrSync<NonSideEffect<Awaited<D>>, R>\n]>;\nfunction pipeAsyncSideEffectStrict<A, B, C, D, E, R>(\n ab: AsyncOrSync<A, B>,\n bc: AsyncOrSync<NonSideEffect<Awaited<B>>, C>,\n cd: AsyncOrSync<NonSideEffect<Awaited<C>>, D>,\n de: AsyncOrSync<NonSideEffect<Awaited<D>>, E>,\n ef: AsyncOrSync<NonSideEffect<Awaited<E>>, R>\n): PipeAsyncSideEffectStrict<[\n AsyncOrSync<A, B>,\n AsyncOrSync<NonSideEffect<Awaited<B>>, C>,\n AsyncOrSync<NonSideEffect<Awaited<C>>, D>,\n AsyncOrSync<NonSideEffect<Awaited<D>>, E>,\n AsyncOrSync<NonSideEffect<Awaited<E>>, R>\n]>;\n\nfunction pipeAsyncSideEffectStrict<Fns extends [AnyFn, ...AnyFn[]]>(...funcs: Fns): PipeAsyncSideEffectStrict<Fns>;\nfunction pipeAsyncSideEffectStrict(...funcs: Array<AsyncOrSync<any, any>>) {\n return async (value?: any) => {\n let acc = value;\n for (const fn of funcs) {\n if (isSideEffect(acc)) {\n return acc;\n }\n acc = await fn(acc);\n }\n return acc;\n };\n}\n\nexport default pipeAsyncSideEffectStrict;\n"],"names":["pipeAsyncSideEffectStrict","funcs","value","acc","fn","isSideEffect"],"mappings":";AA8HA,SAASA,KAA6BC,GAAqC;AACzE,SAAO,OAAOC,MAAgB;AAC5B,QAAIC,IAAMD;AACV,eAAWE,KAAMH,GAAO;AACtB,UAAII,EAAaF,CAAG;AAClB,eAAOA;AAET,MAAAA,IAAM,MAAMC,EAAGD,CAAG;AAAA,IACpB;AACA,WAAOA;AAAA,EACT;AACF;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from.d.ts","sourceRoot":"","sources":["../../../src/implement/composition/from.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,iBAAS,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IACf,CAAC,EAAE,QAAQ,CAAC,OACrB;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from.mjs","sources":["../../../src/implement/composition/from.ts"],"sourcesContent":["/**\n * from - 입력을 무시하고 고정 값을 반환\n */\nfunction from<T>(value: T) {\n return <I>(_input: I) => value;\n}\n\nexport default from;\n"],"names":["from","value","_input"],"mappings":"AAGA,SAASA,EAAQC,GAAU;AACzB,SAAO,CAAIC,MAAcD;AAC3B;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as pipe } from './pipe';
|
|
2
2
|
export { default as pipeSideEffect } from './pipeSideEffect';
|
|
3
|
+
export { default as pipeSideEffectStrict } from './pipeSideEffectStrict';
|
|
3
4
|
export { default as compose } from './compose';
|
|
4
5
|
export { default as curry } from './curry';
|
|
5
6
|
export { default as partial } from './partial';
|
|
@@ -7,6 +8,7 @@ export { default as flip } from './flip';
|
|
|
7
8
|
export { default as complement } from './complement';
|
|
8
9
|
export { default as identity } from './identity';
|
|
9
10
|
export { default as constant } from './constant';
|
|
11
|
+
export { default as from } from './from';
|
|
10
12
|
export { default as tap } from './tap';
|
|
11
13
|
export { default as once } from './once';
|
|
12
14
|
export { default as memoize } from './memoize';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/implement/composition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/implement/composition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
type UnaryFn<A, R> = (a: A) => R;
|
|
2
|
+
type ZeroFn<R> = () => R;
|
|
2
3
|
type PipeInput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<infer A, any>, ...UnaryFn<any, any>[]] ? A : never;
|
|
3
4
|
type PipeOutput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<any, infer R>] ? R : Fns extends [UnaryFn<any, infer R>, ...infer Rest] ? Rest extends [UnaryFn<R, any>, ...UnaryFn<any, any>[]] ? PipeOutput<Rest> : never : never;
|
|
4
5
|
type Pipe<Fns extends UnaryFn<any, any>[]> = (input: PipeInput<Fns>) => PipeOutput<Fns>;
|
|
6
|
+
declare function pipe<R>(ab: ZeroFn<R>): () => R;
|
|
7
|
+
declare function pipe<B, R>(ab: ZeroFn<B>, bc: UnaryFn<B, R>): () => R;
|
|
8
|
+
declare function pipe<B, C, R>(ab: ZeroFn<B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, R>): () => R;
|
|
9
|
+
declare function pipe<B, C, D, R>(ab: ZeroFn<B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, R>): () => R;
|
|
10
|
+
declare function pipe<B, C, D, E, R>(ab: ZeroFn<B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, R>): () => R;
|
|
5
11
|
declare function pipe<A, R>(ab: UnaryFn<A, R>): (a: A) => R;
|
|
6
12
|
declare function pipe<A, B, R>(ab: UnaryFn<A, B>, bc: UnaryFn<B, R>): (a: A) => R;
|
|
7
13
|
declare function pipe<A, B, C, R>(ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, R>): (a: A) => R;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../../../src/implement/composition/pipe.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../../../src/implement/composition/pipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipe.mjs","sources":["../../../src/implement/composition/pipe.ts"],"sourcesContent":["type UnaryFn<A, R> = (a: A) => R;\ntype PipeInput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<infer A, any>, ...UnaryFn<any, any>[]]\n ? A\n : never;\ntype PipeOutput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<any, infer R>]\n ? R\n : Fns extends [UnaryFn<any, infer R>, ...infer Rest]\n ? Rest extends [UnaryFn<R, any>, ...UnaryFn<any, any>[]]\n ? PipeOutput<Rest>\n : never\n : never;\ntype Pipe<Fns extends UnaryFn<any, any>[]> = (input: PipeInput<Fns>) => PipeOutput<Fns>;\n\nfunction pipe<A, R>(ab: UnaryFn<A, R>): (a: A) => R;\nfunction pipe<A, B, R>(ab: UnaryFn<A, B>, bc: UnaryFn<B, R>): (a: A) => R;\nfunction pipe<A, B, C, R>(ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, R>): (a: A) => R;\nfunction pipe<A, B, C, D, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, R>\n): (a: A) => R;\nfunction pipe<A, B, C, D, E, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, E>,\n ef: UnaryFn<E, R>\n): (a: A) => R;\n\nfunction pipe<Fns extends [UnaryFn<any, any>, ...UnaryFn<any, any>[]]>(...funcs: Fns): Pipe<Fns>;\nfunction pipe(...funcs: Array<UnaryFn<any, any>>): (input: any) => any;\nfunction pipe(...funcs: Array<(input: any) => any>) {\n return (init: any) => {\n return funcs.reduce((acc, fn) => fn(acc), init);\n };\n}\n\nexport default pipe;\n"],"names":["pipe","funcs","init","acc","fn"],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipe.mjs","sources":["../../../src/implement/composition/pipe.ts"],"sourcesContent":["type UnaryFn<A, R> = (a: A) => R;\ntype ZeroFn<R> = () => R;\ntype PipeInput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<infer A, any>, ...UnaryFn<any, any>[]]\n ? A\n : never;\ntype PipeOutput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<any, infer R>]\n ? R\n : Fns extends [UnaryFn<any, infer R>, ...infer Rest]\n ? Rest extends [UnaryFn<R, any>, ...UnaryFn<any, any>[]]\n ? PipeOutput<Rest>\n : never\n : never;\ntype Pipe<Fns extends UnaryFn<any, any>[]> = (input: PipeInput<Fns>) => PipeOutput<Fns>;\n\nfunction pipe<R>(ab: ZeroFn<R>): () => R;\nfunction pipe<B, R>(ab: ZeroFn<B>, bc: UnaryFn<B, R>): () => R;\nfunction pipe<B, C, R>(ab: ZeroFn<B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, R>): () => R;\nfunction pipe<B, C, D, R>(ab: ZeroFn<B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, R>): () => R;\nfunction pipe<B, C, D, E, R>(\n ab: ZeroFn<B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, E>,\n ef: UnaryFn<E, R>\n): () => R;\nfunction pipe<A, R>(ab: UnaryFn<A, R>): (a: A) => R;\nfunction pipe<A, B, R>(ab: UnaryFn<A, B>, bc: UnaryFn<B, R>): (a: A) => R;\nfunction pipe<A, B, C, R>(ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, R>): (a: A) => R;\nfunction pipe<A, B, C, D, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, R>\n): (a: A) => R;\nfunction pipe<A, B, C, D, E, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, E>,\n ef: UnaryFn<E, R>\n): (a: A) => R;\n\nfunction pipe<Fns extends [UnaryFn<any, any>, ...UnaryFn<any, any>[]]>(...funcs: Fns): Pipe<Fns>;\nfunction pipe(...funcs: Array<UnaryFn<any, any>>): (input: any) => any;\nfunction pipe(...funcs: Array<(input: any) => any>) {\n return (init: any) => {\n return funcs.reduce((acc, fn) => fn(acc), init);\n };\n}\n\nexport default pipe;\n"],"names":["pipe","funcs","init","acc","fn"],"mappings":"AA4CA,SAASA,KAAQC,GAAmC;AAClD,SAAO,CAACC,MACCD,EAAM,OAAO,CAACE,GAAKC,MAAOA,EAAGD,CAAG,GAAGD,CAAI;AAElD;"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { default as SideEffect } from './sideEffect';
|
|
2
2
|
type Equal<A, B> = (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? true : false;
|
|
3
3
|
type Expect<T extends true> = T;
|
|
4
|
+
type EffectUnion<T> = Extract<T, SideEffect<any>> extends SideEffect<infer E> ? E : never;
|
|
5
|
+
type ValueUnion<T> = Exclude<T, SideEffect<any>>;
|
|
4
6
|
export declare const sideEffectInput: SideEffect<number>;
|
|
5
7
|
export declare const purePipe: (a: number) => string;
|
|
6
8
|
type PurePipeExpected = (input: number) => string;
|
|
@@ -16,5 +18,32 @@ export declare const pipeAsyncWithSideEffectInput: (a: number | SideEffect<any>)
|
|
|
16
18
|
export declare const pipeAsyncWithSideEffectValue: Promise<string | SideEffect<any>>;
|
|
17
19
|
type PipeAsyncExpected = (input: number | SideEffect<any>) => Promise<string | SideEffect<any>>;
|
|
18
20
|
export type PipeAsyncAcceptsSideEffectInput = Expect<Equal<typeof pipeAsyncWithSideEffectInput, PipeAsyncExpected>>;
|
|
21
|
+
export declare const strictPipeSideEffect: {
|
|
22
|
+
(input: number): number | SideEffect<0 | "LOW">;
|
|
23
|
+
<EIn>(input: number | SideEffect<EIn>): number | SideEffect<0 | "LOW" | EIn>;
|
|
24
|
+
};
|
|
25
|
+
export declare const strictPipeSideEffectResult: number | SideEffect<0 | "LOW">;
|
|
26
|
+
type StrictSideEffectEffects = EffectUnion<typeof strictPipeSideEffectResult>;
|
|
27
|
+
type StrictSideEffectEffectsExpected = 'LOW' | 0;
|
|
28
|
+
export type PipeSideEffectStrictEffects = Expect<Equal<StrictSideEffectEffects, StrictSideEffectEffectsExpected>>;
|
|
29
|
+
type StrictSideEffectValue = ValueUnion<typeof strictPipeSideEffectResult>;
|
|
30
|
+
type StrictSideEffectValueExpected = number;
|
|
31
|
+
export type PipeSideEffectStrictValue = Expect<Equal<StrictSideEffectValue, StrictSideEffectValueExpected>>;
|
|
32
|
+
export declare const strictPipeSideEffectInput: number | SideEffect<0 | "LOW" | "INPUT">;
|
|
33
|
+
type StrictSideEffectInputEffects = EffectUnion<typeof strictPipeSideEffectInput>;
|
|
34
|
+
type StrictSideEffectInputEffectsExpected = 'LOW' | 0 | 'INPUT';
|
|
35
|
+
export type PipeSideEffectStrictInputEffects = Expect<Equal<StrictSideEffectInputEffects, StrictSideEffectInputEffectsExpected>>;
|
|
36
|
+
export declare const strictPipeAsyncSideEffect: {
|
|
37
|
+
(input: number): Promise<number | SideEffect<0 | "LOW">>;
|
|
38
|
+
<EIn>(input: number | SideEffect<EIn>): Promise<number | SideEffect<0 | "LOW" | EIn>>;
|
|
39
|
+
};
|
|
40
|
+
export declare const strictPipeAsyncSideEffectResult: Promise<number | SideEffect<0 | "LOW">>;
|
|
41
|
+
type StrictPipeAsyncResolved = Awaited<typeof strictPipeAsyncSideEffectResult>;
|
|
42
|
+
type StrictPipeAsyncEffects = EffectUnion<StrictPipeAsyncResolved>;
|
|
43
|
+
type StrictPipeAsyncEffectsExpected = 'LOW' | 0;
|
|
44
|
+
export type PipeAsyncSideEffectStrictEffects = Expect<Equal<StrictPipeAsyncEffects, StrictPipeAsyncEffectsExpected>>;
|
|
45
|
+
type StrictPipeAsyncValue = ValueUnion<StrictPipeAsyncResolved>;
|
|
46
|
+
type StrictPipeAsyncValueExpected = number;
|
|
47
|
+
export type PipeAsyncSideEffectStrictValue = Expect<Equal<StrictPipeAsyncValue, StrictPipeAsyncValueExpected>>;
|
|
19
48
|
export {};
|
|
20
49
|
//# sourceMappingURL=pipe.type-test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipe.type-test.d.ts","sourceRoot":"","sources":["../../../src/implement/composition/pipe.type-test.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"pipe.type-test.d.ts","sourceRoot":"","sources":["../../../src/implement/composition/pipe.type-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,16 @@ import { default as SideEffect } from './sideEffect';
|
|
|
2
2
|
type MaybeSideEffect<T> = T | SideEffect<any>;
|
|
3
3
|
type NonSideEffect<T> = Exclude<T, SideEffect<any>>;
|
|
4
4
|
type UnaryFn<A, R> = (a: A) => MaybeSideEffect<R>;
|
|
5
|
+
type ZeroFn<R> = () => MaybeSideEffect<R>;
|
|
5
6
|
type PipeInput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<infer A, any>, ...UnaryFn<any, any>[]] ? A : never;
|
|
6
7
|
type PipeOutput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<any, infer R>] ? MaybeSideEffect<R> : Fns extends [UnaryFn<any, infer R>, ...infer Rest] ? Rest extends [UnaryFn<NonSideEffect<R>, any>, ...UnaryFn<any, any>[]] ? PipeOutput<Rest> : never : never;
|
|
7
8
|
type Resolve<T> = T extends infer R ? R : never;
|
|
8
9
|
type PipeSideEffect<Fns extends UnaryFn<any, any>[]> = (input: PipeInput<Fns> | SideEffect<any>) => Resolve<PipeOutput<Fns>>;
|
|
10
|
+
declare function pipeSideEffect<R>(ab: ZeroFn<R>): () => MaybeSideEffect<R>;
|
|
11
|
+
declare function pipeSideEffect<B, R>(ab: ZeroFn<B>, bc: UnaryFn<B, R>): () => MaybeSideEffect<R>;
|
|
12
|
+
declare function pipeSideEffect<B, C, R>(ab: ZeroFn<B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, R>): () => MaybeSideEffect<R>;
|
|
13
|
+
declare function pipeSideEffect<B, C, D, R>(ab: ZeroFn<B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, R>): () => MaybeSideEffect<R>;
|
|
14
|
+
declare function pipeSideEffect<B, C, D, E, R>(ab: ZeroFn<B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, R>): () => MaybeSideEffect<R>;
|
|
9
15
|
declare function pipeSideEffect<A, R>(ab: UnaryFn<A, R>): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
10
16
|
declare function pipeSideEffect<A, B, R>(ab: UnaryFn<A, B>, bc: UnaryFn<B, R>): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
11
17
|
declare function pipeSideEffect<A, B, C, R>(ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, R>): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeSideEffect.d.ts","sourceRoot":"","sources":["../../../src/implement/composition/pipeSideEffect.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeSideEffect.d.ts","sourceRoot":"","sources":["../../../src/implement/composition/pipeSideEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeSideEffect.mjs","sources":["../../../src/implement/composition/pipeSideEffect.ts"],"sourcesContent":["import SideEffect, { isSideEffect } from './sideEffect';\n\ntype MaybeSideEffect<T> = T | SideEffect<any>;\ntype NonSideEffect<T> = Exclude<T, SideEffect<any>>;\ntype UnaryFn<A, R> = (a: A) => MaybeSideEffect<R>;\ntype PipeInput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<infer A, any>, ...UnaryFn<any, any>[]]\n ? A\n : never;\ntype PipeOutput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<any, infer R>]\n ? MaybeSideEffect<R>\n : Fns extends [UnaryFn<any, infer R>, ...infer Rest]\n ? Rest extends [UnaryFn<NonSideEffect<R>, any>, ...UnaryFn<any, any>[]]\n ? PipeOutput<Rest>\n : never\n : never;\ntype Resolve<T> = T extends infer R ? R : never;\ntype PipeSideEffect<Fns extends UnaryFn<any, any>[]> = (\n input: PipeInput<Fns> | SideEffect<any>\n) => Resolve<PipeOutput<Fns>>;\n\nfunction pipeSideEffect<A, R>(ab: UnaryFn<A, R>): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, B, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, R>\n): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, B, C, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, R>\n): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, B, C, D, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, R>\n): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, B, C, D, E, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, E>,\n ef: UnaryFn<E, R>\n): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\n\nfunction pipeSideEffect<Fns extends [UnaryFn<any, any>, ...UnaryFn<any, any>[]]>(...funcs: Fns): PipeSideEffect<Fns>;\nfunction pipeSideEffect(...funcs: Array<UnaryFn<any, any>>): (input: any) => any;\nfunction pipeSideEffect(...funcs: Array<(input: any) => any>) {\n return (init: any) => {\n let acc = init;\n for (const fn of funcs) {\n if (isSideEffect(acc)) {\n return acc;\n }\n acc = fn(acc);\n }\n return acc;\n };\n}\n\nexport default pipeSideEffect;\n"],"names":["pipeSideEffect","funcs","init","acc","fn","isSideEffect"],"mappings":";
|
|
1
|
+
{"version":3,"file":"pipeSideEffect.mjs","sources":["../../../src/implement/composition/pipeSideEffect.ts"],"sourcesContent":["import SideEffect, { isSideEffect } from './sideEffect';\n\ntype MaybeSideEffect<T> = T | SideEffect<any>;\ntype NonSideEffect<T> = Exclude<T, SideEffect<any>>;\ntype UnaryFn<A, R> = (a: A) => MaybeSideEffect<R>;\ntype ZeroFn<R> = () => MaybeSideEffect<R>;\ntype PipeInput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<infer A, any>, ...UnaryFn<any, any>[]]\n ? A\n : never;\ntype PipeOutput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<any, infer R>]\n ? MaybeSideEffect<R>\n : Fns extends [UnaryFn<any, infer R>, ...infer Rest]\n ? Rest extends [UnaryFn<NonSideEffect<R>, any>, ...UnaryFn<any, any>[]]\n ? PipeOutput<Rest>\n : never\n : never;\ntype Resolve<T> = T extends infer R ? R : never;\ntype PipeSideEffect<Fns extends UnaryFn<any, any>[]> = (\n input: PipeInput<Fns> | SideEffect<any>\n) => Resolve<PipeOutput<Fns>>;\n\nfunction pipeSideEffect<R>(ab: ZeroFn<R>): () => MaybeSideEffect<R>;\nfunction pipeSideEffect<B, R>(ab: ZeroFn<B>, bc: UnaryFn<B, R>): () => MaybeSideEffect<R>;\nfunction pipeSideEffect<B, C, R>(ab: ZeroFn<B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, R>): () => MaybeSideEffect<R>;\nfunction pipeSideEffect<B, C, D, R>(\n ab: ZeroFn<B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, R>\n): () => MaybeSideEffect<R>;\nfunction pipeSideEffect<B, C, D, E, R>(\n ab: ZeroFn<B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, E>,\n ef: UnaryFn<E, R>\n): () => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, R>(ab: UnaryFn<A, R>): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, B, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, R>\n): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, B, C, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, R>\n): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, B, C, D, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, R>\n): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, B, C, D, E, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, E>,\n ef: UnaryFn<E, R>\n): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\n\nfunction pipeSideEffect<Fns extends [UnaryFn<any, any>, ...UnaryFn<any, any>[]]>(...funcs: Fns): PipeSideEffect<Fns>;\nfunction pipeSideEffect(...funcs: Array<UnaryFn<any, any>>): (input: any) => any;\nfunction pipeSideEffect(...funcs: Array<(input: any) => any>) {\n return (init: any) => {\n let acc = init;\n for (const fn of funcs) {\n if (isSideEffect(acc)) {\n return acc;\n }\n acc = fn(acc);\n }\n return acc;\n };\n}\n\nexport default pipeSideEffect;\n"],"names":["pipeSideEffect","funcs","init","acc","fn","isSideEffect"],"mappings":";AA+DA,SAASA,KAAkBC,GAAmC;AAC5D,SAAO,CAACC,MAAc;AACpB,QAAIC,IAAMD;AACV,eAAWE,KAAMH,GAAO;AACtB,UAAII,EAAaF,CAAG;AAClB,eAAOA;AAET,MAAAA,IAAMC,EAAGD,CAAG;AAAA,IACd;AACA,WAAOA;AAAA,EACT;AACF;"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { default as SideEffect } from './sideEffect';
|
|
2
|
+
type AnyFn = (...args: any[]) => any;
|
|
3
|
+
type MaybeSideEffect<T, E> = T | SideEffect<E>;
|
|
4
|
+
type NonSideEffect<T> = Exclude<T, SideEffect<any>>;
|
|
5
|
+
type UnaryFn<A, R> = (a: A) => R;
|
|
6
|
+
type ZeroFn<R> = () => R;
|
|
7
|
+
type EffectOfReturn<R> = R extends SideEffect<infer E> ? E : never;
|
|
8
|
+
type EffectOfFn<F> = F extends (...args: any[]) => infer R ? EffectOfReturn<R> : never;
|
|
9
|
+
type EffectsOf<Fns extends AnyFn[]> = EffectOfFn<Fns[number]>;
|
|
10
|
+
type PipeValueOutputUnary<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<any, infer R>] ? NonSideEffect<R> : Fns extends [UnaryFn<any, infer R>, ...infer Rest] ? Rest extends [UnaryFn<NonSideEffect<R>, any>, ...UnaryFn<any, any>[]] ? PipeValueOutputUnary<Rest> : never : never;
|
|
11
|
+
type PipeValueOutputStrict<Fns extends [AnyFn, ...AnyFn[]]> = Fns extends [ZeroFn<infer R>] ? NonSideEffect<R> : Fns extends [ZeroFn<infer R>, ...infer Rest] ? Rest extends [UnaryFn<NonSideEffect<R>, any>, ...UnaryFn<any, any>[]] ? PipeValueOutputUnary<Rest> : never : Fns extends [UnaryFn<any, any>, ...UnaryFn<any, any>[]] ? PipeValueOutputUnary<Fns> : never;
|
|
12
|
+
type PipeInputStrict<Fns extends [AnyFn, ...AnyFn[]]> = Fns extends [ZeroFn<any>, ...AnyFn[]] ? never : Fns extends [UnaryFn<infer A, any>, ...AnyFn[]] ? A : never;
|
|
13
|
+
type Resolve<T> = T extends infer R ? R : never;
|
|
14
|
+
type PipeSideEffectStrictUnary<Fns extends [AnyFn, ...AnyFn[]]> = {
|
|
15
|
+
(input: PipeInputStrict<Fns>): Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns>>>;
|
|
16
|
+
<EIn>(input: PipeInputStrict<Fns> | SideEffect<EIn>): Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns> | EIn>>;
|
|
17
|
+
};
|
|
18
|
+
type PipeSideEffectStrict<Fns extends [AnyFn, ...AnyFn[]]> = Fns extends [ZeroFn<any>, ...AnyFn[]] ? () => Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns>>> : PipeSideEffectStrictUnary<Fns>;
|
|
19
|
+
declare function pipeSideEffectStrict<R>(ab: ZeroFn<R>): PipeSideEffectStrict<[ZeroFn<R>]>;
|
|
20
|
+
declare function pipeSideEffectStrict<B, R>(ab: ZeroFn<B>, bc: UnaryFn<NonSideEffect<B>, R>): PipeSideEffectStrict<[ZeroFn<B>, UnaryFn<NonSideEffect<B>, R>]>;
|
|
21
|
+
declare function pipeSideEffectStrict<B, C, R>(ab: ZeroFn<B>, bc: UnaryFn<NonSideEffect<B>, C>, cd: UnaryFn<NonSideEffect<C>, R>): PipeSideEffectStrict<[ZeroFn<B>, UnaryFn<NonSideEffect<B>, C>, UnaryFn<NonSideEffect<C>, R>]>;
|
|
22
|
+
declare function pipeSideEffectStrict<B, C, D, R>(ab: ZeroFn<B>, bc: UnaryFn<NonSideEffect<B>, C>, cd: UnaryFn<NonSideEffect<C>, D>, de: UnaryFn<NonSideEffect<D>, R>): PipeSideEffectStrict<[
|
|
23
|
+
ZeroFn<B>,
|
|
24
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
25
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
26
|
+
UnaryFn<NonSideEffect<D>, R>
|
|
27
|
+
]>;
|
|
28
|
+
declare function pipeSideEffectStrict<B, C, D, E, R>(ab: ZeroFn<B>, bc: UnaryFn<NonSideEffect<B>, C>, cd: UnaryFn<NonSideEffect<C>, D>, de: UnaryFn<NonSideEffect<D>, E>, ef: UnaryFn<NonSideEffect<E>, R>): PipeSideEffectStrict<[
|
|
29
|
+
ZeroFn<B>,
|
|
30
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
31
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
32
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
33
|
+
UnaryFn<NonSideEffect<E>, R>
|
|
34
|
+
]>;
|
|
35
|
+
declare function pipeSideEffectStrict<A, R>(ab: UnaryFn<A, R>): PipeSideEffectStrict<[UnaryFn<A, R>]>;
|
|
36
|
+
declare function pipeSideEffectStrict<A, B, R>(ab: UnaryFn<A, B>, bc: UnaryFn<NonSideEffect<B>, R>): PipeSideEffectStrict<[UnaryFn<A, B>, UnaryFn<NonSideEffect<B>, R>]>;
|
|
37
|
+
declare function pipeSideEffectStrict<A, B, C, R>(ab: UnaryFn<A, B>, bc: UnaryFn<NonSideEffect<B>, C>, cd: UnaryFn<NonSideEffect<C>, R>): PipeSideEffectStrict<[UnaryFn<A, B>, UnaryFn<NonSideEffect<B>, C>, UnaryFn<NonSideEffect<C>, R>]>;
|
|
38
|
+
declare function pipeSideEffectStrict<A, B, C, D, R>(ab: UnaryFn<A, B>, bc: UnaryFn<NonSideEffect<B>, C>, cd: UnaryFn<NonSideEffect<C>, D>, de: UnaryFn<NonSideEffect<D>, R>): PipeSideEffectStrict<[
|
|
39
|
+
UnaryFn<A, B>,
|
|
40
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
41
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
42
|
+
UnaryFn<NonSideEffect<D>, R>
|
|
43
|
+
]>;
|
|
44
|
+
declare function pipeSideEffectStrict<A, B, C, D, E, R>(ab: UnaryFn<A, B>, bc: UnaryFn<NonSideEffect<B>, C>, cd: UnaryFn<NonSideEffect<C>, D>, de: UnaryFn<NonSideEffect<D>, E>, ef: UnaryFn<NonSideEffect<E>, R>): PipeSideEffectStrict<[
|
|
45
|
+
UnaryFn<A, B>,
|
|
46
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
47
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
48
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
49
|
+
UnaryFn<NonSideEffect<E>, R>
|
|
50
|
+
]>;
|
|
51
|
+
declare function pipeSideEffectStrict<Fns extends [AnyFn, ...AnyFn[]]>(...funcs: Fns): PipeSideEffectStrict<Fns>;
|
|
52
|
+
export default pipeSideEffectStrict;
|
|
53
|
+
//# sourceMappingURL=pipeSideEffectStrict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeSideEffectStrict.d.ts","sourceRoot":"","sources":["../../../src/implement/composition/pipeSideEffectStrict.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { isSideEffect as i } from "./sideEffect.mjs";
|
|
2
|
+
function n(...e) {
|
|
3
|
+
return (f) => {
|
|
4
|
+
let t = f;
|
|
5
|
+
for (const r of e) {
|
|
6
|
+
if (i(t))
|
|
7
|
+
return t;
|
|
8
|
+
t = r(t);
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
n as default
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=pipeSideEffectStrict.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeSideEffectStrict.mjs","sources":["../../../src/implement/composition/pipeSideEffectStrict.ts"],"sourcesContent":["import SideEffect, { isSideEffect } from './sideEffect';\n\ntype AnyFn = (...args: any[]) => any;\ntype MaybeSideEffect<T, E> = T | SideEffect<E>;\ntype NonSideEffect<T> = Exclude<T, SideEffect<any>>;\ntype UnaryFn<A, R> = (a: A) => R;\ntype ZeroFn<R> = () => R;\n\ntype EffectOfReturn<R> = R extends SideEffect<infer E> ? E : never;\ntype EffectOfFn<F> = F extends (...args: any[]) => infer R ? EffectOfReturn<R> : never;\ntype EffectsOf<Fns extends AnyFn[]> = EffectOfFn<Fns[number]>;\n\ntype PipeValueOutputUnary<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<any, infer R>]\n ? NonSideEffect<R>\n : Fns extends [UnaryFn<any, infer R>, ...infer Rest]\n ? Rest extends [UnaryFn<NonSideEffect<R>, any>, ...UnaryFn<any, any>[]]\n ? PipeValueOutputUnary<Rest>\n : never\n : never;\n\ntype PipeValueOutputStrict<Fns extends [AnyFn, ...AnyFn[]]> =\n Fns extends [ZeroFn<infer R>]\n ? NonSideEffect<R>\n : Fns extends [ZeroFn<infer R>, ...infer Rest]\n ? Rest extends [UnaryFn<NonSideEffect<R>, any>, ...UnaryFn<any, any>[]]\n ? PipeValueOutputUnary<Rest>\n : never\n : Fns extends [UnaryFn<any, any>, ...UnaryFn<any, any>[]]\n ? PipeValueOutputUnary<Fns>\n : never;\n\ntype PipeInputStrict<Fns extends [AnyFn, ...AnyFn[]]> = Fns extends [ZeroFn<any>, ...AnyFn[]]\n ? never\n : Fns extends [UnaryFn<infer A, any>, ...AnyFn[]]\n ? A\n : never;\n\ntype Resolve<T> = T extends infer R ? R : never;\n\ntype PipeSideEffectStrictUnary<Fns extends [AnyFn, ...AnyFn[]]> = {\n (input: PipeInputStrict<Fns>): Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns>>>;\n <EIn>(\n input: PipeInputStrict<Fns> | SideEffect<EIn>\n ): Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns> | EIn>>;\n};\n\ntype PipeSideEffectStrict<Fns extends [AnyFn, ...AnyFn[]]> = Fns extends [ZeroFn<any>, ...AnyFn[]]\n ? () => Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns>>>\n : PipeSideEffectStrictUnary<Fns>;\n\nfunction pipeSideEffectStrict<R>(ab: ZeroFn<R>): PipeSideEffectStrict<[ZeroFn<R>]>;\nfunction pipeSideEffectStrict<B, R>(\n ab: ZeroFn<B>,\n bc: UnaryFn<NonSideEffect<B>, R>\n): PipeSideEffectStrict<[ZeroFn<B>, UnaryFn<NonSideEffect<B>, R>]>;\nfunction pipeSideEffectStrict<B, C, R>(\n ab: ZeroFn<B>,\n bc: UnaryFn<NonSideEffect<B>, C>,\n cd: UnaryFn<NonSideEffect<C>, R>\n): PipeSideEffectStrict<[ZeroFn<B>, UnaryFn<NonSideEffect<B>, C>, UnaryFn<NonSideEffect<C>, R>]>;\nfunction pipeSideEffectStrict<B, C, D, R>(\n ab: ZeroFn<B>,\n bc: UnaryFn<NonSideEffect<B>, C>,\n cd: UnaryFn<NonSideEffect<C>, D>,\n de: UnaryFn<NonSideEffect<D>, R>\n): PipeSideEffectStrict<[\n ZeroFn<B>,\n UnaryFn<NonSideEffect<B>, C>,\n UnaryFn<NonSideEffect<C>, D>,\n UnaryFn<NonSideEffect<D>, R>\n]>;\nfunction pipeSideEffectStrict<B, C, D, E, R>(\n ab: ZeroFn<B>,\n bc: UnaryFn<NonSideEffect<B>, C>,\n cd: UnaryFn<NonSideEffect<C>, D>,\n de: UnaryFn<NonSideEffect<D>, E>,\n ef: UnaryFn<NonSideEffect<E>, R>\n): PipeSideEffectStrict<[\n ZeroFn<B>,\n UnaryFn<NonSideEffect<B>, C>,\n UnaryFn<NonSideEffect<C>, D>,\n UnaryFn<NonSideEffect<D>, E>,\n UnaryFn<NonSideEffect<E>, R>\n]>;\nfunction pipeSideEffectStrict<A, R>(ab: UnaryFn<A, R>): PipeSideEffectStrict<[UnaryFn<A, R>]>;\nfunction pipeSideEffectStrict<A, B, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<NonSideEffect<B>, R>\n): PipeSideEffectStrict<[UnaryFn<A, B>, UnaryFn<NonSideEffect<B>, R>]>;\nfunction pipeSideEffectStrict<A, B, C, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<NonSideEffect<B>, C>,\n cd: UnaryFn<NonSideEffect<C>, R>\n): PipeSideEffectStrict<[UnaryFn<A, B>, UnaryFn<NonSideEffect<B>, C>, UnaryFn<NonSideEffect<C>, R>]>;\nfunction pipeSideEffectStrict<A, B, C, D, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<NonSideEffect<B>, C>,\n cd: UnaryFn<NonSideEffect<C>, D>,\n de: UnaryFn<NonSideEffect<D>, R>\n): PipeSideEffectStrict<[\n UnaryFn<A, B>,\n UnaryFn<NonSideEffect<B>, C>,\n UnaryFn<NonSideEffect<C>, D>,\n UnaryFn<NonSideEffect<D>, R>\n]>;\nfunction pipeSideEffectStrict<A, B, C, D, E, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<NonSideEffect<B>, C>,\n cd: UnaryFn<NonSideEffect<C>, D>,\n de: UnaryFn<NonSideEffect<D>, E>,\n ef: UnaryFn<NonSideEffect<E>, R>\n): PipeSideEffectStrict<[\n UnaryFn<A, B>,\n UnaryFn<NonSideEffect<B>, C>,\n UnaryFn<NonSideEffect<C>, D>,\n UnaryFn<NonSideEffect<D>, E>,\n UnaryFn<NonSideEffect<E>, R>\n]>;\n\nfunction pipeSideEffectStrict<Fns extends [AnyFn, ...AnyFn[]]>(...funcs: Fns): PipeSideEffectStrict<Fns>;\nfunction pipeSideEffectStrict(...funcs: Array<(input: any) => any>) {\n return (init?: any) => {\n let acc = init;\n for (const fn of funcs) {\n if (isSideEffect(acc)) {\n return acc;\n }\n acc = fn(acc);\n }\n return acc;\n };\n}\n\nexport default pipeSideEffectStrict;\n"],"names":["pipeSideEffectStrict","funcs","init","acc","fn","isSideEffect"],"mappings":";AAwHA,SAASA,KAAwBC,GAAmC;AAClE,SAAO,CAACC,MAAe;AACrB,QAAIC,IAAMD;AACV,eAAWE,KAAMH,GAAO;AACtB,UAAII,EAAaF,CAAG;AAClB,eAAOA;AAET,MAAAA,IAAMC,EAAGD,CAAG;AAAA,IACd;AACA,WAAOA;AAAA,EACT;AACF;"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
type NoInfer<T> = [T][T extends any ? 0 : never];
|
|
1
2
|
type IfElse = {
|
|
2
3
|
<T, RTrue, RFalse>(...args: [predicate: (value: T) => boolean]): (onTrue: (value: T) => RTrue) => (onFalse: (value: T) => RFalse) => (value: T) => RTrue | RFalse;
|
|
3
|
-
<T, RTrue, RFalse>(...args: [predicate: (value: T) => boolean, onTrue: (value: T) => RTrue]): (onFalse: (value: T) => RFalse) => (value: T) => RTrue | RFalse;
|
|
4
|
+
<T, RTrue, RFalse>(...args: [predicate: (value: NoInfer<T>) => boolean, onTrue: (value: T) => RTrue]): (onFalse: (value: T) => RFalse) => (value: T) => RTrue | RFalse;
|
|
4
5
|
<T, RTrue, RFalse>(...args: [
|
|
5
|
-
predicate: (value: T) => boolean,
|
|
6
|
+
predicate: (value: NoInfer<T>) => boolean,
|
|
6
7
|
onTrue: (value: T) => RTrue,
|
|
7
8
|
onFalse: (value: T) => RFalse
|
|
8
9
|
]): (value: T) => RTrue | RFalse;
|
|
9
10
|
<T, RTrue, RFalse>(...args: [
|
|
10
|
-
predicate: (value: T) => boolean,
|
|
11
|
+
predicate: (value: NoInfer<T>) => boolean,
|
|
11
12
|
onTrue: (value: T) => RTrue,
|
|
12
13
|
onFalse: (value: T) => RFalse,
|
|
13
14
|
value: T
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifElse.d.ts","sourceRoot":"","sources":["../../../src/implement/control/ifElse.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG;IACZ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EACf,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,GAC1C,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,GAAG,MAAM,CAAC;IACpG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EACf,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"ifElse.d.ts","sourceRoot":"","sources":["../../../src/implement/control/ifElse.ts"],"names":[],"mappings":"AAEA,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAEjD,KAAK,MAAM,GAAG;IACZ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EACf,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,GAC1C,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,GAAG,MAAM,CAAC;IACpG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EACf,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,GAChF,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,GAAG,MAAM,CAAC;IACnE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EACf,GAAG,IAAI,EAAE;QACP,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO;QACzC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK;QAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM;KAC9B,GACA,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,GAAG,MAAM,CAAC;IAChC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EACf,GAAG,IAAI,EAAE;QACP,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO;QACzC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK;QAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM;QAC7B,KAAK,EAAE,CAAC;KACT,GACA,KAAK,GAAG,MAAM,CAAC;CACnB,CAAC;AAcF,QAAA,MAAM,aAAa,EAAoB,MAAM,CAAC;AAC9C,eAAe,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifElse.mjs","sources":["../../../src/implement/control/ifElse.ts"],"sourcesContent":["import curry from '../composition/curry';\n\ntype IfElse = {\n <T, RTrue, RFalse>(\n ...args: [predicate: (value: T) => boolean]\n ): (onTrue: (value: T) => RTrue) => (onFalse: (value: T) => RFalse) => (value: T) => RTrue | RFalse;\n <T, RTrue, RFalse>(\n ...args: [predicate: (value: T) => boolean, onTrue: (value: T) => RTrue]\n ): (onFalse: (value: T) => RFalse) => (value: T) => RTrue | RFalse;\n <T, RTrue, RFalse>(\n ...args: [\n predicate: (value: T) => boolean,\n onTrue: (value: T) => RTrue,\n onFalse: (value: T) => RFalse\n ]\n ): (value: T) => RTrue | RFalse;\n <T, RTrue, RFalse>(\n ...args: [\n predicate: (value: T) => boolean,\n onTrue: (value: T) => RTrue,\n onFalse: (value: T) => RFalse,\n value: T\n ]\n ): RTrue | RFalse;\n};\n\n/**\n * ifElse - 조건에 따라 다른 함수 실행\n */\nfunction ifElse<T, RTrue, RFalse>(\n predicate: (value: T) => boolean,\n onTrue: (value: T) => RTrue,\n onFalse: (value: T) => RFalse,\n value: T\n): RTrue | RFalse {\n return predicate(value) ? onTrue(value) : onFalse(value);\n}\n\nconst curriedIfElse = curry(ifElse) as IfElse;\nexport default curriedIfElse;\n"],"names":["ifElse","predicate","onTrue","onFalse","value","curriedIfElse","curry"],"mappings":";
|
|
1
|
+
{"version":3,"file":"ifElse.mjs","sources":["../../../src/implement/control/ifElse.ts"],"sourcesContent":["import curry from '../composition/curry';\n\ntype NoInfer<T> = [T][T extends any ? 0 : never];\n\ntype IfElse = {\n <T, RTrue, RFalse>(\n ...args: [predicate: (value: T) => boolean]\n ): (onTrue: (value: T) => RTrue) => (onFalse: (value: T) => RFalse) => (value: T) => RTrue | RFalse;\n <T, RTrue, RFalse>(\n ...args: [predicate: (value: NoInfer<T>) => boolean, onTrue: (value: T) => RTrue]\n ): (onFalse: (value: T) => RFalse) => (value: T) => RTrue | RFalse;\n <T, RTrue, RFalse>(\n ...args: [\n predicate: (value: NoInfer<T>) => boolean,\n onTrue: (value: T) => RTrue,\n onFalse: (value: T) => RFalse\n ]\n ): (value: T) => RTrue | RFalse;\n <T, RTrue, RFalse>(\n ...args: [\n predicate: (value: NoInfer<T>) => boolean,\n onTrue: (value: T) => RTrue,\n onFalse: (value: T) => RFalse,\n value: T\n ]\n ): RTrue | RFalse;\n};\n\n/**\n * ifElse - 조건에 따라 다른 함수 실행\n */\nfunction ifElse<T, RTrue, RFalse>(\n predicate: (value: T) => boolean,\n onTrue: (value: T) => RTrue,\n onFalse: (value: T) => RFalse,\n value: T\n): RTrue | RFalse {\n return predicate(value) ? onTrue(value) : onFalse(value);\n}\n\nconst curriedIfElse = curry(ifElse) as IfElse;\nexport default curriedIfElse;\n"],"names":["ifElse","predicate","onTrue","onFalse","value","curriedIfElse","curry"],"mappings":";AA+BA,SAASA,EACPC,GACAC,GACAC,GACAC,GACgB;AAChB,SAAOH,EAAUG,CAAK,IAAIF,EAAOE,CAAK,IAAID,EAAQC,CAAK;AACzD;AAEA,MAAMC,IAAgBC,EAAMN,CAAM;"}
|
|
@@ -1,8 +1,20 @@
|
|
|
1
|
+
type NoInfer<T> = [T][T extends any ? 0 : never];
|
|
1
2
|
type Widen<T> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T;
|
|
2
3
|
type Unless = {
|
|
3
4
|
<T>(...args: [predicate: (value: Widen<T>) => boolean]): (fn: (value: Widen<T>) => Widen<T>) => (value: Widen<T>) => Widen<T>;
|
|
4
|
-
<T>(...args: [predicate: (value: Widen<T>) => boolean
|
|
5
|
-
<T>(...args: [predicate: (value: Widen<T
|
|
5
|
+
<T, R>(...args: [predicate: (value: Widen<T>) => boolean]): (fn: (value: Widen<T>) => R) => (value: Widen<T>) => Widen<T> | R;
|
|
6
|
+
<T>(...args: [predicate: (value: NoInfer<Widen<T>>) => boolean, fn: (value: Widen<T>) => Widen<T>]): (value: Widen<T>) => Widen<T>;
|
|
7
|
+
<T, R>(...args: [predicate: (value: NoInfer<Widen<T>>) => boolean, fn: (value: Widen<T>) => R]): (value: Widen<T>) => Widen<T> | R;
|
|
8
|
+
<T>(...args: [
|
|
9
|
+
predicate: (value: NoInfer<Widen<T>>) => boolean,
|
|
10
|
+
fn: (value: Widen<T>) => Widen<T>,
|
|
11
|
+
value: Widen<T>
|
|
12
|
+
]): Widen<T>;
|
|
13
|
+
<T, R>(...args: [
|
|
14
|
+
predicate: (value: NoInfer<Widen<T>>) => boolean,
|
|
15
|
+
fn: (value: Widen<T>) => R,
|
|
16
|
+
value: Widen<T>
|
|
17
|
+
]): Widen<T> | R;
|
|
6
18
|
};
|
|
7
19
|
declare const curriedUnless: Unless;
|
|
8
20
|
export default curriedUnless;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unless.d.ts","sourceRoot":"","sources":["../../../src/implement/control/unless.ts"],"names":[],"mappings":"AAEA,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;AAExG,KAAK,MAAM,GAAG;IACZ,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CACvD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAC9B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,EACA,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"unless.d.ts","sourceRoot":"","sources":["../../../src/implement/control/unless.ts"],"names":[],"mappings":"AAEA,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AACjD,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;AAExG,KAAK,MAAM,GAAG;IACZ,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CACvD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAC9B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAC1D,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KACvB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,EACA,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAC7F,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,EACH,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GACtF,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,EACA,GAAG,IAAI,EAAE;QACP,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO;QAChD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QACjC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;KAChB,GACA,KAAK,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,EAAE,CAAC,EACH,GAAG,IAAI,EAAE;QACP,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO;QAChD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;KAChB,GACA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACjB,CAAC;AAaF,QAAA,MAAM,aAAa,EAAoB,MAAM,CAAC;AAC9C,eAAe,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unless.mjs","sources":["../../../src/implement/control/unless.ts"],"sourcesContent":["import curry from '../composition/curry';\n\ntype Widen<T> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T;\n\ntype Unless = {\n <T>(...args: [predicate: (value: Widen<T>) => boolean]): (\n fn: (value: Widen<T>) => Widen<T>\n ) => (value: Widen<T>) => Widen<T>;\n <T>(\n ...args: [predicate: (value: Widen<T
|
|
1
|
+
{"version":3,"file":"unless.mjs","sources":["../../../src/implement/control/unless.ts"],"sourcesContent":["import curry from '../composition/curry';\n\ntype NoInfer<T> = [T][T extends any ? 0 : never];\ntype Widen<T> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T;\n\ntype Unless = {\n <T>(...args: [predicate: (value: Widen<T>) => boolean]): (\n fn: (value: Widen<T>) => Widen<T>\n ) => (value: Widen<T>) => Widen<T>;\n <T, R>(...args: [predicate: (value: Widen<T>) => boolean]): (\n fn: (value: Widen<T>) => R\n ) => (value: Widen<T>) => Widen<T> | R;\n <T>(\n ...args: [predicate: (value: NoInfer<Widen<T>>) => boolean, fn: (value: Widen<T>) => Widen<T>]\n ): (value: Widen<T>) => Widen<T>;\n <T, R>(\n ...args: [predicate: (value: NoInfer<Widen<T>>) => boolean, fn: (value: Widen<T>) => R]\n ): (value: Widen<T>) => Widen<T> | R;\n <T>(\n ...args: [\n predicate: (value: NoInfer<Widen<T>>) => boolean,\n fn: (value: Widen<T>) => Widen<T>,\n value: Widen<T>\n ]\n ): Widen<T>;\n <T, R>(\n ...args: [\n predicate: (value: NoInfer<Widen<T>>) => boolean,\n fn: (value: Widen<T>) => R,\n value: Widen<T>\n ]\n ): Widen<T> | R;\n};\n\n/**\n * unless - 조건이 false일 때만 적용\n */\nfunction unless<T>(\n predicate: (value: T) => boolean,\n fn: (value: T) => T,\n value: T\n): T {\n return predicate(value) ? value : fn(value);\n}\n\nconst curriedUnless = curry(unless) as Unless;\nexport default curriedUnless;\n"],"names":["unless","predicate","fn","value","curriedUnless","curry"],"mappings":";AAqCA,SAASA,EACPC,GACAC,GACAC,GACG;AACH,SAAOF,EAAUE,CAAK,IAAIA,IAAQD,EAAGC,CAAK;AAC5C;AAEA,MAAMC,IAAgBC,EAAML,CAAM;"}
|
|
@@ -1,8 +1,20 @@
|
|
|
1
|
+
type NoInfer<T> = [T][T extends any ? 0 : never];
|
|
1
2
|
type Widen<T> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T;
|
|
2
3
|
type When = {
|
|
3
4
|
<T>(...args: [predicate: (value: Widen<T>) => boolean]): (fn: (value: Widen<T>) => Widen<T>) => (value: Widen<T>) => Widen<T>;
|
|
4
|
-
<T>(...args: [predicate: (value: Widen<T>) => boolean
|
|
5
|
-
<T>(...args: [predicate: (value: Widen<T
|
|
5
|
+
<T, R>(...args: [predicate: (value: Widen<T>) => boolean]): (fn: (value: Widen<T>) => R) => (value: Widen<T>) => Widen<T> | R;
|
|
6
|
+
<T>(...args: [predicate: (value: NoInfer<Widen<T>>) => boolean, fn: (value: Widen<T>) => Widen<T>]): (value: Widen<T>) => Widen<T>;
|
|
7
|
+
<T, R>(...args: [predicate: (value: NoInfer<Widen<T>>) => boolean, fn: (value: Widen<T>) => R]): (value: Widen<T>) => Widen<T> | R;
|
|
8
|
+
<T>(...args: [
|
|
9
|
+
predicate: (value: NoInfer<Widen<T>>) => boolean,
|
|
10
|
+
fn: (value: Widen<T>) => Widen<T>,
|
|
11
|
+
value: Widen<T>
|
|
12
|
+
]): Widen<T>;
|
|
13
|
+
<T, R>(...args: [
|
|
14
|
+
predicate: (value: NoInfer<Widen<T>>) => boolean,
|
|
15
|
+
fn: (value: Widen<T>) => R,
|
|
16
|
+
value: Widen<T>
|
|
17
|
+
]): Widen<T> | R;
|
|
6
18
|
};
|
|
7
19
|
declare const curriedWhen: When;
|
|
8
20
|
export default curriedWhen;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"when.d.ts","sourceRoot":"","sources":["../../../src/implement/control/when.ts"],"names":[],"mappings":"AAEA,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;AAExG,KAAK,IAAI,GAAG;IACV,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CACvD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAC9B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,EACA,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"when.d.ts","sourceRoot":"","sources":["../../../src/implement/control/when.ts"],"names":[],"mappings":"AAEA,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AACjD,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;AAExG,KAAK,IAAI,GAAG;IACV,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CACvD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAC9B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAC1D,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KACvB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,EACA,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAC7F,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,EACH,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GACtF,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,EACA,GAAG,IAAI,EAAE;QACP,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO;QAChD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QACjC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;KAChB,GACA,KAAK,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,EAAE,CAAC,EACH,GAAG,IAAI,EAAE;QACP,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO;QAChD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;KAChB,GACA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACjB,CAAC;AAaF,QAAA,MAAM,WAAW,EAAkB,IAAI,CAAC;AACxC,eAAe,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"when.mjs","sources":["../../../src/implement/control/when.ts"],"sourcesContent":["import curry from '../composition/curry';\n\ntype Widen<T> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T;\n\ntype When = {\n <T>(...args: [predicate: (value: Widen<T>) => boolean]): (\n fn: (value: Widen<T>) => Widen<T>\n ) => (value: Widen<T>) => Widen<T>;\n <T>(\n ...args: [predicate: (value: Widen<T
|
|
1
|
+
{"version":3,"file":"when.mjs","sources":["../../../src/implement/control/when.ts"],"sourcesContent":["import curry from '../composition/curry';\n\ntype NoInfer<T> = [T][T extends any ? 0 : never];\ntype Widen<T> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T;\n\ntype When = {\n <T>(...args: [predicate: (value: Widen<T>) => boolean]): (\n fn: (value: Widen<T>) => Widen<T>\n ) => (value: Widen<T>) => Widen<T>;\n <T, R>(...args: [predicate: (value: Widen<T>) => boolean]): (\n fn: (value: Widen<T>) => R\n ) => (value: Widen<T>) => Widen<T> | R;\n <T>(\n ...args: [predicate: (value: NoInfer<Widen<T>>) => boolean, fn: (value: Widen<T>) => Widen<T>]\n ): (value: Widen<T>) => Widen<T>;\n <T, R>(\n ...args: [predicate: (value: NoInfer<Widen<T>>) => boolean, fn: (value: Widen<T>) => R]\n ): (value: Widen<T>) => Widen<T> | R;\n <T>(\n ...args: [\n predicate: (value: NoInfer<Widen<T>>) => boolean,\n fn: (value: Widen<T>) => Widen<T>,\n value: Widen<T>\n ]\n ): Widen<T>;\n <T, R>(\n ...args: [\n predicate: (value: NoInfer<Widen<T>>) => boolean,\n fn: (value: Widen<T>) => R,\n value: Widen<T>\n ]\n ): Widen<T> | R;\n};\n\n/**\n * when - 조건이 true일 때만 적용\n */\nfunction when<T>(\n predicate: (value: T) => boolean,\n fn: (value: T) => T,\n value: T\n): T {\n return predicate(value) ? fn(value) : value;\n}\n\nconst curriedWhen = curry(when) as When;\nexport default curriedWhen;\n"],"names":["when","predicate","fn","value","curriedWhen","curry"],"mappings":";AAqCA,SAASA,EACPC,GACAC,GACAC,GACG;AACH,SAAOF,EAAUE,CAAK,IAAID,EAAGC,CAAK,IAAIA;AACxC;AAEA,MAAMC,IAAcC,EAAML,CAAI;"}
|