effect 3.1.6 → 3.2.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 (105) 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/Data.js +11 -8
  8. package/dist/cjs/Data.js.map +1 -1
  9. package/dist/cjs/Effect.js +20 -3
  10. package/dist/cjs/Effect.js.map +1 -1
  11. package/dist/cjs/Stream.js +19 -1
  12. package/dist/cjs/Stream.js.map +1 -1
  13. package/dist/cjs/Tracer.js.map +1 -1
  14. package/dist/cjs/internal/cause.js +55 -48
  15. package/dist/cjs/internal/cause.js.map +1 -1
  16. package/dist/cjs/internal/channel.js +11 -1
  17. package/dist/cjs/internal/channel.js.map +1 -1
  18. package/dist/cjs/internal/core-effect.js +51 -9
  19. package/dist/cjs/internal/core-effect.js.map +1 -1
  20. package/dist/cjs/internal/core.js +8 -4
  21. package/dist/cjs/internal/core.js.map +1 -1
  22. package/dist/cjs/internal/fiberRuntime.js +27 -14
  23. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  24. package/dist/cjs/internal/layer/circular.js +4 -1
  25. package/dist/cjs/internal/layer/circular.js.map +1 -1
  26. package/dist/cjs/internal/layer.js +11 -1
  27. package/dist/cjs/internal/layer.js.map +1 -1
  28. package/dist/cjs/internal/runtime.js +7 -4
  29. package/dist/cjs/internal/runtime.js.map +1 -1
  30. package/dist/cjs/internal/stream.js +27 -9
  31. package/dist/cjs/internal/stream.js.map +1 -1
  32. package/dist/cjs/internal/tracer.js +31 -1
  33. package/dist/cjs/internal/tracer.js.map +1 -1
  34. package/dist/cjs/internal/version.js +1 -1
  35. package/dist/dts/Array.d.ts +199 -0
  36. package/dist/dts/Array.d.ts.map +1 -1
  37. package/dist/dts/Cause.d.ts +15 -0
  38. package/dist/dts/Cause.d.ts.map +1 -1
  39. package/dist/dts/Chunk.d.ts +20 -0
  40. package/dist/dts/Chunk.d.ts.map +1 -1
  41. package/dist/dts/Data.d.ts +46 -13
  42. package/dist/dts/Data.d.ts.map +1 -1
  43. package/dist/dts/Effect.d.ts +36 -0
  44. package/dist/dts/Effect.d.ts.map +1 -1
  45. package/dist/dts/Stream.d.ts +23 -1
  46. package/dist/dts/Stream.d.ts.map +1 -1
  47. package/dist/dts/Tracer.d.ts +1 -0
  48. package/dist/dts/Tracer.d.ts.map +1 -1
  49. package/dist/dts/internal/core-effect.d.ts +7 -1
  50. package/dist/dts/internal/core-effect.d.ts.map +1 -1
  51. package/dist/dts/internal/core.d.ts.map +1 -1
  52. package/dist/dts/internal/stream.d.ts.map +1 -1
  53. package/dist/esm/Array.js +182 -0
  54. package/dist/esm/Array.js.map +1 -1
  55. package/dist/esm/Cause.js +7 -0
  56. package/dist/esm/Cause.js.map +1 -1
  57. package/dist/esm/Chunk.js +16 -0
  58. package/dist/esm/Chunk.js.map +1 -1
  59. package/dist/esm/Data.js +11 -8
  60. package/dist/esm/Data.js.map +1 -1
  61. package/dist/esm/Effect.js +17 -0
  62. package/dist/esm/Effect.js.map +1 -1
  63. package/dist/esm/Stream.js +18 -0
  64. package/dist/esm/Stream.js.map +1 -1
  65. package/dist/esm/Tracer.js.map +1 -1
  66. package/dist/esm/internal/cause.js +54 -47
  67. package/dist/esm/internal/cause.js.map +1 -1
  68. package/dist/esm/internal/channel.js +10 -1
  69. package/dist/esm/internal/channel.js.map +1 -1
  70. package/dist/esm/internal/core-effect.js +47 -7
  71. package/dist/esm/internal/core-effect.js.map +1 -1
  72. package/dist/esm/internal/core.js +7 -3
  73. package/dist/esm/internal/core.js.map +1 -1
  74. package/dist/esm/internal/fiberRuntime.js +26 -14
  75. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  76. package/dist/esm/internal/layer/circular.js +4 -1
  77. package/dist/esm/internal/layer/circular.js.map +1 -1
  78. package/dist/esm/internal/layer.js +10 -1
  79. package/dist/esm/internal/layer.js.map +1 -1
  80. package/dist/esm/internal/runtime.js +7 -4
  81. package/dist/esm/internal/runtime.js.map +1 -1
  82. package/dist/esm/internal/stream.js +23 -7
  83. package/dist/esm/internal/stream.js.map +1 -1
  84. package/dist/esm/internal/tracer.js +29 -0
  85. package/dist/esm/internal/tracer.js.map +1 -1
  86. package/dist/esm/internal/version.js +1 -1
  87. package/package.json +1 -1
  88. package/src/Array.ts +214 -0
  89. package/src/Cause.ts +17 -0
  90. package/src/Chunk.ts +30 -0
  91. package/src/Data.ts +121 -48
  92. package/src/Effect.ts +40 -0
  93. package/src/Stream.ts +31 -1
  94. package/src/Tracer.ts +1 -0
  95. package/src/internal/cause.ts +70 -52
  96. package/src/internal/channel.ts +32 -14
  97. package/src/internal/core-effect.ts +74 -25
  98. package/src/internal/core.ts +8 -3
  99. package/src/internal/fiberRuntime.ts +22 -11
  100. package/src/internal/layer/circular.ts +4 -2
  101. package/src/internal/layer.ts +37 -14
  102. package/src/internal/runtime.ts +9 -4
  103. package/src/internal/stream.ts +37 -13
  104. package/src/internal/tracer.ts +21 -0
  105. package/src/internal/version.ts +1 -1
@@ -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.0"
2
2
 
3
3
  export const getCurrentVersion = () => moduleVersion
4
4