effect 3.10.19 → 3.11.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 (167) hide show
  1. package/dist/cjs/BigDecimal.js +125 -24
  2. package/dist/cjs/BigDecimal.js.map +1 -1
  3. package/dist/cjs/Channel.js +44 -4
  4. package/dist/cjs/Channel.js.map +1 -1
  5. package/dist/cjs/Config.js +8 -1
  6. package/dist/cjs/Config.js.map +1 -1
  7. package/dist/cjs/Context.js +26 -1
  8. package/dist/cjs/Context.js.map +1 -1
  9. package/dist/cjs/Cron.js +75 -67
  10. package/dist/cjs/Cron.js.map +1 -1
  11. package/dist/cjs/DateTime.js +114 -664
  12. package/dist/cjs/DateTime.js.map +1 -1
  13. package/dist/cjs/Effect.js +82 -4
  14. package/dist/cjs/Effect.js.map +1 -1
  15. package/dist/cjs/Inspectable.js +8 -4
  16. package/dist/cjs/Inspectable.js.map +1 -1
  17. package/dist/cjs/JSONSchema.js.map +1 -1
  18. package/dist/cjs/Micro.js +1099 -1072
  19. package/dist/cjs/Micro.js.map +1 -1
  20. package/dist/cjs/STM.js.map +1 -1
  21. package/dist/cjs/Schema.js +57 -8
  22. package/dist/cjs/Schema.js.map +1 -1
  23. package/dist/cjs/Sink.js +9 -1
  24. package/dist/cjs/Sink.js.map +1 -1
  25. package/dist/cjs/Stream.js +25 -7
  26. package/dist/cjs/Stream.js.map +1 -1
  27. package/dist/cjs/Utils.js +7 -1
  28. package/dist/cjs/Utils.js.map +1 -1
  29. package/dist/cjs/internal/channel/channelExecutor.js +5 -9
  30. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  31. package/dist/cjs/internal/channel.js +156 -130
  32. package/dist/cjs/internal/channel.js.map +1 -1
  33. package/dist/cjs/internal/config.js +13 -4
  34. package/dist/cjs/internal/config.js.map +1 -1
  35. package/dist/cjs/internal/context.js +46 -3
  36. package/dist/cjs/internal/context.js.map +1 -1
  37. package/dist/cjs/internal/dateTime.js +747 -0
  38. package/dist/cjs/internal/dateTime.js.map +1 -0
  39. package/dist/cjs/internal/fiberRuntime.js +34 -11
  40. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  41. package/dist/cjs/internal/groupBy.js +9 -3
  42. package/dist/cjs/internal/groupBy.js.map +1 -1
  43. package/dist/cjs/internal/layer.js +1 -1
  44. package/dist/cjs/internal/layer.js.map +1 -1
  45. package/dist/cjs/internal/mailbox.js +1 -1
  46. package/dist/cjs/internal/mailbox.js.map +1 -1
  47. package/dist/cjs/internal/sink.js +25 -21
  48. package/dist/cjs/internal/sink.js.map +1 -1
  49. package/dist/cjs/internal/stream.js +70 -71
  50. package/dist/cjs/internal/stream.js.map +1 -1
  51. package/dist/cjs/internal/version.js +1 -1
  52. package/dist/cjs/internal/version.js.map +1 -1
  53. package/dist/dts/BigDecimal.d.ts +56 -1
  54. package/dist/dts/BigDecimal.d.ts.map +1 -1
  55. package/dist/dts/Channel.d.ts +66 -5
  56. package/dist/dts/Channel.d.ts.map +1 -1
  57. package/dist/dts/Config.d.ts +23 -1
  58. package/dist/dts/Config.d.ts.map +1 -1
  59. package/dist/dts/Context.d.ts +111 -0
  60. package/dist/dts/Context.d.ts.map +1 -1
  61. package/dist/dts/Cron.d.ts +15 -6
  62. package/dist/dts/Cron.d.ts.map +1 -1
  63. package/dist/dts/DateTime.d.ts +40 -49
  64. package/dist/dts/DateTime.d.ts.map +1 -1
  65. package/dist/dts/Effect.d.ts +88 -1
  66. package/dist/dts/Effect.d.ts.map +1 -1
  67. package/dist/dts/Inspectable.d.ts.map +1 -1
  68. package/dist/dts/JSONSchema.d.ts +1 -0
  69. package/dist/dts/JSONSchema.d.ts.map +1 -1
  70. package/dist/dts/Micro.d.ts +875 -872
  71. package/dist/dts/Micro.d.ts.map +1 -1
  72. package/dist/dts/STM.d.ts +2 -0
  73. package/dist/dts/STM.d.ts.map +1 -1
  74. package/dist/dts/Schema.d.ts +32 -0
  75. package/dist/dts/Schema.d.ts.map +1 -1
  76. package/dist/dts/Sink.d.ts +8 -0
  77. package/dist/dts/Sink.d.ts.map +1 -1
  78. package/dist/dts/Stream.d.ts +50 -32
  79. package/dist/dts/Stream.d.ts.map +1 -1
  80. package/dist/dts/Utils.d.ts +4 -0
  81. package/dist/dts/Utils.d.ts.map +1 -1
  82. package/dist/dts/internal/context.d.ts +1 -1
  83. package/dist/dts/internal/context.d.ts.map +1 -1
  84. package/dist/dts/internal/dateTime.d.ts +2 -0
  85. package/dist/dts/internal/dateTime.d.ts.map +1 -0
  86. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  87. package/dist/dts/internal/stream.d.ts.map +1 -1
  88. package/dist/esm/BigDecimal.js +119 -20
  89. package/dist/esm/BigDecimal.js.map +1 -1
  90. package/dist/esm/Channel.js +42 -2
  91. package/dist/esm/Channel.js.map +1 -1
  92. package/dist/esm/Config.js +7 -0
  93. package/dist/esm/Config.js.map +1 -1
  94. package/dist/esm/Context.js +25 -0
  95. package/dist/esm/Context.js.map +1 -1
  96. package/dist/esm/Cron.js +75 -67
  97. package/dist/esm/Cron.js.map +1 -1
  98. package/dist/esm/DateTime.js +112 -627
  99. package/dist/esm/DateTime.js.map +1 -1
  100. package/dist/esm/Effect.js +77 -0
  101. package/dist/esm/Effect.js.map +1 -1
  102. package/dist/esm/Inspectable.js +8 -4
  103. package/dist/esm/Inspectable.js.map +1 -1
  104. package/dist/esm/JSONSchema.js.map +1 -1
  105. package/dist/esm/Micro.js +1077 -1047
  106. package/dist/esm/Micro.js.map +1 -1
  107. package/dist/esm/STM.js.map +1 -1
  108. package/dist/esm/Schema.js +54 -0
  109. package/dist/esm/Schema.js.map +1 -1
  110. package/dist/esm/Sink.js +8 -0
  111. package/dist/esm/Sink.js.map +1 -1
  112. package/dist/esm/Stream.js +23 -5
  113. package/dist/esm/Stream.js.map +1 -1
  114. package/dist/esm/Utils.js +5 -0
  115. package/dist/esm/Utils.js.map +1 -1
  116. package/dist/esm/internal/channel/channelExecutor.js +5 -7
  117. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  118. package/dist/esm/internal/channel.js +152 -129
  119. package/dist/esm/internal/channel.js.map +1 -1
  120. package/dist/esm/internal/config.js +11 -3
  121. package/dist/esm/internal/config.js.map +1 -1
  122. package/dist/esm/internal/context.js +42 -2
  123. package/dist/esm/internal/context.js.map +1 -1
  124. package/dist/esm/internal/dateTime.js +704 -0
  125. package/dist/esm/internal/dateTime.js.map +1 -0
  126. package/dist/esm/internal/fiberRuntime.js +31 -9
  127. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  128. package/dist/esm/internal/groupBy.js +9 -3
  129. package/dist/esm/internal/groupBy.js.map +1 -1
  130. package/dist/esm/internal/layer.js +1 -1
  131. package/dist/esm/internal/layer.js.map +1 -1
  132. package/dist/esm/internal/mailbox.js +1 -1
  133. package/dist/esm/internal/mailbox.js.map +1 -1
  134. package/dist/esm/internal/sink.js +23 -20
  135. package/dist/esm/internal/sink.js.map +1 -1
  136. package/dist/esm/internal/stream.js +66 -69
  137. package/dist/esm/internal/stream.js.map +1 -1
  138. package/dist/esm/internal/version.js +1 -1
  139. package/dist/esm/internal/version.js.map +1 -1
  140. package/package.json +1 -1
  141. package/src/BigDecimal.ts +131 -21
  142. package/src/Channel.ts +81 -5
  143. package/src/Config.ts +24 -1
  144. package/src/Context.ts +119 -0
  145. package/src/Cron.ts +85 -68
  146. package/src/DateTime.ts +155 -757
  147. package/src/Effect.ts +340 -1
  148. package/src/Inspectable.ts +11 -7
  149. package/src/JSONSchema.ts +1 -0
  150. package/src/Micro.ts +2005 -1757
  151. package/src/STM.ts +2 -0
  152. package/src/Schema.ts +60 -0
  153. package/src/Sink.ts +11 -0
  154. package/src/Stream.ts +55 -44
  155. package/src/Utils.ts +8 -0
  156. package/src/internal/channel/channelExecutor.ts +37 -33
  157. package/src/internal/channel.ts +504 -467
  158. package/src/internal/config.ts +18 -6
  159. package/src/internal/context.ts +56 -4
  160. package/src/internal/dateTime.ts +1126 -0
  161. package/src/internal/fiberRuntime.ts +35 -16
  162. package/src/internal/groupBy.ts +13 -22
  163. package/src/internal/layer.ts +5 -8
  164. package/src/internal/mailbox.ts +6 -4
  165. package/src/internal/sink.ts +55 -35
  166. package/src/internal/stream.ts +299 -299
  167. package/src/internal/version.ts +1 -1
