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
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
import type * as Effect from "../Effect.js"
|
|
2
|
+
import * as Effectable from "../Effectable.js"
|
|
2
3
|
import type { Exit } from "../Exit.js"
|
|
3
4
|
import type * as Fiber from "../Fiber.js"
|
|
4
5
|
import type * as Layer from "../Layer.js"
|
|
5
|
-
import type
|
|
6
|
+
import type * as M from "../ManagedRuntime.js"
|
|
6
7
|
import { pipeArguments } from "../Pipeable.js"
|
|
8
|
+
import { hasProperty } from "../Predicate.js"
|
|
7
9
|
import type * as Runtime from "../Runtime.js"
|
|
8
10
|
import * as Scope from "../Scope.js"
|
|
9
11
|
import * as effect from "./core-effect.js"
|
|
10
12
|
import * as core from "./core.js"
|
|
11
13
|
import * as fiberRuntime from "./fiberRuntime.js"
|
|
12
14
|
import * as internalLayer from "./layer.js"
|
|
15
|
+
import * as circular from "./managedRuntime/circular.js"
|
|
13
16
|
import * as internalRuntime from "./runtime.js"
|
|
14
17
|
|
|
15
|
-
interface ManagedRuntimeImpl<R, E> extends ManagedRuntime<R, E> {
|
|
18
|
+
interface ManagedRuntimeImpl<R, E> extends M.ManagedRuntime<R, E> {
|
|
16
19
|
readonly scope: Scope.CloseableScope
|
|
17
20
|
cachedRuntime: Runtime.Runtime<R> | undefined
|
|
18
21
|
}
|
|
19
22
|
|
|
23
|
+
/** @internal */
|
|
24
|
+
export const isManagedRuntime = (u: unknown): u is M.ManagedRuntime<unknown, unknown> => hasProperty(u, circular.TypeId)
|
|
25
|
+
|
|
20
26
|
function provide<R, ER, A, E>(
|
|
21
27
|
managed: ManagedRuntimeImpl<R, ER>,
|
|
22
28
|
effect: Effect.Effect<A, E, R>
|
|
@@ -32,34 +38,42 @@ function provide<R, ER, A, E>(
|
|
|
32
38
|
)
|
|
33
39
|
}
|
|
34
40
|
|
|
41
|
+
const ManagedRuntimeProto = {
|
|
42
|
+
...Effectable.CommitPrototype,
|
|
43
|
+
[circular.TypeId]: circular.TypeId,
|
|
44
|
+
pipe() {
|
|
45
|
+
return pipeArguments(this, arguments)
|
|
46
|
+
},
|
|
47
|
+
commit(this: ManagedRuntimeImpl<unknown, unknown>) {
|
|
48
|
+
return this.runtimeEffect
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
35
52
|
/** @internal */
|
|
36
53
|
export const make = <R, ER>(
|
|
37
54
|
layer: Layer.Layer<R, ER, never>,
|
|
38
55
|
memoMap?: Layer.MemoMap
|
|
39
|
-
): ManagedRuntime<R, ER> => {
|
|
56
|
+
): M.ManagedRuntime<R, ER> => {
|
|
40
57
|
memoMap = memoMap ?? internalLayer.unsafeMakeMemoMap()
|
|
41
58
|
const scope = internalRuntime.unsafeRunSyncEffect(fiberRuntime.scopeMake())
|
|
42
|
-
const
|
|
59
|
+
const runtimeEffect = internalRuntime.unsafeRunSyncEffect(
|
|
60
|
+
effect.memoize(
|
|
61
|
+
core.tap(
|
|
62
|
+
Scope.extend(
|
|
63
|
+
internalLayer.toRuntimeWithMemoMap(layer, memoMap),
|
|
64
|
+
scope
|
|
65
|
+
),
|
|
66
|
+
(rt) => {
|
|
67
|
+
self.cachedRuntime = rt
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
)
|
|
71
|
+
)
|
|
72
|
+
const self: ManagedRuntimeImpl<R, ER> = Object.assign(Object.create(ManagedRuntimeProto), {
|
|
43
73
|
memoMap,
|
|
44
74
|
scope,
|
|
45
|
-
runtimeEffect
|
|
46
|
-
.unsafeRunSyncEffect(
|
|
47
|
-
effect.memoize(
|
|
48
|
-
core.tap(
|
|
49
|
-
Scope.extend(
|
|
50
|
-
internalLayer.toRuntimeWithMemoMap(layer, memoMap),
|
|
51
|
-
scope
|
|
52
|
-
),
|
|
53
|
-
(rt) => {
|
|
54
|
-
self.cachedRuntime = rt
|
|
55
|
-
}
|
|
56
|
-
)
|
|
57
|
-
)
|
|
58
|
-
),
|
|
75
|
+
runtimeEffect,
|
|
59
76
|
cachedRuntime: undefined,
|
|
60
|
-
pipe() {
|
|
61
|
-
return pipeArguments(this, arguments)
|
|
62
|
-
},
|
|
63
77
|
runtime() {
|
|
64
78
|
return self.cachedRuntime === undefined ?
|
|
65
79
|
internalRuntime.unsafeRunPromiseEffect(self.runtimeEffect) :
|
|
@@ -110,6 +124,6 @@ export const make = <R, ER>(
|
|
|
110
124
|
internalRuntime.unsafeRunPromiseEffect(provide(self, effect), options) :
|
|
111
125
|
internalRuntime.unsafeRunPromise(self.cachedRuntime)(effect, options)
|
|
112
126
|
}
|
|
113
|
-
}
|
|
127
|
+
})
|
|
114
128
|
return self
|
|
115
129
|
}
|
package/src/internal/option.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import * as Equal from "../Equal.js"
|
|
6
6
|
import * as Hash from "../Hash.js"
|
|
7
|
-
import { format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
|
|
7
|
+
import { DenoInspectSymbol, format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
|
|
8
8
|
import type * as Option from "../Option.js"
|
|
9
9
|
import { hasProperty } from "../Predicate.js"
|
|
10
10
|
import { EffectPrototype } from "./effectable.js"
|
|
@@ -16,6 +16,9 @@ const CommonProto = {
|
|
|
16
16
|
[TypeId]: {
|
|
17
17
|
_A: (_: never) => _
|
|
18
18
|
},
|
|
19
|
+
[DenoInspectSymbol]<A>(this: Option.Option<A>) {
|
|
20
|
+
return this.toJSON()
|
|
21
|
+
},
|
|
19
22
|
[NodeInspectSymbol]<A>(this: Option.Option<A>) {
|
|
20
23
|
return this.toJSON()
|
|
21
24
|
},
|
package/src/internal/pool.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { Cause } from "effect/Cause"
|
|
|
2
2
|
import * as Context from "../Context.js"
|
|
3
3
|
import * as Duration from "../Duration.js"
|
|
4
4
|
import type { Effect, Semaphore } from "../Effect.js"
|
|
5
|
+
import * as Effectable from "../Effectable.js"
|
|
5
6
|
import type { Exit } from "../Exit.js"
|
|
6
7
|
import { dual, identity } from "../Function.js"
|
|
7
8
|
import * as Iterable from "../Iterable.js"
|
|
@@ -122,7 +123,7 @@ interface Strategy<A, E> {
|
|
|
122
123
|
readonly reclaim: (pool: PoolImpl<A, E>) => Effect<Option.Option<PoolItem<A, E>>>
|
|
123
124
|
}
|
|
124
125
|
|
|
125
|
-
class PoolImpl<A, E> implements Pool<A, E> {
|
|
126
|
+
class PoolImpl<A, E> extends Effectable.Class<A, E, Scope> implements Pool<A, E> {
|
|
126
127
|
readonly [PoolTypeId]: Pool.Variance<A, E>[PoolTypeId_]
|
|
127
128
|
|
|
128
129
|
isShuttingDown = false
|
|
@@ -140,6 +141,7 @@ class PoolImpl<A, E> implements Pool<A, E> {
|
|
|
140
141
|
readonly strategy: Strategy<A, E>,
|
|
141
142
|
readonly targetUtilization: number
|
|
142
143
|
) {
|
|
144
|
+
super()
|
|
143
145
|
this[PoolTypeId] = poolVariance
|
|
144
146
|
this.semaphore = circular.unsafeMakeSemaphore(concurrency * maxSize)
|
|
145
147
|
}
|
|
@@ -253,6 +255,10 @@ class PoolImpl<A, E> implements Pool<A, E> {
|
|
|
253
255
|
)
|
|
254
256
|
)
|
|
255
257
|
|
|
258
|
+
commit() {
|
|
259
|
+
return this.get
|
|
260
|
+
}
|
|
261
|
+
|
|
256
262
|
readonly get: Effect<A, E, Scope> = core.flatMap(
|
|
257
263
|
core.suspend(() => this.isShuttingDown ? core.interrupt : this.getPoolItem),
|
|
258
264
|
(_) => _.exit
|
|
@@ -2,7 +2,7 @@ import * as Chunk from "../Chunk.js"
|
|
|
2
2
|
import * as Equal from "../Equal.js"
|
|
3
3
|
import { dual, pipe } from "../Function.js"
|
|
4
4
|
import * as Hash from "../Hash.js"
|
|
5
|
-
import { format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
|
|
5
|
+
import { DenoInspectSymbol, format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
|
|
6
6
|
import * as Option from "../Option.js"
|
|
7
7
|
import type * as Order from "../Order.js"
|
|
8
8
|
import type * as Ordering from "../Ordering.js"
|
|
@@ -71,6 +71,9 @@ const RedBlackTreeProto: RBT.RedBlackTree<unknown, unknown> = {
|
|
|
71
71
|
values: Array.from(this).map(toJSON)
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
|
+
[DenoInspectSymbol]() {
|
|
75
|
+
return this.toJSON()
|
|
76
|
+
},
|
|
74
77
|
[NodeInspectSymbol]() {
|
|
75
78
|
return this.toJSON()
|
|
76
79
|
},
|
package/src/internal/resource.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type * as Resource from "../Resource.js"
|
|
|
4
4
|
import type * as Schedule from "../Schedule.js"
|
|
5
5
|
import type * as Scope from "../Scope.js"
|
|
6
6
|
import * as core from "./core.js"
|
|
7
|
+
import * as effectable from "./effectable.js"
|
|
7
8
|
import * as fiberRuntime from "./fiberRuntime.js"
|
|
8
9
|
import * as _schedule from "./schedule.js"
|
|
9
10
|
import * as scopedRef from "./scopedRef.js"
|
|
@@ -23,6 +24,15 @@ const resourceVariance = {
|
|
|
23
24
|
_A: (_: any) => _
|
|
24
25
|
}
|
|
25
26
|
|
|
27
|
+
/** @internal */
|
|
28
|
+
const proto: ThisType<Resource.Resource<any, any>> = {
|
|
29
|
+
...effectable.CommitPrototype,
|
|
30
|
+
commit() {
|
|
31
|
+
return get(this)
|
|
32
|
+
},
|
|
33
|
+
[ResourceTypeId]: resourceVariance
|
|
34
|
+
}
|
|
35
|
+
|
|
26
36
|
/** @internal */
|
|
27
37
|
export const auto = <A, E, R, Out, R2>(
|
|
28
38
|
acquire: Effect.Effect<A, E, R>,
|
|
@@ -46,11 +56,12 @@ export const manual = <A, E, R>(
|
|
|
46
56
|
core.flatMap(core.context<R>(), (env) =>
|
|
47
57
|
pipe(
|
|
48
58
|
scopedRef.fromAcquire(core.exit(acquire)),
|
|
49
|
-
core.map((ref) =>
|
|
50
|
-
|
|
51
|
-
scopedRef
|
|
52
|
-
acquire
|
|
53
|
-
|
|
59
|
+
core.map((ref) => {
|
|
60
|
+
const resource = Object.create(proto)
|
|
61
|
+
resource.scopedRef = ref
|
|
62
|
+
resource.acquire = core.provideContext(acquire, env)
|
|
63
|
+
return resource
|
|
64
|
+
})
|
|
54
65
|
))
|
|
55
66
|
|
|
56
67
|
/** @internal */
|
package/src/internal/runtime.ts
CHANGED
|
@@ -195,6 +195,9 @@ class FiberFailureImpl extends Error implements Runtime.FiberFailure {
|
|
|
195
195
|
toString(): string {
|
|
196
196
|
return "(FiberFailure) " + (this.stack ?? this.message)
|
|
197
197
|
}
|
|
198
|
+
[Inspectable.DenoInspectSymbol](): unknown {
|
|
199
|
+
return this.toString()
|
|
200
|
+
}
|
|
198
201
|
[Inspectable.NodeInspectSymbol](): unknown {
|
|
199
202
|
return this.toString()
|
|
200
203
|
}
|
|
@@ -2,11 +2,11 @@ import * as Context from "../Context.js"
|
|
|
2
2
|
import type * as Effect from "../Effect.js"
|
|
3
3
|
import type { LazyArg } from "../Function.js"
|
|
4
4
|
import { dual, pipe } from "../Function.js"
|
|
5
|
-
import { pipeArguments } from "../Pipeable.js"
|
|
6
5
|
import type * as Scope from "../Scope.js"
|
|
7
6
|
import type * as ScopedRef from "../ScopedRef.js"
|
|
8
7
|
import * as core from "./core.js"
|
|
9
8
|
import * as circular from "./effect/circular.js"
|
|
9
|
+
import * as effectable from "./effectable.js"
|
|
10
10
|
import * as fiberRuntime from "./fiberRuntime.js"
|
|
11
11
|
import * as ref from "./ref.js"
|
|
12
12
|
import * as synchronized from "./synchronizedRef.js"
|
|
@@ -25,6 +25,15 @@ const scopedRefVariance = {
|
|
|
25
25
|
_A: (_: any) => _
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
/** @internal */
|
|
29
|
+
const proto: ThisType<ScopedRef.ScopedRef<any>> = {
|
|
30
|
+
...effectable.CommitPrototype,
|
|
31
|
+
commit() {
|
|
32
|
+
return get(this)
|
|
33
|
+
},
|
|
34
|
+
[ScopedRefTypeId]: scopedRefVariance
|
|
35
|
+
}
|
|
36
|
+
|
|
28
37
|
/** @internal */
|
|
29
38
|
const close = <A>(self: ScopedRef.ScopedRef<A>): Effect.Effect<void> =>
|
|
30
39
|
core.flatMap(ref.get(self.ref), (tuple) => tuple[0].close(core.exitVoid))
|
|
@@ -41,13 +50,8 @@ export const fromAcquire = <A, E, R>(
|
|
|
41
50
|
core.flatMap((value) =>
|
|
42
51
|
circular.makeSynchronized([newScope, value] as const).pipe(
|
|
43
52
|
core.flatMap((ref) => {
|
|
44
|
-
const scopedRef
|
|
45
|
-
|
|
46
|
-
pipe() {
|
|
47
|
-
return pipeArguments(this, arguments)
|
|
48
|
-
},
|
|
49
|
-
ref
|
|
50
|
-
}
|
|
53
|
+
const scopedRef = Object.create(proto)
|
|
54
|
+
scopedRef.ref = ref
|
|
51
55
|
return pipe(
|
|
52
56
|
fiberRuntime.addFinalizer(() => close(scopedRef)),
|
|
53
57
|
core.as(scopedRef)
|
package/src/internal/stm/core.ts
CHANGED
|
@@ -56,7 +56,7 @@ export type Primitive =
|
|
|
56
56
|
|
|
57
57
|
/** @internal */
|
|
58
58
|
type Op<Tag extends string, Body = {}> = STM.STM<never> & Body & {
|
|
59
|
-
readonly
|
|
59
|
+
readonly _op: OP_COMMIT
|
|
60
60
|
readonly effect_instruction_i0: Tag
|
|
61
61
|
}
|
|
62
62
|
|
|
@@ -150,7 +150,6 @@ const stmVariance = {
|
|
|
150
150
|
|
|
151
151
|
/** @internal */
|
|
152
152
|
class STMPrimitive implements STM.STM<any, any, any> {
|
|
153
|
-
public _tag = OP_COMMIT
|
|
154
153
|
public _op = OP_COMMIT
|
|
155
154
|
public effect_instruction_i1: any = undefined
|
|
156
155
|
public effect_instruction_i2: any = undefined;
|
|
@@ -481,7 +480,7 @@ export class STMDriver<in out R, out E, out A> {
|
|
|
481
480
|
try {
|
|
482
481
|
const current = curr
|
|
483
482
|
if (current) {
|
|
484
|
-
switch (current.
|
|
483
|
+
switch (current._op) {
|
|
485
484
|
case "Tag": {
|
|
486
485
|
curr = effect((_, __, env) => Context.unsafeGet(env, current)) as Primitive
|
|
487
486
|
break
|
package/src/internal/trie.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Equal from "../Equal.js"
|
|
2
2
|
import { dual, identity, pipe } from "../Function.js"
|
|
3
3
|
import * as Hash from "../Hash.js"
|
|
4
|
-
import { format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
|
|
4
|
+
import { DenoInspectSymbol, format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
|
|
5
5
|
import * as Option from "../Option.js"
|
|
6
6
|
import type * as Ordering from "../Ordering.js"
|
|
7
7
|
import { pipeArguments } from "../Pipeable.js"
|
|
@@ -60,6 +60,9 @@ const TrieProto: TR.Trie<unknown> = {
|
|
|
60
60
|
values: Array.from(this).map(toJSON)
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
|
+
[DenoInspectSymbol]() {
|
|
64
|
+
return this.toJSON()
|
|
65
|
+
},
|
|
63
66
|
[NodeInspectSymbol]() {
|
|
64
67
|
return this.toJSON()
|
|
65
68
|
},
|
package/src/internal/version.ts
CHANGED