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.
Files changed (272) hide show
  1. package/dist/cjs/BigInt.js +14 -1
  2. package/dist/cjs/BigInt.js.map +1 -1
  3. package/dist/cjs/Effect.js +16 -61
  4. package/dist/cjs/Effect.js.map +1 -1
  5. package/dist/cjs/Either.js +35 -6
  6. package/dist/cjs/Either.js.map +1 -1
  7. package/dist/cjs/Equal.js +1 -1
  8. package/dist/cjs/Equal.js.map +1 -1
  9. package/dist/cjs/Exit.js +1 -1
  10. package/dist/cjs/Number.js +25 -1
  11. package/dist/cjs/Number.js.map +1 -1
  12. package/dist/cjs/ReadonlyArray.js +2 -2
  13. package/dist/cjs/ReadonlyArray.js.map +1 -1
  14. package/dist/cjs/ReadonlyRecord.js +71 -76
  15. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  16. package/dist/cjs/STM.js.map +1 -1
  17. package/dist/cjs/Schedule.js.map +1 -1
  18. package/dist/cjs/Sink.js.map +1 -1
  19. package/dist/cjs/Stream.js +3 -23
  20. package/dist/cjs/Stream.js.map +1 -1
  21. package/dist/cjs/Struct.js +3 -1
  22. package/dist/cjs/Struct.js.map +1 -1
  23. package/dist/cjs/TestAnnotation.js.map +1 -1
  24. package/dist/cjs/internal/channel/channelExecutor.js +5 -5
  25. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  26. package/dist/cjs/internal/channel/channelState.js +5 -5
  27. package/dist/cjs/internal/channel/channelState.js.map +1 -1
  28. package/dist/cjs/internal/channel.js.map +1 -1
  29. package/dist/cjs/internal/clock.js +3 -4
  30. package/dist/cjs/internal/clock.js.map +1 -1
  31. package/dist/cjs/internal/core-effect.js +6 -23
  32. package/dist/cjs/internal/core-effect.js.map +1 -1
  33. package/dist/cjs/internal/core.js +11 -27
  34. package/dist/cjs/internal/core.js.map +1 -1
  35. package/dist/cjs/internal/effect/circular.js +4 -5
  36. package/dist/cjs/internal/effect/circular.js.map +1 -1
  37. package/dist/cjs/internal/either.js +3 -3
  38. package/dist/cjs/internal/either.js.map +1 -1
  39. package/dist/cjs/internal/groupBy.js.map +1 -1
  40. package/dist/cjs/internal/layer.js +0 -2
  41. package/dist/cjs/internal/layer.js.map +1 -1
  42. package/dist/cjs/internal/runtime.js +12 -1
  43. package/dist/cjs/internal/runtime.js.map +1 -1
  44. package/dist/cjs/internal/schedule.js +4 -4
  45. package/dist/cjs/internal/schedule.js.map +1 -1
  46. package/dist/cjs/internal/sink.js +0 -2
  47. package/dist/cjs/internal/sink.js.map +1 -1
  48. package/dist/cjs/internal/stm/stm.js +1 -0
  49. package/dist/cjs/internal/stm/stm.js.map +1 -1
  50. package/dist/cjs/internal/stream.js +51 -64
  51. package/dist/cjs/internal/stream.js.map +1 -1
  52. package/dist/cjs/internal/version.js +1 -1
  53. package/dist/dts/BigInt.d.ts +7 -0
  54. package/dist/dts/BigInt.d.ts.map +1 -1
  55. package/dist/dts/Brand.d.ts +1 -1
  56. package/dist/dts/Brand.d.ts.map +1 -1
  57. package/dist/dts/Cause.d.ts +1 -1
  58. package/dist/dts/Cause.d.ts.map +1 -1
  59. package/dist/dts/Channel.d.ts +11 -11
  60. package/dist/dts/Channel.d.ts.map +1 -1
  61. package/dist/dts/Chunk.d.ts +3 -3
  62. package/dist/dts/Config.d.ts +4 -4
  63. package/dist/dts/Config.d.ts.map +1 -1
  64. package/dist/dts/Cron.d.ts +1 -1
  65. package/dist/dts/Cron.d.ts.map +1 -1
  66. package/dist/dts/Differ.d.ts +2 -2
  67. package/dist/dts/Differ.d.ts.map +1 -1
  68. package/dist/dts/Effect.d.ts +52 -108
  69. package/dist/dts/Effect.d.ts.map +1 -1
  70. package/dist/dts/Either.d.ts +126 -83
  71. package/dist/dts/Either.d.ts.map +1 -1
  72. package/dist/dts/Encoding.d.ts +6 -6
  73. package/dist/dts/Encoding.d.ts.map +1 -1
  74. package/dist/dts/Equal.d.ts.map +1 -1
  75. package/dist/dts/Exit.d.ts +2 -2
  76. package/dist/dts/Fiber.d.ts +2 -2
  77. package/dist/dts/Fiber.d.ts.map +1 -1
  78. package/dist/dts/GroupBy.d.ts +12 -12
  79. package/dist/dts/GroupBy.d.ts.map +1 -1
  80. package/dist/dts/Layer.d.ts +26 -26
  81. package/dist/dts/Layer.d.ts.map +1 -1
  82. package/dist/dts/List.d.ts +2 -2
  83. package/dist/dts/Logger.d.ts +4 -4
  84. package/dist/dts/Match.d.ts +2 -2
  85. package/dist/dts/Match.d.ts.map +1 -1
  86. package/dist/dts/MergeDecision.d.ts +1 -1
  87. package/dist/dts/MergeState.d.ts +5 -5
  88. package/dist/dts/MergeState.d.ts.map +1 -1
  89. package/dist/dts/Metric.d.ts +13 -13
  90. package/dist/dts/Metric.d.ts.map +1 -1
  91. package/dist/dts/MetricPolling.d.ts +4 -4
  92. package/dist/dts/MetricPolling.d.ts.map +1 -1
  93. package/dist/dts/Number.d.ts +8 -0
  94. package/dist/dts/Number.d.ts.map +1 -1
  95. package/dist/dts/Option.d.ts +11 -11
  96. package/dist/dts/ReadonlyArray.d.ts +9 -8
  97. package/dist/dts/ReadonlyArray.d.ts.map +1 -1
  98. package/dist/dts/ReadonlyRecord.d.ts +111 -94
  99. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  100. package/dist/dts/Reloadable.d.ts +4 -4
  101. package/dist/dts/Reloadable.d.ts.map +1 -1
  102. package/dist/dts/RequestResolver.d.ts +13 -13
  103. package/dist/dts/RequestResolver.d.ts.map +1 -1
  104. package/dist/dts/Resource.d.ts +1 -1
  105. package/dist/dts/Resource.d.ts.map +1 -1
  106. package/dist/dts/STM.d.ts +144 -139
  107. package/dist/dts/STM.d.ts.map +1 -1
  108. package/dist/dts/Schedule.d.ts +171 -179
  109. package/dist/dts/Schedule.d.ts.map +1 -1
  110. package/dist/dts/SingleProducerAsyncInput.d.ts +1 -1
  111. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
  112. package/dist/dts/Sink.d.ts +13 -13
  113. package/dist/dts/Sink.d.ts.map +1 -1
  114. package/dist/dts/Stream.d.ts +355 -366
  115. package/dist/dts/Stream.d.ts.map +1 -1
  116. package/dist/dts/Struct.d.ts +3 -3
  117. package/dist/dts/Struct.d.ts.map +1 -1
  118. package/dist/dts/SubscriptionRef.d.ts +2 -2
  119. package/dist/dts/TArray.d.ts +2 -2
  120. package/dist/dts/TDeferred.d.ts +3 -3
  121. package/dist/dts/TMap.d.ts +10 -10
  122. package/dist/dts/TSet.d.ts +4 -4
  123. package/dist/dts/Take.d.ts +2 -2
  124. package/dist/dts/TestAnnotation.d.ts +2 -2
  125. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  126. package/dist/dts/Types.d.ts +7 -0
  127. package/dist/dts/Types.d.ts.map +1 -1
  128. package/dist/dts/internal/stm/stm.d.ts +2 -15
  129. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  130. package/dist/esm/BigInt.js +12 -0
  131. package/dist/esm/BigInt.js.map +1 -1
  132. package/dist/esm/Effect.js +13 -58
  133. package/dist/esm/Effect.js.map +1 -1
  134. package/dist/esm/Either.js +42 -5
  135. package/dist/esm/Either.js.map +1 -1
  136. package/dist/esm/Equal.js +1 -1
  137. package/dist/esm/Equal.js.map +1 -1
  138. package/dist/esm/Exit.js +1 -1
  139. package/dist/esm/Number.js +23 -0
  140. package/dist/esm/Number.js.map +1 -1
  141. package/dist/esm/ReadonlyArray.js +2 -2
  142. package/dist/esm/ReadonlyArray.js.map +1 -1
  143. package/dist/esm/ReadonlyRecord.js +70 -75
  144. package/dist/esm/ReadonlyRecord.js.map +1 -1
  145. package/dist/esm/STM.js.map +1 -1
  146. package/dist/esm/Schedule.js.map +1 -1
  147. package/dist/esm/Sink.js.map +1 -1
  148. package/dist/esm/Stream.js +5 -22
  149. package/dist/esm/Stream.js.map +1 -1
  150. package/dist/esm/Struct.js +3 -1
  151. package/dist/esm/Struct.js.map +1 -1
  152. package/dist/esm/TestAnnotation.js.map +1 -1
  153. package/dist/esm/internal/channel/channelExecutor.js +5 -5
  154. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  155. package/dist/esm/internal/channel/channelState.js +3 -3
  156. package/dist/esm/internal/channel/channelState.js.map +1 -1
  157. package/dist/esm/internal/channel.js.map +1 -1
  158. package/dist/esm/internal/clock.js +3 -4
  159. package/dist/esm/internal/clock.js.map +1 -1
  160. package/dist/esm/internal/core-effect.js +4 -20
  161. package/dist/esm/internal/core-effect.js.map +1 -1
  162. package/dist/esm/internal/core.js +8 -22
  163. package/dist/esm/internal/core.js.map +1 -1
  164. package/dist/esm/internal/effect/circular.js +4 -5
  165. package/dist/esm/internal/effect/circular.js.map +1 -1
  166. package/dist/esm/internal/either.js +3 -3
  167. package/dist/esm/internal/either.js.map +1 -1
  168. package/dist/esm/internal/groupBy.js.map +1 -1
  169. package/dist/esm/internal/layer.js +0 -2
  170. package/dist/esm/internal/layer.js.map +1 -1
  171. package/dist/esm/internal/runtime.js +12 -1
  172. package/dist/esm/internal/runtime.js.map +1 -1
  173. package/dist/esm/internal/schedule.js +4 -4
  174. package/dist/esm/internal/schedule.js.map +1 -1
  175. package/dist/esm/internal/sink.js +0 -2
  176. package/dist/esm/internal/sink.js.map +1 -1
  177. package/dist/esm/internal/stm/stm.js +1 -0
  178. package/dist/esm/internal/stm/stm.js.map +1 -1
  179. package/dist/esm/internal/stream.js +49 -59
  180. package/dist/esm/internal/stream.js.map +1 -1
  181. package/dist/esm/internal/version.js +1 -1
  182. package/package.json +1 -1
  183. package/src/BigInt.ts +13 -0
  184. package/src/Brand.ts +4 -4
  185. package/src/Cause.ts +1 -1
  186. package/src/Channel.ts +17 -17
  187. package/src/Chunk.ts +4 -4
  188. package/src/Config.ts +4 -4
  189. package/src/Cron.ts +2 -2
  190. package/src/Differ.ts +2 -2
  191. package/src/Effect.ts +68 -145
  192. package/src/Either.ts +215 -133
  193. package/src/Encoding.ts +3 -3
  194. package/src/Equal.ts +1 -1
  195. package/src/Exit.ts +2 -2
  196. package/src/Fiber.ts +2 -2
  197. package/src/GroupBy.ts +16 -16
  198. package/src/Layer.ts +32 -32
  199. package/src/List.ts +3 -3
  200. package/src/Logger.ts +4 -4
  201. package/src/Match.ts +3 -3
  202. package/src/MergeDecision.ts +1 -1
  203. package/src/MergeState.ts +8 -8
  204. package/src/Metric.ts +13 -13
  205. package/src/MetricPolling.ts +9 -9
  206. package/src/Number.ts +26 -0
  207. package/src/Option.ts +17 -17
  208. package/src/ReadonlyArray.ts +23 -15
  209. package/src/ReadonlyRecord.ts +421 -265
  210. package/src/Reloadable.ts +4 -4
  211. package/src/RequestResolver.ts +19 -19
  212. package/src/Resource.ts +3 -3
  213. package/src/STM.ts +166 -213
  214. package/src/Schedule.ts +331 -361
  215. package/src/SingleProducerAsyncInput.ts +1 -1
  216. package/src/Sink.ts +19 -19
  217. package/src/Stream.ts +449 -456
  218. package/src/Struct.ts +8 -5
  219. package/src/SubscriptionRef.ts +2 -2
  220. package/src/TArray.ts +2 -2
  221. package/src/TDeferred.ts +4 -4
  222. package/src/TMap.ts +10 -10
  223. package/src/TSet.ts +4 -4
  224. package/src/Take.ts +4 -4
  225. package/src/TestAnnotation.ts +5 -8
  226. package/src/Types.ts +11 -0
  227. package/src/internal/blockedRequests.ts +2 -2
  228. package/src/internal/cause.ts +2 -2
  229. package/src/internal/channel/channelExecutor.ts +26 -26
  230. package/src/internal/channel/channelState.ts +13 -13
  231. package/src/internal/channel/mergeDecision.ts +1 -1
  232. package/src/internal/channel/mergeState.ts +6 -6
  233. package/src/internal/channel/singleProducerAsyncInput.ts +5 -5
  234. package/src/internal/channel.ts +43 -43
  235. package/src/internal/clock.ts +3 -4
  236. package/src/internal/config.ts +7 -7
  237. package/src/internal/configError.ts +1 -1
  238. package/src/internal/configProvider/pathPatch.ts +2 -2
  239. package/src/internal/configProvider.ts +1 -1
  240. package/src/internal/core-effect.ts +28 -43
  241. package/src/internal/core.ts +15 -40
  242. package/src/internal/dataSource.ts +26 -26
  243. package/src/internal/differ/orPatch.ts +7 -7
  244. package/src/internal/differ.ts +2 -2
  245. package/src/internal/effect/circular.ts +9 -10
  246. package/src/internal/either.ts +25 -22
  247. package/src/internal/encoding/base64.ts +1 -1
  248. package/src/internal/encoding/base64Url.ts +1 -1
  249. package/src/internal/encoding/hex.ts +1 -1
  250. package/src/internal/fiber.ts +2 -2
  251. package/src/internal/fiberRuntime.ts +9 -9
  252. package/src/internal/groupBy.ts +40 -40
  253. package/src/internal/layer/circular.ts +4 -4
  254. package/src/internal/layer.ts +52 -54
  255. package/src/internal/matcher.ts +5 -5
  256. package/src/internal/metric/polling.ts +8 -8
  257. package/src/internal/metric.ts +6 -6
  258. package/src/internal/reloadable.ts +4 -4
  259. package/src/internal/resource.ts +2 -2
  260. package/src/internal/runtime.ts +32 -19
  261. package/src/internal/schedule.ts +430 -500
  262. package/src/internal/sink.ts +27 -29
  263. package/src/internal/stm/core.ts +23 -23
  264. package/src/internal/stm/stm.ts +158 -157
  265. package/src/internal/stm/tArray.ts +3 -3
  266. package/src/internal/stm/tDeferred.ts +5 -5
  267. package/src/internal/stm/tMap.ts +13 -13
  268. package/src/internal/stm/tSet.ts +4 -4
  269. package/src/internal/stream.ts +688 -723
  270. package/src/internal/subscriptionRef.ts +3 -3
  271. package/src/internal/take.ts +6 -6
  272. package/src/internal/version.ts +1 -1
