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/internal/schedule.ts
CHANGED
|
@@ -45,24 +45,24 @@ export const ScheduleDriverTypeId: Schedule.ScheduleDriverTypeId = Symbol.for(
|
|
|
45
45
|
|
|
46
46
|
const scheduleVariance = {
|
|
47
47
|
/* c8 ignore next */
|
|
48
|
-
|
|
48
|
+
_Out: (_: never) => _,
|
|
49
49
|
/* c8 ignore next */
|
|
50
50
|
_In: (_: unknown) => _,
|
|
51
51
|
/* c8 ignore next */
|
|
52
|
-
|
|
52
|
+
_R: (_: never) => _
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
const scheduleDriverVariance = {
|
|
56
56
|
/* c8 ignore next */
|
|
57
|
-
|
|
57
|
+
_Out: (_: never) => _,
|
|
58
58
|
/* c8 ignore next */
|
|
59
59
|
_In: (_: unknown) => _,
|
|
60
60
|
/* c8 ignore next */
|
|
61
|
-
|
|
61
|
+
_R: (_: never) => _
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
/** @internal */
|
|
65
|
-
class ScheduleImpl<S,
|
|
65
|
+
class ScheduleImpl<S, Out, In, R> implements Schedule.Schedule<Out, In, R> {
|
|
66
66
|
[ScheduleTypeId] = scheduleVariance
|
|
67
67
|
constructor(
|
|
68
68
|
readonly initial: S,
|
|
@@ -70,7 +70,7 @@ class ScheduleImpl<S, Env, In, Out> implements Schedule.Schedule<Env, In, Out> {
|
|
|
70
70
|
now: number,
|
|
71
71
|
input: In,
|
|
72
72
|
state: S
|
|
73
|
-
) => Effect.Effect<readonly [S, Out, ScheduleDecision.ScheduleDecision], never,
|
|
73
|
+
) => Effect.Effect<readonly [S, Out, ScheduleDecision.ScheduleDecision], never, R>
|
|
74
74
|
) {
|
|
75
75
|
}
|
|
76
76
|
pipe() {
|
|
@@ -79,11 +79,11 @@ class ScheduleImpl<S, Env, In, Out> implements Schedule.Schedule<Env, In, Out> {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
/** @internal */
|
|
82
|
-
class ScheduleDriverImpl<
|
|
82
|
+
class ScheduleDriverImpl<Out, In, R> implements Schedule.ScheduleDriver<Out, In, R> {
|
|
83
83
|
[ScheduleDriverTypeId] = scheduleDriverVariance
|
|
84
84
|
|
|
85
85
|
constructor(
|
|
86
|
-
readonly schedule: Schedule.Schedule<
|
|
86
|
+
readonly schedule: Schedule.Schedule<Out, In, R>,
|
|
87
87
|
readonly ref: Ref.Ref<readonly [Option.Option<Out>, any]>
|
|
88
88
|
) {}
|
|
89
89
|
|
|
@@ -108,7 +108,7 @@ class ScheduleDriverImpl<Env, In, Out> implements Schedule.ScheduleDriver<Env, I
|
|
|
108
108
|
return ref.set(this.ref, [Option.none(), this.schedule.initial])
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
next(input: In): Effect.Effect<Out, Option.Option<never>,
|
|
111
|
+
next(input: In): Effect.Effect<Out, Option.Option<never>, R> {
|
|
112
112
|
return pipe(
|
|
113
113
|
core.map(ref.get(this.ref), (tuple) => tuple[1]),
|
|
114
114
|
core.flatMap((state) =>
|
|
@@ -141,35 +141,35 @@ class ScheduleDriverImpl<Env, In, Out> implements Schedule.ScheduleDriver<Env, I
|
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
/** @internal */
|
|
144
|
-
export const makeWithState = <S,
|
|
144
|
+
export const makeWithState = <S, In, Out, R = never>(
|
|
145
145
|
initial: S,
|
|
146
146
|
step: (
|
|
147
147
|
now: number,
|
|
148
148
|
input: In,
|
|
149
149
|
state: S
|
|
150
|
-
) => Effect.Effect<readonly [S, Out, ScheduleDecision.ScheduleDecision], never,
|
|
151
|
-
): Schedule.Schedule<
|
|
150
|
+
) => Effect.Effect<readonly [S, Out, ScheduleDecision.ScheduleDecision], never, R>
|
|
151
|
+
): Schedule.Schedule<Out, In, R> => new ScheduleImpl(initial, step)
|
|
152
152
|
|
|
153
153
|
/** @internal */
|
|
154
154
|
export const addDelay = dual<
|
|
155
155
|
<Out>(
|
|
156
156
|
f: (out: Out) => Duration.DurationInput
|
|
157
|
-
) => <
|
|
158
|
-
<
|
|
159
|
-
self: Schedule.Schedule<
|
|
157
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R>,
|
|
158
|
+
<Out, In, R>(
|
|
159
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
160
160
|
f: (out: Out) => Duration.DurationInput
|
|
161
|
-
) => Schedule.Schedule<
|
|
161
|
+
) => Schedule.Schedule<Out, In, R>
|
|
162
162
|
>(2, (self, f) => addDelayEffect(self, (out) => core.sync(() => f(out))))
|
|
163
163
|
|
|
164
164
|
/** @internal */
|
|
165
165
|
export const addDelayEffect = dual<
|
|
166
|
-
<Out,
|
|
167
|
-
f: (out: Out) => Effect.Effect<Duration.DurationInput, never,
|
|
168
|
-
) => <
|
|
169
|
-
<
|
|
170
|
-
self: Schedule.Schedule<
|
|
171
|
-
f: (out: Out) => Effect.Effect<Duration.DurationInput, never,
|
|
172
|
-
) => Schedule.Schedule<
|
|
166
|
+
<Out, R2>(
|
|
167
|
+
f: (out: Out) => Effect.Effect<Duration.DurationInput, never, R2>
|
|
168
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R | R2>,
|
|
169
|
+
<Out, In, R, R2>(
|
|
170
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
171
|
+
f: (out: Out) => Effect.Effect<Duration.DurationInput, never, R2>
|
|
172
|
+
) => Schedule.Schedule<Out, In, R | R2>
|
|
173
173
|
>(2, (self, f) =>
|
|
174
174
|
modifyDelayEffect(self, (out, duration) =>
|
|
175
175
|
core.map(
|
|
@@ -179,48 +179,38 @@ export const addDelayEffect = dual<
|
|
|
179
179
|
|
|
180
180
|
/** @internal */
|
|
181
181
|
export const andThen = dual<
|
|
182
|
-
<
|
|
183
|
-
that: Schedule.Schedule<
|
|
184
|
-
) => <
|
|
185
|
-
|
|
186
|
-
In &
|
|
187
|
-
|
|
182
|
+
<Out2, In2, R2>(
|
|
183
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
184
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<
|
|
185
|
+
Out | Out2,
|
|
186
|
+
In & In2,
|
|
187
|
+
R | R2
|
|
188
188
|
>,
|
|
189
|
-
<
|
|
190
|
-
self: Schedule.Schedule<
|
|
191
|
-
that: Schedule.Schedule<
|
|
189
|
+
<Out, In, R, Out2, In2, R2>(
|
|
190
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
191
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
192
192
|
) => Schedule.Schedule<
|
|
193
|
-
|
|
194
|
-
In &
|
|
195
|
-
|
|
193
|
+
Out | Out2,
|
|
194
|
+
In & In2,
|
|
195
|
+
R | R2
|
|
196
196
|
>
|
|
197
197
|
>(2, (self, that) => map(andThenEither(self, that), Either.merge))
|
|
198
198
|
|
|
199
199
|
/** @internal */
|
|
200
200
|
export const andThenEither = dual<
|
|
201
|
-
<
|
|
202
|
-
that: Schedule.Schedule<
|
|
203
|
-
) => <
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
Either.Either<Out, Out2>
|
|
215
|
-
>
|
|
216
|
-
>(2, <Env, In, Out, Env2, In2, Out2>(
|
|
217
|
-
self: Schedule.Schedule<Env, In, Out>,
|
|
218
|
-
that: Schedule.Schedule<Env2, In2, Out2>
|
|
219
|
-
): Schedule.Schedule<
|
|
220
|
-
Env | Env2,
|
|
221
|
-
In & In2,
|
|
222
|
-
Either.Either<Out, Out2>
|
|
223
|
-
> =>
|
|
201
|
+
<Out2, In2, R2>(
|
|
202
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
203
|
+
) => <Out, In, R>(
|
|
204
|
+
self: Schedule.Schedule<Out, In, R>
|
|
205
|
+
) => Schedule.Schedule<Either.Either<Out2, Out>, In & In2, R | R2>,
|
|
206
|
+
<Out, In, R, Out2, In2, R2>(
|
|
207
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
208
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
209
|
+
) => Schedule.Schedule<Either.Either<Out2, Out>, In & In2, R | R2>
|
|
210
|
+
>(2, <Out, In, R, Out2, In2, R2>(
|
|
211
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
212
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
213
|
+
): Schedule.Schedule<Either.Either<Out2, Out>, In & In2, R | R2> =>
|
|
224
214
|
makeWithState(
|
|
225
215
|
[self.initial, that.initial, true as boolean] as const,
|
|
226
216
|
(now, input, state) =>
|
|
@@ -230,7 +220,7 @@ export const andThenEither = dual<
|
|
|
230
220
|
return core.map(that.step(now, input, state[1]), ([rState, out, decision]) =>
|
|
231
221
|
[
|
|
232
222
|
[lState, rState, false as boolean] as const,
|
|
233
|
-
Either.right(out) as Either.Either<
|
|
223
|
+
Either.right(out) as Either.Either<Out2, Out>,
|
|
234
224
|
decision as ScheduleDecision.ScheduleDecision
|
|
235
225
|
] as const)
|
|
236
226
|
}
|
|
@@ -245,39 +235,33 @@ export const andThenEither = dual<
|
|
|
245
235
|
core.map(that.step(now, input, state[1]), ([rState, out, decision]) =>
|
|
246
236
|
[
|
|
247
237
|
[state[0], rState, false as boolean] as const,
|
|
248
|
-
Either.right(out) as Either.Either<
|
|
238
|
+
Either.right(out) as Either.Either<Out2, Out>,
|
|
249
239
|
decision
|
|
250
240
|
] as const)
|
|
251
241
|
))
|
|
252
242
|
|
|
253
243
|
/** @internal */
|
|
254
244
|
export const as = dual<
|
|
255
|
-
<Out2>(out: Out2) => <
|
|
256
|
-
<
|
|
245
|
+
<Out2>(out: Out2) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out2, In, R>,
|
|
246
|
+
<Out, In, R, Out2>(self: Schedule.Schedule<Out, In, R>, out: Out2) => Schedule.Schedule<Out2, In, R>
|
|
257
247
|
>(2, (self, out) => map(self, () => out))
|
|
258
248
|
|
|
259
249
|
/** @internal */
|
|
260
|
-
export const asUnit = <
|
|
261
|
-
self: Schedule.Schedule<
|
|
262
|
-
): Schedule.Schedule<
|
|
250
|
+
export const asUnit = <Out, In, R>(
|
|
251
|
+
self: Schedule.Schedule<Out, In, R>
|
|
252
|
+
): Schedule.Schedule<void, In, R> => map(self, constVoid)
|
|
263
253
|
|
|
264
254
|
/** @internal */
|
|
265
255
|
export const bothInOut = dual<
|
|
266
|
-
<
|
|
267
|
-
that: Schedule.Schedule<
|
|
268
|
-
) => <
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
that: Schedule.Schedule<Env2, In2, Out2>
|
|
276
|
-
) => Schedule.Schedule<
|
|
277
|
-
Env | Env2,
|
|
278
|
-
readonly [In, In2],
|
|
279
|
-
[Out, Out2]
|
|
280
|
-
>
|
|
256
|
+
<Out2, In2, R2>(
|
|
257
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
258
|
+
) => <Out, In, R>(
|
|
259
|
+
self: Schedule.Schedule<Out, In, R>
|
|
260
|
+
) => Schedule.Schedule<[Out, Out2], readonly [In, In2], R | R2>,
|
|
261
|
+
<Out, In, R, Out2, In2, R2>(
|
|
262
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
263
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
264
|
+
) => Schedule.Schedule<[Out, Out2], readonly [In, In2], R | R2>
|
|
281
265
|
>(2, (self, that) =>
|
|
282
266
|
makeWithState([self.initial, that.initial], (now, [in1, in2], state) =>
|
|
283
267
|
core.zipWith(
|
|
@@ -300,22 +284,22 @@ export const bothInOut = dual<
|
|
|
300
284
|
export const check = dual<
|
|
301
285
|
<In, Out>(
|
|
302
286
|
test: (input: In, output: Out) => boolean
|
|
303
|
-
) => <
|
|
304
|
-
<
|
|
305
|
-
self: Schedule.Schedule<
|
|
287
|
+
) => <R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R>,
|
|
288
|
+
<Out, In, R>(
|
|
289
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
306
290
|
test: (input: In, output: Out) => boolean
|
|
307
|
-
) => Schedule.Schedule<
|
|
291
|
+
) => Schedule.Schedule<Out, In, R>
|
|
308
292
|
>(2, (self, test) => checkEffect(self, (input, out) => core.sync(() => test(input, out))))
|
|
309
293
|
|
|
310
294
|
/** @internal */
|
|
311
295
|
export const checkEffect = dual<
|
|
312
|
-
<In, Out,
|
|
313
|
-
test: (input: In, output: Out) => Effect.Effect<boolean, never,
|
|
314
|
-
) => <
|
|
315
|
-
<
|
|
316
|
-
self: Schedule.Schedule<
|
|
317
|
-
test: (input: In, output: Out) => Effect.Effect<boolean, never,
|
|
318
|
-
) => Schedule.Schedule<
|
|
296
|
+
<In, Out, R2>(
|
|
297
|
+
test: (input: In, output: Out) => Effect.Effect<boolean, never, R2>
|
|
298
|
+
) => <R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R | R2>,
|
|
299
|
+
<Out, In, R, R2>(
|
|
300
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
301
|
+
test: (input: In, output: Out) => Effect.Effect<boolean, never, R2>
|
|
302
|
+
) => Schedule.Schedule<Out, In, R | R2>
|
|
319
303
|
>(2, (self, test) =>
|
|
320
304
|
makeWithState(
|
|
321
305
|
self.initial,
|
|
@@ -331,41 +315,41 @@ export const checkEffect = dual<
|
|
|
331
315
|
})
|
|
332
316
|
))
|
|
333
317
|
/** @internal */
|
|
334
|
-
export const collectAllInputs = <A>(): Schedule.Schedule<
|
|
318
|
+
export const collectAllInputs = <A>(): Schedule.Schedule<Chunk.Chunk<A>, A> => collectAllOutputs(identity<A>())
|
|
335
319
|
|
|
336
320
|
/** @internal */
|
|
337
|
-
export const collectAllOutputs = <
|
|
338
|
-
self: Schedule.Schedule<
|
|
339
|
-
): Schedule.Schedule<
|
|
321
|
+
export const collectAllOutputs = <Out, In, R>(
|
|
322
|
+
self: Schedule.Schedule<Out, In, R>
|
|
323
|
+
): Schedule.Schedule<Chunk.Chunk<Out>, In, R> =>
|
|
340
324
|
reduce(self, Chunk.empty<Out>(), (outs, out) => pipe(outs, Chunk.append(out)))
|
|
341
325
|
|
|
342
326
|
/** @internal */
|
|
343
|
-
export const collectUntil = <A>(f: Predicate<A>): Schedule.Schedule<
|
|
327
|
+
export const collectUntil = <A>(f: Predicate<A>): Schedule.Schedule<Chunk.Chunk<A>, A> =>
|
|
344
328
|
collectAllOutputs(recurUntil(f))
|
|
345
329
|
|
|
346
330
|
/** @internal */
|
|
347
|
-
export const collectUntilEffect = <
|
|
348
|
-
f: (a: A) => Effect.Effect<boolean, never,
|
|
349
|
-
): Schedule.Schedule<
|
|
331
|
+
export const collectUntilEffect = <A, R>(
|
|
332
|
+
f: (a: A) => Effect.Effect<boolean, never, R>
|
|
333
|
+
): Schedule.Schedule<Chunk.Chunk<A>, A, R> => collectAllOutputs(recurUntilEffect(f))
|
|
350
334
|
|
|
351
335
|
/** @internal */
|
|
352
|
-
export const collectWhile = <A>(f: Predicate<A>): Schedule.Schedule<
|
|
336
|
+
export const collectWhile = <A>(f: Predicate<A>): Schedule.Schedule<Chunk.Chunk<A>, A> =>
|
|
353
337
|
collectAllOutputs(recurWhile(f))
|
|
354
338
|
|
|
355
339
|
/** @internal */
|
|
356
|
-
export const collectWhileEffect = <
|
|
357
|
-
f: (a: A) => Effect.Effect<boolean, never,
|
|
358
|
-
): Schedule.Schedule<
|
|
340
|
+
export const collectWhileEffect = <A, R>(
|
|
341
|
+
f: (a: A) => Effect.Effect<boolean, never, R>
|
|
342
|
+
): Schedule.Schedule<Chunk.Chunk<A>, A, R> => collectAllOutputs(recurWhileEffect(f))
|
|
359
343
|
|
|
360
344
|
/** @internal */
|
|
361
345
|
export const compose = dual<
|
|
362
|
-
<
|
|
363
|
-
that: Schedule.Schedule<
|
|
364
|
-
) => <
|
|
365
|
-
<
|
|
366
|
-
self: Schedule.Schedule<
|
|
367
|
-
that: Schedule.Schedule<
|
|
368
|
-
) => Schedule.Schedule<
|
|
346
|
+
<Out2, Out, R2>(
|
|
347
|
+
that: Schedule.Schedule<Out2, Out, R2>
|
|
348
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out2, In, R | R2>,
|
|
349
|
+
<Out, In, R, Out2, R2>(
|
|
350
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
351
|
+
that: Schedule.Schedule<Out2, Out, R2>
|
|
352
|
+
) => Schedule.Schedule<Out2, In, R | R2>
|
|
369
353
|
>(2, (self, that) =>
|
|
370
354
|
makeWithState(
|
|
371
355
|
[self.initial, that.initial] as const,
|
|
@@ -390,22 +374,22 @@ export const compose = dual<
|
|
|
390
374
|
export const mapInput = dual<
|
|
391
375
|
<In, In2>(
|
|
392
376
|
f: (in2: In2) => In
|
|
393
|
-
) => <
|
|
394
|
-
<
|
|
395
|
-
self: Schedule.Schedule<
|
|
377
|
+
) => <Out, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In2, R>,
|
|
378
|
+
<Out, In, R, In2>(
|
|
379
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
396
380
|
f: (in2: In2) => In
|
|
397
|
-
) => Schedule.Schedule<
|
|
381
|
+
) => Schedule.Schedule<Out, In2, R>
|
|
398
382
|
>(2, (self, f) => mapInputEffect(self, (input2) => core.sync(() => f(input2))))
|
|
399
383
|
|
|
400
384
|
/** @internal */
|
|
401
385
|
export const mapInputContext = dual<
|
|
402
|
-
<
|
|
403
|
-
f: (env0: Context.Context<
|
|
404
|
-
) => <
|
|
405
|
-
<
|
|
406
|
-
self: Schedule.Schedule<
|
|
407
|
-
f: (env0: Context.Context<
|
|
408
|
-
) => Schedule.Schedule<
|
|
386
|
+
<R0, R>(
|
|
387
|
+
f: (env0: Context.Context<R0>) => Context.Context<R>
|
|
388
|
+
) => <Out, In>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R0>,
|
|
389
|
+
<Out, In, R, R0>(
|
|
390
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
391
|
+
f: (env0: Context.Context<R0>) => Context.Context<R>
|
|
392
|
+
) => Schedule.Schedule<Out, In, R0>
|
|
409
393
|
>(2, (self, f) =>
|
|
410
394
|
makeWithState(
|
|
411
395
|
self.initial,
|
|
@@ -414,13 +398,13 @@ export const mapInputContext = dual<
|
|
|
414
398
|
|
|
415
399
|
/** @internal */
|
|
416
400
|
export const mapInputEffect = dual<
|
|
417
|
-
<
|
|
418
|
-
f: (in2: In2) => Effect.Effect<In, never,
|
|
419
|
-
) => <
|
|
420
|
-
<
|
|
421
|
-
self: Schedule.Schedule<
|
|
422
|
-
f: (in2: In2) => Effect.Effect<In, never,
|
|
423
|
-
) => Schedule.Schedule<
|
|
401
|
+
<In2, In, R2>(
|
|
402
|
+
f: (in2: In2) => Effect.Effect<In, never, R2>
|
|
403
|
+
) => <Out, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In2, R | R2>,
|
|
404
|
+
<Out, In, R, In2, R2>(
|
|
405
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
406
|
+
f: (in2: In2) => Effect.Effect<In, never, R2>
|
|
407
|
+
) => Schedule.Schedule<Out, In2, R | R2>
|
|
424
408
|
>(2, (self, f) =>
|
|
425
409
|
makeWithState(self.initial, (now, input2, state) =>
|
|
426
410
|
core.flatMap(
|
|
@@ -429,9 +413,9 @@ export const mapInputEffect = dual<
|
|
|
429
413
|
)))
|
|
430
414
|
|
|
431
415
|
/** @internal */
|
|
432
|
-
export const cron = (expression: string | Cron.Cron): Schedule.Schedule<
|
|
416
|
+
export const cron = (expression: string | Cron.Cron): Schedule.Schedule<[number, number]> => {
|
|
433
417
|
const parsed = Cron.isCron(expression) ? Either.right(expression) : Cron.parse(expression)
|
|
434
|
-
return makeWithState<[boolean, [number, number, number]],
|
|
418
|
+
return makeWithState<[boolean, [number, number, number]], unknown, [number, number]>(
|
|
435
419
|
[true, [Number.MIN_SAFE_INTEGER, 0, 0]],
|
|
436
420
|
(now, _, [initial, previous]) => {
|
|
437
421
|
if (now < previous[0]) {
|
|
@@ -470,8 +454,8 @@ export const cron = (expression: string | Cron.Cron): Schedule.Schedule<never, u
|
|
|
470
454
|
}
|
|
471
455
|
|
|
472
456
|
/** @internal */
|
|
473
|
-
export const dayOfMonth = (day: number): Schedule.Schedule<
|
|
474
|
-
return makeWithState<[number, number],
|
|
457
|
+
export const dayOfMonth = (day: number): Schedule.Schedule<number> => {
|
|
458
|
+
return makeWithState<[number, number], unknown, number>(
|
|
475
459
|
[Number.NEGATIVE_INFINITY, 0],
|
|
476
460
|
(now, _, state) => {
|
|
477
461
|
if (!Number.isInteger(day) || day < 1 || 31 < day) {
|
|
@@ -499,8 +483,8 @@ export const dayOfMonth = (day: number): Schedule.Schedule<never, unknown, numbe
|
|
|
499
483
|
}
|
|
500
484
|
|
|
501
485
|
/** @internal */
|
|
502
|
-
export const dayOfWeek = (day: number): Schedule.Schedule<
|
|
503
|
-
return makeWithState<[number, number],
|
|
486
|
+
export const dayOfWeek = (day: number): Schedule.Schedule<number> => {
|
|
487
|
+
return makeWithState<[number, number], unknown, number>(
|
|
504
488
|
[Number.MIN_SAFE_INTEGER, 0],
|
|
505
489
|
(now, _, state) => {
|
|
506
490
|
if (!Number.isInteger(day) || day < 1 || 7 < day) {
|
|
@@ -531,33 +515,33 @@ export const dayOfWeek = (day: number): Schedule.Schedule<never, unknown, number
|
|
|
531
515
|
export const delayed = dual<
|
|
532
516
|
(
|
|
533
517
|
f: (duration: Duration.Duration) => Duration.DurationInput
|
|
534
|
-
) => <
|
|
535
|
-
<
|
|
536
|
-
self: Schedule.Schedule<
|
|
518
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R>,
|
|
519
|
+
<Out, In, R>(
|
|
520
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
537
521
|
f: (duration: Duration.Duration) => Duration.DurationInput
|
|
538
|
-
) => Schedule.Schedule<
|
|
522
|
+
) => Schedule.Schedule<Out, In, R>
|
|
539
523
|
>(2, (self, f) => delayedEffect(self, (duration) => core.sync(() => f(duration))))
|
|
540
524
|
|
|
541
525
|
/** @internal */
|
|
542
526
|
export const delayedEffect = dual<
|
|
543
|
-
<
|
|
544
|
-
f: (duration: Duration.Duration) => Effect.Effect<Duration.DurationInput, never,
|
|
545
|
-
) => <
|
|
546
|
-
<
|
|
547
|
-
self: Schedule.Schedule<
|
|
548
|
-
f: (duration: Duration.Duration) => Effect.Effect<Duration.DurationInput, never,
|
|
549
|
-
) => Schedule.Schedule<
|
|
527
|
+
<R2>(
|
|
528
|
+
f: (duration: Duration.Duration) => Effect.Effect<Duration.DurationInput, never, R2>
|
|
529
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R | R2>,
|
|
530
|
+
<Out, In, R, R2>(
|
|
531
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
532
|
+
f: (duration: Duration.Duration) => Effect.Effect<Duration.DurationInput, never, R2>
|
|
533
|
+
) => Schedule.Schedule<Out, In, R | R2>
|
|
550
534
|
>(2, (self, f) => modifyDelayEffect(self, (_, delay) => f(delay)))
|
|
551
535
|
|
|
552
536
|
/** @internal */
|
|
553
|
-
export const delayedSchedule = <
|
|
554
|
-
schedule: Schedule.Schedule<
|
|
555
|
-
): Schedule.Schedule<
|
|
537
|
+
export const delayedSchedule = <In, R>(
|
|
538
|
+
schedule: Schedule.Schedule<Duration.Duration, In, R>
|
|
539
|
+
): Schedule.Schedule<Duration.Duration, In, R> => addDelay(schedule, (x) => x)
|
|
556
540
|
|
|
557
541
|
/** @internal */
|
|
558
|
-
export const delays = <
|
|
559
|
-
self: Schedule.Schedule<
|
|
560
|
-
): Schedule.Schedule<
|
|
542
|
+
export const delays = <Out, In, R>(
|
|
543
|
+
self: Schedule.Schedule<Out, In, R>
|
|
544
|
+
): Schedule.Schedule<Duration.Duration, In, R> =>
|
|
561
545
|
makeWithState(self.initial, (now, input, state) =>
|
|
562
546
|
pipe(
|
|
563
547
|
self.step(now, input, state),
|
|
@@ -579,42 +563,42 @@ export const delays = <Env, In, Out>(
|
|
|
579
563
|
|
|
580
564
|
/** @internal */
|
|
581
565
|
export const mapBoth = dual<
|
|
582
|
-
<In, Out,
|
|
566
|
+
<In2, In, Out, Out2>(
|
|
583
567
|
options: {
|
|
584
568
|
readonly onInput: (in2: In2) => In
|
|
585
569
|
readonly onOutput: (out: Out) => Out2
|
|
586
570
|
}
|
|
587
|
-
) => <
|
|
588
|
-
<
|
|
589
|
-
self: Schedule.Schedule<
|
|
571
|
+
) => <R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out2, In2, R>,
|
|
572
|
+
<Out, In, R, In2, Out2>(
|
|
573
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
590
574
|
options: {
|
|
591
575
|
readonly onInput: (in2: In2) => In
|
|
592
576
|
readonly onOutput: (out: Out) => Out2
|
|
593
577
|
}
|
|
594
|
-
) => Schedule.Schedule<
|
|
578
|
+
) => Schedule.Schedule<Out2, In2, R>
|
|
595
579
|
>(2, (self, { onInput, onOutput }) => map(mapInput(self, onInput), onOutput))
|
|
596
580
|
|
|
597
581
|
/** @internal */
|
|
598
582
|
export const mapBothEffect = dual<
|
|
599
|
-
<In2,
|
|
583
|
+
<In2, In, R2, Out, R3, Out2>(
|
|
600
584
|
options: {
|
|
601
|
-
readonly onInput: (input: In2) => Effect.Effect<In, never,
|
|
602
|
-
readonly onOutput: (out: Out) => Effect.Effect<Out2, never,
|
|
585
|
+
readonly onInput: (input: In2) => Effect.Effect<In, never, R2>
|
|
586
|
+
readonly onOutput: (out: Out) => Effect.Effect<Out2, never, R3>
|
|
603
587
|
}
|
|
604
|
-
) => <
|
|
605
|
-
<
|
|
606
|
-
self: Schedule.Schedule<
|
|
588
|
+
) => <R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out2, In2, R | R2 | R3>,
|
|
589
|
+
<Out, In, R, In2, R2, Out2, R3>(
|
|
590
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
607
591
|
options: {
|
|
608
|
-
readonly onInput: (input: In2) => Effect.Effect<In, never,
|
|
609
|
-
readonly onOutput: (out: Out) => Effect.Effect<Out2, never,
|
|
592
|
+
readonly onInput: (input: In2) => Effect.Effect<In, never, R2>
|
|
593
|
+
readonly onOutput: (out: Out) => Effect.Effect<Out2, never, R3>
|
|
610
594
|
}
|
|
611
|
-
) => Schedule.Schedule<
|
|
595
|
+
) => Schedule.Schedule<Out2, In2, R | R2 | R3>
|
|
612
596
|
>(2, (self, { onInput, onOutput }) => mapEffect(mapInputEffect(self, onInput), onOutput))
|
|
613
597
|
|
|
614
598
|
/** @internal */
|
|
615
|
-
export const driver = <
|
|
616
|
-
self: Schedule.Schedule<
|
|
617
|
-
): Effect.Effect<Schedule.ScheduleDriver<
|
|
599
|
+
export const driver = <Out, In, R>(
|
|
600
|
+
self: Schedule.Schedule<Out, In, R>
|
|
601
|
+
): Effect.Effect<Schedule.ScheduleDriver<Out, In, R>> =>
|
|
618
602
|
pipe(
|
|
619
603
|
ref.make<readonly [Option.Option<Out>, any]>([Option.none(), self.initial]),
|
|
620
604
|
core.map((ref) => new ScheduleDriverImpl(self, ref))
|
|
@@ -623,7 +607,7 @@ export const driver = <Env, In, Out>(
|
|
|
623
607
|
/** @internal */
|
|
624
608
|
export const duration = (
|
|
625
609
|
durationInput: Duration.DurationInput
|
|
626
|
-
): Schedule.Schedule<
|
|
610
|
+
): Schedule.Schedule<Duration.Duration> => {
|
|
627
611
|
const duration = Duration.decode(durationInput)
|
|
628
612
|
const durationMillis = Duration.toMillis(duration)
|
|
629
613
|
return makeWithState(true as boolean, (now, _, state) =>
|
|
@@ -640,53 +624,37 @@ export const duration = (
|
|
|
640
624
|
|
|
641
625
|
/** @internal */
|
|
642
626
|
export const either = dual<
|
|
643
|
-
<
|
|
644
|
-
that: Schedule.Schedule<
|
|
645
|
-
) => <
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
<Env, In, Out, Env2, In2, Out2>(
|
|
651
|
-
self: Schedule.Schedule<Env, In, Out>,
|
|
652
|
-
that: Schedule.Schedule<Env2, In2, Out2>
|
|
653
|
-
) => Schedule.Schedule<
|
|
654
|
-
Env | Env2,
|
|
655
|
-
In & In2,
|
|
656
|
-
[Out, Out2]
|
|
657
|
-
>
|
|
627
|
+
<Out2, In2, R2>(
|
|
628
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
629
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<[Out, Out2], In & In2, R | R2>,
|
|
630
|
+
<Out, In, R, Out2, In2, R2>(
|
|
631
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
632
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
633
|
+
) => Schedule.Schedule<[Out, Out2], In & In2, R | R2>
|
|
658
634
|
>(2, (self, that) => union(self, that))
|
|
659
635
|
|
|
660
636
|
/** @internal */
|
|
661
637
|
export const eitherWith = dual<
|
|
662
|
-
<
|
|
663
|
-
that: Schedule.Schedule<
|
|
638
|
+
<Out2, In2, R2>(
|
|
639
|
+
that: Schedule.Schedule<Out2, In2, R2>,
|
|
664
640
|
f: (x: Intervals.Intervals, y: Intervals.Intervals) => Intervals.Intervals
|
|
665
|
-
) => <
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
>,
|
|
670
|
-
<Env, In, Out, Env2, In2, Out2>(
|
|
671
|
-
self: Schedule.Schedule<Env, In, Out>,
|
|
672
|
-
that: Schedule.Schedule<Env2, In2, Out2>,
|
|
641
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<[Out, Out2], In & In2, R | R2>,
|
|
642
|
+
<Out, In, R, Out2, In2, R2>(
|
|
643
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
644
|
+
that: Schedule.Schedule<Out2, In2, R2>,
|
|
673
645
|
f: (x: Intervals.Intervals, y: Intervals.Intervals) => Intervals.Intervals
|
|
674
|
-
) => Schedule.Schedule<
|
|
675
|
-
Env | Env2,
|
|
676
|
-
In & In2,
|
|
677
|
-
[Out, Out2]
|
|
678
|
-
>
|
|
646
|
+
) => Schedule.Schedule<[Out, Out2], In & In2, R | R2>
|
|
679
647
|
>(3, (self, that, f) => unionWith(self, that, f))
|
|
680
648
|
|
|
681
649
|
/** @internal */
|
|
682
650
|
export const ensuring = dual<
|
|
683
651
|
<X>(
|
|
684
652
|
finalizer: Effect.Effect<X>
|
|
685
|
-
) => <
|
|
686
|
-
<
|
|
687
|
-
self: Schedule.Schedule<
|
|
653
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R>,
|
|
654
|
+
<Out, In, R, X>(
|
|
655
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
688
656
|
finalizer: Effect.Effect<X>
|
|
689
|
-
) => Schedule.Schedule<
|
|
657
|
+
) => Schedule.Schedule<Out, In, R>
|
|
690
658
|
>(2, (self, finalizer) =>
|
|
691
659
|
makeWithState(
|
|
692
660
|
self.initial,
|
|
@@ -701,13 +669,13 @@ export const ensuring = dual<
|
|
|
701
669
|
export const exponential = (
|
|
702
670
|
baseInput: Duration.DurationInput,
|
|
703
671
|
factor = 2.0
|
|
704
|
-
): Schedule.Schedule<
|
|
672
|
+
): Schedule.Schedule<Duration.Duration> => {
|
|
705
673
|
const base = Duration.decode(baseInput)
|
|
706
674
|
return delayedSchedule(map(forever, (i) => Duration.times(base, Math.pow(factor, i))))
|
|
707
675
|
}
|
|
708
676
|
|
|
709
677
|
/** @internal */
|
|
710
|
-
export const fibonacci = (oneInput: Duration.DurationInput): Schedule.Schedule<
|
|
678
|
+
export const fibonacci = (oneInput: Duration.DurationInput): Schedule.Schedule<Duration.Duration> => {
|
|
711
679
|
const one = Duration.decode(oneInput)
|
|
712
680
|
return delayedSchedule(
|
|
713
681
|
pipe(
|
|
@@ -721,10 +689,10 @@ export const fibonacci = (oneInput: Duration.DurationInput): Schedule.Schedule<n
|
|
|
721
689
|
}
|
|
722
690
|
|
|
723
691
|
/** @internal */
|
|
724
|
-
export const fixed = (intervalInput: Duration.DurationInput): Schedule.Schedule<
|
|
692
|
+
export const fixed = (intervalInput: Duration.DurationInput): Schedule.Schedule<number> => {
|
|
725
693
|
const interval = Duration.decode(intervalInput)
|
|
726
694
|
const intervalMillis = Duration.toMillis(interval)
|
|
727
|
-
return makeWithState<[Option.Option<[number, number]>, number],
|
|
695
|
+
return makeWithState<[Option.Option<[number, number]>, number], unknown, number>(
|
|
728
696
|
[Option.none(), 0],
|
|
729
697
|
(now, _, [option, n]) =>
|
|
730
698
|
core.sync(() => {
|
|
@@ -756,14 +724,13 @@ export const fixed = (intervalInput: Duration.DurationInput): Schedule.Schedule<
|
|
|
756
724
|
}
|
|
757
725
|
|
|
758
726
|
/** @internal */
|
|
759
|
-
export const fromDelay = (delay: Duration.DurationInput): Schedule.Schedule<
|
|
760
|
-
duration(delay)
|
|
727
|
+
export const fromDelay = (delay: Duration.DurationInput): Schedule.Schedule<Duration.Duration> => duration(delay)
|
|
761
728
|
|
|
762
729
|
/** @internal */
|
|
763
730
|
export const fromDelays = (
|
|
764
731
|
delay: Duration.DurationInput,
|
|
765
732
|
...delays: Array<Duration.DurationInput>
|
|
766
|
-
): Schedule.Schedule<
|
|
733
|
+
): Schedule.Schedule<Duration.Duration> =>
|
|
767
734
|
makeWithState(
|
|
768
735
|
[[delay, ...delays].map((_) => Duration.decode(_)) as Array<Duration.Duration>, true as boolean] as const,
|
|
769
736
|
(now, _, [durations, cont]) =>
|
|
@@ -790,11 +757,11 @@ export const fromDelays = (
|
|
|
790
757
|
)
|
|
791
758
|
|
|
792
759
|
/** @internal */
|
|
793
|
-
export const fromFunction = <A, B>(f: (a: A) => B): Schedule.Schedule<
|
|
760
|
+
export const fromFunction = <A, B>(f: (a: A) => B): Schedule.Schedule<B, A> => map(identity<A>(), f)
|
|
794
761
|
|
|
795
762
|
/** @internal */
|
|
796
|
-
export const hourOfDay = (hour: number): Schedule.Schedule<
|
|
797
|
-
makeWithState<[number, number],
|
|
763
|
+
export const hourOfDay = (hour: number): Schedule.Schedule<number> =>
|
|
764
|
+
makeWithState<[number, number], unknown, number>(
|
|
798
765
|
[Number.NEGATIVE_INFINITY, 0],
|
|
799
766
|
(now, _, state) => {
|
|
800
767
|
if (!Number.isInteger(hour) || hour < 0 || 23 < hour) {
|
|
@@ -821,7 +788,7 @@ export const hourOfDay = (hour: number): Schedule.Schedule<never, unknown, numbe
|
|
|
821
788
|
)
|
|
822
789
|
|
|
823
790
|
/** @internal */
|
|
824
|
-
export const identity = <A>(): Schedule.Schedule<
|
|
791
|
+
export const identity = <A>(): Schedule.Schedule<A, A> =>
|
|
825
792
|
makeWithState(void 0, (now, input, state) =>
|
|
826
793
|
core.succeed(
|
|
827
794
|
[
|
|
@@ -833,52 +800,32 @@ export const identity = <A>(): Schedule.Schedule<never, A, A> =>
|
|
|
833
800
|
|
|
834
801
|
/** @internal */
|
|
835
802
|
export const intersect = dual<
|
|
836
|
-
<
|
|
837
|
-
that: Schedule.Schedule<
|
|
838
|
-
) => <
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
<Env, In, Out, Env2, In2, Out2>(
|
|
844
|
-
self: Schedule.Schedule<Env, In, Out>,
|
|
845
|
-
that: Schedule.Schedule<Env2, In2, Out2>
|
|
846
|
-
) => Schedule.Schedule<
|
|
847
|
-
Env | Env2,
|
|
848
|
-
In & In2,
|
|
849
|
-
[Out, Out2]
|
|
850
|
-
>
|
|
803
|
+
<Out2, In2, R2>(
|
|
804
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
805
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<[Out, Out2], In & In2, R | R2>,
|
|
806
|
+
<Out, In, R, Out2, In2, R2>(
|
|
807
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
808
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
809
|
+
) => Schedule.Schedule<[Out, Out2], In & In2, R | R2>
|
|
851
810
|
>(2, (self, that) => intersectWith(self, that, Intervals.intersect))
|
|
852
811
|
|
|
853
812
|
/** @internal */
|
|
854
813
|
export const intersectWith = dual<
|
|
855
|
-
<
|
|
856
|
-
that: Schedule.Schedule<
|
|
814
|
+
<Out2, In2, R2>(
|
|
815
|
+
that: Schedule.Schedule<Out2, In2, R2>,
|
|
857
816
|
f: (x: Intervals.Intervals, y: Intervals.Intervals) => Intervals.Intervals
|
|
858
|
-
) => <
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
>,
|
|
863
|
-
<Env, In, Out, Env2, In2, Out2>(
|
|
864
|
-
self: Schedule.Schedule<Env, In, Out>,
|
|
865
|
-
that: Schedule.Schedule<Env2, In2, Out2>,
|
|
817
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<[Out, Out2], In & In2, R | R2>,
|
|
818
|
+
<Out, In, R, Out2, In2, R2>(
|
|
819
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
820
|
+
that: Schedule.Schedule<Out2, In2, R2>,
|
|
866
821
|
f: (x: Intervals.Intervals, y: Intervals.Intervals) => Intervals.Intervals
|
|
867
|
-
) => Schedule.Schedule<
|
|
868
|
-
Env | Env2,
|
|
869
|
-
In & In2,
|
|
870
|
-
[Out, Out2]
|
|
871
|
-
>
|
|
822
|
+
) => Schedule.Schedule<[Out, Out2], In & In2, R | R2>
|
|
872
823
|
>(3, <Env, In, Out, Env2, In2, Out2>(
|
|
873
|
-
self: Schedule.Schedule<
|
|
874
|
-
that: Schedule.Schedule<
|
|
824
|
+
self: Schedule.Schedule<Out, In, Env>,
|
|
825
|
+
that: Schedule.Schedule<Out2, In2, Env2>,
|
|
875
826
|
f: (x: Intervals.Intervals, y: Intervals.Intervals) => Intervals.Intervals
|
|
876
|
-
): Schedule.Schedule<
|
|
877
|
-
Env | Env2
|
|
878
|
-
In & In2,
|
|
879
|
-
[Out, Out2]
|
|
880
|
-
> =>
|
|
881
|
-
makeWithState<[any, any], Env | Env2, In & In2, [Out, Out2]>(
|
|
827
|
+
): Schedule.Schedule<[Out, Out2], In & In2, Env | Env2> =>
|
|
828
|
+
makeWithState<[any, any], In & In2, [Out, Out2], Env | Env2>(
|
|
882
829
|
[self.initial, that.initial],
|
|
883
830
|
(now, input: In & In2, state) =>
|
|
884
831
|
pipe(
|
|
@@ -918,8 +865,8 @@ export const intersectWith = dual<
|
|
|
918
865
|
|
|
919
866
|
/** @internal */
|
|
920
867
|
const intersectWithLoop = <State, State1, Env, In, Out, Env1, In1, Out2>(
|
|
921
|
-
self: Schedule.Schedule<
|
|
922
|
-
that: Schedule.Schedule<
|
|
868
|
+
self: Schedule.Schedule<Out, In, Env>,
|
|
869
|
+
that: Schedule.Schedule<Out2, In1, Env1>,
|
|
923
870
|
input: In & In1,
|
|
924
871
|
lState: State,
|
|
925
872
|
out: Out,
|
|
@@ -989,18 +936,18 @@ const intersectWithLoop = <State, State1, Env, In, Out, Env1, In1, Out2>(
|
|
|
989
936
|
}
|
|
990
937
|
|
|
991
938
|
/** @internal */
|
|
992
|
-
export const jittered = <
|
|
939
|
+
export const jittered = <Out, In, R>(self: Schedule.Schedule<Out, In, R>): Schedule.Schedule<Out, In, R> =>
|
|
993
940
|
jitteredWith(self, { min: 0.8, max: 1.2 })
|
|
994
941
|
|
|
995
942
|
/** @internal */
|
|
996
943
|
export const jitteredWith = dual<
|
|
997
|
-
(options: { min?: number; max?: number }) => <
|
|
998
|
-
self: Schedule.Schedule<
|
|
999
|
-
) => Schedule.Schedule<
|
|
1000
|
-
<
|
|
1001
|
-
self: Schedule.Schedule<
|
|
1002
|
-
options: { min?: number; max?: number }
|
|
1003
|
-
) => Schedule.Schedule<
|
|
944
|
+
(options: { min?: number | undefined; max?: number | undefined }) => <Out, In, R>(
|
|
945
|
+
self: Schedule.Schedule<Out, In, R>
|
|
946
|
+
) => Schedule.Schedule<Out, In, R>,
|
|
947
|
+
<Out, In, R>(
|
|
948
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
949
|
+
options: { min?: number | undefined; max?: number | undefined }
|
|
950
|
+
) => Schedule.Schedule<Out, In, R>
|
|
1004
951
|
>(2, (self, options) => {
|
|
1005
952
|
const { max, min } = Object.assign({ min: 0.8, max: 1.2 }, options)
|
|
1006
953
|
return delayedEffect(self, (duration) =>
|
|
@@ -1012,7 +959,7 @@ export const jitteredWith = dual<
|
|
|
1012
959
|
})
|
|
1013
960
|
|
|
1014
961
|
/** @internal */
|
|
1015
|
-
export const linear = (baseInput: Duration.DurationInput): Schedule.Schedule<
|
|
962
|
+
export const linear = (baseInput: Duration.DurationInput): Schedule.Schedule<Duration.Duration> => {
|
|
1016
963
|
const base = Duration.decode(baseInput)
|
|
1017
964
|
return delayedSchedule(map(forever, (i) => Duration.times(base, i + 1)))
|
|
1018
965
|
}
|
|
@@ -1021,22 +968,22 @@ export const linear = (baseInput: Duration.DurationInput): Schedule.Schedule<nev
|
|
|
1021
968
|
export const map = dual<
|
|
1022
969
|
<Out, Out2>(
|
|
1023
970
|
f: (out: Out) => Out2
|
|
1024
|
-
) => <
|
|
1025
|
-
<
|
|
1026
|
-
self: Schedule.Schedule<
|
|
971
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out2, In, R>,
|
|
972
|
+
<Out, In, R, Out2>(
|
|
973
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1027
974
|
f: (out: Out) => Out2
|
|
1028
|
-
) => Schedule.Schedule<
|
|
975
|
+
) => Schedule.Schedule<Out2, In, R>
|
|
1029
976
|
>(2, (self, f) => mapEffect(self, (out) => core.sync(() => f(out))))
|
|
1030
977
|
|
|
1031
978
|
/** @internal */
|
|
1032
979
|
export const mapEffect = dual<
|
|
1033
|
-
<Out,
|
|
1034
|
-
f: (out: Out) => Effect.Effect<Out2, never,
|
|
1035
|
-
) => <
|
|
1036
|
-
<
|
|
1037
|
-
self: Schedule.Schedule<
|
|
1038
|
-
f: (out: Out) => Effect.Effect<Out2, never,
|
|
1039
|
-
) => Schedule.Schedule<
|
|
980
|
+
<Out, Out2, R2>(
|
|
981
|
+
f: (out: Out) => Effect.Effect<Out2, never, R2>
|
|
982
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out2, In, R | R2>,
|
|
983
|
+
<Out, In, R, Out2, R2>(
|
|
984
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
985
|
+
f: (out: Out) => Effect.Effect<Out2, never, R2>
|
|
986
|
+
) => Schedule.Schedule<Out2, In, R | R2>
|
|
1040
987
|
>(2, (self, f) =>
|
|
1041
988
|
makeWithState(
|
|
1042
989
|
self.initial,
|
|
@@ -1049,8 +996,8 @@ export const mapEffect = dual<
|
|
|
1049
996
|
))
|
|
1050
997
|
|
|
1051
998
|
/** @internal */
|
|
1052
|
-
export const minuteOfHour = (minute: number): Schedule.Schedule<
|
|
1053
|
-
makeWithState<[number, number],
|
|
999
|
+
export const minuteOfHour = (minute: number): Schedule.Schedule<number> =>
|
|
1000
|
+
makeWithState<[number, number], unknown, number>(
|
|
1054
1001
|
[Number.MIN_SAFE_INTEGER, 0],
|
|
1055
1002
|
(now, _, state) => {
|
|
1056
1003
|
if (!Number.isInteger(minute) || minute < 0 || 59 < minute) {
|
|
@@ -1080,22 +1027,22 @@ export const minuteOfHour = (minute: number): Schedule.Schedule<never, unknown,
|
|
|
1080
1027
|
export const modifyDelay = dual<
|
|
1081
1028
|
<Out>(
|
|
1082
1029
|
f: (out: Out, duration: Duration.Duration) => Duration.DurationInput
|
|
1083
|
-
) => <
|
|
1084
|
-
<
|
|
1085
|
-
self: Schedule.Schedule<
|
|
1030
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R>,
|
|
1031
|
+
<Out, In, R>(
|
|
1032
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1086
1033
|
f: (out: Out, duration: Duration.Duration) => Duration.DurationInput
|
|
1087
|
-
) => Schedule.Schedule<
|
|
1034
|
+
) => Schedule.Schedule<Out, In, R>
|
|
1088
1035
|
>(2, (self, f) => modifyDelayEffect(self, (out, duration) => core.sync(() => f(out, duration))))
|
|
1089
1036
|
|
|
1090
1037
|
/** @internal */
|
|
1091
1038
|
export const modifyDelayEffect = dual<
|
|
1092
|
-
<Out,
|
|
1093
|
-
f: (out: Out, duration: Duration.Duration) => Effect.Effect<Duration.DurationInput, never,
|
|
1094
|
-
) => <
|
|
1095
|
-
<
|
|
1096
|
-
self: Schedule.Schedule<
|
|
1097
|
-
f: (out: Out, duration: Duration.Duration) => Effect.Effect<Duration.DurationInput, never,
|
|
1098
|
-
) => Schedule.Schedule<
|
|
1039
|
+
<Out, R2>(
|
|
1040
|
+
f: (out: Out, duration: Duration.Duration) => Effect.Effect<Duration.DurationInput, never, R2>
|
|
1041
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R | R2>,
|
|
1042
|
+
<Out, In, R, R2>(
|
|
1043
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1044
|
+
f: (out: Out, duration: Duration.Duration) => Effect.Effect<Duration.DurationInput, never, R2>
|
|
1045
|
+
) => Schedule.Schedule<Out, In, R | R2>
|
|
1099
1046
|
>(2, (self, f) =>
|
|
1100
1047
|
makeWithState(
|
|
1101
1048
|
self.initial,
|
|
@@ -1120,13 +1067,13 @@ export const modifyDelayEffect = dual<
|
|
|
1120
1067
|
|
|
1121
1068
|
/** @internal */
|
|
1122
1069
|
export const onDecision = dual<
|
|
1123
|
-
<Out,
|
|
1124
|
-
f: (out: Out, decision: ScheduleDecision.ScheduleDecision) => Effect.Effect<X, never,
|
|
1125
|
-
) => <
|
|
1126
|
-
<
|
|
1127
|
-
self: Schedule.Schedule<
|
|
1128
|
-
f: (out: Out, decision: ScheduleDecision.ScheduleDecision) => Effect.Effect<X, never,
|
|
1129
|
-
) => Schedule.Schedule<
|
|
1070
|
+
<Out, X, R2>(
|
|
1071
|
+
f: (out: Out, decision: ScheduleDecision.ScheduleDecision) => Effect.Effect<X, never, R2>
|
|
1072
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R | R2>,
|
|
1073
|
+
<Out, In, R, X, R2>(
|
|
1074
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1075
|
+
f: (out: Out, decision: ScheduleDecision.ScheduleDecision) => Effect.Effect<X, never, R2>
|
|
1076
|
+
) => Schedule.Schedule<Out, In, R | R2>
|
|
1130
1077
|
>(2, (self, f) =>
|
|
1131
1078
|
makeWithState(
|
|
1132
1079
|
self.initial,
|
|
@@ -1138,9 +1085,9 @@ export const onDecision = dual<
|
|
|
1138
1085
|
))
|
|
1139
1086
|
|
|
1140
1087
|
/** @internal */
|
|
1141
|
-
export const passthrough = <
|
|
1142
|
-
self: Schedule.Schedule<
|
|
1143
|
-
): Schedule.Schedule<
|
|
1088
|
+
export const passthrough = <Out, In, R>(
|
|
1089
|
+
self: Schedule.Schedule<Out, In, R>
|
|
1090
|
+
): Schedule.Schedule<In, In, R> =>
|
|
1144
1091
|
makeWithState(self.initial, (now, input, state) =>
|
|
1145
1092
|
pipe(
|
|
1146
1093
|
self.step(now, input, state),
|
|
@@ -1149,13 +1096,13 @@ export const passthrough = <Env, Input, Output>(
|
|
|
1149
1096
|
|
|
1150
1097
|
/** @internal */
|
|
1151
1098
|
export const provideContext = dual<
|
|
1152
|
-
<
|
|
1153
|
-
context: Context.Context<
|
|
1154
|
-
) => <
|
|
1155
|
-
<
|
|
1156
|
-
self: Schedule.Schedule<
|
|
1157
|
-
context: Context.Context<
|
|
1158
|
-
) => Schedule.Schedule<
|
|
1099
|
+
<R>(
|
|
1100
|
+
context: Context.Context<R>
|
|
1101
|
+
) => <Out, In>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In>,
|
|
1102
|
+
<Out, In, R>(
|
|
1103
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1104
|
+
context: Context.Context<R>
|
|
1105
|
+
) => Schedule.Schedule<Out, In>
|
|
1159
1106
|
>(2, (self, context) =>
|
|
1160
1107
|
makeWithState(self.initial, (now, input, state) =>
|
|
1161
1108
|
core.provideContext(
|
|
@@ -1168,19 +1115,19 @@ export const provideService = dual<
|
|
|
1168
1115
|
<T extends Context.Tag<any, any>>(
|
|
1169
1116
|
tag: T,
|
|
1170
1117
|
service: Context.Tag.Service<T>
|
|
1171
|
-
) => <
|
|
1172
|
-
self: Schedule.Schedule<
|
|
1173
|
-
) => Schedule.Schedule<Exclude<R, Context.Tag.Identifier<T
|
|
1174
|
-
<
|
|
1175
|
-
self: Schedule.Schedule<
|
|
1118
|
+
) => <Out, In, R>(
|
|
1119
|
+
self: Schedule.Schedule<Out, In, R>
|
|
1120
|
+
) => Schedule.Schedule<Out, In, Exclude<R, Context.Tag.Identifier<T>>>,
|
|
1121
|
+
<Out, In, R, T extends Context.Tag<any, any>>(
|
|
1122
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1176
1123
|
tag: T,
|
|
1177
1124
|
service: Context.Tag.Service<T>
|
|
1178
|
-
) => Schedule.Schedule<Exclude<R, Context.Tag.Identifier<T
|
|
1179
|
-
>(3, <
|
|
1180
|
-
self: Schedule.Schedule<
|
|
1125
|
+
) => Schedule.Schedule<Out, In, Exclude<R, Context.Tag.Identifier<T>>>
|
|
1126
|
+
>(3, <Out, In, R, T extends Context.Tag<any, any>>(
|
|
1127
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1181
1128
|
tag: T,
|
|
1182
1129
|
service: Context.Tag.Service<T>
|
|
1183
|
-
): Schedule.Schedule<Exclude<R, Context.Tag.Identifier<T
|
|
1130
|
+
): Schedule.Schedule<Out, In, Exclude<R, Context.Tag.Identifier<T>>> =>
|
|
1184
1131
|
makeWithState(self.initial, (now, input, state) =>
|
|
1185
1132
|
core.contextWithEffect((env) =>
|
|
1186
1133
|
core.provideContext(
|
|
@@ -1191,60 +1138,60 @@ export const provideService = dual<
|
|
|
1191
1138
|
)))
|
|
1192
1139
|
|
|
1193
1140
|
/** @internal */
|
|
1194
|
-
export const recurUntil = <A>(f: Predicate<A>): Schedule.Schedule<
|
|
1141
|
+
export const recurUntil = <A>(f: Predicate<A>): Schedule.Schedule<A, A> => untilInput(identity<A>(), f)
|
|
1195
1142
|
|
|
1196
1143
|
/** @internal */
|
|
1197
|
-
export const recurUntilEffect = <
|
|
1198
|
-
f: (a: A) => Effect.Effect<boolean, never,
|
|
1199
|
-
): Schedule.Schedule<
|
|
1144
|
+
export const recurUntilEffect = <A, R>(
|
|
1145
|
+
f: (a: A) => Effect.Effect<boolean, never, R>
|
|
1146
|
+
): Schedule.Schedule<A, A, R> => untilInputEffect(identity<A>(), f)
|
|
1200
1147
|
|
|
1201
1148
|
/** @internal */
|
|
1202
|
-
export const recurUntilOption = <A, B>(pf: (a: A) => Option.Option<B>): Schedule.Schedule<
|
|
1149
|
+
export const recurUntilOption = <A, B>(pf: (a: A) => Option.Option<B>): Schedule.Schedule<Option.Option<B>, A> =>
|
|
1203
1150
|
untilOutput(map(identity<A>(), pf), Option.isSome)
|
|
1204
1151
|
|
|
1205
1152
|
/** @internal */
|
|
1206
1153
|
export const recurUpTo = (
|
|
1207
1154
|
durationInput: Duration.DurationInput
|
|
1208
|
-
): Schedule.Schedule<
|
|
1155
|
+
): Schedule.Schedule<Duration.Duration> => {
|
|
1209
1156
|
const duration = Duration.decode(durationInput)
|
|
1210
1157
|
return whileOutput(elapsed, (elapsed) => Duration.lessThan(elapsed, duration))
|
|
1211
1158
|
}
|
|
1212
1159
|
|
|
1213
1160
|
/** @internal */
|
|
1214
|
-
export const recurWhile = <A>(f: Predicate<A>): Schedule.Schedule<
|
|
1161
|
+
export const recurWhile = <A>(f: Predicate<A>): Schedule.Schedule<A, A> => whileInput(identity<A>(), f)
|
|
1215
1162
|
|
|
1216
1163
|
/** @internal */
|
|
1217
|
-
export const recurWhileEffect = <
|
|
1218
|
-
f: (a: A) => Effect.Effect<boolean, never,
|
|
1219
|
-
): Schedule.Schedule<
|
|
1164
|
+
export const recurWhileEffect = <A, R>(
|
|
1165
|
+
f: (a: A) => Effect.Effect<boolean, never, R>
|
|
1166
|
+
): Schedule.Schedule<A, A, R> => whileInputEffect(identity<A>(), f)
|
|
1220
1167
|
|
|
1221
1168
|
/** @internal */
|
|
1222
|
-
export const recurs = (n: number): Schedule.Schedule<
|
|
1169
|
+
export const recurs = (n: number): Schedule.Schedule<number> => whileOutput(forever, (out) => out < n)
|
|
1223
1170
|
|
|
1224
1171
|
/** @internal */
|
|
1225
1172
|
export const reduce = dual<
|
|
1226
1173
|
<Out, Z>(
|
|
1227
1174
|
zero: Z,
|
|
1228
1175
|
f: (z: Z, out: Out) => Z
|
|
1229
|
-
) => <
|
|
1230
|
-
<
|
|
1231
|
-
self: Schedule.Schedule<
|
|
1176
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Z, In, R>,
|
|
1177
|
+
<Out, In, R, Z>(
|
|
1178
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1232
1179
|
zero: Z,
|
|
1233
1180
|
f: (z: Z, out: Out) => Z
|
|
1234
|
-
) => Schedule.Schedule<
|
|
1181
|
+
) => Schedule.Schedule<Z, In, R>
|
|
1235
1182
|
>(3, (self, zero, f) => reduceEffect(self, zero, (z, out) => core.sync(() => f(z, out))))
|
|
1236
1183
|
|
|
1237
1184
|
/** @internal */
|
|
1238
1185
|
export const reduceEffect = dual<
|
|
1239
|
-
<
|
|
1186
|
+
<Z, Out, R2>(
|
|
1240
1187
|
zero: Z,
|
|
1241
|
-
f: (z: Z, out: Out) => Effect.Effect<Z, never,
|
|
1242
|
-
) => <
|
|
1243
|
-
<
|
|
1244
|
-
self: Schedule.Schedule<
|
|
1188
|
+
f: (z: Z, out: Out) => Effect.Effect<Z, never, R2>
|
|
1189
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Z, In, R | R2>,
|
|
1190
|
+
<Out, In, R, Z, R2>(
|
|
1191
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1245
1192
|
zero: Z,
|
|
1246
|
-
f: (z: Z, out: Out) => Effect.Effect<Z, never,
|
|
1247
|
-
) => Schedule.Schedule<
|
|
1193
|
+
f: (z: Z, out: Out) => Effect.Effect<Z, never, R2>
|
|
1194
|
+
) => Schedule.Schedule<Z, In, R | R2>
|
|
1248
1195
|
>(3, (self, zero, f) =>
|
|
1249
1196
|
makeWithState(
|
|
1250
1197
|
[self.initial, zero] as const,
|
|
@@ -1256,7 +1203,7 @@ export const reduceEffect = dual<
|
|
|
1256
1203
|
))
|
|
1257
1204
|
|
|
1258
1205
|
/** @internal */
|
|
1259
|
-
export const repeatForever = <Env, In, Out>(self: Schedule.Schedule<
|
|
1206
|
+
export const repeatForever = <Env, In, Out>(self: Schedule.Schedule<Out, In, Env>): Schedule.Schedule<Out, In, Env> =>
|
|
1260
1207
|
makeWithState(self.initial, (now, input, state) => {
|
|
1261
1208
|
const step = (
|
|
1262
1209
|
now: number,
|
|
@@ -1274,20 +1221,20 @@ export const repeatForever = <Env, In, Out>(self: Schedule.Schedule<Env, In, Out
|
|
|
1274
1221
|
})
|
|
1275
1222
|
|
|
1276
1223
|
/** @internal */
|
|
1277
|
-
export const repetitions = <
|
|
1224
|
+
export const repetitions = <Out, In, R>(self: Schedule.Schedule<Out, In, R>): Schedule.Schedule<number, In, R> =>
|
|
1278
1225
|
reduce(self, 0, (n, _) => n + 1)
|
|
1279
1226
|
|
|
1280
1227
|
/** @internal */
|
|
1281
1228
|
export const resetAfter = dual<
|
|
1282
1229
|
(
|
|
1283
1230
|
duration: Duration.DurationInput
|
|
1284
|
-
) => <
|
|
1285
|
-
self: Schedule.Schedule<
|
|
1286
|
-
) => Schedule.Schedule<
|
|
1287
|
-
<
|
|
1288
|
-
self: Schedule.Schedule<
|
|
1231
|
+
) => <Out, In, R>(
|
|
1232
|
+
self: Schedule.Schedule<Out, In, R>
|
|
1233
|
+
) => Schedule.Schedule<Out, In, R>,
|
|
1234
|
+
<Out, In, R>(
|
|
1235
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1289
1236
|
duration: Duration.DurationInput
|
|
1290
|
-
) => Schedule.Schedule<
|
|
1237
|
+
) => Schedule.Schedule<Out, In, R>
|
|
1291
1238
|
>(2, (self, durationInput) => {
|
|
1292
1239
|
const duration = Duration.decode(durationInput)
|
|
1293
1240
|
return pipe(
|
|
@@ -1300,8 +1247,8 @@ export const resetAfter = dual<
|
|
|
1300
1247
|
|
|
1301
1248
|
/** @internal */
|
|
1302
1249
|
export const resetWhen = dual<
|
|
1303
|
-
<Out>(f: Predicate<Out>) => <
|
|
1304
|
-
<
|
|
1250
|
+
<Out>(f: Predicate<Out>) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R>,
|
|
1251
|
+
<Out, In, R>(self: Schedule.Schedule<Out, In, R>, f: Predicate<Out>) => Schedule.Schedule<Out, In, R>
|
|
1305
1252
|
>(2, (self, f) =>
|
|
1306
1253
|
makeWithState(
|
|
1307
1254
|
self.initial,
|
|
@@ -1317,12 +1264,12 @@ export const run = dual<
|
|
|
1317
1264
|
<In>(
|
|
1318
1265
|
now: number,
|
|
1319
1266
|
input: Iterable<In>
|
|
1320
|
-
) => <
|
|
1321
|
-
<
|
|
1322
|
-
self: Schedule.Schedule<
|
|
1267
|
+
) => <Out, R>(self: Schedule.Schedule<Out, In, R>) => Effect.Effect<Chunk.Chunk<Out>, never, R>,
|
|
1268
|
+
<Out, In, R>(
|
|
1269
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1323
1270
|
now: number,
|
|
1324
1271
|
input: Iterable<In>
|
|
1325
|
-
) => Effect.Effect<Chunk.Chunk<Out>, never,
|
|
1272
|
+
) => Effect.Effect<Chunk.Chunk<Out>, never, R>
|
|
1326
1273
|
>(3, (self, now, input) =>
|
|
1327
1274
|
pipe(
|
|
1328
1275
|
runLoop(self, now, Chunk.fromIterable(input), self.initial, Chunk.empty()),
|
|
@@ -1331,7 +1278,7 @@ export const run = dual<
|
|
|
1331
1278
|
|
|
1332
1279
|
/** @internal */
|
|
1333
1280
|
const runLoop = <Env, In, Out>(
|
|
1334
|
-
self: Schedule.Schedule<
|
|
1281
|
+
self: Schedule.Schedule<Out, In, Env>,
|
|
1335
1282
|
now: number,
|
|
1336
1283
|
inputs: Chunk.Chunk<In>,
|
|
1337
1284
|
state: any,
|
|
@@ -1357,8 +1304,8 @@ const runLoop = <Env, In, Out>(
|
|
|
1357
1304
|
}
|
|
1358
1305
|
|
|
1359
1306
|
/** @internal */
|
|
1360
|
-
export const secondOfMinute = (second: number): Schedule.Schedule<
|
|
1361
|
-
makeWithState<[number, number],
|
|
1307
|
+
export const secondOfMinute = (second: number): Schedule.Schedule<number> =>
|
|
1308
|
+
makeWithState<[number, number], unknown, number>(
|
|
1362
1309
|
[Number.NEGATIVE_INFINITY, 0],
|
|
1363
1310
|
(now, _, state) => {
|
|
1364
1311
|
if (!Number.isInteger(second) || second < 0 || 59 < second) {
|
|
@@ -1385,24 +1332,23 @@ export const secondOfMinute = (second: number): Schedule.Schedule<never, unknown
|
|
|
1385
1332
|
)
|
|
1386
1333
|
|
|
1387
1334
|
/** @internal */
|
|
1388
|
-
export const spaced = (duration: Duration.DurationInput): Schedule.Schedule<
|
|
1389
|
-
addDelay(forever, () => duration)
|
|
1335
|
+
export const spaced = (duration: Duration.DurationInput): Schedule.Schedule<number> => addDelay(forever, () => duration)
|
|
1390
1336
|
|
|
1391
1337
|
/** @internal */
|
|
1392
|
-
export const succeed = <A>(value: A): Schedule.Schedule<
|
|
1338
|
+
export const succeed = <A>(value: A): Schedule.Schedule<A> => map(forever, () => value)
|
|
1393
1339
|
|
|
1394
1340
|
/** @internal */
|
|
1395
|
-
export const sync = <A>(evaluate: LazyArg<A>): Schedule.Schedule<
|
|
1341
|
+
export const sync = <A>(evaluate: LazyArg<A>): Schedule.Schedule<A> => map(forever, evaluate)
|
|
1396
1342
|
|
|
1397
1343
|
/** @internal */
|
|
1398
1344
|
export const tapInput = dual<
|
|
1399
|
-
<
|
|
1400
|
-
f: (input: In2) => Effect.Effect<X, never,
|
|
1401
|
-
) => <
|
|
1402
|
-
<
|
|
1403
|
-
self: Schedule.Schedule<
|
|
1404
|
-
f: (input: In2) => Effect.Effect<X, never,
|
|
1405
|
-
) => Schedule.Schedule<
|
|
1345
|
+
<In2, X, R2>(
|
|
1346
|
+
f: (input: In2) => Effect.Effect<X, never, R2>
|
|
1347
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In & In2, R | R2>,
|
|
1348
|
+
<Out, In, R, In2, X, R2>(
|
|
1349
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1350
|
+
f: (input: In2) => Effect.Effect<X, never, R2>
|
|
1351
|
+
) => Schedule.Schedule<Out, In & In2, R | R2>
|
|
1406
1352
|
>(2, (self, f) =>
|
|
1407
1353
|
makeWithState(self.initial, (now, input, state) =>
|
|
1408
1354
|
core.zipRight(
|
|
@@ -1412,13 +1358,13 @@ export const tapInput = dual<
|
|
|
1412
1358
|
|
|
1413
1359
|
/** @internal */
|
|
1414
1360
|
export const tapOutput = dual<
|
|
1415
|
-
<
|
|
1416
|
-
f: (out: XO) => Effect.Effect<X, never,
|
|
1417
|
-
) => <
|
|
1418
|
-
<
|
|
1419
|
-
self: Schedule.Schedule<
|
|
1420
|
-
f: (out: XO) => Effect.Effect<X, never,
|
|
1421
|
-
) => Schedule.Schedule<
|
|
1361
|
+
<XO extends Out, X, R2, Out>(
|
|
1362
|
+
f: (out: XO) => Effect.Effect<X, never, R2>
|
|
1363
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R | R2>,
|
|
1364
|
+
<Out, In, R, XO extends Out, X, R2>(
|
|
1365
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1366
|
+
f: (out: XO) => Effect.Effect<X, never, R2>
|
|
1367
|
+
) => Schedule.Schedule<Out, In, R | R2>
|
|
1422
1368
|
>(2, (self, f) =>
|
|
1423
1369
|
makeWithState(self.initial, (now, input, state) =>
|
|
1424
1370
|
core.tap(
|
|
@@ -1427,7 +1373,7 @@ export const tapOutput = dual<
|
|
|
1427
1373
|
)))
|
|
1428
1374
|
|
|
1429
1375
|
/** @internal */
|
|
1430
|
-
export const unfold = <A>(initial: A, f: (a: A) => A): Schedule.Schedule<
|
|
1376
|
+
export const unfold = <A>(initial: A, f: (a: A) => A): Schedule.Schedule<A> =>
|
|
1431
1377
|
makeWithState(initial, (now, _, state) =>
|
|
1432
1378
|
core.sync(() =>
|
|
1433
1379
|
[
|
|
@@ -1439,42 +1385,26 @@ export const unfold = <A>(initial: A, f: (a: A) => A): Schedule.Schedule<never,
|
|
|
1439
1385
|
|
|
1440
1386
|
/** @internal */
|
|
1441
1387
|
export const union = dual<
|
|
1442
|
-
<
|
|
1443
|
-
that: Schedule.Schedule<
|
|
1444
|
-
) => <
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
<Env, In, Out, Env2, In2, Out2>(
|
|
1450
|
-
self: Schedule.Schedule<Env, In, Out>,
|
|
1451
|
-
that: Schedule.Schedule<Env2, In2, Out2>
|
|
1452
|
-
) => Schedule.Schedule<
|
|
1453
|
-
Env | Env2,
|
|
1454
|
-
In & In2,
|
|
1455
|
-
[Out, Out2]
|
|
1456
|
-
>
|
|
1388
|
+
<Out2, In2, R2>(
|
|
1389
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
1390
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<[Out, Out2], In & In2, R | R2>,
|
|
1391
|
+
<Out, In, R, Out2, In2, R2>(
|
|
1392
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1393
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
1394
|
+
) => Schedule.Schedule<[Out, Out2], In & In2, R | R2>
|
|
1457
1395
|
>(2, (self, that) => unionWith(self, that, Intervals.union))
|
|
1458
1396
|
|
|
1459
1397
|
/** @internal */
|
|
1460
1398
|
export const unionWith = dual<
|
|
1461
|
-
<
|
|
1462
|
-
that: Schedule.Schedule<
|
|
1399
|
+
<Out2, In2, R2>(
|
|
1400
|
+
that: Schedule.Schedule<Out2, In2, R2>,
|
|
1463
1401
|
f: (x: Intervals.Intervals, y: Intervals.Intervals) => Intervals.Intervals
|
|
1464
|
-
) => <
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
>,
|
|
1469
|
-
<Env, In, Out, Env2, In2, Out2>(
|
|
1470
|
-
self: Schedule.Schedule<Env, In, Out>,
|
|
1471
|
-
that: Schedule.Schedule<Env2, In2, Out2>,
|
|
1402
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<[Out, Out2], In & In2, R | R2>,
|
|
1403
|
+
<Out, In, R, Out2, In2, R2>(
|
|
1404
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1405
|
+
that: Schedule.Schedule<Out2, In2, R2>,
|
|
1472
1406
|
f: (x: Intervals.Intervals, y: Intervals.Intervals) => Intervals.Intervals
|
|
1473
|
-
) => Schedule.Schedule<
|
|
1474
|
-
Env | Env2,
|
|
1475
|
-
In & In2,
|
|
1476
|
-
[Out, Out2]
|
|
1477
|
-
>
|
|
1407
|
+
) => Schedule.Schedule<[Out, Out2], In & In2, R | R2>
|
|
1478
1408
|
>(3, (self, that, f) =>
|
|
1479
1409
|
makeWithState([self.initial, that.initial], (now, input, state) =>
|
|
1480
1410
|
core.zipWith(
|
|
@@ -1514,88 +1444,88 @@ export const unionWith = dual<
|
|
|
1514
1444
|
|
|
1515
1445
|
/** @internal */
|
|
1516
1446
|
export const untilInput = dual<
|
|
1517
|
-
<In>(f: Predicate<In>) => <
|
|
1518
|
-
<
|
|
1447
|
+
<In>(f: Predicate<In>) => <Out, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R>,
|
|
1448
|
+
<Out, In, R>(self: Schedule.Schedule<Out, In, R>, f: Predicate<In>) => Schedule.Schedule<Out, In, R>
|
|
1519
1449
|
>(2, (self, f) => check(self, (input, _) => !f(input)))
|
|
1520
1450
|
|
|
1521
1451
|
/** @internal */
|
|
1522
1452
|
export const untilInputEffect = dual<
|
|
1523
|
-
<In,
|
|
1524
|
-
f: (input: In) => Effect.Effect<boolean, never,
|
|
1525
|
-
) => <
|
|
1526
|
-
<
|
|
1527
|
-
self: Schedule.Schedule<
|
|
1528
|
-
f: (input: In) => Effect.Effect<boolean, never,
|
|
1529
|
-
) => Schedule.Schedule<
|
|
1453
|
+
<In, R2>(
|
|
1454
|
+
f: (input: In) => Effect.Effect<boolean, never, R2>
|
|
1455
|
+
) => <Out, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R | R2>,
|
|
1456
|
+
<Out, In, R, R2>(
|
|
1457
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1458
|
+
f: (input: In) => Effect.Effect<boolean, never, R2>
|
|
1459
|
+
) => Schedule.Schedule<Out, In, R | R2>
|
|
1530
1460
|
>(2, (self, f) => checkEffect(self, (input, _) => effect.negate(f(input))))
|
|
1531
1461
|
|
|
1532
1462
|
/** @internal */
|
|
1533
1463
|
export const untilOutput = dual<
|
|
1534
|
-
<Out>(f: Predicate<Out>) => <
|
|
1535
|
-
<
|
|
1464
|
+
<Out>(f: Predicate<Out>) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R>,
|
|
1465
|
+
<Out, In, R>(self: Schedule.Schedule<Out, In, R>, f: Predicate<Out>) => Schedule.Schedule<Out, In, R>
|
|
1536
1466
|
>(2, (self, f) => check(self, (_, out) => !f(out)))
|
|
1537
1467
|
|
|
1538
1468
|
/** @internal */
|
|
1539
1469
|
export const untilOutputEffect = dual<
|
|
1540
|
-
<Out,
|
|
1541
|
-
f: (out: Out) => Effect.Effect<boolean, never,
|
|
1542
|
-
) => <
|
|
1543
|
-
<
|
|
1544
|
-
self: Schedule.Schedule<
|
|
1545
|
-
f: (out: Out) => Effect.Effect<boolean, never,
|
|
1546
|
-
) => Schedule.Schedule<
|
|
1470
|
+
<Out, R2>(
|
|
1471
|
+
f: (out: Out) => Effect.Effect<boolean, never, R2>
|
|
1472
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R | R2>,
|
|
1473
|
+
<Out, In, R, R2>(
|
|
1474
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1475
|
+
f: (out: Out) => Effect.Effect<boolean, never, R2>
|
|
1476
|
+
) => Schedule.Schedule<Out, In, R | R2>
|
|
1547
1477
|
>(2, (self, f) => checkEffect(self, (_, out) => effect.negate(f(out))))
|
|
1548
1478
|
|
|
1549
1479
|
/** @internal */
|
|
1550
1480
|
export const upTo = dual<
|
|
1551
|
-
(duration: Duration.DurationInput) => <
|
|
1552
|
-
self: Schedule.Schedule<
|
|
1553
|
-
) => Schedule.Schedule<
|
|
1554
|
-
<
|
|
1555
|
-
self: Schedule.Schedule<
|
|
1481
|
+
(duration: Duration.DurationInput) => <Out, In, R>(
|
|
1482
|
+
self: Schedule.Schedule<Out, In, R>
|
|
1483
|
+
) => Schedule.Schedule<Out, In, R>,
|
|
1484
|
+
<Out, In, R>(
|
|
1485
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1556
1486
|
duration: Duration.DurationInput
|
|
1557
|
-
) => Schedule.Schedule<
|
|
1487
|
+
) => Schedule.Schedule<Out, In, R>
|
|
1558
1488
|
>(2, (self, duration) => zipLeft(self, recurUpTo(duration)))
|
|
1559
1489
|
|
|
1560
1490
|
/** @internal */
|
|
1561
1491
|
export const whileInput = dual<
|
|
1562
|
-
<In>(f: Predicate<In>) => <
|
|
1563
|
-
<
|
|
1492
|
+
<In>(f: Predicate<In>) => <Out, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R>,
|
|
1493
|
+
<Out, In, R>(self: Schedule.Schedule<Out, In, R>, f: Predicate<In>) => Schedule.Schedule<Out, In, R>
|
|
1564
1494
|
>(2, (self, f) => check(self, (input, _) => f(input)))
|
|
1565
1495
|
|
|
1566
1496
|
/** @internal */
|
|
1567
1497
|
export const whileInputEffect = dual<
|
|
1568
|
-
<In,
|
|
1569
|
-
f: (input: In) => Effect.Effect<boolean, never,
|
|
1570
|
-
) => <
|
|
1571
|
-
<
|
|
1572
|
-
self: Schedule.Schedule<
|
|
1573
|
-
f: (input: In) => Effect.Effect<boolean, never,
|
|
1574
|
-
) => Schedule.Schedule<
|
|
1498
|
+
<In, R2>(
|
|
1499
|
+
f: (input: In) => Effect.Effect<boolean, never, R2>
|
|
1500
|
+
) => <Out, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R | R2>,
|
|
1501
|
+
<Out, In, R, R2>(
|
|
1502
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1503
|
+
f: (input: In) => Effect.Effect<boolean, never, R2>
|
|
1504
|
+
) => Schedule.Schedule<Out, In, R | R2>
|
|
1575
1505
|
>(2, (self, f) => checkEffect(self, (input, _) => f(input)))
|
|
1576
1506
|
|
|
1577
1507
|
/** @internal */
|
|
1578
1508
|
export const whileOutput = dual<
|
|
1579
|
-
<Out>(f: Predicate<Out>) => <
|
|
1580
|
-
<
|
|
1509
|
+
<Out>(f: Predicate<Out>) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R>,
|
|
1510
|
+
<Out, In, R>(self: Schedule.Schedule<Out, In, R>, f: Predicate<Out>) => Schedule.Schedule<Out, In, R>
|
|
1581
1511
|
>(2, (self, f) => check(self, (_, out) => f(out)))
|
|
1582
1512
|
|
|
1583
1513
|
/** @internal */
|
|
1584
1514
|
export const whileOutputEffect = dual<
|
|
1585
|
-
<Out,
|
|
1586
|
-
f: (out: Out) => Effect.Effect<boolean, never,
|
|
1587
|
-
) => <
|
|
1588
|
-
<
|
|
1589
|
-
self: Schedule.Schedule<
|
|
1590
|
-
f: (out: Out) => Effect.Effect<boolean, never,
|
|
1591
|
-
) => Schedule.Schedule<
|
|
1515
|
+
<Out, R2>(
|
|
1516
|
+
f: (out: Out) => Effect.Effect<boolean, never, R2>
|
|
1517
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In, R | R2>,
|
|
1518
|
+
<Out, In, R, R2>(
|
|
1519
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1520
|
+
f: (out: Out) => Effect.Effect<boolean, never, R2>
|
|
1521
|
+
) => Schedule.Schedule<Out, In, R | R2>
|
|
1592
1522
|
>(2, (self, f) => checkEffect(self, (_, out) => f(out)))
|
|
1593
1523
|
|
|
1594
1524
|
/** @internal */
|
|
1595
|
-
export const windowed = (intervalInput: Duration.DurationInput): Schedule.Schedule<
|
|
1525
|
+
export const windowed = (intervalInput: Duration.DurationInput): Schedule.Schedule<number> => {
|
|
1596
1526
|
const interval = Duration.decode(intervalInput)
|
|
1597
1527
|
const millis = Duration.toMillis(interval)
|
|
1598
|
-
return makeWithState<[Option.Option<number>, number],
|
|
1528
|
+
return makeWithState<[Option.Option<number>, number], unknown, number>(
|
|
1599
1529
|
[Option.none(), 0],
|
|
1600
1530
|
(now, _, [option, n]) => {
|
|
1601
1531
|
switch (option._tag) {
|
|
@@ -1626,37 +1556,37 @@ export const windowed = (intervalInput: Duration.DurationInput): Schedule.Schedu
|
|
|
1626
1556
|
|
|
1627
1557
|
/** @internal */
|
|
1628
1558
|
export const zipLeft = dual<
|
|
1629
|
-
<
|
|
1630
|
-
that: Schedule.Schedule<
|
|
1631
|
-
) => <
|
|
1632
|
-
<
|
|
1633
|
-
self: Schedule.Schedule<
|
|
1634
|
-
that: Schedule.Schedule<
|
|
1635
|
-
) => Schedule.Schedule<
|
|
1559
|
+
<Out2, In2, R2>(
|
|
1560
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
1561
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out, In & In2, R | R2>,
|
|
1562
|
+
<Out, In, R, Out2, In2, R2>(
|
|
1563
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1564
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
1565
|
+
) => Schedule.Schedule<Out, In & In2, R | R2>
|
|
1636
1566
|
>(2, (self, that) => map(intersect(self, that), (out) => out[0]))
|
|
1637
1567
|
|
|
1638
1568
|
/** @internal */
|
|
1639
1569
|
export const zipRight = dual<
|
|
1640
|
-
<
|
|
1641
|
-
that: Schedule.Schedule<
|
|
1642
|
-
) => <
|
|
1643
|
-
<
|
|
1644
|
-
self: Schedule.Schedule<
|
|
1645
|
-
that: Schedule.Schedule<
|
|
1646
|
-
) => Schedule.Schedule<
|
|
1570
|
+
<Out2, In2, R2>(
|
|
1571
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
1572
|
+
) => <Out, In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out2, In & In2, R | R2>,
|
|
1573
|
+
<Out, In, R, Out2, In2, R2>(
|
|
1574
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1575
|
+
that: Schedule.Schedule<Out2, In2, R2>
|
|
1576
|
+
) => Schedule.Schedule<Out2, In & In2, R | R2>
|
|
1647
1577
|
>(2, (self, that) => map(intersect(self, that), (out) => out[1]))
|
|
1648
1578
|
|
|
1649
1579
|
/** @internal */
|
|
1650
1580
|
export const zipWith = dual<
|
|
1651
|
-
<
|
|
1652
|
-
that: Schedule.Schedule<
|
|
1581
|
+
<Out2, In2, R2, Out, Out3>(
|
|
1582
|
+
that: Schedule.Schedule<Out2, In2, R2>,
|
|
1653
1583
|
f: (out: Out, out2: Out2) => Out3
|
|
1654
|
-
) => <
|
|
1655
|
-
<
|
|
1656
|
-
self: Schedule.Schedule<
|
|
1657
|
-
that: Schedule.Schedule<
|
|
1584
|
+
) => <In, R>(self: Schedule.Schedule<Out, In, R>) => Schedule.Schedule<Out3, In & In2, R | R2>,
|
|
1585
|
+
<Out, In, R, Out2, In2, R2, Out3>(
|
|
1586
|
+
self: Schedule.Schedule<Out, In, R>,
|
|
1587
|
+
that: Schedule.Schedule<Out2, In2, R2>,
|
|
1658
1588
|
f: (out: Out, out2: Out2) => Out3
|
|
1659
|
-
) => Schedule.Schedule<
|
|
1589
|
+
) => Schedule.Schedule<Out3, In & In2, R | R2>
|
|
1660
1590
|
>(3, (self, that, f) => map(intersect(self, that), ([out, out2]) => f(out, out2)))
|
|
1661
1591
|
|
|
1662
1592
|
// -----------------------------------------------------------------------------
|
|
@@ -1860,30 +1790,30 @@ const scheduleDefectRefail = <A, E, R>(self: Effect.Effect<A, E, R>) =>
|
|
|
1860
1790
|
/** @internal */
|
|
1861
1791
|
export const repeat_Effect = dual<
|
|
1862
1792
|
<R1, A, B>(
|
|
1863
|
-
schedule: Schedule.Schedule<
|
|
1793
|
+
schedule: Schedule.Schedule<B, A, R1>
|
|
1864
1794
|
) => <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E, R | R1>,
|
|
1865
1795
|
<A, E, R, R1, B>(
|
|
1866
1796
|
self: Effect.Effect<A, E, R>,
|
|
1867
|
-
schedule: Schedule.Schedule<
|
|
1797
|
+
schedule: Schedule.Schedule<B, A, R1>
|
|
1868
1798
|
) => Effect.Effect<B, E, R | R1>
|
|
1869
1799
|
>(2, (self, schedule) => repeatOrElse_Effect(self, schedule, (e, _) => core.fail(e)))
|
|
1870
1800
|
|
|
1871
1801
|
/** @internal */
|
|
1872
1802
|
export const repeat_combined = dual<{
|
|
1873
|
-
<
|
|
1803
|
+
<O extends Effect.Repeat.Options<A>, A>(
|
|
1874
1804
|
options: O
|
|
1875
1805
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Repeat.Return<R, E, A, O>
|
|
1876
|
-
<
|
|
1877
|
-
schedule: Schedule.Schedule<
|
|
1806
|
+
<B, A, R1>(
|
|
1807
|
+
schedule: Schedule.Schedule<B, A, R1>
|
|
1878
1808
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E, R | R1>
|
|
1879
1809
|
}, {
|
|
1880
1810
|
<A, E, R, O extends Effect.Repeat.Options<A>>(
|
|
1881
1811
|
self: Effect.Effect<A, E, R>,
|
|
1882
1812
|
options: O
|
|
1883
1813
|
): Effect.Repeat.Return<R, E, A, O>
|
|
1884
|
-
<A, E, R,
|
|
1814
|
+
<A, E, R, B, R1>(
|
|
1885
1815
|
self: Effect.Effect<A, E, R>,
|
|
1886
|
-
schedule: Schedule.Schedule<
|
|
1816
|
+
schedule: Schedule.Schedule<B, A, R1>
|
|
1887
1817
|
): Effect.Effect<B, E, R | R1>
|
|
1888
1818
|
}>(
|
|
1889
1819
|
2,
|
|
@@ -1922,12 +1852,12 @@ export const repeat_combined = dual<{
|
|
|
1922
1852
|
/** @internal */
|
|
1923
1853
|
export const repeatOrElse_Effect = dual<
|
|
1924
1854
|
<R2, A, B, E, E2, R3>(
|
|
1925
|
-
schedule: Schedule.Schedule<
|
|
1855
|
+
schedule: Schedule.Schedule<B, A, R2>,
|
|
1926
1856
|
orElse: (error: E, option: Option.Option<B>) => Effect.Effect<B, E2, R3>
|
|
1927
1857
|
) => <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E2, R | R2 | R3>,
|
|
1928
1858
|
<A, E, R, R2, B, E2, R3>(
|
|
1929
1859
|
self: Effect.Effect<A, E, R>,
|
|
1930
|
-
schedule: Schedule.Schedule<
|
|
1860
|
+
schedule: Schedule.Schedule<B, A, R2>,
|
|
1931
1861
|
orElse: (error: E, option: Option.Option<B>) => Effect.Effect<B, E2, R3>
|
|
1932
1862
|
) => Effect.Effect<B, E2, R | R2 | R3>
|
|
1933
1863
|
>(3, (self, schedule, orElse) =>
|
|
@@ -1940,7 +1870,7 @@ export const repeatOrElse_Effect = dual<
|
|
|
1940
1870
|
/** @internal */
|
|
1941
1871
|
const repeatOrElseEffectLoop = <A, E, R, R1, B, C, E2, R2>(
|
|
1942
1872
|
self: Effect.Effect<A, E, R>,
|
|
1943
|
-
driver: Schedule.ScheduleDriver<
|
|
1873
|
+
driver: Schedule.ScheduleDriver<B, A, R1>,
|
|
1944
1874
|
orElse: (error: E, option: Option.Option<B>) => Effect.Effect<C, E2, R2>,
|
|
1945
1875
|
value: A
|
|
1946
1876
|
): Effect.Effect<B | C, E2, R | R1 | R2> => {
|
|
@@ -1956,12 +1886,12 @@ const repeatOrElseEffectLoop = <A, E, R, R1, B, C, E2, R2>(
|
|
|
1956
1886
|
|
|
1957
1887
|
/** @internal */
|
|
1958
1888
|
export const retry_Effect = dual<
|
|
1959
|
-
<
|
|
1960
|
-
policy: Schedule.Schedule<
|
|
1961
|
-
) => <
|
|
1962
|
-
<A, E, R,
|
|
1889
|
+
<B, E, R1>(
|
|
1890
|
+
policy: Schedule.Schedule<B, E, R1>
|
|
1891
|
+
) => <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | R1>,
|
|
1892
|
+
<A, E, R, B, R1>(
|
|
1963
1893
|
self: Effect.Effect<A, E, R>,
|
|
1964
|
-
policy: Schedule.Schedule<
|
|
1894
|
+
policy: Schedule.Schedule<B, E, R1>
|
|
1965
1895
|
) => Effect.Effect<A, E, R | R1>
|
|
1966
1896
|
>(2, (self, policy) => retryOrElse_Effect(self, policy, (e, _) => core.fail(e)))
|
|
1967
1897
|
|
|
@@ -1972,16 +1902,16 @@ export const retry_combined: {
|
|
|
1972
1902
|
): <A, R>(
|
|
1973
1903
|
self: Effect.Effect<A, E, R>
|
|
1974
1904
|
) => Effect.Retry.Return<R, E, A, O>
|
|
1975
|
-
<
|
|
1976
|
-
policy: Schedule.Schedule<
|
|
1905
|
+
<B, E, R1>(
|
|
1906
|
+
policy: Schedule.Schedule<B, Types.NoInfer<E>, R1>
|
|
1977
1907
|
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R1 | R>
|
|
1978
1908
|
<A, E, R, O extends Effect.Retry.Options<E>>(
|
|
1979
1909
|
self: Effect.Effect<A, E, R>,
|
|
1980
1910
|
options: O
|
|
1981
1911
|
): Effect.Retry.Return<R, E, A, O>
|
|
1982
|
-
<
|
|
1912
|
+
<A, E, R, B, R1>(
|
|
1983
1913
|
self: Effect.Effect<A, E, R>,
|
|
1984
|
-
policy: Schedule.Schedule<
|
|
1914
|
+
policy: Schedule.Schedule<B, E, R1>
|
|
1985
1915
|
): Effect.Effect<A, E, R1 | R>
|
|
1986
1916
|
} = dual(
|
|
1987
1917
|
2,
|
|
@@ -2018,13 +1948,13 @@ export const retry_combined: {
|
|
|
2018
1948
|
|
|
2019
1949
|
/** @internal */
|
|
2020
1950
|
export const retryOrElse_Effect = dual<
|
|
2021
|
-
<
|
|
2022
|
-
policy: Schedule.Schedule<
|
|
1951
|
+
<A1, E, R1, A2, E2, R2>(
|
|
1952
|
+
policy: Schedule.Schedule<A1, Types.NoInfer<E>, R1>,
|
|
2023
1953
|
orElse: (e: Types.NoInfer<E>, out: A1) => Effect.Effect<A2, E2, R2>
|
|
2024
1954
|
) => <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A2, E | E2, R | R1 | R2>,
|
|
2025
1955
|
<A, E, R, A1, R1, A2, E2, R2>(
|
|
2026
1956
|
self: Effect.Effect<A, E, R>,
|
|
2027
|
-
policy: Schedule.Schedule<
|
|
1957
|
+
policy: Schedule.Schedule<A1, Types.NoInfer<E>, R1>,
|
|
2028
1958
|
orElse: (e: Types.NoInfer<E>, out: A1) => Effect.Effect<A2, E2, R2>
|
|
2029
1959
|
) => Effect.Effect<A | A2, E | E2, R | R1 | R2>
|
|
2030
1960
|
>(3, (self, policy, orElse) =>
|
|
@@ -2036,7 +1966,7 @@ export const retryOrElse_Effect = dual<
|
|
|
2036
1966
|
/** @internal */
|
|
2037
1967
|
const retryOrElse_EffectLoop = <A, E, R, R1, A1, A2, E2, R2>(
|
|
2038
1968
|
self: Effect.Effect<A, E, R>,
|
|
2039
|
-
driver: Schedule.ScheduleDriver<
|
|
1969
|
+
driver: Schedule.ScheduleDriver<A1, E, R1>,
|
|
2040
1970
|
orElse: (e: E, out: A1) => Effect.Effect<A2, E2, R2>
|
|
2041
1971
|
): Effect.Effect<A | A2, E | E2, R | R1 | R2> => {
|
|
2042
1972
|
return core.catchAll(
|
|
@@ -2057,27 +1987,27 @@ const retryOrElse_EffectLoop = <A, E, R, R1, A1, A2, E2, R2>(
|
|
|
2057
1987
|
/** @internal */
|
|
2058
1988
|
export const schedule_Effect = dual<
|
|
2059
1989
|
<R2, Out>(
|
|
2060
|
-
schedule: Schedule.Schedule<
|
|
1990
|
+
schedule: Schedule.Schedule<Out, unknown, R2>
|
|
2061
1991
|
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Out, E, R | R2>,
|
|
2062
1992
|
<A, E, R, R2, Out>(
|
|
2063
1993
|
self: Effect.Effect<A, E, R>,
|
|
2064
|
-
schedule: Schedule.Schedule<
|
|
1994
|
+
schedule: Schedule.Schedule<Out, unknown, R2>
|
|
2065
1995
|
) => Effect.Effect<Out, E, R | R2>
|
|
2066
1996
|
>(2, <A, E, R, R2, Out>(
|
|
2067
1997
|
self: Effect.Effect<A, E, R>,
|
|
2068
|
-
schedule: Schedule.Schedule<
|
|
1998
|
+
schedule: Schedule.Schedule<Out, unknown, R2>
|
|
2069
1999
|
) => scheduleFrom_Effect(self, void 0, schedule))
|
|
2070
2000
|
|
|
2071
2001
|
/** @internal */
|
|
2072
2002
|
export const scheduleFrom_Effect = dual<
|
|
2073
2003
|
<R2, In, Out>(
|
|
2074
2004
|
initial: In,
|
|
2075
|
-
schedule: Schedule.Schedule<
|
|
2005
|
+
schedule: Schedule.Schedule<Out, In, R2>
|
|
2076
2006
|
) => <E, R>(self: Effect.Effect<In, E, R>) => Effect.Effect<Out, E, R | R2>,
|
|
2077
2007
|
<In, E, R, R2, Out>(
|
|
2078
2008
|
self: Effect.Effect<In, E, R>,
|
|
2079
2009
|
initial: In,
|
|
2080
|
-
schedule: Schedule.Schedule<
|
|
2010
|
+
schedule: Schedule.Schedule<Out, In, R2>
|
|
2081
2011
|
) => Effect.Effect<Out, E, R | R2>
|
|
2082
2012
|
>(3, (self, initial, schedule) =>
|
|
2083
2013
|
core.flatMap(
|
|
@@ -2089,7 +2019,7 @@ export const scheduleFrom_Effect = dual<
|
|
|
2089
2019
|
const scheduleFrom_EffectLoop = <In, E, R, R2, Out>(
|
|
2090
2020
|
self: Effect.Effect<In, E, R>,
|
|
2091
2021
|
initial: In,
|
|
2092
|
-
driver: Schedule.ScheduleDriver<
|
|
2022
|
+
driver: Schedule.ScheduleDriver<Out, In, R2>
|
|
2093
2023
|
): Effect.Effect<Out, E, R | R2> =>
|
|
2094
2024
|
core.matchEffect(driver.next(initial), {
|
|
2095
2025
|
onFailure: () => core.orDie(driver.last),
|
|
@@ -2097,10 +2027,10 @@ const scheduleFrom_EffectLoop = <In, E, R, R2, Out>(
|
|
|
2097
2027
|
})
|
|
2098
2028
|
|
|
2099
2029
|
/** @internal */
|
|
2100
|
-
export const count: Schedule.Schedule<
|
|
2030
|
+
export const count: Schedule.Schedule<number> = unfold(0, (n) => n + 1)
|
|
2101
2031
|
|
|
2102
2032
|
/** @internal */
|
|
2103
|
-
export const elapsed: Schedule.Schedule<
|
|
2033
|
+
export const elapsed: Schedule.Schedule<Duration.Duration> = makeWithState(
|
|
2104
2034
|
Option.none() as Option.Option<number>,
|
|
2105
2035
|
(now, _, state) => {
|
|
2106
2036
|
switch (state._tag) {
|
|
@@ -2127,10 +2057,10 @@ export const elapsed: Schedule.Schedule<never, unknown, Duration.Duration> = mak
|
|
|
2127
2057
|
)
|
|
2128
2058
|
|
|
2129
2059
|
/** @internal */
|
|
2130
|
-
export const forever: Schedule.Schedule<
|
|
2060
|
+
export const forever: Schedule.Schedule<number> = unfold(0, (n) => n + 1)
|
|
2131
2061
|
|
|
2132
2062
|
/** @internal */
|
|
2133
|
-
export const once: Schedule.Schedule<
|
|
2063
|
+
export const once: Schedule.Schedule<void> = asUnit(recurs(1))
|
|
2134
2064
|
|
|
2135
2065
|
/** @internal */
|
|
2136
|
-
export const stop: Schedule.Schedule<
|
|
2066
|
+
export const stop: Schedule.Schedule<void> = asUnit(recurs(0))
|