@@ -47,7 +47,7 @@ import type * as Supervisor from "./Supervisor.js";
47
47
  import type * as Tracer from "./Tracer.js";
48
48
  import type { Concurrency, Contravariant, Covariant, NoExcessProperties, NoInfer, NotFunction } from "./Types.js";
49
49
  import type * as Unify from "./Unify.js";
50
- import type { YieldWrap } from "./Utils.js";
50
+ import { type YieldWrap } from "./Utils.js";
51
51
  /**
52
52
  * @since 2.0.0
53
53
  * @category Symbols
@@ -130,6 +130,9 @@ declare module "./Context.js" {
130
130
  interface Tag<Id, Value> extends Effect<Value, never, Id> {
131
131
  [Symbol.iterator](): EffectGenerator<Tag<Id, Value>>;
132
132
  }
133
+ interface Reference<Id, Value> extends Effect<Value> {
134
+ [Symbol.iterator](): EffectGenerator<Reference<Id, Value>>;
135
+ }
133
136
  interface TagUnifyIgnore {
134
137
  Effect?: true;
135
138
  Either?: true;
@@ -6901,6 +6904,15 @@ export declare const scope: Effect<Scope.Scope, never, Scope.Scope>;
6901
6904
  * @category scoping, resources & finalization
6902
6905
  */
