effect 2.3.8 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/BigInt.js +14 -1
- package/dist/cjs/BigInt.js.map +1 -1
- package/dist/cjs/Effect.js +16 -61
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Either.js +35 -6
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/Equal.js +1 -1
- package/dist/cjs/Equal.js.map +1 -1
- package/dist/cjs/Exit.js +1 -1
- package/dist/cjs/Number.js +25 -1
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/ReadonlyArray.js +2 -2
- package/dist/cjs/ReadonlyArray.js.map +1 -1
- package/dist/cjs/ReadonlyRecord.js +71 -76
- package/dist/cjs/ReadonlyRecord.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Stream.js +3 -23
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/Struct.js +3 -1
- package/dist/cjs/Struct.js.map +1 -1
- package/dist/cjs/TestAnnotation.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js +5 -5
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel/channelState.js +5 -5
- package/dist/cjs/internal/channel/channelState.js.map +1 -1
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/clock.js +3 -4
- package/dist/cjs/internal/clock.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +6 -23
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core.js +11 -27
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +4 -5
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/either.js +3 -3
- package/dist/cjs/internal/either.js.map +1 -1
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/layer.js +0 -2
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/runtime.js +12 -1
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/schedule.js +4 -4
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/sink.js +0 -2
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stm/stm.js +1 -0
- package/dist/cjs/internal/stm/stm.js.map +1 -1
- package/dist/cjs/internal/stream.js +51 -64
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/BigInt.d.ts +7 -0
- package/dist/dts/BigInt.d.ts.map +1 -1
- package/dist/dts/Brand.d.ts +1 -1
- package/dist/dts/Brand.d.ts.map +1 -1
- package/dist/dts/Cause.d.ts +1 -1
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +11 -11
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Chunk.d.ts +3 -3
- package/dist/dts/Config.d.ts +4 -4
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/Cron.d.ts +1 -1
- package/dist/dts/Cron.d.ts.map +1 -1
- package/dist/dts/Differ.d.ts +2 -2
- package/dist/dts/Differ.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +52 -108
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +126 -83
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/Encoding.d.ts +6 -6
- package/dist/dts/Encoding.d.ts.map +1 -1
- package/dist/dts/Equal.d.ts.map +1 -1
- package/dist/dts/Exit.d.ts +2 -2
- package/dist/dts/Fiber.d.ts +2 -2
- package/dist/dts/Fiber.d.ts.map +1 -1
- package/dist/dts/GroupBy.d.ts +12 -12
- package/dist/dts/GroupBy.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +26 -26
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/List.d.ts +2 -2
- package/dist/dts/Logger.d.ts +4 -4
- package/dist/dts/Match.d.ts +2 -2
- package/dist/dts/Match.d.ts.map +1 -1
- package/dist/dts/MergeDecision.d.ts +1 -1
- package/dist/dts/MergeState.d.ts +5 -5
- package/dist/dts/MergeState.d.ts.map +1 -1
- package/dist/dts/Metric.d.ts +13 -13
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/MetricPolling.d.ts +4 -4
- package/dist/dts/MetricPolling.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +8 -0
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +11 -11
- package/dist/dts/ReadonlyArray.d.ts +9 -8
- package/dist/dts/ReadonlyArray.d.ts.map +1 -1
- package/dist/dts/ReadonlyRecord.d.ts +111 -94
- package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
- package/dist/dts/Reloadable.d.ts +4 -4
- package/dist/dts/Reloadable.d.ts.map +1 -1
- package/dist/dts/RequestResolver.d.ts +13 -13
- package/dist/dts/RequestResolver.d.ts.map +1 -1
- package/dist/dts/Resource.d.ts +1 -1
- package/dist/dts/Resource.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +144 -139
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schedule.d.ts +171 -179
- package/dist/dts/Schedule.d.ts.map +1 -1
- package/dist/dts/SingleProducerAsyncInput.d.ts +1 -1
- package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +13 -13
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +355 -366
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/Struct.d.ts +3 -3
- package/dist/dts/Struct.d.ts.map +1 -1
- package/dist/dts/SubscriptionRef.d.ts +2 -2
- package/dist/dts/TArray.d.ts +2 -2
- package/dist/dts/TDeferred.d.ts +3 -3
- package/dist/dts/TMap.d.ts +10 -10
- package/dist/dts/TSet.d.ts +4 -4
- package/dist/dts/Take.d.ts +2 -2
- package/dist/dts/TestAnnotation.d.ts +2 -2
- package/dist/dts/TestAnnotation.d.ts.map +1 -1
- package/dist/dts/Types.d.ts +7 -0
- package/dist/dts/Types.d.ts.map +1 -1
- package/dist/dts/internal/stm/stm.d.ts +2 -15
- package/dist/dts/internal/stm/stm.d.ts.map +1 -1
- package/dist/esm/BigInt.js +12 -0
- package/dist/esm/BigInt.js.map +1 -1
- package/dist/esm/Effect.js +13 -58
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Either.js +42 -5
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/Equal.js +1 -1
- package/dist/esm/Equal.js.map +1 -1
- package/dist/esm/Exit.js +1 -1
- package/dist/esm/Number.js +23 -0
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/ReadonlyArray.js +2 -2
- package/dist/esm/ReadonlyArray.js.map +1 -1
- package/dist/esm/ReadonlyRecord.js +70 -75
- package/dist/esm/ReadonlyRecord.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schedule.js.map +1 -1
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/Stream.js +5 -22
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/Struct.js +3 -1
- package/dist/esm/Struct.js.map +1 -1
- package/dist/esm/TestAnnotation.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js +5 -5
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel/channelState.js +3 -3
- package/dist/esm/internal/channel/channelState.js.map +1 -1
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/clock.js +3 -4
- package/dist/esm/internal/clock.js.map +1 -1
- package/dist/esm/internal/core-effect.js +4 -20
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +8 -22
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +4 -5
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/either.js +3 -3
- package/dist/esm/internal/either.js.map +1 -1
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/layer.js +0 -2
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/runtime.js +12 -1
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/schedule.js +4 -4
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/sink.js +0 -2
- package/dist/esm/internal/sink.js.map +1 -1
- package/dist/esm/internal/stm/stm.js +1 -0
- package/dist/esm/internal/stm/stm.js.map +1 -1
- package/dist/esm/internal/stream.js +49 -59
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/BigInt.ts +13 -0
- package/src/Brand.ts +4 -4
- package/src/Cause.ts +1 -1
- package/src/Channel.ts +17 -17
- package/src/Chunk.ts +4 -4
- package/src/Config.ts +4 -4
- package/src/Cron.ts +2 -2
- package/src/Differ.ts +2 -2
- package/src/Effect.ts +68 -145
- package/src/Either.ts +215 -133
- package/src/Encoding.ts +3 -3
- package/src/Equal.ts +1 -1
- package/src/Exit.ts +2 -2
- package/src/Fiber.ts +2 -2
- package/src/GroupBy.ts +16 -16
- package/src/Layer.ts +32 -32
- package/src/List.ts +3 -3
- package/src/Logger.ts +4 -4
- package/src/Match.ts +3 -3
- package/src/MergeDecision.ts +1 -1
- package/src/MergeState.ts +8 -8
- package/src/Metric.ts +13 -13
- package/src/MetricPolling.ts +9 -9
- package/src/Number.ts +26 -0
- package/src/Option.ts +17 -17
- package/src/ReadonlyArray.ts +23 -15
- package/src/ReadonlyRecord.ts +421 -265
- package/src/Reloadable.ts +4 -4
- package/src/RequestResolver.ts +19 -19
- package/src/Resource.ts +3 -3
- package/src/STM.ts +166 -213
- package/src/Schedule.ts +331 -361
- package/src/SingleProducerAsyncInput.ts +1 -1
- package/src/Sink.ts +19 -19
- package/src/Stream.ts +449 -456
- package/src/Struct.ts +8 -5
- package/src/SubscriptionRef.ts +2 -2
- package/src/TArray.ts +2 -2
- package/src/TDeferred.ts +4 -4
- package/src/TMap.ts +10 -10
- package/src/TSet.ts +4 -4
- package/src/Take.ts +4 -4
- package/src/TestAnnotation.ts +5 -8
- package/src/Types.ts +11 -0
- package/src/internal/blockedRequests.ts +2 -2
- package/src/internal/cause.ts +2 -2
- package/src/internal/channel/channelExecutor.ts +26 -26
- package/src/internal/channel/channelState.ts +13 -13
- package/src/internal/channel/mergeDecision.ts +1 -1
- package/src/internal/channel/mergeState.ts +6 -6
- package/src/internal/channel/singleProducerAsyncInput.ts +5 -5
- package/src/internal/channel.ts +43 -43
- package/src/internal/clock.ts +3 -4
- package/src/internal/config.ts +7 -7
- package/src/internal/configError.ts +1 -1
- package/src/internal/configProvider/pathPatch.ts +2 -2
- package/src/internal/configProvider.ts +1 -1
- package/src/internal/core-effect.ts +28 -43
- package/src/internal/core.ts +15 -40
- package/src/internal/dataSource.ts +26 -26
- package/src/internal/differ/orPatch.ts +7 -7
- package/src/internal/differ.ts +2 -2
- package/src/internal/effect/circular.ts +9 -10
- package/src/internal/either.ts +25 -22
- package/src/internal/encoding/base64.ts +1 -1
- package/src/internal/encoding/base64Url.ts +1 -1
- package/src/internal/encoding/hex.ts +1 -1
- package/src/internal/fiber.ts +2 -2
- package/src/internal/fiberRuntime.ts +9 -9
- package/src/internal/groupBy.ts +40 -40
- package/src/internal/layer/circular.ts +4 -4
- package/src/internal/layer.ts +52 -54
- package/src/internal/matcher.ts +5 -5
- package/src/internal/metric/polling.ts +8 -8
- package/src/internal/metric.ts +6 -6
- package/src/internal/reloadable.ts +4 -4
- package/src/internal/resource.ts +2 -2
- package/src/internal/runtime.ts +32 -19
- package/src/internal/schedule.ts +430 -500
- package/src/internal/sink.ts +27 -29
- package/src/internal/stm/core.ts +23 -23
- package/src/internal/stm/stm.ts +158 -157
- package/src/internal/stm/tArray.ts +3 -3
- package/src/internal/stm/tDeferred.ts +5 -5
- package/src/internal/stm/tMap.ts +13 -13
- package/src/internal/stm/tSet.ts +4 -4
- package/src/internal/stream.ts +688 -723
- package/src/internal/subscriptionRef.ts +3 -3
- package/src/internal/take.ts +6 -6
- package/src/internal/version.ts +1 -1
package/src/Struct.ts
CHANGED
|
@@ -23,12 +23,14 @@ import type { MatchRecord, Simplify } from "./Types.js"
|
|
|
23
23
|
export const pick = <Keys extends Array<PropertyKey>>(
|
|
24
24
|
...keys: Keys
|
|
25
25
|
) =>
|
|
26
|
-
<S extends
|
|
26
|
+
<S extends { [K in Keys[number]]?: any }>(
|
|
27
27
|
s: S
|
|
28
|
-
): MatchRecord<S, { [K in Keys[number]]
|
|
28
|
+
): MatchRecord<S, { [K in Keys[number]]?: S[K] }, Simplify<Pick<S, Keys[number]>>> => {
|
|
29
29
|
const out: any = {}
|
|
30
30
|
for (const k of keys) {
|
|
31
|
-
|
|
31
|
+
if (k in s) {
|
|
32
|
+
out[k] = (s as any)[k]
|
|
33
|
+
}
|
|
32
34
|
}
|
|
33
35
|
return out
|
|
34
36
|
}
|
|
@@ -47,7 +49,7 @@ export const pick = <Keys extends Array<PropertyKey>>(
|
|
|
47
49
|
export const omit = <Keys extends Array<PropertyKey>>(
|
|
48
50
|
...keys: Keys
|
|
49
51
|
) =>
|
|
50
|
-
<S extends
|
|
52
|
+
<S extends { [K in Keys[number]]?: any }>(s: S): Simplify<Omit<S, Keys[number]>> => {
|
|
51
53
|
const out: any = { ...s }
|
|
52
54
|
for (const k of keys) {
|
|
53
55
|
delete out[k]
|
|
@@ -167,4 +169,5 @@ export const evolve: {
|
|
|
167
169
|
* @since 2.0.0
|
|
168
170
|
*/
|
|
169
171
|
export const get =
|
|
170
|
-
<K extends PropertyKey>(key: K) => <S extends
|
|
172
|
+
<K extends PropertyKey>(key: K) => <S extends { [P in K]?: any }>(s: S): MatchRecord<S, S[K] | undefined, S[K]> =>
|
|
173
|
+
s[key]
|
package/src/SubscriptionRef.ts
CHANGED
|
@@ -139,8 +139,8 @@ export const modify: {
|
|
|
139
139
|
* @category utils
|
|
140
140
|
*/
|
|
141
141
|
export const modifyEffect: {
|
|
142
|
-
<
|
|
143
|
-
<A,
|
|
142
|
+
<B, A, E, R>(f: (a: A) => Effect.Effect<readonly [B, A], E, R>): (self: SubscriptionRef<A>) => Effect.Effect<B, E, R>
|
|
143
|
+
<A, B, E, R>(self: SubscriptionRef<A>, f: (a: A) => Effect.Effect<readonly [B, A], E, R>): Effect.Effect<B, E, R>
|
|
144
144
|
} = internal.modifyEffect
|
|
145
145
|
|
|
146
146
|
/**
|
package/src/TArray.ts
CHANGED
|
@@ -70,8 +70,8 @@ export const collectFirst: {
|
|
|
70
70
|
* @category elements
|
|
71
71
|
*/
|
|
72
72
|
export const collectFirstSTM: {
|
|
73
|
-
<A,
|
|
74
|
-
<A,
|
|
73
|
+
<A, B, E, R>(pf: (a: A) => Option.Option<STM.STM<B, E, R>>): (self: TArray<A>) => STM.STM<Option.Option<B>, E, R>
|
|
74
|
+
<A, B, E, R>(self: TArray<A>, pf: (a: A) => Option.Option<STM.STM<B, E, R>>): STM.STM<Option.Option<B>, E, R>
|
|
75
75
|
} = internal.collectFirstSTM
|
|
76
76
|
|
|
77
77
|
/**
|
package/src/TDeferred.ts
CHANGED
|
@@ -31,7 +31,7 @@ export interface TDeferred<in out A, in out E = never> extends TDeferred.Varianc
|
|
|
31
31
|
*/
|
|
32
32
|
export interface TDeferred<in out A, in out E> {
|
|
33
33
|
/** @internal */
|
|
34
|
-
readonly ref: TRef.TRef<Option.Option<Either.Either<
|
|
34
|
+
readonly ref: TRef.TRef<Option.Option<Either.Either<A, E>>>
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
/**
|
|
@@ -65,8 +65,8 @@ export {
|
|
|
65
65
|
* @category mutations
|
|
66
66
|
*/
|
|
67
67
|
export const done: {
|
|
68
|
-
<
|
|
69
|
-
<A, E>(self: TDeferred<A, E>, either: Either.Either<
|
|
68
|
+
<A, E>(either: Either.Either<A, E>): (self: TDeferred<A, E>) => STM.STM<boolean>
|
|
69
|
+
<A, E>(self: TDeferred<A, E>, either: Either.Either<A, E>): STM.STM<boolean>
|
|
70
70
|
} = internal.done
|
|
71
71
|
|
|
72
72
|
/**
|
|
@@ -88,7 +88,7 @@ export const make: <A, E = never>() => STM.STM<TDeferred<A, E>> = internal.make
|
|
|
88
88
|
* @since 2.0.0
|
|
89
89
|
* @category getters
|
|
90
90
|
*/
|
|
91
|
-
export const poll: <A, E>(self: TDeferred<A, E>) => STM.STM<Option.Option<Either.Either<
|
|
91
|
+
export const poll: <A, E>(self: TDeferred<A, E>) => STM.STM<Option.Option<Either.Either<A, E>>> = internal.poll
|
|
92
92
|
|
|
93
93
|
/**
|
|
94
94
|
* @since 2.0.0
|
package/src/TMap.ts
CHANGED
|
@@ -86,10 +86,10 @@ export const find: {
|
|
|
86
86
|
* @category elements
|
|
87
87
|
*/
|
|
88
88
|
export const findSTM: {
|
|
89
|
-
<K, V,
|
|
89
|
+
<K, V, A, E, R>(
|
|
90
90
|
f: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
|
|
91
91
|
): (self: TMap<K, V>) => STM.STM<Option.Option<A>, E, R>
|
|
92
|
-
<K, V,
|
|
92
|
+
<K, V, A, E, R>(
|
|
93
93
|
self: TMap<K, V>,
|
|
94
94
|
f: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
|
|
95
95
|
): STM.STM<Option.Option<A>, E, R>
|
|
@@ -115,10 +115,10 @@ export const findAll: {
|
|
|
115
115
|
* @category elements
|
|
116
116
|
*/
|
|
117
117
|
export const findAllSTM: {
|
|
118
|
-
<K, V,
|
|
118
|
+
<K, V, A, E, R>(
|
|
119
119
|
pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
|
|
120
120
|
): (self: TMap<K, V>) => STM.STM<Array<A>, E, R>
|
|
121
|
-
<K, V,
|
|
121
|
+
<K, V, A, E, R>(self: TMap<K, V>, pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): STM.STM<Array<A>, E, R>
|
|
122
122
|
} = internal.findAllSTM
|
|
123
123
|
|
|
124
124
|
/**
|
|
@@ -128,8 +128,8 @@ export const findAllSTM: {
|
|
|
128
128
|
* @category elements
|
|
129
129
|
*/
|
|
130
130
|
export const forEach: {
|
|
131
|
-
<K, V,
|
|
132
|
-
<K, V,
|
|
131
|
+
<K, V, X, E, R>(f: (key: K, value: V) => STM.STM<X, E, R>): (self: TMap<K, V>) => STM.STM<void, E, R>
|
|
132
|
+
<K, V, X, E, R>(self: TMap<K, V>, f: (key: K, value: V) => STM.STM<X, E, R>): STM.STM<void, E, R>
|
|
133
133
|
} = internal.forEach
|
|
134
134
|
|
|
135
135
|
/**
|
|
@@ -377,8 +377,8 @@ export const takeFirst: {
|
|
|
377
377
|
* @category mutations
|
|
378
378
|
*/
|
|
379
379
|
export const takeFirstSTM: {
|
|
380
|
-
<K, V,
|
|
381
|
-
<K, V,
|
|
380
|
+
<K, V, A, E, R>(pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): (self: TMap<K, V>) => STM.STM<A, E, R>
|
|
381
|
+
<K, V, A, E, R>(self: TMap<K, V>, pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): STM.STM<A, E, R>
|
|
382
382
|
} = internal.takeFirstSTM
|
|
383
383
|
|
|
384
384
|
/**
|
|
@@ -399,10 +399,10 @@ export const takeSome: {
|
|
|
399
399
|
* @category mutations
|
|
400
400
|
*/
|
|
401
401
|
export const takeSomeSTM: {
|
|
402
|
-
<K, V,
|
|
402
|
+
<K, V, A, E, R>(
|
|
403
403
|
pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
|
|
404
404
|
): (self: TMap<K, V>) => STM.STM<[A, ...Array<A>], E, R>
|
|
405
|
-
<K, V,
|
|
405
|
+
<K, V, A, E, R>(
|
|
406
406
|
self: TMap<K, V>,
|
|
407
407
|
pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
|
|
408
408
|
): STM.STM<[A, ...Array<A>], E, R>
|
package/src/TSet.ts
CHANGED
|
@@ -272,8 +272,8 @@ export const takeFirst: {
|
|
|
272
272
|
* @category mutations
|
|
273
273
|
*/
|
|
274
274
|
export const takeFirstSTM: {
|
|
275
|
-
<A,
|
|
276
|
-
<A,
|
|
275
|
+
<A, B, E, R>(pf: (a: A) => STM.STM<B, Option.Option<E>, R>): (self: TSet<A>) => STM.STM<B, E, R>
|
|
276
|
+
<A, B, E, R>(self: TSet<A>, pf: (a: A) => STM.STM<B, Option.Option<E>, R>): STM.STM<B, E, R>
|
|
277
277
|
} = internal.takeFirstSTM
|
|
278
278
|
|
|
279
279
|
/**
|
|
@@ -294,8 +294,8 @@ export const takeSome: {
|
|
|
294
294
|
* @category mutations
|
|
295
295
|
*/
|
|
296
296
|
export const takeSomeSTM: {
|
|
297
|
-
<A,
|
|
298
|
-
<A,
|
|
297
|
+
<A, B, E, R>(pf: (a: A) => STM.STM<B, Option.Option<E>, R>): (self: TSet<A>) => STM.STM<[B, ...Array<B>], E, R>
|
|
298
|
+
<A, B, E, R>(self: TSet<A>, pf: (a: A) => STM.STM<B, Option.Option<E>, R>): STM.STM<[B, ...Array<B>], E, R>
|
|
299
299
|
} = internal.takeSomeSTM
|
|
300
300
|
|
|
301
301
|
/**
|
package/src/Take.ts
CHANGED
|
@@ -248,11 +248,11 @@ export const of: <A>(value: A) => Take<A> = internal.of
|
|
|
248
248
|
* @category sequencing
|
|
249
249
|
*/
|
|
250
250
|
export const tap: {
|
|
251
|
-
<A,
|
|
252
|
-
f: (chunk: Chunk.Chunk<A>) => Effect.Effect<
|
|
251
|
+
<A, X, E2, R>(
|
|
252
|
+
f: (chunk: Chunk.Chunk<A>) => Effect.Effect<X, E2, R>
|
|
253
253
|
): <E>(self: Take<A, E>) => Effect.Effect<void, E2 | E, R>
|
|
254
|
-
<A, E,
|
|
254
|
+
<A, E, X, E2, R>(
|
|
255
255
|
self: Take<A, E>,
|
|
256
|
-
f: (chunk: Chunk.Chunk<A>) => Effect.Effect<
|
|
256
|
+
f: (chunk: Chunk.Chunk<A>) => Effect.Effect<X, E2, R>
|
|
257
257
|
): Effect.Effect<void, E | E2, R>
|
|
258
258
|
} = internal.tap
|
package/src/TestAnnotation.ts
CHANGED
|
@@ -81,9 +81,9 @@ export const make = <A>(
|
|
|
81
81
|
* @since 2.0.0
|
|
82
82
|
*/
|
|
83
83
|
export const compose = <A>(
|
|
84
|
-
left: Either.Either<
|
|
85
|
-
right: Either.Either<
|
|
86
|
-
): Either.Either<
|
|
84
|
+
left: Either.Either<Chunk.Chunk<A>, number>,
|
|
85
|
+
right: Either.Either<Chunk.Chunk<A>, number>
|
|
86
|
+
): Either.Either<Chunk.Chunk<A>, number> => {
|
|
87
87
|
if (Either.isLeft(left) && Either.isLeft(right)) {
|
|
88
88
|
return Either.left(left.left + right.left)
|
|
89
89
|
}
|
|
@@ -103,12 +103,9 @@ export const compose = <A>(
|
|
|
103
103
|
* @since 2.0.0
|
|
104
104
|
*/
|
|
105
105
|
export const fibers: TestAnnotation<
|
|
106
|
-
Either.Either<
|
|
107
|
-
number,
|
|
108
|
-
Chunk.Chunk<MutableRef.MutableRef<SortedSet.SortedSet<Fiber.RuntimeFiber<unknown, unknown>>>>
|
|
109
|
-
>
|
|
106
|
+
Either.Either<Chunk.Chunk<MutableRef.MutableRef<SortedSet.SortedSet<Fiber.RuntimeFiber<unknown, unknown>>>>, number>
|
|
110
107
|
> = make<
|
|
111
|
-
Either.Either<
|
|
108
|
+
Either.Either<Chunk.Chunk<MutableRef.MutableRef<SortedSet.SortedSet<Fiber.RuntimeFiber<unknown, unknown>>>>, number>
|
|
112
109
|
>(
|
|
113
110
|
"fibers",
|
|
114
111
|
Either.left(0),
|
package/src/Types.ts
CHANGED
|
@@ -114,6 +114,17 @@ export type MergeRight<K, H> = Simplify<
|
|
|
114
114
|
}
|
|
115
115
|
>
|
|
116
116
|
|
|
117
|
+
/**
|
|
118
|
+
* @since 2.0.0
|
|
119
|
+
* @category models
|
|
120
|
+
*/
|
|
121
|
+
export type MergeRecord<K, H> = {
|
|
122
|
+
[k in keyof K | keyof H]: k extends keyof K ? K[k]
|
|
123
|
+
: k extends keyof H ? H[k]
|
|
124
|
+
: never
|
|
125
|
+
} extends infer X ? X
|
|
126
|
+
: never
|
|
127
|
+
|
|
117
128
|
/**
|
|
118
129
|
* Describes the concurrency to use when executing multiple Effect's.
|
|
119
130
|
*
|
|
@@ -103,7 +103,7 @@ export const reduce = <Z>(
|
|
|
103
103
|
reducer: RequestBlock.RequestBlock.Reducer<Z>
|
|
104
104
|
): Z => {
|
|
105
105
|
let input: List.List<RequestBlock.RequestBlock> = List.of(self)
|
|
106
|
-
let output = List.empty<Either.Either<
|
|
106
|
+
let output = List.empty<Either.Either<Z, BlockedRequestsCase>>()
|
|
107
107
|
while (List.isCons(input)) {
|
|
108
108
|
const current: RequestBlock.RequestBlock = input.head
|
|
109
109
|
switch (current._tag) {
|
|
@@ -429,7 +429,7 @@ class SequentialImpl implements SequentialCollection {
|
|
|
429
429
|
}
|
|
430
430
|
|
|
431
431
|
/** @internal */
|
|
432
|
-
export const sequentialCollectionMake = <
|
|
432
|
+
export const sequentialCollectionMake = <A, R>(
|
|
433
433
|
map: HashMap.HashMap<
|
|
434
434
|
RequestResolver.RequestResolver<A, R>,
|
|
435
435
|
Array<Array<Request.Entry<A>>>
|
package/src/internal/cause.ts
CHANGED
|
@@ -234,7 +234,7 @@ export const failureOption = <E>(self: Cause.Cause<E>): Option.Option<E> =>
|
|
|
234
234
|
Option.none())
|
|
235
235
|
|
|
236
236
|
/** @internal */
|
|
237
|
-
export const failureOrCause = <E>(self: Cause.Cause<E>): Either.Either<
|
|
237
|
+
export const failureOrCause = <E>(self: Cause.Cause<E>): Either.Either<Cause.Cause<never>, E> => {
|
|
238
238
|
const option = failureOption(self)
|
|
239
239
|
switch (option._tag) {
|
|
240
240
|
case "None": {
|
|
@@ -892,7 +892,7 @@ export const reduceWithContext = dual<
|
|
|
892
892
|
<C, E, Z>(self: Cause.Cause<E>, context: C, reducer: Cause.CauseReducer<C, E, Z>) => Z
|
|
893
893
|
>(3, <C, E, Z>(self: Cause.Cause<E>, context: C, reducer: Cause.CauseReducer<C, E, Z>) => {
|
|
894
894
|
const input: Array<Cause.Cause<E>> = [self]
|
|
895
|
-
const output: Array<Either.Either<
|
|
895
|
+
const output: Array<Either.Either<Z, CauseCase>> = []
|
|
896
896
|
while (input.length > 0) {
|
|
897
897
|
const cause = input.pop()!
|
|
898
898
|
switch (cause._tag) {
|
|
@@ -87,8 +87,8 @@ export class ChannelExecutor<
|
|
|
87
87
|
this._providedEnv = providedEnv
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
run(): ChannelState.ChannelState<
|
|
91
|
-
let result: ChannelState.ChannelState<
|
|
90
|
+
run(): ChannelState.ChannelState<unknown, Env> {
|
|
91
|
+
let result: ChannelState.ChannelState<unknown, Env> | undefined = undefined
|
|
92
92
|
while (result === undefined) {
|
|
93
93
|
if (this._cancelled !== undefined) {
|
|
94
94
|
result = this.processCancellation()
|
|
@@ -153,7 +153,7 @@ export class ChannelExecutor<
|
|
|
153
153
|
}
|
|
154
154
|
})) as Effect.Effect<unknown, never, Env>
|
|
155
155
|
|
|
156
|
-
result = ChannelState.
|
|
156
|
+
result = ChannelState.fromEffect(
|
|
157
157
|
Effect.flatMap(
|
|
158
158
|
Effect.forkDaemon(drainer()),
|
|
159
159
|
(fiber) =>
|
|
@@ -246,7 +246,7 @@ export class ChannelExecutor<
|
|
|
246
246
|
Effect.provide(this._providedEnv)
|
|
247
247
|
)
|
|
248
248
|
|
|
249
|
-
result = ChannelState.
|
|
249
|
+
result = ChannelState.fromEffect(
|
|
250
250
|
Effect.matchCauseEffect(effect, {
|
|
251
251
|
onFailure: (cause) => {
|
|
252
252
|
const state = this.doneHalt(cause)
|
|
@@ -261,7 +261,7 @@ export class ChannelExecutor<
|
|
|
261
261
|
Effect.unit
|
|
262
262
|
}
|
|
263
263
|
})
|
|
264
|
-
) as ChannelState.ChannelState<
|
|
264
|
+
) as ChannelState.ChannelState<unknown, Env> | undefined
|
|
265
265
|
|
|
266
266
|
break
|
|
267
267
|
}
|
|
@@ -459,7 +459,7 @@ export class ChannelExecutor<
|
|
|
459
459
|
)
|
|
460
460
|
}
|
|
461
461
|
|
|
462
|
-
doneSucceed(value: unknown): ChannelState.ChannelState<
|
|
462
|
+
doneSucceed(value: unknown): ChannelState.ChannelState<unknown, Env> | undefined {
|
|
463
463
|
if (this._doneStack.length === 0) {
|
|
464
464
|
this._done = Exit.succeed(value)
|
|
465
465
|
this._currentChannel = undefined
|
|
@@ -491,10 +491,10 @@ export class ChannelExecutor<
|
|
|
491
491
|
Effect.flatMap(() => Effect.sync(() => this.doneSucceed(value)))
|
|
492
492
|
)
|
|
493
493
|
|
|
494
|
-
return ChannelState.
|
|
494
|
+
return ChannelState.fromEffect(effect)
|
|
495
495
|
}
|
|
496
496
|
|
|
497
|
-
doneHalt(cause: Cause.Cause<unknown>): ChannelState.ChannelState<
|
|
497
|
+
doneHalt(cause: Cause.Cause<unknown>): ChannelState.ChannelState<unknown, Env> | undefined {
|
|
498
498
|
if (this._doneStack.length === 0) {
|
|
499
499
|
this._done = Exit.failCause(cause)
|
|
500
500
|
this._currentChannel = undefined
|
|
@@ -526,17 +526,17 @@ export class ChannelExecutor<
|
|
|
526
526
|
Effect.flatMap(() => Effect.sync(() => this.doneHalt(cause)))
|
|
527
527
|
)
|
|
528
528
|
|
|
529
|
-
return ChannelState.
|
|
529
|
+
return ChannelState.fromEffect(effect)
|
|
530
530
|
}
|
|
531
531
|
|
|
532
|
-
processCancellation(): ChannelState.ChannelState<
|
|
532
|
+
processCancellation(): ChannelState.ChannelState<unknown, Env> {
|
|
533
533
|
this._currentChannel = undefined
|
|
534
534
|
this._done = this._cancelled
|
|
535
535
|
this._cancelled = undefined
|
|
536
536
|
return ChannelState.Done()
|
|
537
537
|
}
|
|
538
538
|
|
|
539
|
-
runBracketOut(bracketOut: core.BracketOut): ChannelState.ChannelState<
|
|
539
|
+
runBracketOut(bracketOut: core.BracketOut): ChannelState.ChannelState<unknown, Env> {
|
|
540
540
|
const effect = Effect.uninterruptible(
|
|
541
541
|
Effect.matchCauseEffect(this.provide(bracketOut.acquire() as Effect.Effect<OutDone, OutErr, Env>), {
|
|
542
542
|
onFailure: (cause) =>
|
|
@@ -552,7 +552,7 @@ export class ChannelExecutor<
|
|
|
552
552
|
})
|
|
553
553
|
})
|
|
554
554
|
)
|
|
555
|
-
return ChannelState.
|
|
555
|
+
return ChannelState.fromEffect(effect) as ChannelState.ChannelState<unknown, Env>
|
|
556
556
|
}
|
|
557
557
|
|
|
558
558
|
provide(effect: Effect.Effect<unknown, unknown, unknown>): Effect.Effect<unknown, unknown, unknown> {
|
|
@@ -571,7 +571,7 @@ export class ChannelExecutor<
|
|
|
571
571
|
this._doneStack.push(new Continuation.ContinuationFinalizerImpl(f))
|
|
572
572
|
}
|
|
573
573
|
|
|
574
|
-
runSubexecutor(): ChannelState.ChannelState<
|
|
574
|
+
runSubexecutor(): ChannelState.ChannelState<unknown, Env> | undefined {
|
|
575
575
|
const subexecutor = this._activeSubexecutor as Subexecutor.Primitive<Env>
|
|
576
576
|
switch (subexecutor._tag) {
|
|
577
577
|
case Subexecutor.OP_PULL_FROM_CHILD: {
|
|
@@ -615,7 +615,7 @@ export class ChannelExecutor<
|
|
|
615
615
|
finishSubexecutorWithCloseEffect(
|
|
616
616
|
subexecutorDone: Exit.Exit<unknown, unknown>,
|
|
617
617
|
...closeFuncs: Array<(exit: Exit.Exit<unknown, unknown>) => Effect.Effect<unknown, never, Env> | undefined>
|
|
618
|
-
): ChannelState.ChannelState<
|
|
618
|
+
): ChannelState.ChannelState<unknown, Env> | undefined {
|
|
619
619
|
this.addFinalizer(() =>
|
|
620
620
|
pipe(
|
|
621
621
|
closeFuncs,
|
|
@@ -659,7 +659,7 @@ export class ChannelExecutor<
|
|
|
659
659
|
parentSubexecutor: Subexecutor.Subexecutor<Env>,
|
|
660
660
|
onEmitted: (emitted: unknown) => ChildExecutorDecision.ChildExecutorDecision,
|
|
661
661
|
subexecutor: Subexecutor.PullFromChild<Env>
|
|
662
|
-
): ChannelState.ChannelState<
|
|
662
|
+
): ChannelState.ChannelState<unknown, Env> | undefined {
|
|
663
663
|
return ChannelState.Read(
|
|
664
664
|
childExecutor,
|
|
665
665
|
identity,
|
|
@@ -753,7 +753,7 @@ export class ChannelExecutor<
|
|
|
753
753
|
childExecutor: ErasedExecutor<Env>,
|
|
754
754
|
parentSubexecutor: Subexecutor.Subexecutor<Env>,
|
|
755
755
|
cause: Cause.Cause<unknown>
|
|
756
|
-
): ChannelState.ChannelState<
|
|
756
|
+
): ChannelState.ChannelState<unknown, Env> | undefined {
|
|
757
757
|
return this.finishSubexecutorWithCloseEffect(
|
|
758
758
|
Exit.failCause(cause),
|
|
759
759
|
(exit) => parentSubexecutor.close(exit),
|
|
@@ -763,7 +763,7 @@ export class ChannelExecutor<
|
|
|
763
763
|
|
|
764
764
|
pullFromUpstream(
|
|
765
765
|
subexecutor: Subexecutor.PullFromUpstream<Env>
|
|
766
|
-
): ChannelState.ChannelState<
|
|
766
|
+
): ChannelState.ChannelState<unknown, Env> | undefined {
|
|
767
767
|
if (subexecutor.activeChildExecutors.length === 0) {
|
|
768
768
|
return this.performPullFromUpstream(subexecutor)
|
|
769
769
|
}
|
|
@@ -798,7 +798,7 @@ export class ChannelExecutor<
|
|
|
798
798
|
|
|
799
799
|
performPullFromUpstream(
|
|
800
800
|
subexecutor: Subexecutor.PullFromUpstream<Env>
|
|
801
|
-
): ChannelState.ChannelState<
|
|
801
|
+
): ChannelState.ChannelState<unknown, Env> | undefined {
|
|
802
802
|
return ChannelState.Read(
|
|
803
803
|
subexecutor.upstreamExecutor,
|
|
804
804
|
(effect) => {
|
|
@@ -924,14 +924,14 @@ export class ChannelExecutor<
|
|
|
924
924
|
return state === undefined ?
|
|
925
925
|
undefined :
|
|
926
926
|
// NOTE: assuming finalizers cannot fail
|
|
927
|
-
ChannelState.effectOrUndefinedIgnored(state as ChannelState.ChannelState<
|
|
927
|
+
ChannelState.effectOrUndefinedIgnored(state as ChannelState.ChannelState<never, Env>)
|
|
928
928
|
}
|
|
929
929
|
)
|
|
930
930
|
}
|
|
931
931
|
|
|
932
932
|
drainChildExecutors(
|
|
933
933
|
subexecutor: Subexecutor.DrainChildExecutors<Env>
|
|
934
|
-
): ChannelState.ChannelState<
|
|
934
|
+
): ChannelState.ChannelState<unknown, Env> | undefined {
|
|
935
935
|
if (subexecutor.activeChildExecutors.length === 0) {
|
|
936
936
|
const lastClose = this._closeLastSubstream
|
|
937
937
|
if (lastClose !== undefined) {
|
|
@@ -1015,7 +1015,7 @@ const runFinalizers = <Env>(
|
|
|
1015
1015
|
/**
|
|
1016
1016
|
* @internal
|
|
1017
1017
|
*/
|
|
1018
|
-
export const readUpstream = <
|
|
1018
|
+
export const readUpstream = <A, E2, R, E>(
|
|
1019
1019
|
r: ChannelState.Read,
|
|
1020
1020
|
onSuccess: () => Effect.Effect<A, E2, R>,
|
|
1021
1021
|
onFailure: (cause: Cause.Cause<E>) => Effect.Effect<A, E2, R>
|
|
@@ -1111,7 +1111,7 @@ export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
|
|
|
1111
1111
|
(exec) =>
|
|
1112
1112
|
Effect.suspend(() =>
|
|
1113
1113
|
pipe(
|
|
1114
|
-
runScopedInterpret(exec.run() as ChannelState.ChannelState<
|
|
1114
|
+
runScopedInterpret(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec),
|
|
1115
1115
|
Effect.intoDeferred(channelDeferred),
|
|
1116
1116
|
Effect.zipRight(Deferred.await(channelDeferred)),
|
|
1117
1117
|
Effect.zipLeft(Deferred.await(scopeDeferred))
|
|
@@ -1154,7 +1154,7 @@ export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
|
|
|
1154
1154
|
|
|
1155
1155
|
/** @internal */
|
|
1156
1156
|
const runScopedInterpret = <Env, InErr, InDone, OutErr, OutDone>(
|
|
1157
|
-
channelState: ChannelState.ChannelState<
|
|
1157
|
+
channelState: ChannelState.ChannelState<OutErr, Env>,
|
|
1158
1158
|
exec: ChannelExecutor<never, unknown, OutErr, InErr, OutDone, InDone, Env>
|
|
1159
1159
|
): Effect.Effect<OutDone, OutErr, Env> => {
|
|
1160
1160
|
const op = channelState as ChannelState.Primitive
|
|
@@ -1162,13 +1162,13 @@ const runScopedInterpret = <Env, InErr, InDone, OutErr, OutDone>(
|
|
|
1162
1162
|
case ChannelStateOpCodes.OP_FROM_EFFECT: {
|
|
1163
1163
|
return pipe(
|
|
1164
1164
|
op.effect as Effect.Effect<OutDone, OutErr, Env>,
|
|
1165
|
-
Effect.flatMap(() => runScopedInterpret(exec.run() as ChannelState.ChannelState<
|
|
1165
|
+
Effect.flatMap(() => runScopedInterpret(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec))
|
|
1166
1166
|
)
|
|
1167
1167
|
}
|
|
1168
1168
|
case ChannelStateOpCodes.OP_EMIT: {
|
|
1169
1169
|
// Can't really happen because Out <:< Nothing. So just skip ahead.
|
|
1170
1170
|
return runScopedInterpret<Env, InErr, InDone, OutErr, OutDone>(
|
|
1171
|
-
exec.run() as ChannelState.ChannelState<
|
|
1171
|
+
exec.run() as ChannelState.ChannelState<OutErr, Env>,
|
|
1172
1172
|
exec
|
|
1173
1173
|
)
|
|
1174
1174
|
}
|
|
@@ -1178,7 +1178,7 @@ const runScopedInterpret = <Env, InErr, InDone, OutErr, OutDone>(
|
|
|
1178
1178
|
case ChannelStateOpCodes.OP_READ: {
|
|
1179
1179
|
return readUpstream(
|
|
1180
1180
|
op,
|
|
1181
|
-
() => runScopedInterpret(exec.run() as ChannelState.ChannelState<
|
|
1181
|
+
() => runScopedInterpret(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec),
|
|
1182
1182
|
Effect.failCause
|
|
1183
1183
|
) as Effect.Effect<OutDone, OutErr, Env>
|
|
1184
1184
|
}
|
|
@@ -12,23 +12,23 @@ export const ChannelStateTypeId = Symbol.for("effect/ChannelState")
|
|
|
12
12
|
export type ChannelStateTypeId = typeof ChannelStateTypeId
|
|
13
13
|
|
|
14
14
|
/** @internal */
|
|
15
|
-
export interface ChannelState<out
|
|
15
|
+
export interface ChannelState<out E, out R> extends ChannelState.Variance<E, R> {}
|
|
16
16
|
|
|
17
17
|
/** @internal */
|
|
18
18
|
export declare namespace ChannelState {
|
|
19
|
-
export interface Variance<out
|
|
19
|
+
export interface Variance<out E, out R> {
|
|
20
20
|
readonly [ChannelStateTypeId]: {
|
|
21
|
-
readonly _R: Types.Covariant<R>
|
|
22
21
|
readonly _E: Types.Covariant<E>
|
|
22
|
+
readonly _R: Types.Covariant<R>
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
const channelStateVariance = {
|
|
28
28
|
/* c8 ignore next */
|
|
29
|
-
|
|
29
|
+
_E: (_: never) => _,
|
|
30
30
|
/* c8 ignore next */
|
|
31
|
-
|
|
31
|
+
_R: (_: never) => _
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
/** @internal */
|
|
@@ -86,7 +86,7 @@ export const Emit = (): ChannelState<never, never> => {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
/** @internal */
|
|
89
|
-
export const
|
|
89
|
+
export const fromEffect = <X, E, R>(effect: Effect.Effect<X, E, R>): ChannelState<E, R> => {
|
|
90
90
|
const op = Object.create(proto)
|
|
91
91
|
op._tag = OpCodes.OP_FROM_EFFECT
|
|
92
92
|
op.effect = effect
|
|
@@ -99,7 +99,7 @@ export const Read = <R>(
|
|
|
99
99
|
onEffect: (effect: Effect.Effect<void, never, R>) => Effect.Effect<void, never, R>,
|
|
100
100
|
onEmit: (value: unknown) => Effect.Effect<void, never, R> | undefined,
|
|
101
101
|
onDone: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void, never, R> | undefined
|
|
102
|
-
): ChannelState<
|
|
102
|
+
): ChannelState<never, R> => {
|
|
103
103
|
const op = Object.create(proto)
|
|
104
104
|
op._tag = OpCodes.OP_READ
|
|
105
105
|
op.upstream = upstream
|
|
@@ -113,22 +113,22 @@ export const Read = <R>(
|
|
|
113
113
|
export const isChannelState = (u: unknown): u is ChannelState<unknown, unknown> => hasProperty(u, ChannelStateTypeId)
|
|
114
114
|
|
|
115
115
|
/** @internal */
|
|
116
|
-
export const isDone = <
|
|
116
|
+
export const isDone = <E, R>(self: ChannelState<E, R>): self is Done => (self as Primitive)._tag === OpCodes.OP_DONE
|
|
117
117
|
|
|
118
118
|
/** @internal */
|
|
119
|
-
export const isEmit = <
|
|
119
|
+
export const isEmit = <E, R>(self: ChannelState<E, R>): self is Emit => (self as Primitive)._tag === OpCodes.OP_EMIT
|
|
120
120
|
|
|
121
121
|
/** @internal */
|
|
122
|
-
export const isFromEffect = <
|
|
122
|
+
export const isFromEffect = <E, R>(self: ChannelState<E, R>): self is FromEffect =>
|
|
123
123
|
(self as Primitive)._tag === OpCodes.OP_FROM_EFFECT
|
|
124
124
|
|
|
125
125
|
/** @internal */
|
|
126
|
-
export const isRead = <
|
|
126
|
+
export const isRead = <E, R>(self: ChannelState<E, R>): self is Read => (self as Primitive)._tag === OpCodes.OP_READ
|
|
127
127
|
|
|
128
128
|
/** @internal */
|
|
129
|
-
export const effect = <
|
|
129
|
+
export const effect = <E, R>(self: ChannelState<E, R>): Effect.Effect<void, E, R> =>
|
|
130
130
|
isFromEffect(self) ? self.effect as Effect.Effect<void, E, R> : Effect.unit
|
|
131
131
|
|
|
132
132
|
/** @internal */
|
|
133
|
-
export const effectOrUndefinedIgnored = <
|
|
133
|
+
export const effectOrUndefinedIgnored = <E, R>(self: ChannelState<E, R>): Effect.Effect<void, E, R> | undefined =>
|
|
134
134
|
isFromEffect(self) ? Effect.ignore(self.effect as Effect.Effect<void, E, R>) : undefined
|
|
@@ -72,7 +72,7 @@ export const Await = <R, E0, Z0, E, Z>(
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
/** @internal */
|
|
75
|
-
export const AwaitConst = <
|
|
75
|
+
export const AwaitConst = <Z, E, R>(
|
|
76
76
|
effect: Effect.Effect<Z, E, R>
|
|
77
77
|
): MergeDecision.MergeDecision<R, unknown, unknown, E, Z> => Await(() => effect)
|
|
78
78
|
|
|
@@ -22,8 +22,8 @@ const proto = {
|
|
|
22
22
|
|
|
23
23
|
/** @internal */
|
|
24
24
|
export const BothRunning = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
|
|
25
|
-
left: Fiber.Fiber<Either.Either<
|
|
26
|
-
right: Fiber.Fiber<Either.Either<
|
|
25
|
+
left: Fiber.Fiber<Either.Either<Elem, Done>, Err>,
|
|
26
|
+
right: Fiber.Fiber<Either.Either<Elem, Done1>, Err1>
|
|
27
27
|
): MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
|
|
28
28
|
const op = Object.create(proto)
|
|
29
29
|
op._tag = OpCodes.OP_BOTH_RUNNING
|
|
@@ -84,8 +84,8 @@ export const match = dual<
|
|
|
84
84
|
<Env, Err, Err1, Err2, Elem, Done, Done1, Done2, Z>(
|
|
85
85
|
options: {
|
|
86
86
|
readonly onBothRunning: (
|
|
87
|
-
left: Fiber.Fiber<Either.Either<
|
|
88
|
-
right: Fiber.Fiber<Either.Either<
|
|
87
|
+
left: Fiber.Fiber<Either.Either<Elem, Done>, Err>,
|
|
88
|
+
right: Fiber.Fiber<Either.Either<Elem, Done1>, Err1>
|
|
89
89
|
) => Z
|
|
90
90
|
readonly onLeftDone: (f: (exit: Exit.Exit<Done1, Err1>) => Effect.Effect<Done2, Err2, Env>) => Z
|
|
91
91
|
readonly onRightDone: (f: (exit: Exit.Exit<Done, Err>) => Effect.Effect<Done2, Err2, Env>) => Z
|
|
@@ -95,8 +95,8 @@ export const match = dual<
|
|
|
95
95
|
self: MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2>,
|
|
96
96
|
options: {
|
|
97
97
|
readonly onBothRunning: (
|
|
98
|
-
left: Fiber.Fiber<Either.Either<
|
|
99
|
-
right: Fiber.Fiber<Either.Either<
|
|
98
|
+
left: Fiber.Fiber<Either.Either<Elem, Done>, Err>,
|
|
99
|
+
right: Fiber.Fiber<Either.Either<Elem, Done1>, Err1>
|
|
100
100
|
) => Z
|
|
101
101
|
readonly onLeftDone: (f: (exit: Exit.Exit<Done1, Err1>) => Effect.Effect<Done2, Err2, Env>) => Z
|
|
102
102
|
readonly onRightDone: (f: (exit: Exit.Exit<Done, Err>) => Effect.Effect<Done2, Err2, Env>) => Z
|
|
@@ -47,7 +47,7 @@ interface Empty {
|
|
|
47
47
|
/** @internal */
|
|
48
48
|
interface Emit<Err, Elem, Done> {
|
|
49
49
|
readonly _tag: OP_STATE_EMIT
|
|
50
|
-
readonly notifyConsumers: ReadonlyArray<Deferred.Deferred<Either.Either<
|
|
50
|
+
readonly notifyConsumers: ReadonlyArray<Deferred.Deferred<Either.Either<Elem, Done>, Err>>
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
/** @internal */
|
|
@@ -70,7 +70,7 @@ const stateEmpty = (notifyProducer: Deferred.Deferred<void>): State<never, never
|
|
|
70
70
|
|
|
71
71
|
/** @internal */
|
|
72
72
|
const stateEmit = <Err, Elem, Done>(
|
|
73
|
-
notifyConsumers: ReadonlyArray<Deferred.Deferred<Either.Either<
|
|
73
|
+
notifyConsumers: ReadonlyArray<Deferred.Deferred<Either.Either<Elem, Done>, Err>>
|
|
74
74
|
): State<Err, Elem, Done> => ({
|
|
75
75
|
_tag: OP_STATE_EMIT,
|
|
76
76
|
notifyConsumers
|
|
@@ -198,10 +198,10 @@ class SingleProducerAsyncInputImpl<in out Err, in out Elem, in out Done>
|
|
|
198
198
|
)
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
get take(): Effect.Effect<Exit.Exit<Elem, Either.Either<
|
|
201
|
+
get take(): Effect.Effect<Exit.Exit<Elem, Either.Either<Done, Err>>> {
|
|
202
202
|
return this.takeWith(
|
|
203
203
|
(cause) => Exit.failCause(Cause.map(cause, Either.left)),
|
|
204
|
-
(elem) => Exit.succeed(elem) as Exit.Exit<Elem, Either.Either<
|
|
204
|
+
(elem) => Exit.succeed(elem) as Exit.Exit<Elem, Either.Either<Done, Err>>,
|
|
205
205
|
(done) => Exit.fail(Either.right(done))
|
|
206
206
|
)
|
|
207
207
|
}
|
|
@@ -211,7 +211,7 @@ class SingleProducerAsyncInputImpl<in out Err, in out Elem, in out Done>
|
|
|
211
211
|
onElement: (element: Elem) => A,
|
|
212
212
|
onDone: (value: Done) => A
|
|
213
213
|
): Effect.Effect<A> {
|
|
214
|
-
return Effect.flatMap(Deferred.make<Either.Either<
|
|
214
|
+
return Effect.flatMap(Deferred.make<Either.Either<Elem, Done>, Err>(), (deferred) =>
|
|
215
215
|
Effect.flatten(
|
|
216
216
|
Ref.modify(this.ref, (state) => {
|
|
217
217
|
switch (state._tag) {
|