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.
Files changed (302) hide show
  1. package/dist/cjs/Array.js +24 -3
  2. package/dist/cjs/Array.js.map +1 -1
  3. package/dist/cjs/BigDecimal.js +3 -0
  4. package/dist/cjs/BigDecimal.js.map +1 -1
  5. package/dist/cjs/Chunk.js +3 -0
  6. package/dist/cjs/Chunk.js.map +1 -1
  7. package/dist/cjs/Context.js.map +1 -1
  8. package/dist/cjs/Cron.js +3 -0
  9. package/dist/cjs/Cron.js.map +1 -1
  10. package/dist/cjs/DateTime.js +6 -0
  11. package/dist/cjs/DateTime.js.map +1 -1
  12. package/dist/cjs/Duration.js +3 -0
  13. package/dist/cjs/Duration.js.map +1 -1
  14. package/dist/cjs/Effect.js +122 -35
  15. package/dist/cjs/Effect.js.map +1 -1
  16. package/dist/cjs/FiberHandle.js +3 -0
  17. package/dist/cjs/FiberHandle.js.map +1 -1
  18. package/dist/cjs/FiberMap.js +3 -0
  19. package/dist/cjs/FiberMap.js.map +1 -1
  20. package/dist/cjs/FiberSet.js +3 -0
  21. package/dist/cjs/FiberSet.js.map +1 -1
  22. package/dist/cjs/HashMap.js.map +1 -1
  23. package/dist/cjs/Inspectable.js +15 -1
  24. package/dist/cjs/Inspectable.js.map +1 -1
  25. package/dist/cjs/Layer.js.map +1 -1
  26. package/dist/cjs/List.js +6 -0
  27. package/dist/cjs/List.js.map +1 -1
  28. package/dist/cjs/ManagedRuntime.js +16 -1
  29. package/dist/cjs/ManagedRuntime.js.map +1 -1
  30. package/dist/cjs/Micro.js +6 -0
  31. package/dist/cjs/Micro.js.map +1 -1
  32. package/dist/cjs/MutableHashMap.js +3 -0
  33. package/dist/cjs/MutableHashMap.js.map +1 -1
  34. package/dist/cjs/MutableHashSet.js +3 -0
  35. package/dist/cjs/MutableHashSet.js.map +1 -1
  36. package/dist/cjs/MutableList.js +3 -0
  37. package/dist/cjs/MutableList.js.map +1 -1
  38. package/dist/cjs/MutableQueue.js +3 -0
  39. package/dist/cjs/MutableQueue.js.map +1 -1
  40. package/dist/cjs/MutableRef.js +3 -0
  41. package/dist/cjs/MutableRef.js.map +1 -1
  42. package/dist/cjs/Pool.js.map +1 -1
  43. package/dist/cjs/Predicate.js +18 -2
  44. package/dist/cjs/Predicate.js.map +1 -1
  45. package/dist/cjs/RegExp.js +20 -1
  46. package/dist/cjs/RegExp.js.map +1 -1
  47. package/dist/cjs/Resource.js.map +1 -1
  48. package/dist/cjs/ScopedRef.js.map +1 -1
  49. package/dist/cjs/SortedMap.js +3 -0
  50. package/dist/cjs/SortedMap.js.map +1 -1
  51. package/dist/cjs/SortedSet.js +3 -0
  52. package/dist/cjs/SortedSet.js.map +1 -1
  53. package/dist/cjs/Tuple.js +21 -2
  54. package/dist/cjs/Tuple.js.map +1 -1
  55. package/dist/cjs/Unify.js.map +1 -1
  56. package/dist/cjs/internal/cause.js +3 -0
  57. package/dist/cjs/internal/cause.js.map +1 -1
  58. package/dist/cjs/internal/context.js +6 -1
  59. package/dist/cjs/internal/context.js.map +1 -1
  60. package/dist/cjs/internal/core-effect.js.map +1 -1
  61. package/dist/cjs/internal/core.js +12 -0
  62. package/dist/cjs/internal/core.js.map +1 -1
  63. package/dist/cjs/internal/effect/circular.js +5 -1
  64. package/dist/cjs/internal/effect/circular.js.map +1 -1
  65. package/dist/cjs/internal/fiberId.js +9 -0
  66. package/dist/cjs/internal/fiberId.js.map +1 -1
  67. package/dist/cjs/internal/hashMap.js +3 -0
  68. package/dist/cjs/internal/hashMap.js.map +1 -1
  69. package/dist/cjs/internal/hashSet.js +3 -0
  70. package/dist/cjs/internal/hashSet.js.map +1 -1
  71. package/dist/cjs/internal/layer.js +33 -19
  72. package/dist/cjs/internal/layer.js.map +1 -1
  73. package/dist/cjs/internal/mailbox.js +3 -0
  74. package/dist/cjs/internal/mailbox.js.map +1 -1
  75. package/dist/cjs/internal/managedRuntime/circular.js +10 -0
  76. package/dist/cjs/internal/managedRuntime/circular.js.map +1 -0
  77. package/dist/cjs/internal/managedRuntime.js +23 -9
  78. package/dist/cjs/internal/managedRuntime.js.map +1 -1
  79. package/dist/cjs/internal/option.js +3 -0
  80. package/dist/cjs/internal/option.js.map +1 -1
  81. package/dist/cjs/internal/pool.js +6 -1
  82. package/dist/cjs/internal/pool.js.map +1 -1
  83. package/dist/cjs/internal/redBlackTree.js +3 -0
  84. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  85. package/dist/cjs/internal/resource.js +15 -5
  86. package/dist/cjs/internal/resource.js.map +1 -1
  87. package/dist/cjs/internal/runtime.js +3 -0
  88. package/dist/cjs/internal/runtime.js.map +1 -1
  89. package/dist/cjs/internal/scopedRef.js +11 -8
  90. package/dist/cjs/internal/scopedRef.js.map +1 -1
  91. package/dist/cjs/internal/stm/core.js +1 -2
  92. package/dist/cjs/internal/stm/core.js.map +1 -1
  93. package/dist/cjs/internal/trie.js +3 -0
  94. package/dist/cjs/internal/trie.js.map +1 -1
  95. package/dist/cjs/internal/version.js +1 -1
  96. package/dist/dts/Array.d.ts +51 -2
  97. package/dist/dts/Array.d.ts.map +1 -1
  98. package/dist/dts/BigDecimal.d.ts.map +1 -1
  99. package/dist/dts/Chunk.d.ts.map +1 -1
  100. package/dist/dts/Context.d.ts +2 -3
  101. package/dist/dts/Context.d.ts.map +1 -1
  102. package/dist/dts/Cron.d.ts.map +1 -1
  103. package/dist/dts/DateTime.d.ts.map +1 -1
  104. package/dist/dts/Deferred.d.ts +1 -1
  105. package/dist/dts/Deferred.d.ts.map +1 -1
  106. package/dist/dts/Duration.d.ts.map +1 -1
  107. package/dist/dts/Effect.d.ts +233 -10
  108. package/dist/dts/Effect.d.ts.map +1 -1
  109. package/dist/dts/FiberHandle.d.ts.map +1 -1
  110. package/dist/dts/FiberMap.d.ts.map +1 -1
  111. package/dist/dts/FiberSet.d.ts.map +1 -1
  112. package/dist/dts/HashMap.d.ts +15 -0
  113. package/dist/dts/HashMap.d.ts.map +1 -1
  114. package/dist/dts/Inspectable.d.ts +15 -0
  115. package/dist/dts/Inspectable.d.ts.map +1 -1
  116. package/dist/dts/Layer.d.ts +46 -5
  117. package/dist/dts/Layer.d.ts.map +1 -1
  118. package/dist/dts/List.d.ts.map +1 -1
  119. package/dist/dts/ManagedRuntime.d.ts +41 -2
  120. package/dist/dts/ManagedRuntime.d.ts.map +1 -1
  121. package/dist/dts/Micro.d.ts.map +1 -1
  122. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  123. package/dist/dts/MutableHashSet.d.ts.map +1 -1
  124. package/dist/dts/MutableList.d.ts.map +1 -1
  125. package/dist/dts/MutableQueue.d.ts.map +1 -1
  126. package/dist/dts/MutableRef.d.ts.map +1 -1
  127. package/dist/dts/Pool.d.ts +21 -1
  128. package/dist/dts/Pool.d.ts.map +1 -1
  129. package/dist/dts/Predicate.d.ts +15 -0
  130. package/dist/dts/Predicate.d.ts.map +1 -1
  131. package/dist/dts/Queue.d.ts +2 -2
  132. package/dist/dts/Queue.d.ts.map +1 -1
  133. package/dist/dts/RegExp.d.ts +12 -2
  134. package/dist/dts/RegExp.d.ts.map +1 -1
  135. package/dist/dts/Resource.d.ts +21 -1
  136. package/dist/dts/Resource.d.ts.map +1 -1
  137. package/dist/dts/ScopedRef.d.ts +21 -1
  138. package/dist/dts/ScopedRef.d.ts.map +1 -1
  139. package/dist/dts/SortedMap.d.ts.map +1 -1
  140. package/dist/dts/SortedSet.d.ts.map +1 -1
  141. package/dist/dts/Tuple.d.ts +59 -0
  142. package/dist/dts/Tuple.d.ts.map +1 -1
  143. package/dist/dts/Types.d.ts +39 -0
  144. package/dist/dts/Types.d.ts.map +1 -1
  145. package/dist/dts/Unify.d.ts +8 -13
  146. package/dist/dts/Unify.d.ts.map +1 -1
  147. package/dist/dts/internal/core.d.ts.map +1 -1
  148. package/dist/dts/internal/hashMap.d.ts.map +1 -1
  149. package/dist/dts/internal/layer.d.ts.map +1 -1
  150. package/dist/dts/internal/managedRuntime/circular.d.ts +2 -0
  151. package/dist/dts/internal/managedRuntime/circular.d.ts.map +1 -0
  152. package/dist/esm/Array.js +21 -0
  153. package/dist/esm/Array.js.map +1 -1
  154. package/dist/esm/BigDecimal.js +4 -1
  155. package/dist/esm/BigDecimal.js.map +1 -1
  156. package/dist/esm/Chunk.js +4 -1
  157. package/dist/esm/Chunk.js.map +1 -1
  158. package/dist/esm/Context.js.map +1 -1
  159. package/dist/esm/Cron.js +4 -1
  160. package/dist/esm/Cron.js.map +1 -1
  161. package/dist/esm/DateTime.js +6 -0
  162. package/dist/esm/DateTime.js.map +1 -1
  163. package/dist/esm/Duration.js +4 -1
  164. package/dist/esm/Duration.js.map +1 -1
  165. package/dist/esm/Effect.js +116 -30
  166. package/dist/esm/Effect.js.map +1 -1
  167. package/dist/esm/FiberHandle.js +3 -0
  168. package/dist/esm/FiberHandle.js.map +1 -1
  169. package/dist/esm/FiberMap.js +3 -0
  170. package/dist/esm/FiberMap.js.map +1 -1
  171. package/dist/esm/FiberSet.js +3 -0
  172. package/dist/esm/FiberSet.js.map +1 -1
  173. package/dist/esm/HashMap.js.map +1 -1
  174. package/dist/esm/Inspectable.js +14 -0
  175. package/dist/esm/Inspectable.js.map +1 -1
  176. package/dist/esm/Layer.js.map +1 -1
  177. package/dist/esm/List.js +7 -1
  178. package/dist/esm/List.js.map +1 -1
  179. package/dist/esm/ManagedRuntime.js +15 -0
  180. package/dist/esm/ManagedRuntime.js.map +1 -1
  181. package/dist/esm/Micro.js +7 -1
  182. package/dist/esm/Micro.js.map +1 -1
  183. package/dist/esm/MutableHashMap.js +4 -1
  184. package/dist/esm/MutableHashMap.js.map +1 -1
  185. package/dist/esm/MutableHashSet.js +4 -1
  186. package/dist/esm/MutableHashSet.js.map +1 -1
  187. package/dist/esm/MutableList.js +4 -1
  188. package/dist/esm/MutableList.js.map +1 -1
  189. package/dist/esm/MutableQueue.js +4 -1
  190. package/dist/esm/MutableQueue.js.map +1 -1
  191. package/dist/esm/MutableRef.js +4 -1
  192. package/dist/esm/MutableRef.js.map +1 -1
  193. package/dist/esm/Pool.js.map +1 -1
  194. package/dist/esm/Predicate.js +15 -0
  195. package/dist/esm/Predicate.js.map +1 -1
  196. package/dist/esm/RegExp.js +16 -0
  197. package/dist/esm/RegExp.js.map +1 -1
  198. package/dist/esm/Resource.js.map +1 -1
  199. package/dist/esm/ScopedRef.js.map +1 -1
  200. package/dist/esm/SortedMap.js +4 -1
  201. package/dist/esm/SortedMap.js.map +1 -1
  202. package/dist/esm/SortedSet.js +4 -1
  203. package/dist/esm/SortedSet.js.map +1 -1
  204. package/dist/esm/Tuple.js +19 -0
  205. package/dist/esm/Tuple.js.map +1 -1
  206. package/dist/esm/Unify.js.map +1 -1
  207. package/dist/esm/internal/cause.js +4 -1
  208. package/dist/esm/internal/cause.js.map +1 -1
  209. package/dist/esm/internal/context.js +7 -2
  210. package/dist/esm/internal/context.js.map +1 -1
  211. package/dist/esm/internal/core-effect.js.map +1 -1
  212. package/dist/esm/internal/core.js +13 -1
  213. package/dist/esm/internal/core.js.map +1 -1
  214. package/dist/esm/internal/effect/circular.js +5 -1
  215. package/dist/esm/internal/effect/circular.js.map +1 -1
  216. package/dist/esm/internal/fiberId.js +10 -1
  217. package/dist/esm/internal/fiberId.js.map +1 -1
  218. package/dist/esm/internal/hashMap.js +4 -1
  219. package/dist/esm/internal/hashMap.js.map +1 -1
  220. package/dist/esm/internal/hashSet.js +4 -1
  221. package/dist/esm/internal/hashSet.js.map +1 -1
  222. package/dist/esm/internal/layer.js +32 -18
  223. package/dist/esm/internal/layer.js.map +1 -1
  224. package/dist/esm/internal/mailbox.js +3 -0
  225. package/dist/esm/internal/mailbox.js.map +1 -1
  226. package/dist/esm/internal/managedRuntime/circular.js +4 -0
  227. package/dist/esm/internal/managedRuntime/circular.js.map +1 -0
  228. package/dist/esm/internal/managedRuntime.js +21 -8
  229. package/dist/esm/internal/managedRuntime.js.map +1 -1
  230. package/dist/esm/internal/option.js +4 -1
  231. package/dist/esm/internal/option.js.map +1 -1
  232. package/dist/esm/internal/pool.js +6 -1
  233. package/dist/esm/internal/pool.js.map +1 -1
  234. package/dist/esm/internal/redBlackTree.js +4 -1
  235. package/dist/esm/internal/redBlackTree.js.map +1 -1
  236. package/dist/esm/internal/resource.js +15 -5
  237. package/dist/esm/internal/resource.js.map +1 -1
  238. package/dist/esm/internal/runtime.js +3 -0
  239. package/dist/esm/internal/runtime.js.map +1 -1
  240. package/dist/esm/internal/scopedRef.js +11 -8
  241. package/dist/esm/internal/scopedRef.js.map +1 -1
  242. package/dist/esm/internal/stm/core.js +1 -2
  243. package/dist/esm/internal/stm/core.js.map +1 -1
  244. package/dist/esm/internal/trie.js +4 -1
  245. package/dist/esm/internal/trie.js.map +1 -1
  246. package/dist/esm/internal/version.js +1 -1
  247. package/package.json +1 -1
  248. package/src/Array.ts +68 -4
  249. package/src/BigDecimal.ts +4 -1
  250. package/src/Chunk.ts +4 -1
  251. package/src/Context.ts +2 -3
  252. package/src/Cron.ts +4 -1
  253. package/src/DateTime.ts +6 -0
  254. package/src/Deferred.ts +1 -1
  255. package/src/Duration.ts +4 -1
  256. package/src/Effect.ts +435 -56
  257. package/src/FiberHandle.ts +3 -0
  258. package/src/FiberMap.ts +3 -0
  259. package/src/FiberSet.ts +3 -0
  260. package/src/HashMap.ts +16 -0
  261. package/src/Inspectable.ts +22 -0
  262. package/src/Layer.ts +49 -8
  263. package/src/List.ts +7 -1
  264. package/src/ManagedRuntime.ts +46 -2
  265. package/src/Micro.ts +7 -1
  266. package/src/MutableHashMap.ts +4 -1
  267. package/src/MutableHashSet.ts +4 -1
  268. package/src/MutableList.ts +4 -1
  269. package/src/MutableQueue.ts +4 -1
  270. package/src/MutableRef.ts +4 -1
  271. package/src/Pool.ts +26 -1
  272. package/src/Predicate.ts +16 -0
  273. package/src/Queue.ts +2 -2
  274. package/src/RegExp.ts +17 -0
  275. package/src/Resource.ts +22 -1
  276. package/src/ScopedRef.ts +22 -1
  277. package/src/SortedMap.ts +4 -1
  278. package/src/SortedSet.ts +4 -1
  279. package/src/Tuple.ts +66 -0
  280. package/src/Types.ts +41 -0
  281. package/src/Unify.ts +9 -14
  282. package/src/internal/cause.ts +4 -1
  283. package/src/internal/context.ts +7 -2
  284. package/src/internal/core-effect.ts +7 -7
  285. package/src/internal/core.ts +13 -1
  286. package/src/internal/effect/circular.ts +8 -2
  287. package/src/internal/fiberId.ts +10 -1
  288. package/src/internal/hashMap.ts +4 -1
  289. package/src/internal/hashSet.ts +4 -1
  290. package/src/internal/layer.ts +105 -38
  291. package/src/internal/mailbox.ts +3 -0
  292. package/src/internal/managedRuntime/circular.ts +6 -0
  293. package/src/internal/managedRuntime.ts +36 -22
  294. package/src/internal/option.ts +4 -1
  295. package/src/internal/pool.ts +7 -1
  296. package/src/internal/redBlackTree.ts +4 -1
  297. package/src/internal/resource.ts +16 -5
  298. package/src/internal/runtime.ts +3 -0
  299. package/src/internal/scopedRef.ts +12 -8
  300. package/src/internal/stm/core.ts +2 -3
  301. package/src/internal/trie.ts +4 -1
  302. 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 { ManagedRuntime } from "../ManagedRuntime.js"
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 self: ManagedRuntimeImpl<R, ER> = {
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: internalRuntime
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
  }
@@ -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
  },
@@ -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
  },
@@ -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
- [ResourceTypeId]: resourceVariance,
51
- scopedRef: ref,
52
- acquire: core.provideContext(acquire, env)
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 */
@@ -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: ScopedRef.ScopedRef<A> = {
45
- [ScopedRefTypeId]: scopedRefVariance,
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)
@@ -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 _tag: OP_COMMIT
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._tag) {
483
+ switch (current._op) {
485
484
  case "Tag": {
486
485
  curr = effect((_, __, env) => Context.unsafeGet(env, current)) as Primitive
487
486
  break
@@ -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
  },
@@ -1,4 +1,4 @@
1
- let moduleVersion = "3.8.5"
1
+ let moduleVersion = "3.9.0"
2
2
 
3
3
  export const getCurrentVersion = () => moduleVersion
4
4