effect 3.11.10 → 3.12.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.
- package/dist/cjs/Context.js +28 -1
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Cron.js +75 -24
- package/dist/cjs/Cron.js.map +1 -1
- package/dist/cjs/Effect.js +3044 -932
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Encoding.js +43 -2
- package/dist/cjs/Encoding.js.map +1 -1
- package/dist/cjs/GlobalValue.js +8 -6
- package/dist/cjs/GlobalValue.js.map +1 -1
- package/dist/cjs/HashMap.js +2 -2
- package/dist/cjs/HashMap.js.map +1 -1
- package/dist/cjs/Request.js +3 -3
- package/dist/cjs/Request.js.map +1 -1
- package/dist/cjs/RequestBlock.js +7 -7
- package/dist/cjs/RequestBlock.js.map +1 -1
- package/dist/cjs/Runtime.js.map +1 -1
- package/dist/cjs/Schedule.js +2 -2
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/Schema.js +70 -14
- package/dist/cjs/Schema.js.map +1 -1
- package/dist/cjs/Stream.js +5 -5
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/Tracer.js +6 -1
- package/dist/cjs/Tracer.js.map +1 -1
- package/dist/cjs/internal/cause.js +10 -4
- package/dist/cjs/internal/cause.js.map +1 -1
- package/dist/cjs/internal/channel.js +3 -3
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/context.js +12 -1
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +30 -23
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core.js +28 -46
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/defaultServices.js +2 -2
- package/dist/cjs/internal/defaultServices.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +4 -4
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/encoding/common.js +20 -2
- package/dist/cjs/internal/encoding/common.js.map +1 -1
- package/dist/cjs/internal/fiberRefs/patch.js +5 -5
- package/dist/cjs/internal/fiberRefs/patch.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +39 -36
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/fiberScope.js.map +1 -1
- package/dist/cjs/internal/layer/circular.js +2 -2
- package/dist/cjs/internal/layer/circular.js.map +1 -1
- package/dist/cjs/internal/logSpan.js +10 -3
- package/dist/cjs/internal/logSpan.js.map +1 -1
- package/dist/cjs/internal/logger-circular.js +2 -2
- package/dist/cjs/internal/logger-circular.js.map +1 -1
- package/dist/cjs/internal/logger.js +43 -117
- package/dist/cjs/internal/logger.js.map +1 -1
- package/dist/cjs/internal/metric.js +3 -3
- package/dist/cjs/internal/metric.js.map +1 -1
- package/dist/cjs/internal/reloadable.js +7 -7
- package/dist/cjs/internal/reloadable.js.map +1 -1
- package/dist/cjs/internal/resource.js +2 -2
- package/dist/cjs/internal/resource.js.map +1 -1
- package/dist/cjs/internal/runtime.js +7 -7
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/schedule.js +4 -4
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/scopedCache.js +9 -9
- package/dist/cjs/internal/scopedCache.js.map +1 -1
- package/dist/cjs/internal/stream.js +28 -28
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/subscriptionRef.js +4 -4
- package/dist/cjs/internal/subscriptionRef.js.map +1 -1
- package/dist/cjs/internal/synchronizedRef.js.map +1 -1
- package/dist/cjs/internal/tracer.js +6 -1
- package/dist/cjs/internal/tracer.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/cjs/internal/version.js.map +1 -1
- package/dist/dts/Context.d.ts +29 -0
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Cron.d.ts +30 -2
- package/dist/dts/Cron.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +6532 -2037
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Encoding.d.ts +50 -0
- package/dist/dts/Encoding.d.ts.map +1 -1
- package/dist/dts/GlobalValue.d.ts.map +1 -1
- package/dist/dts/Runtime.d.ts +11 -1
- package/dist/dts/Runtime.d.ts.map +1 -1
- package/dist/dts/Schedule.d.ts +27 -3
- package/dist/dts/Schedule.d.ts.map +1 -1
- package/dist/dts/Schema.d.ts +39 -0
- package/dist/dts/Schema.d.ts.map +1 -1
- package/dist/dts/Tracer.d.ts +12 -0
- package/dist/dts/Tracer.d.ts.map +1 -1
- package/dist/dts/Utils.d.ts +4 -4
- package/dist/dts/Utils.d.ts.map +1 -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/encoding/common.d.ts.map +1 -1
- package/dist/dts/internal/fiberScope.d.ts.map +1 -1
- package/dist/dts/internal/logger.d.ts +1 -1
- package/dist/dts/internal/logger.d.ts.map +1 -1
- package/dist/esm/Context.js +27 -0
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Cron.js +72 -22
- package/dist/esm/Cron.js.map +1 -1
- package/dist/esm/Effect.js +3040 -929
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Encoding.js +39 -0
- package/dist/esm/Encoding.js.map +1 -1
- package/dist/esm/GlobalValue.js +8 -6
- package/dist/esm/GlobalValue.js.map +1 -1
- package/dist/esm/HashMap.js +2 -2
- package/dist/esm/HashMap.js.map +1 -1
- package/dist/esm/Request.js +3 -3
- package/dist/esm/Request.js.map +1 -1
- package/dist/esm/RequestBlock.js +7 -7
- package/dist/esm/RequestBlock.js.map +1 -1
- package/dist/esm/Runtime.js.map +1 -1
- package/dist/esm/Schedule.js +2 -2
- package/dist/esm/Schedule.js.map +1 -1
- package/dist/esm/Schema.js +58 -4
- package/dist/esm/Schema.js.map +1 -1
- package/dist/esm/Stream.js +5 -5
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/Tracer.js +5 -0
- package/dist/esm/Tracer.js.map +1 -1
- package/dist/esm/internal/cause.js +10 -4
- package/dist/esm/internal/cause.js.map +1 -1
- package/dist/esm/internal/channel.js +3 -3
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/context.js +10 -0
- package/dist/esm/internal/context.js.map +1 -1
- package/dist/esm/internal/core-effect.js +30 -23
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +24 -41
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/defaultServices.js +2 -2
- package/dist/esm/internal/defaultServices.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +4 -4
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/encoding/common.js +16 -0
- package/dist/esm/internal/encoding/common.js.map +1 -1
- package/dist/esm/internal/fiberRefs/patch.js +5 -5
- package/dist/esm/internal/fiberRefs/patch.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +39 -36
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/fiberScope.js.map +1 -1
- package/dist/esm/internal/layer/circular.js +2 -2
- package/dist/esm/internal/layer/circular.js.map +1 -1
- package/dist/esm/internal/logSpan.js +7 -1
- package/dist/esm/internal/logSpan.js.map +1 -1
- package/dist/esm/internal/logger-circular.js +2 -2
- package/dist/esm/internal/logger-circular.js.map +1 -1
- package/dist/esm/internal/logger.js +44 -118
- package/dist/esm/internal/logger.js.map +1 -1
- package/dist/esm/internal/metric.js +3 -3
- package/dist/esm/internal/metric.js.map +1 -1
- package/dist/esm/internal/reloadable.js +7 -7
- package/dist/esm/internal/reloadable.js.map +1 -1
- package/dist/esm/internal/resource.js +2 -2
- package/dist/esm/internal/resource.js.map +1 -1
- package/dist/esm/internal/runtime.js +7 -7
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/schedule.js +4 -4
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/scopedCache.js +9 -9
- package/dist/esm/internal/scopedCache.js.map +1 -1
- package/dist/esm/internal/stream.js +28 -28
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/subscriptionRef.js +4 -4
- package/dist/esm/internal/subscriptionRef.js.map +1 -1
- package/dist/esm/internal/synchronizedRef.js.map +1 -1
- package/dist/esm/internal/tracer.js +5 -0
- package/dist/esm/internal/tracer.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/dist/esm/internal/version.js.map +1 -1
- package/package.json +2 -2
- package/src/Context.ts +30 -0
- package/src/Cron.ts +85 -19
- package/src/Effect.ts +6671 -2092
- package/src/Encoding.ts +65 -0
- package/src/GlobalValue.ts +8 -6
- package/src/HashMap.ts +2 -2
- package/src/Request.ts +3 -3
- package/src/RequestBlock.ts +7 -7
- package/src/Runtime.ts +12 -4
- package/src/Schedule.ts +27 -3
- package/src/Schema.ts +72 -4
- package/src/Stream.ts +5 -5
- package/src/Tracer.ts +14 -0
- package/src/Utils.ts +4 -4
- package/src/internal/cause.ts +10 -4
- package/src/internal/channel.ts +3 -3
- package/src/internal/context.ts +13 -0
- package/src/internal/core-effect.ts +59 -47
- package/src/internal/core.ts +48 -67
- package/src/internal/defaultServices.ts +10 -10
- package/src/internal/effect/circular.ts +54 -49
- package/src/internal/encoding/common.ts +21 -0
- package/src/internal/fiberRefs/patch.ts +5 -5
- package/src/internal/fiberRuntime.ts +44 -40
- package/src/internal/fiberScope.ts +0 -1
- package/src/internal/layer/circular.ts +2 -2
- package/src/internal/logSpan.ts +8 -1
- package/src/internal/logger-circular.ts +2 -2
- package/src/internal/logger.ts +53 -144
- package/src/internal/metric.ts +3 -3
- package/src/internal/reloadable.ts +10 -10
- package/src/internal/resource.ts +2 -2
- package/src/internal/runtime.ts +8 -8
- package/src/internal/schedule.ts +8 -4
- package/src/internal/scopedCache.ts +23 -23
- package/src/internal/stream.ts +30 -30
- package/src/internal/subscriptionRef.ts +4 -4
- package/src/internal/synchronizedRef.ts +0 -1
- package/src/internal/tracer.ts +6 -0
- package/src/internal/version.ts +1 -1
|
@@ -99,13 +99,11 @@ export const try_: {
|
|
|
99
99
|
evaluate = arg.try
|
|
100
100
|
onFailure = arg.catch
|
|
101
101
|
}
|
|
102
|
-
return core.
|
|
102
|
+
return core.suspend(() => {
|
|
103
103
|
try {
|
|
104
|
-
return evaluate
|
|
104
|
+
return core.succeed(internalCall(evaluate))
|
|
105
105
|
} catch (error) {
|
|
106
|
-
|
|
107
|
-
onFailure ? onFailure(error) : new core.UnknownException(error)
|
|
108
|
-
))
|
|
106
|
+
return core.fail(onFailure ? internalCall(() => onFailure(error)) : new core.UnknownException(error))
|
|
109
107
|
}
|
|
110
108
|
})
|
|
111
109
|
}
|
|
@@ -1600,7 +1598,7 @@ export const tapErrorCause = dual<
|
|
|
1600
1598
|
/* @internal */
|
|
1601
1599
|
export const timed = <A, E, R>(
|
|
1602
1600
|
self: Effect.Effect<A, E, R>
|
|
1603
|
-
): Effect.Effect<[Duration.Duration, A], E, R> => timedWith(self, Clock.currentTimeNanos)
|
|
1601
|
+
): Effect.Effect<[duration: Duration.Duration, result: A], E, R> => timedWith(self, Clock.currentTimeNanos)
|
|
1604
1602
|
|
|
1605
1603
|
/* @internal */
|
|
1606
1604
|
export const timedWith = dual<
|
|
@@ -2020,61 +2018,75 @@ export const linkSpans = dual<
|
|
|
2020
2018
|
|
|
2021
2019
|
const bigint0 = BigInt(0)
|
|
2022
2020
|
|
|
2021
|
+
const filterDisablePropagation: (self: Option.Option<Tracer.AnySpan>) => Option.Option<Tracer.AnySpan> = Option.flatMap(
|
|
2022
|
+
(span) =>
|
|
2023
|
+
Context.get(span.context, internalTracer.DisablePropagation)
|
|
2024
|
+
? span._tag === "Span" ? filterDisablePropagation(span.parent) : Option.none()
|
|
2025
|
+
: Option.some(span)
|
|
2026
|
+
)
|
|
2027
|
+
|
|
2023
2028
|
/** @internal */
|
|
2024
2029
|
export const unsafeMakeSpan = <XA, XE>(
|
|
2025
2030
|
fiber: FiberRuntime<XA, XE>,
|
|
2026
2031
|
name: string,
|
|
2027
2032
|
options: Tracer.SpanOptions
|
|
2028
2033
|
) => {
|
|
2029
|
-
const
|
|
2030
|
-
|
|
2031
|
-
return core.noopSpan(name)
|
|
2032
|
-
}
|
|
2033
|
-
|
|
2034
|
+
const disablePropagation = !fiber.getFiberRef(core.currentTracerEnabled) ||
|
|
2035
|
+
(options.context && Context.get(options.context, internalTracer.DisablePropagation))
|
|
2034
2036
|
const context = fiber.getFiberRef(core.currentContext)
|
|
2035
|
-
const services = fiber.getFiberRef(defaultServices.currentServices)
|
|
2036
|
-
|
|
2037
|
-
const tracer = Context.get(services, internalTracer.tracerTag)
|
|
2038
|
-
const clock = Context.get(services, Clock.Clock)
|
|
2039
|
-
const timingEnabled = fiber.getFiberRef(core.currentTracerTimingEnabled)
|
|
2040
|
-
|
|
2041
|
-
const fiberRefs = fiber.getFiberRefs()
|
|
2042
|
-
const annotationsFromEnv = FiberRefs.get(fiberRefs, core.currentTracerSpanAnnotations)
|
|
2043
|
-
const linksFromEnv = FiberRefs.get(fiberRefs, core.currentTracerSpanLinks)
|
|
2044
|
-
|
|
2045
2037
|
const parent = options.parent
|
|
2046
2038
|
? Option.some(options.parent)
|
|
2047
2039
|
: options.root
|
|
2048
2040
|
? Option.none()
|
|
2049
|
-
: Context.getOption(context, internalTracer.spanTag)
|
|
2050
|
-
|
|
2051
|
-
const links = linksFromEnv._tag === "Some" ?
|
|
2052
|
-
options.links !== undefined ?
|
|
2053
|
-
[
|
|
2054
|
-
...Chunk.toReadonlyArray(linksFromEnv.value),
|
|
2055
|
-
...(options.links ?? [])
|
|
2056
|
-
] :
|
|
2057
|
-
Chunk.toReadonlyArray(linksFromEnv.value) :
|
|
2058
|
-
options.links ?? Arr.empty()
|
|
2059
|
-
|
|
2060
|
-
const span = tracer.span(
|
|
2061
|
-
name,
|
|
2062
|
-
parent,
|
|
2063
|
-
options.context ?? Context.empty(),
|
|
2064
|
-
links,
|
|
2065
|
-
timingEnabled ? clock.unsafeCurrentTimeNanos() : bigint0,
|
|
2066
|
-
options.kind ?? "internal"
|
|
2067
|
-
)
|
|
2041
|
+
: filterDisablePropagation(Context.getOption(context, internalTracer.spanTag))
|
|
2068
2042
|
|
|
2069
|
-
|
|
2070
|
-
internalCause.spanToTrace.set(span, options.captureStackTrace)
|
|
2071
|
-
}
|
|
2043
|
+
let span: Tracer.Span
|
|
2072
2044
|
|
|
2073
|
-
if (
|
|
2074
|
-
|
|
2045
|
+
if (disablePropagation) {
|
|
2046
|
+
span = core.noopSpan({
|
|
2047
|
+
name,
|
|
2048
|
+
parent,
|
|
2049
|
+
context: Context.add(options.context ?? Context.empty(), internalTracer.DisablePropagation, true)
|
|
2050
|
+
})
|
|
2051
|
+
} else {
|
|
2052
|
+
const services = fiber.getFiberRef(defaultServices.currentServices)
|
|
2053
|
+
|
|
2054
|
+
const tracer = Context.get(services, internalTracer.tracerTag)
|
|
2055
|
+
const clock = Context.get(services, Clock.Clock)
|
|
2056
|
+
const timingEnabled = fiber.getFiberRef(core.currentTracerTimingEnabled)
|
|
2057
|
+
|
|
2058
|
+
const fiberRefs = fiber.getFiberRefs()
|
|
2059
|
+
const annotationsFromEnv = FiberRefs.get(fiberRefs, core.currentTracerSpanAnnotations)
|
|
2060
|
+
const linksFromEnv = FiberRefs.get(fiberRefs, core.currentTracerSpanLinks)
|
|
2061
|
+
|
|
2062
|
+
const links = linksFromEnv._tag === "Some" ?
|
|
2063
|
+
options.links !== undefined ?
|
|
2064
|
+
[
|
|
2065
|
+
...Chunk.toReadonlyArray(linksFromEnv.value),
|
|
2066
|
+
...(options.links ?? [])
|
|
2067
|
+
] :
|
|
2068
|
+
Chunk.toReadonlyArray(linksFromEnv.value) :
|
|
2069
|
+
options.links ?? Arr.empty()
|
|
2070
|
+
|
|
2071
|
+
span = tracer.span(
|
|
2072
|
+
name,
|
|
2073
|
+
parent,
|
|
2074
|
+
options.context ?? Context.empty(),
|
|
2075
|
+
links,
|
|
2076
|
+
timingEnabled ? clock.unsafeCurrentTimeNanos() : bigint0,
|
|
2077
|
+
options.kind ?? "internal"
|
|
2078
|
+
)
|
|
2079
|
+
|
|
2080
|
+
if (annotationsFromEnv._tag === "Some") {
|
|
2081
|
+
HashMap.forEach(annotationsFromEnv.value, (value, key) => span.attribute(key, value))
|
|
2082
|
+
}
|
|
2083
|
+
if (options.attributes !== undefined) {
|
|
2084
|
+
Object.entries(options.attributes).forEach(([k, v]) => span.attribute(k, v))
|
|
2085
|
+
}
|
|
2075
2086
|
}
|
|
2076
|
-
|
|
2077
|
-
|
|
2087
|
+
|
|
2088
|
+
if (typeof options.captureStackTrace === "function") {
|
|
2089
|
+
internalCause.spanToTrace.set(span, options.captureStackTrace)
|
|
2078
2090
|
}
|
|
2079
2091
|
|
|
2080
2092
|
return span
|
package/src/internal/core.ts
CHANGED
|
@@ -38,7 +38,7 @@ import type * as Scope from "../Scope.js"
|
|
|
38
38
|
import type * as Tracer from "../Tracer.js"
|
|
39
39
|
import type { NoInfer, NotFunction } from "../Types.js"
|
|
40
40
|
import { internalCall, YieldWrap } from "../Utils.js"
|
|
41
|
-
import * as
|
|
41
|
+
import * as blockedRequests_ from "./blockedRequests.js"
|
|
42
42
|
import * as internalCause from "./cause.js"
|
|
43
43
|
import * as deferred from "./deferred.js"
|
|
44
44
|
import * as internalDiffer from "./differ.js"
|
|
@@ -48,39 +48,13 @@ import type * as FiberRuntime from "./fiberRuntime.js"
|
|
|
48
48
|
import type * as fiberScope from "./fiberScope.js"
|
|
49
49
|
import * as DeferredOpCodes from "./opCodes/deferred.js"
|
|
50
50
|
import * as OpCodes from "./opCodes/effect.js"
|
|
51
|
-
import * as
|
|
51
|
+
import * as runtimeFlags_ from "./runtimeFlags.js"
|
|
52
52
|
import { SingleShotGen } from "./singleShotGen.js"
|
|
53
53
|
|
|
54
54
|
// -----------------------------------------------------------------------------
|
|
55
55
|
// Effect
|
|
56
56
|
// -----------------------------------------------------------------------------
|
|
57
57
|
|
|
58
|
-
/** @internal */
|
|
59
|
-
const EffectErrorSymbolKey = "effect/EffectError"
|
|
60
|
-
|
|
61
|
-
/** @internal */
|
|
62
|
-
export const EffectErrorTypeId = Symbol.for(EffectErrorSymbolKey)
|
|
63
|
-
|
|
64
|
-
/** @internal */
|
|
65
|
-
export type EffectErrorTypeId = typeof EffectErrorTypeId
|
|
66
|
-
|
|
67
|
-
/** @internal */
|
|
68
|
-
export interface EffectError<out E> {
|
|
69
|
-
readonly [EffectErrorTypeId]: EffectErrorTypeId
|
|
70
|
-
readonly _tag: "EffectError"
|
|
71
|
-
readonly cause: Cause.Cause<E>
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/** @internal */
|
|
75
|
-
export const isEffectError = (u: unknown): u is EffectError<unknown> => hasProperty(u, EffectErrorTypeId)
|
|
76
|
-
|
|
77
|
-
/** @internal */
|
|
78
|
-
export const makeEffectError = <E>(cause: Cause.Cause<E>): EffectError<E> => ({
|
|
79
|
-
[EffectErrorTypeId]: EffectErrorTypeId,
|
|
80
|
-
_tag: "EffectError",
|
|
81
|
-
cause
|
|
82
|
-
})
|
|
83
|
-
|
|
84
58
|
/**
|
|
85
59
|
* @internal
|
|
86
60
|
*/
|
|
@@ -677,7 +651,7 @@ export const catchSome = dual<
|
|
|
677
651
|
/* @internal */
|
|
678
652
|
export const checkInterruptible = <A, E, R>(
|
|
679
653
|
f: (isInterruptible: boolean) => Effect.Effect<A, E, R>
|
|
680
|
-
): Effect.Effect<A, E, R> => withFiberRuntime((_, status) => f(
|
|
654
|
+
): Effect.Effect<A, E, R> => withFiberRuntime((_, status) => f(runtimeFlags_.interruption(status.runtimeFlags)))
|
|
681
655
|
|
|
682
656
|
const spanSymbol = Symbol.for("effect/SpanAnnotation")
|
|
683
657
|
const originalSymbol = Symbol.for("effect/OriginalAnnotation")
|
|
@@ -1027,7 +1001,7 @@ export const interruptWith = (fiberId: FiberId.FiberId): Effect.Effect<never> =>
|
|
|
1027
1001
|
/* @internal */
|
|
1028
1002
|
export const interruptible = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> => {
|
|
1029
1003
|
const effect = new EffectPrimitive(OpCodes.OP_UPDATE_RUNTIME_FLAGS) as any
|
|
1030
|
-
effect.effect_instruction_i0 = RuntimeFlagsPatch.enable(
|
|
1004
|
+
effect.effect_instruction_i0 = RuntimeFlagsPatch.enable(runtimeFlags_.Interruption)
|
|
1031
1005
|
effect.effect_instruction_i1 = () => self
|
|
1032
1006
|
return effect
|
|
1033
1007
|
}
|
|
@@ -1038,9 +1012,9 @@ export const interruptibleMask = <A, E, R>(
|
|
|
1038
1012
|
): Effect.Effect<A, E, R> =>
|
|
1039
1013
|
custom(f, function() {
|
|
1040
1014
|
const effect = new EffectPrimitive(OpCodes.OP_UPDATE_RUNTIME_FLAGS) as any
|
|
1041
|
-
effect.effect_instruction_i0 = RuntimeFlagsPatch.enable(
|
|
1015
|
+
effect.effect_instruction_i0 = RuntimeFlagsPatch.enable(runtimeFlags_.Interruption)
|
|
1042
1016
|
effect.effect_instruction_i1 = (oldFlags: RuntimeFlags.RuntimeFlags) =>
|
|
1043
|
-
|
|
1017
|
+
runtimeFlags_.interruption(oldFlags)
|
|
1044
1018
|
? internalCall(() => this.effect_instruction_i0(interruptible))
|
|
1045
1019
|
: internalCall(() => this.effect_instruction_i0(uninterruptible))
|
|
1046
1020
|
return effect
|
|
@@ -1356,7 +1330,7 @@ export const uninterruptible: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.
|
|
|
1356
1330
|
self: Effect.Effect<A, E, R>
|
|
1357
1331
|
): Effect.Effect<A, E, R> => {
|
|
1358
1332
|
const effect = new EffectPrimitive(OpCodes.OP_UPDATE_RUNTIME_FLAGS) as any
|
|
1359
|
-
effect.effect_instruction_i0 = RuntimeFlagsPatch.disable(
|
|
1333
|
+
effect.effect_instruction_i0 = RuntimeFlagsPatch.disable(runtimeFlags_.Interruption)
|
|
1360
1334
|
effect.effect_instruction_i1 = () => self
|
|
1361
1335
|
return effect
|
|
1362
1336
|
}
|
|
@@ -1367,9 +1341,9 @@ export const uninterruptibleMask = <A, E, R>(
|
|
|
1367
1341
|
): Effect.Effect<A, E, R> =>
|
|
1368
1342
|
custom(f, function() {
|
|
1369
1343
|
const effect = new EffectPrimitive(OpCodes.OP_UPDATE_RUNTIME_FLAGS) as any
|
|
1370
|
-
effect.effect_instruction_i0 = RuntimeFlagsPatch.disable(
|
|
1344
|
+
effect.effect_instruction_i0 = RuntimeFlagsPatch.disable(runtimeFlags_.Interruption)
|
|
1371
1345
|
effect.effect_instruction_i1 = (oldFlags: RuntimeFlags.RuntimeFlags) =>
|
|
1372
|
-
|
|
1346
|
+
runtimeFlags_.interruption(oldFlags)
|
|
1373
1347
|
? internalCall(() => this.effect_instruction_i0(interruptible))
|
|
1374
1348
|
: internalCall(() => this.effect_instruction_i0(uninterruptible))
|
|
1375
1349
|
return effect
|
|
@@ -1427,13 +1401,23 @@ export const whileLoop = <A, E, R>(
|
|
|
1427
1401
|
}
|
|
1428
1402
|
|
|
1429
1403
|
/* @internal */
|
|
1430
|
-
export const
|
|
1431
|
-
|
|
1432
|
-
|
|
1404
|
+
export const fromIterator = <Eff extends YieldWrap<Effect.Effect<any, any, any>>, AEff>(
|
|
1405
|
+
iterator: LazyArg<Iterator<Eff, AEff, never>>
|
|
1406
|
+
): Effect.Effect<
|
|
1407
|
+
AEff,
|
|
1408
|
+
[Eff] extends [never] ? never : [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E : never,
|
|
1409
|
+
[Eff] extends [never] ? never : [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R : never
|
|
1410
|
+
> =>
|
|
1411
|
+
suspend(() => {
|
|
1433
1412
|
const effect = new EffectPrimitive(OpCodes.OP_ITERATOR) as any
|
|
1434
|
-
effect.effect_instruction_i0 =
|
|
1413
|
+
effect.effect_instruction_i0 = iterator()
|
|
1435
1414
|
return effect
|
|
1436
1415
|
})
|
|
1416
|
+
|
|
1417
|
+
/* @internal */
|
|
1418
|
+
export const gen: typeof Effect.gen = function() {
|
|
1419
|
+
const f = arguments.length === 1 ? arguments[0] : arguments[1].bind(arguments[0])
|
|
1420
|
+
return fromIterator(() => f(pipe))
|
|
1437
1421
|
}
|
|
1438
1422
|
|
|
1439
1423
|
/* @internal */
|
|
@@ -1894,17 +1878,17 @@ export const requestBlockLocally = <A>(
|
|
|
1894
1878
|
self: BlockedRequests.RequestBlock,
|
|
1895
1879
|
ref: FiberRef.FiberRef<A>,
|
|
1896
1880
|
value: A
|
|
1897
|
-
): BlockedRequests.RequestBlock =>
|
|
1881
|
+
): BlockedRequests.RequestBlock => blockedRequests_.reduce(self, LocallyReducer(ref, value))
|
|
1898
1882
|
|
|
1899
1883
|
const LocallyReducer = <A>(
|
|
1900
1884
|
ref: FiberRef.FiberRef<A>,
|
|
1901
1885
|
value: A
|
|
1902
1886
|
): BlockedRequests.RequestBlock.Reducer<BlockedRequests.RequestBlock> => ({
|
|
1903
|
-
emptyCase: () =>
|
|
1904
|
-
parCase: (left, right) =>
|
|
1905
|
-
seqCase: (left, right) =>
|
|
1887
|
+
emptyCase: () => blockedRequests_.empty,
|
|
1888
|
+
parCase: (left, right) => blockedRequests_.par(left, right),
|
|
1889
|
+
seqCase: (left, right) => blockedRequests_.seq(left, right),
|
|
1906
1890
|
singleCase: (dataSource, blockedRequest) =>
|
|
1907
|
-
|
|
1891
|
+
blockedRequests_.single(
|
|
1908
1892
|
resolverLocally(dataSource, ref, value),
|
|
1909
1893
|
blockedRequest as any
|
|
1910
1894
|
)
|
|
@@ -2007,8 +1991,8 @@ export const fiberRefUnsafeMakeRuntimeFlags = (
|
|
|
2007
1991
|
initial: RuntimeFlags.RuntimeFlags
|
|
2008
1992
|
): FiberRef.FiberRef<RuntimeFlags.RuntimeFlags> =>
|
|
2009
1993
|
fiberRefUnsafeMakePatch(initial, {
|
|
2010
|
-
differ:
|
|
2011
|
-
fork:
|
|
1994
|
+
differ: runtimeFlags_.differ,
|
|
1995
|
+
fork: runtimeFlags_.differ.empty
|
|
2012
1996
|
})
|
|
2013
1997
|
|
|
2014
1998
|
/** @internal */
|
|
@@ -3014,9 +2998,9 @@ export const contextWith = <R0, A>(
|
|
|
3014
2998
|
): Effect.Effect<A, never, R0> => map(context<R0>(), f)
|
|
3015
2999
|
|
|
3016
3000
|
/* @internal */
|
|
3017
|
-
export const contextWithEffect = <
|
|
3018
|
-
f: (context: Context.Context<
|
|
3019
|
-
): Effect.Effect<A, E, R |
|
|
3001
|
+
export const contextWithEffect = <R2, A, E, R>(
|
|
3002
|
+
f: (context: Context.Context<R2>) => Effect.Effect<A, E, R>
|
|
3003
|
+
): Effect.Effect<A, E, R | R2> => flatMap(context<R2>(), f)
|
|
3020
3004
|
|
|
3021
3005
|
/* @internal */
|
|
3022
3006
|
export const provideContext = dual<
|
|
@@ -3040,17 +3024,17 @@ export const provideSomeContext = dual<
|
|
|
3040
3024
|
|
|
3041
3025
|
/* @internal */
|
|
3042
3026
|
export const mapInputContext = dual<
|
|
3043
|
-
<
|
|
3044
|
-
f: (context: Context.Context<
|
|
3045
|
-
) => <A, E>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E,
|
|
3046
|
-
<A, E, R,
|
|
3027
|
+
<R2, R>(
|
|
3028
|
+
f: (context: Context.Context<R2>) => Context.Context<R>
|
|
3029
|
+
) => <A, E>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R2>,
|
|
3030
|
+
<A, E, R, R2>(
|
|
3047
3031
|
self: Effect.Effect<A, E, R>,
|
|
3048
|
-
f: (context: Context.Context<
|
|
3049
|
-
) => Effect.Effect<A, E,
|
|
3050
|
-
>(2, <A, E, R,
|
|
3032
|
+
f: (context: Context.Context<R2>) => Context.Context<R>
|
|
3033
|
+
) => Effect.Effect<A, E, R2>
|
|
3034
|
+
>(2, <A, E, R, R2>(
|
|
3051
3035
|
self: Effect.Effect<A, E, R>,
|
|
3052
|
-
f: (context: Context.Context<
|
|
3053
|
-
) => contextWithEffect((context: Context.Context<
|
|
3036
|
+
f: (context: Context.Context<R2>) => Context.Context<R>
|
|
3037
|
+
) => contextWithEffect((context: Context.Context<R2>) => provideContext(self, f(context))))
|
|
3054
3038
|
|
|
3055
3039
|
// -----------------------------------------------------------------------------
|
|
3056
3040
|
// Tracing
|
|
@@ -3062,14 +3046,11 @@ export const currentSpanFromFiber = <A, E>(fiber: Fiber.RuntimeFiber<A, E>): Opt
|
|
|
3062
3046
|
return span !== undefined && span._tag === "Span" ? Option.some(span) : Option.none()
|
|
3063
3047
|
}
|
|
3064
3048
|
|
|
3065
|
-
const NoopSpanProto: Tracer.Span = {
|
|
3049
|
+
const NoopSpanProto: Omit<Tracer.Span, "parent" | "name" | "context"> = {
|
|
3066
3050
|
_tag: "Span",
|
|
3067
3051
|
spanId: "noop",
|
|
3068
3052
|
traceId: "noop",
|
|
3069
|
-
name: "noop",
|
|
3070
3053
|
sampled: false,
|
|
3071
|
-
parent: Option.none(),
|
|
3072
|
-
context: Context.empty(),
|
|
3073
3054
|
status: {
|
|
3074
3055
|
_tag: "Ended",
|
|
3075
3056
|
startTime: BigInt(0),
|
|
@@ -3085,8 +3066,8 @@ const NoopSpanProto: Tracer.Span = {
|
|
|
3085
3066
|
}
|
|
3086
3067
|
|
|
3087
3068
|
/** @internal */
|
|
3088
|
-
export const noopSpan = (
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
}
|
|
3069
|
+
export const noopSpan = (options: {
|
|
3070
|
+
readonly name: string
|
|
3071
|
+
readonly parent: Option.Option<Tracer.AnySpan>
|
|
3072
|
+
readonly context: Context.Context<never>
|
|
3073
|
+
}): Tracer.Span => Object.assign(Object.create(NoopSpanProto), options)
|
|
@@ -64,29 +64,29 @@ export const currentTimeNanos: Effect.Effect<bigint> = clockWith((clock) => cloc
|
|
|
64
64
|
|
|
65
65
|
/** @internal */
|
|
66
66
|
export const withClock = dual<
|
|
67
|
-
<
|
|
68
|
-
<
|
|
69
|
-
>(2, (effect,
|
|
67
|
+
<C extends Clock.Clock>(clock: C) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
68
|
+
<C extends Clock.Clock, A, E, R>(effect: Effect.Effect<A, E, R>, clock: C) => Effect.Effect<A, E, R>
|
|
69
|
+
>(2, (effect, c) =>
|
|
70
70
|
core.fiberRefLocallyWith(
|
|
71
71
|
currentServices,
|
|
72
|
-
Context.add(clock.clockTag,
|
|
72
|
+
Context.add(clock.clockTag, c)
|
|
73
73
|
)(effect))
|
|
74
74
|
|
|
75
75
|
// circular with ConfigProvider
|
|
76
76
|
|
|
77
77
|
/** @internal */
|
|
78
78
|
export const withConfigProvider = dual<
|
|
79
|
-
(
|
|
80
|
-
<A, E, R>(
|
|
81
|
-
>(2, (
|
|
79
|
+
(provider: ConfigProvider.ConfigProvider) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
80
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, provider: ConfigProvider.ConfigProvider) => Effect.Effect<A, E, R>
|
|
81
|
+
>(2, (self, provider) =>
|
|
82
82
|
core.fiberRefLocallyWith(
|
|
83
83
|
currentServices,
|
|
84
|
-
Context.add(configProvider.configProviderTag,
|
|
85
|
-
)(
|
|
84
|
+
Context.add(configProvider.configProviderTag, provider)
|
|
85
|
+
)(self))
|
|
86
86
|
|
|
87
87
|
/** @internal */
|
|
88
88
|
export const configProviderWith = <A, E, R>(
|
|
89
|
-
f: (
|
|
89
|
+
f: (provider: ConfigProvider.ConfigProvider) => Effect.Effect<A, E, R>
|
|
90
90
|
): Effect.Effect<A, E, R> =>
|
|
91
91
|
defaultServicesWith((services) => f(services.unsafeMap.get(configProvider.configProviderTag.key)))
|
|
92
92
|
|
|
@@ -32,7 +32,7 @@ import * as internalFiber from "../fiber.js"
|
|
|
32
32
|
import * as fiberRuntime from "../fiberRuntime.js"
|
|
33
33
|
import { globalScope } from "../fiberScope.js"
|
|
34
34
|
import * as internalRef from "../ref.js"
|
|
35
|
-
import * as
|
|
35
|
+
import * as schedule_ from "../schedule.js"
|
|
36
36
|
import * as supervisor from "../supervisor.js"
|
|
37
37
|
|
|
38
38
|
/** @internal */
|
|
@@ -480,7 +480,7 @@ export const scheduleForked = dual<
|
|
|
480
480
|
self: Effect.Effect<A, E, R>,
|
|
481
481
|
schedule: Schedule.Schedule<Out, unknown, R2>
|
|
482
482
|
) => Effect.Effect<Fiber.RuntimeFiber<Out, E>, never, R | R2 | Scope.Scope>
|
|
483
|
-
>(2, (self, schedule) => pipe(self,
|
|
483
|
+
>(2, (self, schedule) => pipe(self, schedule_.schedule_Effect(schedule), forkScoped))
|
|
484
484
|
|
|
485
485
|
/** @internal */
|
|
486
486
|
export const supervised = dual<
|
|
@@ -583,58 +583,63 @@ export const timeoutTo = dual<
|
|
|
583
583
|
readonly duration: Duration.DurationInput
|
|
584
584
|
}
|
|
585
585
|
) => Effect.Effect<B | B1, E, R>
|
|
586
|
-
>(
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
core.
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
core.
|
|
594
|
-
|
|
595
|
-
(
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
()
|
|
600
|
-
core.
|
|
586
|
+
>(
|
|
587
|
+
2,
|
|
588
|
+
(self, { duration, onSuccess, onTimeout }) =>
|
|
589
|
+
core.fiberIdWith((parentFiberId) =>
|
|
590
|
+
core.uninterruptibleMask((restore) =>
|
|
591
|
+
fiberRuntime.raceFibersWith(
|
|
592
|
+
restore(self),
|
|
593
|
+
core.interruptible(effect.sleep(duration)),
|
|
594
|
+
{
|
|
595
|
+
onSelfWin: (winner, loser) =>
|
|
596
|
+
core.flatMap(
|
|
597
|
+
winner.await,
|
|
598
|
+
(exit) => {
|
|
599
|
+
if (exit._tag === "Success") {
|
|
600
|
+
return core.flatMap(
|
|
601
|
+
winner.inheritAll,
|
|
602
|
+
() =>
|
|
603
|
+
core.as(
|
|
604
|
+
core.interruptAsFiber(loser, parentFiberId),
|
|
605
|
+
onSuccess(exit.value)
|
|
606
|
+
)
|
|
607
|
+
)
|
|
608
|
+
} else {
|
|
609
|
+
return core.flatMap(
|
|
601
610
|
core.interruptAsFiber(loser, parentFiberId),
|
|
602
|
-
|
|
611
|
+
() => core.exitFailCause(exit.cause)
|
|
603
612
|
)
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
core.
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
),
|
|
616
|
+
onOtherWin: (winner, loser) =>
|
|
617
|
+
core.flatMap(
|
|
618
|
+
winner.await,
|
|
619
|
+
(exit) => {
|
|
620
|
+
if (exit._tag === "Success") {
|
|
621
|
+
return core.flatMap(
|
|
622
|
+
winner.inheritAll,
|
|
623
|
+
() =>
|
|
624
|
+
core.as(
|
|
625
|
+
core.interruptAsFiber(loser, parentFiberId),
|
|
626
|
+
onTimeout()
|
|
627
|
+
)
|
|
628
|
+
)
|
|
629
|
+
} else {
|
|
630
|
+
return core.flatMap(
|
|
622
631
|
core.interruptAsFiber(loser, parentFiberId),
|
|
623
|
-
|
|
632
|
+
() => core.exitFailCause(exit.cause)
|
|
624
633
|
)
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
}
|
|
633
|
-
),
|
|
634
|
-
otherScope: globalScope
|
|
635
|
-
}
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
),
|
|
637
|
+
otherScope: globalScope
|
|
638
|
+
}
|
|
639
|
+
)
|
|
640
|
+
)
|
|
636
641
|
)
|
|
637
|
-
|
|
642
|
+
)
|
|
638
643
|
|
|
639
644
|
// circular with Synchronized
|
|
640
645
|
|
|
@@ -23,6 +23,27 @@ export const DecodeException = (input: string, message?: string): Encoding.Decod
|
|
|
23
23
|
/** @internal */
|
|
24
24
|
export const isDecodeException = (u: unknown): u is Encoding.DecodeException => hasProperty(u, DecodeExceptionTypeId)
|
|
25
25
|
|
|
26
|
+
/** @internal */
|
|
27
|
+
export const EncodeExceptionTypeId: Encoding.EncodeExceptionTypeId = Symbol.for(
|
|
28
|
+
"effect/Encoding/errors/Encode"
|
|
29
|
+
) as Encoding.EncodeExceptionTypeId
|
|
30
|
+
|
|
31
|
+
/** @internal */
|
|
32
|
+
export const EncodeException = (input: string, message?: string): Encoding.EncodeException => {
|
|
33
|
+
const out: Mutable<Encoding.EncodeException> = {
|
|
34
|
+
_tag: "EncodeException",
|
|
35
|
+
[EncodeExceptionTypeId]: EncodeExceptionTypeId,
|
|
36
|
+
input
|
|
37
|
+
}
|
|
38
|
+
if (isString(message)) {
|
|
39
|
+
out.message = message
|
|
40
|
+
}
|
|
41
|
+
return out
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** @internal */
|
|
45
|
+
export const isEncodeException = (u: unknown): u is Encoding.EncodeException => hasProperty(u, EncodeExceptionTypeId)
|
|
46
|
+
|
|
26
47
|
/** @interal */
|
|
27
48
|
export const encoder = new TextEncoder()
|
|
28
49
|
|
|
@@ -4,7 +4,7 @@ import type * as FiberId from "../../FiberId.js"
|
|
|
4
4
|
import type * as FiberRefs from "../../FiberRefs.js"
|
|
5
5
|
import type * as FiberRefsPatch from "../../FiberRefsPatch.js"
|
|
6
6
|
import { dual } from "../../Function.js"
|
|
7
|
-
import * as
|
|
7
|
+
import * as fiberRefs_ from "../fiberRefs.js"
|
|
8
8
|
|
|
9
9
|
/** @internal */
|
|
10
10
|
export const OP_EMPTY = "Empty" as const
|
|
@@ -111,7 +111,7 @@ export const patch = dual<
|
|
|
111
111
|
break
|
|
112
112
|
}
|
|
113
113
|
case OP_ADD: {
|
|
114
|
-
fiberRefs =
|
|
114
|
+
fiberRefs = fiberRefs_.updateAs(fiberRefs, {
|
|
115
115
|
fiberId,
|
|
116
116
|
fiberRef: head.fiberRef,
|
|
117
117
|
value: head.value
|
|
@@ -120,13 +120,13 @@ export const patch = dual<
|
|
|
120
120
|
break
|
|
121
121
|
}
|
|
122
122
|
case OP_REMOVE: {
|
|
123
|
-
fiberRefs =
|
|
123
|
+
fiberRefs = fiberRefs_.delete_(fiberRefs, head.fiberRef)
|
|
124
124
|
patches = tail
|
|
125
125
|
break
|
|
126
126
|
}
|
|
127
127
|
case OP_UPDATE: {
|
|
128
|
-
const value =
|
|
129
|
-
fiberRefs =
|
|
128
|
+
const value = fiberRefs_.getOrDefault(fiberRefs, head.fiberRef)
|
|
129
|
+
fiberRefs = fiberRefs_.updateAs(fiberRefs, {
|
|
130
130
|
fiberId,
|
|
131
131
|
fiberRef: head.fiberRef,
|
|
132
132
|
value: head.fiberRef.patch(head.patch)(value)
|