effect 2.2.0 → 2.2.2
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/Cause.js.map +1 -1
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Either.js +1 -1
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/Exit.js.map +1 -1
- package/dist/cjs/HashMap.js.map +1 -1
- package/dist/cjs/HashSet.js.map +1 -1
- package/dist/cjs/List.js.map +1 -1
- package/dist/cjs/ReadonlyArray.js.map +1 -1
- package/dist/cjs/ReadonlyRecord.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/internal/cause.js.map +1 -1
- package/dist/cjs/internal/channel.js +3 -3
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +7 -7
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core.js +1 -1
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/hashMap.js.map +1 -1
- package/dist/cjs/internal/hashSet.js.map +1 -1
- package/dist/cjs/internal/scopedRef.js +4 -5
- package/dist/cjs/internal/scopedRef.js.map +1 -1
- package/dist/cjs/internal/stm/stm.js.map +1 -1
- package/dist/cjs/internal/stream.js +1 -4
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/trie.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Cause.d.ts +6 -4
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Chunk.d.ts +16 -16
- package/dist/dts/Chunk.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +31 -31
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +9 -9
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/Exit.d.ts +3 -2
- package/dist/dts/Exit.d.ts.map +1 -1
- package/dist/dts/GroupBy.d.ts +6 -6
- package/dist/dts/GroupBy.d.ts.map +1 -1
- package/dist/dts/HashMap.d.ts +5 -4
- package/dist/dts/HashMap.d.ts.map +1 -1
- package/dist/dts/HashSet.d.ts +6 -5
- package/dist/dts/HashSet.d.ts.map +1 -1
- package/dist/dts/List.d.ts +9 -8
- package/dist/dts/List.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +7 -7
- package/dist/dts/Option.d.ts.map +1 -1
- package/dist/dts/ReadonlyArray.d.ts +25 -23
- package/dist/dts/ReadonlyArray.d.ts.map +1 -1
- package/dist/dts/ReadonlyRecord.d.ts +5 -4
- package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +28 -26
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/SortedSet.d.ts +3 -3
- package/dist/dts/SortedSet.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +37 -37
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/Trie.d.ts +4 -4
- package/dist/dts/Trie.d.ts.map +1 -1
- package/dist/dts/internal/hashMap.d.ts.map +1 -1
- package/dist/dts/internal/stm/stm.d.ts.map +1 -1
- package/dist/dts/internal/version.d.ts +1 -1
- package/dist/esm/Cause.js.map +1 -1
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Either.js +1 -1
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/Exit.js.map +1 -1
- package/dist/esm/HashMap.js.map +1 -1
- package/dist/esm/HashSet.js.map +1 -1
- package/dist/esm/List.js.map +1 -1
- package/dist/esm/ReadonlyArray.js.map +1 -1
- package/dist/esm/ReadonlyRecord.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/internal/cause.js.map +1 -1
- package/dist/esm/internal/channel.js +3 -3
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/core-effect.js +7 -7
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +1 -1
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/hashMap.js.map +1 -1
- package/dist/esm/internal/hashSet.js.map +1 -1
- package/dist/esm/internal/scopedRef.js +4 -5
- package/dist/esm/internal/scopedRef.js.map +1 -1
- package/dist/esm/internal/stm/stm.js.map +1 -1
- package/dist/esm/internal/stream.js +1 -4
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/trie.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/Cause.ts +6 -4
- package/src/Chunk.ts +20 -20
- package/src/Effect.ts +67 -72
- package/src/Either.ts +17 -21
- package/src/Exit.ts +3 -2
- package/src/GroupBy.ts +6 -6
- package/src/HashMap.ts +5 -4
- package/src/HashSet.ts +8 -7
- package/src/List.ts +11 -10
- package/src/Option.ts +8 -8
- package/src/ReadonlyArray.ts +44 -38
- package/src/ReadonlyRecord.ts +13 -10
- package/src/STM.ts +47 -46
- package/src/SortedSet.ts +5 -5
- package/src/Stream.ts +51 -51
- package/src/Trie.ts +4 -4
- package/src/internal/cause.ts +16 -7
- package/src/internal/channel.ts +21 -17
- package/src/internal/core-effect.ts +160 -162
- package/src/internal/core.ts +30 -34
- package/src/internal/groupBy.ts +2 -1
- package/src/internal/hashMap.ts +5 -4
- package/src/internal/hashSet.ts +9 -8
- package/src/internal/scopedRef.ts +34 -54
- package/src/internal/stm/stm.ts +104 -124
- package/src/internal/stream.ts +106 -97
- package/src/internal/trie.ts +3 -2
- package/src/internal/version.ts +1 -1
|
@@ -5,7 +5,6 @@ import { dual, pipe } from "../Function.js"
|
|
|
5
5
|
import { pipeArguments } from "../Pipeable.js"
|
|
6
6
|
import type * as Scope from "../Scope.js"
|
|
7
7
|
import type * as ScopedRef from "../ScopedRef.js"
|
|
8
|
-
import * as effect from "./core-effect.js"
|
|
9
8
|
import * as core from "./core.js"
|
|
10
9
|
import * as circular from "./effect/circular.js"
|
|
11
10
|
import * as fiberRuntime from "./fiberRuntime.js"
|
|
@@ -34,39 +33,30 @@ const close = <A>(self: ScopedRef.ScopedRef<A>): Effect.Effect<never, never, voi
|
|
|
34
33
|
export const fromAcquire = <R, E, A>(
|
|
35
34
|
acquire: Effect.Effect<R, E, A>
|
|
36
35
|
): Effect.Effect<R | Scope.Scope, E, ScopedRef.ScopedRef<A>> =>
|
|
37
|
-
core.
|
|
38
|
-
pipe(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
},
|
|
58
|
-
ref
|
|
59
|
-
}
|
|
60
|
-
return pipe(
|
|
61
|
-
fiberRuntime.addFinalizer<R | Scope.Scope, void>(() => close(scopedRef)),
|
|
62
|
-
core.as(scopedRef)
|
|
63
|
-
)
|
|
64
|
-
})
|
|
65
|
-
)
|
|
36
|
+
core.uninterruptible(
|
|
37
|
+
fiberRuntime.scopeMake().pipe(core.flatMap((newScope) =>
|
|
38
|
+
acquire.pipe(
|
|
39
|
+
core.mapInputContext<R, Scope.Scope | R>(Context.add(fiberRuntime.scopeTag, newScope)),
|
|
40
|
+
core.onError((cause) => newScope.close(core.exitFail(cause))),
|
|
41
|
+
core.flatMap((value) =>
|
|
42
|
+
circular.makeSynchronized([newScope, value] as const).pipe(
|
|
43
|
+
core.flatMap((ref) => {
|
|
44
|
+
const scopedRef: ScopedRef.ScopedRef<A> = {
|
|
45
|
+
[ScopedRefTypeId]: scopedRefVariance,
|
|
46
|
+
pipe() {
|
|
47
|
+
return pipeArguments(this, arguments)
|
|
48
|
+
},
|
|
49
|
+
ref
|
|
50
|
+
}
|
|
51
|
+
return pipe(
|
|
52
|
+
fiberRuntime.addFinalizer<R | Scope.Scope, void>(() => close(scopedRef)),
|
|
53
|
+
core.as(scopedRef)
|
|
54
|
+
)
|
|
55
|
+
})
|
|
66
56
|
)
|
|
67
57
|
)
|
|
68
58
|
)
|
|
69
|
-
)
|
|
59
|
+
))
|
|
70
60
|
)
|
|
71
61
|
|
|
72
62
|
/** @internal */
|
|
@@ -92,38 +82,28 @@ export const set = dual<
|
|
|
92
82
|
) =>
|
|
93
83
|
core.flatten(
|
|
94
84
|
synchronized.modifyEffect(self.ref, ([oldScope, value]) =>
|
|
95
|
-
core.
|
|
96
|
-
pipe(
|
|
97
|
-
fiberRuntime.scopeMake(),
|
|
85
|
+
core.uninterruptible(
|
|
86
|
+
core.scopeClose(oldScope, core.exitUnit).pipe(
|
|
87
|
+
core.zipRight(fiberRuntime.scopeMake()),
|
|
98
88
|
core.flatMap((newScope) =>
|
|
99
|
-
pipe(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
acquire,
|
|
103
|
-
core.mapInputContext<Exclude<R, Scope.Scope>, R>(
|
|
104
|
-
Context.add(fiberRuntime.scopeTag, newScope) as any
|
|
105
|
-
)
|
|
106
|
-
)
|
|
107
|
-
),
|
|
108
|
-
core.exit,
|
|
109
|
-
core.flatMap(
|
|
110
|
-
core.exitMatch({
|
|
89
|
+
core.exit(fiberRuntime.scopeExtend(acquire, newScope)).pipe(
|
|
90
|
+
core.flatMap((exit) =>
|
|
91
|
+
core.exitMatch(exit, {
|
|
111
92
|
onFailure: (cause) =>
|
|
112
|
-
pipe(
|
|
113
|
-
newScope.close(core.exitUnit),
|
|
114
|
-
effect.ignore,
|
|
93
|
+
core.scopeClose(newScope, core.exitUnit).pipe(
|
|
115
94
|
core.as(
|
|
116
95
|
[
|
|
117
|
-
core.failCause(cause) as
|
|
96
|
+
core.failCause(cause) as Effect.Effect<never, E, void>,
|
|
118
97
|
[oldScope, value] as const
|
|
119
98
|
] as const
|
|
120
99
|
)
|
|
121
100
|
),
|
|
122
101
|
onSuccess: (value) =>
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
102
|
+
core.succeed(
|
|
103
|
+
[
|
|
104
|
+
core.unit as Effect.Effect<never, E, void>,
|
|
105
|
+
[newScope, value] as const
|
|
106
|
+
] as const
|
|
127
107
|
)
|
|
128
108
|
})
|
|
129
109
|
)
|
package/src/internal/stm/stm.ts
CHANGED
|
@@ -12,6 +12,7 @@ import * as predicate from "../../Predicate.js"
|
|
|
12
12
|
import type { Predicate, Refinement } from "../../Predicate.js"
|
|
13
13
|
import * as RA from "../../ReadonlyArray.js"
|
|
14
14
|
import type * as STM from "../../STM.js"
|
|
15
|
+
import type { NoInfer } from "../../Types.js"
|
|
15
16
|
import * as effectCore from "../core.js"
|
|
16
17
|
import * as SingleShotGen from "../singleShotGen.js"
|
|
17
18
|
import * as core from "./core.js"
|
|
@@ -337,7 +338,7 @@ export const eventually = <R, E, A>(self: STM.STM<R, E, A>): STM.STM<R, E, A> =>
|
|
|
337
338
|
|
|
338
339
|
/** @internal */
|
|
339
340
|
export const every = dual<
|
|
340
|
-
<A, R, E>(predicate: (a: A) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, boolean>,
|
|
341
|
+
<A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, boolean>,
|
|
341
342
|
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<R, E, boolean>) => STM.STM<R, E, boolean>
|
|
342
343
|
>(
|
|
343
344
|
2,
|
|
@@ -364,7 +365,7 @@ export const every = dual<
|
|
|
364
365
|
|
|
365
366
|
/** @internal */
|
|
366
367
|
export const exists = dual<
|
|
367
|
-
<A, R, E>(predicate: (a: A) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, boolean>,
|
|
368
|
+
<A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, boolean>,
|
|
368
369
|
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<R, E, boolean>) => STM.STM<R, E, boolean>
|
|
369
370
|
>(
|
|
370
371
|
2,
|
|
@@ -391,7 +392,7 @@ export const fiberId: STM.STM<never, never, FiberId.FiberId> = core.effect<never
|
|
|
391
392
|
|
|
392
393
|
/** @internal */
|
|
393
394
|
export const filter = dual<
|
|
394
|
-
<A, R, E>(predicate: (a: A) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, Array<A>>,
|
|
395
|
+
<A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, Array<A>>,
|
|
395
396
|
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<R, E, boolean>) => STM.STM<R, E, Array<A>>
|
|
396
397
|
>(
|
|
397
398
|
2,
|
|
@@ -414,7 +415,7 @@ export const filter = dual<
|
|
|
414
415
|
|
|
415
416
|
/** @internal */
|
|
416
417
|
export const filterNot = dual<
|
|
417
|
-
<A, R, E>(predicate: (a: A) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, Array<A>>,
|
|
418
|
+
<A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, Array<A>>,
|
|
418
419
|
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<R, E, boolean>) => STM.STM<R, E, Array<A>>
|
|
419
420
|
>(
|
|
420
421
|
2,
|
|
@@ -423,117 +424,97 @@ export const filterNot = dual<
|
|
|
423
424
|
)
|
|
424
425
|
|
|
425
426
|
/** @internal */
|
|
426
|
-
export const filterOrDie
|
|
427
|
-
|
|
428
|
-
<A
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
<A
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
<
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
): STM.STM<R, E, B>
|
|
443
|
-
<R, E, A, X extends A>(self: STM.STM<R, E, A>, predicate: Predicate<X>, defect: LazyArg<unknown>): STM.STM<R, E, A>
|
|
444
|
-
}
|
|
445
|
-
>(
|
|
427
|
+
export const filterOrDie: {
|
|
428
|
+
<A, B extends A>(
|
|
429
|
+
refinement: Refinement<NoInfer<A>, B>,
|
|
430
|
+
defect: LazyArg<unknown>
|
|
431
|
+
): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, B>
|
|
432
|
+
<A>(
|
|
433
|
+
predicate: Predicate<NoInfer<A>>,
|
|
434
|
+
defect: LazyArg<unknown>
|
|
435
|
+
): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, A>
|
|
436
|
+
<R, E, A, B extends A>(
|
|
437
|
+
self: STM.STM<R, E, A>,
|
|
438
|
+
refinement: Refinement<A, B>,
|
|
439
|
+
defect: LazyArg<unknown>
|
|
440
|
+
): STM.STM<R, E, B>
|
|
441
|
+
<R, E, A>(self: STM.STM<R, E, A>, predicate: Predicate<A>, defect: LazyArg<unknown>): STM.STM<R, E, A>
|
|
442
|
+
} = dual(
|
|
446
443
|
3,
|
|
447
|
-
<R, E, A
|
|
444
|
+
<R, E, A>(self: STM.STM<R, E, A>, predicate: Predicate<A>, defect: LazyArg<unknown>): STM.STM<R, E, A> =>
|
|
448
445
|
filterOrElse(self, predicate, () => core.dieSync(defect))
|
|
449
446
|
)
|
|
450
447
|
|
|
451
448
|
/** @internal */
|
|
452
|
-
export const filterOrDieMessage
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
>(
|
|
449
|
+
export const filterOrDieMessage: {
|
|
450
|
+
<A, B extends A>(
|
|
451
|
+
refinement: Refinement<NoInfer<A>, B>,
|
|
452
|
+
message: string
|
|
453
|
+
): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, B>
|
|
454
|
+
<A>(predicate: Predicate<NoInfer<A>>, message: string): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, A>
|
|
455
|
+
<R, E, A, B extends A>(self: STM.STM<R, E, A>, refinement: Refinement<A, B>, message: string): STM.STM<R, E, B>
|
|
456
|
+
<R, E, A>(self: STM.STM<R, E, A>, predicate: Predicate<A>, message: string): STM.STM<R, E, A>
|
|
457
|
+
} = dual(
|
|
462
458
|
3,
|
|
463
|
-
(self,
|
|
459
|
+
<R, E, A>(self: STM.STM<R, E, A>, predicate: Predicate<A>, message: string): STM.STM<R, E, A> =>
|
|
460
|
+
filterOrElse(self, predicate, () => core.dieMessage(message))
|
|
464
461
|
)
|
|
465
462
|
|
|
466
463
|
/** @internal */
|
|
467
|
-
export const filterOrElse
|
|
468
|
-
|
|
469
|
-
<A
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
) => STM.STM<R2
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
<
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
): STM.STM<R2 | R, E2 | E, B | A2>
|
|
488
|
-
<R, E, A, X extends A, Y extends A, R2, E2, A2>(
|
|
489
|
-
self: STM.STM<R, E, A>,
|
|
490
|
-
predicate: Predicate<X>,
|
|
491
|
-
orElse: (a: Y) => STM.STM<R2, E2, A2>
|
|
492
|
-
): STM.STM<R2 | R, E2 | E, A | A2>
|
|
493
|
-
}
|
|
494
|
-
>(
|
|
464
|
+
export const filterOrElse: {
|
|
465
|
+
<A, B extends A, R2, E2, C>(
|
|
466
|
+
refinement: Refinement<NoInfer<A>, B>,
|
|
467
|
+
orElse: (a: NoInfer<A>) => STM.STM<R2, E2, C>
|
|
468
|
+
): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R2 | R, E2 | E, B | C>
|
|
469
|
+
<A, R2, E2, B>(
|
|
470
|
+
predicate: Predicate<NoInfer<A>>,
|
|
471
|
+
orElse: (a: NoInfer<A>) => STM.STM<R2, E2, B>
|
|
472
|
+
): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R2 | R, E2 | E, A | B>
|
|
473
|
+
<R, E, A, B extends A, R2, E2, C>(
|
|
474
|
+
self: STM.STM<R, E, A>,
|
|
475
|
+
refinement: Refinement<A, B>,
|
|
476
|
+
orElse: (a: A) => STM.STM<R2, E2, C>
|
|
477
|
+
): STM.STM<R | R2, E | E2, B | C>
|
|
478
|
+
<R, E, A, R2, E2, B>(
|
|
479
|
+
self: STM.STM<R, E, A>,
|
|
480
|
+
predicate: Predicate<A>,
|
|
481
|
+
orElse: (a: A) => STM.STM<R2, E2, B>
|
|
482
|
+
): STM.STM<R | R2, E | E2, A | B>
|
|
483
|
+
} = dual(
|
|
495
484
|
3,
|
|
496
|
-
<R, E, A,
|
|
485
|
+
<R, E, A, R2, E2, B>(
|
|
497
486
|
self: STM.STM<R, E, A>,
|
|
498
|
-
predicate: Predicate<
|
|
499
|
-
orElse: (a:
|
|
500
|
-
): STM.STM<
|
|
501
|
-
core.flatMap(self, (a): STM.STM<
|
|
502
|
-
predicate(a as X) ?
|
|
503
|
-
core.succeed(a) :
|
|
504
|
-
orElse(a as Y))
|
|
487
|
+
predicate: Predicate<A>,
|
|
488
|
+
orElse: (a: A) => STM.STM<R2, E2, B>
|
|
489
|
+
): STM.STM<R | R2, E | E2, A | B> =>
|
|
490
|
+
core.flatMap(self, (a): STM.STM<R2, E2, A | B> => predicate(a) ? core.succeed(a) : orElse(a))
|
|
505
491
|
)
|
|
506
492
|
|
|
507
493
|
/** @internal */
|
|
508
|
-
export const filterOrFail
|
|
509
|
-
|
|
510
|
-
<A
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
<A
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
filterOrElse(
|
|
533
|
-
self,
|
|
534
|
-
predicate,
|
|
535
|
-
(a) => core.failSync(() => orFailWith(a as any))
|
|
536
|
-
))
|
|
494
|
+
export const filterOrFail: {
|
|
495
|
+
<A, B extends A, E2>(
|
|
496
|
+
refinement: Refinement<NoInfer<A>, B>,
|
|
497
|
+
orFailWith: (a: NoInfer<A>) => E2
|
|
498
|
+
): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E2 | E, B>
|
|
499
|
+
<A, E2>(
|
|
500
|
+
predicate: Predicate<NoInfer<A>>,
|
|
501
|
+
orFailWith: (a: NoInfer<A>) => E2
|
|
502
|
+
): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E2 | E, A>
|
|
503
|
+
<R, E, A, B extends A, E2>(
|
|
504
|
+
self: STM.STM<R, E, A>,
|
|
505
|
+
refinement: Refinement<A, B>,
|
|
506
|
+
orFailWith: (a: A) => E2
|
|
507
|
+
): STM.STM<R, E | E2, B>
|
|
508
|
+
<R, E, A, E2>(self: STM.STM<R, E, A>, predicate: Predicate<A>, orFailWith: (a: A) => E2): STM.STM<R, E | E2, A>
|
|
509
|
+
} = dual(
|
|
510
|
+
3,
|
|
511
|
+
<R, E, A, E2>(self: STM.STM<R, E, A>, predicate: Predicate<A>, orFailWith: (a: A) => E2): STM.STM<R, E | E2, A> =>
|
|
512
|
+
filterOrElse(
|
|
513
|
+
self,
|
|
514
|
+
predicate,
|
|
515
|
+
(a) => core.failSync(() => orFailWith(a))
|
|
516
|
+
)
|
|
517
|
+
)
|
|
537
518
|
|
|
538
519
|
/** @internal */
|
|
539
520
|
export const flatten = <R, E, R2, E2, A>(self: STM.STM<R, E, STM.STM<R2, E2, A>>): STM.STM<R | R2, E | E2, A> =>
|
|
@@ -1221,7 +1202,7 @@ export const replicateSTMDiscard = dual<
|
|
|
1221
1202
|
/** @internal */
|
|
1222
1203
|
export const retryUntil = dual<
|
|
1223
1204
|
{
|
|
1224
|
-
<A, B extends A>(refinement: Refinement<A
|
|
1205
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, B>
|
|
1225
1206
|
<A>(predicate: Predicate<A>): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, A>
|
|
1226
1207
|
},
|
|
1227
1208
|
{
|
|
@@ -1328,15 +1309,14 @@ export const summarized = dual<
|
|
|
1328
1309
|
export const suspend = <R, E, A>(evaluate: LazyArg<STM.STM<R, E, A>>): STM.STM<R, E, A> => flatten(core.sync(evaluate))
|
|
1329
1310
|
|
|
1330
1311
|
/** @internal */
|
|
1331
|
-
export const tap
|
|
1332
|
-
<A,
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
>(2, (self, f) => core.flatMap(self, (a) => as(f(a as any), a)))
|
|
1312
|
+
export const tap: {
|
|
1313
|
+
<A, R2, E2, _>(f: (a: A) => STM.STM<R2, E2, _>): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R2 | R, E2 | E, A>
|
|
1314
|
+
<R, E, A, R2, E2, _>(self: STM.STM<R, E, A>, f: (a: A) => STM.STM<R2, E2, _>): STM.STM<R | R2, E | E2, A>
|
|
1315
|
+
} = dual(
|
|
1316
|
+
2,
|
|
1317
|
+
<R, E, A, R2, E2, _>(self: STM.STM<R, E, A>, f: (a: A) => STM.STM<R2, E2, _>): STM.STM<R | R2, E | E2, A> =>
|
|
1318
|
+
core.flatMap(self, (a) => as(f(a), a))
|
|
1319
|
+
)
|
|
1340
1320
|
|
|
1341
1321
|
/** @internal */
|
|
1342
1322
|
export const tapBoth = dual<
|
|
@@ -1362,19 +1342,19 @@ export const tapBoth = dual<
|
|
|
1362
1342
|
}))
|
|
1363
1343
|
|
|
1364
1344
|
/** @internal */
|
|
1365
|
-
export const tapError
|
|
1366
|
-
<E,
|
|
1367
|
-
f: (error:
|
|
1368
|
-
)
|
|
1369
|
-
<R, A, E,
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
) => STM.STM<R2 |
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1345
|
+
export const tapError: {
|
|
1346
|
+
<E, R2, E2, _>(
|
|
1347
|
+
f: (error: NoInfer<E>) => STM.STM<R2, E2, _>
|
|
1348
|
+
): <R, A>(self: STM.STM<R, E, A>) => STM.STM<R2 | R, E | E2, A>
|
|
1349
|
+
<R, A, E, R2, E2, _>(self: STM.STM<R, E, A>, f: (error: E) => STM.STM<R2, E2, _>): STM.STM<R | R2, E | E2, A>
|
|
1350
|
+
} = dual(
|
|
1351
|
+
2,
|
|
1352
|
+
<R, A, E, R2, E2, _>(self: STM.STM<R, E, A>, f: (error: E) => STM.STM<R2, E2, _>): STM.STM<R | R2, E | E2, A> =>
|
|
1353
|
+
core.matchSTM(self, {
|
|
1354
|
+
onFailure: (e) => core.zipRight(f(e), core.fail(e)),
|
|
1355
|
+
onSuccess: core.succeed
|
|
1356
|
+
})
|
|
1357
|
+
)
|
|
1378
1358
|
|
|
1379
1359
|
/** @internal */
|
|
1380
1360
|
export const try_: {
|