pure-effect 0.13.0 → 0.14.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.
Files changed (5) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +259 -113
  3. package/index.d.ts +1118 -134
  4. package/index.js +647 -156
  5. package/package.json +3 -1
package/index.d.ts CHANGED
@@ -50,28 +50,58 @@ export type RetryOptions = {
50
50
  };
51
51
 
52
52
  /**
53
- * `E` is the error the node contributes to its pipeline, which for a Retry is the exhaustion failure:
54
- * the interpreter never lets an inner attempt's error escape unwrapped, so the wrapped tree's own
55
- * error type is consumed by the retry loop rather than exposed here.
53
+ * `E` is the error the node contributes to its pipeline. A Retry contributes two kinds: an abort the
54
+ * wrapped tree returned, which is not retried and leaves unwrapped, and the exhaustion failure that
55
+ * follows an I/O fault the retry loop could not get past.
56
56
  */
57
57
  export type RetryState<T, E = unknown, Ctx = unknown> = {
58
58
  type: 'Retry';
59
59
  effect: Effect<T, any, Ctx>;
60
- options: RetryOptions & { onExhausted?: (error: RetryExhaustedError<any>) => Effect<T, any, Ctx> };
60
+ options: RetryOptions & { onExhausted?: (error: RetryExhaustedError) => Effect<T, any, Ctx> };
61
61
  next(value: T): Effect<T, E, Ctx>;
62
62
  initialInput?: unknown;
63
63
  };
64
64
 
