effect 3.16.2 → 3.16.3
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/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Effect.d.ts +168 -48
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/internal/core-effect.d.ts.map +1 -1
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/Effect.ts +190 -90
- package/src/internal/core-effect.ts +18 -8
- package/src/internal/version.ts +1 -1
package/src/Effect.ts
CHANGED
|
@@ -7265,6 +7265,64 @@ export const catchSomeDefect: {
|
|
|
7265
7265
|
* @category Error handling
|
|
7266
7266
|
*/
|
|
7267
7267
|
export const catchTag: {
|
|
7268
|
+
/**
|
|
7269
|
+
* Catches and handles specific errors by their `_tag` field, which is used as a
|
|
7270
|
+
* discriminator.
|
|
7271
|
+
*
|
|
7272
|
+
* **When to Use**
|
|
7273
|
+
*
|
|
7274
|
+
* `catchTag` is useful when your errors are tagged with a readonly `_tag` field
|
|
7275
|
+
* that identifies the error type. You can use this function to handle specific
|
|
7276
|
+
* error types by matching the `_tag` value. This allows for precise error
|
|
7277
|
+
* handling, ensuring that only specific errors are caught and handled.
|
|
7278
|
+
*
|
|
7279
|
+
* The error type must have a readonly `_tag` field to use `catchTag`. This
|
|
7280
|
+
* field is used to identify and match errors.
|
|
7281
|
+
*
|
|
7282
|
+
* **Example** (Handling Errors by Tag)
|
|
7283
|
+
*
|
|
7284
|
+
* ```ts
|
|
7285
|
+
* import { Effect, Random } from "effect"
|
|
7286
|
+
*
|
|
7287
|
+
* class HttpError {
|
|
7288
|
+
* readonly _tag = "HttpError"
|
|
7289
|
+
* }
|
|
7290
|
+
*
|
|
7291
|
+
* class ValidationError {
|
|
7292
|
+
* readonly _tag = "ValidationError"
|
|
7293
|
+
* }
|
|
7294
|
+
*
|
|
7295
|
+
* // ┌─── Effect<string, HttpError | ValidationError, never>
|
|
7296
|
+
* // ▼
|
|
7297
|
+
* const program = Effect.gen(function* () {
|
|
7298
|
+
* const n1 = yield* Random.next
|
|
7299
|
+
* const n2 = yield* Random.next
|
|
7300
|
+
* if (n1 < 0.5) {
|
|
7301
|
+
* yield* Effect.fail(new HttpError())
|
|
7302
|
+
* }
|
|
7303
|
+
* if (n2 < 0.5) {
|
|
7304
|
+
* yield* Effect.fail(new ValidationError())
|
|
7305
|
+
* }
|
|
7306
|
+
* return "some result"
|
|
7307
|
+
* })
|
|
7308
|
+
*
|
|
7309
|
+
* // ┌─── Effect<string, ValidationError, never>
|
|
7310
|
+
* // ▼
|
|
7311
|
+
* const recovered = program.pipe(
|
|
7312
|
+
* // Only handle HttpError errors
|
|
7313
|
+
* Effect.catchTag("HttpError", (_HttpError) =>
|
|
7314
|
+
* Effect.succeed("Recovering from HttpError")
|
|
7315
|
+
* )
|
|
7316
|
+
* )
|
|
7317
|
+
* ```
|
|
7318
|
+
*
|
|
7319
|
+
* @see {@link catchTags} for a version that allows you to handle multiple error
|
|
7320
|
+
* types at once.
|
|
7321
|
+
*
|
|
7322
|
+
* @since 2.0.0
|
|
7323
|
+
* @category Error handling
|
|
7324
|
+
*/
|
|
7325
|
+
<E, const K extends RA.NonEmptyReadonlyArray<E extends { _tag: string } ? E["_tag"] : never>>(...tags: K): <A, R>(self: Effect<A, E, R> & "missing error handler") => never
|
|
7268
7326
|
/**
|
|
7269
7327
|
* Catches and handles specific errors by their `_tag` field, which is used as a
|
|
7270
7328
|
* discriminator.
|
|
@@ -7325,6 +7383,64 @@ export const catchTag: {
|
|
|
7325
7383
|
<E, const K extends RA.NonEmptyReadonlyArray<E extends { _tag: string } ? E["_tag"] : never>, A1, E1, R1>(
|
|
7326
7384
|
...args: [...tags: K, f: (e: Extract<NoInfer<E>, { _tag: K[number] }>) => Effect<A1, E1, R1>]
|
|
7327
7385
|
): <A, R>(self: Effect<A, E, R>) => Effect<A | A1, Exclude<E, { _tag: K[number] }> | E1, R | R1>
|
|
7386
|
+
/**
|
|
7387
|
+
* Catches and handles specific errors by their `_tag` field, which is used as a
|
|
7388
|
+
* discriminator.
|
|
7389
|
+
*
|
|
7390
|
+
* **When to Use**
|
|
7391
|
+
*
|
|
7392
|
+
* `catchTag` is useful when your errors are tagged with a readonly `_tag` field
|
|
7393
|
+
* that identifies the error type. You can use this function to handle specific
|
|
7394
|
+
* error types by matching the `_tag` value. This allows for precise error
|
|
7395
|
+
* handling, ensuring that only specific errors are caught and handled.
|
|
7396
|
+
*
|
|
7397
|
+
* The error type must have a readonly `_tag` field to use `catchTag`. This
|
|
7398
|
+
* field is used to identify and match errors.
|
|
7399
|
+
*
|
|
7400
|
+
* **Example** (Handling Errors by Tag)
|
|
7401
|
+
*
|
|
7402
|
+
* ```ts
|
|
7403
|
+
* import { Effect, Random } from "effect"
|
|
7404
|
+
*
|
|
7405
|
+
* class HttpError {
|
|
7406
|
+
* readonly _tag = "HttpError"
|
|
7407
|
+
* }
|
|
7408
|
+
*
|
|
7409
|
+
* class ValidationError {
|
|
7410
|
+
* readonly _tag = "ValidationError"
|
|
7411
|
+
* }
|
|
7412
|
+
*
|
|
7413
|
+
* // ┌─── Effect<string, HttpError | ValidationError, never>
|
|
7414
|
+
* // ▼
|
|
7415
|
+
* const program = Effect.gen(function* () {
|
|
7416
|
+
* const n1 = yield* Random.next
|
|
7417
|
+
* const n2 = yield* Random.next
|
|
7418
|
+
* if (n1 < 0.5) {
|
|
7419
|
+
* yield* Effect.fail(new HttpError())
|
|
7420
|
+
* }
|
|
7421
|
+
* if (n2 < 0.5) {
|
|
7422
|
+
* yield* Effect.fail(new ValidationError())
|
|
7423
|
+
* }
|
|
7424
|
+
* return "some result"
|
|
7425
|
+
* })
|
|
7426
|
+
*
|
|
7427
|
+
* // ┌─── Effect<string, ValidationError, never>
|
|
7428
|
+
* // ▼
|
|
7429
|
+
* const recovered = program.pipe(
|
|
7430
|
+
* // Only handle HttpError errors
|
|
7431
|
+
* Effect.catchTag("HttpError", (_HttpError) =>
|
|
7432
|
+
* Effect.succeed("Recovering from HttpError")
|
|
7433
|
+
* )
|
|
7434
|
+
* )
|
|
7435
|
+
* ```
|
|
7436
|
+
*
|
|
7437
|
+
* @see {@link catchTags} for a version that allows you to handle multiple error
|
|
7438
|
+
* types at once.
|
|
7439
|
+
*
|
|
7440
|
+
* @since 2.0.0
|
|
7441
|
+
* @category Error handling
|
|
7442
|
+
*/
|
|
7443
|
+
<A, E, R, const K extends RA.NonEmptyReadonlyArray<E extends { _tag: string } ? E["_tag"] : never>>(self: Effect<A, E, R> & "missing error handler", ...tags: K): never
|
|
7328
7444
|
/**
|
|
7329
7445
|
* Catches and handles specific errors by their `_tag` field, which is used as a
|
|
7330
7446
|
* discriminator.
|
|
@@ -28166,21 +28282,20 @@ export namespace fn {
|
|
|
28166
28282
|
* @category Models
|
|
28167
28283
|
*/
|
|
28168
28284
|
export type Gen = {
|
|
28169
|
-
<
|
|
28170
|
-
body: (
|
|
28171
|
-
): (
|
|
28285
|
+
<Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>>(
|
|
28286
|
+
body: (...args: Args) => Generator<Eff, AEff, never>
|
|
28287
|
+
): (...args: Args) => Effect<
|
|
28172
28288
|
AEff,
|
|
28173
28289
|
[Eff] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never,
|
|
28174
28290
|
[Eff] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never
|
|
28175
28291
|
>
|
|
28176
28292
|
<
|
|
28177
|
-
Self,
|
|
28178
28293
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28179
28294
|
AEff,
|
|
28180
28295
|
Args extends Array<any>,
|
|
28181
28296
|
A extends Effect<any, any, any>
|
|
28182
28297
|
>(
|
|
28183
|
-
body: (
|
|
28298
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28184
28299
|
a: (
|
|
28185
28300
|
_: Effect<
|
|
28186
28301
|
AEff,
|
|
@@ -28189,16 +28304,15 @@ export namespace fn {
|
|
|
28189
28304
|
>,
|
|
28190
28305
|
...args: NoInfer<Args>
|
|
28191
28306
|
) => A
|
|
28192
|
-
): (
|
|
28307
|
+
): (...args: Args) => Effect.AsEffect<A>
|
|
28193
28308
|
<
|
|
28194
|
-
Self,
|
|
28195
28309
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28196
28310
|
AEff,
|
|
28197
28311
|
Args extends Array<any>,
|
|
28198
28312
|
A,
|
|
28199
28313
|
B extends Effect<any, any, any>
|
|
28200
28314
|
>(
|
|
28201
|
-
body: (
|
|
28315
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28202
28316
|
a: (
|
|
28203
28317
|
_: Effect<
|
|
28204
28318
|
AEff,
|
|
@@ -28208,9 +28322,8 @@ export namespace fn {
|
|
|
28208
28322
|
...args: NoInfer<Args>
|
|
28209
28323
|
) => A,
|
|
28210
28324
|
b: (_: A, ...args: NoInfer<Args>) => B
|
|
28211
|
-
): (
|
|
28325
|
+
): (...args: Args) => Effect.AsEffect<B>
|
|
28212
28326
|
<
|
|
28213
|
-
Self,
|
|
28214
28327
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28215
28328
|
AEff,
|
|
28216
28329
|
Args extends Array<any>,
|
|
@@ -28218,7 +28331,7 @@ export namespace fn {
|
|
|
28218
28331
|
B,
|
|
28219
28332
|
C extends Effect<any, any, any>
|
|
28220
28333
|
>(
|
|
28221
|
-
body: (
|
|
28334
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28222
28335
|
a: (
|
|
28223
28336
|
_: Effect<
|
|
28224
28337
|
AEff,
|
|
@@ -28229,9 +28342,8 @@ export namespace fn {
|
|
|
28229
28342
|
) => A,
|
|
28230
28343
|
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
28231
28344
|
c: (_: B, ...args: NoInfer<Args>) => C
|
|
28232
|
-
): (
|
|
28345
|
+
): (...args: Args) => Effect.AsEffect<C>
|
|
28233
28346
|
<
|
|
28234
|
-
Self,
|
|
28235
28347
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28236
28348
|
AEff,
|
|
28237
28349
|
Args extends Array<any>,
|
|
@@ -28240,7 +28352,7 @@ export namespace fn {
|
|
|
28240
28352
|
C,
|
|
28241
28353
|
D extends Effect<any, any, any>
|
|
28242
28354
|
>(
|
|
28243
|
-
body: (
|
|
28355
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28244
28356
|
a: (
|
|
28245
28357
|
_: Effect<
|
|
28246
28358
|
AEff,
|
|
@@ -28252,9 +28364,8 @@ export namespace fn {
|
|
|
28252
28364
|
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
28253
28365
|
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
28254
28366
|
d: (_: C, ...args: NoInfer<Args>) => D
|
|
28255
|
-
): (
|
|
28367
|
+
): (...args: Args) => Effect.AsEffect<D>
|
|
28256
28368
|
<
|
|
28257
|
-
Self,
|
|
28258
28369
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28259
28370
|
AEff,
|
|
28260
28371
|
Args extends Array<any>,
|
|
@@ -28264,7 +28375,7 @@ export namespace fn {
|
|
|
28264
28375
|
D,
|
|
28265
28376
|
E extends Effect<any, any, any>
|
|
28266
28377
|
>(
|
|
28267
|
-
body: (
|
|
28378
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28268
28379
|
a: (
|
|
28269
28380
|
_: Effect<
|
|
28270
28381
|
AEff,
|
|
@@ -28277,9 +28388,8 @@ export namespace fn {
|
|
|
28277
28388
|
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
28278
28389
|
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
28279
28390
|
e: (_: D, ...args: NoInfer<Args>) => E
|
|
28280
|
-
): (
|
|
28391
|
+
): (...args: Args) => Effect.AsEffect<E>
|
|
28281
28392
|
<
|
|
28282
|
-
Self,
|
|
28283
28393
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28284
28394
|
AEff,
|
|
28285
28395
|
Args extends Array<any>,
|
|
@@ -28290,7 +28400,7 @@ export namespace fn {
|
|
|
28290
28400
|
E,
|
|
28291
28401
|
F extends Effect<any, any, any>
|
|
28292
28402
|
>(
|
|
28293
|
-
body: (
|
|
28403
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28294
28404
|
a: (
|
|
28295
28405
|
_: Effect<
|
|
28296
28406
|
AEff,
|
|
@@ -28304,9 +28414,8 @@ export namespace fn {
|
|
|
28304
28414
|
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
28305
28415
|
e: (_: D, ...args: NoInfer<Args>) => E,
|
|
28306
28416
|
f: (_: E, ...args: NoInfer<Args>) => F
|
|
28307
|
-
): (
|
|
28417
|
+
): (...args: Args) => Effect.AsEffect<F>
|
|
28308
28418
|
<
|
|
28309
|
-
Self,
|
|
28310
28419
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28311
28420
|
AEff,
|
|
28312
28421
|
Args extends Array<any>,
|
|
@@ -28318,7 +28427,7 @@ export namespace fn {
|
|
|
28318
28427
|
F,
|
|
28319
28428
|
G extends Effect<any, any, any>
|
|
28320
28429
|
>(
|
|
28321
|
-
body: (
|
|
28430
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28322
28431
|
a: (
|
|
28323
28432
|
_: Effect<
|
|
28324
28433
|
AEff,
|
|
@@ -28333,9 +28442,8 @@ export namespace fn {
|
|
|
28333
28442
|
e: (_: D, ...args: NoInfer<Args>) => E,
|
|
28334
28443
|
f: (_: E, ...args: NoInfer<Args>) => F,
|
|
28335
28444
|
g: (_: F, ...args: NoInfer<Args>) => G
|
|
28336
|
-
): (
|
|
28445
|
+
): (...args: Args) => Effect.AsEffect<G>
|
|
28337
28446
|
<
|
|
28338
|
-
Self,
|
|
28339
28447
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28340
28448
|
AEff,
|
|
28341
28449
|
Args extends Array<any>,
|
|
@@ -28348,7 +28456,7 @@ export namespace fn {
|
|
|
28348
28456
|
G,
|
|
28349
28457
|
H extends Effect<any, any, any>
|
|
28350
28458
|
>(
|
|
28351
|
-
body: (
|
|
28459
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28352
28460
|
a: (
|
|
28353
28461
|
_: Effect<
|
|
28354
28462
|
AEff,
|
|
@@ -28364,9 +28472,8 @@ export namespace fn {
|
|
|
28364
28472
|
f: (_: E, ...args: NoInfer<Args>) => F,
|
|
28365
28473
|
g: (_: F, ...args: NoInfer<Args>) => G,
|
|
28366
28474
|
h: (_: G, ...args: NoInfer<Args>) => H
|
|
28367
|
-
): (
|
|
28475
|
+
): (...args: Args) => Effect.AsEffect<H>
|
|
28368
28476
|
<
|
|
28369
|
-
Self,
|
|
28370
28477
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28371
28478
|
AEff,
|
|
28372
28479
|
Args extends Array<any>,
|
|
@@ -28380,7 +28487,7 @@ export namespace fn {
|
|
|
28380
28487
|
H,
|
|
28381
28488
|
I extends Effect<any, any, any>
|
|
28382
28489
|
>(
|
|
28383
|
-
body: (
|
|
28490
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28384
28491
|
a: (
|
|
28385
28492
|
_: Effect<
|
|
28386
28493
|
AEff,
|
|
@@ -28397,7 +28504,7 @@ export namespace fn {
|
|
|
28397
28504
|
g: (_: F, ...args: NoInfer<Args>) => G,
|
|
28398
28505
|
h: (_: G, ...args: NoInfer<Args>) => H,
|
|
28399
28506
|
i: (_: H, ...args: NoInfer<Args>) => I
|
|
28400
|
-
): (
|
|
28507
|
+
): (...args: Args) => Effect.AsEffect<I>
|
|
28401
28508
|
}
|
|
28402
28509
|
|
|
28403
28510
|
/**
|
|
@@ -28405,50 +28512,50 @@ export namespace fn {
|
|
|
28405
28512
|
* @category Models
|
|
28406
28513
|
*/
|
|
28407
28514
|
export type NonGen = {
|
|
28408
|
-
<
|
|
28409
|
-
body: (
|
|
28410
|
-
): (
|
|
28411
|
-
<
|
|
28412
|
-
body: (
|
|
28515
|
+
<Eff extends Effect<any, any, any>, Args extends Array<any>>(
|
|
28516
|
+
body: (...args: Args) => Eff
|
|
28517
|
+
): (...args: Args) => Effect.AsEffect<Eff>
|
|
28518
|
+
<Eff extends Effect<any, any, any>, A, Args extends Array<any>>(
|
|
28519
|
+
body: (...args: Args) => A,
|
|
28413
28520
|
a: (_: A, ...args: NoInfer<Args>) => Eff
|
|
28414
|
-
): (
|
|
28415
|
-
<
|
|
28416
|
-
body: (
|
|
28521
|
+
): (...args: Args) => Effect.AsEffect<Eff>
|
|
28522
|
+
<Eff extends Effect<any, any, any>, A, B, Args extends Array<any>>(
|
|
28523
|
+
body: (...args: Args) => A,
|
|
28417
28524
|
a: (_: A, ...args: NoInfer<Args>) => B,
|
|
28418
28525
|
b: (_: B, ...args: NoInfer<Args>) => Eff
|
|
28419
|
-
): (
|
|
28420
|
-
<
|
|
28421
|
-
body: (
|
|
28526
|
+
): (...args: Args) => Effect.AsEffect<Eff>
|
|
28527
|
+
<Eff extends Effect<any, any, any>, A, B, C, Args extends Array<any>>(
|
|
28528
|
+
body: (...args: Args) => A,
|
|
28422
28529
|
a: (_: A, ...args: NoInfer<Args>) => B,
|
|
28423
28530
|
b: (_: B, ...args: NoInfer<Args>) => C,
|
|
28424
28531
|
c: (_: C, ...args: NoInfer<Args>) => Eff
|
|
28425
|
-
): (
|
|
28426
|
-
<
|
|
28427
|
-
body: (
|
|
28532
|
+
): (...args: Args) => Effect.AsEffect<Eff>
|
|
28533
|
+
<Eff extends Effect<any, any, any>, A, B, C, D, Args extends Array<any>>(
|
|
28534
|
+
body: (...args: Args) => A,
|
|
28428
28535
|
a: (_: A, ...args: NoInfer<Args>) => B,
|
|
28429
28536
|
b: (_: B, ...args: NoInfer<Args>) => C,
|
|
28430
28537
|
c: (_: C, ...args: NoInfer<Args>) => D,
|
|
28431
28538
|
d: (_: D, ...args: NoInfer<Args>) => Eff
|
|
28432
|
-
): (
|
|
28433
|
-
<
|
|
28434
|
-
body: (
|
|
28539
|
+
): (...args: Args) => Effect.AsEffect<Eff>
|
|
28540
|
+
<Eff extends Effect<any, any, any>, A, B, C, D, E, Args extends Array<any>>(
|
|
28541
|
+
body: (...args: Args) => A,
|
|
28435
28542
|
a: (_: A, ...args: NoInfer<Args>) => B,
|
|
28436
28543
|
b: (_: B, ...args: NoInfer<Args>) => C,
|
|
28437
28544
|
c: (_: C, ...args: NoInfer<Args>) => D,
|
|
28438
28545
|
d: (_: D, ...args: NoInfer<Args>) => E,
|
|
28439
28546
|
e: (_: E, ...args: NoInfer<Args>) => Eff
|
|
28440
|
-
): (
|
|
28441
|
-
<
|
|
28442
|
-
body: (
|
|
28547
|
+
): (...args: Args) => Effect.AsEffect<Eff>
|
|
28548
|
+
<Eff extends Effect<any, any, any>, A, B, C, D, E, F, Args extends Array<any>>(
|
|
28549
|
+
body: (...args: Args) => A,
|
|
28443
28550
|
a: (_: A, ...args: NoInfer<Args>) => B,
|
|
28444
28551
|
b: (_: B, ...args: NoInfer<Args>) => C,
|
|
28445
28552
|
c: (_: C, ...args: NoInfer<Args>) => D,
|
|
28446
28553
|
d: (_: D, ...args: NoInfer<Args>) => E,
|
|
28447
28554
|
e: (_: E, ...args: NoInfer<Args>) => F,
|
|
28448
28555
|
f: (_: F, ...args: NoInfer<Args>) => Eff
|
|
28449
|
-
): (
|
|
28450
|
-
<
|
|
28451
|
-
body: (
|
|
28556
|
+
): (...args: Args) => Effect.AsEffect<Eff>
|
|
28557
|
+
<Eff extends Effect<any, any, any>, A, B, C, D, E, F, G, Args extends Array<any>>(
|
|
28558
|
+
body: (...args: Args) => A,
|
|
28452
28559
|
a: (_: A, ...args: NoInfer<Args>) => B,
|
|
28453
28560
|
b: (_: B, ...args: NoInfer<Args>) => C,
|
|
28454
28561
|
c: (_: C, ...args: NoInfer<Args>) => D,
|
|
@@ -28456,9 +28563,9 @@ export namespace fn {
|
|
|
28456
28563
|
e: (_: E, ...args: NoInfer<Args>) => F,
|
|
28457
28564
|
f: (_: F, ...args: NoInfer<Args>) => G,
|
|
28458
28565
|
g: (_: G, ...args: NoInfer<Args>) => Eff
|
|
28459
|
-
): (
|
|
28460
|
-
<
|
|
28461
|
-
body: (
|
|
28566
|
+
): (...args: Args) => Effect.AsEffect<Eff>
|
|
28567
|
+
<Eff extends Effect<any, any, any>, A, B, C, D, E, F, G, H, Args extends Array<any>>(
|
|
28568
|
+
body: (...args: Args) => A,
|
|
28462
28569
|
a: (_: A, ...args: NoInfer<Args>) => B,
|
|
28463
28570
|
b: (_: B, ...args: NoInfer<Args>) => C,
|
|
28464
28571
|
c: (_: C, ...args: NoInfer<Args>) => D,
|
|
@@ -28467,9 +28574,9 @@ export namespace fn {
|
|
|
28467
28574
|
f: (_: F, ...args: NoInfer<Args>) => G,
|
|
28468
28575
|
g: (_: G, ...args: NoInfer<Args>) => H,
|
|
28469
28576
|
h: (_: H, ...args: NoInfer<Args>) => Eff
|
|
28470
|
-
): (
|
|
28471
|
-
<
|
|
28472
|
-
body: (
|
|
28577
|
+
): (...args: Args) => Effect.AsEffect<Eff>
|
|
28578
|
+
<Eff extends Effect<any, any, any>, A, B, C, D, E, F, G, H, I, Args extends Array<any>>(
|
|
28579
|
+
body: (...args: Args) => A,
|
|
28473
28580
|
a: (_: A, ...args: NoInfer<Args>) => B,
|
|
28474
28581
|
b: (_: B, ...args: NoInfer<Args>) => C,
|
|
28475
28582
|
c: (_: C, ...args: NoInfer<Args>) => D,
|
|
@@ -28479,7 +28586,7 @@ export namespace fn {
|
|
|
28479
28586
|
g: (_: G, ...args: NoInfer<Args>) => H,
|
|
28480
28587
|
h: (_: H, ...args: NoInfer<Args>) => I,
|
|
28481
28588
|
i: (_: H, ...args: NoInfer<Args>) => Eff
|
|
28482
|
-
): (
|
|
28589
|
+
): (...args: Args) => Effect.AsEffect<Eff>
|
|
28483
28590
|
}
|
|
28484
28591
|
|
|
28485
28592
|
/**
|
|
@@ -28487,15 +28594,15 @@ export namespace fn {
|
|
|
28487
28594
|
* @category Models
|
|
28488
28595
|
*/
|
|
28489
28596
|
export type Untraced = {
|
|
28490
|
-
<
|
|
28491
|
-
body: (
|
|
28492
|
-
): (
|
|
28597
|
+
<Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>>(
|
|
28598
|
+
body: (...args: Args) => Generator<Eff, AEff, never>
|
|
28599
|
+
): (...args: Args) => Effect<
|
|
28493
28600
|
AEff,
|
|
28494
28601
|
[Eff] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never,
|
|
28495
28602
|
[Eff] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never
|
|
28496
28603
|
>
|
|
28497
|
-
<
|
|
28498
|
-
body: (
|
|
28604
|
+
<Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A>(
|
|
28605
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28499
28606
|
a: (
|
|
28500
28607
|
_: Effect<
|
|
28501
28608
|
AEff,
|
|
@@ -28504,9 +28611,9 @@ export namespace fn {
|
|
|
28504
28611
|
>,
|
|
28505
28612
|
...args: NoInfer<Args>
|
|
28506
28613
|
) => A
|
|
28507
|
-
): (
|
|
28508
|
-
<
|
|
28509
|
-
body: (
|
|
28614
|
+
): (...args: Args) => A
|
|
28615
|
+
<Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A, B>(
|
|
28616
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28510
28617
|
a: (
|
|
28511
28618
|
_: Effect<
|
|
28512
28619
|
AEff,
|
|
@@ -28516,9 +28623,8 @@ export namespace fn {
|
|
|
28516
28623
|
...args: NoInfer<Args>
|
|
28517
28624
|
) => A,
|
|
28518
28625
|
b: (_: A, ...args: NoInfer<Args>) => B
|
|
28519
|
-
): (
|
|
28626
|
+
): (...args: Args) => B
|
|
28520
28627
|
<
|
|
28521
|
-
Self,
|
|
28522
28628
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28523
28629
|
AEff,
|
|
28524
28630
|
Args extends Array<any>,
|
|
@@ -28526,7 +28632,7 @@ export namespace fn {
|
|
|
28526
28632
|
B,
|
|
28527
28633
|
C
|
|
28528
28634
|
>(
|
|
28529
|
-
body: (
|
|
28635
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28530
28636
|
a: (
|
|
28531
28637
|
_: Effect<
|
|
28532
28638
|
AEff,
|
|
@@ -28537,9 +28643,8 @@ export namespace fn {
|
|
|
28537
28643
|
) => A,
|
|
28538
28644
|
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
28539
28645
|
c: (_: B, ...args: NoInfer<Args>) => C
|
|
28540
|
-
): (
|
|
28646
|
+
): (...args: Args) => C
|
|
28541
28647
|
<
|
|
28542
|
-
Self,
|
|
28543
28648
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28544
28649
|
AEff,
|
|
28545
28650
|
Args extends Array<any>,
|
|
@@ -28548,7 +28653,7 @@ export namespace fn {
|
|
|
28548
28653
|
C,
|
|
28549
28654
|
D
|
|
28550
28655
|
>(
|
|
28551
|
-
body: (
|
|
28656
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28552
28657
|
a: (
|
|
28553
28658
|
_: Effect<
|
|
28554
28659
|
AEff,
|
|
@@ -28560,9 +28665,8 @@ export namespace fn {
|
|
|
28560
28665
|
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
28561
28666
|
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
28562
28667
|
d: (_: C, ...args: NoInfer<Args>) => D
|
|
28563
|
-
): (
|
|
28668
|
+
): (...args: Args) => D
|
|
28564
28669
|
<
|
|
28565
|
-
Self,
|
|
28566
28670
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28567
28671
|
AEff,
|
|
28568
28672
|
Args extends Array<any>,
|
|
@@ -28572,7 +28676,7 @@ export namespace fn {
|
|
|
28572
28676
|
D,
|
|
28573
28677
|
E
|
|
28574
28678
|
>(
|
|
28575
|
-
body: (
|
|
28679
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28576
28680
|
a: (
|
|
28577
28681
|
_: Effect<
|
|
28578
28682
|
AEff,
|
|
@@ -28585,9 +28689,8 @@ export namespace fn {
|
|
|
28585
28689
|
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
28586
28690
|
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
28587
28691
|
e: (_: D, ...args: NoInfer<Args>) => E
|
|
28588
|
-
): (
|
|
28692
|
+
): (...args: Args) => E
|
|
28589
28693
|
<
|
|
28590
|
-
Self,
|
|
28591
28694
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28592
28695
|
AEff,
|
|
28593
28696
|
Args extends Array<any>,
|
|
@@ -28598,7 +28701,7 @@ export namespace fn {
|
|
|
28598
28701
|
E,
|
|
28599
28702
|
F
|
|
28600
28703
|
>(
|
|
28601
|
-
body: (
|
|
28704
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28602
28705
|
a: (
|
|
28603
28706
|
_: Effect<
|
|
28604
28707
|
AEff,
|
|
@@ -28612,9 +28715,8 @@ export namespace fn {
|
|
|
28612
28715
|
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
28613
28716
|
e: (_: D, ...args: NoInfer<Args>) => E,
|
|
28614
28717
|
f: (_: E, ...args: NoInfer<Args>) => F
|
|
28615
|
-
): (
|
|
28718
|
+
): (...args: Args) => F
|
|
28616
28719
|
<
|
|
28617
|
-
Self,
|
|
28618
28720
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28619
28721
|
AEff,
|
|
28620
28722
|
Args extends Array<any>,
|
|
@@ -28626,7 +28728,7 @@ export namespace fn {
|
|
|
28626
28728
|
F,
|
|
28627
28729
|
G
|
|
28628
28730
|
>(
|
|
28629
|
-
body: (
|
|
28731
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28630
28732
|
a: (
|
|
28631
28733
|
_: Effect<
|
|
28632
28734
|
AEff,
|
|
@@ -28641,9 +28743,8 @@ export namespace fn {
|
|
|
28641
28743
|
e: (_: D, ...args: NoInfer<Args>) => E,
|
|
28642
28744
|
f: (_: E, ...args: NoInfer<Args>) => F,
|
|
28643
28745
|
g: (_: F, ...args: NoInfer<Args>) => G
|
|
28644
|
-
): (
|
|
28746
|
+
): (...args: Args) => G
|
|
28645
28747
|
<
|
|
28646
|
-
Self,
|
|
28647
28748
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28648
28749
|
AEff,
|
|
28649
28750
|
Args extends Array<any>,
|
|
@@ -28656,7 +28757,7 @@ export namespace fn {
|
|
|
28656
28757
|
G,
|
|
28657
28758
|
H
|
|
28658
28759
|
>(
|
|
28659
|
-
body: (
|
|
28760
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28660
28761
|
a: (
|
|
28661
28762
|
_: Effect<
|
|
28662
28763
|
AEff,
|
|
@@ -28672,9 +28773,8 @@ export namespace fn {
|
|
|
28672
28773
|
f: (_: E, ...args: NoInfer<Args>) => F,
|
|
28673
28774
|
g: (_: F, ...args: NoInfer<Args>) => G,
|
|
28674
28775
|
h: (_: G, ...args: NoInfer<Args>) => H
|
|
28675
|
-
): (
|
|
28776
|
+
): (...args: Args) => H
|
|
28676
28777
|
<
|
|
28677
|
-
Self,
|
|
28678
28778
|
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
28679
28779
|
AEff,
|
|
28680
28780
|
Args extends Array<any>,
|
|
@@ -28688,7 +28788,7 @@ export namespace fn {
|
|
|
28688
28788
|
H,
|
|
28689
28789
|
I
|
|
28690
28790
|
>(
|
|
28691
|
-
body: (
|
|
28791
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
28692
28792
|
a: (
|
|
28693
28793
|
_: Effect<
|
|
28694
28794
|
AEff,
|
|
@@ -28705,7 +28805,7 @@ export namespace fn {
|
|
|
28705
28805
|
g: (_: F, ...args: NoInfer<Args>) => G,
|
|
28706
28806
|
h: (_: G, ...args: NoInfer<Args>) => H,
|
|
28707
28807
|
i: (_: H, ...args: NoInfer<Args>) => I
|
|
28708
|
-
): (
|
|
28808
|
+
): (...args: Args) => I
|
|
28709
28809
|
}
|
|
28710
28810
|
}
|
|
28711
28811
|
|
|
@@ -236,19 +236,29 @@ export const catchSomeDefect = dual<
|
|
|
236
236
|
)
|
|
237
237
|
|
|
238
238
|
/* @internal */
|
|
239
|
-
export const catchTag
|
|
239
|
+
export const catchTag: {
|
|
240
|
+
<E, const K extends Arr.NonEmptyReadonlyArray<E extends { _tag: string } ? E["_tag"] : never>>(
|
|
241
|
+
...tags: K
|
|
242
|
+
): <A, R>(self: Effect.Effect<A, E, R>) => never
|
|
240
243
|
<E, const K extends Arr.NonEmptyReadonlyArray<E extends { _tag: string } ? E["_tag"] : never>, A1, E1, R1>(
|
|
241
|
-
...args: [...tags: K, f: (e: Extract<NoInfer<E>, { _tag: K[number] }>) => Effect.Effect<A1, E1, R1>]
|
|
242
|
-
)
|
|
244
|
+
...args: [...tags: K, f: (e: Extract<Types.NoInfer<E>, { _tag: K[number] }>) => Effect.Effect<A1, E1, R1>]
|
|
245
|
+
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A1, Exclude<E, { _tag: K[number] }> | E1, R | R1>
|
|
246
|
+
<A, E, R, const K extends Arr.NonEmptyReadonlyArray<E extends { _tag: string } ? E["_tag"] : never>>(
|
|
247
|
+
self: Effect.Effect<A, E, R>,
|
|
248
|
+
...tags: K
|
|
249
|
+
): never
|
|
243
250
|
<A, E, R, const K extends Arr.NonEmptyReadonlyArray<E extends { _tag: string } ? E["_tag"] : never>, R1, E1, A1>(
|
|
244
251
|
self: Effect.Effect<A, E, R>,
|
|
245
|
-
...args: [...tags: K, f: (e: Extract<NoInfer<E>, { _tag: K[number] }>) => Effect.Effect<A1, E1, R1>]
|
|
246
|
-
)
|
|
247
|
-
|
|
252
|
+
...args: [...tags: K, f: (e: Extract<Types.NoInfer<E>, { _tag: K[number] }>) => Effect.Effect<A1, E1, R1>]
|
|
253
|
+
): Effect.Effect<A | A1, Exclude<E, { _tag: K[number] }> | E1, R | R1>
|
|
254
|
+
} = dual(
|
|
248
255
|
(args: any) => core.isEffect(args[0]),
|
|
249
256
|
<A, E, R, const K extends Arr.NonEmptyReadonlyArray<E extends { _tag: string } ? E["_tag"] : never>, R1, E1, A1>(
|
|
250
257
|
self: Effect.Effect<A, E, R>,
|
|
251
|
-
...args: [
|
|
258
|
+
...args: [
|
|
259
|
+
...tags: K & { [I in keyof K]: E extends { _tag: string } ? E["_tag"] : never },
|
|
260
|
+
f: (e: Extract<Types.NoInfer<E>, { _tag: K[number] }>) => Effect.Effect<A1, E1, R1>
|
|
261
|
+
]
|
|
252
262
|
): Effect.Effect<A | A1, Exclude<E, { _tag: K[number] }> | E1, R | R1> => {
|
|
253
263
|
const f = args[args.length - 1] as any
|
|
254
264
|
let predicate: Predicate.Predicate<E>
|
|
@@ -266,7 +276,7 @@ export const catchTag = dual<
|
|
|
266
276
|
}
|
|
267
277
|
return core.catchIf(self, predicate as Predicate.Refinement<E, Extract<E, { _tag: K[number] }>>, f) as any
|
|
268
278
|
}
|
|
269
|
-
)
|
|
279
|
+
) as any
|
|
270
280
|
|
|
271
281
|
/** @internal */
|
|
272
282
|
export const catchTags: {
|
package/src/internal/version.ts
CHANGED