6903
6906
  export declare const scopeWith: <A, E, R>(f: (scope: Scope.Scope) => Effect<A, E, R>) => Effect<A, E, R | Scope.Scope>;
6907
+ /**
6908
+ * Creates a `Scope`, passes it to the specified effectful function, and then
6909
+ * closes the scope as soon as the effect is complete (whether through success,
6910
+ * failure, or interruption).
6911
+ *
6912
+ * @since 3.11.0
6913
+ * @category scoping, resources & finalization
6914
+ */
6915
+ export declare const scopedWith: <A, E, R>(f: (scope: Scope.Scope) => Effect<A, E, R>) => Effect<A, E, R>;
6904
6916
  /**
6905
6917
  * Scopes all resources used in this workflow to the lifetime of the workflow,
6906
6918
  * ensuring that their finalizers are run as soon as this workflow completes
@@ -17233,4 +17245,79 @@ export declare namespace Service {
17233
17245
  readonly accessors: true;
17234
17246
  } ? true : false;
17235
17247
  }
17248
+ /**
17249
+ * @since 3.11.0
17250
+ * @category models
17251
+ */
17252
+ export declare namespace fn {
17253
+ /**
17254
+ * @since 3.11.0
17255
+ * @category models
17256
+ */
17257
+ type FnEffect<AEff, Eff extends YieldWrap<Effect<any, any, any>>> = Effect<AEff, [
17258
+ Eff
17259
+ ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never, [
17260
+ Eff
17261
+ ] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never>;
17262
+ /**
17263
+ * @since 3.11.0
17264
+ * @category models
17265
+ */
17266
+ type Gen = {
17267
+ <Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>>(body: (...args: Args) => Generator<Eff, AEff, never>): (...args: Args) => fn.FnEffect<AEff, Eff>;
17268
+ <Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A extends Effect<any, any, any>>(body: (...args: Args) => Generator<Eff, AEff, never>, a: (_: fn.FnEffect<AEff, Eff>) => A): (...args: Args) => A;
17269
+ <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: (_: fn.FnEffect<AEff, Eff>) => A, b: (_: A) => B): (...args: Args) => B;
17270
+ <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: (_: fn.FnEffect<AEff, Eff>) => A, b: (_: A) => B, c: (_: B) => C): (...args: Args) => C;
17271
+ <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: (_: fn.FnEffect<AEff, Eff>) => A, b: (_: A) => B, c: (_: B) => C, d: (_: C) => D): (...args: Args) => D;
17272
+ <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: (_: fn.FnEffect<AEff, Eff>) => A, b: (_: A) => B, c: (_: B) => C, d: (_: C) => D, e: (_: D) => E): (...args: Args) => E;
17273
+ <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: (_: fn.FnEffect<AEff, Eff>) => A, b: (_: A) => B, c: (_: B) => C, d: (_: C) => D, e: (_: D) => E, f: (_: E) => F): (...args: Args) => F;
17274
+ <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: (_: fn.FnEffect<AEff, Eff>) => A, b: (_: A) => B, c: (_: B) => C, d: (_: C) => D, e: (_: D) => E, f: (_: E) => F, g: (_: F) => G): (...args: Args) => G;
17275
+ <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: (_: fn.FnEffect<AEff, Eff>) => 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;
17276
+ <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: (_: fn.FnEffect<AEff, Eff>) => 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;
17277
+ };
17278
+ /**
17279
+ * @since 3.11.0
17280
+ * @category models
17281
+ */
17282
+ type NonGen = {
17283
+ <Eff extends Effect<any, any, any>, Args extends Array<any>>(body: (...args: Args) => Eff): (...args: Args) => Eff;
17284
+ <Eff extends Effect<any, any, any>, A, Args extends Array<any>>(body: (...args: Args) => A, a: (_: A) => Eff): (...args: Args) => Eff;
17285
+ <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;
17286
+ <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;
17287
+ <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;
17288
+ <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;
17289
+ <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;
17290
+ <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;
17291
+ <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;
17292
+ <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;
17293
+ };
17294
+ }
17295
+ /**
17296
+ * Creates a function that returns an Effect which is automatically traced with a span pointing to the call site.
17297
+ *
17298
+ * The function can be created both using a generator function that can yield effects or using a normal function.
17299
+ *
17300
+ * @since 3.11.0
17301
+ * @category function
17302
+ *
17303
+ * @example
17304
+ * import { Effect } from "effect"
17305
+ *
17306
+ * const logExample = Effect.fn("logExample")(
17307
+ * function*<N extends number>(n: N) {
17308
+ * yield* Effect.annotateCurrentSpan("n", n)
17309
+ * yield* Effect.logInfo(`got: ${n}`)
17310
+ * yield* Effect.fail(new Error())
17311
+ * },
17312
+ * Effect.delay("1 second")
17313
+ * )
17314
+ *
17315
+ * Effect.runFork(
17316
+ * // this location is printed on the stack trace of the following `Effect.logError`
17317
+ * logExample(100).pipe(
17318
+ * Effect.catchAllCause(Effect.logError)
17319
+ * )
17320
+ * )
17321
+ */
17322
+ export declare const fn: (name: string, options?: Tracer.SpanOptions) => fn.Gen & fn.NonGen;
17236
17323
  //# sourceMappingURL=Effect.d.ts.map