65
- export type RetryExhaustedError<E = unknown> = {
65
+ /**
66
+ * The error a `Retry` fails with once every attempt has hit an I/O fault. `lastError` is what the last
67
+ * attempt threw: a Command's function throwing, or a nested `Retry` running out. It is never a `Failure`
68
+ * a step returned, since that is an abort and is not retried, so the wrapped tree's error type cannot
69
+ * reach it. Nothing declares what a function throws, so `Retry` leaves `Thrown` as `unknown`; pass it
70
+ * only to annotate a value whose thrown type you already know.
71
+ */
72
+ export type RetryExhaustedError<Thrown = unknown> = {
66
73
  retryExhausted: true;
67
- lastError: E;
74
+ lastError: Thrown;
68
75
  attempts: number;
69
76
  };
70
77
 
71
- export type ParallelState<T extends readonly unknown[], R, E = unknown, Ctx = unknown> = {
78
+ export type ParallelOptions = {
79
+ /** Most branches in flight at once. Results and paths stay in array order regardless. */
80
+ limit?: number;
81
+ /** Hand every branch's outcome to `next` instead of failing on the first one. */
82
+ settled?: boolean;
83
+ };
84
+
85
+ /** What a settled `Parallel` hands to `next`: one outcome per branch, in array order. */
86
+ export type ParallelOutcomes<T extends readonly unknown[], E> = {
87
+ [K in keyof T]: SuccessState<T[K]> | FailureState<E>;
88
+ };
89
+
90
+ /**
91
+ * `V` is what `next` receives, which is the branch values normally and the branch outcomes under
92
+ * `settled`. It defaults to `T`, so every non-settled use reads as it always did.
93
+ */
94
+ export type ParallelState<
95
+ T extends readonly unknown[],
96
+ R,
97
+ E = unknown,
98
+ Ctx = unknown,
99
+ V extends readonly unknown[] = T
100
+ > = {
72
101
  type: 'Parallel';
73
102
  effects: { [K in keyof T]: Effect<T[K], E, Ctx> };
74
- next(values: [...T]): Effect<R, E, Ctx>;
103
+ next(values: [...V]): Effect<R, E, Ctx>;
104
+ options?: ParallelOptions;
75
105
  initialInput?: unknown;
76
106
  };
77
107
 
@@ -92,7 +122,17 @@ export declare function Failure<E = unknown>(error: E, initialInput?: unknown):
92
122
  *
93
123
  * A `meta.name` becomes this Command's identity, which keeps it independent of how `cmd` was declared
94
124
  * and immune to minification. Without one the identity falls back to `cmd.name`, then to 'anonymous'.
125
+ *
126
+ * The first overload is the default `next`, where the value is the function's result. Without it, a
127
+ * `Command(fn)` inside a step with an annotated return type had its value type inferred from the
128
+ * annotation, as `unknown`, rather than from `fn`, and `Retry(Command(fn))` failed to compile there.
95
129
  */
130
+ export declare function Command<R, E = unknown, Ctx = unknown>(
131
+ cmd: (signal?: AbortSignal) => Promise<R> | R,
132
+ next?: undefined,
133
+ meta?: CommandMeta
134
+ ): CommandState<R, R, E, Ctx>;
135
+
96
136
  export declare function Command<R, T = R, E = unknown, Ctx = unknown>(
97
137
  cmd: (signal?: AbortSignal) => Promise<R> | R,
98
138
  next?: (result: R) => Effect<T, E, Ctx>,
@@ -106,125 +146,897 @@ export declare function Ask<T, E = unknown, Ctx = unknown>(
106
146
  /**
107
147
  * With `onExhausted`, the exhaustion failure never escapes: the fallback Effect runs instead, its
108
148
  * success feeds `next`, and its failure propagates unwrapped, so the node's declared error is the
109
- * fallback's own error type. `onExhausted` is a per-use option only; the global `retry` defaults in
110
- * `EffectConfiguration` deliberately cannot carry one.
149
+ * fallback's own error type alongside `E`, since an abort the wrapped tree returned reaches neither
150
+ * the retry loop nor the fallback and leaves as itself. `onExhausted` is a per-use option, and so is every other retry
151
+ * option: there are no configured defaults for one to be carried by.
111
152
  */
112
153
  export declare function Retry<T, E = unknown, E2 = unknown, Ctx = unknown>(
113
154
  effect: Effect<T, E, Ctx>,
114
- options: RetryOptions & { onExhausted: (error: RetryExhaustedError<E>) => Effect<T, E2, Ctx> }
115
- ): RetryState<T, E2, Ctx>;
155
+ options: RetryOptions & { onExhausted: (error: RetryExhaustedError) => Effect<T, E2, Ctx> }
156
+ ): RetryState<T, E | E2, Ctx>;
116
157
 
117
158
  /**
118
- * Without `onExhausted`, the declared error type is `RetryExhaustedError<E>`, because that is what
119
- * a Retry's Failure actually carries: on exhaustion the interpreter returns
120
- * `Failure({ retryExhausted: true, lastError, attempts })` rather than the inner error itself,
121
- * so `result.error.lastError` is where the wrapped tree's `E` survives.
159
+ * Without `onExhausted`, an I/O fault the retry loop cannot get past arrives as
160
+ * `Failure({ retryExhausted: true, lastError, attempts })`, with whatever was thrown as `lastError`.
161
+ * An abort the wrapped tree returned is not retried and is not wrapped, so `E` reaches the pipeline
162
+ * as itself and never as `lastError`.
122
163
  */
123
164
  export declare function Retry<T, E = unknown, Ctx = unknown>(
124
165
  effect: Effect<T, E, Ctx>,
125
166
  options?: RetryOptions
126
- ): RetryState<T, RetryExhaustedError<E>, Ctx>;
167
+ ): RetryState<T, E | RetryExhaustedError, Ctx>;
127
168
 
128
169
  /**
129
170
  * `next` is optional and defaults to `(values) => Success(values)`, same as `Command`'s default,
130
- * so a bare `Parallel(effects)` resolves to the ordered array of success values.
171
+ * so a bare `Parallel(effects)` resolves to the ordered array of success values. The second argument
172
+ * is `next` or the options, whichever it looks like.
173
+ *
174
+ * The non-settled overloads accept only `settled?: false`. A `settled` known only as a `boolean`, from a
175
+ * shared options object or a caller's `ParallelOptions`, could be `true` at runtime, and matching it to
176
+ * an overload that types `next` as the values let a batch compile while it read outcome objects as
177
+ * values. It matches no overload instead: write `settled: true` inline, or add `as const`.
131
178
  */
132
- export declare function Parallel<T extends readonly unknown[], E = unknown, Ctx = unknown>(effects: {
133
- [K in keyof T]: Effect<T[K], E, Ctx>;
134
- }): ParallelState<[...T], [...T], E, Ctx>;
179
+ export declare function Parallel<T extends readonly unknown[], E = unknown, Ctx = unknown>(
180
+ effects: { [K in keyof T]: Effect<T[K], E, Ctx> },
181
+ options: ParallelOptions & { settled: true }
182
+ ): ParallelState<[...T], ParallelOutcomes<T, E>, E, Ctx, ParallelOutcomes<T, E>>;
135
183
 
136
184
  export declare function Parallel<T extends readonly unknown[], R, E = unknown, Ctx = unknown>(
137
185
  effects: { [K in keyof T]: Effect<T[K], E, Ctx> },
138
- next: (values: [...T]) => Effect<R, E, Ctx>
186
+ next: (values: ParallelOutcomes<T, E>) => Effect<R, E, Ctx>,
187
+ options: ParallelOptions & { settled: true }
188
+ ): ParallelState<[...T], R, E, Ctx, ParallelOutcomes<T, E>>;
189
+
190
+ export declare function Parallel<T extends readonly unknown[], E = unknown, Ctx = unknown>(
191
+ effects: { [K in keyof T]: Effect<T[K], E, Ctx> },
192
+ options?: ParallelOptions & { settled?: false }
193
+ ): ParallelState<[...T], [...T], E, Ctx>;
194
+
195
+ export declare function Parallel<T extends readonly unknown[], R, E = unknown, Ctx = unknown>(
196
+ effects: { [K in keyof T]: Effect<T[K], E, Ctx> },
197
+ next: (values: [...T]) => Effect<R, E, Ctx>,
198
+ options?: ParallelOptions & { settled?: false }
139
199
  ): ParallelState<[...T], R, E, Ctx>;
140
200
 
141
- export declare function effectPipe<A, B, E1 = unknown, Ctx = unknown>(
142
- f1: (a: A) => Effect<B, E1, Ctx>
143
- ): (start: A) => Effect<B, E1, Ctx>;
201
+ /**
202
+ * Composes steps into a pipeline: each step receives the previous step's success value, and a Failure
203
+ * from any step stops the pipeline. Typed for 1 to 20 steps, the same ceiling as Effect-TS's `pipe`. A
204
+ * pipeline is itself a step, so a longer one nests: `effectPipe(effectPipe(s1, s2), effectPipe(s3, s4))`.
205
+ * Each step's context type is its own, and the pipeline's is all of them together, so a step that reads
206
+ * no context does not erase a later step's, and `runEffect` asks for every context a step reads.
207
+ */
208
+ export declare function effectPipe<T0, T1, E1 = unknown, C1 = unknown>(
209
+ f1: (value: T0) => Effect<T1, E1, C1>
210
+ ): (start: T0) => Effect<T1, E1, C1>;
211
+
212
+ export declare function effectPipe<T0, T1, T2, E1 = unknown, E2 = unknown, C1 = unknown, C2 = unknown>(
213
+ f1: (value: T0) => Effect<T1, E1, C1>,
214
+ f2: (value: T1) => Effect<T2, E2, C2>
215
+ ): (start: T0) => Effect<T2, E1 | E2, C1 & C2>;
216
+
217
+ export declare function effectPipe<
218
+ T0,
219
+ T1,
220
+ T2,
221
+ T3,
222
+ E1 = unknown,
223
+ E2 = unknown,
224
+ E3 = unknown,
225
+ C1 = unknown,
226
+ C2 = unknown,
227
+ C3 = unknown
228
+ >(
229
+ f1: (value: T0) => Effect<T1, E1, C1>,
230
+ f2: (value: T1) => Effect<T2, E2, C2>,
231
+ f3: (value: T2) => Effect<T3, E3, C3>
232
+ ): (start: T0) => Effect<T3, E1 | E2 | E3, C1 & C2 & C3>;
233
+
234
+ export declare function effectPipe<
235
+ T0,
236
+ T1,
237
+ T2,
238
+ T3,
239
+ T4,
240
+ E1 = unknown,
241
+ E2 = unknown,
242
+ E3 = unknown,
243
+ E4 = unknown,
244
+ C1 = unknown,
245
+ C2 = unknown,
246
+ C3 = unknown,
247
+ C4 = unknown
248
+ >(
249
+ f1: (value: T0) => Effect<T1, E1, C1>,
250
+ f2: (value: T1) => Effect<T2, E2, C2>,
251
+ f3: (value: T2) => Effect<T3, E3, C3>,
252
+ f4: (value: T3) => Effect<T4, E4, C4>
253
+ ): (start: T0) => Effect<T4, E1 | E2 | E3 | E4, C1 & C2 & C3 & C4>;
254
+
255
+ export declare function effectPipe<
256
+ T0,
257
+ T1,
258
+ T2,
259
+ T3,
260
+ T4,
261
+ T5,
262
+ E1 = unknown,
263
+ E2 = unknown,
264
+ E3 = unknown,
265
+ E4 = unknown,
266
+ E5 = unknown,
267
+ C1 = unknown,
268
+ C2 = unknown,
269
+ C3 = unknown,
270
+ C4 = unknown,
271
+ C5 = unknown
272
+ >(
273
+ f1: (value: T0) => Effect<T1, E1, C1>,
274
+ f2: (value: T1) => Effect<T2, E2, C2>,
275
+ f3: (value: T2) => Effect<T3, E3, C3>,
276
+ f4: (value: T3) => Effect<T4, E4, C4>,
277
+ f5: (value: T4) => Effect<T5, E5, C5>
278
+ ): (start: T0) => Effect<T5, E1 | E2 | E3 | E4 | E5, C1 & C2 & C3 & C4 & C5>;
279
+
280
+ export declare function effectPipe<
281
+ T0,
282
+ T1,
283
+ T2,
284
+ T3,
285
+ T4,
286
+ T5,
287
+ T6,
288
+ E1 = unknown,
289
+ E2 = unknown,
290
+ E3 = unknown,
291
+ E4 = unknown,
292
+ E5 = unknown,
293
+ E6 = unknown,
294
+ C1 = unknown,
295
+ C2 = unknown,
296
+ C3 = unknown,
297
+ C4 = unknown,
298
+ C5 = unknown,
299
+ C6 = unknown
300
+ >(
301
+ f1: (value: T0) => Effect<T1, E1, C1>,
302
+ f2: (value: T1) => Effect<T2, E2, C2>,
303
+ f3: (value: T2) => Effect<T3, E3, C3>,
304
+ f4: (value: T3) => Effect<T4, E4, C4>,
305
+ f5: (value: T4) => Effect<T5, E5, C5>,
306
+ f6: (value: T5) => Effect<T6, E6, C6>
307
+ ): (start: T0) => Effect<T6, E1 | E2 | E3 | E4 | E5 | E6, C1 & C2 & C3 & C4 & C5 & C6>;
308
+
309
+ export declare function effectPipe<
310
+ T0,
311
+ T1,
312
+ T2,
313
+ T3,
314
+ T4,
315
+ T5,
316
+ T6,
317
+ T7,
318
+ E1 = unknown,
319
+ E2 = unknown,
320
+ E3 = unknown,
321
+ E4 = unknown,
322
+ E5 = unknown,
323
+ E6 = unknown,
324
+ E7 = unknown,
325
+ C1 = unknown,
326
+ C2 = unknown,
327
+ C3 = unknown,
328
+ C4 = unknown,
329
+ C5 = unknown,
330
+ C6 = unknown,
331
+ C7 = unknown
332
+ >(
333
+ f1: (value: T0) => Effect<T1, E1, C1>,
334
+ f2: (value: T1) => Effect<T2, E2, C2>,
335
+ f3: (value: T2) => Effect<T3, E3, C3>,
336
+ f4: (value: T3) => Effect<T4, E4, C4>,
337
+ f5: (value: T4) => Effect<T5, E5, C5>,
338
+ f6: (value: T5) => Effect<T6, E6, C6>,
339
+ f7: (value: T6) => Effect<T7, E7, C7>
340
+ ): (start: T0) => Effect<T7, E1 | E2 | E3 | E4 | E5 | E6 | E7, C1 & C2 & C3 & C4 & C5 & C6 & C7>;
341
+
342
+ export declare function effectPipe<
343
+ T0,
344
+ T1,
345
+ T2,
346
+ T3,
347
+ T4,
348
+ T5,
349
+ T6,
350
+ T7,
351
+ T8,
352
+ E1 = unknown,
353
+ E2 = unknown,
354
+ E3 = unknown,
355
+ E4 = unknown,
356
+ E5 = unknown,
357
+ E6 = unknown,
358
+ E7 = unknown,
359
+ E8 = unknown,
360
+ C1 = unknown,
361
+ C2 = unknown,
362
+ C3 = unknown,
363
+ C4 = unknown,
364
+ C5 = unknown,
365
+ C6 = unknown,
366
+ C7 = unknown,
367
+ C8 = unknown
368
+ >(
369
+ f1: (value: T0) => Effect<T1, E1, C1>,
370
+ f2: (value: T1) => Effect<T2, E2, C2>,
371
+ f3: (value: T2) => Effect<T3, E3, C3>,
372
+ f4: (value: T3) => Effect<T4, E4, C4>,
373
+ f5: (value: T4) => Effect<T5, E5, C5>,
374
+ f6: (value: T5) => Effect<T6, E6, C6>,
375
+ f7: (value: T6) => Effect<T7, E7, C7>,
376
+ f8: (value: T7) => Effect<T8, E8, C8>
377
+ ): (start: T0) => Effect<T8, E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8, C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8>;
378
+
379
+ export declare function effectPipe<
380
+ T0,
381
+ T1,
382
+ T2,
383
+ T3,
384
+ T4,
385
+ T5,
386
+ T6,
387
+ T7,
388
+ T8,
389
+ T9,
390
+ E1 = unknown,
391
+ E2 = unknown,
392
+ E3 = unknown,
393
+ E4 = unknown,
394
+ E5 = unknown,
395
+ E6 = unknown,
396
+ E7 = unknown,
397
+ E8 = unknown,
398
+ E9 = unknown,
399
+ C1 = unknown,
400
+ C2 = unknown,
401
+ C3 = unknown,
402
+ C4 = unknown,
403
+ C5 = unknown,
404
+ C6 = unknown,
405
+ C7 = unknown,
406
+ C8 = unknown,
407
+ C9 = unknown
408
+ >(
409
+ f1: (value: T0) => Effect<T1, E1, C1>,
410
+ f2: (value: T1) => Effect<T2, E2, C2>,
411
+ f3: (value: T2) => Effect<T3, E3, C3>,
412
+ f4: (value: T3) => Effect<T4, E4, C4>,
413
+ f5: (value: T4) => Effect<T5, E5, C5>,
414
+ f6: (value: T5) => Effect<T6, E6, C6>,
415
+ f7: (value: T6) => Effect<T7, E7, C7>,
416
+ f8: (value: T7) => Effect<T8, E8, C8>,
417
+ f9: (value: T8) => Effect<T9, E9, C9>
418
+ ): (start: T0) => Effect<T9, E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9, C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9>;
419
+
420
+ export declare function effectPipe<
421
+ T0,
422
+ T1,
423
+ T2,
424
+ T3,
425
+ T4,
426
+ T5,
427
+ T6,
428
+ T7,
429
+ T8,
430
+ T9,
431
+ T10,
432
+ E1 = unknown,
433
+ E2 = unknown,
434
+ E3 = unknown,
435
+ E4 = unknown,
436
+ E5 = unknown,
437
+ E6 = unknown,
438
+ E7 = unknown,
439
+ E8 = unknown,
440
+ E9 = unknown,
441
+ E10 = unknown,
442
+ C1 = unknown,
443
+ C2 = unknown,
444
+ C3 = unknown,
445
+ C4 = unknown,
446
+ C5 = unknown,
447
+ C6 = unknown,
448
+ C7 = unknown,
449
+ C8 = unknown,
450
+ C9 = unknown,
451
+ C10 = unknown
452
+ >(
453
+ f1: (value: T0) => Effect<T1, E1, C1>,
454
+ f2: (value: T1) => Effect<T2, E2, C2>,
455
+ f3: (value: T2) => Effect<T3, E3, C3>,
456
+ f4: (value: T3) => Effect<T4, E4, C4>,
457
+ f5: (value: T4) => Effect<T5, E5, C5>,
458
+ f6: (value: T5) => Effect<T6, E6, C6>,
459
+ f7: (value: T6) => Effect<T7, E7, C7>,
460
+ f8: (value: T7) => Effect<T8, E8, C8>,
461
+ f9: (value: T8) => Effect<T9, E9, C9>,
462
+ f10: (value: T9) => Effect<T10, E10, C10>
463
+ ): (
464
+ start: T0
465
+ ) => Effect<T10, E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10, C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10>;
466
+
467
+ export declare function effectPipe<
468
+ T0,
469
+ T1,
470
+ T2,
471
+ T3,
472
+ T4,
473
+ T5,
474
+ T6,
475
+ T7,
476
+ T8,
477
+ T9,
478
+ T10,
479
+ T11,
480
+ E1 = unknown,
481
+ E2 = unknown,
482
+ E3 = unknown,
483
+ E4 = unknown,
484
+ E5 = unknown,
485
+ E6 = unknown,
486
+ E7 = unknown,
487
+ E8 = unknown,
488
+ E9 = unknown,
489
+ E10 = unknown,
490
+ E11 = unknown,
491
+ C1 = unknown,
492
+ C2 = unknown,
493
+ C3 = unknown,
494
+ C4 = unknown,
495
+ C5 = unknown,
496
+ C6 = unknown,
497
+ C7 = unknown,
498
+ C8 = unknown,
499
+ C9 = unknown,
500
+ C10 = unknown,
501
+ C11 = unknown
502
+ >(
503
+ f1: (value: T0) => Effect<T1, E1, C1>,
504
+ f2: (value: T1) => Effect<T2, E2, C2>,
505
+ f3: (value: T2) => Effect<T3, E3, C3>,
506
+ f4: (value: T3) => Effect<T4, E4, C4>,
507
+ f5: (value: T4) => Effect<T5, E5, C5>,
508
+ f6: (value: T5) => Effect<T6, E6, C6>,
509
+ f7: (value: T6) => Effect<T7, E7, C7>,
510
+ f8: (value: T7) => Effect<T8, E8, C8>,
511
+ f9: (value: T8) => Effect<T9, E9, C9>,
512
+ f10: (value: T9) => Effect<T10, E10, C10>,
513
+ f11: (value: T10) => Effect<T11, E11, C11>
514
+ ): (
515
+ start: T0
516
+ ) => Effect<
517
+ T11,
518
+ E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10 | E11,
519
+ C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10 & C11
520
+ >;
144
521
 
145
- export declare function effectPipe<A, B, C, E1 = unknown, E2 = unknown, Ctx = unknown>(
146
- f1: (a: A) => Effect<B, E1, Ctx>,
147
- f2: (b: B) => Effect<C, E2, Ctx>
148
- ): (start: A) => Effect<C, E1 | E2, Ctx>;
522
+ export declare function effectPipe<
523
+ T0,
524
+ T1,
525
+ T2,
526
+ T3,
527
+ T4,
528
+ T5,
529
+ T6,
530
+ T7,
531
+ T8,
532
+ T9,
533
+ T10,
534
+ T11,
535
+ T12,
536
+ E1 = unknown,
537
+ E2 = unknown,
538
+ E3 = unknown,
539
+ E4 = unknown,
540
+ E5 = unknown,
541
+ E6 = unknown,
542
+ E7 = unknown,
543
+ E8 = unknown,
544
+ E9 = unknown,
545
+ E10 = unknown,
546
+ E11 = unknown,
547
+ E12 = unknown,
548
+ C1 = unknown,
549
+ C2 = unknown,
550
+ C3 = unknown,
551
+ C4 = unknown,
552
+ C5 = unknown,
553
+ C6 = unknown,
554
+ C7 = unknown,
555
+ C8 = unknown,
556
+ C9 = unknown,
557
+ C10 = unknown,
558
+ C11 = unknown,
559
+ C12 = unknown
560
+ >(
561
+ f1: (value: T0) => Effect<T1, E1, C1>,
562
+ f2: (value: T1) => Effect<T2, E2, C2>,
563
+ f3: (value: T2) => Effect<T3, E3, C3>,
564
+ f4: (value: T3) => Effect<T4, E4, C4>,
565
+ f5: (value: T4) => Effect<T5, E5, C5>,
566
+ f6: (value: T5) => Effect<T6, E6, C6>,
567
+ f7: (value: T6) => Effect<T7, E7, C7>,
568
+ f8: (value: T7) => Effect<T8, E8, C8>,
569
+ f9: (value: T8) => Effect<T9, E9, C9>,
570
+ f10: (value: T9) => Effect<T10, E10, C10>,
571
+ f11: (value: T10) => Effect<T11, E11, C11>,
572
+ f12: (value: T11) => Effect<T12, E12, C12>
573
+ ): (
574
+ start: T0
575
+ ) => Effect<
576
+ T12,
577
+ E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10 | E11 | E12,
578
+ C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10 & C11 & C12
579
+ >;
580
+
581
+ export declare function effectPipe<
582
+ T0,
583
+ T1,
584
+ T2,
585
+ T3,
586
+ T4,
587
+ T5,
588
+ T6,
589
+ T7,
590
+ T8,
591
+ T9,
592
+ T10,
593
+ T11,
594
+ T12,
595
+ T13,
596
+ E1 = unknown,
597
+ E2 = unknown,
598
+ E3 = unknown,
599
+ E4 = unknown,
600
+ E5 = unknown,
601
+ E6 = unknown,
602
+ E7 = unknown,
603
+ E8 = unknown,
604
+ E9 = unknown,
605
+ E10 = unknown,
606
+ E11 = unknown,
607
+ E12 = unknown,
608
+ E13 = unknown,
609
+ C1 = unknown,
610
+ C2 = unknown,
611
+ C3 = unknown,
612
+ C4 = unknown,
613
+ C5 = unknown,
614
+ C6 = unknown,
615
+ C7 = unknown,
616
+ C8 = unknown,
617
+ C9 = unknown,
618
+ C10 = unknown,
619
+ C11 = unknown,
620
+ C12 = unknown,
621
+ C13 = unknown
622
+ >(
623
+ f1: (value: T0) => Effect<T1, E1, C1>,
624
+ f2: (value: T1) => Effect<T2, E2, C2>,
625
+ f3: (value: T2) => Effect<T3, E3, C3>,
626
+ f4: (value: T3) => Effect<T4, E4, C4>,
627
+ f5: (value: T4) => Effect<T5, E5, C5>,
628
+ f6: (value: T5) => Effect<T6, E6, C6>,
629
+ f7: (value: T6) => Effect<T7, E7, C7>,
630
+ f8: (value: T7) => Effect<T8, E8, C8>,
631
+ f9: (value: T8) => Effect<T9, E9, C9>,
632
+ f10: (value: T9) => Effect<T10, E10, C10>,
633
+ f11: (value: T10) => Effect<T11, E11, C11>,
634
+ f12: (value: T11) => Effect<T12, E12, C12>,
635
+ f13: (value: T12) => Effect<T13, E13, C13>
636
+ ): (
637
+ start: T0
638
+ ) => Effect<
639
+ T13,
640
+ E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10 | E11 | E12 | E13,
641
+ C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10 & C11 & C12 & C13
642
+ >;
643
+
644
+ export declare function effectPipe<
645
+ T0,
646
+ T1,
647
+ T2,
648
+ T3,
649
+ T4,
650
+ T5,
651
+ T6,
652
+ T7,
653
+ T8,
654
+ T9,
655
+ T10,
656
+ T11,
657
+ T12,
658
+ T13,
659
+ T14,
660
+ E1 = unknown,
661
+ E2 = unknown,
662
+ E3 = unknown,
663
+ E4 = unknown,
664
+ E5 = unknown,
665
+ E6 = unknown,
666
+ E7 = unknown,
667
+ E8 = unknown,
668
+ E9 = unknown,
669
+ E10 = unknown,
670
+ E11 = unknown,
671
+ E12 = unknown,
672
+ E13 = unknown,
673
+ E14 = unknown,
674
+ C1 = unknown,
675
+ C2 = unknown,
676
+ C3 = unknown,
677
+ C4 = unknown,
678
+ C5 = unknown,
679
+ C6 = unknown,
680
+ C7 = unknown,
681
+ C8 = unknown,
682
+ C9 = unknown,
683
+ C10 = unknown,
684
+ C11 = unknown,
685
+ C12 = unknown,
686
+ C13 = unknown,
687
+ C14 = unknown
688
+ >(
689
+ f1: (value: T0) => Effect<T1, E1, C1>,
690
+ f2: (value: T1) => Effect<T2, E2, C2>,
691
+ f3: (value: T2) => Effect<T3, E3, C3>,
692
+ f4: (value: T3) => Effect<T4, E4, C4>,
693
+ f5: (value: T4) => Effect<T5, E5, C5>,
694
+ f6: (value: T5) => Effect<T6, E6, C6>,
695
+ f7: (value: T6) => Effect<T7, E7, C7>,
696
+ f8: (value: T7) => Effect<T8, E8, C8>,
697
+ f9: (value: T8) => Effect<T9, E9, C9>,
698
+ f10: (value: T9) => Effect<T10, E10, C10>,
699
+ f11: (value: T10) => Effect<T11, E11, C11>,
700
+ f12: (value: T11) => Effect<T12, E12, C12>,
701
+ f13: (value: T12) => Effect<T13, E13, C13>,
702
+ f14: (value: T13) => Effect<T14, E14, C14>
703
+ ): (
704
+ start: T0
705
+ ) => Effect<
706
+ T14,
707
+ E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10 | E11 | E12 | E13 | E14,
708
+ C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10 & C11 & C12 & C13 & C14
709
+ >;
149
710
 
150
- export declare function effectPipe<A, B, C, D, E1 = unknown, E2 = unknown, E3 = unknown, Ctx = unknown>(
151
- f1: (a: A) => Effect<B, E1, Ctx>,
152
- f2: (b: B) => Effect<C, E2, Ctx>,
153
- f3: (c: C) => Effect<D, E3, Ctx>
154
- ): (start: A) => Effect<D, E1 | E2 | E3, Ctx>;
711
+ export declare function effectPipe<
712
+ T0,
713
+ T1,
714
+ T2,
715
+ T3,
716
+ T4,
717
+ T5,
718
+ T6,
719
+ T7,
720
+ T8,
721
+ T9,
722
+ T10,
723
+ T11,
724
+ T12,
725
+ T13,
726
+ T14,
727
+ T15,
728
+ E1 = unknown,
729
+ E2 = unknown,
730
+ E3 = unknown,
731
+ E4 = unknown,
732
+ E5 = unknown,
733
+ E6 = unknown,
734
+ E7 = unknown,
735
+ E8 = unknown,
736
+ E9 = unknown,
737
+ E10 = unknown,
738
+ E11 = unknown,
739
+ E12 = unknown,
740
+ E13 = unknown,
741
+ E14 = unknown,
742
+ E15 = unknown,
743
+ C1 = unknown,
744
+ C2 = unknown,
745
+ C3 = unknown,
746
+ C4 = unknown,
747
+ C5 = unknown,
748
+ C6 = unknown,
749
+ C7 = unknown,
750
+ C8 = unknown,
751
+ C9 = unknown,
752
+ C10 = unknown,
753
+ C11 = unknown,
754
+ C12 = unknown,
755
+ C13 = unknown,
756
+ C14 = unknown,
757
+ C15 = unknown
758
+ >(
759
+ f1: (value: T0) => Effect<T1, E1, C1>,
760
+ f2: (value: T1) => Effect<T2, E2, C2>,
761
+ f3: (value: T2) => Effect<T3, E3, C3>,
762
+ f4: (value: T3) => Effect<T4, E4, C4>,
763
+ f5: (value: T4) => Effect<T5, E5, C5>,
764
+ f6: (value: T5) => Effect<T6, E6, C6>,
765
+ f7: (value: T6) => Effect<T7, E7, C7>,
766
+ f8: (value: T7) => Effect<T8, E8, C8>,
767
+ f9: (value: T8) => Effect<T9, E9, C9>,
768
+ f10: (value: T9) => Effect<T10, E10, C10>,
769
+ f11: (value: T10) => Effect<T11, E11, C11>,
770
+ f12: (value: T11) => Effect<T12, E12, C12>,
771
+ f13: (value: T12) => Effect<T13, E13, C13>,
772
+ f14: (value: T13) => Effect<T14, E14, C14>,
773
+ f15: (value: T14) => Effect<T15, E15, C15>
774
+ ): (
775
+ start: T0
776
+ ) => Effect<
777
+ T15,
778
+ E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10 | E11 | E12 | E13 | E14 | E15,
779
+ C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10 & C11 & C12 & C13 & C14 & C15
780
+ >;
155
781
 
156
782
  export declare function effectPipe<
157
- A,
158
- B,
159
- C,
160
- D,
161
- F,
783
+ T0,
784
+ T1,
785
+ T2,
786
+ T3,
787
+ T4,
788
+ T5,
789
+ T6,
790
+ T7,
791
+ T8,
792
+ T9,
793
+ T10,
794
+ T11,
795
+ T12,
796
+ T13,
797
+ T14,
798
+ T15,
799
+ T16,
162
800
  E1 = unknown,
163
801
  E2 = unknown,
164
802
  E3 = unknown,
165
803
  E4 = unknown,
166
- Ctx = unknown
804
+ E5 = unknown,
805
+ E6 = unknown,
806
+ E7 = unknown,
807
+ E8 = unknown,
808
+ E9 = unknown,
809
+ E10 = unknown,
810
+ E11 = unknown,
811
+ E12 = unknown,
812
+ E13 = unknown,
813
+ E14 = unknown,
814
+ E15 = unknown,
815
+ E16 = unknown,
816
+ C1 = unknown,
817
+ C2 = unknown,
818
+ C3 = unknown,
819
+ C4 = unknown,
820
+ C5 = unknown,
821
+ C6 = unknown,
822
+ C7 = unknown,
823
+ C8 = unknown,
824
+ C9 = unknown,
825
+ C10 = unknown,
826
+ C11 = unknown,
827
+ C12 = unknown,
828
+ C13 = unknown,
829
+ C14 = unknown,
830
+ C15 = unknown,
831
+ C16 = unknown
167
832
  >(
168
- f1: (a: A) => Effect<B, E1, Ctx>,
169
- f2: (b: B) => Effect<C, E2, Ctx>,
170
- f3: (c: C) => Effect<D, E3, Ctx>,
171
- f4: (d: D) => Effect<F, E4, Ctx>
172
- ): (start: A) => Effect<F, E1 | E2 | E3 | E4, Ctx>;
833
+ f1: (value: T0) => Effect<T1, E1, C1>,
834
+ f2: (value: T1) => Effect<T2, E2, C2>,
835
+ f3: (value: T2) => Effect<T3, E3, C3>,
836
+ f4: (value: T3) => Effect<T4, E4, C4>,
837
+ f5: (value: T4) => Effect<T5, E5, C5>,
838
+ f6: (value: T5) => Effect<T6, E6, C6>,
839
+ f7: (value: T6) => Effect<T7, E7, C7>,
840
+ f8: (value: T7) => Effect<T8, E8, C8>,
841
+ f9: (value: T8) => Effect<T9, E9, C9>,
842
+ f10: (value: T9) => Effect<T10, E10, C10>,
843
+ f11: (value: T10) => Effect<T11, E11, C11>,
844
+ f12: (value: T11) => Effect<T12, E12, C12>,
845
+ f13: (value: T12) => Effect<T13, E13, C13>,
846
+ f14: (value: T13) => Effect<T14, E14, C14>,
847
+ f15: (value: T14) => Effect<T15, E15, C15>,
848
+ f16: (value: T15) => Effect<T16, E16, C16>
849
+ ): (
850
+ start: T0
851
+ ) => Effect<
852
+ T16,
853
+ E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10 | E11 | E12 | E13 | E14 | E15 | E16,
854
+ C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10 & C11 & C12 & C13 & C14 & C15 & C16
855
+ >;
173
856
 
174
857
  export declare function effectPipe<
175
- A,
176
- B,
177
- C,
178
- D,
179
- F,
180
- G,
858
+ T0,
859
+ T1,
860
+ T2,
861
+ T3,
862
+ T4,
863
+ T5,
864
+ T6,
865
+ T7,
866
+ T8,
867
+ T9,
868
+ T10,
869
+ T11,
870
+ T12,
871
+ T13,
872
+ T14,
873
+ T15,
874
+ T16,
875
+ T17,
181
876
  E1 = unknown,
182
877
  E2 = unknown,
183
878
  E3 = unknown,
184
879
  E4 = unknown,
185
880
  E5 = unknown,
186
- Ctx = unknown
881
+ E6 = unknown,
882
+ E7 = unknown,
883
+ E8 = unknown,
884
+ E9 = unknown,
885
+ E10 = unknown,
886
+ E11 = unknown,
887
+ E12 = unknown,
888
+ E13 = unknown,
889
+ E14 = unknown,
890
+ E15 = unknown,
891
+ E16 = unknown,
892
+ E17 = unknown,
893
+ C1 = unknown,
894
+ C2 = unknown,
895
+ C3 = unknown,
896
+ C4 = unknown,
897
+ C5 = unknown,
898
+ C6 = unknown,
899
+ C7 = unknown,
900
+ C8 = unknown,
901
+ C9 = unknown,
902
+ C10 = unknown,
903
+ C11 = unknown,
904
+ C12 = unknown,
905
+ C13 = unknown,
906
+ C14 = unknown,
907
+ C15 = unknown,
908
+ C16 = unknown,
909
+ C17 = unknown
187
910
  >(
188
- f1: (a: A) => Effect<B, E1, Ctx>,
189
- f2: (b: B) => Effect<C, E2, Ctx>,
190
- f3: (c: C) => Effect<D, E3, Ctx>,
191
- f4: (d: D) => Effect<F, E4, Ctx>,
192
- f5: (f: F) => Effect<G, E5, Ctx>
193
- ): (start: A) => Effect<G, E1 | E2 | E3 | E4 | E5, Ctx>;
911
+ f1: (value: T0) => Effect<T1, E1, C1>,
912
+ f2: (value: T1) => Effect<T2, E2, C2>,
913
+ f3: (value: T2) => Effect<T3, E3, C3>,
914
+ f4: (value: T3) => Effect<T4, E4, C4>,
915
+ f5: (value: T4) => Effect<T5, E5, C5>,
916
+ f6: (value: T5) => Effect<T6, E6, C6>,
917
+ f7: (value: T6) => Effect<T7, E7, C7>,
918
+ f8: (value: T7) => Effect<T8, E8, C8>,
919
+ f9: (value: T8) => Effect<T9, E9, C9>,
920
+ f10: (value: T9) => Effect<T10, E10, C10>,
921
+ f11: (value: T10) => Effect<T11, E11, C11>,
922
+ f12: (value: T11) => Effect<T12, E12, C12>,
923
+ f13: (value: T12) => Effect<T13, E13, C13>,
924
+ f14: (value: T13) => Effect<T14, E14, C14>,
925
+ f15: (value: T14) => Effect<T15, E15, C15>,
926
+ f16: (value: T15) => Effect<T16, E16, C16>,
927
+ f17: (value: T16) => Effect<T17, E17, C17>
928
+ ): (
929
+ start: T0
930
+ ) => Effect<
931
+ T17,
932
+ E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10 | E11 | E12 | E13 | E14 | E15 | E16 | E17,
933
+ C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10 & C11 & C12 & C13 & C14 & C15 & C16 & C17
934
+ >;
194
935
 
