effect 3.1.6 → 3.2.1

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 (113) hide show
  1. package/dist/cjs/Array.js +139 -2
  2. package/dist/cjs/Array.js.map +1 -1
  3. package/dist/cjs/Cause.js +8 -1
  4. package/dist/cjs/Cause.js.map +1 -1
  5. package/dist/cjs/Chunk.js +18 -1
  6. package/dist/cjs/Chunk.js.map +1 -1
  7. package/dist/cjs/Config.js.map +1 -1
  8. package/dist/cjs/Data.js +11 -8
  9. package/dist/cjs/Data.js.map +1 -1
  10. package/dist/cjs/Effect.js +20 -3
  11. package/dist/cjs/Effect.js.map +1 -1
  12. package/dist/cjs/Stream.js +19 -1
  13. package/dist/cjs/Stream.js.map +1 -1
  14. package/dist/cjs/Tracer.js.map +1 -1
  15. package/dist/cjs/internal/cause.js +55 -48
  16. package/dist/cjs/internal/cause.js.map +1 -1
  17. package/dist/cjs/internal/channel.js +11 -1
  18. package/dist/cjs/internal/channel.js.map +1 -1
  19. package/dist/cjs/internal/config.js.map +1 -1
  20. package/dist/cjs/internal/core-effect.js +51 -9
  21. package/dist/cjs/internal/core-effect.js.map +1 -1
  22. package/dist/cjs/internal/core.js +8 -4
  23. package/dist/cjs/internal/core.js.map +1 -1
  24. package/dist/cjs/internal/fiberRuntime.js +27 -14
  25. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  26. package/dist/cjs/internal/layer/circular.js +4 -1
  27. package/dist/cjs/internal/layer/circular.js.map +1 -1
  28. package/dist/cjs/internal/layer.js +11 -1
  29. package/dist/cjs/internal/layer.js.map +1 -1
  30. package/dist/cjs/internal/runtime.js +7 -4
  31. package/dist/cjs/internal/runtime.js.map +1 -1
  32. package/dist/cjs/internal/stream.js +27 -9
  33. package/dist/cjs/internal/stream.js.map +1 -1
  34. package/dist/cjs/internal/tracer.js +31 -1
  35. package/dist/cjs/internal/tracer.js.map +1 -1
  36. package/dist/cjs/internal/version.js +1 -1
  37. package/dist/dts/Array.d.ts +199 -0
  38. package/dist/dts/Array.d.ts.map +1 -1
  39. package/dist/dts/Cause.d.ts +15 -0
  40. package/dist/dts/Cause.d.ts.map +1 -1
  41. package/dist/dts/Chunk.d.ts +20 -0
  42. package/dist/dts/Chunk.d.ts.map +1 -1
  43. package/dist/dts/Config.d.ts +4 -4
  44. package/dist/dts/Config.d.ts.map +1 -1
  45. package/dist/dts/Data.d.ts +46 -13
  46. package/dist/dts/Data.d.ts.map +1 -1
  47. package/dist/dts/Effect.d.ts +36 -0
  48. package/dist/dts/Effect.d.ts.map +1 -1
  49. package/dist/dts/Stream.d.ts +23 -1
  50. package/dist/dts/Stream.d.ts.map +1 -1
  51. package/dist/dts/Tracer.d.ts +1 -0
  52. package/dist/dts/Tracer.d.ts.map +1 -1
  53. package/dist/dts/internal/core-effect.d.ts +7 -1
  54. package/dist/dts/internal/core-effect.d.ts.map +1 -1
  55. package/dist/dts/internal/core.d.ts.map +1 -1
  56. package/dist/dts/internal/stream.d.ts.map +1 -1
  57. package/dist/esm/Array.js +182 -0
  58. package/dist/esm/Array.js.map +1 -1
  59. package/dist/esm/Cause.js +7 -0
  60. package/dist/esm/Cause.js.map +1 -1
  61. package/dist/esm/Chunk.js +16 -0
  62. package/dist/esm/Chunk.js.map +1 -1
  63. package/dist/esm/Config.js.map +1 -1
  64. package/dist/esm/Data.js +11 -8
  65. package/dist/esm/Data.js.map +1 -1
  66. package/dist/esm/Effect.js +17 -0
  67. package/dist/esm/Effect.js.map +1 -1
  68. package/dist/esm/Stream.js +18 -0
  69. package/dist/esm/Stream.js.map +1 -1
  70. package/dist/esm/Tracer.js.map +1 -1
  71. package/dist/esm/internal/cause.js +54 -47
  72. package/dist/esm/internal/cause.js.map +1 -1
  73. package/dist/esm/internal/channel.js +10 -1
  74. package/dist/esm/internal/channel.js.map +1 -1
  75. package/dist/esm/internal/config.js.map +1 -1
  76. package/dist/esm/internal/core-effect.js +47 -7
  77. package/dist/esm/internal/core-effect.js.map +1 -1
  78. package/dist/esm/internal/core.js +7 -3
  79. package/dist/esm/internal/core.js.map +1 -1
  80. package/dist/esm/internal/fiberRuntime.js +26 -14
  81. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  82. package/dist/esm/internal/layer/circular.js +4 -1
  83. package/dist/esm/internal/layer/circular.js.map +1 -1
  84. package/dist/esm/internal/layer.js +10 -1
  85. package/dist/esm/internal/layer.js.map +1 -1
  86. package/dist/esm/internal/runtime.js +7 -4
  87. package/dist/esm/internal/runtime.js.map +1 -1
  88. package/dist/esm/internal/stream.js +23 -7
  89. package/dist/esm/internal/stream.js.map +1 -1
  90. package/dist/esm/internal/tracer.js +29 -0
  91. package/dist/esm/internal/tracer.js.map +1 -1
  92. package/dist/esm/internal/version.js +1 -1
  93. package/package.json +1 -1
  94. package/src/Array.ts +214 -0
  95. package/src/Cause.ts +17 -0
  96. package/src/Chunk.ts +30 -0
  97. package/src/Config.ts +4 -3
  98. package/src/Data.ts +121 -48
  99. package/src/Effect.ts +40 -0
  100. package/src/Stream.ts +31 -1
  101. package/src/Tracer.ts +1 -0
  102. package/src/internal/cause.ts +70 -52
  103. package/src/internal/channel.ts +32 -14
  104. package/src/internal/config.ts +1 -1
  105. package/src/internal/core-effect.ts +74 -25
  106. package/src/internal/core.ts +8 -3
  107. package/src/internal/fiberRuntime.ts +22 -11
  108. package/src/internal/layer/circular.ts +4 -2
  109. package/src/internal/layer.ts +37 -14
  110. package/src/internal/runtime.ts +9 -4
  111. package/src/internal/stream.ts +37 -13
  112. package/src/internal/tracer.ts +21 -0
  113. package/src/internal/version.ts +1 -1
