effect 3.12.11 → 3.13.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 (204) hide show
  1. package/README.md +38 -49
  2. package/dist/cjs/Channel.js.map +1 -1
  3. package/dist/cjs/DateTime.js +17 -1
  4. package/dist/cjs/DateTime.js.map +1 -1
  5. package/dist/cjs/Differ.js.map +1 -1
  6. package/dist/cjs/Duration.js +128 -1
  7. package/dist/cjs/Duration.js.map +1 -1
  8. package/dist/cjs/Effect.js +175 -37
  9. package/dist/cjs/Effect.js.map +1 -1
  10. package/dist/cjs/Either.js +2 -1
  11. package/dist/cjs/Either.js.map +1 -1
  12. package/dist/cjs/FiberHandle.js +54 -21
  13. package/dist/cjs/FiberHandle.js.map +1 -1
  14. package/dist/cjs/FiberMap.js +51 -24
  15. package/dist/cjs/FiberMap.js.map +1 -1
  16. package/dist/cjs/FiberSet.js +50 -17
  17. package/dist/cjs/FiberSet.js.map +1 -1
  18. package/dist/cjs/HashMap.js +19 -1
  19. package/dist/cjs/HashMap.js.map +1 -1
  20. package/dist/cjs/HashSet.js +9 -1
  21. package/dist/cjs/HashSet.js.map +1 -1
  22. package/dist/cjs/Layer.js +21 -1
  23. package/dist/cjs/Layer.js.map +1 -1
  24. package/dist/cjs/Match.js +659 -38
  25. package/dist/cjs/Match.js.map +1 -1
  26. package/dist/cjs/RcMap.js +11 -1
  27. package/dist/cjs/RcMap.js.map +1 -1
  28. package/dist/cjs/Reloadable.js.map +1 -1
  29. package/dist/cjs/STM.js.map +1 -1
  30. package/dist/cjs/Schedule.js +1074 -309
  31. package/dist/cjs/Schedule.js.map +1 -1
  32. package/dist/cjs/Schema.js +73 -1
  33. package/dist/cjs/Schema.js.map +1 -1
  34. package/dist/cjs/Stream.js.map +1 -1
  35. package/dist/cjs/internal/channel.js.map +1 -1
  36. package/dist/cjs/internal/core-effect.js.map +1 -1
  37. package/dist/cjs/internal/core.js +27 -3
  38. package/dist/cjs/internal/core.js.map +1 -1
  39. package/dist/cjs/internal/dateTime.js +4 -1
  40. package/dist/cjs/internal/dateTime.js.map +1 -1
  41. package/dist/cjs/internal/differ.js +4 -0
  42. package/dist/cjs/internal/differ.js.map +1 -1
  43. package/dist/cjs/internal/effect/circular.js +3 -2
  44. package/dist/cjs/internal/effect/circular.js.map +1 -1
  45. package/dist/cjs/internal/fiberRuntime.js +21 -7
  46. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  47. package/dist/cjs/internal/hashMap.js +10 -1
  48. package/dist/cjs/internal/hashMap.js.map +1 -1
  49. package/dist/cjs/internal/keyedPool.js +1 -1
  50. package/dist/cjs/internal/keyedPool.js.map +1 -1
  51. package/dist/cjs/internal/layer.js.map +1 -1
  52. package/dist/cjs/internal/rcMap.js +86 -56
  53. package/dist/cjs/internal/rcMap.js.map +1 -1
  54. package/dist/cjs/internal/reloadable.js.map +1 -1
  55. package/dist/cjs/internal/schedule.js.map +1 -1
  56. package/dist/cjs/internal/sink.js.map +1 -1
  57. package/dist/cjs/internal/stm/stm.js.map +1 -1
  58. package/dist/cjs/internal/stream.js.map +1 -1
  59. package/dist/cjs/internal/version.js +1 -1
  60. package/dist/cjs/internal/version.js.map +1 -1
  61. package/dist/dts/Channel.d.ts +4 -4
  62. package/dist/dts/Channel.d.ts.map +1 -1
  63. package/dist/dts/DateTime.d.ts +16 -0
  64. package/dist/dts/DateTime.d.ts.map +1 -1
  65. package/dist/dts/Differ.d.ts +2 -1
  66. package/dist/dts/Differ.d.ts.map +1 -1
  67. package/dist/dts/Duration.d.ts +64 -0
  68. package/dist/dts/Duration.d.ts.map +1 -1
  69. package/dist/dts/Effect.d.ts +402 -30
  70. package/dist/dts/Effect.d.ts.map +1 -1
  71. package/dist/dts/Either.d.ts +7 -0
  72. package/dist/dts/Either.d.ts.map +1 -1
  73. package/dist/dts/FiberHandle.d.ts +26 -0
  74. package/dist/dts/FiberHandle.d.ts.map +1 -1
  75. package/dist/dts/FiberMap.d.ts +26 -0
  76. package/dist/dts/FiberMap.d.ts.map +1 -1
  77. package/dist/dts/FiberSet.d.ts +25 -0
  78. package/dist/dts/FiberSet.d.ts.map +1 -1
  79. package/dist/dts/HashMap.d.ts +38 -0
  80. package/dist/dts/HashMap.d.ts.map +1 -1
  81. package/dist/dts/HashSet.d.ts +7 -0
  82. package/dist/dts/HashSet.d.ts.map +1 -1
  83. package/dist/dts/Layer.d.ts +32 -13
  84. package/dist/dts/Layer.d.ts.map +1 -1
  85. package/dist/dts/Match.d.ts +731 -48
  86. package/dist/dts/Match.d.ts.map +1 -1
  87. package/dist/dts/RcMap.d.ts +32 -0
  88. package/dist/dts/RcMap.d.ts.map +1 -1
  89. package/dist/dts/Reloadable.d.ts +13 -13
  90. package/dist/dts/Reloadable.d.ts.map +1 -1
  91. package/dist/dts/STM.d.ts +4 -4
  92. package/dist/dts/STM.d.ts.map +1 -1
  93. package/dist/dts/Schedule.d.ts +2294 -633
  94. package/dist/dts/Schedule.d.ts.map +1 -1
  95. package/dist/dts/Schema.d.ts +40 -4
  96. package/dist/dts/Schema.d.ts.map +1 -1
  97. package/dist/dts/Stream.d.ts +8 -8
  98. package/dist/dts/Stream.d.ts.map +1 -1
  99. package/dist/dts/Trie.d.ts +7 -7
  100. package/dist/dts/Trie.d.ts.map +1 -1
  101. package/dist/dts/index.d.ts +25 -0
  102. package/dist/dts/index.d.ts.map +1 -1
  103. package/dist/dts/internal/stm/stm.d.ts +2 -2
  104. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  105. package/dist/esm/Channel.js.map +1 -1
  106. package/dist/esm/DateTime.js +16 -0
  107. package/dist/esm/DateTime.js.map +1 -1
  108. package/dist/esm/Differ.js.map +1 -1
  109. package/dist/esm/Duration.js +124 -0
  110. package/dist/esm/Duration.js.map +1 -1
  111. package/dist/esm/Effect.js +170 -32
  112. package/dist/esm/Effect.js.map +1 -1
  113. package/dist/esm/Either.js +7 -0
  114. package/dist/esm/Either.js.map +1 -1
  115. package/dist/esm/FiberHandle.js +48 -18
  116. package/dist/esm/FiberHandle.js.map +1 -1
  117. package/dist/esm/FiberMap.js +46 -22
  118. package/dist/esm/FiberMap.js.map +1 -1
  119. package/dist/esm/FiberSet.js +45 -15
  120. package/dist/esm/FiberSet.js.map +1 -1
  121. package/dist/esm/HashMap.js +17 -0
  122. package/dist/esm/HashMap.js.map +1 -1
  123. package/dist/esm/HashSet.js +7 -0
  124. package/dist/esm/HashSet.js.map +1 -1
  125. package/dist/esm/Layer.js +20 -0
  126. package/dist/esm/Layer.js.map +1 -1
  127. package/dist/esm/Match.js +665 -40
  128. package/dist/esm/Match.js.map +1 -1
  129. package/dist/esm/RcMap.js +10 -0
  130. package/dist/esm/RcMap.js.map +1 -1
  131. package/dist/esm/Reloadable.js.map +1 -1
  132. package/dist/esm/STM.js.map +1 -1
  133. package/dist/esm/Schedule.js +1074 -309
  134. package/dist/esm/Schedule.js.map +1 -1
  135. package/dist/esm/Schema.js +71 -0
  136. package/dist/esm/Schema.js.map +1 -1
  137. package/dist/esm/Stream.js.map +1 -1
  138. package/dist/esm/index.js +25 -0
  139. package/dist/esm/index.js.map +1 -1
  140. package/dist/esm/internal/channel.js.map +1 -1
  141. package/dist/esm/internal/core-effect.js.map +1 -1
  142. package/dist/esm/internal/core.js +23 -0
  143. package/dist/esm/internal/core.js.map +1 -1
  144. package/dist/esm/internal/dateTime.js +2 -0
  145. package/dist/esm/internal/dateTime.js.map +1 -1
  146. package/dist/esm/internal/differ.js +4 -0
  147. package/dist/esm/internal/differ.js.map +1 -1
  148. package/dist/esm/internal/effect/circular.js +3 -2
  149. package/dist/esm/internal/effect/circular.js.map +1 -1
  150. package/dist/esm/internal/fiberRuntime.js +18 -5
  151. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  152. package/dist/esm/internal/hashMap.js +9 -0
  153. package/dist/esm/internal/hashMap.js.map +1 -1
  154. package/dist/esm/internal/keyedPool.js +1 -1
  155. package/dist/esm/internal/keyedPool.js.map +1 -1
  156. package/dist/esm/internal/layer.js.map +1 -1
  157. package/dist/esm/internal/rcMap.js +85 -55
  158. package/dist/esm/internal/rcMap.js.map +1 -1
  159. package/dist/esm/internal/reloadable.js.map +1 -1
  160. package/dist/esm/internal/schedule.js.map +1 -1
  161. package/dist/esm/internal/sink.js.map +1 -1
  162. package/dist/esm/internal/stm/stm.js.map +1 -1
  163. package/dist/esm/internal/stream.js.map +1 -1
  164. package/dist/esm/internal/version.js +1 -1
  165. package/dist/esm/internal/version.js.map +1 -1
  166. package/package.json +2 -1
  167. package/src/Channel.ts +14 -17
  168. package/src/DateTime.ts +17 -8
  169. package/src/Differ.ts +2 -1
  170. package/src/Duration.ts +147 -0
  171. package/src/Effect.ts +528 -140
  172. package/src/Either.ts +9 -0
  173. package/src/FiberHandle.ts +95 -35
  174. package/src/FiberMap.ts +104 -39
  175. package/src/FiberSet.ts +93 -24
  176. package/src/HashMap.ts +40 -0
  177. package/src/HashSet.ts +8 -0
  178. package/src/Layer.ts +94 -40
  179. package/src/Match.ts +733 -49
  180. package/src/RcMap.ts +34 -0
  181. package/src/Reloadable.ts +17 -27
  182. package/src/STM.ts +10 -17
  183. package/src/Schedule.ts +2325 -653
  184. package/src/Schema.ts +81 -4
  185. package/src/Stream.ts +26 -33
  186. package/src/Trie.ts +7 -7
  187. package/src/index.ts +25 -0
  188. package/src/internal/channel.ts +37 -39
  189. package/src/internal/core-effect.ts +84 -84
  190. package/src/internal/core.ts +80 -0
  191. package/src/internal/dateTime.ts +3 -0
  192. package/src/internal/differ.ts +4 -0
  193. package/src/internal/effect/circular.ts +3 -2
  194. package/src/internal/fiberRuntime.ts +31 -6
  195. package/src/internal/hashMap.ts +16 -0
  196. package/src/internal/keyedPool.ts +1 -1
  197. package/src/internal/layer.ts +52 -52
  198. package/src/internal/rcMap.ts +131 -89
  199. package/src/internal/reloadable.ts +25 -28
  200. package/src/internal/schedule.ts +29 -23
  201. package/src/internal/sink.ts +16 -15
  202. package/src/internal/stm/stm.ts +54 -46
  203. package/src/internal/stream.ts +100 -100
  204. package/src/internal/version.ts +1 -1