195
936
  export declare function effectPipe<
196
- A,
197
- B,
198
- C,
199
- D,
200
- F,
201
- G,
202
- H,
937
+ T0,
938
+ T1,
939
+ T2,
940
+ T3,
941
+ T4,
942
+ T5,
943
+ T6,
944
+ T7,
945
+ T8,
946
+ T9,
947
+ T10,
948
+ T11,
949
+ T12,
950
+ T13,
951
+ T14,
952
+ T15,
953
+ T16,
954
+ T17,
955
+ T18,
203
956
  E1 = unknown,
204
957
  E2 = unknown,
205
958
  E3 = unknown,
206
959
  E4 = unknown,
207
960
  E5 = unknown,
208
961
  E6 = unknown,
209
- Ctx = unknown
962
+ E7 = unknown,
963
+ E8 = unknown,
964
+ E9 = unknown,
965
+ E10 = unknown,
966
+ E11 = unknown,
967
+ E12 = unknown,
968
+ E13 = unknown,
969
+ E14 = unknown,
970
+ E15 = unknown,
971
+ E16 = unknown,
972
+ E17 = unknown,
973
+ E18 = unknown,
974
+ C1 = unknown,
975
+ C2 = unknown,
976
+ C3 = unknown,
977
+ C4 = unknown,
978
+ C5 = unknown,
979
+ C6 = unknown,
980
+ C7 = unknown,
981
+ C8 = unknown,
982
+ C9 = unknown,
983
+ C10 = unknown,
984
+ C11 = unknown,
985
+ C12 = unknown,
986
+ C13 = unknown,
987
+ C14 = unknown,
988
+ C15 = unknown,
989
+ C16 = unknown,
990
+ C17 = unknown,
991
+ C18 = unknown
210
992
  >(
211
- f1: (a: A) => Effect<B, E1, Ctx>,
212
- f2: (b: B) => Effect<C, E2, Ctx>,
213
- f3: (c: C) => Effect<D, E3, Ctx>,
214
- f4: (d: D) => Effect<F, E4, Ctx>,
215
- f5: (f: F) => Effect<G, E5, Ctx>,
216
- f6: (g: G) => Effect<H, E6, Ctx>
217
- ): (start: A) => Effect<H, E1 | E2 | E3 | E4 | E5 | E6, Ctx>;
993
+ f1: (value: T0) => Effect<T1, E1, C1>,
994
+ f2: (value: T1) => Effect<T2, E2, C2>,
995
+ f3: (value: T2) => Effect<T3, E3, C3>,
996
+ f4: (value: T3) => Effect<T4, E4, C4>,
997
+ f5: (value: T4) => Effect<T5, E5, C5>,
998
+ f6: (value: T5) => Effect<T6, E6, C6>,
999
+ f7: (value: T6) => Effect<T7, E7, C7>,
1000
+ f8: (value: T7) => Effect<T8, E8, C8>,
1001
+ f9: (value: T8) => Effect<T9, E9, C9>,
1002
+ f10: (value: T9) => Effect<T10, E10, C10>,
1003
+ f11: (value: T10) => Effect<T11, E11, C11>,
1004
+ f12: (value: T11) => Effect<T12, E12, C12>,
1005
+ f13: (value: T12) => Effect<T13, E13, C13>,
1006
+ f14: (value: T13) => Effect<T14, E14, C14>,
1007
+ f15: (value: T14) => Effect<T15, E15, C15>,
1008
+ f16: (value: T15) => Effect<T16, E16, C16>,
1009
+ f17: (value: T16) => Effect<T17, E17, C17>,
1010
+ f18: (value: T17) => Effect<T18, E18, C18>
1011
+ ): (
1012
+ start: T0
1013
+ ) => Effect<
1014
+ T18,
1015
+ E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10 | E11 | E12 | E13 | E14 | E15 | E16 | E17 | E18,
1016
+ C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10 & C11 & C12 & C13 & C14 & C15 & C16 & C17 & C18
1017
+ >;
218
1018
 