@@ -173,12 +173,16 @@ class FiberFailureImpl extends Error implements Runtime.FiberFailure {
173
173
  const prettyErrors = InternalCause.prettyErrors(cause)
174
174
  if (prettyErrors.length > 0) {
175
175
  const head = prettyErrors[0]
176
- this.name = head.message.split(":")[0]
177
- this.message = head.message.substring(this.name.length + 2)
178
- this.stack = InternalCause.pretty(cause)
176
+ this.name = head.name
177
+ this.message = head.message
178
+ this.stack = head.stack!
179
179
  }
180
180
 
181
181
  this.name = `(FiberFailure) ${this.name}`
182
+
183
+ if (this.message === undefined || this.message.length === 0) {
184
+ this.message = "An error has occurred"
185
+ }
182
186
  }
183
187
 
184
188
  toJSON(): unknown {
@@ -187,8 +191,9 @@ class FiberFailureImpl extends Error implements Runtime.FiberFailure {
187
191
  cause: this[FiberFailureCauseId].toJSON()
188
192
  }
189
193
  }
194
+
190
195
  toString(): string {
191
- return "(FiberFailure) " + InternalCause.pretty(this[FiberFailureCauseId])
196
+ return "(FiberFailure) " + (this.stack ?? this.message)
192
197
  }
193
198
  [Inspectable.NodeInspectSymbol](): unknown {
194
199
  return this.toString()
@@ -50,6 +50,7 @@ import * as SinkEndReason from "./stream/sinkEndReason.js"
50
50
  import * as ZipAllState from "./stream/zipAllState.js"
51
51
  import * as ZipChunksState from "./stream/zipChunksState.js"
52
52
  import * as InternalTake from "./take.js"
53
+ import * as InternalTracer from "./tracer.js"
53
54
 
54
55
  /** @internal */
55
56
  const StreamSymbolKey = "effect/Stream"
@@ -6541,16 +6542,30 @@ export const toQueueOfElements = dual<
6541
6542
  ))
6542
6543
 
6543
6544
  /** @internal */