@@ -25,7 +25,7 @@ import type * as HashMap from "./HashMap.js";
25
25
  import type * as HashSet from "./HashSet.js";
26
26
  import type { TypeLambda } from "./HKT.js";
27
27
  import type * as Layer from "./Layer.js";
28
- import type { LogLevel } from "./LogLevel.js";
28
+ import type * as LogLevel from "./LogLevel.js";
29
29
  import type * as ManagedRuntime from "./ManagedRuntime.js";
30
30
  import type * as Metric from "./Metric.js";
31
31
  import type * as MetricLabel from "./MetricLabel.js";
@@ -14196,7 +14196,7 @@ export declare const provideService: {
14196
14196
  * @since 2.0.0
14197
14197
  * @category Context
14198
14198
  */
14199
- <T extends Context.Tag<any, any>>(tag: T, service: Context.Tag.Service<T>): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, Exclude<R, Context.Tag.Identifier<T>>>;
14199
+ <I, S>(tag: Context.Tag<I, S>, service: NoInfer<S>): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, Exclude<R, I>>;
14200
14200
  /**
14201
14201
  * Provides an implementation for a service in the context of an effect.
14202
14202
  *
@@ -14249,7 +14249,7 @@ export declare const provideService: {
14249
14249
  * @since 2.0.0
14250
14250
  * @category Context
14251
14251
  */
14252
- <A, E, R, T extends Context.Tag<any, any>>(self: Effect<A, E, R>, tag: T, service: Context.Tag.Service<T>): Effect<A, E, Exclude<R, Context.Tag.Identifier<T>>>;
14252
+ <A, E, R, I, S>(self: Effect<A, E, R>, tag: Context.Tag<I, S>, service: NoInfer<S>): Effect<A, E, Exclude<R, I>>;
14253
14253
  };