219
1019
  export declare function effectPipe<
220
- A,
221
- B,
222
- C,
223
- D,
224
- F,
225
- G,
226
- H,
227
- I,
1020
+ T0,
1021
+ T1,
1022
+ T2,
1023
+ T3,
1024
+ T4,
1025
+ T5,
1026
+ T6,
1027
+ T7,
1028
+ T8,
1029
+ T9,
1030
+ T10,
1031
+ T11,
1032
+ T12,
1033
+ T13,
1034
+ T14,
1035
+ T15,
1036
+ T16,
1037
+ T17,
1038
+ T18,
1039
+ T19,
228
1040
  E1 = unknown,
229
1041
  E2 = unknown,
230
1042
  E3 = unknown,
@@ -232,27 +1044,87 @@ export declare function effectPipe<
232
1044
  E5 = unknown,
233
1045
  E6 = unknown,
234
1046
  E7 = unknown,
235
- Ctx = unknown
1047
+ E8 = unknown,
1048
+ E9 = unknown,
1049
+ E10 = unknown,
1050
+ E11 = unknown,
1051
+ E12 = unknown,
1052
+ E13 = unknown,
1053
+ E14 = unknown,
1054
+ E15 = unknown,
1055
+ E16 = unknown,
1056
+ E17 = unknown,
1057
+ E18 = unknown,
1058
+ E19 = unknown,
1059
+ C1 = unknown,
1060
+ C2 = unknown,
1061
+ C3 = unknown,
1062
+ C4 = unknown,
1063
+ C5 = unknown,
1064
+ C6 = unknown,
1065
+ C7 = unknown,
1066
+ C8 = unknown,
1067
+ C9 = unknown,
1068
+ C10 = unknown,
1069
+ C11 = unknown,
1070
+ C12 = unknown,
1071
+ C13 = unknown,
1072
+ C14 = unknown,
1073
+ C15 = unknown,
1074
+ C16 = unknown,
1075
+ C17 = unknown,
1076
+ C18 = unknown,
1077
+ C19 = unknown
236
1078
  >(
237
- f1: (a: A) => Effect<B, E1, Ctx>,
238
- f2: (b: B) => Effect<C, E2, Ctx>,
239
- f3: (c: C) => Effect<D, E3, Ctx>,
240
- f4: (d: D) => Effect<F, E4, Ctx>,
241
- f5: (f: F) => Effect<G, E5, Ctx>,
242
- f6: (g: G) => Effect<H, E6, Ctx>,
243
- f7: (h: H) => Effect<I, E7, Ctx>
244
- ): (start: A) => Effect<I, E1 | E2 | E3 | E4 | E5 | E6 | E7, Ctx>;
1079
+ f1: (value: T0) => Effect<T1, E1, C1>,
1080
+ f2: (value: T1) => Effect<T2, E2, C2>,
1081
+ f3: (value: T2) => Effect<T3, E3, C3>,
1082
+ f4: (value: T3) => Effect<T4, E4, C4>,
1083
+ f5: (value: T4) => Effect<T5, E5, C5>,
1084
+ f6: (value: T5) => Effect<T6, E6, C6>,
1085
+ f7: (value: T6) => Effect<T7, E7, C7>,
1086
+ f8: (value: T7) => Effect<T8, E8, C8>,
1087
+ f9: (value: T8) => Effect<T9, E9, C9>,
1088
+ f10: (value: T9) => Effect<T10, E10, C10>,
1089
+ f11: (value: T10) => Effect<T11, E11, C11>,
1090
+ f12: (value: T11) => Effect<T12, E12, C12>,
1091
+ f13: (value: T12) => Effect<T13, E13, C13>,
1092
+ f14: (value: T13) => Effect<T14, E14, C14>,
1093
+ f15: (value: T14) => Effect<T15, E15, C15>,
1094
+ f16: (value: T15) => Effect<T16, E16, C16>,
1095
+ f17: (value: T16) => Effect<T17, E17, C17>,
1096
+ f18: (value: T17) => Effect<T18, E18, C18>,
1097
+ f19: (value: T18) => Effect<T19, E19, C19>
1098
+ ): (
1099
+ start: T0
1100
+ ) => Effect<
1101
+ T19,
1102
+ E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10 | E11 | E12 | E13 | E14 | E15 | E16 | E17 | E18 | E19,
1103
+ C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10 & C11 & C12 & C13 & C14 & C15 & C16 & C17 & C18 & C19
1104
+ >;
245
1105
 
