effect 3.1.5 → 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.
- package/dist/cjs/Array.js +139 -2
- package/dist/cjs/Array.js.map +1 -1
- package/dist/cjs/Cause.js +8 -1
- package/dist/cjs/Cause.js.map +1 -1
- package/dist/cjs/Chunk.js +18 -1
- package/dist/cjs/Chunk.js.map +1 -1
- package/dist/cjs/Config.js.map +1 -1
- package/dist/cjs/Data.js +11 -8
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/Effect.js +106 -18
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Stream.js +19 -1
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/Tracer.js.map +1 -1
- package/dist/cjs/internal/cause.js +55 -48
- package/dist/cjs/internal/cause.js.map +1 -1
- package/dist/cjs/internal/channel.js +11 -1
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +51 -9
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core.js +8 -4
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +27 -14
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/layer/circular.js +4 -1
- package/dist/cjs/internal/layer/circular.js.map +1 -1
- package/dist/cjs/internal/layer.js +11 -1
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/runtime.js +9 -4
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/schedule.js +2 -2
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/stream.js +27 -9
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/tracer.js +31 -1
- package/dist/cjs/internal/tracer.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Array.d.ts +199 -0
- package/dist/dts/Array.d.ts.map +1 -1
- package/dist/dts/Cause.d.ts +15 -0
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Chunk.d.ts +20 -0
- package/dist/dts/Chunk.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +6 -2
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/Data.d.ts +46 -13
- package/dist/dts/Data.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +122 -15
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +23 -1
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/Tracer.d.ts +1 -0
- package/dist/dts/Tracer.d.ts.map +1 -1
- package/dist/dts/internal/core-effect.d.ts +7 -1
- package/dist/dts/internal/core-effect.d.ts.map +1 -1
- package/dist/dts/internal/core.d.ts.map +1 -1
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Array.js +182 -0
- package/dist/esm/Array.js.map +1 -1
- package/dist/esm/Cause.js +7 -0
- package/dist/esm/Cause.js.map +1 -1
- package/dist/esm/Chunk.js +16 -0
- package/dist/esm/Chunk.js.map +1 -1
- package/dist/esm/Config.js.map +1 -1
- package/dist/esm/Data.js +11 -8
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/Effect.js +103 -15
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Stream.js +18 -0
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/Tracer.js.map +1 -1
- package/dist/esm/internal/cause.js +54 -47
- package/dist/esm/internal/cause.js.map +1 -1
- package/dist/esm/internal/channel.js +10 -1
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/core-effect.js +47 -7
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +7 -3
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +26 -14
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/layer/circular.js +4 -1
- package/dist/esm/internal/layer/circular.js.map +1 -1
- package/dist/esm/internal/layer.js +10 -1
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/runtime.js +9 -4
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/schedule.js +2 -2
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/stream.js +23 -7
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/tracer.js +29 -0
- package/dist/esm/internal/tracer.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/Array.ts +214 -0
- package/src/Cause.ts +17 -0
- package/src/Chunk.ts +30 -0
- package/src/Config.ts +8 -6
- package/src/Data.ts +121 -48
- package/src/Effect.ts +126 -15
- package/src/Stream.ts +31 -1
- package/src/Tracer.ts +1 -0
- package/src/internal/cause.ts +70 -52
- package/src/internal/channel.ts +32 -14
- package/src/internal/core-effect.ts +74 -25
- package/src/internal/core.ts +8 -3
- package/src/internal/fiberRuntime.ts +22 -11
- package/src/internal/layer/circular.ts +4 -2
- package/src/internal/layer.ts +37 -14
- package/src/internal/runtime.ts +10 -5
- package/src/internal/schedule.ts +2 -2
- package/src/internal/stream.ts +37 -13
- package/src/internal/tracer.ts +21 -0
- package/src/internal/version.ts +1 -1
|
@@ -1335,7 +1335,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
1335
1335
|
internalCause.sequential(internalCause.die(e), internalCause.interrupt(FiberId.none))
|
|
1336
1336
|
)
|
|
1337
1337
|
} else {
|
|
1338
|
-
cur = core.
|
|
1338
|
+
cur = core.die(e)
|
|
1339
1339
|
}
|
|
1340
1340
|
}
|
|
1341
1341
|
}
|
|
@@ -3622,8 +3622,9 @@ export const interruptWhenPossible = dual<
|
|
|
3622
3622
|
export const makeSpanScoped = (
|
|
3623
3623
|
name: string,
|
|
3624
3624
|
options?: Tracer.SpanOptions | undefined
|
|
3625
|
-
): Effect.Effect<Tracer.Span, never, Scope.Scope> =>
|
|
3626
|
-
|
|
3625
|
+
): Effect.Effect<Tracer.Span, never, Scope.Scope> => {
|
|
3626
|
+
options = tracer.addSpanStackTrace(options)
|
|
3627
|
+
return core.uninterruptible(
|
|
3627
3628
|
core.withFiberRuntime((fiber) => {
|
|
3628
3629
|
const scope = Context.unsafeGet(fiber.getFiberRef(core.currentContext), scopeTag)
|
|
3629
3630
|
const span = internalEffect.unsafeMakeSpan(fiber, name, options)
|
|
@@ -3641,27 +3642,37 @@ export const makeSpanScoped = (
|
|
|
3641
3642
|
)
|
|
3642
3643
|
})
|
|
3643
3644
|
)
|
|
3645
|
+
}
|
|
3644
3646
|
|
|
3645
3647
|
/* @internal */
|
|
3646
3648
|
export const withTracerScoped = (value: Tracer.Tracer): Effect.Effect<void, never, Scope.Scope> =>
|
|
3647
3649
|
fiberRefLocallyScopedWith(defaultServices.currentServices, Context.add(tracer.tracerTag, value))
|
|
3648
3650
|
|
|
3649
3651
|
/** @internal */
|
|
3650
|
-
export const withSpanScoped
|
|
3652
|
+
export const withSpanScoped: {
|
|
3651
3653
|
(
|
|
3652
3654
|
name: string,
|
|
3653
3655
|
options?: Tracer.SpanOptions
|
|
3654
|
-
)
|
|
3656
|
+
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Scope.Scope | Exclude<R, Tracer.ParentSpan>>
|
|
3655
3657
|
<A, E, R>(
|
|
3656
3658
|
self: Effect.Effect<A, E, R>,
|
|
3657
3659
|
name: string,
|
|
3658
3660
|
options?: Tracer.SpanOptions
|
|
3659
|
-
)
|
|
3660
|
-
|
|
3661
|
-
|
|
3662
|
-
|
|
3661
|
+
): Effect.Effect<A, E, Scope.Scope | Exclude<R, Tracer.ParentSpan>>
|
|
3662
|
+
} = function() {
|
|
3663
|
+
const dataFirst = typeof arguments[0] !== "string"
|
|
3664
|
+
const name = dataFirst ? arguments[1] : arguments[0]
|
|
3665
|
+
const options = tracer.addSpanStackTrace(dataFirst ? arguments[2] : arguments[1])
|
|
3666
|
+
if (dataFirst) {
|
|
3667
|
+
const self = arguments[0]
|
|
3668
|
+
return core.flatMap(
|
|
3669
|
+
makeSpanScoped(name, tracer.addSpanStackTrace(options)),
|
|
3670
|
+
(span) => internalEffect.provideService(self, tracer.spanTag, span)
|
|
3671
|
+
)
|
|
3672
|
+
}
|
|
3673
|
+
return (self: Effect.Effect<any, any, any>) =>
|
|
3663
3674
|
core.flatMap(
|
|
3664
|
-
makeSpanScoped(name, options),
|
|
3675
|
+
makeSpanScoped(name, tracer.addSpanStackTrace(options)),
|
|
3665
3676
|
(span) => internalEffect.provideService(self, tracer.spanTag, span)
|
|
3666
3677
|
)
|
|
3667
|
-
|
|
3678
|
+
} as any
|
|
@@ -196,8 +196,9 @@ export const span = (
|
|
|
196
196
|
| ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>)
|
|
197
197
|
| undefined
|
|
198
198
|
}
|
|
199
|
-
): Layer.Layer<Tracer.ParentSpan> =>
|
|
200
|
-
|
|
199
|
+
): Layer.Layer<Tracer.ParentSpan> => {
|
|
200
|
+
options = tracer.addSpanStackTrace(options) as any
|
|
201
|
+
return layer.scoped(
|
|
201
202
|
tracer.spanTag,
|
|
202
203
|
options?.onEnd
|
|
203
204
|
? core.tap(
|
|
@@ -206,6 +207,7 @@ export const span = (
|
|
|
206
207
|
)
|
|
207
208
|
: fiberRuntime.makeSpanScoped(name, options)
|
|
208
209
|
)
|
|
210
|
+
}
|
|
209
211
|
|
|
210
212
|
/** @internal */
|
|
211
213
|
export const setTracer = (tracer: Tracer.Tracer): Layer.Layer<never> =>
|
package/src/internal/layer.ts
CHANGED
|
@@ -1113,7 +1113,7 @@ export const unwrapScoped = <A, E1, R1, E, R>(
|
|
|
1113
1113
|
// -----------------------------------------------------------------------------
|
|
1114
1114
|
|
|
1115
1115
|
/** @internal */
|
|
1116
|
-
export const withSpan
|
|
1116
|
+
export const withSpan: {
|
|
1117
1117
|
(
|
|
1118
1118
|
name: string,
|
|
1119
1119
|
options?: Tracer.SpanOptions & {
|
|
@@ -1121,7 +1121,7 @@ export const withSpan = dual<
|
|
|
1121
1121
|
| ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>)
|
|
1122
1122
|
| undefined
|
|
1123
1123
|
}
|
|
1124
|
-
)
|
|
1124
|
+
): <A, E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A, E, Exclude<R, Tracer.ParentSpan>>
|
|
1125
1125
|
<A, E, R>(
|
|
1126
1126
|
self: Layer.Layer<A, E, R>,
|
|
1127
1127
|
name: string,
|
|
@@ -1130,19 +1130,42 @@ export const withSpan = dual<
|
|
|
1130
1130
|
| ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>)
|
|
1131
1131
|
| undefined
|
|
1132
1132
|
}
|
|
1133
|
-
)
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1133
|
+
): Layer.Layer<A, E, Exclude<R, Tracer.ParentSpan>>
|
|
1134
|
+
} = function() {
|
|
1135
|
+
const dataFirst = typeof arguments[0] !== "string"
|
|
1136
|
+
const name = dataFirst ? arguments[1] : arguments[0]
|
|
1137
|
+
const options = tracer.addSpanStackTrace(dataFirst ? arguments[2] : arguments[1]) as Tracer.SpanOptions & {
|
|
1138
|
+
readonly onEnd?:
|
|
1139
|
+
| ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>)
|
|
1140
|
+
| undefined
|
|
1141
|
+
}
|
|
1142
|
+
if (dataFirst) {
|
|
1143
|
+
const self = arguments[0]
|
|
1144
|
+
return unwrapScoped(
|
|
1145
|
+
core.map(
|
|
1146
|
+
options?.onEnd
|
|
1147
|
+
? core.tap(
|
|
1148
|
+
fiberRuntime.makeSpanScoped(name, options),
|
|
1149
|
+
(span) => fiberRuntime.addFinalizer((exit) => options.onEnd!(span, exit))
|
|
1150
|
+
)
|
|
1151
|
+
: fiberRuntime.makeSpanScoped(name, options),
|
|
1152
|
+
(span) => withParentSpan(self, span)
|
|
1153
|
+
)
|
|
1144
1154
|
)
|
|
1145
|
-
|
|
1155
|
+
}
|
|
1156
|
+
return (self: Layer.Layer<any, any, any>) =>
|
|
1157
|
+
unwrapScoped(
|
|
1158
|
+
core.map(
|
|
1159
|
+
options?.onEnd
|
|
1160
|
+
? core.tap(
|
|
1161
|
+
fiberRuntime.makeSpanScoped(name, options),
|
|
1162
|
+
(span) => fiberRuntime.addFinalizer((exit) => options.onEnd!(span, exit))
|
|
1163
|
+
)
|
|
1164
|
+
: fiberRuntime.makeSpanScoped(name, options),
|
|
1165
|
+
(span) => withParentSpan(self, span)
|
|
1166
|
+
)
|
|
1167
|
+
)
|
|
1168
|
+
} as any
|
|
1146
1169
|
|
|
1147
1170
|
/** @internal */
|
|
1148
1171
|
export const withParentSpan = dual<
|
package/src/internal/runtime.ts
CHANGED
|
@@ -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.
|
|
177
|
-
this.message = head.message
|
|
178
|
-
this.stack =
|
|
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) " +
|
|
196
|
+
return "(FiberFailure) " + (this.stack ?? this.message)
|
|
192
197
|
}
|
|
193
198
|
[Inspectable.NodeInspectSymbol](): unknown {
|
|
194
199
|
return this.toString()
|
|
@@ -290,7 +295,7 @@ export const unsafeRunPromiseExit = <R>(runtime: Runtime.Runtime<R>) =>
|
|
|
290
295
|
} else {
|
|
291
296
|
options.signal.addEventListener("abort", () => {
|
|
292
297
|
fiber.unsafeInterruptAsFork(fiber.id())
|
|
293
|
-
})
|
|
298
|
+
}, { once: true })
|
|
294
299
|
}
|
|
295
300
|
}
|
|
296
301
|
})
|
package/src/internal/schedule.ts
CHANGED
|
@@ -672,7 +672,7 @@ export const exponential = (
|
|
|
672
672
|
): Schedule.Schedule<Duration.Duration> => {
|
|
673
673
|
const base = Duration.decode(baseInput)
|
|
674
674
|
return delayedSchedule(
|
|
675
|
-
map(forever, (i) => Duration.times(base, Math.
|
|
675
|
+
map(forever, (i) => Duration.times(base, Math.pow(factor, i)))
|
|
676
676
|
)
|
|
677
677
|
}
|
|
678
678
|
|
|
@@ -1060,7 +1060,7 @@ export const modifyDelayEffect = dual<
|
|
|
1060
1060
|
const oldStart = Intervals.start(intervals)
|
|
1061
1061
|
const newStart = now + Duration.toMillis(duration)
|
|
1062
1062
|
const delta = newStart - oldStart
|
|
1063
|
-
const newEnd = Math.
|
|
1063
|
+
const newEnd = Math.max(0, Intervals.end(intervals) + delta)
|
|
1064
1064
|
const newInterval = Interval.make(newStart, newEnd)
|
|
1065
1065
|
return [state, out, ScheduleDecision.continueWith(newInterval)] as const
|
|
1066
1066
|
})
|
package/src/internal/stream.ts
CHANGED
|
@@ -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>(
|
|
6545
|
-
|
|
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 =
|
|
6564
|
+
scope = runSync(Scope.make())
|
|
6550
6565
|
pull = pipe(
|
|
6551
|
-
toPull(
|
|
6552
|
-
Scope.
|
|
6553
|
-
|
|
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
|
|
6591
|
+
return runPromise(pull)
|
|
6577
6592
|
},
|
|
6578
6593
|
cancel() {
|
|
6579
|
-
return
|
|
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
|
|
6819
|
+
export const withSpan: {
|
|
6805
6820
|
(
|
|
6806
6821
|
name: string,
|
|
6807
6822
|
options?: Tracer.SpanOptions
|
|
6808
|
-
)
|
|
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
|
-
)
|
|
6814
|
-
|
|
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<
|
package/src/internal/tracer.ts
CHANGED
|
@@ -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
|
+
}
|
package/src/internal/version.ts
CHANGED