effect 3.8.5 → 3.9.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 +24 -3
- package/dist/cjs/Array.js.map +1 -1
- package/dist/cjs/BigDecimal.js +3 -0
- package/dist/cjs/BigDecimal.js.map +1 -1
- package/dist/cjs/Chunk.js +3 -0
- package/dist/cjs/Chunk.js.map +1 -1
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Cron.js +3 -0
- package/dist/cjs/Cron.js.map +1 -1
- package/dist/cjs/DateTime.js +6 -0
- package/dist/cjs/DateTime.js.map +1 -1
- package/dist/cjs/Duration.js +3 -0
- package/dist/cjs/Duration.js.map +1 -1
- package/dist/cjs/Effect.js +122 -35
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/FiberHandle.js +3 -0
- package/dist/cjs/FiberHandle.js.map +1 -1
- package/dist/cjs/FiberMap.js +3 -0
- package/dist/cjs/FiberMap.js.map +1 -1
- package/dist/cjs/FiberSet.js +3 -0
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/HashMap.js.map +1 -1
- package/dist/cjs/Inspectable.js +15 -1
- package/dist/cjs/Inspectable.js.map +1 -1
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/List.js +6 -0
- package/dist/cjs/List.js.map +1 -1
- package/dist/cjs/ManagedRuntime.js +16 -1
- package/dist/cjs/ManagedRuntime.js.map +1 -1
- package/dist/cjs/Micro.js +6 -0
- package/dist/cjs/Micro.js.map +1 -1
- package/dist/cjs/MutableHashMap.js +3 -0
- package/dist/cjs/MutableHashMap.js.map +1 -1
- package/dist/cjs/MutableHashSet.js +3 -0
- package/dist/cjs/MutableHashSet.js.map +1 -1
- package/dist/cjs/MutableList.js +3 -0
- package/dist/cjs/MutableList.js.map +1 -1
- package/dist/cjs/MutableQueue.js +3 -0
- package/dist/cjs/MutableQueue.js.map +1 -1
- package/dist/cjs/MutableRef.js +3 -0
- package/dist/cjs/MutableRef.js.map +1 -1
- package/dist/cjs/Pool.js.map +1 -1
- package/dist/cjs/Predicate.js +18 -2
- package/dist/cjs/Predicate.js.map +1 -1
- package/dist/cjs/RegExp.js +20 -1
- package/dist/cjs/RegExp.js.map +1 -1
- package/dist/cjs/Resource.js.map +1 -1
- package/dist/cjs/ScopedRef.js.map +1 -1
- package/dist/cjs/SortedMap.js +3 -0
- package/dist/cjs/SortedMap.js.map +1 -1
- package/dist/cjs/SortedSet.js +3 -0
- package/dist/cjs/SortedSet.js.map +1 -1
- package/dist/cjs/Tuple.js +21 -2
- package/dist/cjs/Tuple.js.map +1 -1
- package/dist/cjs/Unify.js.map +1 -1
- package/dist/cjs/internal/cause.js +3 -0
- package/dist/cjs/internal/cause.js.map +1 -1
- package/dist/cjs/internal/context.js +6 -1
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core.js +12 -0
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +5 -1
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/fiberId.js +9 -0
- package/dist/cjs/internal/fiberId.js.map +1 -1
- package/dist/cjs/internal/hashMap.js +3 -0
- package/dist/cjs/internal/hashMap.js.map +1 -1
- package/dist/cjs/internal/hashSet.js +3 -0
- package/dist/cjs/internal/hashSet.js.map +1 -1
- package/dist/cjs/internal/layer.js +33 -19
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/mailbox.js +3 -0
- package/dist/cjs/internal/mailbox.js.map +1 -1
- package/dist/cjs/internal/managedRuntime/circular.js +10 -0
- package/dist/cjs/internal/managedRuntime/circular.js.map +1 -0
- package/dist/cjs/internal/managedRuntime.js +23 -9
- package/dist/cjs/internal/managedRuntime.js.map +1 -1
- package/dist/cjs/internal/option.js +3 -0
- package/dist/cjs/internal/option.js.map +1 -1
- package/dist/cjs/internal/pool.js +6 -1
- package/dist/cjs/internal/pool.js.map +1 -1
- package/dist/cjs/internal/redBlackTree.js +3 -0
- package/dist/cjs/internal/redBlackTree.js.map +1 -1
- package/dist/cjs/internal/resource.js +15 -5
- package/dist/cjs/internal/resource.js.map +1 -1
- package/dist/cjs/internal/runtime.js +3 -0
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/scopedRef.js +11 -8
- package/dist/cjs/internal/scopedRef.js.map +1 -1
- package/dist/cjs/internal/stm/core.js +1 -2
- package/dist/cjs/internal/stm/core.js.map +1 -1
- package/dist/cjs/internal/trie.js +3 -0
- package/dist/cjs/internal/trie.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Array.d.ts +51 -2
- package/dist/dts/Array.d.ts.map +1 -1
- package/dist/dts/BigDecimal.d.ts.map +1 -1
- package/dist/dts/Chunk.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +2 -3
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Cron.d.ts.map +1 -1
- package/dist/dts/DateTime.d.ts.map +1 -1
- package/dist/dts/Deferred.d.ts +1 -1
- package/dist/dts/Deferred.d.ts.map +1 -1
- package/dist/dts/Duration.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +233 -10
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/FiberHandle.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/HashMap.d.ts +15 -0
- package/dist/dts/HashMap.d.ts.map +1 -1
- package/dist/dts/Inspectable.d.ts +15 -0
- package/dist/dts/Inspectable.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +46 -5
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/List.d.ts.map +1 -1
- package/dist/dts/ManagedRuntime.d.ts +41 -2
- package/dist/dts/ManagedRuntime.d.ts.map +1 -1
- package/dist/dts/Micro.d.ts.map +1 -1
- package/dist/dts/MutableHashMap.d.ts.map +1 -1
- package/dist/dts/MutableHashSet.d.ts.map +1 -1
- package/dist/dts/MutableList.d.ts.map +1 -1
- package/dist/dts/MutableQueue.d.ts.map +1 -1
- package/dist/dts/MutableRef.d.ts.map +1 -1
- package/dist/dts/Pool.d.ts +21 -1
- package/dist/dts/Pool.d.ts.map +1 -1
- package/dist/dts/Predicate.d.ts +15 -0
- package/dist/dts/Predicate.d.ts.map +1 -1
- package/dist/dts/Queue.d.ts +2 -2
- package/dist/dts/Queue.d.ts.map +1 -1
- package/dist/dts/RegExp.d.ts +12 -2
- package/dist/dts/RegExp.d.ts.map +1 -1
- package/dist/dts/Resource.d.ts +21 -1
- package/dist/dts/Resource.d.ts.map +1 -1
- package/dist/dts/ScopedRef.d.ts +21 -1
- package/dist/dts/ScopedRef.d.ts.map +1 -1
- package/dist/dts/SortedMap.d.ts.map +1 -1
- package/dist/dts/SortedSet.d.ts.map +1 -1
- package/dist/dts/Tuple.d.ts +59 -0
- package/dist/dts/Tuple.d.ts.map +1 -1
- package/dist/dts/Types.d.ts +39 -0
- package/dist/dts/Types.d.ts.map +1 -1
- package/dist/dts/Unify.d.ts +8 -13
- package/dist/dts/Unify.d.ts.map +1 -1
- package/dist/dts/internal/core.d.ts.map +1 -1
- package/dist/dts/internal/hashMap.d.ts.map +1 -1
- package/dist/dts/internal/layer.d.ts.map +1 -1
- package/dist/dts/internal/managedRuntime/circular.d.ts +2 -0
- package/dist/dts/internal/managedRuntime/circular.d.ts.map +1 -0
- package/dist/esm/Array.js +21 -0
- package/dist/esm/Array.js.map +1 -1
- package/dist/esm/BigDecimal.js +4 -1
- package/dist/esm/BigDecimal.js.map +1 -1
- package/dist/esm/Chunk.js +4 -1
- package/dist/esm/Chunk.js.map +1 -1
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Cron.js +4 -1
- package/dist/esm/Cron.js.map +1 -1
- package/dist/esm/DateTime.js +6 -0
- package/dist/esm/DateTime.js.map +1 -1
- package/dist/esm/Duration.js +4 -1
- package/dist/esm/Duration.js.map +1 -1
- package/dist/esm/Effect.js +116 -30
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/FiberHandle.js +3 -0
- package/dist/esm/FiberHandle.js.map +1 -1
- package/dist/esm/FiberMap.js +3 -0
- package/dist/esm/FiberMap.js.map +1 -1
- package/dist/esm/FiberSet.js +3 -0
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/HashMap.js.map +1 -1
- package/dist/esm/Inspectable.js +14 -0
- package/dist/esm/Inspectable.js.map +1 -1
- package/dist/esm/Layer.js.map +1 -1
- package/dist/esm/List.js +7 -1
- package/dist/esm/List.js.map +1 -1
- package/dist/esm/ManagedRuntime.js +15 -0
- package/dist/esm/ManagedRuntime.js.map +1 -1
- package/dist/esm/Micro.js +7 -1
- package/dist/esm/Micro.js.map +1 -1
- package/dist/esm/MutableHashMap.js +4 -1
- package/dist/esm/MutableHashMap.js.map +1 -1
- package/dist/esm/MutableHashSet.js +4 -1
- package/dist/esm/MutableHashSet.js.map +1 -1
- package/dist/esm/MutableList.js +4 -1
- package/dist/esm/MutableList.js.map +1 -1
- package/dist/esm/MutableQueue.js +4 -1
- package/dist/esm/MutableQueue.js.map +1 -1
- package/dist/esm/MutableRef.js +4 -1
- package/dist/esm/MutableRef.js.map +1 -1
- package/dist/esm/Pool.js.map +1 -1
- package/dist/esm/Predicate.js +15 -0
- package/dist/esm/Predicate.js.map +1 -1
- package/dist/esm/RegExp.js +16 -0
- package/dist/esm/RegExp.js.map +1 -1
- package/dist/esm/Resource.js.map +1 -1
- package/dist/esm/ScopedRef.js.map +1 -1
- package/dist/esm/SortedMap.js +4 -1
- package/dist/esm/SortedMap.js.map +1 -1
- package/dist/esm/SortedSet.js +4 -1
- package/dist/esm/SortedSet.js.map +1 -1
- package/dist/esm/Tuple.js +19 -0
- package/dist/esm/Tuple.js.map +1 -1
- package/dist/esm/Unify.js.map +1 -1
- package/dist/esm/internal/cause.js +4 -1
- package/dist/esm/internal/cause.js.map +1 -1
- package/dist/esm/internal/context.js +7 -2
- package/dist/esm/internal/context.js.map +1 -1
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +13 -1
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +5 -1
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/fiberId.js +10 -1
- package/dist/esm/internal/fiberId.js.map +1 -1
- package/dist/esm/internal/hashMap.js +4 -1
- package/dist/esm/internal/hashMap.js.map +1 -1
- package/dist/esm/internal/hashSet.js +4 -1
- package/dist/esm/internal/hashSet.js.map +1 -1
- package/dist/esm/internal/layer.js +32 -18
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/mailbox.js +3 -0
- package/dist/esm/internal/mailbox.js.map +1 -1
- package/dist/esm/internal/managedRuntime/circular.js +4 -0
- package/dist/esm/internal/managedRuntime/circular.js.map +1 -0
- package/dist/esm/internal/managedRuntime.js +21 -8
- package/dist/esm/internal/managedRuntime.js.map +1 -1
- package/dist/esm/internal/option.js +4 -1
- package/dist/esm/internal/option.js.map +1 -1
- package/dist/esm/internal/pool.js +6 -1
- package/dist/esm/internal/pool.js.map +1 -1
- package/dist/esm/internal/redBlackTree.js +4 -1
- package/dist/esm/internal/redBlackTree.js.map +1 -1
- package/dist/esm/internal/resource.js +15 -5
- package/dist/esm/internal/resource.js.map +1 -1
- package/dist/esm/internal/runtime.js +3 -0
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/scopedRef.js +11 -8
- package/dist/esm/internal/scopedRef.js.map +1 -1
- package/dist/esm/internal/stm/core.js +1 -2
- package/dist/esm/internal/stm/core.js.map +1 -1
- package/dist/esm/internal/trie.js +4 -1
- package/dist/esm/internal/trie.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/Array.ts +68 -4
- package/src/BigDecimal.ts +4 -1
- package/src/Chunk.ts +4 -1
- package/src/Context.ts +2 -3
- package/src/Cron.ts +4 -1
- package/src/DateTime.ts +6 -0
- package/src/Deferred.ts +1 -1
- package/src/Duration.ts +4 -1
- package/src/Effect.ts +435 -56
- package/src/FiberHandle.ts +3 -0
- package/src/FiberMap.ts +3 -0
- package/src/FiberSet.ts +3 -0
- package/src/HashMap.ts +16 -0
- package/src/Inspectable.ts +22 -0
- package/src/Layer.ts +49 -8
- package/src/List.ts +7 -1
- package/src/ManagedRuntime.ts +46 -2
- package/src/Micro.ts +7 -1
- package/src/MutableHashMap.ts +4 -1
- package/src/MutableHashSet.ts +4 -1
- package/src/MutableList.ts +4 -1
- package/src/MutableQueue.ts +4 -1
- package/src/MutableRef.ts +4 -1
- package/src/Pool.ts +26 -1
- package/src/Predicate.ts +16 -0
- package/src/Queue.ts +2 -2
- package/src/RegExp.ts +17 -0
- package/src/Resource.ts +22 -1
- package/src/ScopedRef.ts +22 -1
- package/src/SortedMap.ts +4 -1
- package/src/SortedSet.ts +4 -1
- package/src/Tuple.ts +66 -0
- package/src/Types.ts +41 -0
- package/src/Unify.ts +9 -14
- package/src/internal/cause.ts +4 -1
- package/src/internal/context.ts +7 -2
- package/src/internal/core-effect.ts +7 -7
- package/src/internal/core.ts +13 -1
- package/src/internal/effect/circular.ts +8 -2
- package/src/internal/fiberId.ts +10 -1
- package/src/internal/hashMap.ts +4 -1
- package/src/internal/hashSet.ts +4 -1
- package/src/internal/layer.ts +105 -38
- package/src/internal/mailbox.ts +3 -0
- package/src/internal/managedRuntime/circular.ts +6 -0
- package/src/internal/managedRuntime.ts +36 -22
- package/src/internal/option.ts +4 -1
- package/src/internal/pool.ts +7 -1
- package/src/internal/redBlackTree.ts +4 -1
- package/src/internal/resource.ts +16 -5
- package/src/internal/runtime.ts +3 -0
- package/src/internal/scopedRef.ts +12 -8
- package/src/internal/stm/core.ts +2 -3
- package/src/internal/trie.ts +4 -1
- package/src/internal/version.ts +1 -1
package/src/Effect.ts
CHANGED
|
@@ -38,6 +38,7 @@ import * as _runtime from "./internal/runtime.js"
|
|
|
38
38
|
import * as _schedule from "./internal/schedule.js"
|
|
39
39
|
import type * as Layer from "./Layer.js"
|
|
40
40
|
import type { LogLevel } from "./LogLevel.js"
|
|
41
|
+
import type * as ManagedRuntime from "./ManagedRuntime.js"
|
|
41
42
|
import type * as Metric from "./Metric.js"
|
|
42
43
|
import type * as MetricLabel from "./MetricLabel.js"
|
|
43
44
|
import type * as Option from "./Option.js"
|
|
@@ -56,7 +57,7 @@ import * as Scheduler from "./Scheduler.js"
|
|
|
56
57
|
import type * as Scope from "./Scope.js"
|
|
57
58
|
import type * as Supervisor from "./Supervisor.js"
|
|
58
59
|
import type * as Tracer from "./Tracer.js"
|
|
59
|
-
import type { Concurrency, Covariant, NoInfer, NotFunction } from "./Types.js"
|
|
60
|
+
import type { Concurrency, Contravariant, Covariant, NoExcessProperties, NoInfer, NotFunction } from "./Types.js"
|
|
60
61
|
import type * as Unify from "./Unify.js"
|
|
61
62
|
import type { YieldWrap } from "./Utils.js"
|
|
62
63
|
|
|
@@ -3328,10 +3329,10 @@ export const mapAccum: {
|
|
|
3328
3329
|
* @since 2.0.0
|
|
3329
3330
|
* @category mapping
|
|
3330
3331
|
*/
|
|
3331
|
-
<S, A, B, E, R>(
|
|
3332
|
+
<S, A, B, E, R, I extends Iterable<A> = Iterable<A>>(
|
|
3332
3333
|
zero: S,
|
|
3333
|
-
f: (s: S, a:
|
|
3334
|
-
): (elements:
|
|
3334
|
+
f: (s: S, a: RA.ReadonlyArray.Infer<I>, i: number) => Effect<readonly [S, B], E, R>
|
|
3335
|
+
): (elements: I) => Effect<[S, RA.ReadonlyArray.With<I, B>], E, R>
|
|
3335
3336
|
/**
|
|
3336
3337
|
* Statefully and effectfully maps over the elements of this chunk to produce
|
|
3337
3338
|
* new elements.
|
|
@@ -3339,11 +3340,11 @@ export const mapAccum: {
|
|
|
3339
3340
|
* @since 2.0.0
|
|
3340
3341
|
* @category mapping
|
|
3341
3342
|
*/
|
|
3342
|
-
<A, S, B, E, R>(
|
|
3343
|
-
elements:
|
|
3343
|
+
<A, S, B, E, R, I extends Iterable<A> = Iterable<A>>(
|
|
3344
|
+
elements: I,
|
|
3344
3345
|
zero: S,
|
|
3345
|
-
f: (s: S, a:
|
|
3346
|
-
): Effect<[S,
|
|
3346
|
+
f: (s: S, a: RA.ReadonlyArray.Infer<I>, i: number) => Effect<readonly [S, B], E, R>
|
|
3347
|
+
): Effect<[S, RA.ReadonlyArray.With<I, B>], E, R>
|
|
3347
3348
|
} = effect.mapAccum
|
|
3348
3349
|
|
|
3349
3350
|
/**
|
|
@@ -4938,6 +4939,21 @@ export const mapInputContext: {
|
|
|
4938
4939
|
* @category context
|
|
4939
4940
|
*/
|
|
4940
4941
|
export const provide: {
|
|
4942
|
+
/**
|
|
4943
|
+
* Splits the context into two parts, providing one part using the
|
|
4944
|
+
* specified layer/context/runtime and leaving the remainder `R0`
|
|
4945
|
+
*
|
|
4946
|
+
* @since 2.0.0
|
|
4947
|
+
* @category context
|
|
4948
|
+
*/
|
|
4949
|
+
<const Layers extends [Layer.Layer.Any, ...Array<Layer.Layer.Any>]>(layers: Layers): <A, E, R>(
|
|
4950
|
+
self: Effect<A, E, R>
|
|
4951
|
+
) => Effect<
|
|
4952
|
+
A,
|
|
4953
|
+
E | { [k in keyof Layers]: Layer.Layer.Error<Layers[k]> }[number],
|
|
4954
|
+
| { [k in keyof Layers]: Layer.Layer.Context<Layers[k]> }[number]
|
|
4955
|
+
| Exclude<R, { [k in keyof Layers]: Layer.Layer.Success<Layers[k]> }[number]>
|
|
4956
|
+
>
|
|
4941
4957
|
/**
|
|
4942
4958
|
* Splits the context into two parts, providing one part using the
|
|
4943
4959
|
* specified layer/context/runtime and leaving the remainder `R0`
|
|
@@ -4947,7 +4963,7 @@ export const provide: {
|
|
|
4947
4963
|
*/
|
|
4948
4964
|
<ROut, E2, RIn>(
|
|
4949
4965
|
layer: Layer.Layer<ROut, E2, RIn>
|
|
4950
|
-
): <A, E, R>(self: Effect<A, E, R>) => Effect<A,
|
|
4966
|
+
): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E | E2, RIn | Exclude<R, ROut>>
|
|
4951
4967
|
/**
|
|
4952
4968
|
* Splits the context into two parts, providing one part using the
|
|
4953
4969
|
* specified layer/context/runtime and leaving the remainder `R0`
|
|
@@ -4964,6 +4980,32 @@ export const provide: {
|
|
|
4964
4980
|
* @category context
|
|
4965
4981
|
*/
|
|
4966
4982
|
<R2>(runtime: Runtime.Runtime<R2>): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, Exclude<R, R2>>
|
|
4983
|
+
/**
|
|
4984
|
+
* Splits the context into two parts, providing one part using the
|
|
4985
|
+
* specified layer/context/runtime and leaving the remainder `R0`
|
|
4986
|
+
*
|
|
4987
|
+
* @since 2.0.0
|
|
4988
|
+
* @category context
|
|
4989
|
+
*/
|
|
4990
|
+
<E2, R2>(
|
|
4991
|
+
managedRuntime: ManagedRuntime.ManagedRuntime<R2, E2>
|
|
4992
|
+
): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E | E2, Exclude<R, R2>>
|
|
4993
|
+
/**
|
|
4994
|
+
* Splits the context into two parts, providing one part using the
|
|
4995
|
+
* specified layer/context/runtime and leaving the remainder `R0`
|
|
4996
|
+
*
|
|
4997
|
+
* @since 2.0.0
|
|
4998
|
+
* @category context
|
|
4999
|
+
*/
|
|
5000
|
+
<A, E, R, const Layers extends [Layer.Layer.Any, ...Array<Layer.Layer.Any>]>(
|
|
5001
|
+
self: Effect<A, E, R>,
|
|
5002
|
+
layers: Layers
|
|
5003
|
+
): Effect<
|
|
5004
|
+
A,
|
|
5005
|
+
E | { [k in keyof Layers]: Layer.Layer.Error<Layers[k]> }[number],
|
|
5006
|
+
| { [k in keyof Layers]: Layer.Layer.Context<Layers[k]> }[number]
|
|
5007
|
+
| Exclude<R, { [k in keyof Layers]: Layer.Layer.Success<Layers[k]> }[number]>
|
|
5008
|
+
>
|
|
4967
5009
|
/**
|
|
4968
5010
|
* Splits the context into two parts, providing one part using the
|
|
4969
5011
|
* specified layer/context/runtime and leaving the remainder `R0`
|
|
@@ -4991,6 +5033,17 @@ export const provide: {
|
|
|
4991
5033
|
* @category context
|
|
4992
5034
|
*/
|
|
4993
5035
|
<A, E, R, R2>(self: Effect<A, E, R>, runtime: Runtime.Runtime<R2>): Effect<A, E, Exclude<R, R2>>
|
|
5036
|
+
/**
|
|
5037
|
+
* Splits the context into two parts, providing one part using the
|
|
5038
|
+
* specified layer/context/runtime and leaving the remainder `R0`
|
|
5039
|
+
*
|
|
5040
|
+
* @since 2.0.0
|
|
5041
|
+
* @category context
|
|
5042
|
+
*/
|
|
5043
|
+
<A, E, E2, R, R2>(
|
|
5044
|
+
self: Effect<A, E, R>,
|
|
5045
|
+
runtime: ManagedRuntime.ManagedRuntime<R2, E2>
|
|
5046
|
+
): Effect<A, E | E2, Exclude<R, R2>>
|
|
4994
5047
|
} = layer.effect_provide
|
|
4995
5048
|
|
|
4996
5049
|
/**
|
|
@@ -9102,7 +9155,7 @@ export const makeSemaphore: (permits: number) => Effect<Semaphore> = circular.ma
|
|
|
9102
9155
|
* @category latch
|
|
9103
9156
|
* @since 3.8.0
|
|
9104
9157
|
*/
|
|
9105
|
-
export interface Latch {
|
|
9158
|
+
export interface Latch extends Effect<void> {
|
|
9106
9159
|
/** open the latch, releasing all fibers waiting on it */
|
|
9107
9160
|
readonly open: Effect<void>
|
|
9108
9161
|
/** release all fibers waiting on the latch, without opening it */
|
|
@@ -9113,6 +9166,26 @@ export interface Latch {
|
|
|
9113
9166
|
readonly close: Effect<void>
|
|
9114
9167
|
/** only run the given effect when the latch is open */
|
|
9115
9168
|
readonly whenOpen: <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R>
|
|
9169
|
+
|
|
9170
|
+
readonly [Unify.typeSymbol]?: unknown
|
|
9171
|
+
readonly [Unify.unifySymbol]?: LatchUnify<this>
|
|
9172
|
+
readonly [Unify.ignoreSymbol]?: LatchUnifyIgnore
|
|
9173
|
+
}
|
|
9174
|
+
|
|
9175
|
+
/**
|
|
9176
|
+
* @category models
|
|
9177
|
+
* @since 3.8.0
|
|
9178
|
+
*/
|
|
9179
|
+
export interface LatchUnify<A extends { [Unify.typeSymbol]?: any }> extends EffectUnify<A> {
|
|
9180
|
+
Latch?: () => Latch
|
|
9181
|
+
}
|
|
9182
|
+
|
|
9183
|
+
/**
|
|
9184
|
+
* @category models
|
|
9185
|
+
* @since 3.8.0
|
|
9186
|
+
*/
|
|
9187
|
+
export interface LatchUnifyIgnore extends EffectUnifyIgnore {
|
|
9188
|
+
Effect?: true
|
|
9116
9189
|
}
|
|
9117
9190
|
|
|
9118
9191
|
/**
|
|
@@ -10362,12 +10435,13 @@ export declare namespace Tag {
|
|
|
10362
10435
|
Service?: `property "Service" is forbidden`
|
|
10363
10436
|
Identifier?: `property "Identifier" is forbidden`
|
|
10364
10437
|
_op?: `property "_op" is forbidden`
|
|
10365
|
-
_tag?: `property "_tag" is forbidden`
|
|
10366
10438
|
of?: `property "of" is forbidden`
|
|
10367
10439
|
context?: `property "context" is forbidden`
|
|
10368
10440
|
key?: `property "key" is forbidden`
|
|
10369
10441
|
stack?: `property "stack" is forbidden`
|
|
10370
10442
|
name?: `property "name" is forbidden`
|
|
10443
|
+
pipe?: `property "pipe" is forbidden`
|
|
10444
|
+
use?: `property "use" is forbidden`
|
|
10371
10445
|
}
|
|
10372
10446
|
|
|
10373
10447
|
/**
|
|
@@ -10375,29 +10449,62 @@ export declare namespace Tag {
|
|
|
10375
10449
|
* @category models
|
|
10376
10450
|
*/
|
|
10377
10451
|
export type AllowedType = (Record<PropertyKey, any> & ProhibitedType) | string | number | symbol
|
|
10452
|
+
|
|
10453
|
+
/**
|
|
10454
|
+
* @since 3.9.0
|
|
10455
|
+
* @category models
|
|
10456
|
+
*/
|
|
10457
|
+
export type Proxy<Self, Type> = {
|
|
10458
|
+
[
|
|
10459
|
+
k in keyof Type as Type[k] extends ((...args: [...infer Args]) => infer Ret) ?
|
|
10460
|
+
((...args: Readonly<Args>) => Ret) extends Type[k] ? k : never
|
|
10461
|
+
: k
|
|
10462
|
+
]: Type[k] extends (...args: [...infer Args]) => Effect<infer A, infer E, infer R> ?
|
|
10463
|
+
(...args: Readonly<Args>) => Effect<A, E, Self | R>
|
|
10464
|
+
: Type[k] extends (...args: [...infer Args]) => infer A ? (...args: Readonly<Args>) => Effect<A, never, Self>
|
|
10465
|
+
: Type[k] extends Effect<infer A, infer E, infer R> ? Effect<A, E, Self | R>
|
|
10466
|
+
: Effect<Type[k], never, Self>
|
|
10467
|
+
}
|
|
10468
|
+
}
|
|
10469
|
+
|
|
10470
|
+
const makeTagProxy = (TagClass: Context.Tag<any, any> & Record<PropertyKey, any>) => {
|
|
10471
|
+
const cache = new Map()
|
|
10472
|
+
return new Proxy(TagClass, {
|
|
10473
|
+
get(target: any, prop: any, receiver) {
|
|
10474
|
+
if (prop in target) {
|
|
10475
|
+
return Reflect.get(target, prop, receiver)
|
|
10476
|
+
}
|
|
10477
|
+
if (cache.has(prop)) {
|
|
10478
|
+
return cache.get(prop)
|
|
10479
|
+
}
|
|
10480
|
+
const fn = (...args: Array<any>) =>
|
|
10481
|
+
core.andThen(target, (s: any) => {
|
|
10482
|
+
if (typeof s[prop] === "function") {
|
|
10483
|
+
cache.set(prop, (...args: Array<any>) => core.andThen(target, (s: any) => s[prop](...args)))
|
|
10484
|
+
return s[prop](...args)
|
|
10485
|
+
}
|
|
10486
|
+
cache.set(prop, core.andThen(target, (s: any) => s[prop]))
|
|
10487
|
+
return s[prop]
|
|
10488
|
+
})
|
|
10489
|
+
const cn = core.andThen(target, (s: any) => s[prop])
|
|
10490
|
+
Object.assign(fn, cn)
|
|
10491
|
+
Object.setPrototypeOf(fn, Object.getPrototypeOf(cn))
|
|
10492
|
+
cache.set(prop, fn)
|
|
10493
|
+
return fn
|
|
10494
|
+
}
|
|
10495
|
+
})
|
|
10378
10496
|
}
|
|
10379
10497
|
|
|
10380
10498
|
/**
|
|
10381
10499
|
* @since 2.0.0
|
|
10382
|
-
* @category
|
|
10500
|
+
* @category context
|
|
10383
10501
|
*/
|
|
10384
10502
|
export const Tag: <const Id extends string>(id: Id) => <
|
|
10385
10503
|
Self,
|
|
10386
10504
|
Type extends Tag.AllowedType
|
|
10387
10505
|
>() =>
|
|
10388
10506
|
& Context.TagClass<Self, Id, Type>
|
|
10389
|
-
& (Type extends Record<PropertyKey, any> ? {
|
|
10390
|
-
[
|
|
10391
|
-
k in keyof Type as Type[k] extends ((...args: [...infer Args]) => infer Ret) ?
|
|
10392
|
-
((...args: Readonly<Args>) => Ret) extends Type[k] ? k : never
|
|
10393
|
-
: k
|
|
10394
|
-
]: Type[k] extends (...args: [...infer Args]) => Effect<infer A, infer E, infer R> ?
|
|
10395
|
-
(...args: Readonly<Args>) => Effect<A, E, Self | R>
|
|
10396
|
-
: Type[k] extends (...args: [...infer Args]) => infer A ? (...args: Readonly<Args>) => Effect<A, never, Self>
|
|
10397
|
-
: Type[k] extends Effect<infer A, infer E, infer R> ? Effect<A, E, Self | R>
|
|
10398
|
-
: Effect<Type[k], never, Self>
|
|
10399
|
-
} :
|
|
10400
|
-
{})
|
|
10507
|
+
& (Type extends Record<PropertyKey, any> ? Tag.Proxy<Self, Type> : {})
|
|
10401
10508
|
& {
|
|
10402
10509
|
use: <X>(
|
|
10403
10510
|
body: (_: Type) => X
|
|
@@ -10410,44 +10517,316 @@ export const Tag: <const Id extends string>(id: Id) => <
|
|
|
10410
10517
|
function TagClass() {}
|
|
10411
10518
|
Object.setPrototypeOf(TagClass, TagProto)
|
|
10412
10519
|
TagClass.key = id
|
|
10520
|
+
Object.defineProperty(TagClass, "use", {
|
|
10521
|
+
get() {
|
|
10522
|
+
return (body: (_: any) => any) => core.andThen(this, body)
|
|
10523
|
+
}
|
|
10524
|
+
})
|
|
10413
10525
|
Object.defineProperty(TagClass, "stack", {
|
|
10414
10526
|
get() {
|
|
10415
10527
|
return creationError.stack
|
|
10416
10528
|
}
|
|
10417
10529
|
})
|
|
10418
|
-
|
|
10419
|
-
|
|
10420
|
-
|
|
10421
|
-
|
|
10422
|
-
|
|
10423
|
-
|
|
10424
|
-
|
|
10425
|
-
|
|
10426
|
-
|
|
10427
|
-
|
|
10428
|
-
|
|
10429
|
-
|
|
10430
|
-
|
|
10530
|
+
return makeTagProxy(TagClass as any)
|
|
10531
|
+
}
|
|
10532
|
+
|
|
10533
|
+
/**
|
|
10534
|
+
* @since 3.9.0
|
|
10535
|
+
* @category context
|
|
10536
|
+
* @experimental might be up for breaking changes
|
|
10537
|
+
*/
|
|
10538
|
+
export const Service: <Self>() => {
|
|
10539
|
+
<
|
|
10540
|
+
const Key extends string,
|
|
10541
|
+
const Make extends
|
|
10542
|
+
| {
|
|
10543
|
+
readonly scoped: Effect<Service.AllowedType<Key, Make>, any, any>
|
|
10544
|
+
readonly dependencies?: ReadonlyArray<Layer.Layer.Any>
|
|
10545
|
+
readonly accessors?: boolean
|
|
10546
|
+
/** @deprecated */
|
|
10547
|
+
readonly ಠ_ಠ: never
|
|
10548
|
+
}
|
|
10549
|
+
| {
|
|
10550
|
+
readonly effect: Effect<Service.AllowedType<Key, Make>, any, any>
|
|
10551
|
+
readonly dependencies?: ReadonlyArray<Layer.Layer.Any>
|
|
10552
|
+
readonly accessors?: boolean
|
|
10553
|
+
/** @deprecated */
|
|
10554
|
+
readonly ಠ_ಠ: never
|
|
10555
|
+
}
|
|
10556
|
+
| {
|
|
10557
|
+
readonly sync: LazyArg<Service.AllowedType<Key, Make>>
|
|
10558
|
+
readonly dependencies?: ReadonlyArray<Layer.Layer.Any>
|
|
10559
|
+
readonly accessors?: boolean
|
|
10560
|
+
/** @deprecated */
|
|
10561
|
+
readonly ಠ_ಠ: never
|
|
10562
|
+
}
|
|
10563
|
+
| {
|
|
10564
|
+
readonly succeed: Service.AllowedType<Key, Make>
|
|
10565
|
+
readonly dependencies?: ReadonlyArray<Layer.Layer.Any>
|
|
10566
|
+
readonly accessors?: boolean
|
|
10567
|
+
/** @deprecated */
|
|
10568
|
+
readonly ಠ_ಠ: never
|
|
10569
|
+
}
|
|
10570
|
+
>(
|
|
10571
|
+
key: Key,
|
|
10572
|
+
make: Make
|
|
10573
|
+
): Service.Class<Self, Key, Make>
|
|
10574
|
+
<
|
|
10575
|
+
const Key extends string,
|
|
10576
|
+
const Make extends NoExcessProperties<{
|
|
10577
|
+
readonly scoped: Effect<Service.AllowedType<Key, Make>, any, any>
|
|
10578
|
+
readonly dependencies?: ReadonlyArray<Layer.Layer.Any>
|
|
10579
|
+
readonly accessors?: boolean
|
|
10580
|
+
}, Make>
|
|
10581
|
+
>(
|
|
10582
|
+
key: Key,
|
|
10583
|
+
make: Make
|
|
10584
|
+
): Service.Class<Self, Key, Make>
|
|
10585
|
+
<
|
|
10586
|
+
const Key extends string,
|
|
10587
|
+
const Make extends NoExcessProperties<{
|
|
10588
|
+
readonly effect: Effect<Service.AllowedType<Key, Make>, any, any>
|
|
10589
|
+
readonly dependencies?: ReadonlyArray<Layer.Layer.Any>
|
|
10590
|
+
readonly accessors?: boolean
|
|
10591
|
+
}, Make>
|
|
10592
|
+
>(
|
|
10593
|
+
key: Key,
|
|
10594
|
+
make: Make
|
|
10595
|
+
): Service.Class<Self, Key, Make>
|
|
10596
|
+
<
|
|
10597
|
+
const Key extends string,
|
|
10598
|
+
const Make extends NoExcessProperties<{
|
|
10599
|
+
readonly sync: LazyArg<Service.AllowedType<Key, Make>>
|
|
10600
|
+
readonly dependencies?: ReadonlyArray<Layer.Layer.Any>
|
|
10601
|
+
readonly accessors?: boolean
|
|
10602
|
+
}, Make>
|
|
10603
|
+
>(
|
|
10604
|
+
key: Key,
|
|
10605
|
+
make: Make
|
|
10606
|
+
): Service.Class<Self, Key, Make>
|
|
10607
|
+
<
|
|
10608
|
+
const Key extends string,
|
|
10609
|
+
const Make extends NoExcessProperties<{
|
|
10610
|
+
readonly succeed: Service.AllowedType<Key, Make>
|
|
10611
|
+
readonly dependencies?: ReadonlyArray<Layer.Layer.Any>
|
|
10612
|
+
readonly accessors?: boolean
|
|
10613
|
+
}, Make>
|
|
10614
|
+
>(
|
|
10615
|
+
key: Key,
|
|
10616
|
+
make: Make
|
|
10617
|
+
): Service.Class<Self, Key, Make>
|
|
10618
|
+
} = function() {
|
|
10619
|
+
return function() {
|
|
10620
|
+
const [id, maker] = arguments
|
|
10621
|
+
const proxy = "accessors" in maker ? maker["accessors"] : false
|
|
10622
|
+
const limit = Error.stackTraceLimit
|
|
10623
|
+
Error.stackTraceLimit = 2
|
|
10624
|
+
const creationError = new Error()
|
|
10625
|
+
Error.stackTraceLimit = limit
|
|
10626
|
+
|
|
10627
|
+
let patchState: "unchecked" | "plain" | "patched" = "unchecked"
|
|
10628
|
+
const TagClass: any = function(this: any, service: any) {
|
|
10629
|
+
if (patchState === "unchecked") {
|
|
10630
|
+
const proto = Object.getPrototypeOf(service)
|
|
10631
|
+
if (proto === Object.prototype || proto === null) {
|
|
10632
|
+
patchState = "plain"
|
|
10633
|
+
} else {
|
|
10634
|
+
const selfProto = Object.getPrototypeOf(this)
|
|
10635
|
+
Object.setPrototypeOf(selfProto, proto)
|
|
10636
|
+
patchState = "patched"
|
|
10431
10637
|
}
|
|
10432
|
-
|
|
10433
|
-
|
|
10434
|
-
|
|
10435
|
-
|
|
10436
|
-
|
|
10437
|
-
|
|
10438
|
-
|
|
10439
|
-
|
|
10440
|
-
|
|
10441
|
-
|
|
10442
|
-
|
|
10443
|
-
|
|
10444
|
-
|
|
10445
|
-
|
|
10446
|
-
|
|
10447
|
-
|
|
10448
|
-
|
|
10449
|
-
return
|
|
10638
|
+
}
|
|
10639
|
+
if (patchState === "plain") {
|
|
10640
|
+
Object.assign(this, service)
|
|
10641
|
+
} else if (patchState === "patched") {
|
|
10642
|
+
Object.setPrototypeOf(service, Object.getPrototypeOf(this))
|
|
10643
|
+
return service
|
|
10644
|
+
}
|
|
10645
|
+
}
|
|
10646
|
+
|
|
10647
|
+
TagClass.prototype._tag = id
|
|
10648
|
+
Object.defineProperty(TagClass, "make", {
|
|
10649
|
+
get() {
|
|
10650
|
+
return (service: any) => new this(service)
|
|
10651
|
+
}
|
|
10652
|
+
})
|
|
10653
|
+
Object.defineProperty(TagClass, "use", {
|
|
10654
|
+
get() {
|
|
10655
|
+
return (body: any) => core.andThen(this, body)
|
|
10450
10656
|
}
|
|
10451
10657
|
})
|
|
10452
|
-
|
|
10658
|
+
TagClass.key = id
|
|
10659
|
+
|
|
10660
|
+
Object.assign(TagClass, TagProto)
|
|
10661
|
+
|
|
10662
|
+
Object.defineProperty(TagClass, "stack", {
|
|
10663
|
+
get() {
|
|
10664
|
+
return creationError.stack
|
|
10665
|
+
}
|
|
10666
|
+
})
|
|
10667
|
+
|
|
10668
|
+
const hasDeps = "dependencies" in maker && maker.dependencies.length > 0
|
|
10669
|
+
const layerName = hasDeps ? "DefaultWithoutDependencies" : "Default"
|
|
10670
|
+
let layerCache: Layer.Layer.Any | undefined
|
|
10671
|
+
if ("effect" in maker) {
|
|
10672
|
+
Object.defineProperty(TagClass, layerName, {
|
|
10673
|
+
get(this: any) {
|
|
10674
|
+
return layerCache ??= layer.fromEffect(TagClass, map(maker.effect, (_) => new this(_)))
|
|
10675
|
+
}
|
|
10676
|
+
})
|
|
10677
|
+
} else if ("scoped" in maker) {
|
|
10678
|
+
Object.defineProperty(TagClass, layerName, {
|
|
10679
|
+
get(this: any) {
|
|
10680
|
+
return layerCache ??= layer.scoped(TagClass, map(maker.scoped, (_) => new this(_)))
|
|
10681
|
+
}
|
|
10682
|
+
})
|
|
10683
|
+
} else if ("sync" in maker) {
|
|
10684
|
+
Object.defineProperty(TagClass, layerName, {
|
|
10685
|
+
get(this: any) {
|
|
10686
|
+
return layerCache ??= layer.sync(TagClass, () => new this(maker.sync()))
|
|
10687
|
+
}
|
|
10688
|
+
})
|
|
10689
|
+
} else {
|
|
10690
|
+
Object.defineProperty(TagClass, layerName, {
|
|
10691
|
+
get(this: any) {
|
|
10692
|
+
return layerCache ??= layer.succeed(TagClass, new this(maker.succeed))
|
|
10693
|
+
}
|
|
10694
|
+
})
|
|
10695
|
+
}
|
|
10696
|
+
|
|
10697
|
+
if (hasDeps) {
|
|
10698
|
+
let layerWithDepsCache: Layer.Layer.Any | undefined
|
|
10699
|
+
Object.defineProperty(TagClass, "Default", {
|
|
10700
|
+
get(this: any) {
|
|
10701
|
+
return layerWithDepsCache ??= layer.provide(
|
|
10702
|
+
this.DefaultWithoutDependencies,
|
|
10703
|
+
maker.dependencies
|
|
10704
|
+
)
|
|
10705
|
+
}
|
|
10706
|
+
})
|
|
10707
|
+
}
|
|
10708
|
+
|
|
10709
|
+
return proxy === true ? makeTagProxy(TagClass) : TagClass
|
|
10453
10710
|
}
|
|
10711
|
+
}
|
|
10712
|
+
|
|
10713
|
+
/**
|
|
10714
|
+
* @since 3.9.0
|
|
10715
|
+
* @category context
|
|
10716
|
+
*/
|
|
10717
|
+
export declare namespace Service {
|
|
10718
|
+
/**
|
|
10719
|
+
* @since 3.9.0
|
|
10720
|
+
*/
|
|
10721
|
+
export interface ProhibitedType {
|
|
10722
|
+
Service?: `property "Service" is forbidden`
|
|
10723
|
+
Identifier?: `property "Identifier" is forbidden`
|
|
10724
|
+
Default?: `property "Default" is forbidden`
|
|
10725
|
+
DefaultWithoutDependencies?: `property "DefaultWithoutDependencies" is forbidden`
|
|
10726
|
+
_op_layer?: `property "_op_layer" is forbidden`
|
|
10727
|
+
_op?: `property "_op" is forbidden`
|
|
10728
|
+
of?: `property "of" is forbidden`
|
|
10729
|
+
make?: `property "make" is forbidden`
|
|
10730
|
+
context?: `property "context" is forbidden`
|
|
10731
|
+
key?: `property "key" is forbidden`
|
|
10732
|
+
stack?: `property "stack" is forbidden`
|
|
10733
|
+
name?: `property "name" is forbidden`
|
|
10734
|
+
pipe?: `property "pipe" is forbidden`
|
|
10735
|
+
use?: `property "use" is forbidden`
|
|
10736
|
+
_tag?: `property "_tag" is forbidden`
|
|
10737
|
+
}
|
|
10738
|
+
|
|
10739
|
+
/**
|
|
10740
|
+
* @since 3.9.0
|
|
10741
|
+
*/
|
|
10742
|
+
export type AllowedType<Key extends string, Make> = MakeAccessors<Make> extends true ?
|
|
10743
|
+
& Record<PropertyKey, any>
|
|
10744
|
+
& {
|
|
10745
|
+
readonly [K in Extract<keyof MakeService<Make>, keyof ProhibitedType>]: K extends "_tag" ? Key
|
|
10746
|
+
: ProhibitedType[K]
|
|
10747
|
+
}
|
|
10748
|
+
: Record<PropertyKey, any> & { readonly _tag?: Key }
|
|
10749
|
+
|
|
10750
|
+
/**
|
|
10751
|
+
* @since 3.9.0
|
|
10752
|
+
*/
|
|
10753
|
+
export type Class<
|
|
10754
|
+
Self,
|
|
10755
|
+
Key extends string,
|
|
10756
|
+
Make
|
|
10757
|
+
> =
|
|
10758
|
+
& {
|
|
10759
|
+
new(_: MakeService<Make>): MakeService<Make> & {
|
|
10760
|
+
readonly _tag: Key
|
|
10761
|
+
}
|
|
10762
|
+
readonly use: <X>(
|
|
10763
|
+
body: (_: Self) => X
|
|
10764
|
+
) => X extends Effect<infer A, infer E, infer R> ? Effect<A, E, R | Self> : Effect<X, never, Self>
|
|
10765
|
+
readonly make: (_: MakeService<Make>) => Self
|
|
10766
|
+
}
|
|
10767
|
+
& Context.Tag<Self, Self>
|
|
10768
|
+
& (MakeAccessors<Make> extends true ? Tag.Proxy<Self, MakeService<Make>> : {})
|
|
10769
|
+
& (MakeDeps<Make> extends never ? {
|
|
10770
|
+
readonly Default: Layer.Layer<Self, MakeError<Make>, MakeContext<Make>>
|
|
10771
|
+
} :
|
|
10772
|
+
{
|
|
10773
|
+
readonly DefaultWithoutDependencies: Layer.Layer<Self, MakeError<Make>, MakeContext<Make>>
|
|
10774
|
+
readonly Default: Layer.Layer<
|
|
10775
|
+
Self,
|
|
10776
|
+
MakeError<Make> | MakeDepsE<Make>,
|
|
10777
|
+
| Exclude<MakeContext<Make>, MakeDepsOut<Make>>
|
|
10778
|
+
| MakeDepsIn<Make>
|
|
10779
|
+
>
|
|
10780
|
+
})
|
|
10781
|
+
|
|
10782
|
+
/**
|
|
10783
|
+
* @since 3.9.0
|
|
10784
|
+
*/
|
|
10785
|
+
export type MakeService<Make> = Make extends { readonly effect: Effect<infer _A, infer _E, infer _R> } ? _A
|
|
10786
|
+
: Make extends { readonly scoped: Effect<infer _A, infer _E, infer _R> } ? _A
|
|
10787
|
+
: Make extends { readonly sync: LazyArg<infer A> } ? A
|
|
10788
|
+
: Make extends { readonly succeed: infer A } ? A
|
|
10789
|
+
: never
|
|
10790
|
+
|
|
10791
|
+
/**
|
|
10792
|
+
* @since 3.9.0
|
|
10793
|
+
*/
|
|
10794
|
+
export type MakeError<Make> = Make extends { readonly effect: Effect<infer _A, infer _E, infer _R> } ? _E
|
|
10795
|
+
: Make extends { readonly scoped: Effect<infer _A, infer _E, infer _R> } ? _E
|
|
10796
|
+
: never
|
|
10797
|
+
|
|
10798
|
+
/**
|
|
10799
|
+
* @since 3.9.0
|
|
10800
|
+
*/
|
|
10801
|
+
export type MakeContext<Make> = Make extends { readonly effect: Effect<infer _A, infer _E, infer _R> } ? _R
|
|
10802
|
+
: Make extends { readonly scoped: Effect<infer _A, infer _E, infer _R> } ? Exclude<_R, Scope.Scope>
|
|
10803
|
+
: never
|
|
10804
|
+
|
|
10805
|
+
/**
|
|
10806
|
+
* @since 3.9.0
|
|
10807
|
+
*/
|
|
10808
|
+
export type MakeDeps<Make> = Make extends { readonly dependencies: ReadonlyArray<Layer.Layer.Any> }
|
|
10809
|
+
? Make["dependencies"][number]
|
|
10810
|
+
: never
|
|
10811
|
+
|
|
10812
|
+
/**
|
|
10813
|
+
* @since 3.9.0
|
|
10814
|
+
*/
|
|
10815
|
+
export type MakeDepsOut<Make> = Contravariant.Type<MakeDeps<Make>[Layer.LayerTypeId]["_ROut"]>
|
|
10816
|
+
|
|
10817
|
+
/**
|
|
10818
|
+
* @since 3.9.0
|
|
10819
|
+
*/
|
|
10820
|
+
export type MakeDepsE<Make> = Covariant.Type<MakeDeps<Make>[Layer.LayerTypeId]["_E"]>
|
|
10821
|
+
|
|
10822
|
+
/**
|
|
10823
|
+
* @since 3.9.0
|
|
10824
|
+
*/
|
|
10825
|
+
export type MakeDepsIn<Make> = Covariant.Type<MakeDeps<Make>[Layer.LayerTypeId]["_RIn"]>
|
|
10826
|
+
|
|
10827
|
+
/**
|
|
10828
|
+
* @since 3.9.0
|
|
10829
|
+
*/
|
|
10830
|
+
export type MakeAccessors<Make> = Make extends { readonly accessors: true } ? true
|
|
10831
|
+
: false
|
|
10832
|
+
}
|
package/src/FiberHandle.ts
CHANGED
package/src/FiberMap.ts
CHANGED
package/src/FiberSet.ts
CHANGED
package/src/HashMap.ts
CHANGED
|
@@ -66,6 +66,22 @@ export declare namespace HashMap {
|
|
|
66
66
|
* @category type-level
|
|
67
67
|
*/
|
|
68
68
|
export type Value<T extends HashMap<any, any>> = [T] extends [HashMap<infer _K, infer _V>] ? _V : never
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* This type-level utility extracts the entry type `[K, V]` from a `HashMap<K, V>` type.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* import { HashMap } from "effect"
|
|
75
|
+
*
|
|
76
|
+
* declare const hm: HashMap.HashMap<string, number>
|
|
77
|
+
*
|
|
78
|
+
* // $ExpectType [string, number]
|
|
79
|
+
* type V = HashMap.HashMap.Entry<typeof hm>
|
|
80
|
+
*
|
|
81
|
+
* @since 3.9.0
|
|
82
|
+
* @category type-level
|
|
83
|
+
*/
|
|
84
|
+
export type Entry<T extends HashMap<any, any>> = [Key<T>, Value<T>]
|
|
69
85
|
}
|
|
70
86
|
|
|
71
87
|
/**
|