fp-pack 0.2.0 → 0.4.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 +1 -1
- package/dist/fp-pack.umd.js.map +1 -1
- package/dist/implement/async/pipeAsync.d.ts +5 -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 +5 -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 +100 -0
- package/dist/implement/async/pipeAsyncSideEffectStrict.d.ts.map +1 -1
- package/dist/implement/async/pipeAsyncSideEffectStrict.mjs.map +1 -1
- package/dist/implement/composition/pipe.d.ts +10 -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 +109 -0
- package/dist/implement/composition/pipe.type-test.d.ts.map +1 -1
- package/dist/implement/composition/pipeSideEffect.d.ts +10 -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 +100 -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 +2 -2
- package/dist/skills/fp-pack.md +2 -2
- package/package.json +1 -1
- package/src/implement/async/pipeAsync.ts +50 -0
- package/src/implement/async/pipeAsyncSideEffect.ts +50 -0
- package/src/implement/async/pipeAsyncSideEffectStrict.ts +190 -0
- package/src/implement/composition/pipe.ts +100 -0
- package/src/implement/composition/pipe.type-test.ts +342 -0
- package/src/implement/composition/pipeSideEffect.ts +100 -0
- package/src/implement/composition/pipeSideEffectStrict.ts +190 -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';
|
|
@@ -24,6 +25,52 @@ export const purePipe = pipe(
|
|
|
24
25
|
type PurePipeExpected = (input: number) => string;
|
|
25
26
|
export type PipePureIsStrict = Expect<Equal<typeof purePipe, PurePipeExpected>>;
|
|
26
27
|
|
|
28
|
+
export const purePipeSix = pipe(
|
|
29
|
+
(value: number) => value + 1,
|
|
30
|
+
(value) => value * 2,
|
|
31
|
+
(value) => `${value}`,
|
|
32
|
+
(value) => value.length,
|
|
33
|
+
(value) => value + 1,
|
|
34
|
+
(value) => `n:${value}`
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
type PurePipeSixExpected = (input: number) => string;
|
|
38
|
+
export type PipePureSixIsStrict = Expect<Equal<typeof purePipeSix, PurePipeSixExpected>>;
|
|
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
|
+
|
|
27
74
|
export const pipeWithSideEffectInput = pipeSideEffect(
|
|
28
75
|
(value: number) => value + 1,
|
|
29
76
|
(value) => value * 2,
|
|
@@ -35,6 +82,54 @@ export const pipeWithSideEffectValue = pipeWithSideEffectInput(sideEffectInput);
|
|
|
35
82
|
type PipeExpected = (input: number | SideEffect<any>) => string | SideEffect<any>;
|
|
36
83
|
export type PipeAcceptsSideEffectInput = Expect<Equal<typeof pipeWithSideEffectInput, PipeExpected>>;
|
|
37
84
|
|
|
85
|
+
export const pipeSideEffectSix = pipeSideEffect(
|
|
86
|
+
(value: number) => value + 1,
|
|
87
|
+
(value) => value * 2,
|
|
88
|
+
(value) => value + 3,
|
|
89
|
+
(value) => value - 1,
|
|
90
|
+
(value) => value * 2,
|
|
91
|
+
(value) => `n:${value}`
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
type PipeSideEffectSixExpected = (input: number | SideEffect<any>) => string | SideEffect<any>;
|
|
95
|
+
export type PipeSideEffectSixIsStrict = Expect<Equal<typeof pipeSideEffectSix, PipeSideEffectSixExpected>>;
|
|
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
|
+
|
|
38
133
|
export const purePipeAsync = pipeAsync(
|
|
39
134
|
(value: number) => value + 1,
|
|
40
135
|
async (value) => value * 2,
|
|
@@ -44,6 +139,54 @@ export const purePipeAsync = pipeAsync(
|
|
|
44
139
|
type PurePipeAsyncExpected = (input: number) => Promise<string>;
|
|
45
140
|
export type PipeAsyncPureIsStrict = Expect<Equal<typeof purePipeAsync, PurePipeAsyncExpected>>;
|
|
46
141
|
|
|
142
|
+
export const purePipeAsyncSix = pipeAsync(
|
|
143
|
+
(value: number) => value + 1,
|
|
144
|
+
async (value) => value * 2,
|
|
145
|
+
(value) => `${value}`,
|
|
146
|
+
async (value) => value.length,
|
|
147
|
+
(value) => value + 3,
|
|
148
|
+
async (value) => `n:${value}`
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
type PurePipeAsyncSixExpected = (input: number) => Promise<string>;
|
|
152
|
+
export type PipeAsyncPureSixIsStrict = Expect<Equal<typeof purePipeAsyncSix, PurePipeAsyncSixExpected>>;
|
|
153
|
+
|
|
154
|
+
export const purePipeAsyncTen = pipeAsync(
|
|
155
|
+
(value: number) => value + 1,
|
|
156
|
+
async (value) => value * 2,
|
|
157
|
+
(value) => `${value}`,
|
|
158
|
+
async (value) => value.length,
|
|
159
|
+
(value) => value + 3,
|
|
160
|
+
async (value) => value * 2,
|
|
161
|
+
(value) => `${value}`,
|
|
162
|
+
async (value) => value.length,
|
|
163
|
+
(value) => value + 1,
|
|
164
|
+
async (value) => `n:${value}`
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
type PurePipeAsyncTenExpected = (input: number) => Promise<string>;
|
|
168
|
+
export type PipeAsyncPureTenIsStrict = Expect<Equal<typeof purePipeAsyncTen, PurePipeAsyncTenExpected>>;
|
|
169
|
+
|
|
170
|
+
export const pipeAsyncFromTen = pipeAsync(
|
|
171
|
+
from(1),
|
|
172
|
+
async (value) => value + 1,
|
|
173
|
+
(value) => value * 2,
|
|
174
|
+
async (value) => `${value}`,
|
|
175
|
+
(value) => value.padStart(3, '0'),
|
|
176
|
+
async (value) => value.length,
|
|
177
|
+
(value) => value + 1,
|
|
178
|
+
async (value) => `${value}`,
|
|
179
|
+
(value) => value.padStart(4, '0'),
|
|
180
|
+
async (value) => `n:${value}`
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
export const pipeAsyncFromTenValue = pipeAsyncFromTen('input');
|
|
184
|
+
|
|
185
|
+
type PipeAsyncFromTenValueExpected = Promise<string>;
|
|
186
|
+
export type PipeAsyncFromTenValueIsStrict = Expect<
|
|
187
|
+
Equal<typeof pipeAsyncFromTenValue, PipeAsyncFromTenValueExpected>
|
|
188
|
+
>;
|
|
189
|
+
|
|
47
190
|
export const pipeAsyncWithSideEffectInput = pipeAsyncSideEffect(
|
|
48
191
|
(value: number) => value + 1,
|
|
49
192
|
async (value) => value * 2,
|
|
@@ -57,6 +200,58 @@ export type PipeAsyncAcceptsSideEffectInput = Expect<
|
|
|
57
200
|
Equal<typeof pipeAsyncWithSideEffectInput, PipeAsyncExpected>
|
|
58
201
|
>;
|
|
59
202
|
|
|
203
|
+
export const pipeAsyncSideEffectSix = pipeAsyncSideEffect(
|
|
204
|
+
(value: number) => value + 1,
|
|
205
|
+
async (value) => value * 2,
|
|
206
|
+
(value) => value + 3,
|
|
207
|
+
async (value) => value - 1,
|
|
208
|
+
(value) => value * 2,
|
|
209
|
+
async (value) => `n:${value}`
|
|
210
|
+
);
|
|
211
|
+
|
|
212
|
+
type PipeAsyncSideEffectSixExpected = (input: number | SideEffect<any>) => Promise<string | SideEffect<any>>;
|
|
213
|
+
export type PipeAsyncSideEffectSixIsStrict = Expect<
|
|
214
|
+
Equal<typeof pipeAsyncSideEffectSix, PipeAsyncSideEffectSixExpected>
|
|
215
|
+
>;
|
|
216
|
+
|
|
217
|
+
export const pipeAsyncSideEffectTen = pipeAsyncSideEffect(
|
|
218
|
+
(value: number) => value + 1,
|
|
219
|
+
async (value) => value * 2,
|
|
220
|
+
(value) => `${value}`,
|
|
221
|
+
async (value) => value.length,
|
|
222
|
+
(value) => value + 3,
|
|
223
|
+
async (value) => value * 2,
|
|
224
|
+
(value) => `${value}`,
|
|
225
|
+
async (value) => value.length,
|
|
226
|
+
(value) => value + 1,
|
|
227
|
+
async (value) => `n:${value}`
|
|
228
|
+
);
|
|
229
|
+
|
|
230
|
+
type PipeAsyncSideEffectTenExpected = (input: number | SideEffect<any>) => Promise<string | SideEffect<any>>;
|
|
231
|
+
export type PipeAsyncSideEffectTenIsStrict = Expect<
|
|
232
|
+
Equal<typeof pipeAsyncSideEffectTen, PipeAsyncSideEffectTenExpected>
|
|
233
|
+
>;
|
|
234
|
+
|
|
235
|
+
export const pipeAsyncSideEffectFromTen = pipeAsyncSideEffect(
|
|
236
|
+
from(1),
|
|
237
|
+
async (value) => value + 1,
|
|
238
|
+
(value) => value * 2,
|
|
239
|
+
async (value) => `${value}`,
|
|
240
|
+
(value) => value.padStart(3, '0'),
|
|
241
|
+
async (value) => value.length,
|
|
242
|
+
(value) => value + 1,
|
|
243
|
+
async (value) => `${value}`,
|
|
244
|
+
(value) => value.padStart(4, '0'),
|
|
245
|
+
async (value) => `n:${value}`
|
|
246
|
+
);
|
|
247
|
+
|
|
248
|
+
export const pipeAsyncSideEffectFromTenValue = pipeAsyncSideEffectFromTen('input');
|
|
249
|
+
|
|
250
|
+
type PipeAsyncSideEffectFromTenValueExpected = Promise<string | SideEffect<any>>;
|
|
251
|
+
export type PipeAsyncSideEffectFromTenValueIsStrict = Expect<
|
|
252
|
+
Equal<typeof pipeAsyncSideEffectFromTenValue, PipeAsyncSideEffectFromTenValueExpected>
|
|
253
|
+
>;
|
|
254
|
+
|
|
60
255
|
export const strictPipeSideEffect = pipeSideEffectStrict(
|
|
61
256
|
(value: number) => value + 1,
|
|
62
257
|
(value) => (value > 1 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
@@ -81,6 +276,73 @@ export type PipeSideEffectStrictInputEffects = Expect<
|
|
|
81
276
|
Equal<StrictSideEffectInputEffects, StrictSideEffectInputEffectsExpected>
|
|
82
277
|
>;
|
|
83
278
|
|
|
279
|
+
export const strictPipeSideEffectSix = pipeSideEffectStrict(
|
|
280
|
+
(value: number) => value + 1,
|
|
281
|
+
(value) => (value > 2 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
282
|
+
(value) => value + 1,
|
|
283
|
+
(value) => (value > 10 ? value : SideEffect.of(() => 'SMALL' as const)),
|
|
284
|
+
(value) => value * 2,
|
|
285
|
+
(value) => (value > 40 ? value : SideEffect.of(() => 0 as const))
|
|
286
|
+
);
|
|
287
|
+
|
|
288
|
+
export const strictPipeSideEffectSixResult = strictPipeSideEffectSix(1);
|
|
289
|
+
|
|
290
|
+
type StrictSixEffects = EffectUnion<typeof strictPipeSideEffectSixResult>;
|
|
291
|
+
type StrictSixEffectsExpected = 'LOW' | 'SMALL' | 0;
|
|
292
|
+
export type PipeSideEffectStrictSixEffects = Expect<Equal<StrictSixEffects, StrictSixEffectsExpected>>;
|
|
293
|
+
|
|
294
|
+
type StrictSixValue = ValueUnion<typeof strictPipeSideEffectSixResult>;
|
|
295
|
+
type StrictSixValueExpected = number;
|
|
296
|
+
export type PipeSideEffectStrictSixValue = Expect<Equal<StrictSixValue, StrictSixValueExpected>>;
|
|
297
|
+
|
|
298
|
+
export const strictPipeSideEffectTen = pipeSideEffectStrict(
|
|
299
|
+
(value: number) => value + 1,
|
|
300
|
+
(value) => (value > 1 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
301
|
+
(value) => value + 1,
|
|
302
|
+
(value) => (value > 3 ? value : SideEffect.of(() => 'MID' as const)),
|
|
303
|
+
(value) => value * 2,
|
|
304
|
+
(value) => value + 1,
|
|
305
|
+
(value) => (value > 10 ? value : SideEffect.of(() => 0 as const)),
|
|
306
|
+
(value) => value + 1,
|
|
307
|
+
(value) => value * 2,
|
|
308
|
+
(value) => value + 1
|
|
309
|
+
);
|
|
310
|
+
|
|
311
|
+
export const strictPipeSideEffectTenResult = strictPipeSideEffectTen(1);
|
|
312
|
+
|
|
313
|
+
type StrictTenEffects = EffectUnion<typeof strictPipeSideEffectTenResult>;
|
|
314
|
+
type StrictTenEffectsExpected = 'LOW' | 'MID' | 0;
|
|
315
|
+
export type PipeSideEffectStrictTenEffects = Expect<Equal<StrictTenEffects, StrictTenEffectsExpected>>;
|
|
316
|
+
|
|
317
|
+
type StrictTenValue = ValueUnion<typeof strictPipeSideEffectTenResult>;
|
|
318
|
+
type StrictTenValueExpected = number;
|
|
319
|
+
export type PipeSideEffectStrictTenValue = Expect<Equal<StrictTenValue, StrictTenValueExpected>>;
|
|
320
|
+
|
|
321
|
+
export const strictPipeSideEffectFromTen = pipeSideEffectStrict(
|
|
322
|
+
from(1),
|
|
323
|
+
(value) => value + 1,
|
|
324
|
+
(value) => (value > 1 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
325
|
+
(value) => value * 2,
|
|
326
|
+
(value) => (value > 4 ? value : SideEffect.of(() => 'MID' as const)),
|
|
327
|
+
(value) => value + 1,
|
|
328
|
+
(value) => value * 2,
|
|
329
|
+
(value) => (value > 20 ? value : SideEffect.of(() => 0 as const)),
|
|
330
|
+
(value) => value + 1,
|
|
331
|
+
(value) => value * 2
|
|
332
|
+
);
|
|
333
|
+
|
|
334
|
+
export const strictPipeSideEffectFromTenResult = strictPipeSideEffectFromTen('input');
|
|
335
|
+
|
|
336
|
+
type StrictFromTenEffects = EffectUnion<typeof strictPipeSideEffectFromTenResult>;
|
|
337
|
+
type StrictFromTenEffectsExpected = 'LOW' | 'MID' | 0;
|
|
338
|
+
export type PipeSideEffectStrictFromTenEffects = Expect<
|
|
339
|
+
Equal<StrictFromTenEffects, StrictFromTenEffectsExpected>
|
|
340
|
+
>;
|
|
341
|
+
|
|
342
|
+
type StrictFromTenValue = ValueUnion<typeof strictPipeSideEffectFromTenResult>;
|
|
343
|
+
type StrictFromTenValueExpected = number;
|
|
344
|
+
export type PipeSideEffectStrictFromTenValue = Expect<Equal<StrictFromTenValue, StrictFromTenValueExpected>>;
|
|
345
|
+
|
|
84
346
|
export const strictPipeAsyncSideEffect = pipeAsyncSideEffectStrict(
|
|
85
347
|
(value: number) => value + 1,
|
|
86
348
|
async (value) => (value > 1 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
@@ -101,3 +363,83 @@ type StrictPipeAsyncValueExpected = number;
|
|
|
101
363
|
export type PipeAsyncSideEffectStrictValue = Expect<
|
|
102
364
|
Equal<StrictPipeAsyncValue, StrictPipeAsyncValueExpected>
|
|
103
365
|
>;
|
|
366
|
+
|
|
367
|
+
export const strictPipeAsyncSideEffectSix = pipeAsyncSideEffectStrict(
|
|
368
|
+
(value: number) => value + 1,
|
|
369
|
+
async (value) => (value > 2 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
370
|
+
(value) => value + 1,
|
|
371
|
+
async (value) => (value > 10 ? value : SideEffect.of(() => 'SMALL' as const)),
|
|
372
|
+
(value) => value * 2,
|
|
373
|
+
async (value) => (value > 40 ? value : SideEffect.of(() => 0 as const))
|
|
374
|
+
);
|
|
375
|
+
|
|
376
|
+
export const strictPipeAsyncSideEffectSixResult = strictPipeAsyncSideEffectSix(1);
|
|
377
|
+
|
|
378
|
+
type StrictAsyncSixResolved = Awaited<typeof strictPipeAsyncSideEffectSixResult>;
|
|
379
|
+
type StrictAsyncSixEffects = EffectUnion<StrictAsyncSixResolved>;
|
|
380
|
+
type StrictAsyncSixEffectsExpected = 'LOW' | 'SMALL' | 0;
|
|
381
|
+
export type PipeAsyncSideEffectStrictSixEffects = Expect<
|
|
382
|
+
Equal<StrictAsyncSixEffects, StrictAsyncSixEffectsExpected>
|
|
383
|
+
>;
|
|
384
|
+
|
|
385
|
+
type StrictAsyncSixValue = ValueUnion<StrictAsyncSixResolved>;
|
|
386
|
+
type StrictAsyncSixValueExpected = number;
|
|
387
|
+
export type PipeAsyncSideEffectStrictSixValue = Expect<
|
|
388
|
+
Equal<StrictAsyncSixValue, StrictAsyncSixValueExpected>
|
|
389
|
+
>;
|
|
390
|
+
|
|
391
|
+
export const strictPipeAsyncSideEffectTen = pipeAsyncSideEffectStrict(
|
|
392
|
+
(value: number) => value + 1,
|
|
393
|
+
async (value) => (value > 1 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
394
|
+
(value) => value + 1,
|
|
395
|
+
async (value) => (value > 3 ? value : SideEffect.of(() => 'MID' as const)),
|
|
396
|
+
(value) => value * 2,
|
|
397
|
+
async (value) => value + 1,
|
|
398
|
+
(value) => (value > 10 ? value : SideEffect.of(() => 0 as const)),
|
|
399
|
+
async (value) => value + 1,
|
|
400
|
+
(value) => value * 2,
|
|
401
|
+
async (value) => value + 1
|
|
402
|
+
);
|
|
403
|
+
|
|
404
|
+
export const strictPipeAsyncSideEffectTenResult = strictPipeAsyncSideEffectTen(1);
|
|
405
|
+
|
|
406
|
+
type StrictAsyncTenResolved = Awaited<typeof strictPipeAsyncSideEffectTenResult>;
|
|
407
|
+
type StrictAsyncTenEffects = EffectUnion<StrictAsyncTenResolved>;
|
|
408
|
+
type StrictAsyncTenEffectsExpected = 'LOW' | 'MID' | 0;
|
|
409
|
+
export type PipeAsyncSideEffectStrictTenEffects = Expect<
|
|
410
|
+
Equal<StrictAsyncTenEffects, StrictAsyncTenEffectsExpected>
|
|
411
|
+
>;
|
|
412
|
+
|
|
413
|
+
type StrictAsyncTenValue = ValueUnion<StrictAsyncTenResolved>;
|
|
414
|
+
type StrictAsyncTenValueExpected = number;
|
|
415
|
+
export type PipeAsyncSideEffectStrictTenValue = Expect<
|
|
416
|
+
Equal<StrictAsyncTenValue, StrictAsyncTenValueExpected>
|
|
417
|
+
>;
|
|
418
|
+
|
|
419
|
+
export const strictPipeAsyncSideEffectFromTen = pipeAsyncSideEffectStrict(
|
|
420
|
+
from(1),
|
|
421
|
+
async (value) => value + 1,
|
|
422
|
+
(value) => (value > 1 ? value : SideEffect.of(() => 'LOW' as const)),
|
|
423
|
+
async (value) => value * 2,
|
|
424
|
+
(value) => (value > 4 ? value : SideEffect.of(() => 'MID' as const)),
|
|
425
|
+
async (value) => value + 1,
|
|
426
|
+
(value) => value * 2,
|
|
427
|
+
async (value) => (value > 20 ? value : SideEffect.of(() => 0 as const)),
|
|
428
|
+
(value) => value + 1,
|
|
429
|
+
async (value) => value * 2
|
|
430
|
+
);
|
|
431
|
+
|
|
432
|
+
export const strictPipeAsyncSideEffectFromTenResult = strictPipeAsyncSideEffectFromTen('input');
|
|
433
|
+
|
|
434
|
+
type StrictAsyncFromTenResolved = Awaited<typeof strictPipeAsyncSideEffectFromTenResult>;
|
|
435
|
+
type StrictAsyncFromTenEffects = EffectUnion<StrictAsyncFromTenResolved>;
|
|
436
|
+
type StrictAsyncFromTenEffectsExpected = 'LOW' | 'MID' | 0;
|
|
437
|
+
export type PipeAsyncSideEffectStrictFromTenEffects = Expect<
|
|
438
|
+
Equal<StrictAsyncFromTenEffects, StrictAsyncFromTenEffectsExpected>
|
|
439
|
+
>;
|
|
440
|
+
|
|
441
|
+
type StrictAsyncFromTenValue = ValueUnion<StrictAsyncFromTenResolved>;
|
|
442
|
+
type StrictAsyncFromTenValueExpected = number;
|
|
443
|
+
export type PipeAsyncSideEffectStrictFromTenValue = Expect<
|
|
444
|
+
Equal<StrictAsyncFromTenValue, StrictAsyncFromTenValueExpected>
|
|
445
|
+
>;
|
|
@@ -35,6 +35,56 @@ function pipeSideEffect<B, C, D, E, R>(
|
|
|
35
35
|
de: UnaryFn<D, E>,
|
|
36
36
|
ef: UnaryFn<E, R>
|
|
37
37
|
): () => MaybeSideEffect<R>;
|
|
38
|
+
function pipeSideEffect<B, C, D, E, F, R>(
|
|
39
|
+
ab: ZeroFn<B>,
|
|
40
|
+
bc: UnaryFn<B, C>,
|
|
41
|
+
cd: UnaryFn<C, D>,
|
|
42
|
+
de: UnaryFn<D, E>,
|
|
43
|
+
ef: UnaryFn<E, F>,
|
|
44
|
+
fg: UnaryFn<F, R>
|
|
45
|
+
): () => MaybeSideEffect<R>;
|
|
46
|
+
function pipeSideEffect<B, C, D, E, F, G, R>(
|
|
47
|
+
ab: ZeroFn<B>,
|
|
48
|
+
bc: UnaryFn<B, C>,
|
|
49
|
+
cd: UnaryFn<C, D>,
|
|
50
|
+
de: UnaryFn<D, E>,
|
|
51
|
+
ef: UnaryFn<E, F>,
|
|
52
|
+
fg: UnaryFn<F, G>,
|
|
53
|
+
gh: UnaryFn<G, R>
|
|
54
|
+
): () => MaybeSideEffect<R>;
|
|
55
|
+
function pipeSideEffect<B, C, D, E, F, G, H, R>(
|
|
56
|
+
ab: ZeroFn<B>,
|
|
57
|
+
bc: UnaryFn<B, C>,
|
|
58
|
+
cd: UnaryFn<C, D>,
|
|
59
|
+
de: UnaryFn<D, E>,
|
|
60
|
+
ef: UnaryFn<E, F>,
|
|
61
|
+
fg: UnaryFn<F, G>,
|
|
62
|
+
gh: UnaryFn<G, H>,
|
|
63
|
+
hi: UnaryFn<H, R>
|
|
64
|
+
): () => MaybeSideEffect<R>;
|
|
65
|
+
function pipeSideEffect<B, C, D, E, F, G, H, I, R>(
|
|
66
|
+
ab: ZeroFn<B>,
|
|
67
|
+
bc: UnaryFn<B, C>,
|
|
68
|
+
cd: UnaryFn<C, D>,
|
|
69
|
+
de: UnaryFn<D, E>,
|
|
70
|
+
ef: UnaryFn<E, F>,
|
|
71
|
+
fg: UnaryFn<F, G>,
|
|
72
|
+
gh: UnaryFn<G, H>,
|
|
73
|
+
hi: UnaryFn<H, I>,
|
|
74
|
+
ij: UnaryFn<I, R>
|
|
75
|
+
): () => MaybeSideEffect<R>;
|
|
76
|
+
function pipeSideEffect<B, C, D, E, F, G, H, I, J, R>(
|
|
77
|
+
ab: ZeroFn<B>,
|
|
78
|
+
bc: UnaryFn<B, C>,
|
|
79
|
+
cd: UnaryFn<C, D>,
|
|
80
|
+
de: UnaryFn<D, E>,
|
|
81
|
+
ef: UnaryFn<E, F>,
|
|
82
|
+
fg: UnaryFn<F, G>,
|
|
83
|
+
gh: UnaryFn<G, H>,
|
|
84
|
+
hi: UnaryFn<H, I>,
|
|
85
|
+
ij: UnaryFn<I, J>,
|
|
86
|
+
jk: UnaryFn<J, R>
|
|
87
|
+
): () => MaybeSideEffect<R>;
|
|
38
88
|
function pipeSideEffect<A, R>(ab: UnaryFn<A, R>): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
39
89
|
function pipeSideEffect<A, B, R>(
|
|
40
90
|
ab: UnaryFn<A, B>,
|
|
@@ -58,6 +108,56 @@ function pipeSideEffect<A, B, C, D, E, R>(
|
|
|
58
108
|
de: UnaryFn<D, E>,
|
|
59
109
|
ef: UnaryFn<E, R>
|
|
60
110
|
): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
111
|
+
function pipeSideEffect<A, B, C, D, E, F, R>(
|
|
112
|
+
ab: UnaryFn<A, B>,
|
|
113
|
+
bc: UnaryFn<B, C>,
|
|
114
|
+
cd: UnaryFn<C, D>,
|
|
115
|
+
de: UnaryFn<D, E>,
|
|
116
|
+
ef: UnaryFn<E, F>,
|
|
117
|
+
fg: UnaryFn<F, R>
|
|
118
|
+
): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
119
|
+
function pipeSideEffect<A, B, C, D, E, F, G, R>(
|
|
120
|
+
ab: UnaryFn<A, B>,
|
|
121
|
+
bc: UnaryFn<B, C>,
|
|
122
|
+
cd: UnaryFn<C, D>,
|
|
123
|
+
de: UnaryFn<D, E>,
|
|
124
|
+
ef: UnaryFn<E, F>,
|
|
125
|
+
fg: UnaryFn<F, G>,
|
|
126
|
+
gh: UnaryFn<G, R>
|
|
127
|
+
): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
128
|
+
function pipeSideEffect<A, B, C, D, E, F, G, H, R>(
|
|
129
|
+
ab: UnaryFn<A, B>,
|
|
130
|
+
bc: UnaryFn<B, C>,
|
|
131
|
+
cd: UnaryFn<C, D>,
|
|
132
|
+
de: UnaryFn<D, E>,
|
|
133
|
+
ef: UnaryFn<E, F>,
|
|
134
|
+
fg: UnaryFn<F, G>,
|
|
135
|
+
gh: UnaryFn<G, H>,
|
|
136
|
+
hi: UnaryFn<H, R>
|
|
137
|
+
): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
138
|
+
function pipeSideEffect<A, B, C, D, E, F, G, H, I, R>(
|
|
139
|
+
ab: UnaryFn<A, B>,
|
|
140
|
+
bc: UnaryFn<B, C>,
|
|
141
|
+
cd: UnaryFn<C, D>,
|
|
142
|
+
de: UnaryFn<D, E>,
|
|
143
|
+
ef: UnaryFn<E, F>,
|
|
144
|
+
fg: UnaryFn<F, G>,
|
|
145
|
+
gh: UnaryFn<G, H>,
|
|
146
|
+
hi: UnaryFn<H, I>,
|
|
147
|
+
ij: UnaryFn<I, R>
|
|
148
|
+
): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
149
|
+
function pipeSideEffect<A, B, C, D, E, F, G, H, I, J, R>(
|
|
150
|
+
ab: UnaryFn<A, B>,
|
|
151
|
+
bc: UnaryFn<B, C>,
|
|
152
|
+
cd: UnaryFn<C, D>,
|
|
153
|
+
de: UnaryFn<D, E>,
|
|
154
|
+
ef: UnaryFn<E, F>,
|
|
155
|
+
fg: UnaryFn<F, G>,
|
|
156
|
+
gh: UnaryFn<G, H>,
|
|
157
|
+
hi: UnaryFn<H, I>,
|
|
158
|
+
ij: UnaryFn<I, J>,
|
|
159
|
+
jk: UnaryFn<J, R>
|
|
160
|
+
): (a: A | SideEffect<any>) => MaybeSideEffect<R>;
|
|
61
161
|
|
|
62
162
|
function pipeSideEffect<Fns extends [UnaryFn<any, any>, ...UnaryFn<any, any>[]]>(...funcs: Fns): PipeSideEffect<Fns>;
|
|
63
163
|
function pipeSideEffect(...funcs: Array<UnaryFn<any, any>>): (input: any) => any;
|
|
@@ -82,6 +82,101 @@ function pipeSideEffectStrict<B, C, D, E, R>(
|
|
|
82
82
|
UnaryFn<NonSideEffect<D>, E>,
|
|
83
83
|
UnaryFn<NonSideEffect<E>, R>
|
|
84
84
|
]>;
|
|
85
|
+
function pipeSideEffectStrict<B, C, D, E, F, R>(
|
|
86
|
+
ab: ZeroFn<B>,
|
|
87
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
88
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
89
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
90
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
91
|
+
fg: UnaryFn<NonSideEffect<F>, R>
|
|
92
|
+
): PipeSideEffectStrict<[
|
|
93
|
+
ZeroFn<B>,
|
|
94
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
95
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
96
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
97
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
98
|
+
UnaryFn<NonSideEffect<F>, R>
|
|
99
|
+
]>;
|
|
100
|
+
function pipeSideEffectStrict<B, C, D, E, F, G, R>(
|
|
101
|
+
ab: ZeroFn<B>,
|
|
102
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
103
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
104
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
105
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
106
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
107
|
+
gh: UnaryFn<NonSideEffect<G>, R>
|
|
108
|
+
): PipeSideEffectStrict<[
|
|
109
|
+
ZeroFn<B>,
|
|
110
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
111
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
112
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
113
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
114
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
115
|
+
UnaryFn<NonSideEffect<G>, R>
|
|
116
|
+
]>;
|
|
117
|
+
function pipeSideEffectStrict<B, C, D, E, F, G, H, R>(
|
|
118
|
+
ab: ZeroFn<B>,
|
|
119
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
120
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
121
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
122
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
123
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
124
|
+
gh: UnaryFn<NonSideEffect<G>, H>,
|
|
125
|
+
hi: UnaryFn<NonSideEffect<H>, R>
|
|
126
|
+
): PipeSideEffectStrict<[
|
|
127
|
+
ZeroFn<B>,
|
|
128
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
129
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
130
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
131
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
132
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
133
|
+
UnaryFn<NonSideEffect<G>, H>,
|
|
134
|
+
UnaryFn<NonSideEffect<H>, R>
|
|
135
|
+
]>;
|
|
136
|
+
function pipeSideEffectStrict<B, C, D, E, F, G, H, I, R>(
|
|
137
|
+
ab: ZeroFn<B>,
|
|
138
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
139
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
140
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
141
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
142
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
143
|
+
gh: UnaryFn<NonSideEffect<G>, H>,
|
|
144
|
+
hi: UnaryFn<NonSideEffect<H>, I>,
|
|
145
|
+
ij: UnaryFn<NonSideEffect<I>, R>
|
|
146
|
+
): PipeSideEffectStrict<[
|
|
147
|
+
ZeroFn<B>,
|
|
148
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
149
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
150
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
151
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
152
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
153
|
+
UnaryFn<NonSideEffect<G>, H>,
|
|
154
|
+
UnaryFn<NonSideEffect<H>, I>,
|
|
155
|
+
UnaryFn<NonSideEffect<I>, R>
|
|
156
|
+
]>;
|
|
157
|
+
function pipeSideEffectStrict<B, C, D, E, F, G, H, I, J, R>(
|
|
158
|
+
ab: ZeroFn<B>,
|
|
159
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
160
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
161
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
162
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
163
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
164
|
+
gh: UnaryFn<NonSideEffect<G>, H>,
|
|
165
|
+
hi: UnaryFn<NonSideEffect<H>, I>,
|
|
166
|
+
ij: UnaryFn<NonSideEffect<I>, J>,
|
|
167
|
+
jk: UnaryFn<NonSideEffect<J>, R>
|
|
168
|
+
): PipeSideEffectStrict<[
|
|
169
|
+
ZeroFn<B>,
|
|
170
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
171
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
172
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
173
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
174
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
175
|
+
UnaryFn<NonSideEffect<G>, H>,
|
|
176
|
+
UnaryFn<NonSideEffect<H>, I>,
|
|
177
|
+
UnaryFn<NonSideEffect<I>, J>,
|
|
178
|
+
UnaryFn<NonSideEffect<J>, R>
|
|
179
|
+
]>;
|
|
85
180
|
function pipeSideEffectStrict<A, R>(ab: UnaryFn<A, R>): PipeSideEffectStrict<[UnaryFn<A, R>]>;
|
|
86
181
|
function pipeSideEffectStrict<A, B, R>(
|
|
87
182
|
ab: UnaryFn<A, B>,
|
|
@@ -116,6 +211,101 @@ function pipeSideEffectStrict<A, B, C, D, E, R>(
|
|
|
116
211
|
UnaryFn<NonSideEffect<D>, E>,
|
|
117
212
|
UnaryFn<NonSideEffect<E>, R>
|
|
118
213
|
]>;
|
|
214
|
+
function pipeSideEffectStrict<A, B, C, D, E, F, R>(
|
|
215
|
+
ab: UnaryFn<A, B>,
|
|
216
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
217
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
218
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
219
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
220
|
+
fg: UnaryFn<NonSideEffect<F>, R>
|
|
221
|
+
): PipeSideEffectStrict<[
|
|
222
|
+
UnaryFn<A, B>,
|
|
223
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
224
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
225
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
226
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
227
|
+
UnaryFn<NonSideEffect<F>, R>
|
|
228
|
+
]>;
|
|
229
|
+
function pipeSideEffectStrict<A, B, C, D, E, F, G, R>(
|
|
230
|
+
ab: UnaryFn<A, B>,
|
|
231
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
232
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
233
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
234
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
235
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
236
|
+
gh: UnaryFn<NonSideEffect<G>, R>
|
|
237
|
+
): PipeSideEffectStrict<[
|
|
238
|
+
UnaryFn<A, B>,
|
|
239
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
240
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
241
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
242
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
243
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
244
|
+
UnaryFn<NonSideEffect<G>, R>
|
|
245
|
+
]>;
|
|
246
|
+
function pipeSideEffectStrict<A, B, C, D, E, F, G, H, R>(
|
|
247
|
+
ab: UnaryFn<A, B>,
|
|
248
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
249
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
250
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
251
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
252
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
253
|
+
gh: UnaryFn<NonSideEffect<G>, H>,
|
|
254
|
+
hi: UnaryFn<NonSideEffect<H>, R>
|
|
255
|
+
): PipeSideEffectStrict<[
|
|
256
|
+
UnaryFn<A, B>,
|
|
257
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
258
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
259
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
260
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
261
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
262
|
+
UnaryFn<NonSideEffect<G>, H>,
|
|
263
|
+
UnaryFn<NonSideEffect<H>, R>
|
|
264
|
+
]>;
|
|
265
|
+
function pipeSideEffectStrict<A, B, C, D, E, F, G, H, I, R>(
|
|
266
|
+
ab: UnaryFn<A, B>,
|
|
267
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
268
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
269
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
270
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
271
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
272
|
+
gh: UnaryFn<NonSideEffect<G>, H>,
|
|
273
|
+
hi: UnaryFn<NonSideEffect<H>, I>,
|
|
274
|
+
ij: UnaryFn<NonSideEffect<I>, R>
|
|
275
|
+
): PipeSideEffectStrict<[
|
|
276
|
+
UnaryFn<A, B>,
|
|
277
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
278
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
279
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
280
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
281
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
282
|
+
UnaryFn<NonSideEffect<G>, H>,
|
|
283
|
+
UnaryFn<NonSideEffect<H>, I>,
|
|
284
|
+
UnaryFn<NonSideEffect<I>, R>
|
|
285
|
+
]>;
|
|
286
|
+
function pipeSideEffectStrict<A, B, C, D, E, F, G, H, I, J, R>(
|
|
287
|
+
ab: UnaryFn<A, B>,
|
|
288
|
+
bc: UnaryFn<NonSideEffect<B>, C>,
|
|
289
|
+
cd: UnaryFn<NonSideEffect<C>, D>,
|
|
290
|
+
de: UnaryFn<NonSideEffect<D>, E>,
|
|
291
|
+
ef: UnaryFn<NonSideEffect<E>, F>,
|
|
292
|
+
fg: UnaryFn<NonSideEffect<F>, G>,
|
|
293
|
+
gh: UnaryFn<NonSideEffect<G>, H>,
|
|
294
|
+
hi: UnaryFn<NonSideEffect<H>, I>,
|
|
295
|
+
ij: UnaryFn<NonSideEffect<I>, J>,
|
|
296
|
+
jk: UnaryFn<NonSideEffect<J>, R>
|
|
297
|
+
): PipeSideEffectStrict<[
|
|
298
|
+
UnaryFn<A, B>,
|
|
299
|
+
UnaryFn<NonSideEffect<B>, C>,
|
|
300
|
+
UnaryFn<NonSideEffect<C>, D>,
|
|
301
|
+
UnaryFn<NonSideEffect<D>, E>,
|
|
302
|
+
UnaryFn<NonSideEffect<E>, F>,
|
|
303
|
+
UnaryFn<NonSideEffect<F>, G>,
|
|
304
|
+
UnaryFn<NonSideEffect<G>, H>,
|
|
305
|
+
UnaryFn<NonSideEffect<H>, I>,
|
|
306
|
+
UnaryFn<NonSideEffect<I>, J>,
|
|
307
|
+
UnaryFn<NonSideEffect<J>, R>
|
|
308
|
+
]>;
|
|
119
309
|
|
|
120
310
|
function pipeSideEffectStrict<Fns extends [AnyFn, ...AnyFn[]]>(...funcs: Fns): PipeSideEffectStrict<Fns>;
|
|
121
311
|
function pipeSideEffectStrict(...funcs: Array<(input: any) => any>) {
|