14254
14254
  /**
14255
14255
  * Dynamically provides an implementation for a service using an effect.
@@ -14288,7 +14288,7 @@ export declare const provideServiceEffect: {
14288
14288
  * @since 2.0.0
14289
14289
  * @category Context
14290
14290
  */
14291
- <T extends Context.Tag<any, any>, E1, R1>(tag: T, effect: Effect<Context.Tag.Service<T>, E1, R1>): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E1 | E, R1 | Exclude<R, Context.Tag.Identifier<T>>>;
14291
+ <I, S, E1, R1>(tag: Context.Tag<I, S>, effect: Effect<NoInfer<S>, E1, R1>): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E | E1, R1 | Exclude<R, I>>;
14292
14292
  /**
14293
14293
  * Dynamically provides an implementation for a service using an effect.
14294
14294
  *
@@ -14307,7 +14307,7 @@ export declare const provideServiceEffect: {
14307
14307
  * @since 2.0.0
14308
14308
  * @category Context
14309
14309
  */
14310
- <A, E, R, T extends Context.Tag<any, any>, E1, R1>(self: Effect<A, E, R>, tag: T, effect: Effect<Context.Tag.Service<T>, E1, R1>): Effect<A, E | E1, R1 | Exclude<R, Context.Tag.Identifier<T>>>;
14310
+ <A, E, R, I, S, E1, R1>(self: Effect<A, E, R>, tag: Context.Tag<I, S>, effect: Effect<NoInfer<S>, E1, R1>): Effect<A, E | E1, R1 | Exclude<R, I>>;
14311
14311
  };
14312
14312
  /**
14313
14313
  * Creates a function that uses a service from the context to produce a value.
@@ -14435,7 +14435,7 @@ export declare const updateService: {
14435
14435
  * @since 2.0.0
14436
14436
  * @category Context
14437
14437
  */
14438
- <T extends Context.Tag<any, any>>(tag: T, f: (service: Context.Tag.Service<T>) => Context.Tag.Service<T>): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R | Context.Tag.Identifier<T>>;
14438
+ <I, S>(tag: Context.Tag<I, S>, f: (service: NoInfer<S>) => NoInfer<S>): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R | I>;
14439
14439
  /**
14440
14440
  * Updates a service in the context with a new implementation.
14441
14441
  *
@@ -14454,7 +14454,7 @@ export declare const updateService: {
14454
14454
  * @since 2.0.0
14455
14455
  * @category Context
14456
14456
  */
14457
- <A, E, R, T extends Context.Tag<any, any>>(self: Effect<A, E, R>, tag: T, f: (service: Context.Tag.Service<T>) => Context.Tag.Service<T>): Effect<A, E, R | Context.Tag.Identifier<T>>;
14457
+ <A, E, R, I, S>(self: Effect<A, E, R>, tag: Context.Tag<I, S>, f: (service: NoInfer<S>) => NoInfer<S>): Effect<A, E, R | I>;
14458
14458
  };
14459
14459
  /**
14460
14460
  * The "do simulation" in Effect allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
@@ -15841,6 +15841,251 @@ export declare const filterOrFail: {
15841
15841
  */
15842
15842
  <A, E, R>(self: Effect<A, E, R>, predicate: Predicate<A>): Effect<A, E | Cause.NoSuchElementException, R>;
15843
15843
  };