246
1106
  export declare function effectPipe<
247
- A,
248
- B,
249
- C,
250
- D,
251
- F,
252
- G,
253
- H,
254
- I,
255
- J,
1107
+ T0,
1108
+ T1,
1109
+ T2,
1110
+ T3,
1111
+ T4,
1112
+ T5,
1113
+ T6,
1114
+ T7,
1115
+ T8,
1116
+ T9,
1117
+ T10,
1118
+ T11,
1119
+ T12,
1120
+ T13,
1121
+ T14,
1122
+ T15,
1123
+ T16,
1124
+ T17,
1125
+ T18,
1126
+ T19,
1127
+ T20,
256
1128
  E1 = unknown,
257
1129
  E2 = unknown,
258
1130
  E3 = unknown,
@@ -261,61 +1133,143 @@ export declare function effectPipe<
261
1133
  E6 = unknown,
262
1134
  E7 = unknown,
263
1135
  E8 = unknown,
264
- Ctx = unknown
1136
+ E9 = unknown,
1137
+ E10 = unknown,
1138
+ E11 = unknown,
1139
+ E12 = unknown,
1140
+ E13 = unknown,
1141
+ E14 = unknown,
1142
+ E15 = unknown,
1143
+ E16 = unknown,
1144
+ E17 = unknown,
1145
+ E18 = unknown,
1146
+ E19 = unknown,
1147
+ E20 = unknown,
1148
+ C1 = unknown,
1149
+ C2 = unknown,
1150
+ C3 = unknown,
1151
+ C4 = unknown,
1152
+ C5 = unknown,
1153
+ C6 = unknown,
1154
+ C7 = unknown,
1155
+ C8 = unknown,
1156
+ C9 = unknown,
1157
+ C10 = unknown,
1158
+ C11 = unknown,
1159
+ C12 = unknown,
1160
+ C13 = unknown,
1161
+ C14 = unknown,
1162
+ C15 = unknown,
1163
+ C16 = unknown,
1164
+ C17 = unknown,
1165
+ C18 = unknown,
1166
+ C19 = unknown,
1167
+ C20 = unknown
265
1168
  >(
266
- f1: (a: A) => Effect<B, E1, Ctx>,
267
- f2: (b: B) => Effect<C, E2, Ctx>,
268
- f3: (c: C) => Effect<D, E3, Ctx>,
269
- f4: (d: D) => Effect<F, E4, Ctx>,
270
- f5: (f: F) => Effect<G, E5, Ctx>,
271
- f6: (g: G) => Effect<H, E6, Ctx>,
272
- f7: (h: H) => Effect<I, E7, Ctx>,
273
- f8: (i: I) => Effect<J, E8, Ctx>
274
- ): (start: A) => Effect<J, E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8, Ctx>;
1169
+ f1: (value: T0) => Effect<T1, E1, C1>,
1170
+ f2: (value: T1) => Effect<T2, E2, C2>,
1171
+ f3: (value: T2) => Effect<T3, E3, C3>,
1172
+ f4: (value: T3) => Effect<T4, E4, C4>,
1173
+ f5: (value: T4) => Effect<T5, E5, C5>,
1174
+ f6: (value: T5) => Effect<T6, E6, C6>,
1175
+ f7: (value: T6) => Effect<T7, E7, C7>,
1176
+ f8: (value: T7) => Effect<T8, E8, C8>,
1177
+ f9: (value: T8) => Effect<T9, E9, C9>,
1178
+ f10: (value: T9) => Effect<T10, E10, C10>,
1179
+ f11: (value: T10) => Effect<T11, E11, C11>,
1180
+ f12: (value: T11) => Effect<T12, E12, C12>,
1181
+ f13: (value: T12) => Effect<T13, E13, C13>,
1182
+ f14: (value: T13) => Effect<T14, E14, C14>,
1183
+ f15: (value: T14) => Effect<T15, E15, C15>,
1184
+ f16: (value: T15) => Effect<T16, E16, C16>,
1185
+ f17: (value: T16) => Effect<T17, E17, C17>,
1186
+ f18: (value: T17) => Effect<T18, E18, C18>,
1187
+ f19: (value: T18) => Effect<T19, E19, C19>,
1188
+ f20: (value: T19) => Effect<T20, E20, C20>
1189
+ ): (
1190
+ start: T0
1191
+ ) => Effect<
1192
+ T20,
1193
+ E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10 | E11 | E12 | E13 | E14 | E15 | E16 | E17 | E18 | E19 | E20,
1194
+ C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10 & C11 & C12 & C13 & C14 & C15 & C16 & C17 & C18 & C19 & C20
1195
+ >;
275
1196
 