6544
- export const toReadableStream = <A, E>(source: Stream.Stream<A, E>) => {
6545
- let pull: Effect.Effect<void>
6545
+ export const toReadableStream = <A, E>(self: Stream.Stream<A, E>) =>
6546
+ toReadableStreamRuntime(self, Runtime.defaultRuntime)
6547
+
6548
+ /** @internal */
6549
+ export const toReadableStreamEffect = <A, E, R>(self: Stream.Stream<A, E, R>) =>
6550
+ Effect.map(Effect.runtime<R>(), (runtime) => toReadableStreamRuntime(self, runtime))
6551
+
6552
+ /** @internal */
6553
+ export const toReadableStreamRuntime = dual<
6554
+ <XR>(runtime: Runtime.Runtime<XR>) => <A, E, R extends XR>(self: Stream.Stream<A, E, R>) => ReadableStream<A>,
6555
+ <A, E, XR, R extends XR>(self: Stream.Stream<A, E, R>, runtime: Runtime.Runtime<XR>) => ReadableStream<A>
6556
+ >(2, <A, E, XR, R extends XR>(self: Stream.Stream<A, E, R>, runtime: Runtime.Runtime<XR>): ReadableStream<A> => {
6557
+ const runSync = Runtime.runSync(runtime)
6558
+ const runPromise = Runtime.runPromise(runtime)
6559
+
6560
+ let pull: Effect.Effect<void, never, R>
6546
6561
  let scope: Scope.CloseableScope
6547
6562
  return new ReadableStream<A>({
6548
6563
  start(controller) {
6549
- scope = Effect.runSync(Scope.make())
6564
+ scope = runSync(Scope.make())
6550
6565
  pull = pipe(
6551
- toPull(source),
6552
- Scope.use(scope),
6553
- Effect.runSync,
6566
+ toPull(self),
6567
+ Scope.extend(scope),
6568
+ runSync,
6554
6569
  Effect.tap((chunk) =>
6555
6570
  Effect.sync(() => {
6556
6571
  Chunk.map(chunk, (a) => {
@@ -6573,13 +6588,13 @@ export const toReadableStream = <A, E>(source: Stream.Stream<A, E>) => {
6573
6588
  )
6574
6589
  },
6575
6590
  pull() {
6576
- return Effect.runPromise(pull)
6591
+ return runPromise(pull)
6577
6592
  },
6578
6593
  cancel() {
6579
- return Effect.runPromise(Scope.close(scope, Exit.void))
6594
+ return runPromise(Scope.close(scope, Exit.void))
6580
6595
  }
6581
6596
  })
6582
- }
6597
+ })
6583
6598
 
6584
6599
  /** @internal */
6585
6600
  export const transduce = dual<
@@ -6801,17 +6816,26 @@ export const whenEffect = dual<
6801
6816
  )
6802
6817
 
6803
6818
  /** @internal */
6804
- export const withSpan = dual<
6819
+ export const withSpan: {
6805
6820
  (
6806
6821
  name: string,
6807
6822
  options?: Tracer.SpanOptions
6808
- ) => <A, E, R>(self: Stream.Stream<A, E, R>) => Stream.Stream<A, E, Exclude<R, Tracer.ParentSpan>>,
6823
+ ): <A, E, R>(self: Stream.Stream<A, E, R>) => Stream.Stream<A, E, Exclude<R, Tracer.ParentSpan>>
6809
6824
  <A, E, R>(
6810
6825
  self: Stream.Stream<A, E, R>,
6811
6826
  name: string,
6812
6827
  options?: Tracer.SpanOptions
6813
- ) => Stream.Stream<A, E, Exclude<R, Tracer.ParentSpan>>
6814
- >(3, (self, name, options) => new StreamImpl(channel.withSpan(toChannel(self), name, options)))
6828
+ ): Stream.Stream<A, E, Exclude<R, Tracer.ParentSpan>>
6829
+ } = function() {
6830
+ const dataFirst = typeof arguments[0] !== "string"
6831
+ const name = dataFirst ? arguments[1] : arguments[0]
6832
+ const options = InternalTracer.addSpanStackTrace(dataFirst ? arguments[2] : arguments[1])
6833
+ if (dataFirst) {
6834
+ const self = arguments[0]
6835
+ return new StreamImpl(channel.withSpan(toChannel(self), name, options))
6836
+ }
6837
+ return (self: Stream.Stream<any, any, any>) => new StreamImpl(channel.withSpan(toChannel(self), name, options))
6838
+ } as any
6815
6839
 
6816
6840
  /** @internal */
6817
6841
  export const zip = dual<
@@ -106,3 +106,24 @@ export const externalSpan = (options: {
106
106
  sampled: options.sampled ?? true,
107
107
  context: options.context ?? Context.empty()
108
108
  })
109
+
110
+ /** @internal */
111
+ export const addSpanStackTrace = (options: Tracer.SpanOptions | undefined): Tracer.SpanOptions => {
112
+ if (options?.captureStackTrace === false) {
113
+ return options
114
+ } else if (options?.captureStackTrace !== undefined && typeof options.captureStackTrace !== "boolean") {
115
+ return options
116
+ }
117
+ const limit = Error.stackTraceLimit
118
+ Error.stackTraceLimit = 3
119
+ const traceError = new Error()
120
+ Error.stackTraceLimit = limit
121
+ if (traceError.stack === undefined) {
122
+ return { ...options, captureStackTrace: false }
123
+ }
124
+ const stack = traceError.stack.split("\n")
125
+ if (!stack[3]) {
126
+ return { ...options, captureStackTrace: false }
127
+ }
128
+ return { ...options, captureStackTrace: stack[3].trim() }
129
+ }
@@ -1,4 +1,4 @@
1
- let moduleVersion = "3.1.6"
1
+ let moduleVersion = "3.2.1"
2
2
 
3
3
  export const getCurrentVersion = () => moduleVersion
4
4