15844
+ /**
15845
+ * Filters an effect with an effectful predicate, falling back to an alternative
15846
+ * effect if the predicate fails.
15847
+ *
15848
+ * **Details**
15849
+ *
15850
+ * This function applies a predicate to the result of an effect. If the
15851
+ * predicate evaluates to `false`, the effect falls back to the `orElse`
15852
+ * effect. The `orElse` effect can produce an alternative value or perform
15853
+ * additional computations.
15854
+ *
15855
+ * @example
15856
+ * ```ts
15857
+ * import { Effect, pipe } from "effect"
15858
+ *
15859
+ * // Define a user interface
15860
+ * interface User {
15861
+ * readonly name: string
15862
+ * }
15863
+ *
15864
+ * // Simulate an asynchronous authentication function
15865
+ * declare const auth: () => Promise<User | null>
15866
+ *
15867
+ * const program = pipe(
15868
+ * Effect.promise(() => auth()),
15869
+ * // Use filterEffectOrElse with an effectful predicate
15870
+ * Effect.filterEffectOrElse({
15871
+ * predicate: (user) => Effect.succeed(user !== null),
15872
+ * orElse: (user) => Effect.fail(new Error(`Unauthorized user: ${user}`))
15873
+ * }),
15874
+ * )
15875
+ * ```
15876
+ *
15877
+ * @since 3.13.0
15878
+ * @category Filtering
15879
+ */
15880
+ export declare const filterEffectOrElse: {
15881
+ /**
15882
+ * Filters an effect with an effectful predicate, falling back to an alternative
15883
+ * effect if the predicate fails.
15884
+ *
15885
+ * **Details**
15886
+ *
15887
+ * This function applies a predicate to the result of an effect. If the
15888
+ * predicate evaluates to `false`, the effect falls back to the `orElse`
15889
+ * effect. The `orElse` effect can produce an alternative value or perform
15890
+ * additional computations.
15891
+ *
15892
+ * @example
15893
+ * ```ts
15894
+ * import { Effect, pipe } from "effect"
15895
+ *
15896
+ * // Define a user interface
15897
+ * interface User {
15898
+ * readonly name: string
15899
+ * }
15900
+ *
15901
+ * // Simulate an asynchronous authentication function
15902
+ * declare const auth: () => Promise<User | null>
15903
+ *
15904
+ * const program = pipe(
15905
+ * Effect.promise(() => auth()),
15906
+ * // Use filterEffectOrElse with an effectful predicate
15907
+ * Effect.filterEffectOrElse({
15908
+ * predicate: (user) => Effect.succeed(user !== null),
15909
+ * orElse: (user) => Effect.fail(new Error(`Unauthorized user: ${user}`))
15910
+ * }),
15911
+ * )
15912
+ * ```
15913
+ *
15914
+ * @since 3.13.0
15915
+ * @category Filtering
15916
+ */
15917
+ <A, E2, R2, A2, E3, R3>(options: {
15918
+ readonly predicate: (a: NoInfer<A>) => Effect<boolean, E2, R2>;
15919
+ readonly orElse: (a: NoInfer<A>) => Effect<A2, E3, R3>;
15920
+ }): <E, R>(self: Effect<A, E, R>) => Effect<A | A2, E | E2 | E3, R | R2 | R3>;
15921
+ /**
15922
+ * Filters an effect with an effectful predicate, falling back to an alternative
15923
+ * effect if the predicate fails.
15924
+ *
15925
+ * **Details**
15926
+ *
15927
+ * This function applies a predicate to the result of an effect. If the
15928
+ * predicate evaluates to `false`, the effect falls back to the `orElse`
15929
+ * effect. The `orElse` effect can produce an alternative value or perform
15930
+ * additional computations.
15931
+ *
15932
+ * @example
15933
+ * ```ts
15934
+ * import { Effect, pipe } from "effect"
15935
+ *
15936
+ * // Define a user interface
15937
+ * interface User {
15938
+ * readonly name: string
15939
+ * }
15940
+ *
15941
+ * // Simulate an asynchronous authentication function
15942
+ * declare const auth: () => Promise<User | null>
15943
+ *
15944
+ * const program = pipe(
15945
+ * Effect.promise(() => auth()),
15946
+ * // Use filterEffectOrElse with an effectful predicate
15947
+ * Effect.filterEffectOrElse({
15948
+ * predicate: (user) => Effect.succeed(user !== null),
15949
+ * orElse: (user) => Effect.fail(new Error(`Unauthorized user: ${user}`))
15950
+ * }),
15951
+ * )
15952
+ * ```
15953
+ *
15954
+ * @since 3.13.0
15955
+ * @category Filtering
15956
+ */
15957
+ <A, E, R, E2, R2, A2, E3, R3>(self: Effect<A, E, R>, options: {
15958
+ readonly predicate: (a: A) => Effect<boolean, E2, R2>;
15959
+ readonly orElse: (a: A) => Effect<A2, E3, R3>;
15960
+ }): Effect<A | A2, E | E2 | E3, R | R2 | R3>;
15961
+ };
15962
+ /**
15963
+ * Filters an effect with an effectful predicate, failing with a custom error if the predicate fails.
15964
+ *
15965
+ * **Details**
15966
+ *
15967
+ * This function applies a predicate to the result of an effect. If the
15968
+ * predicate evaluates to `false`, the effect fails with a custom error
15969
+ * generated by the `orFailWith` function.
15970
+ *
15971
+ * **When to Use**
15972
+ *
15973
+ * This is useful for enforcing constraints and treating violations as
15974
+ * recoverable errors.
15975
+ *
15976
+ * @example
15977
+ * ```ts
15978
+ * import { Effect, pipe } from "effect"
15979
+ *
15980
+ * // Define a user interface
15981
+ * interface User {
15982
+ * readonly name: string
15983
+ * }
15984
+ *
15985
+ * // Simulate an asynchronous authentication function
15986
+ * declare const auth: () => Promise<User | null>
15987
+ *
15988
+ * const program = pipe(
15989
+ * Effect.promise(() => auth()),
15990
+ * // Use filterEffectOrFail with an effectful predicate
15991
+ * Effect.filterEffectOrFail({
15992
+ * predicate: (user) => Effect.succeed(user !== null),
15993
+ * orFailWith: () => new Error("Unauthorized")
15994
+ * }),
15995
+ * )
15996
+ * ```
15997
+ *
15998
+ * @since 3.13.0
15999
+ * @category Filtering
16000
+ */
16001
+ export declare const filterEffectOrFail: {
16002
+ /**
16003
+ * Filters an effect with an effectful predicate, failing with a custom error if the predicate fails.
16004
+ *
16005
+ * **Details**
16006
+ *
16007
+ * This function applies a predicate to the result of an effect. If the
16008
+ * predicate evaluates to `false`, the effect fails with a custom error
16009
+ * generated by the `orFailWith` function.
16010
+ *
16011
+ * **When to Use**
16012
+ *
16013
+ * This is useful for enforcing constraints and treating violations as
16014
+ * recoverable errors.
16015
+ *
16016
+ * @example
16017
+ * ```ts
16018
+ * import { Effect, pipe } from "effect"
16019
+ *
16020
+ * // Define a user interface
16021
+ * interface User {
16022
+ * readonly name: string
16023
+ * }
16024
+ *
16025
+ * // Simulate an asynchronous authentication function
16026
+ * declare const auth: () => Promise<User | null>
16027
+ *
16028
+ * const program = pipe(
16029
+ * Effect.promise(() => auth()),
16030
+ * // Use filterEffectOrFail with an effectful predicate
16031
+ * Effect.filterEffectOrFail({
16032
+ * predicate: (user) => Effect.succeed(user !== null),
16033
+ * orFailWith: () => new Error("Unauthorized")
16034
+ * }),
16035
+ * )
16036
+ * ```
16037
+ *
16038
+ * @since 3.13.0
16039
+ * @category Filtering
16040
+ */
16041
+ <A, E2, R2, E3>(options: {
16042
+ readonly predicate: (a: NoInfer<A>) => Effect<boolean, E2, R2>;
16043
+ readonly orFailWith: (a: NoInfer<A>) => E3;
16044
+ }): <E, R>(self: Effect<A, E, R>) => Effect<A, E | E2 | E3, R | R2>;
16045
+ /**
16046
+ * Filters an effect with an effectful predicate, failing with a custom error if the predicate fails.
16047
+ *
16048
+ * **Details**
16049
+ *
16050
+ * This function applies a predicate to the result of an effect. If the
16051
+ * predicate evaluates to `false`, the effect fails with a custom error
16052
+ * generated by the `orFailWith` function.
16053
+ *
16054
+ * **When to Use**
16055
+ *
16056
+ * This is useful for enforcing constraints and treating violations as
16057
+ * recoverable errors.
16058
+ *
16059
+ * @example
16060
+ * ```ts
16061
+ * import { Effect, pipe } from "effect"
16062
+ *
16063
+ * // Define a user interface
16064
+ * interface User {
16065
+ * readonly name: string
16066
+ * }
16067
+ *
16068
+ * // Simulate an asynchronous authentication function
16069
+ * declare const auth: () => Promise<User | null>
16070
+ *
16071
+ * const program = pipe(
16072
+ * Effect.promise(() => auth()),
16073
+ * // Use filterEffectOrFail with an effectful predicate
16074
+ * Effect.filterEffectOrFail({
16075
+ * predicate: (user) => Effect.succeed(user !== null),
16076
+ * orFailWith: () => new Error("Unauthorized")
16077
+ * }),
16078
+ * )
16079
+ * ```
16080
+ *
16081
+ * @since 3.13.0
16082
+ * @category Filtering
16083
+ */
16084
+ <A, E, R, E2, R2, E3>(self: Effect<A, E, R>, options: {
16085
+ readonly predicate: (a: A) => Effect<boolean, E2, R2>;
16086
+ readonly orFailWith: (a: A) => E3;
16087
+ }): Effect<A, E | E2 | E3, R | R2>;
16088
+ };
15844
16089
  /**
15845
16090
  * Executes an effect only if the condition is `false`.
15846
16091
  *
@@ -21625,7 +21870,7 @@ export declare const log: (...message: ReadonlyArray<any>) => Effect<void, never
21625
21870
  * @since 2.0.0
21626
21871
  * @category Logging
21627
21872
  */