276
1197
  /**
277
- * Wraps one Command execution. `path` is the Command's position in the Effect tree rather than its
1198
+ * Wraps one Command execution, or one `Parallel` (`type` `'Parallel'`, `name` `'Parallel'`), whose `op`
1199
+ * runs its branches and returns its decision, even when a branch threw: the run rejects with the throw
1200
+ * once the hook has returned. A hook must call `op` for a `Parallel`; returning without
1201
+ * calling it is legitimate only for a Command, which is how replay works. Only a replay passes `op` an
1202
+ * argument, the recorded decision. `path` is the step's position in the Effect tree rather than its
278
1203
  * position in completion order, so it is the same in a replay as in the recorded run even when
279
- * `Parallel` branches finish in a different order. Hooks that take three parameters are unaffected.
1204
+ * `Parallel` branches finish in a different order. Hooks that take three parameters are unaffected. The
1205
+ * interpreter always passes `path`, so it is declared as present, and a wrapper that calls another
1206
+ * `StepRunner` has to pass it on: a trace recorded without paths cannot replay a `Parallel`.
280
1207
  */
281
- export type StepRunner = (name: string, type: string, op: () => Promise<unknown>, path?: string) => Promise<unknown>;
1208
+ export type StepRunner = (
1209
+ name: string,
1210
+ type: string,
1211
+ op: (decision?: ParallelDecision) => Promise<unknown>,
1212
+ path: string
1213
+ ) => Promise<unknown>;
282
1214
 
