effect 2.0.0-next.60 → 2.0.0-next.62
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/BigDecimal.js +19 -5
- package/dist/cjs/BigDecimal.js.map +1 -1
- package/dist/cjs/ConfigProvider.js +8 -1
- package/dist/cjs/ConfigProvider.js.map +1 -1
- package/dist/cjs/Effect.js +7 -2
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Layer.js +8 -1
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/ReadonlyRecord.js +28 -1
- package/dist/cjs/ReadonlyRecord.js.map +1 -1
- package/dist/cjs/internal/configProvider.js +103 -32
- package/dist/cjs/internal/configProvider.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +47 -38
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +2 -3
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +4 -4
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/layer.js +3 -1
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/matcher.js +13 -16
- package/dist/cjs/internal/matcher.js.map +1 -1
- package/dist/cjs/internal/metric.js +2 -2
- package/dist/cjs/internal/metric.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/BigDecimal.d.ts +2 -2
- package/dist/dts/BigDecimal.d.ts.map +1 -1
- package/dist/dts/ConfigProvider.d.ts +28 -0
- package/dist/dts/ConfigProvider.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +12 -7
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +7 -0
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/Match.d.ts +15 -27
- package/dist/dts/Match.d.ts.map +1 -1
- package/dist/dts/ReadonlyRecord.d.ts +26 -0
- package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
- package/dist/dts/internal/version.d.ts +1 -1
- package/dist/esm/BigDecimal.js +17 -4
- package/dist/esm/BigDecimal.js.map +1 -1
- package/dist/esm/ConfigProvider.js +7 -0
- package/dist/esm/ConfigProvider.js.map +1 -1
- package/dist/esm/Effect.js +5 -0
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Layer.js +7 -0
- package/dist/esm/Layer.js.map +1 -1
- package/dist/esm/ReadonlyRecord.js +26 -0
- package/dist/esm/ReadonlyRecord.js.map +1 -1
- package/dist/esm/internal/configProvider.js +101 -31
- package/dist/esm/internal/configProvider.js.map +1 -1
- package/dist/esm/internal/core-effect.js +43 -35
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +2 -3
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +4 -4
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/layer.js +2 -0
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/matcher.js +13 -16
- package/dist/esm/internal/matcher.js.map +1 -1
- package/dist/esm/internal/metric.js +2 -2
- package/dist/esm/internal/metric.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/BigDecimal.ts +19 -4
- package/src/ConfigProvider.ts +32 -0
- package/src/Effect.ts +18 -7
- package/src/Layer.ts +8 -0
- package/src/Match.ts +37 -75
- package/src/ReadonlyRecord.ts +28 -0
- package/src/internal/configProvider.ts +133 -33
- package/src/internal/core-effect.ts +74 -72
- package/src/internal/effect/circular.ts +7 -5
- package/src/internal/fiberRuntime.ts +4 -4
- package/src/internal/layer.ts +3 -0
- package/src/internal/matcher.ts +16 -16
- package/src/internal/metric.ts +2 -2
- package/src/internal/version.ts +1 -1
|
@@ -827,17 +827,14 @@ export const fiberRefs: Effect.Effect<never, never, FiberRefs.FiberRefs> = core.
|
|
|
827
827
|
/* @internal */
|
|
828
828
|
export const head = <R, E, A>(
|
|
829
829
|
self: Effect.Effect<R, E, Iterable<A>>
|
|
830
|
-
): Effect.Effect<R,
|
|
831
|
-
core.
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
if (next.done) {
|
|
837
|
-
return core.fail(Option.none())
|
|
838
|
-
}
|
|
839
|
-
return core.succeed(next.value)
|
|
830
|
+
): Effect.Effect<R, E | Cause.NoSuchElementException, A> =>
|
|
831
|
+
core.flatMap(self, (as) => {
|
|
832
|
+
const iterator = as[Symbol.iterator]()
|
|
833
|
+
const next = iterator.next()
|
|
834
|
+
if (next.done) {
|
|
835
|
+
return core.fail(new core.NoSuchElementException())
|
|
840
836
|
}
|
|
837
|
+
return core.succeed(next.value)
|
|
841
838
|
})
|
|
842
839
|
|
|
843
840
|
/* @internal */
|
|
@@ -1109,17 +1106,14 @@ export const negate = <R, E>(self: Effect.Effect<R, E, boolean>): Effect.Effect<
|
|
|
1109
1106
|
/* @internal */
|
|
1110
1107
|
export const none = <R, E, A>(
|
|
1111
1108
|
self: Effect.Effect<R, E, Option.Option<A>>
|
|
1112
|
-
): Effect.Effect<R,
|
|
1113
|
-
core.
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
case "Some": {
|
|
1121
|
-
return core.fail(Option.none())
|
|
1122
|
-
}
|
|
1109
|
+
): Effect.Effect<R, E | Cause.NoSuchElementException, void> =>
|
|
1110
|
+
core.flatMap(self, (option) => {
|
|
1111
|
+
switch (option._tag) {
|
|
1112
|
+
case "None": {
|
|
1113
|
+
return core.unit
|
|
1114
|
+
}
|
|
1115
|
+
case "Some": {
|
|
1116
|
+
return core.fail(new core.NoSuchElementException())
|
|
1123
1117
|
}
|
|
1124
1118
|
}
|
|
1125
1119
|
})
|
|
@@ -1899,6 +1893,10 @@ export const serviceMembers = <I, S>(tag: Context.Tag<I, S>): {
|
|
|
1899
1893
|
/** @internal */
|
|
1900
1894
|
export const serviceOption = <I, S>(tag: Context.Tag<I, S>) => core.map(core.context<never>(), Context.getOption(tag))
|
|
1901
1895
|
|
|
1896
|
+
/** @internal */
|
|
1897
|
+
export const serviceOptional = <I, S>(tag: Context.Tag<I, S>) =>
|
|
1898
|
+
core.flatMap(core.context<never>(), Context.getOption(tag))
|
|
1899
|
+
|
|
1902
1900
|
// -----------------------------------------------------------------------------
|
|
1903
1901
|
// tracing
|
|
1904
1902
|
// -----------------------------------------------------------------------------
|
|
@@ -1909,21 +1907,19 @@ export const annotateCurrentSpan: {
|
|
|
1909
1907
|
(values: Record<string, unknown>): Effect.Effect<never, never, void>
|
|
1910
1908
|
} = function(): Effect.Effect<never, never, void> {
|
|
1911
1909
|
const args = arguments
|
|
1912
|
-
return core.flatMap(
|
|
1910
|
+
return ignore(core.flatMap(
|
|
1913
1911
|
currentSpan,
|
|
1914
1912
|
(span) =>
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
span.value.attribute(key, args[0][key])
|
|
1922
|
-
}
|
|
1913
|
+
core.sync(() => {
|
|
1914
|
+
if (typeof args[0] === "string") {
|
|
1915
|
+
span.attribute(args[0], args[1])
|
|
1916
|
+
} else {
|
|
1917
|
+
for (const key in args[0]) {
|
|
1918
|
+
span.attribute(key, args[0][key])
|
|
1923
1919
|
}
|
|
1924
|
-
}
|
|
1925
|
-
|
|
1926
|
-
)
|
|
1920
|
+
}
|
|
1921
|
+
})
|
|
1922
|
+
))
|
|
1927
1923
|
}
|
|
1928
1924
|
|
|
1929
1925
|
/* @internal */
|
|
@@ -1957,16 +1953,18 @@ export const annotateSpans = dual<
|
|
|
1957
1953
|
)
|
|
1958
1954
|
|
|
1959
1955
|
/** @internal */
|
|
1960
|
-
export const currentParentSpan: Effect.Effect<never,
|
|
1956
|
+
export const currentParentSpan: Effect.Effect<never, Cause.NoSuchElementException, Tracer.ParentSpan> = serviceOptional(
|
|
1961
1957
|
internalTracer.spanTag
|
|
1962
1958
|
)
|
|
1963
1959
|
|
|
1964
1960
|
/** @internal */
|
|
1965
|
-
export const currentSpan: Effect.Effect<never,
|
|
1961
|
+
export const currentSpan: Effect.Effect<never, Cause.NoSuchElementException, Tracer.Span> = core.flatMap(
|
|
1966
1962
|
core.context<never>(),
|
|
1967
1963
|
(context) => {
|
|
1968
1964
|
const span = context.unsafeMap.get(internalTracer.spanTag) as Tracer.ParentSpan | undefined
|
|
1969
|
-
return span !== undefined && span._tag === "Span"
|
|
1965
|
+
return span !== undefined && span._tag === "Span"
|
|
1966
|
+
? core.succeed(span)
|
|
1967
|
+
: core.fail(new core.NoSuchElementException())
|
|
1970
1968
|
}
|
|
1971
1969
|
)
|
|
1972
1970
|
|
|
@@ -2015,43 +2013,47 @@ export const makeSpan = (
|
|
|
2015
2013
|
readonly context?: Context.Context<never> | undefined
|
|
2016
2014
|
}
|
|
2017
2015
|
) =>
|
|
2018
|
-
|
|
2019
|
-
core.
|
|
2020
|
-
|
|
2021
|
-
|
|
2016
|
+
core.flatMap(fiberRefs, (fiberRefs) =>
|
|
2017
|
+
core.sync(() => {
|
|
2018
|
+
const context = FiberRefs.getOrDefault(fiberRefs, core.currentContext)
|
|
2019
|
+
const services = FiberRefs.getOrDefault(fiberRefs, defaultServices.currentServices)
|
|
2020
|
+
|
|
2021
|
+
const tracer = Context.get(services, internalTracer.tracerTag)
|
|
2022
|
+
const clock = Context.get(services, Clock.Clock)
|
|
2023
|
+
const timingEnabled = FiberRefs.getOrDefault(fiberRefs, core.currentTracerTimingEnabled)
|
|
2024
|
+
const annotationsFromEnv = FiberRefs.get(fiberRefs, core.currentTracerSpanAnnotations)
|
|
2025
|
+
const linksFromEnv = FiberRefs.get(fiberRefs, core.currentTracerSpanLinks)
|
|
2026
|
+
|
|
2027
|
+
const parent = options?.parent
|
|
2028
|
+
? Option.some(options.parent)
|
|
2022
2029
|
: options?.root
|
|
2023
|
-
?
|
|
2024
|
-
:
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
(
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
)
|
|
2051
|
-
)
|
|
2052
|
-
)
|
|
2053
|
-
)
|
|
2054
|
-
)
|
|
2030
|
+
? Option.none()
|
|
2031
|
+
: Context.getOption(context, internalTracer.spanTag)
|
|
2032
|
+
|
|
2033
|
+
const links = linksFromEnv._tag === "Some" ?
|
|
2034
|
+
[
|
|
2035
|
+
...Chunk.toReadonlyArray(linksFromEnv.value),
|
|
2036
|
+
...(options?.links ?? [])
|
|
2037
|
+
] :
|
|
2038
|
+
options?.links ?? []
|
|
2039
|
+
|
|
2040
|
+
const span = tracer.span(
|
|
2041
|
+
name,
|
|
2042
|
+
parent,
|
|
2043
|
+
options?.context ?? Context.empty(),
|
|
2044
|
+
links,
|
|
2045
|
+
timingEnabled ? clock.unsafeCurrentTimeNanos() : bigint0
|
|
2046
|
+
)
|
|
2047
|
+
|
|
2048
|
+
if (annotationsFromEnv._tag === "Some") {
|
|
2049
|
+
HashMap.forEach(annotationsFromEnv.value, (value, key) => span.attribute(key, value))
|
|
2050
|
+
}
|
|
2051
|
+
if (options?.attributes) {
|
|
2052
|
+
Object.entries(options.attributes).forEach(([k, v]) => span.attribute(k, v))
|
|
2053
|
+
}
|
|
2054
|
+
|
|
2055
|
+
return span
|
|
2056
|
+
}))
|
|
2055
2057
|
|
|
2056
2058
|
/* @internal */
|
|
2057
2059
|
export const spanAnnotations: Effect.Effect<never, never, HashMap.HashMap<string, unknown>> = core
|
|
@@ -399,12 +399,14 @@ export const supervised = dual<
|
|
|
399
399
|
export const timeout = dual<
|
|
400
400
|
(
|
|
401
401
|
duration: Duration.DurationInput
|
|
402
|
-
) => <R, E, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<R, E,
|
|
403
|
-
<R, E, A>(
|
|
402
|
+
) => <R, E, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<R, E | Cause.NoSuchElementException, A>,
|
|
403
|
+
<R, E, A>(
|
|
404
|
+
self: Effect.Effect<R, E, A>,
|
|
405
|
+
duration: Duration.DurationInput
|
|
406
|
+
) => Effect.Effect<R, E | Cause.NoSuchElementException, A>
|
|
404
407
|
>(2, (self, duration) =>
|
|
405
|
-
|
|
406
|
-
onTimeout:
|
|
407
|
-
onSuccess: Option.some,
|
|
408
|
+
timeoutFail(self, {
|
|
409
|
+
onTimeout: () => new core.NoSuchElementException(),
|
|
408
410
|
duration
|
|
409
411
|
}))
|
|
410
412
|
|
|
@@ -80,9 +80,9 @@ export const fiberLifetimes = metric.tagged(
|
|
|
80
80
|
metric.histogram(
|
|
81
81
|
"effect_fiber_lifetimes",
|
|
82
82
|
metricBoundaries.exponential({
|
|
83
|
-
start:
|
|
84
|
-
factor:
|
|
85
|
-
count:
|
|
83
|
+
start: 0.5,
|
|
84
|
+
factor: 2,
|
|
85
|
+
count: 35
|
|
86
86
|
})
|
|
87
87
|
),
|
|
88
88
|
"time_unit",
|
|
@@ -2225,7 +2225,7 @@ export const mergeAll = dual<
|
|
|
2225
2225
|
readonly batching?: boolean | "inherit" | undefined
|
|
2226
2226
|
}) => Effect.Effect<R, E, Z>
|
|
2227
2227
|
>(
|
|
2228
|
-
(args) => Predicate.
|
|
2228
|
+
(args) => Predicate.isFunction(args[2]),
|
|
2229
2229
|
<R, E, A, Z>(elements: Iterable<Effect.Effect<R, E, A>>, zero: Z, f: (z: Z, a: A, i: number) => Z, options?: {
|
|
2230
2230
|
readonly concurrency?: Concurrency | undefined
|
|
2231
2231
|
readonly batching?: boolean | "inherit" | undefined
|
package/src/internal/layer.ts
CHANGED
|
@@ -912,6 +912,9 @@ export const succeedContext = <A>(
|
|
|
912
912
|
return fromEffectContext(core.succeed(context))
|
|
913
913
|
}
|
|
914
914
|
|
|
915
|
+
/** @internal */
|
|
916
|
+
export const empty = succeedContext(Context.empty())
|
|
917
|
+
|
|
915
918
|
/** @internal */
|
|
916
919
|
export const suspend = <RIn, E, ROut>(
|
|
917
920
|
evaluate: LazyArg<Layer.Layer<RIn, E, ROut>>
|
package/src/internal/matcher.ts
CHANGED
|
@@ -366,15 +366,10 @@ export const discriminators = <D extends string>(field: D) =>
|
|
|
366
366
|
>(
|
|
367
367
|
fields: P
|
|
368
368
|
) => {
|
|
369
|
-
const
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
if (f) {
|
|
374
|
-
predicates.push(makeWhen(pred, f as any))
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
const len = predicates.length
|
|
369
|
+
const predicate = makeWhen(
|
|
370
|
+
(_: any) => _[field] in fields,
|
|
371
|
+
(data: any) => (fields as any)[data[field]](data)
|
|
372
|
+
)
|
|
378
373
|
|
|
379
374
|
return <I, F, A, Pr>(
|
|
380
375
|
self: Matcher<I, F, R, A, Pr>
|
|
@@ -384,13 +379,7 @@ export const discriminators = <D extends string>(field: D) =>
|
|
|
384
379
|
Types.ApplyFilters<I, Types.AddWithout<F, Extract<R, Record<D, keyof P>>>>,
|
|
385
380
|
A | ReturnType<P[keyof P] & {}>,
|
|
386
381
|
Pr
|
|
387
|
-
> =>
|
|
388
|
-
let matcher: any = self
|
|
389
|
-
for (let i = 0; i < len; i++) {
|
|
390
|
-
matcher = matcher.add(predicates[i])
|
|
391
|
-
}
|
|
392
|
-
return matcher
|
|
393
|
-
}
|
|
382
|
+
> => (self as any).add(predicate)
|
|
394
383
|
}
|
|
395
384
|
|
|
396
385
|
/** @internal */
|
|
@@ -532,6 +521,17 @@ export const either: <I, F, R, A, Pr>(
|
|
|
532
521
|
}
|
|
533
522
|
|
|
534
523
|
const len = self.cases.length
|
|
524
|
+
if (len === 1) {
|
|
525
|
+
const _case = self.cases[0]
|
|
526
|
+
return (input: I): Either.Either<RA, A> => {
|
|
527
|
+
if (_case._tag === "When" && _case.guard(input) === true) {
|
|
528
|
+
return Either.right(_case.evaluate(input))
|
|
529
|
+
} else if (_case._tag === "Not" && _case.guard(input) === false) {
|
|
530
|
+
return Either.right(_case.evaluate(input))
|
|
531
|
+
}
|
|
532
|
+
return Either.left(input as any)
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
535
|
return (input: I): Either.Either<RA, A> => {
|
|
536
536
|
for (let i = 0; i < len; i++) {
|
|
537
537
|
const _case = self.cases[i]
|
package/src/internal/metric.ts
CHANGED
|
@@ -308,9 +308,9 @@ export const timer = (name: string, description?: string): Metric.Metric<
|
|
|
308
308
|
MetricState.MetricState.Histogram
|
|
309
309
|
> => {
|
|
310
310
|
const boundaries = metricBoundaries.exponential({
|
|
311
|
-
start:
|
|
311
|
+
start: 0.5,
|
|
312
312
|
factor: 2,
|
|
313
|
-
count:
|
|
313
|
+
count: 35
|
|
314
314
|
})
|
|
315
315
|
const base = pipe(histogram(name, boundaries, description), tagged("time_unit", "milliseconds"))
|
|
316
316
|
return mapInput(base, Duration.toMillis)
|
package/src/internal/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const moduleVersion = "2.0.0-next.
|
|
1
|
+
export const moduleVersion = "2.0.0-next.62"
|