21628
- export declare const logWithLevel: (level: LogLevel, ...message: ReadonlyArray<any>) => Effect<void>;
21873
+ export declare const logWithLevel: (level: LogLevel.LogLevel, ...message: ReadonlyArray<any>) => Effect<void>;
21629
21874
  /**
21630
21875
  * Logs messages at the TRACE log level.
21631
21876
  *
@@ -22228,7 +22473,7 @@ export declare const withUnhandledErrorLogLevel: {
22228
22473
  * @since 2.0.0
22229
22474
  * @category Logging
22230
22475
  */
22231
- (level: Option.Option<LogLevel>): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R>;
22476
+ (level: Option.Option<LogLevel.LogLevel>): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R>;
22232
22477
  /**
22233
22478
  * Configures whether child fibers will log unhandled errors and at what log
22234
22479
  * level.
@@ -22263,7 +22508,104 @@ export declare const withUnhandledErrorLogLevel: {
22263
22508
  * @since 2.0.0
22264
22509
  * @category Logging
22265
22510
  */
22266
- <A, E, R>(self: Effect<A, E, R>, level: Option.Option<LogLevel>): Effect<A, E, R>;
22511
+ <A, E, R>(self: Effect<A, E, R>, level: Option.Option<LogLevel.LogLevel>): Effect<A, E, R>;
22512
+ };
22513
+ /**
22514
+ * Conditionally executes an effect based on the specified log level and currently enabled log level.
22515
+ *
22516
+ * **Details**
22517
+ *
22518
+ * This function runs the provided effect only if the specified log level is
22519
+ * enabled. If the log level is enabled, the effect is executed and its result
22520
+ * is wrapped in `Some`. If the log level is not enabled, the effect is not
22521
+ * executed and `None` is returned.
22522
+ *
22523
+ * This function is useful for conditionally executing logging-related effects
22524
+ * or other operations that depend on the current log level configuration.
22525
+ *
22526
+ * @example
22527
+ * ```ts
22528
+ * import { Effect, Logger, LogLevel } from "effect"
22529
+ *
22530
+ * const program = Effect.gen(function* () {
22531
+ * yield* Effect.whenLogLevel(Effect.logTrace("message1"), LogLevel.Trace); // returns `None`
22532
+ * yield* Effect.whenLogLevel(Effect.logDebug("message2"), LogLevel.Debug); // returns `Some`
22533
+ * }).pipe(Logger.withMinimumLogLevel(LogLevel.Debug));
22534
+ *
22535
+ * // Effect.runFork(program)
22536
+ * // timestamp=... level=DEBUG fiber=#0 message=message2
22537
+ * ```
22538
+ *
22539
+ * @see {@link FiberRef.minimumLogLevel} to retrieve the current minimum log level.
22540
+ *
22541
+ * @since 3.13.0
22542
+ * @category Logging
22543
+ */
22544
+ export declare const whenLogLevel: {
22545
+ /**
22546
+ * Conditionally executes an effect based on the specified log level and currently enabled log level.
22547
+ *
22548
+ * **Details**
22549
+ *
22550
+ * This function runs the provided effect only if the specified log level is
22551
+ * enabled. If the log level is enabled, the effect is executed and its result
22552
+ * is wrapped in `Some`. If the log level is not enabled, the effect is not
22553
+ * executed and `None` is returned.
22554
+ *
22555
+ * This function is useful for conditionally executing logging-related effects
22556
+ * or other operations that depend on the current log level configuration.
22557
+ *
22558
+ * @example
22559
+ * ```ts
22560
+ * import { Effect, Logger, LogLevel } from "effect"
22561
+ *
22562
+ * const program = Effect.gen(function* () {
22563
+ * yield* Effect.whenLogLevel(Effect.logTrace("message1"), LogLevel.Trace); // returns `None`
22564
+ * yield* Effect.whenLogLevel(Effect.logDebug("message2"), LogLevel.Debug); // returns `Some`
22565
+ * }).pipe(Logger.withMinimumLogLevel(LogLevel.Debug));
22566
+ *
22567
+ * // Effect.runFork(program)
22568
+ * // timestamp=... level=DEBUG fiber=#0 message=message2
22569
+ * ```
22570
+ *
22571
+ * @see {@link FiberRef.minimumLogLevel} to retrieve the current minimum log level.
22572
+ *
22573
+ * @since 3.13.0
22574
+ * @category Logging
22575
+ */
22576
+ (level: LogLevel.LogLevel | LogLevel.Literal): <A, E, R>(self: Effect<A, E, R>) => Effect<Option.Option<A>, E, R>;
22577
+ /**
22578
+ * Conditionally executes an effect based on the specified log level and currently enabled log level.
22579
+ *
22580
+ * **Details**
22581
+ *
22582
+ * This function runs the provided effect only if the specified log level is
22583
+ * enabled. If the log level is enabled, the effect is executed and its result
22584
+ * is wrapped in `Some`. If the log level is not enabled, the effect is not
22585
+ * executed and `None` is returned.
22586
+ *
22587
+ * This function is useful for conditionally executing logging-related effects
22588
+ * or other operations that depend on the current log level configuration.
22589
+ *
22590
+ * @example
22591
+ * ```ts
22592
+ * import { Effect, Logger, LogLevel } from "effect"
22593
+ *
22594
+ * const program = Effect.gen(function* () {
22595
+ * yield* Effect.whenLogLevel(Effect.logTrace("message1"), LogLevel.Trace); // returns `None`
22596
+ * yield* Effect.whenLogLevel(Effect.logDebug("message2"), LogLevel.Debug); // returns `Some`
22597
+ * }).pipe(Logger.withMinimumLogLevel(LogLevel.Debug));
22598
+ *
22599
+ * // Effect.runFork(program)
22600
+ * // timestamp=... level=DEBUG fiber=#0 message=message2
22601
+ * ```
22602
+ *
22603
+ * @see {@link FiberRef.minimumLogLevel} to retrieve the current minimum log level.
22604
+ *
22605
+ * @since 3.13.0
22606
+ * @category Logging
22607
+ */
22608
+ <A, E, R>(self: Effect<A, E, R>, level: LogLevel.LogLevel | LogLevel.Literal): Effect<Option.Option<A>, E, R>;
22267
22609
  };