1215
+ /**
1216
+ * Which branch, if any, cancelled a `Parallel`: what a `Parallel`'s step returns and what its trace entry
1217
+ * records, so a replay reproduces the decision rather than recomputing it from timing. `branch: null`
1218
+ * means an enclosing `Parallel` cancelled it.
1219
+ */
1220
+ export type ParallelDecision = { cancelled: false } | { cancelled: true; branch: number | null };
1221
+
1222
+ /** `flowName` is `context.flowName`, or `''` when the context has none; the interpreter always passes it. */
283
1223
  export type RunWrapper = (
284
1224
  effect: Effect<unknown>,
285
1225
  op: () => Promise<SuccessState<unknown> | FailureState<unknown>>,
286
- flowName?: string
1226
+ flowName: string
287
1227
  ) => Promise<SuccessState<unknown> | FailureState<unknown>>;
288
1228
 
289
- export type CommandInterceptor = (command: CommandState<unknown, unknown>, context?: any) => Promise<void>;
1229
+ /**
1230
+ * Runs before each Command; throw to abort. The interpreter awaits whatever it returns, so it need not be
1231
+ * async. A union of two function types rather than one returning `Promise<void> | void`: in a JavaScript
1232
+ * file, a JSDoc `@type` on an async function is its declared signature, and an async function's declared
1233
+ * return type has to be a `Promise`, so the single signature broke every JSDoc-annotated async interceptor.
1234
+ */
1235
+ export type CommandInterceptor =
1236
+ | ((command: CommandState<unknown, unknown>, context?: any) => Promise<void>)
1237
+ | ((command: CommandState<unknown, unknown>, context?: any) => void);
290
1238
 
291
1239
  export interface EffectConfiguration {
292
1240
  onStep?: StepRunner;
293
1241
  onRun?: RunWrapper;
294
1242
  onBeforeCommand?: CommandInterceptor;
295
- retry?: RetryOptions;
296
1243
  }
297
1244
 
298
1245
  /**
299
1246
  * Adds a layer to the global runner's wiring and returns a function that removes it. Layers merge:
300
1247
  * `onStep` and `onRun` nest with the earliest layer outermost, `onBeforeCommand` interceptors all run
301
- * in the order installed, and `retry` merges with later layers winning. Several configurations passed
1248
+ * in the order installed. Several configurations passed
302
1249
  * to one call form one layer, which is the same as installing them in separate calls. Calling with no
303
1250
  * arguments at all removes every layer; a call whose arguments are all `undefined` adds and removes nothing.
1251
+ *
1252
+ * A `retry` key throws a `TypeError`: retry options are per-use, passed to `Retry(effect, options)`.
304
1253
  */
305
1254
  export declare function configureEffect(...configs: (EffectConfiguration | undefined)[]): () => void;
306
1255
 
307
1256
  /**
308
1257
  * A per-call configuration for `runEffect`. With `inherit: true` (default) the call's hooks are added to
309
- * the wiring `configureEffect` installed: where both define a hook the two nest, global outermost, and
310
- * `retry` merges with the call winning. With `inherit: false` the global wiring is ignored, so unset
311
- * slots fall back to the library defaults.
1258
+ * the wiring `configureEffect` installed: where both define a hook the two nest, global outermost. With
1259
+ * `inherit: false` the global wiring is ignored, so an unset hook falls back to the library default.
1260
+ * A `retry` key throws a `TypeError`, as it does for `configureEffect`.
312
1261
  */
