fp-pack 0.3.0 → 0.5.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 +119 -32
- package/dist/fp-pack.umd.js +1 -1
- package/dist/fp-pack.umd.js.map +1 -1
- package/dist/implement/async/pipeAsync.d.ts +7 -0
- package/dist/implement/async/pipeAsync.d.ts.map +1 -1
- package/dist/implement/async/pipeAsync.mjs.map +1 -1
- package/dist/implement/async/pipeAsyncSideEffect.d.ts +7 -0
- package/dist/implement/async/pipeAsyncSideEffect.d.ts.map +1 -1
- package/dist/implement/async/pipeAsyncSideEffect.mjs.map +1 -1
- package/dist/implement/async/pipeAsyncSideEffectStrict.d.ts +90 -0
- package/dist/implement/async/pipeAsyncSideEffectStrict.d.ts.map +1 -1
- package/dist/implement/async/pipeAsyncSideEffectStrict.mjs.map +1 -1
- package/dist/implement/composition/from.d.ts +5 -1
- package/dist/implement/composition/from.d.ts.map +1 -1
- package/dist/implement/composition/from.mjs +4 -3
- package/dist/implement/composition/from.mjs.map +1 -1
- package/dist/implement/composition/pipe.d.ts +8 -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 +98 -0
- package/dist/implement/composition/pipe.type-test.d.ts.map +1 -1
- package/dist/implement/composition/pipeSideEffect.d.ts +11 -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 +90 -0
- package/dist/implement/composition/pipeSideEffectStrict.d.ts.map +1 -1
- package/dist/implement/composition/pipeSideEffectStrict.mjs.map +1 -1
- package/dist/skills/fp-pack/SKILL.md +14 -6
- package/dist/skills/fp-pack.md +14 -6
- package/package.json +3 -2
- package/src/implement/async/pipeAsync.ts +48 -0
- package/src/implement/async/pipeAsyncSideEffect.ts +49 -0
- package/src/implement/async/pipeAsyncSideEffectStrict.ts +170 -0
- package/src/implement/composition/from.ts +9 -2
- package/src/implement/composition/pipe.ts +84 -0
- package/src/implement/composition/pipe.type-test.ts +299 -0
- package/src/implement/composition/pipeSideEffect.ts +89 -0
- package/src/implement/composition/pipeSideEffectStrict.ts +170 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import SideEffect from './sideEffect';
|
|
2
|
+
import from from './from';
|
|
2
3
|
import pipe from './pipe';
|
|
3
4
|
import pipeSideEffect from './pipeSideEffect';
|
|
4
5
|
import pipeSideEffectStrict from './pipeSideEffectStrict';
|
|
@@ -36,6 +37,40 @@ export const purePipeSix = pipe(
|
|
|
36
37
|
type PurePipeSixExpected = (input: number) => string;
|
|
37
38
|
export type PipePureSixIsStrict = Expect<Equal<typeof purePipeSix, PurePipeSixExpected>>;
|
|
38
39
|
|
|
40
|
+
export const purePipeTen = pipe(
|
|
41
|
+
(value: number) => value + 1,
|
|
42
|
+
(value) => value * 2,
|
|
43
|
+
(value) => `v:${value}`,
|
|
44
|
+
(value) => value.toUpperCase(),
|
|
45
|
+
(value) => value.length,
|
|
46
|
+
(value) => value + 1,
|
|
47
|
+
(value) => `${value}`,
|
|
48
|
+
(value) => value.padStart(3, '0'),
|
|
49
|
+
(value) => value.length,
|
|
50
|
+
(value) => `n:${value}`
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
type PurePipeTenExpected = (input: number) => string;
|
|
54
|
+
export type PipePureTenIsStrict = Expect<Equal<typeof purePipeTen, PurePipeTenExpected>>;
|
|
55
|
+
|
|
56
|
+
export const pipeFromTen = pipe(
|
|
57
|
+
from(1),
|
|
58
|
+
(value) => value + 1,
|
|
59
|
+
(value) => value * 2,
|
|
60
|
+
(value) => `${value}`,
|
|
61
|
+
(value) => value.padStart(3, '0'),
|
|
62
|
+
(value) => value.length,
|
|
63
|
+
(value) => value + 1,
|
|
64
|
+
(value) => `${value}`,
|
|
65
|
+
(value) => value.padStart(4, '0'),
|
|
66
|
+
(value) => `n:${value}`
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
export const pipeFromTenValue = pipeFromTen('input');
|
|
70
|
+
|
|
71
|
+
type PipeFromTenValueExpected = string;
|
|
72
|
+
export type PipeFromTenValueIsStrict = Expect<Equal<typeof pipeFromTenValue, PipeFromTenValueExpected>>;
|
|
73
|
+
|
|
39
74
|
export const pipeWithSideEffectInput = pipeSideEffect(
|
|
40
75
|
(value: number) => value + 1,
|
|
41
76
|
(value) => value * 2,
|
|
@@ -59,6 +94,49 @@ export const pipeSideEffectSix = pipeSideEffect(
|
|
|
59
94
|
type PipeSideEffectSixExpected = (input: number | SideEffect<any>) => string | SideEffect<any>;
|
|
60
95
|
export type PipeSideEffectSixIsStrict = Expect<Equal<typeof pipeSideEffectSix, PipeSideEffectSixExpected>>;
|
|
61
96
|
|
|
97
|
+
export const pipeSideEffectTen = pipeSideEffect(
|
|
98
|
+
(value: number) => value + 1,
|
|
99
|
+
(value) => value * 2,
|
|
100
|
+
(value) => `v:${value}`,
|
|
101
|
+
(value) => value.toUpperCase(),
|
|
102
|
+
(value) => value.length,
|
|
103
|
+
(value) => value + 1,
|
|
104
|
+
(value) => `${value}`,
|
|
105
|
+
(value) => value.padStart(3, '0'),
|
|
106
|
+
(value) => value.length,
|
|
107
|
+
(value) => `n:${value}`
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
type PipeSideEffectTenExpected = (input: number | SideEffect<any>) => string | SideEffect<any>;
|
|
111
|
+
export type PipeSideEffectTenIsStrict = Expect<Equal<typeof pipeSideEffectTen, PipeSideEffectTenExpected>>;
|
|
112
|
+
|
|
113
|
+
export const pipeSideEffectFromTen = pipeSideEffect(
|
|
114
|
+
from(1),
|
|
115
|
+
(value) => value + 1,
|
|
116
|
+
(value) => value * 2,
|
|
117
|
+
(value) => `${value}`,
|
|
118
|
+
(value) => value.padStart(3, '0'),
|
|
119
|
+
(value) => value.length,
|
|
120
|
+
(value) => value + 1,
|
|
121
|
+
(value) => `${value}`,
|
|
122
|
+
(value) => value.padStart(4, '0'),
|
|
123
|
+
(value) => `n:${value}`
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
export const pipeSideEffectFromTenValue = pipeSideEffectFromTen('input');
|
|
127
|
+
|
|
128
|
+
type PipeSideEffectFromTenValueExpected = string | SideEffect<any>;
|
|
129
|
+
export type PipeSideEffectFromTenValueIsStrict = Expect<
|
|
130
|
+
Equal<typeof pipeSideEffectFromTenValue, PipeSideEffectFromTenValueExpected>
|
|
131
|
+
>;
|
|
132
|
+
|
|
133
|
+
export const pipeSideEffectFromTenValueNoInput = pipeSideEffectFromTen();
|
|
134
|
+
|
|
135
|
+
type PipeSideEffectFromTenValueNoInputExpected = string | SideEffect<any>;
|
|
136
|
+
export type PipeSideEffectFromTenValueNoInputIsStrict = Expect<
|
|
137
|
+
Equal<typeof pipeSideEffectFromTenValueNoInput, PipeSideEffectFromTenValueNoInputExpected>
|
|
138
|
+
>;
|
|
139
|
+
|
|
62
140
|
export const purePipeAsync = pipeAsync(
|
|
63
141
|
(value: number) => value + 1,
|
|
64
142
|
async (value) => value * 2,
|
|
@@ -80,6 +158,49 @@ export const purePipeAsyncSix = pipeAsync(
|
|
|
80
158
|
type PurePipeAsyncSixExpected = (input: number) => Promise<string>;
|
|
81
159
|
export type PipeAsyncPureSixIsStrict = Expect<Equal<typeof purePipeAsyncSix, PurePipeAsyncSixExpected>>;
|
|
82
160
|
|
|
161
|
+
export const purePipeAsyncTen = pipeAsync(
|
|
162
|
+
(value: number) => value + 1,
|
|
163
|
+
async (value) => value * 2,
|
|
164
|
+
(value) => `${value}`,
|
|
165
|
+
async (value) => value.length,
|
|
166
|
+
(value) => value + 3,
|
|
167
|
+
async (value) => value * 2,
|
|
168
|
+
(value) => `${value}`,
|
|
169
|
+
async (value) => value.length,
|
|
170
|
+
(value) => value + 1,
|
|
171
|
+
async (value) => `n:${value}`
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
type PurePipeAsyncTenExpected = (input: number) => Promise<string>;
|
|
175
|
+
export type PipeAsyncPureTenIsStrict = Expect<Equal<typeof purePipeAsyncTen, PurePipeAsyncTenExpected>>;
|
|
176
|
+
|
|
177
|
+
export const pipeAsyncFromTen = pipeAsync(
|
|
178
|
+
from(1),
|
|
179
|
+
async (value) => value + 1,
|
|
180
|
+
(value) => value * 2,
|
|
181
|
+
async (value) => `${value}`,
|
|
182
|
+
(value) => value.padStart(3, '0'),
|
|
183
|
+
async (value) => value.length,
|
|
184
|
+
(value) => value + 1,
|
|
185
|
+
async (value) => `${value}`,
|
|
186
|
+
(value) => value.padStart(4, '0'),
|
|
187
|
+
async (value) => `n:${value}`
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
export const pipeAsyncFromTenValue = pipeAsyncFromTen('input');
|
|
191
|
+
|
|
192
|
+
type PipeAsyncFromTenValueExpected = Promise<string>;
|
|
193
|
+
export type PipeAsyncFromTenValueIsStrict = Expect<
|
|
194
|
+
Equal<typeof pipeAsyncFromTenValue, PipeAsyncFromTenValueExpected>
|
|
195
|
+
>;
|
|
196
|
+
|
|
197
|
+
export const pipeAsyncFromTenValueNoInput = pipeAsyncFromTen();
|
|
198
|
+
|
|
199
|
+
type PipeAsyncFromTenValueNoInputExpected = Promise<string>;
|
|
200
|
+
export type PipeAsyncFromTenValueNoInputIsStrict = Expect<
|
|
201
|
+
Equal<typeof pipeAsyncFromTenValueNoInput, PipeAsyncFromTenValueNoInputExpected>
|
|
202
|
+
>;
|
|
203
|
+
|
|
83
204
|
export const pipeAsyncWithSideEffectInput = pipeAsyncSideEffect(
|
|
84
205
|
(value: number) => value + 1,
|
|
85
206
|
async (value) => value * 2,
|
|
@@ -107,6 +228,51 @@ export type PipeAsyncSideEffectSixIsStrict = Expect<
|
|
|
107
228
|
Equal<typeof pipeAsyncSideEffectSix, PipeAsyncSideEffectSixExpected>
|
|
108
229
|
>;
|
|
109
230
|
|
|
231
|
+
export const pipeAsyncSideEffectTen = pipeAsyncSideEffect(
|
|
232
|
+
(value: number) => value + 1,
|
|
233
|
+
async (value) => value * 2,
|
|
234
|
+
(value) => `${value}`,
|
|
235
|
+
async (value) => value.length,
|
|
236
|
+
(value) => value + 3,
|
|
237
|
+
async (value) => value * 2,
|
|
238
|
+
(value) => `${value}`,
|
|
239
|
+
async (value) => value.length,
|
|
240
|
+
(value) => value + 1,
|
|
241
|
+
async (value) => `n:${value}`
|
|
242
|
+
);
|
|
243
|
+
|
|
244
|
+
type PipeAsyncSideEffectTenExpected = (input: number | SideEffect<any>) => Promise<string | SideEffect<any>>;
|
|
245
|
+
export type PipeAsyncSideEffectTenIsStrict = Expect<
|
|
246
|
+
Equal<typeof pipeAsyncSideEffectTen, PipeAsyncSideEffectTenExpected>
|
|
247
|
+
>;
|
|
248
|
+
|
|
249
|
+
export const pipeAsyncSideEffectFromTen = pipeAsyncSideEffect(
|
|
250
|
+
from(1),
|
|
251
|
+
async (value) => value + 1,
|
|
252
|
+
(value) => value * 2,
|
|
253
|
+
async (value) => `${value}`,
|
|
254
|
+
(value) => value.padStart(3, '0'),
|
|
255
|
+
async (value) => value.length,
|
|
256
|
+
(value) => value + 1,
|
|
257
|
+
async (value) => `${value}`,
|
|
258
|
+
(value) => value.padStart(4, '0'),
|
|
259
|
+
async (value) => `n:${value}`
|
|
260
|
+
);
|
|
261
|
+
|
|
262
|
+
export const pipeAsyncSideEffectFromTenValue = pipeAsyncSideEffectFromTen('input');
|
|
263
|
+
|
|
264
|
+
type PipeAsyncSideEffectFromTenValueExpected = Promise<string | SideEffect<any>>;
|
|
265
|
+
export type PipeAsyncSideEffectFromTenValueIsStrict = Expect<
|
|
266
|
+
Equal<typeof pipeAsyncSideEffectFromTenValue, PipeAsyncSideEffectFromTenValueExpected>
|
|
267
|
+
>;
|
|
268
|
+
|
|
269
|
+
export const pipeAsyncSideEffectFromTenValueNoInput = pipeAsyncSideEffectFromTen();
|
|
270
|
+
|
|
271
|
+
type PipeAsyncSideEffectFromTenValueNoInputExpected = Promise<string | SideEffect<any>>;
|
|
272
|
+
export type PipeAsyncSideEffectFromTenValueNoInputIsStrict = Expect<
|
|
273
|
+
Equal<typeof pipeAsyncSideEffectFromTenValueNoInput, PipeAsyncSideEffectFromTenValueNoInputExpected>
|
|
274
|
+
>;
|
|
275
|
+
|
|
110
276
|
export const strictPipeSideEffect = pipeSideEffectStrict(
|
|
111
277
|
(value: number) => value + 1,
|
|
112
278
|
(value) => (value > 1 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
@@ -150,6 +316,68 @@ type StrictSixValue = ValueUnion<typeof strictPipeSideEffectSixResult>;
|
|
|
150
316
|
type StrictSixValueExpected = number;
|
|
151
317
|
export type PipeSideEffectStrictSixValue = Expect<Equal<StrictSixValue, StrictSixValueExpected>>;
|
|
152
318
|
|
|
319
|
+
export const strictPipeSideEffectTen = pipeSideEffectStrict(
|
|
320
|
+
(value: number) => value + 1,
|
|
321
|
+
(value) => (value > 1 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
322
|
+
(value) => value + 1,
|
|
323
|
+
(value) => (value > 3 ? value : SideEffect.of(() => 'MID' as const)),
|
|
324
|
+
(value) => value * 2,
|
|
325
|
+
(value) => value + 1,
|
|
326
|
+
(value) => (value > 10 ? value : SideEffect.of(() => 0 as const)),
|
|
327
|
+
(value) => value + 1,
|
|
328
|
+
(value) => value * 2,
|
|
329
|
+
(value) => value + 1
|
|
330
|
+
);
|
|
331
|
+
|
|
332
|
+
export const strictPipeSideEffectTenResult = strictPipeSideEffectTen(1);
|
|
333
|
+
|
|
334
|
+
type StrictTenEffects = EffectUnion<typeof strictPipeSideEffectTenResult>;
|
|
335
|
+
type StrictTenEffectsExpected = 'LOW' | 'MID' | 0;
|
|
336
|
+
export type PipeSideEffectStrictTenEffects = Expect<Equal<StrictTenEffects, StrictTenEffectsExpected>>;
|
|
337
|
+
|
|
338
|
+
type StrictTenValue = ValueUnion<typeof strictPipeSideEffectTenResult>;
|
|
339
|
+
type StrictTenValueExpected = number;
|
|
340
|
+
export type PipeSideEffectStrictTenValue = Expect<Equal<StrictTenValue, StrictTenValueExpected>>;
|
|
341
|
+
|
|
342
|
+
export const strictPipeSideEffectFromTen = pipeSideEffectStrict(
|
|
343
|
+
from(1),
|
|
344
|
+
(value) => value + 1,
|
|
345
|
+
(value) => (value > 1 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
346
|
+
(value) => value * 2,
|
|
347
|
+
(value) => (value > 4 ? value : SideEffect.of(() => 'MID' as const)),
|
|
348
|
+
(value) => value + 1,
|
|
349
|
+
(value) => value * 2,
|
|
350
|
+
(value) => (value > 20 ? value : SideEffect.of(() => 0 as const)),
|
|
351
|
+
(value) => value + 1,
|
|
352
|
+
(value) => value * 2
|
|
353
|
+
);
|
|
354
|
+
|
|
355
|
+
export const strictPipeSideEffectFromTenResult = strictPipeSideEffectFromTen('input');
|
|
356
|
+
|
|
357
|
+
type StrictFromTenEffects = EffectUnion<typeof strictPipeSideEffectFromTenResult>;
|
|
358
|
+
type StrictFromTenEffectsExpected = 'LOW' | 'MID' | 0;
|
|
359
|
+
export type PipeSideEffectStrictFromTenEffects = Expect<
|
|
360
|
+
Equal<StrictFromTenEffects, StrictFromTenEffectsExpected>
|
|
361
|
+
>;
|
|
362
|
+
|
|
363
|
+
type StrictFromTenValue = ValueUnion<typeof strictPipeSideEffectFromTenResult>;
|
|
364
|
+
type StrictFromTenValueExpected = number;
|
|
365
|
+
export type PipeSideEffectStrictFromTenValue = Expect<Equal<StrictFromTenValue, StrictFromTenValueExpected>>;
|
|
366
|
+
|
|
367
|
+
export const strictPipeSideEffectFromTenResultNoInput = strictPipeSideEffectFromTen();
|
|
368
|
+
|
|
369
|
+
type StrictFromTenNoInputEffects = EffectUnion<typeof strictPipeSideEffectFromTenResultNoInput>;
|
|
370
|
+
type StrictFromTenNoInputEffectsExpected = 'LOW' | 'MID' | 0;
|
|
371
|
+
export type PipeSideEffectStrictFromTenNoInputEffects = Expect<
|
|
372
|
+
Equal<StrictFromTenNoInputEffects, StrictFromTenNoInputEffectsExpected>
|
|
373
|
+
>;
|
|
374
|
+
|
|
375
|
+
type StrictFromTenNoInputValue = ValueUnion<typeof strictPipeSideEffectFromTenResultNoInput>;
|
|
376
|
+
type StrictFromTenNoInputValueExpected = number;
|
|
377
|
+
export type PipeSideEffectStrictFromTenNoInputValue = Expect<
|
|
378
|
+
Equal<StrictFromTenNoInputValue, StrictFromTenNoInputValueExpected>
|
|
379
|
+
>;
|
|
380
|
+
|
|
153
381
|
export const strictPipeAsyncSideEffect = pipeAsyncSideEffectStrict(
|
|
154
382
|
(value: number) => value + 1,
|
|
155
383
|
async (value) => (value > 1 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
@@ -194,3 +422,74 @@ type StrictAsyncSixValueExpected = number;
|
|
|
194
422
|
export type PipeAsyncSideEffectStrictSixValue = Expect<
|
|
195
423
|
Equal<StrictAsyncSixValue, StrictAsyncSixValueExpected>
|
|
196
424
|
>;
|
|
425
|
+
|
|
426
|
+
export const strictPipeAsyncSideEffectTen = pipeAsyncSideEffectStrict(
|
|
427
|
+
(value: number) => value + 1,
|
|
428
|
+
async (value) => (value > 1 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
429
|
+
(value) => value + 1,
|
|
430
|
+
async (value) => (value > 3 ? value : SideEffect.of(() => 'MID' as const)),
|
|
431
|
+
(value) => value * 2,
|
|
432
|
+
async (value) => value + 1,
|
|
433
|
+
(value) => (value > 10 ? value : SideEffect.of(() => 0 as const)),
|
|
434
|
+
async (value) => value + 1,
|
|
435
|
+
(value) => value * 2,
|
|
436
|
+
async (value) => value + 1
|
|
437
|
+
);
|
|
438
|
+
|
|
439
|
+
export const strictPipeAsyncSideEffectTenResult = strictPipeAsyncSideEffectTen(1);
|
|
440
|
+
|
|
441
|
+
type StrictAsyncTenResolved = Awaited<typeof strictPipeAsyncSideEffectTenResult>;
|
|
442
|
+
type StrictAsyncTenEffects = EffectUnion<StrictAsyncTenResolved>;
|
|
443
|
+
type StrictAsyncTenEffectsExpected = 'LOW' | 'MID' | 0;
|
|
444
|
+
export type PipeAsyncSideEffectStrictTenEffects = Expect<
|
|
445
|
+
Equal<StrictAsyncTenEffects, StrictAsyncTenEffectsExpected>
|
|
446
|
+
>;
|
|
447
|
+
|
|
448
|
+
type StrictAsyncTenValue = ValueUnion<StrictAsyncTenResolved>;
|
|
449
|
+
type StrictAsyncTenValueExpected = number;
|
|
450
|
+
export type PipeAsyncSideEffectStrictTenValue = Expect<
|
|
451
|
+
Equal<StrictAsyncTenValue, StrictAsyncTenValueExpected>
|
|
452
|
+
>;
|
|
453
|
+
|
|
454
|
+
export const strictPipeAsyncSideEffectFromTen = pipeAsyncSideEffectStrict(
|
|
455
|
+
from(1),
|
|
456
|
+
async (value) => value + 1,
|
|
457
|
+
(value) => (value > 1 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
458
|
+
async (value) => value * 2,
|
|
459
|
+
(value) => (value > 4 ? value : SideEffect.of(() => 'MID' as const)),
|
|
460
|
+
async (value) => value + 1,
|
|
461
|
+
(value) => value * 2,
|
|
462
|
+
async (value) => (value > 20 ? value : SideEffect.of(() => 0 as const)),
|
|
463
|
+
(value) => value + 1,
|
|
464
|
+
async (value) => value * 2
|
|
465
|
+
);
|
|
466
|
+
|
|
467
|
+
export const strictPipeAsyncSideEffectFromTenResult = strictPipeAsyncSideEffectFromTen('input');
|
|
468
|
+
|
|
469
|
+
type StrictAsyncFromTenResolved = Awaited<typeof strictPipeAsyncSideEffectFromTenResult>;
|
|
470
|
+
type StrictAsyncFromTenEffects = EffectUnion<StrictAsyncFromTenResolved>;
|
|
471
|
+
type StrictAsyncFromTenEffectsExpected = 'LOW' | 'MID' | 0;
|
|
472
|
+
export type PipeAsyncSideEffectStrictFromTenEffects = Expect<
|
|
473
|
+
Equal<StrictAsyncFromTenEffects, StrictAsyncFromTenEffectsExpected>
|
|
474
|
+
>;
|
|
475
|
+
|
|
476
|
+
type StrictAsyncFromTenValue = ValueUnion<StrictAsyncFromTenResolved>;
|
|
477
|
+
type StrictAsyncFromTenValueExpected = number;
|
|
478
|
+
export type PipeAsyncSideEffectStrictFromTenValue = Expect<
|
|
479
|
+
Equal<StrictAsyncFromTenValue, StrictAsyncFromTenValueExpected>
|
|
480
|
+
>;
|
|
481
|
+
|
|
482
|
+
export const strictPipeAsyncSideEffectFromTenResultNoInput = strictPipeAsyncSideEffectFromTen();
|
|
483
|
+
|
|
484
|
+
type StrictAsyncFromTenNoInputResolved = Awaited<typeof strictPipeAsyncSideEffectFromTenResultNoInput>;
|
|
485
|
+
type StrictAsyncFromTenNoInputEffects = EffectUnion<StrictAsyncFromTenNoInputResolved>;
|
|
486
|
+
type StrictAsyncFromTenNoInputEffectsExpected = 'LOW' | 'MID' | 0;
|
|
487
|
+
export type PipeAsyncSideEffectStrictFromTenNoInputEffects = Expect<
|
|
488
|
+
Equal<StrictAsyncFromTenNoInputEffects, StrictAsyncFromTenNoInputEffectsExpected>
|
|
489
|
+
>;
|
|
490
|
+
|
|
491
|
+
type StrictAsyncFromTenNoInputValue = ValueUnion<StrictAsyncFromTenNoInputResolved>;
|
|
492
|
+
type StrictAsyncFromTenNoInputValueExpected = number;
|
|
493
|
+
export type PipeAsyncSideEffectStrictFromTenNoInputValue = Expect<
|
|
494
|
+
Equal<StrictAsyncFromTenNoInputValue, StrictAsyncFromTenNoInputValueExpected>
|
|
495
|
+
>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { FromFn } from './from';
|
|
1
2
|
import SideEffect, { isSideEffect } from './sideEffect';
|
|
2
3
|
|
|
3
4
|
type MaybeSideEffect<T> = T | SideEffect<any>;
|
|
@@ -18,6 +19,9 @@ type Resolve<T> = T extends infer R ? R : never;
|
|
|
18
19
|
type PipeSideEffect<Fns extends UnaryFn<any, any>[]> = (
|
|
19
20
|
input: PipeInput<Fns> | SideEffect<any>
|
|
20
21
|
) => Resolve<PipeOutput<Fns>>;
|
|
22
|
+
type PipeSideEffectFrom<Fns extends [FromFn<any>, ...UnaryFn<any, any>[]]> = (
|
|
23
|
+
input?: PipeInput<Fns> | SideEffect<any>
|
|
24
|
+
) => Resolve<PipeOutput<Fns>>;
|
|
21
25
|
|
|
22
26
|
function pipeSideEffect<R>(ab: ZeroFn<R>): () => MaybeSideEffect<R>;
|
|
23
27
|
function pipeSideEffect<B, R>(ab: ZeroFn<B>, bc: UnaryFn<B, R>): () => MaybeSideEffect<R>;
|
|
@@ -43,6 +47,49 @@ function pipeSideEffect<B, C, D, E, F, R>(
|
|
|
43
47
|
ef: UnaryFn<E, F>,
|
|
44
48
|
fg: UnaryFn<F, R>
|
|
45
49
|
): () => MaybeSideEffect<R>;
|
|
50
|
+
function pipeSideEffect<B, C, D, E, F, G, R>(
|
|
51
|
+
ab: ZeroFn<B>,
|
|
52
|
+
bc: UnaryFn<B, C>,
|
|
53
|
+
cd: UnaryFn<C, D>,
|
|
54
|
+
de: UnaryFn<D, E>,
|
|
55
|
+
ef: UnaryFn<E, F>,
|
|
56
|
+
fg: UnaryFn<F, G>,
|
|
57
|
+
gh: UnaryFn<G, R>
|
|
58
|
+
): () => MaybeSideEffect<R>;
|
|
59
|
+
function pipeSideEffect<B, C, D, E, F, G, H, R>(
|
|
60
|
+
ab: ZeroFn<B>,
|
|
61
|
+
bc: UnaryFn<B, C>,
|
|
62
|
+
cd: UnaryFn<C, D>,
|
|
63
|
+
de: UnaryFn<D, E>,
|
|
64
|
+
ef: UnaryFn<E, F>,
|
|
65
|
+
fg: UnaryFn<F, G>,
|
|
66
|
+
gh: UnaryFn<G, H>,
|
|
67
|
+
hi: UnaryFn<H, R>
|
|
68
|
+
): () => MaybeSideEffect<R>;
|
|
69
|
+
function pipeSideEffect<B, C, D, E, F, G, H, I, R>(
|
|
70
|
+
ab: ZeroFn<B>,
|
|
71
|
+
bc: UnaryFn<B, C>,
|
|
72
|
+
cd: UnaryFn<C, D>,
|
|
73
|
+
de: UnaryFn<D, E>,
|
|
74
|
+
ef: UnaryFn<E, F>,
|
|
75
|
+
fg: UnaryFn<F, G>,
|
|
76
|
+
gh: UnaryFn<G, H>,
|
|
77
|
+
hi: UnaryFn<H, I>,
|
|
78
|
+
ij: UnaryFn<I, R>
|
|
79
|
+
): () => MaybeSideEffect<R>;
|
|
80
|
+
function pipeSideEffect<B, C, D, E, F, G, H, I, J, R>(
|
|
81
|
+
ab: ZeroFn<B>,
|
|
82
|
+
bc: UnaryFn<B, C>,
|
|
83
|
+
cd: UnaryFn<C, D>,
|
|
84
|
+
de: UnaryFn<D, E>,
|
|
85
|
+
ef: UnaryFn<E, F>,
|
|
86
|
+
fg: UnaryFn<F, G>,
|
|
87
|
+
gh: UnaryFn<G, H>,
|
|
88
|
+
hi: UnaryFn<H, I>,
|
|
89
|
+
ij: UnaryFn<I, J>,
|
|
90
|
+
jk: UnaryFn<J, R>
|
|
91
|
+
): () => MaybeSideEffect<R>;
|
|
92
|
+
function pipeSideEffect<Fns extends [FromFn<any>, ...UnaryFn<any, any>[]]>(...funcs: Fns): PipeSideEffectFrom<Fns>;
|
|
46
93
|
function pipeSideEffect<A, R>(ab: UnaryFn<A, R>): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
47
94
|
function pipeSideEffect<A, B, R>(
|
|
48
95
|
ab: UnaryFn<A, B>,
|
|
@@ -74,6 +121,48 @@ function pipeSideEffect<A, B, C, D, E, F, R>(
|
|
|
74
121
|
ef: UnaryFn<E, F>,
|
|
75
122
|
fg: UnaryFn<F, R>
|
|
76
123
|
): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
124
|
+
function pipeSideEffect<A, B, C, D, E, F, G, R>(
|
|
125
|
+
ab: UnaryFn<A, B>,
|
|
126
|
+
bc: UnaryFn<B, C>,
|
|
127
|
+
cd: UnaryFn<C, D>,
|
|
128
|
+
de: UnaryFn<D, E>,
|
|
129
|
+
ef: UnaryFn<E, F>,
|
|
130
|
+
fg: UnaryFn<F, G>,
|
|
131
|
+
gh: UnaryFn<G, R>
|
|
132
|
+
): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
133
|
+
function pipeSideEffect<A, B, C, D, E, F, G, H, R>(
|
|
134
|
+
ab: UnaryFn<A, B>,
|
|
135
|
+
bc: UnaryFn<B, C>,
|
|
136
|
+
cd: UnaryFn<C, D>,
|
|
137
|
+
de: UnaryFn<D, E>,
|
|
138
|
+
ef: UnaryFn<E, F>,
|
|
139
|
+
fg: UnaryFn<F, G>,
|
|
140
|
+
gh: UnaryFn<G, H>,
|
|
141
|
+
hi: UnaryFn<H, R>
|
|
142
|
+
): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
143
|
+
function pipeSideEffect<A, B, C, D, E, F, G, H, I, R>(
|
|
144
|
+
ab: UnaryFn<A, B>,
|
|
145
|
+
bc: UnaryFn<B, C>,
|
|
146
|
+
cd: UnaryFn<C, D>,
|
|
147
|
+
de: UnaryFn<D, E>,
|
|
148
|
+
ef: UnaryFn<E, F>,
|
|
149
|
+
fg: UnaryFn<F, G>,
|
|
150
|
+
gh: UnaryFn<G, H>,
|
|
151
|
+
hi: UnaryFn<H, I>,
|
|
152
|
+
ij: UnaryFn<I, R>
|
|
153
|
+
): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
154
|
+
function pipeSideEffect<A, B, C, D, E, F, G, H, I, J, R>(
|
|
155
|
+
ab: UnaryFn<A, B>,
|
|
156
|
+
bc: UnaryFn<B, C>,
|
|
157
|
+
cd: UnaryFn<C, D>,
|
|
158
|
+
de: UnaryFn<D, E>,
|
|
159
|
+
ef: UnaryFn<E, F>,
|
|
160
|
+
fg: UnaryFn<F, G>,
|
|
161
|
+
gh: UnaryFn<G, H>,
|
|
162
|
+
hi: UnaryFn<H, I>,
|
|
163
|
+
ij: UnaryFn<I, J>,
|
|
164
|
+
jk: UnaryFn<J, R>
|
|
165
|
+
): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
77
166
|
|
|
78
167
|
function pipeSideEffect<Fns extends [UnaryFn<any, any>, ...UnaryFn<any, any>[]]>(...funcs: Fns): PipeSideEffect<Fns>;
|
|
79
168
|
function pipeSideEffect(...funcs: Array<UnaryFn<any, any>>): (input: any) => any;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { FromFn } from './from';
|
|
1
2
|
import SideEffect, { isSideEffect } from './sideEffect';
|
|
2
3
|
|
|
3
4
|
type AnyFn = (...args: any[]) => any;
|
|
@@ -43,6 +44,12 @@ type PipeSideEffectStrictUnary<Fns extends [AnyFn, ...AnyFn[]]> = {
|
|
|
43
44
|
input: PipeInputStrict<Fns> | SideEffect<EIn>
|
|
44
45
|
): Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns> | EIn>>;
|
|
45
46
|
};
|
|
47
|
+
type PipeSideEffectStrictUnaryOptional<Fns extends [AnyFn, ...AnyFn[]]> = {
|
|
48
|
+
(input?: PipeInputStrict<Fns>): Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns>>>;
|
|
49
|
+
<EIn>(
|
|
50
|
+
input?: PipeInputStrict<Fns> | SideEffect<EIn>
|
|
51
|
+
): Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns> | EIn>>;
|
|
52
|
+
};
|
|
46
53
|
|
|
47
54
|
type PipeSideEffectStrict<Fns extends [AnyFn, ...AnyFn[]]> = Fns extends [ZeroFn<any>, ...AnyFn[]]
|
|
48
55
|
? () => Resolve<MaybeSideEffect<PipeValueOutputStrict<Fns>, EffectsOf<Fns>>>
|
|
@@ -97,6 +104,89 @@ function pipeSideEffectStrict<B, C, D, E, F, R>(
|
|
|
97
104
|
UnaryFn<NonSideEffect<E>, F>,
|
|
98
105
|
UnaryFn<NonSideEffect<F>, R>
|
|
99
106
|
]>;
|
|
107
|
+
function pipeSideEffectStrict<B, C, D, E, F, G, R>(
|
|
108
|
+
ab: ZeroFn<B>,
|
|
109
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
110
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
111
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
112
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
113
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
114
|
+
gh: UnaryFn<NonSideEffect<G>, R>
|
|
115
|
+
): PipeSideEffectStrict<[
|
|
116
|
+
ZeroFn<B>,
|
|
117
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
118
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
119
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
120
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
121
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
122
|
+
UnaryFn<NonSideEffect<G>, R>
|
|
123
|
+
]>;
|
|
124
|
+
function pipeSideEffectStrict<B, C, D, E, F, G, H, R>(
|
|
125
|
+
ab: ZeroFn<B>,
|
|
126
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
127
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
128
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
129
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
130
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
131
|
+
gh: UnaryFn<NonSideEffect<G>, H>,
|
|
132
|
+
hi: UnaryFn<NonSideEffect<H>, R>
|
|
133
|
+
): PipeSideEffectStrict<[
|
|
134
|
+
ZeroFn<B>,
|
|
135
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
136
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
137
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
138
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
139
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
140
|
+
UnaryFn<NonSideEffect<G>, H>,
|
|
141
|
+
UnaryFn<NonSideEffect<H>, R>
|
|
142
|
+
]>;
|
|
143
|
+
function pipeSideEffectStrict<B, C, D, E, F, G, H, I, R>(
|
|
144
|
+
ab: ZeroFn<B>,
|
|
145
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
146
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
147
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
148
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
149
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
150
|
+
gh: UnaryFn<NonSideEffect<G>, H>,
|
|
151
|
+
hi: UnaryFn<NonSideEffect<H>, I>,
|
|
152
|
+
ij: UnaryFn<NonSideEffect<I>, R>
|
|
153
|
+
): PipeSideEffectStrict<[
|
|
154
|
+
ZeroFn<B>,
|
|
155
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
156
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
157
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
158
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
159
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
160
|
+
UnaryFn<NonSideEffect<G>, H>,
|
|
161
|
+
UnaryFn<NonSideEffect<H>, I>,
|
|
162
|
+
UnaryFn<NonSideEffect<I>, R>
|
|
163
|
+
]>;
|
|
164
|
+
function pipeSideEffectStrict<B, C, D, E, F, G, H, I, J, R>(
|
|
165
|
+
ab: ZeroFn<B>,
|
|
166
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
167
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
168
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
169
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
170
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
171
|
+
gh: UnaryFn<NonSideEffect<G>, H>,
|
|
172
|
+
hi: UnaryFn<NonSideEffect<H>, I>,
|
|
173
|
+
ij: UnaryFn<NonSideEffect<I>, J>,
|
|
174
|
+
jk: UnaryFn<NonSideEffect<J>, R>
|
|
175
|
+
): PipeSideEffectStrict<[
|
|
176
|
+
ZeroFn<B>,
|
|
177
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
178
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
179
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
180
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
181
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
182
|
+
UnaryFn<NonSideEffect<G>, H>,
|
|
183
|
+
UnaryFn<NonSideEffect<H>, I>,
|
|
184
|
+
UnaryFn<NonSideEffect<I>, J>,
|
|
185
|
+
UnaryFn<NonSideEffect<J>, R>
|
|
186
|
+
]>;
|
|
187
|
+
function pipeSideEffectStrict<Fns extends [FromFn<any>, ...AnyFn[]]>(
|
|
188
|
+
...funcs: Fns
|
|
189
|
+
): PipeSideEffectStrictUnaryOptional<Fns>;
|
|
100
190
|
function pipeSideEffectStrict<A, R>(ab: UnaryFn<A, R>): PipeSideEffectStrict<[UnaryFn<A, R>]>;
|
|
101
191
|
function pipeSideEffectStrict<A, B, R>(
|
|
102
192
|
ab: UnaryFn<A, B>,
|
|
@@ -146,6 +236,86 @@ function pipeSideEffectStrict<A, B, C, D, E, F, R>(
|
|
|
146
236
|
UnaryFn<NonSideEffect<E>, F>,
|
|
147
237
|
UnaryFn<NonSideEffect<F>, R>
|
|
148
238
|
]>;
|
|
239
|
+
function pipeSideEffectStrict<A, B, C, D, E, F, G, R>(
|
|
240
|
+
ab: UnaryFn<A, B>,
|
|
241
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
242
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
243
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
244
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
245
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
246
|
+
gh: UnaryFn<NonSideEffect<G>, R>
|
|
247
|
+
): PipeSideEffectStrict<[
|
|
248
|
+
UnaryFn<A, B>,
|
|
249
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
250
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
251
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
252
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
253
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
254
|
+
UnaryFn<NonSideEffect<G>, R>
|
|
255
|
+
]>;
|
|
256
|
+
function pipeSideEffectStrict<A, B, C, D, E, F, G, H, R>(
|
|
257
|
+
ab: UnaryFn<A, B>,
|
|
258
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
259
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
260
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
261
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
262
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
263
|
+
gh: UnaryFn<NonSideEffect<G>, H>,
|
|
264
|
+
hi: UnaryFn<NonSideEffect<H>, R>
|
|
265
|
+
): PipeSideEffectStrict<[
|
|
266
|
+
UnaryFn<A, B>,
|
|
267
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
268
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
269
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
270
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
271
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
272
|
+
UnaryFn<NonSideEffect<G>, H>,
|
|
273
|
+
UnaryFn<NonSideEffect<H>, R>
|
|
274
|
+
]>;
|
|
275
|
+
function pipeSideEffectStrict<A, B, C, D, E, F, G, H, I, R>(
|
|
276
|
+
ab: UnaryFn<A, B>,
|
|
277
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
278
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
279
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
280
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
281
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
282
|
+
gh: UnaryFn<NonSideEffect<G>, H>,
|
|
283
|
+
hi: UnaryFn<NonSideEffect<H>, I>,
|
|
284
|
+
ij: UnaryFn<NonSideEffect<I>, R>
|
|
285
|
+
): PipeSideEffectStrict<[
|
|
286
|
+
UnaryFn<A, B>,
|
|
287
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
288
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
289
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
290
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
291
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
292
|
+
UnaryFn<NonSideEffect<G>, H>,
|
|
293
|
+
UnaryFn<NonSideEffect<H>, I>,
|
|
294
|
+
UnaryFn<NonSideEffect<I>, R>
|
|
295
|
+
]>;
|
|
296
|
+
function pipeSideEffectStrict<A, B, C, D, E, F, G, H, I, J, R>(
|
|
297
|
+
ab: UnaryFn<A, B>,
|
|
298
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
299
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
300
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
301
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
302
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
303
|
+
gh: UnaryFn<NonSideEffect<G>, H>,
|
|
304
|
+
hi: UnaryFn<NonSideEffect<H>, I>,
|
|
305
|
+
ij: UnaryFn<NonSideEffect<I>, J>,
|
|
306
|
+
jk: UnaryFn<NonSideEffect<J>, R>
|
|
307
|
+
): PipeSideEffectStrict<[
|
|
308
|
+
UnaryFn<A, B>,
|
|
309
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
310
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
311
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
312
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
313
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
314
|
+
UnaryFn<NonSideEffect<G>, H>,
|
|
315
|
+
UnaryFn<NonSideEffect<H>, I>,
|
|
316
|
+
UnaryFn<NonSideEffect<I>, J>,
|
|
317
|
+
UnaryFn<NonSideEffect<J>, R>
|
|
318
|
+
]>;
|
|
149
319
|
|
|
150
320
|
function pipeSideEffectStrict<Fns extends [AnyFn, ...AnyFn[]]>(...funcs: Fns): PipeSideEffectStrict<Fns>;
|
|
151
321
|
function pipeSideEffectStrict(...funcs: Array<(input: any) => any>) {
|