22268
22610
  /**
22269
22611
  * Converts an effect's failure into a fiber termination, removing the error
@@ -25300,7 +25642,7 @@ export declare const withParentSpan: {
25300
25642
  * ```
25301
25643
  *
25302
25644
  * @since 2.0.0
25303
- * @category Optional Wrapping
25645
+ * @category Optional Wrapping & Unwrapping
25304
25646
  */
25305
25647
  export declare const fromNullable: <A>(value: A) => Effect<NonNullable<A>, Cause.NoSuchElementException>;
25306
25648
  /**
@@ -25354,9 +25696,39 @@ export declare const fromNullable: <A>(value: A) => Effect<NonNullable<A>, Cause
25354
25696
  * ```
25355
25697
  *
25356
25698
  * @since 2.0.0
25357
- * @category Optional Wrapping
25699
+ * @category Optional Wrapping & Unwrapping
25358
25700
  */
25359
25701
  export declare const optionFromOptional: <A, E, R>(self: Effect<A, E, R>) => Effect<Option.Option<A>, Exclude<E, Cause.NoSuchElementException>, R>;
25702
+ /**
25703
+ * Converts an `Option` of an `Effect` into an `Effect` of an `Option`.
25704
+ *
25705
+ * **Details**
25706
+ *
25707
+ * This function transforms an `Option<Effect<A, E, R>>` into an
25708
+ * `Effect<Option<A>, E, R>`. If the `Option` is `None`, the resulting `Effect`
25709
+ * will immediately succeed with a `None` value. If the `Option` is `Some`, the
25710
+ * inner `Effect` will be executed, and its result wrapped in a `Some`.
25711
+ *
25712
+ * @example
25713
+ * ```ts
25714
+ * import { Effect, Option } from "effect"
25715
+ *
25716
+ * // ┌─── Option<Effect<number, never, never>>
25717
+ * // ▼
25718
+ * const maybe = Option.some(Effect.succeed(42))
25719
+ *
25720
+ * // ┌─── Effect<Option<number>, never, never>
25721
+ * // ▼
25722
+ * const result = Effect.transposeOption(maybe)
25723
+ *
25724
+ * console.log(Effect.runSync(result))
25725
+ * // Output: { _id: 'Option', _tag: 'Some', value: 42 }
25726
+ * ```
25727
+ *
25728
+ * @since 3.13.0
25729
+ * @category Optional Wrapping & Unwrapping
25730
+ */
25731
+ export declare const transposeOption: <A = never, E = never, R = never>(self: Option.Option<Effect<A, E, R>>) => Effect<Option.Option<A>, E, R>;
25360
25732
  /**
25361
25733
  * @since 2.0.0
25362
25734
  * @category Models
@@ -25640,47 +26012,47 @@ export declare namespace fn {
25640
26012
  Eff
25641
26013
  ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never, [
25642
26014
  Eff
25643
- ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>) => A): (...args: Args) => A;
26015
+ ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>, ...args: Args) => A): (...args: Args) => A;
25644
26016
  <Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A, B extends Effect<any, any, any>>(body: (...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [
25645
26017
  Eff
25646
26018
  ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never, [
25647
26019
  Eff
25648
- ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>) => A, b: (_: A) => B): (...args: Args) => B;
26020
+ ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B): (...args: Args) => B;
25649
26021
  <Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A, B, C extends Effect<any, any, any>>(body: (...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [
25650
26022
  Eff
25651
26023
  ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never, [
25652
26024
  Eff
25653
- ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>) => A, b: (_: A) => B, c: (_: B) => C): (...args: Args) => C;
26025
+ ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B, c: (_: B, ...args: Args) => C): (...args: Args) => C;
25654
26026
  <Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A, B, C, D extends Effect<any, any, any>>(body: (...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [
25655
26027
  Eff
25656
26028
  ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never, [
25657
26029
  Eff
25658
- ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>) => A, b: (_: A) => B, c: (_: B) => C, d: (_: C) => D): (...args: Args) => D;
26030
+ ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B, c: (_: B, ...args: Args) => C, d: (_: C, ...args: Args) => D): (...args: Args) => D;
25659
26031
  <Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A, B, C, D, E extends Effect<any, any, any>>(body: (...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [
25660
26032
  Eff
25661
26033
  ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never, [
25662
26034
  Eff
25663
- ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>) => A, b: (_: A) => B, c: (_: B) => C, d: (_: C) => D, e: (_: D) => E): (...args: Args) => E;
26035
+ ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B, c: (_: B, ...args: Args) => C, d: (_: C, ...args: Args) => D, e: (_: D, ...args: Args) => E): (...args: Args) => E;
25664
26036
  <Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A, B, C, D, E, F extends Effect<any, any, any>>(body: (...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [
25665
26037
  Eff
25666
26038
  ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never, [
25667
26039
  Eff
25668
- ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>) => A, b: (_: A) => B, c: (_: B) => C, d: (_: C) => D, e: (_: D) => E, f: (_: E) => F): (...args: Args) => F;
26040
+ ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B, c: (_: B, ...args: Args) => C, d: (_: C, ...args: Args) => D, e: (_: D, ...args: Args) => E, f: (_: E, ...args: Args) => F): (...args: Args) => F;
25669
26041
  <Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A, B, C, D, E, F, G extends Effect<any, any, any>>(body: (...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [
25670
26042
  Eff
25671
26043
  ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never, [
25672
26044
  Eff
25673
- ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>) => A, b: (_: A) => B, c: (_: B) => C, d: (_: C) => D, e: (_: D) => E, f: (_: E) => F, g: (_: F) => G): (...args: Args) => G;
26045
+ ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B, c: (_: B, ...args: Args) => C, d: (_: C, ...args: Args) => D, e: (_: D, ...args: Args) => E, f: (_: E, ...args: Args) => F, g: (_: F, ...args: Args) => G): (...args: Args) => G;
25674
26046
  <Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A, B, C, D, E, F, G, H extends Effect<any, any, any>>(body: (...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [
25675
26047
  Eff
25676
26048
  ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never, [
25677
26049
  Eff
25678
- ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>) => A, b: (_: A) => B, c: (_: B) => C, d: (_: C) => D, e: (_: D) => E, f: (_: E) => F, g: (_: F) => G, h: (_: G) => H): (...args: Args) => H;
26050
+ ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B, c: (_: B, ...args: Args) => C, d: (_: C, ...args: Args) => D, e: (_: D, ...args: Args) => E, f: (_: E, ...args: Args) => F, g: (_: F, ...args: Args) => G, h: (_: G, ...args: Args) => H): (...args: Args) => H;
25679
26051
  <Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A, B, C, D, E, F, G, H, I extends Effect<any, any, any>>(body: (...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [
25680
26052
  Eff
25681
26053
  ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never, [
25682
26054
  Eff
25683
- ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>) => A, b: (_: A) => B, c: (_: B) => C, d: (_: C) => D, e: (_: D) => E, f: (_: E) => F, g: (_: F) => G, h: (_: G) => H, i: (_: H) => I): (...args: Args) => I;
26055
+ ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B, c: (_: B, ...args: Args) => C, d: (_: C, ...args: Args) => D, e: (_: D, ...args: Args) => E, f: (_: E, ...args: Args) => F, g: (_: F, ...args: Args) => G, h: (_: G, ...args: Args) => H, i: (_: H, ...args: Args) => I): (...args: Args) => I;
25684
26056
  };
25685
26057
  /**
25686
26058
  * @since 3.11.0
@@ -25688,15 +26060,15 @@ export declare namespace fn {
25688
26060
  */