313
1262
  export type CallConfiguration = EffectConfiguration & { inherit?: boolean };
314
1263
 
1264
+ /**
1265
+ * A flow whose context type is not `unknown` reads one through `Ask`, so the context is required for it;
1266
+ * the runtime would otherwise hand `Ask` an empty object.
1267
+ */
315
1268
  export declare function runEffect<T, E = unknown, Ctx = unknown>(
316
1269
  effect: Effect<T, E, Ctx>,
317
- context?: Ctx,
318
- callConfig?: CallConfiguration
1270
+ ...args: unknown extends Ctx
1271
+ ? [context?: Ctx, callConfig?: CallConfiguration]
1272
+ : [context: Ctx, callConfig?: CallConfiguration]
319
1273
  ): Promise<SuccessState<T> | FailureState<E>>;
320
1274
 
321
1275
  export type ReplayStep = {
@@ -324,16 +1278,21 @@ export type ReplayStep = {
324
1278
  * whose branches finish in whatever order they finish in. Prefer `path`.
325
1279
  */
326
1280
  index: number;
327
- /** `cmd.name`, or 'anonymous'. */
1281
+ /** `meta.name`, `cmd.name`, or 'anonymous'; 'Parallel' for a `Parallel`'s step. */
328
1282
  name: string;
329
- /** Always 'Command' today; reserved. */
1283
+ /**
1284
+ * 'Command', or 'Parallel' for the step a `Parallel` records its decision under. A Resolver that
1285
+ * answers a 'Parallel' step with `{ result: ParallelDecision }` has it reproduced; anything else
1286
+ * replays that `Parallel` under timing. A 'Parallel' step does not advance `index`.
1287
+ */
330
1288
  type: string;
331
1289
  /**
332
1290
  * The Command's position in the Effect tree, stable across runs: steps are numbered within a
333
1291
  * subtree, and each `Parallel` branch and `Retry` attempt opens its own prefix. This is what a
334
- * replay matches on, and what a Resolver should key off. Absent on traces recorded before paths.
1292
+ * replay matches on, and what a Resolver should key off. Every step has one; it is a recorded
1293
+ * `TraceEntry` that can lack a path, when it was written by hand or recorded before paths existed.
335
1294
  */
336
- path?: string;
1295
+ path: string;
337
1296
  };
338
1297
 
339
1298
  /**
@@ -345,6 +1304,10 @@ export type ReplayOutcome = { result: unknown } | { error: unknown };
345
1304
 
346
1305
  export type Resolver = (step: ReplayStep) => ReplayOutcome | undefined;
347
1306
 
1307
+ /**
1308
+ * A recorded step: a Command's result or error, or a `Parallel`'s decision, whose `command` is
1309
+ * 'Parallel', whose `path` ends in the `Parallel`'s `p` marker, and whose `result` is a `ParallelDecision`.
1310
+ */
348
1311
  export type TraceEntry = {
349
1312
  command: string;
350
1313
  /**
@@ -353,6 +1316,12 @@ export type TraceEntry = {
353
1316
  */
354
1317
  path?: string;
355
1318
  result?: unknown;
1319
+ /**
1320
+ * Marks a step that threw. The `error` key alone cannot, since JSON drops it when the value is
1321
+ * `undefined`, as it is for `reject()` with no argument. An entry with an `error` and no `threw`, as
1322
+ * older traces have, still replays as a throw.
1323
+ */
1324
+ threw?: true;
356
1325
  error?: unknown;
357
1326
  /** How long the Command took in production, rounded to microseconds. */
358
1327
  durationMs?: number;
@@ -374,8 +1343,11 @@ export interface RecorderOptions {
374
1343
  * `initialInput` and `context` stored on the trace itself. `kind` is `'result'`, `'error'`,
375
1344
  * `'initialInput'`, or `'context'`; `name` is the Command's name for the first two and the kind for
376
1345
  * the last two. This is the single place PII is kept out of a trace, which is why it sees all four.
1346
+ * It is handed a copy, so changing the value in place never reaches the run.
1347
+ * `value` is `any` rather than `unknown` because a redact nearly always spreads or reads it, as in
1348
+ * `{ ...value, password: '[redacted]' }`, and it can be any value a flow handles.
377
1349
  */
378
- redact?: (value: unknown, name: string, kind: 'result' | 'error' | 'initialInput' | 'context') => unknown;
1350
+ redact?: (value: any, name: string, kind: 'result' | 'error' | 'initialInput' | 'context') => unknown;
379
1351
  /** Cap trace length; further steps are counted in `dropped`, not stored. */
380
1352
  maxEntries?: number;
381
1353
  /** Record stack traces for thrown errors. Off by default. */
@@ -386,7 +1358,8 @@ export interface TraceMeta {
386
1358
  initialInput?: unknown;
387
1359
  flowName?: string;
388
1360
  context?: unknown;
389
- version?: string;
1361
+ /** Accepts `undefined`, so `process.env.BUILD_ID` passes under `exactOptionalPropertyTypes`. */
1362
+ version?: string | undefined;
390
1363
  }
391
1364
 
392
1365
  export declare function recorder(options?: RecorderOptions): {
@@ -395,20 +1368,31 @@ export declare function recorder(options?: RecorderOptions): {
395
1368
  toTrace(meta?: TraceMeta): TraceLog;
396
1369
  };
397
1370
 
398
- export declare function recordEffect<T, E = unknown, Ctx = unknown>(
399
- flowFn: (input: any) => Effect<T, E, Ctx>,
400
- initialInput: any,
401
- options?: RecorderOptions & { context?: Ctx; version?: string }
1371
+ /** `recordEffect`'s options: recorder options, plus the context the run gets and a build id. */
1372
+ export type RecordOptions<Ctx = unknown> = RecorderOptions & { context?: Ctx; version?: string | undefined };
1373
+
1374
+ /**
1375
+ * The input is checked against what the flow takes. A flow whose context type is not `unknown` reads
1376
+ * one through `Ask`, so recording it requires `options.context`.
1377
+ */
1378
+ export declare function recordEffect<I, T, E = unknown, Ctx = unknown>(
1379
+ flowFn: (input: I) => Effect<T, E, Ctx>,
1380
+ initialInput: I,
1381
+ ...options: unknown extends Ctx ? [options?: RecordOptions<Ctx>] : [options: RecordOptions<Ctx> & { context: Ctx }]
402
1382
  ): Promise<{ result: SuccessState<T> | FailureState<E>; trace: TraceLog }>;
403
1383
 
404
1384
  export interface ReplayOptions<Ctx = unknown> {
405
- /** Context for `Ask`. Pass the recorded context to reproduce a run faithfully. */
1385
+ /**
1386
+ * Context for `Ask`. With a trace it defaults to the context the trace recorded, so pass one only to
1387
+ * replay with a different one. A Resolver has no recorded context, so pass it one if the flow reads `Ask`.
1388
+ */
406
1389
  context?: Ctx;
407
1390
  /** Strip `Retry` delays so a replay does not wait out production backoff (default `true`). */
408
1391
  fastRetry?: boolean;
409
1392
  /**
410
1393
  * Run the replay inside the global hooks, resolver innermost, so configured hooks observe it
411
- * (default `false`, which ignores the global hooks). Global `retry` defaults apply either way.
1394
+ * (default `false`, which ignores the global hooks). Retry options are per-use, so a replay reads the
1395
+ * same ones the recorded run did.
412
1396
  */
413
1397
  hooks?: boolean;
414
1398
  /**
@@ -458,5 +1442,5 @@ export declare function replayEffect<T, E = unknown, Ctx = unknown>(
458
1442
  export declare function timeTravel<T, E = unknown, Ctx = unknown>(
459
1443
  flowFn: (input: any) => Effect<T, E, Ctx>,
460
1444
  traceLog: TraceLog,
461
- options?: { log?: (...args: any[]) => void; context?: Ctx; version?: string }
1445
+ options?: { log?: (...args: any[]) => void; context?: Ctx; version?: string | undefined }
462
1446
  ): Promise<SuccessState<T> | FailureState<E>>;