@@ -45,24 +45,24 @@ export const ScheduleDriverTypeId: Schedule.ScheduleDriverTypeId = Symbol.for(
45
45
 
46
46
  const scheduleVariance = {
47
47
  /* c8 ignore next */
48
- _Env: (_: never) => _,
48
+ _Out: (_: never) => _,
49
49
  /* c8 ignore next */
50
50
  _In: (_: unknown) => _,
51
51
  /* c8 ignore next */
52
- _Out: (_: never) => _
52
+ _R: (_: never) => _
53
53
  }
54
54
 
55
55
  const scheduleDriverVariance = {
56
56
  /* c8 ignore next */
57
- _Env: (_: never) => _,
57
+ _Out: (_: never) => _,
58
58
  /* c8 ignore next */
59
59
  _In: (_: unknown) => _,
60
60
  /* c8 ignore next */
61
- _Out: (_: never) => _
61
+ _R: (_: never) => _
62
62
  }
63
63
 
64
64
  /** @internal */
65
- class ScheduleImpl<S, Env, In, Out> implements Schedule.Schedule<Env, In, Out> {
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, Env>
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<Env, In, Out> implements Schedule.ScheduleDriver<Env, In, Out> {
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<Env, In, Out>,
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>, Env> {
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, Env, In, Out>(
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, Env>
151
- ): Schedule.Schedule<Env, In, Out> => new ScheduleImpl(initial, step)
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
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Out>,
158
- <Env, In, Out>(
159
- self: Schedule.Schedule<Env, In, Out>,
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<Env, In, Out>
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, Env2>(
167
- f: (out: Out) => Effect.Effect<Duration.DurationInput, never, Env2>
168
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In, Out>,
169
- <Env, In, Out, Env2>(
170
- self: Schedule.Schedule<Env, In, Out>,
171
- f: (out: Out) => Effect.Effect<Duration.DurationInput, never, Env2>
172
- ) => Schedule.Schedule<Env | Env2, In, Out>
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
- <Env1, In1, Out2>(
183
- that: Schedule.Schedule<Env1, In1, Out2>
184
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<
185
- Env | Env1,
186
- In & In1,
187
- Out | Out2
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
- <Env, In, Out, Env1, In1, Out2>(
190
- self: Schedule.Schedule<Env, In, Out>,
191
- that: Schedule.Schedule<Env1, In1, Out2>
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
- Env | Env1,
194
- In & In1,
195
- Out | Out2
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
- <Env2, In2, Out2>(
202
- that: Schedule.Schedule<Env2, In2, Out2>
203
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<
204
- Env | Env2,
205
- In & In2,
206
- Either.Either<Out, Out2>
207
- >,
208
- <Env, In, Out, Env2, In2, Out2>(
209
- self: Schedule.Schedule<Env, In, Out>,
210
- that: Schedule.Schedule<Env2, In2, Out2>
211
- ) => Schedule.Schedule<
212
- Env | Env2,
213
- In & In2,
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<Out, Out2>,
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<Out, Out2>,
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) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Out2>,
256
- <Env, In, Out, Out2>(self: Schedule.Schedule<Env, In, Out>, out: Out2) => Schedule.Schedule<Env, In, Out2>
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 = <Env, In, Out>(
261
- self: Schedule.Schedule<Env, In, Out>
262
- ): Schedule.Schedule<Env, In, void> => map(self, constVoid)
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
- <Env2, In2, Out2>(
267
- that: Schedule.Schedule<Env2, In2, Out2>
268
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<
269
- Env | Env2,
270
- readonly [In, In2],
271
- [Out, Out2]
272
- >,
273
- <Env, In, Out, Env2, In2, Out2>(
274
- self: Schedule.Schedule<Env, In, Out>,
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
- ) => <Env>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Out>,
304
- <Env, In, Out>(
305
- self: Schedule.Schedule<Env, In, Out>,
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<Env, In, Out>
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, Env2>(
313
- test: (input: In, output: Out) => Effect.Effect<boolean, never, Env2>
314
- ) => <Env>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In, Out>,
315
- <Env, In, Out, Env2>(
316
- self: Schedule.Schedule<Env, In, Out>,
317
- test: (input: In, output: Out) => Effect.Effect<boolean, never, Env2>
318
- ) => Schedule.Schedule<Env | Env2, In, Out>
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<never, A, Chunk.Chunk<A>> => collectAllOutputs(identity<A>())
318
+ export const collectAllInputs = <A>(): Schedule.Schedule<Chunk.Chunk<A>, A> => collectAllOutputs(identity<A>())
335
319
 
336
320
  /** @internal */
337
- export const collectAllOutputs = <Env, In, Out>(
338
- self: Schedule.Schedule<Env, In, Out>
339
- ): Schedule.Schedule<Env, In, Chunk.Chunk<Out>> =>
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<never, A, Chunk.Chunk<A>> =>
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 = <Env, A>(
348
- f: (a: A) => Effect.Effect<boolean, never, Env>
349
- ): Schedule.Schedule<Env, A, Chunk.Chunk<A>> => collectAllOutputs(recurUntilEffect(f))
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<never, A, Chunk.Chunk<A>> =>
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 = <Env, A>(
357
- f: (a: A) => Effect.Effect<boolean, never, Env>
358
- ): Schedule.Schedule<Env, A, Chunk.Chunk<A>> => collectAllOutputs(recurWhileEffect(f))
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
- <Env2, Out, Out2>(
363
- that: Schedule.Schedule<Env2, Out, Out2>
364
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In, Out2>,
365
- <Env, In, Out, Env2, Out2>(
366
- self: Schedule.Schedule<Env, In, Out>,
367
- that: Schedule.Schedule<Env2, Out, Out2>
368
- ) => Schedule.Schedule<Env | Env2, In, Out2>
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
- ) => <Env, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In2, Out>,
394
- <Env, In, Out, In2>(
395
- self: Schedule.Schedule<Env, In, Out>,
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<Env, In2, Out>
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
- <Env0, Env>(
403
- f: (env0: Context.Context<Env0>) => Context.Context<Env>
404
- ) => <In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env0, In, Out>,
405
- <Env0, Env, In, Out>(
406
- self: Schedule.Schedule<Env, In, Out>,
407
- f: (env0: Context.Context<Env0>) => Context.Context<Env>
408
- ) => Schedule.Schedule<Env0, In, Out>
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
- <In, Env2, In2>(
418
- f: (in2: In2) => Effect.Effect<In, never, Env2>
419
- ) => <Env, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In2, Out>,
420
- <Env, In, Out, Env2, In2>(
421
- self: Schedule.Schedule<Env, In, Out>,
422
- f: (in2: In2) => Effect.Effect<In, never, Env2>
423
- ) => Schedule.Schedule<Env | Env2, In2, Out>
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<never, unknown, [number, number]> => {
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]], never, unknown, [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<never, unknown, number> => {
474
- return makeWithState<[number, number], never, unknown, 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<never, unknown, number> => {
503
- return makeWithState<[number, number], never, unknown, 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
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Out>,
535
- <Env, In, Out>(
536
- self: Schedule.Schedule<Env, In, Out>,
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<Env, In, Out>
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
- <Env2>(
544
- f: (duration: Duration.Duration) => Effect.Effect<Duration.DurationInput, never, Env2>
545
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In, Out>,
546
- <Env, In, Out, Env2>(
547
- self: Schedule.Schedule<Env, In, Out>,
548
- f: (duration: Duration.Duration) => Effect.Effect<Duration.DurationInput, never, Env2>
549
- ) => Schedule.Schedule<Env | Env2, In, Out>
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 = <Env, In>(
554
- schedule: Schedule.Schedule<Env, In, Duration.Duration>
555
- ): Schedule.Schedule<Env, In, Duration.Duration> => addDelay(schedule, (x) => x)
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 = <Env, In, Out>(
559
- self: Schedule.Schedule<Env, In, Out>
560
- ): Schedule.Schedule<Env, In, Duration.Duration> =>
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, In2, Out2>(
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
- ) => <Env>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In2, Out2>,
588
- <Env, In, Out, In2, Out2>(
589
- self: Schedule.Schedule<Env, In, Out>,
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<Env, In2, Out2>
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, Env2, In, Out, Env3, Out2>(
583
+ <In2, In, R2, Out, R3, Out2>(
600
584
  options: {
601
- readonly onInput: (input: In2) => Effect.Effect<In, never, Env2>
602
- readonly onOutput: (out: Out) => Effect.Effect<Out2, never, Env3>
585
+ readonly onInput: (input: In2) => Effect.Effect<In, never, R2>
586
+ readonly onOutput: (out: Out) => Effect.Effect<Out2, never, R3>
603
587
  }
604
- ) => <Env>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2 | Env3, In2, Out2>,
605
- <Env, In, Out, In2, Env2, Env3, Out2>(
606
- self: Schedule.Schedule<Env, In, Out>,
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, Env2>
609
- readonly onOutput: (out: Out) => Effect.Effect<Out2, never, Env3>
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<Env | Env2 | Env3, In2, Out2>
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 = <Env, In, Out>(
616
- self: Schedule.Schedule<Env, In, Out>
617
- ): Effect.Effect<Schedule.ScheduleDriver<Env, In, Out>> =>
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<never, unknown, Duration.Duration> => {
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
- <Env2, In2, Out2>(
644
- that: Schedule.Schedule<Env2, In2, Out2>
645
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<
646
- Env | Env2,
647
- In & In2,
648
- [Out, Out2]
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
- <Env2, In2, Out2>(
663
- that: Schedule.Schedule<Env2, In2, Out2>,
638
+ <Out2, In2, R2>(
639
+ that: Schedule.Schedule<Out2, In2, R2>,
664
640
  f: (x: Intervals.Intervals, y: Intervals.Intervals) => Intervals.Intervals
665
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<
666
- Env | Env2,
667
- In & In2,
668
- [Out, Out2]
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
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Out>,
686
- <Env, In, Out, X>(
687
- self: Schedule.Schedule<Env, In, Out>,
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<Env, In, Out>
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<never, unknown, Duration.Duration> => {
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<never, unknown, Duration.Duration> => {
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<never, unknown, number> => {
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], never, unknown, 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<never, unknown, Duration.Duration> =>
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<never, unknown, Duration.Duration> =>
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<never, A, B> => map(identity<A>(), f)
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<never, unknown, number> =>
797
- makeWithState<[number, number], never, unknown, 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<never, A, A> =>
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
- <Env2, In2, Out2>(
837
- that: Schedule.Schedule<Env2, In2, Out2>
838
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<
839
- Env | Env2,
840
- In & In2,
841
- [Out, Out2]
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
- <Env2, In2, Out2>(
856
- that: Schedule.Schedule<Env2, In2, Out2>,
814
+ <Out2, In2, R2>(
815
+ that: Schedule.Schedule<Out2, In2, R2>,
857
816
  f: (x: Intervals.Intervals, y: Intervals.Intervals) => Intervals.Intervals
858
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<
859
- Env | Env2,
860
- In & In2,
861
- [Out, Out2]
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<Env, In, Out>,
874
- that: Schedule.Schedule<Env2, In2, Out2>,
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<Env, In, Out>,
922
- that: Schedule.Schedule<Env1, In1, Out2>,
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 = <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>): Schedule.Schedule<Env, In, Out> =>
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 }) => <Env, In, Out>(
998
- self: Schedule.Schedule<Env, In, Out>
999
- ) => Schedule.Schedule<Env, In, Out>,
1000
- <Env, In, Out>(
1001
- self: Schedule.Schedule<Env, In, Out>,
1002
- options: { min?: number; max?: number }
1003
- ) => Schedule.Schedule<Env, In, Out>
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<never, unknown, Duration.Duration> => {
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
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Out2>,
1025
- <Env, In, Out, Out2>(
1026
- self: Schedule.Schedule<Env, In, Out>,
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<Env, In, Out2>
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, Env2, Out2>(
1034
- f: (out: Out) => Effect.Effect<Out2, never, Env2>
1035
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In, Out2>,
1036
- <Env, In, Out, Env2, Out2>(
1037
- self: Schedule.Schedule<Env, In, Out>,
1038
- f: (out: Out) => Effect.Effect<Out2, never, Env2>
1039
- ) => Schedule.Schedule<Env | Env2, In, Out2>
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<never, unknown, number> =>
1053
- makeWithState<[number, number], never, unknown, 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
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Out>,
1084
- <Env, In, Out>(
1085
- self: Schedule.Schedule<Env, In, Out>,
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<Env, In, Out>
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, Env2>(
1093
- f: (out: Out, duration: Duration.Duration) => Effect.Effect<Duration.DurationInput, never, Env2>
1094
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In, Out>,
1095
- <Env, In, Out, Env2>(
1096
- self: Schedule.Schedule<Env, In, Out>,
1097
- f: (out: Out, duration: Duration.Duration) => Effect.Effect<Duration.DurationInput, never, Env2>
1098
- ) => Schedule.Schedule<Env | Env2, In, Out>
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, Env2, X>(
1124
- f: (out: Out, decision: ScheduleDecision.ScheduleDecision) => Effect.Effect<X, never, Env2>
1125
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In, Out>,
1126
- <Env, In, Out, Env2, X>(
1127
- self: Schedule.Schedule<Env, In, Out>,
1128
- f: (out: Out, decision: ScheduleDecision.ScheduleDecision) => Effect.Effect<X, never, Env2>
1129
- ) => Schedule.Schedule<Env | Env2, In, Out>
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 = <Env, Input, Output>(
1142
- self: Schedule.Schedule<Env, Input, Output>
1143
- ): Schedule.Schedule<Env, Input, Input> =>
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
- <Env>(
1153
- context: Context.Context<Env>
1154
- ) => <In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<never, In, Out>,
1155
- <Env, In, Out>(
1156
- self: Schedule.Schedule<Env, In, Out>,
1157
- context: Context.Context<Env>
1158
- ) => Schedule.Schedule<never, In, Out>
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
- ) => <R, In, Out>(
1172
- self: Schedule.Schedule<R, In, Out>
1173
- ) => Schedule.Schedule<Exclude<R, Context.Tag.Identifier<T>>, In, Out>,
1174
- <R, In, Out, T extends Context.Tag<any, any>>(
1175
- self: Schedule.Schedule<R, In, Out>,
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>>, In, Out>
1179
- >(3, <R, In, Out, T extends Context.Tag<any, any>>(
1180
- self: Schedule.Schedule<R, In, Out>,
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>>, In, Out> =>
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<never, A, A> => untilInput(identity<A>(), f)
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 = <Env, A>(
1198
- f: (a: A) => Effect.Effect<boolean, never, Env>
1199
- ): Schedule.Schedule<Env, A, A> => untilInputEffect(identity<A>(), f)
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<never, A, Option.Option<B>> =>
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<never, unknown, Duration.Duration> => {
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<never, A, A> => whileInput(identity<A>(), f)
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 = <Env, A>(
1218
- f: (a: A) => Effect.Effect<boolean, never, Env>
1219
- ): Schedule.Schedule<Env, A, A> => whileInputEffect(identity<A>(), f)
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<never, unknown, number> => whileOutput(forever, (out) => out < n)
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
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Z>,
1230
- <Env, In, Out, Z>(
1231
- self: Schedule.Schedule<Env, In, Out>,
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<Env, In, Z>
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
- <Out, Env1, Z>(
1186
+ <Z, Out, R2>(
1240
1187
  zero: Z,
1241
- f: (z: Z, out: Out) => Effect.Effect<Z, never, Env1>
1242
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env1, In, Z>,
1243
- <Env, In, Out, Env1, Z>(
1244
- self: Schedule.Schedule<Env, In, Out>,
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, Env1>
1247
- ) => Schedule.Schedule<Env | Env1, In, Z>
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<Env, In, Out>): Schedule.Schedule<Env, In, Out> =>
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 = <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>): Schedule.Schedule<Env, In, number> =>
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
- ) => <Env, In, Out>(
1285
- self: Schedule.Schedule<Env, In, Out>
1286
- ) => Schedule.Schedule<Env, In, Out>,
1287
- <Env, In, Out>(
1288
- self: Schedule.Schedule<Env, In, Out>,
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<Env, In, Out>
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>) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Out>,
1304
- <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>, f: Predicate<Out>) => Schedule.Schedule<Env, In, Out>
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
- ) => <Env, Out>(self: Schedule.Schedule<Env, In, Out>) => Effect.Effect<Chunk.Chunk<Out>, never, Env>,
1321
- <Env, In, Out>(
1322
- self: Schedule.Schedule<Env, In, Out>,
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, Env>
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<Env, In, Out>,
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<never, unknown, number> =>
1361
- makeWithState<[number, number], never, unknown, 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<never, unknown, number> =>
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<never, unknown, A> => map(forever, () => value)
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<never, unknown, A> => map(forever, evaluate)
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
- <Env2, In2, X>(
1400
- f: (input: In2) => Effect.Effect<X, never, Env2>
1401
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In & In2, Out>,
1402
- <Env, In, Out, Env2, In2, X>(
1403
- self: Schedule.Schedule<Env, In, Out>,
1404
- f: (input: In2) => Effect.Effect<X, never, Env2>
1405
- ) => Schedule.Schedule<Env | Env2, In & In2, Out>
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
- <Out, XO extends Out, Env2, X>(
1416
- f: (out: XO) => Effect.Effect<X, never, Env2>
1417
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In, Out>,
1418
- <Env, In, Out, XO extends Out, Env2, X>(
1419
- self: Schedule.Schedule<Env, In, Out>,
1420
- f: (out: XO) => Effect.Effect<X, never, Env2>
1421
- ) => Schedule.Schedule<Env | Env2, In, Out>
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<never, unknown, A> =>
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
- <Env2, In2, Out2>(
1443
- that: Schedule.Schedule<Env2, In2, Out2>
1444
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<
1445
- Env | Env2,
1446
- In & In2,
1447
- [Out, Out2]
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
- <Env2, In2, Out2>(
1462
- that: Schedule.Schedule<Env2, In2, Out2>,
1399
+ <Out2, In2, R2>(
1400
+ that: Schedule.Schedule<Out2, In2, R2>,
1463
1401
  f: (x: Intervals.Intervals, y: Intervals.Intervals) => Intervals.Intervals
1464
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<
1465
- Env | Env2,
1466
- In & In2,
1467
- [Out, Out2]
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>) => <Env, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Out>,
1518
- <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>, f: Predicate<In>) => Schedule.Schedule<Env, In, Out>
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, Env2>(
1524
- f: (input: In) => Effect.Effect<boolean, never, Env2>
1525
- ) => <Env, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In, Out>,
1526
- <Env, In, Out, Env2>(
1527
- self: Schedule.Schedule<Env, In, Out>,
1528
- f: (input: In) => Effect.Effect<boolean, never, Env2>
1529
- ) => Schedule.Schedule<Env | Env2, In, Out>
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>) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Out>,
1535
- <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>, f: Predicate<Out>) => Schedule.Schedule<Env, In, Out>
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, Env2>(
1541
- f: (out: Out) => Effect.Effect<boolean, never, Env2>
1542
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In, Out>,
1543
- <Env, In, Out, Env2>(
1544
- self: Schedule.Schedule<Env, In, Out>,
1545
- f: (out: Out) => Effect.Effect<boolean, never, Env2>
1546
- ) => Schedule.Schedule<Env | Env2, In, Out>
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) => <Env, In, Out>(
1552
- self: Schedule.Schedule<Env, In, Out>
1553
- ) => Schedule.Schedule<Env, In, Out>,
1554
- <Env, In, Out>(
1555
- self: Schedule.Schedule<Env, In, Out>,
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<Env, In, Out>
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>) => <Env, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Out>,
1563
- <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>, f: Predicate<In>) => Schedule.Schedule<Env, In, Out>
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, Env2>(
1569
- f: (input: In) => Effect.Effect<boolean, never, Env2>
1570
- ) => <Env, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In, Out>,
1571
- <Env, In, Out, Env2>(
1572
- self: Schedule.Schedule<Env, In, Out>,
1573
- f: (input: In) => Effect.Effect<boolean, never, Env2>
1574
- ) => Schedule.Schedule<Env | Env2, In, Out>
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>) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env, In, Out>,
1580
- <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>, f: Predicate<Out>) => Schedule.Schedule<Env, In, Out>
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, Env1>(
1586
- f: (out: Out) => Effect.Effect<boolean, never, Env1>
1587
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env1, In, Out>,
1588
- <Env, In, Out, Env1>(
1589
- self: Schedule.Schedule<Env, In, Out>,
1590
- f: (out: Out) => Effect.Effect<boolean, never, Env1>
1591
- ) => Schedule.Schedule<Env | Env1, In, Out>
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<never, unknown, number> => {
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], never, unknown, 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
- <Env2, In2, Out2>(
1630
- that: Schedule.Schedule<Env2, In2, Out2>
1631
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In & In2, Out>,
1632
- <Env, In, Out, Env2, In2, Out2>(
1633
- self: Schedule.Schedule<Env, In, Out>,
1634
- that: Schedule.Schedule<Env2, In2, Out2>
1635
- ) => Schedule.Schedule<Env | Env2, In & In2, Out>
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
- <Env2, In2, Out2>(
1641
- that: Schedule.Schedule<Env2, In2, Out2>
1642
- ) => <Env, In, Out>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In & In2, Out2>,
1643
- <Env, In, Out, Env2, In2, Out2>(
1644
- self: Schedule.Schedule<Env, In, Out>,
1645
- that: Schedule.Schedule<Env2, In2, Out2>
1646
- ) => Schedule.Schedule<Env | Env2, In & In2, Out2>
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
- <Env2, In2, Out2, Out, Out3>(
1652
- that: Schedule.Schedule<Env2, In2, Out2>,
1581
+ <Out2, In2, R2, Out, Out3>(
1582
+ that: Schedule.Schedule<Out2, In2, R2>,
1653
1583
  f: (out: Out, out2: Out2) => Out3
1654
- ) => <Env, In>(self: Schedule.Schedule<Env, In, Out>) => Schedule.Schedule<Env | Env2, In & In2, Out3>,
1655
- <Env, In, Out, Env2, In2, Out2, Out3>(
1656
- self: Schedule.Schedule<Env, In, Out>,
1657
- that: Schedule.Schedule<Env2, In2, Out2>,
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<Env | Env2, In & In2, Out3>
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<R1, A, B>
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<R1, A, B>
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
- <A, O extends Effect.Repeat.Options<A>>(
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
- <R1, A, B>(
1877
- schedule: Schedule.Schedule<R1, A, B>
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, R1, B>(
1814
+ <A, E, R, B, R1>(
1885
1815
  self: Effect.Effect<A, E, R>,
1886
- schedule: Schedule.Schedule<R1, A, B>
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<R2, A, B>,
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<R2, A, B>,
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<R1, A, B>,
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
- <R1, E, B>(
1960
- policy: Schedule.Schedule<R1, E, B>
1961
- ) => <R, A>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | R1>,
1962
- <A, E, R, R1, B>(
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<R1, E, B>
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
- <R1, E, B>(
1976
- policy: Schedule.Schedule<R1, Types.NoInfer<E>, B>
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
- <R, E, A, R1, B>(
1912
+ <A, E, R, B, R1>(
1983
1913
  self: Effect.Effect<A, E, R>,
1984
- policy: Schedule.Schedule<R1, E, B>
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
- <R1, E, A1, A2, E2, R2>(
2022
- policy: Schedule.Schedule<R1, Types.NoInfer<E>, A1>,
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<R1, Types.NoInfer<E>, A1>,
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<R1, E, A1>,
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<R2, unknown, Out>
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<R2, unknown, Out>
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<R2, unknown, Out>
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<R2, In, Out>
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<R2, In, Out>
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<R2, In, Out>
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<never, unknown, number> = unfold(0, (n) => n + 1)
2030
+ export const count: Schedule.Schedule<number> = unfold(0, (n) => n + 1)
2101
2031
 
2102
2032
  /** @internal */
2103
- export const elapsed: Schedule.Schedule<never, unknown, Duration.Duration> = makeWithState(
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<never, unknown, number> = unfold(0, (n) => n + 1)
2060
+ export const forever: Schedule.Schedule<number> = unfold(0, (n) => n + 1)
2131
2061
 
2132
2062
  /** @internal */
2133
- export const once: Schedule.Schedule<never, unknown, void> = asUnit(recurs(1))
2063
+ export const once: Schedule.Schedule<void> = asUnit(recurs(1))
2134
2064
 
2135
2065
  /** @internal */
2136
- export const stop: Schedule.Schedule<never, unknown, void> = asUnit(recurs(0))
2066
+ export const stop: Schedule.Schedule<void> = asUnit(recurs(0))