25689
26061
  type NonGen = {
25690
26062
  <Eff extends Effect<any, any, any>, Args extends Array<any>>(body: (...args: Args) => Eff): (...args: Args) => Eff;
25691
- <Eff extends Effect<any, any, any>, A, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A) => Eff): (...args: Args) => Eff;
25692
- <Eff extends Effect<any, any, any>, A, B, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A) => B, b: (_: B) => Eff): (...args: Args) => Eff;
25693
- <Eff extends Effect<any, any, any>, A, B, C, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A) => B, b: (_: B) => C, c: (_: C) => Eff): (...args: Args) => Eff;
25694
- <Eff extends Effect<any, any, any>, A, B, C, D, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A) => B, b: (_: B) => C, c: (_: C) => D, d: (_: D) => Eff): (...args: Args) => Eff;
25695
- <Eff extends Effect<any, any, any>, A, B, C, D, E, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A) => B, b: (_: B) => C, c: (_: C) => D, d: (_: D) => E, e: (_: E) => Eff): (...args: Args) => Eff;
25696
- <Eff extends Effect<any, any, any>, A, B, C, D, E, F, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A) => B, b: (_: B) => C, c: (_: C) => D, d: (_: D) => E, e: (_: E) => F, f: (_: E) => Eff): (...args: Args) => Eff;
25697
- <Eff extends Effect<any, any, any>, A, B, C, D, E, F, G, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A) => B, b: (_: B) => C, c: (_: C) => D, d: (_: D) => E, e: (_: E) => F, f: (_: E) => G, g: (_: G) => Eff): (...args: Args) => Eff;
25698
- <Eff extends Effect<any, any, any>, A, B, C, D, E, F, G, H, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A) => B, b: (_: B) => C, c: (_: C) => D, d: (_: D) => E, e: (_: E) => F, f: (_: E) => G, g: (_: G) => H, h: (_: H) => Eff): (...args: Args) => Eff;
25699
- <Eff extends Effect<any, any, any>, A, B, C, D, E, F, G, H, I, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A) => B, b: (_: B) => C, c: (_: C) => D, d: (_: D) => E, e: (_: E) => F, f: (_: E) => G, g: (_: G) => H, h: (_: H) => I, i: (_: H) => Eff): (...args: Args) => Eff;
26063
+ <Eff extends Effect<any, any, any>, A, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A, ...args: Args) => Eff): (...args: Args) => Eff;
26064
+ <Eff extends Effect<any, any, any>, A, B, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A, ...args: Args) => B, b: (_: B, ...args: Args) => Eff): (...args: Args) => Eff;
26065
+ <Eff extends Effect<any, any, any>, A, B, C, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A, ...args: Args) => B, b: (_: B, ...args: Args) => C, c: (_: C, ...args: Args) => Eff): (...args: Args) => Eff;
26066
+ <Eff extends Effect<any, any, any>, A, B, C, D, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A, ...args: Args) => B, b: (_: B, ...args: Args) => C, c: (_: C, ...args: Args) => D, d: (_: D, ...args: Args) => Eff): (...args: Args) => Eff;
26067
+ <Eff extends Effect<any, any, any>, A, B, C, D, E, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A, ...args: Args) => B, b: (_: B, ...args: Args) => C, c: (_: C, ...args: Args) => D, d: (_: D, ...args: Args) => E, e: (_: E, ...args: Args) => Eff): (...args: Args) => Eff;
26068
+ <Eff extends Effect<any, any, any>, A, B, C, D, E, F, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A, ...args: Args) => B, b: (_: B, ...args: Args) => C, c: (_: C, ...args: Args) => D, d: (_: D, ...args: Args) => E, e: (_: E, ...args: Args) => F, f: (_: F, ...args: Args) => Eff): (...args: Args) => Eff;
26069
+ <Eff extends Effect<any, any, any>, A, B, C, D, E, F, G, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A, ...args: Args) => B, b: (_: B, ...args: Args) => C, c: (_: C, ...args: Args) => D, d: (_: D, ...args: Args) => E, e: (_: E, ...args: Args) => F, f: (_: F, ...args: Args) => G, g: (_: G, ...args: Args) => Eff): (...args: Args) => Eff;
26070
+ <Eff extends Effect<any, any, any>, A, B, C, D, E, F, G, H, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A, ...args: Args) => B, b: (_: B, ...args: Args) => C, c: (_: C, ...args: Args) => D, d: (_: D, ...args: Args) => E, e: (_: E, ...args: Args) => F, f: (_: F, ...args: Args) => G, g: (_: G, ...args: Args) => H, h: (_: H, ...args: Args) => Eff): (...args: Args) => Eff;
26071
+ <Eff extends Effect<any, any, any>, A, B, C, D, E, F, G, H, I, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A, ...args: Args) => B, b: (_: B, ...args: Args) => C, c: (_: C, ...args: Args) => D, d: (_: D, ...args: Args) => E, e: (_: E, ...args: Args) => F, f: (_: F, ...args: Args) => G, g: (_: G, ...args: Args) => H, h: (_: H, ...args: Args) => I, i: (_: H, ...args: Args) => Eff): (...args: Args) => Eff;
25700
26072
  };
25701
26073
  }
25702
26074
  /**