effect 2.0.0-next.55 → 2.0.0-next.56

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 (652) hide show
  1. package/README.md +14 -9
  2. package/dist/cjs/Cache.js.map +1 -1
  3. package/dist/cjs/Cause.js +53 -18
  4. package/dist/cjs/Cause.js.map +1 -1
  5. package/dist/cjs/ChildExecutorDecision.js.map +1 -1
  6. package/dist/cjs/Chunk.js +5 -5
  7. package/dist/cjs/Chunk.js.map +1 -1
  8. package/dist/cjs/Data.js +11 -20
  9. package/dist/cjs/Data.js.map +1 -1
  10. package/dist/cjs/Duration.js +4 -0
  11. package/dist/cjs/Duration.js.map +1 -1
  12. package/dist/cjs/Effect.js +11 -4
  13. package/dist/cjs/Effect.js.map +1 -1
  14. package/dist/cjs/Either.js +9 -2
  15. package/dist/cjs/Either.js.map +1 -1
  16. package/dist/cjs/Exit.js.map +1 -1
  17. package/dist/cjs/Fiber.js.map +1 -1
  18. package/dist/cjs/HashMap.js.map +1 -1
  19. package/dist/cjs/KeyedPool.js.map +1 -1
  20. package/dist/cjs/List.js.map +1 -1
  21. package/dist/cjs/MergeState.js.map +1 -1
  22. package/dist/cjs/MetricPolling.js +2 -2
  23. package/dist/cjs/MetricPolling.js.map +1 -1
  24. package/dist/cjs/MetricState.js.map +1 -1
  25. package/dist/cjs/NonEmptyIterable.js.map +1 -1
  26. package/dist/cjs/Option.js +2 -2
  27. package/dist/cjs/Option.js.map +1 -1
  28. package/dist/cjs/Pipeable.js.map +1 -1
  29. package/dist/cjs/Predicate.js +17 -1
  30. package/dist/cjs/Predicate.js.map +1 -1
  31. package/dist/cjs/PrimaryKey.js +15 -0
  32. package/dist/cjs/PrimaryKey.js.map +1 -0
  33. package/dist/cjs/Queue.js +6 -1
  34. package/dist/cjs/Queue.js.map +1 -1
  35. package/dist/cjs/ReadonlyArray.js +2 -0
  36. package/dist/cjs/ReadonlyArray.js.map +1 -1
  37. package/dist/cjs/ReadonlyRecord.js +2 -2
  38. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  39. package/dist/cjs/RedBlackTree.js.map +1 -1
  40. package/dist/cjs/Request.js +35 -1
  41. package/dist/cjs/Request.js.map +1 -1
  42. package/dist/cjs/STM.js +1 -1
  43. package/dist/cjs/STM.js.map +1 -1
  44. package/dist/cjs/Sink.js.map +1 -1
  45. package/dist/cjs/SortedMap.js +4 -1
  46. package/dist/cjs/SortedMap.js.map +1 -1
  47. package/dist/cjs/SortedSet.js +2 -2
  48. package/dist/cjs/SortedSet.js.map +1 -1
  49. package/dist/cjs/Stream.js.map +1 -1
  50. package/dist/cjs/SubscriptionRef.js.map +1 -1
  51. package/dist/cjs/TPubSub.js.map +1 -1
  52. package/dist/cjs/TestAnnotation.js +3 -1
  53. package/dist/cjs/TestAnnotation.js.map +1 -1
  54. package/dist/cjs/TestClock.js.map +1 -1
  55. package/dist/cjs/UpstreamPullRequest.js.map +1 -1
  56. package/dist/cjs/index.js +4 -2
  57. package/dist/cjs/index.js.map +1 -1
  58. package/dist/cjs/internal/cache.js.map +1 -1
  59. package/dist/cjs/internal/cause.js +4 -103
  60. package/dist/cjs/internal/cause.js.map +1 -1
  61. package/dist/cjs/internal/channel/continuation.js.map +1 -1
  62. package/dist/cjs/internal/configProvider.js +13 -1
  63. package/dist/cjs/internal/configProvider.js.map +1 -1
  64. package/dist/cjs/internal/core-effect.js +7 -7
  65. package/dist/cjs/internal/core-effect.js.map +1 -1
  66. package/dist/cjs/internal/core-stream.js.map +1 -1
  67. package/dist/cjs/internal/core.js +159 -11
  68. package/dist/cjs/internal/core.js.map +1 -1
  69. package/dist/cjs/internal/data.js +4 -22
  70. package/dist/cjs/internal/data.js.map +1 -1
  71. package/dist/cjs/internal/dataSource.js +1 -1
  72. package/dist/cjs/internal/dataSource.js.map +1 -1
  73. package/dist/cjs/internal/deferred.js.map +1 -1
  74. package/dist/cjs/internal/differ/orPatch.js.map +1 -1
  75. package/dist/cjs/internal/effect/circular.js.map +1 -1
  76. package/dist/cjs/internal/effectable.js +21 -3
  77. package/dist/cjs/internal/effectable.js.map +1 -1
  78. package/dist/cjs/internal/fiberMessage.js.map +1 -1
  79. package/dist/cjs/internal/fiberRuntime.js +9 -10
  80. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  81. package/dist/cjs/internal/hashMap.js +1 -1
  82. package/dist/cjs/internal/hashMap.js.map +1 -1
  83. package/dist/cjs/internal/hashSet.js +2 -2
  84. package/dist/cjs/internal/hashSet.js.map +1 -1
  85. package/dist/cjs/internal/keyedPool.js.map +1 -1
  86. package/dist/cjs/internal/layer.js.map +1 -1
  87. package/dist/cjs/internal/metric/polling.js +7 -7
  88. package/dist/cjs/internal/metric/polling.js.map +1 -1
  89. package/dist/cjs/internal/metric.js +4 -0
  90. package/dist/cjs/internal/metric.js.map +1 -1
  91. package/dist/cjs/internal/pool.js.map +1 -1
  92. package/dist/cjs/internal/pubsub.js +24 -23
  93. package/dist/cjs/internal/pubsub.js.map +1 -1
  94. package/dist/cjs/internal/queue.js +10 -1
  95. package/dist/cjs/internal/queue.js.map +1 -1
  96. package/dist/cjs/internal/redBlackTree.js +5 -1
  97. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  98. package/dist/cjs/internal/reloadable.js.map +1 -1
  99. package/dist/cjs/internal/request.js +29 -15
  100. package/dist/cjs/internal/request.js.map +1 -1
  101. package/dist/cjs/internal/resource.js +2 -2
  102. package/dist/cjs/internal/resource.js.map +1 -1
  103. package/dist/cjs/internal/runtime.js +2 -3
  104. package/dist/cjs/internal/runtime.js.map +1 -1
  105. package/dist/cjs/internal/schedule.js +6 -7
  106. package/dist/cjs/internal/schedule.js.map +1 -1
  107. package/dist/cjs/internal/scopedCache.js.map +1 -1
  108. package/dist/cjs/internal/scopedRef.js.map +1 -1
  109. package/dist/cjs/internal/sink.js +1 -1
  110. package/dist/cjs/internal/sink.js.map +1 -1
  111. package/dist/cjs/internal/stm/core.js +2 -2
  112. package/dist/cjs/internal/stm/core.js.map +1 -1
  113. package/dist/cjs/internal/stm/tArray.js.map +1 -1
  114. package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
  115. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  116. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  117. package/dist/cjs/internal/stm/tPubSub.js +17 -14
  118. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  119. package/dist/cjs/internal/stm/tQueue.js +6 -7
  120. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  121. package/dist/cjs/internal/stm/tSemaphore.js +2 -2
  122. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
  123. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  124. package/dist/cjs/internal/stream.js +4 -4
  125. package/dist/cjs/internal/stream.js.map +1 -1
  126. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  127. package/dist/cjs/internal/take.js +1 -1
  128. package/dist/cjs/internal/take.js.map +1 -1
  129. package/dist/cjs/internal/version.js +1 -1
  130. package/dist/dts/Brand.d.ts +4 -4
  131. package/dist/dts/Brand.d.ts.map +1 -1
  132. package/dist/dts/Cache.d.ts +15 -14
  133. package/dist/dts/Cache.d.ts.map +1 -1
  134. package/dist/dts/Cause.d.ts +92 -25
  135. package/dist/dts/Cause.d.ts.map +1 -1
  136. package/dist/dts/Channel.d.ts +4 -4
  137. package/dist/dts/Channel.d.ts.map +1 -1
  138. package/dist/dts/ChildExecutorDecision.d.ts.map +1 -1
  139. package/dist/dts/Chunk.d.ts +26 -24
  140. package/dist/dts/Chunk.d.ts.map +1 -1
  141. package/dist/dts/Clock.d.ts +4 -4
  142. package/dist/dts/Clock.d.ts.map +1 -1
  143. package/dist/dts/Config.d.ts +4 -4
  144. package/dist/dts/Config.d.ts.map +1 -1
  145. package/dist/dts/ConfigError.d.ts +7 -7
  146. package/dist/dts/ConfigError.d.ts.map +1 -1
  147. package/dist/dts/ConfigProvider.d.ts +3 -3
  148. package/dist/dts/ConfigProvider.d.ts.map +1 -1
  149. package/dist/dts/ConfigProviderPathPatch.d.ts +1 -1
  150. package/dist/dts/ConfigProviderPathPatch.d.ts.map +1 -1
  151. package/dist/dts/Console.d.ts +36 -36
  152. package/dist/dts/Console.d.ts.map +1 -1
  153. package/dist/dts/Context.d.ts +4 -4
  154. package/dist/dts/Context.d.ts.map +1 -1
  155. package/dist/dts/Data.d.ts +3 -17
  156. package/dist/dts/Data.d.ts.map +1 -1
  157. package/dist/dts/Deferred.d.ts +4 -4
  158. package/dist/dts/Deferred.d.ts.map +1 -1
  159. package/dist/dts/Differ.d.ts +9 -9
  160. package/dist/dts/Differ.d.ts.map +1 -1
  161. package/dist/dts/Duration.d.ts +1 -1
  162. package/dist/dts/Duration.d.ts.map +1 -1
  163. package/dist/dts/Effect.d.ts +34 -20
  164. package/dist/dts/Effect.d.ts.map +1 -1
  165. package/dist/dts/Either.d.ts +15 -3
  166. package/dist/dts/Either.d.ts.map +1 -1
  167. package/dist/dts/Equal.d.ts +1 -1
  168. package/dist/dts/Equal.d.ts.map +1 -1
  169. package/dist/dts/Equivalence.d.ts +1 -1
  170. package/dist/dts/Equivalence.d.ts.map +1 -1
  171. package/dist/dts/Exit.d.ts +5 -3
  172. package/dist/dts/Exit.d.ts.map +1 -1
  173. package/dist/dts/Fiber.d.ts +12 -12
  174. package/dist/dts/Fiber.d.ts.map +1 -1
  175. package/dist/dts/FiberRef.d.ts +3 -3
  176. package/dist/dts/FiberRef.d.ts.map +1 -1
  177. package/dist/dts/GroupBy.d.ts +2 -2
  178. package/dist/dts/GroupBy.d.ts.map +1 -1
  179. package/dist/dts/Hash.d.ts +1 -1
  180. package/dist/dts/Hash.d.ts.map +1 -1
  181. package/dist/dts/HashMap.d.ts +6 -4
  182. package/dist/dts/HashMap.d.ts.map +1 -1
  183. package/dist/dts/HashSet.d.ts +9 -9
  184. package/dist/dts/HashSet.d.ts.map +1 -1
  185. package/dist/dts/Inspectable.d.ts +3 -3
  186. package/dist/dts/Inspectable.d.ts.map +1 -1
  187. package/dist/dts/KeyedPool.d.ts +5 -5
  188. package/dist/dts/KeyedPool.d.ts.map +1 -1
  189. package/dist/dts/Layer.d.ts +2 -2
  190. package/dist/dts/Layer.d.ts.map +1 -1
  191. package/dist/dts/List.d.ts +16 -16
  192. package/dist/dts/List.d.ts.map +1 -1
  193. package/dist/dts/Logger.d.ts +4 -4
  194. package/dist/dts/Logger.d.ts.map +1 -1
  195. package/dist/dts/Match.d.ts +11 -11
  196. package/dist/dts/Match.d.ts.map +1 -1
  197. package/dist/dts/MergeDecision.d.ts +2 -2
  198. package/dist/dts/MergeDecision.d.ts.map +1 -1
  199. package/dist/dts/MergeState.d.ts +5 -5
  200. package/dist/dts/MergeState.d.ts.map +1 -1
  201. package/dist/dts/Metric.d.ts +5 -5
  202. package/dist/dts/Metric.d.ts.map +1 -1
  203. package/dist/dts/MetricHook.d.ts +4 -4
  204. package/dist/dts/MetricHook.d.ts.map +1 -1
  205. package/dist/dts/MetricKey.d.ts +2 -2
  206. package/dist/dts/MetricKey.d.ts.map +1 -1
  207. package/dist/dts/MetricKeyType.d.ts +2 -2
  208. package/dist/dts/MetricKeyType.d.ts.map +1 -1
  209. package/dist/dts/MetricPair.d.ts +2 -2
  210. package/dist/dts/MetricPair.d.ts.map +1 -1
  211. package/dist/dts/MetricPolling.d.ts +16 -16
  212. package/dist/dts/MetricPolling.d.ts.map +1 -1
  213. package/dist/dts/MetricRegistry.d.ts +7 -7
  214. package/dist/dts/MetricRegistry.d.ts.map +1 -1
  215. package/dist/dts/MetricState.d.ts +4 -4
  216. package/dist/dts/MetricState.d.ts.map +1 -1
  217. package/dist/dts/MutableHashMap.d.ts +1 -1
  218. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  219. package/dist/dts/MutableHashSet.d.ts +1 -1
  220. package/dist/dts/MutableHashSet.d.ts.map +1 -1
  221. package/dist/dts/MutableList.d.ts +1 -1
  222. package/dist/dts/MutableList.d.ts.map +1 -1
  223. package/dist/dts/MutableQueue.d.ts +1 -1
  224. package/dist/dts/MutableQueue.d.ts.map +1 -1
  225. package/dist/dts/MutableRef.d.ts +1 -1
  226. package/dist/dts/MutableRef.d.ts.map +1 -1
  227. package/dist/dts/NonEmptyIterable.d.ts +2 -2
  228. package/dist/dts/NonEmptyIterable.d.ts.map +1 -1
  229. package/dist/dts/Option.d.ts +13 -11
  230. package/dist/dts/Option.d.ts.map +1 -1
  231. package/dist/dts/Order.d.ts +1 -1
  232. package/dist/dts/Order.d.ts.map +1 -1
  233. package/dist/dts/Pipeable.d.ts +21 -23
  234. package/dist/dts/Pipeable.d.ts.map +1 -1
  235. package/dist/dts/Pool.d.ts +4 -4
  236. package/dist/dts/Pool.d.ts.map +1 -1
  237. package/dist/dts/Predicate.d.ts +17 -2
  238. package/dist/dts/Predicate.d.ts.map +1 -1
  239. package/dist/dts/PrimaryKey.d.ts +16 -0
  240. package/dist/dts/PrimaryKey.d.ts.map +1 -0
  241. package/dist/dts/PubSub.d.ts +3 -3
  242. package/dist/dts/PubSub.d.ts.map +1 -1
  243. package/dist/dts/Queue.d.ts +46 -27
  244. package/dist/dts/Queue.d.ts.map +1 -1
  245. package/dist/dts/Random.d.ts +3 -3
  246. package/dist/dts/Random.d.ts.map +1 -1
  247. package/dist/dts/ReadonlyArray.d.ts +36 -36
  248. package/dist/dts/ReadonlyArray.d.ts.map +1 -1
  249. package/dist/dts/ReadonlyRecord.d.ts +13 -11
  250. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  251. package/dist/dts/RedBlackTree.d.ts +5 -2
  252. package/dist/dts/RedBlackTree.d.ts.map +1 -1
  253. package/dist/dts/Ref.d.ts +3 -3
  254. package/dist/dts/Ref.d.ts.map +1 -1
  255. package/dist/dts/Reloadable.d.ts +3 -3
  256. package/dist/dts/Reloadable.d.ts.map +1 -1
  257. package/dist/dts/Request.d.ts +49 -8
  258. package/dist/dts/Request.d.ts.map +1 -1
  259. package/dist/dts/RequestBlock.d.ts +8 -8
  260. package/dist/dts/RequestBlock.d.ts.map +1 -1
  261. package/dist/dts/RequestResolver.d.ts +5 -5
  262. package/dist/dts/RequestResolver.d.ts.map +1 -1
  263. package/dist/dts/Resource.d.ts +4 -4
  264. package/dist/dts/Resource.d.ts.map +1 -1
  265. package/dist/dts/Runtime.d.ts +3 -3
  266. package/dist/dts/Runtime.d.ts.map +1 -1
  267. package/dist/dts/STM.d.ts +9 -9
  268. package/dist/dts/STM.d.ts.map +1 -1
  269. package/dist/dts/Schedule.d.ts +6 -6
  270. package/dist/dts/Schedule.d.ts.map +1 -1
  271. package/dist/dts/Scheduler.d.ts +3 -3
  272. package/dist/dts/Scheduler.d.ts.map +1 -1
  273. package/dist/dts/ScopedCache.d.ts +9 -9
  274. package/dist/dts/ScopedCache.d.ts.map +1 -1
  275. package/dist/dts/ScopedRef.d.ts +3 -3
  276. package/dist/dts/ScopedRef.d.ts.map +1 -1
  277. package/dist/dts/SingleProducerAsyncInput.d.ts +7 -7
  278. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
  279. package/dist/dts/Sink.d.ts +7 -4
  280. package/dist/dts/Sink.d.ts.map +1 -1
  281. package/dist/dts/SortedMap.d.ts +5 -2
  282. package/dist/dts/SortedMap.d.ts.map +1 -1
  283. package/dist/dts/SortedSet.d.ts +6 -12
  284. package/dist/dts/SortedSet.d.ts.map +1 -1
  285. package/dist/dts/Stream.d.ts +27 -19
  286. package/dist/dts/Stream.d.ts.map +1 -1
  287. package/dist/dts/StreamEmit.d.ts +12 -12
  288. package/dist/dts/StreamEmit.d.ts.map +1 -1
  289. package/dist/dts/SubscriptionRef.d.ts +3 -3
  290. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  291. package/dist/dts/Supervisor.d.ts +9 -9
  292. package/dist/dts/Supervisor.d.ts.map +1 -1
  293. package/dist/dts/SynchronizedRef.d.ts +4 -4
  294. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  295. package/dist/dts/TArray.d.ts +3 -3
  296. package/dist/dts/TArray.d.ts.map +1 -1
  297. package/dist/dts/TDeferred.d.ts +4 -4
  298. package/dist/dts/TDeferred.d.ts.map +1 -1
  299. package/dist/dts/TMap.d.ts +4 -4
  300. package/dist/dts/TMap.d.ts.map +1 -1
  301. package/dist/dts/TPriorityQueue.d.ts +3 -3
  302. package/dist/dts/TPriorityQueue.d.ts.map +1 -1
  303. package/dist/dts/TPubSub.d.ts +4 -1
  304. package/dist/dts/TPubSub.d.ts.map +1 -1
  305. package/dist/dts/TQueue.d.ts +9 -9
  306. package/dist/dts/TQueue.d.ts.map +1 -1
  307. package/dist/dts/TRandom.d.ts +3 -3
  308. package/dist/dts/TRandom.d.ts.map +1 -1
  309. package/dist/dts/TRef.d.ts +3 -3
  310. package/dist/dts/TRef.d.ts.map +1 -1
  311. package/dist/dts/TSet.d.ts +3 -3
  312. package/dist/dts/TSet.d.ts.map +1 -1
  313. package/dist/dts/Take.d.ts +2 -2
  314. package/dist/dts/Take.d.ts.map +1 -1
  315. package/dist/dts/TestAnnotation.d.ts +5 -3
  316. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  317. package/dist/dts/TestAnnotations.d.ts +2 -2
  318. package/dist/dts/TestAnnotations.d.ts.map +1 -1
  319. package/dist/dts/TestClock.d.ts +3 -3
  320. package/dist/dts/TestClock.d.ts.map +1 -1
  321. package/dist/dts/TestLive.d.ts +1 -1
  322. package/dist/dts/TestLive.d.ts.map +1 -1
  323. package/dist/dts/TestSized.d.ts +1 -1
  324. package/dist/dts/TestSized.d.ts.map +1 -1
  325. package/dist/dts/Tracer.d.ts +5 -5
  326. package/dist/dts/Tracer.d.ts.map +1 -1
  327. package/dist/dts/Types.d.ts +7 -0
  328. package/dist/dts/Types.d.ts.map +1 -1
  329. package/dist/dts/UpstreamPullRequest.d.ts +2 -2
  330. package/dist/dts/UpstreamPullRequest.d.ts.map +1 -1
  331. package/dist/dts/UpstreamPullStrategy.d.ts +3 -3
  332. package/dist/dts/UpstreamPullStrategy.d.ts.map +1 -1
  333. package/dist/dts/Utils.d.ts +1 -1
  334. package/dist/dts/Utils.d.ts.map +1 -1
  335. package/dist/dts/index.d.ts +4 -0
  336. package/dist/dts/index.d.ts.map +1 -1
  337. package/dist/dts/internal/core-stream.d.ts.map +1 -1
  338. package/dist/dts/internal/fiberScope.d.ts +1 -1
  339. package/dist/dts/internal/fiberScope.d.ts.map +1 -1
  340. package/dist/dts/internal/stream/handoffSignal.d.ts +1 -1
  341. package/dist/dts/internal/stream/handoffSignal.d.ts.map +1 -1
  342. package/dist/dts/internal/version.d.ts +1 -1
  343. package/dist/esm/Cache.js.map +1 -1
  344. package/dist/esm/Cause.js +52 -17
  345. package/dist/esm/Cause.js.map +1 -1
  346. package/dist/esm/ChildExecutorDecision.js.map +1 -1
  347. package/dist/esm/Chunk.js +5 -5
  348. package/dist/esm/Chunk.js.map +1 -1
  349. package/dist/esm/Data.js +10 -19
  350. package/dist/esm/Data.js.map +1 -1
  351. package/dist/esm/Duration.js +4 -0
  352. package/dist/esm/Duration.js.map +1 -1
  353. package/dist/esm/Effect.js +7 -0
  354. package/dist/esm/Effect.js.map +1 -1
  355. package/dist/esm/Either.js +8 -1
  356. package/dist/esm/Either.js.map +1 -1
  357. package/dist/esm/Exit.js.map +1 -1
  358. package/dist/esm/Fiber.js.map +1 -1
  359. package/dist/esm/HashMap.js.map +1 -1
  360. package/dist/esm/KeyedPool.js.map +1 -1
  361. package/dist/esm/List.js.map +1 -1
  362. package/dist/esm/MergeState.js.map +1 -1
  363. package/dist/esm/MetricPolling.js +1 -1
  364. package/dist/esm/MetricPolling.js.map +1 -1
  365. package/dist/esm/MetricState.js.map +1 -1
  366. package/dist/esm/NonEmptyIterable.js.map +1 -1
  367. package/dist/esm/Option.js +2 -2
  368. package/dist/esm/Option.js.map +1 -1
  369. package/dist/esm/Pipeable.js.map +1 -1
  370. package/dist/esm/Predicate.js +15 -0
  371. package/dist/esm/Predicate.js.map +1 -1
  372. package/dist/esm/PrimaryKey.js +9 -0
  373. package/dist/esm/PrimaryKey.js.map +1 -0
  374. package/dist/esm/Queue.js +5 -0
  375. package/dist/esm/Queue.js.map +1 -1
  376. package/dist/esm/ReadonlyArray.js +2 -0
  377. package/dist/esm/ReadonlyArray.js.map +1 -1
  378. package/dist/esm/ReadonlyRecord.js +2 -2
  379. package/dist/esm/ReadonlyRecord.js.map +1 -1
  380. package/dist/esm/RedBlackTree.js.map +1 -1
  381. package/dist/esm/Request.js +34 -0
  382. package/dist/esm/Request.js.map +1 -1
  383. package/dist/esm/STM.js +1 -1
  384. package/dist/esm/STM.js.map +1 -1
  385. package/dist/esm/Sink.js.map +1 -1
  386. package/dist/esm/SortedMap.js +4 -1
  387. package/dist/esm/SortedMap.js.map +1 -1
  388. package/dist/esm/SortedSet.js +2 -2
  389. package/dist/esm/SortedSet.js.map +1 -1
  390. package/dist/esm/Stream.js.map +1 -1
  391. package/dist/esm/SubscriptionRef.js.map +1 -1
  392. package/dist/esm/TPubSub.js.map +1 -1
  393. package/dist/esm/TestAnnotation.js +3 -1
  394. package/dist/esm/TestAnnotation.js.map +1 -1
  395. package/dist/esm/TestClock.js.map +1 -1
  396. package/dist/esm/UpstreamPullRequest.js.map +1 -1
  397. package/dist/esm/index.js +4 -0
  398. package/dist/esm/index.js.map +1 -1
  399. package/dist/esm/internal/cache.js.map +1 -1
  400. package/dist/esm/internal/cause.js +3 -96
  401. package/dist/esm/internal/cause.js.map +1 -1
  402. package/dist/esm/internal/channel/continuation.js.map +1 -1
  403. package/dist/esm/internal/configProvider.js +13 -1
  404. package/dist/esm/internal/configProvider.js.map +1 -1
  405. package/dist/esm/internal/core-effect.js +7 -7
  406. package/dist/esm/internal/core-effect.js.map +1 -1
  407. package/dist/esm/internal/core-stream.js.map +1 -1
  408. package/dist/esm/internal/core.js +151 -10
  409. package/dist/esm/internal/core.js.map +1 -1
  410. package/dist/esm/internal/data.js +3 -21
  411. package/dist/esm/internal/data.js.map +1 -1
  412. package/dist/esm/internal/dataSource.js +1 -1
  413. package/dist/esm/internal/dataSource.js.map +1 -1
  414. package/dist/esm/internal/deferred.js.map +1 -1
  415. package/dist/esm/internal/differ/orPatch.js.map +1 -1
  416. package/dist/esm/internal/effect/circular.js.map +1 -1
  417. package/dist/esm/internal/effectable.js +20 -2
  418. package/dist/esm/internal/effectable.js.map +1 -1
  419. package/dist/esm/internal/fiberMessage.js.map +1 -1
  420. package/dist/esm/internal/fiberRuntime.js +9 -10
  421. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  422. package/dist/esm/internal/hashMap.js +1 -1
  423. package/dist/esm/internal/hashMap.js.map +1 -1
  424. package/dist/esm/internal/hashSet.js +2 -2
  425. package/dist/esm/internal/hashSet.js.map +1 -1
  426. package/dist/esm/internal/keyedPool.js.map +1 -1
  427. package/dist/esm/internal/layer.js.map +1 -1
  428. package/dist/esm/internal/metric/polling.js +6 -6
  429. package/dist/esm/internal/metric/polling.js.map +1 -1
  430. package/dist/esm/internal/metric.js +4 -0
  431. package/dist/esm/internal/metric.js.map +1 -1
  432. package/dist/esm/internal/pool.js.map +1 -1
  433. package/dist/esm/internal/pubsub.js +24 -23
  434. package/dist/esm/internal/pubsub.js.map +1 -1
  435. package/dist/esm/internal/queue.js +9 -0
  436. package/dist/esm/internal/queue.js.map +1 -1
  437. package/dist/esm/internal/redBlackTree.js +5 -1
  438. package/dist/esm/internal/redBlackTree.js.map +1 -1
  439. package/dist/esm/internal/reloadable.js.map +1 -1
  440. package/dist/esm/internal/request.js +27 -14
  441. package/dist/esm/internal/request.js.map +1 -1
  442. package/dist/esm/internal/resource.js +2 -2
  443. package/dist/esm/internal/resource.js.map +1 -1
  444. package/dist/esm/internal/runtime.js +1 -2
  445. package/dist/esm/internal/runtime.js.map +1 -1
  446. package/dist/esm/internal/schedule.js +6 -7
  447. package/dist/esm/internal/schedule.js.map +1 -1
  448. package/dist/esm/internal/scopedCache.js.map +1 -1
  449. package/dist/esm/internal/scopedRef.js.map +1 -1
  450. package/dist/esm/internal/sink.js +1 -1
  451. package/dist/esm/internal/sink.js.map +1 -1
  452. package/dist/esm/internal/stm/core.js +2 -2
  453. package/dist/esm/internal/stm/core.js.map +1 -1
  454. package/dist/esm/internal/stm/tArray.js.map +1 -1
  455. package/dist/esm/internal/stm/tDeferred.js.map +1 -1
  456. package/dist/esm/internal/stm/tMap.js.map +1 -1
  457. package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
  458. package/dist/esm/internal/stm/tPubSub.js +17 -14
  459. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  460. package/dist/esm/internal/stm/tQueue.js +6 -7
  461. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  462. package/dist/esm/internal/stm/tSemaphore.js +2 -2
  463. package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
  464. package/dist/esm/internal/stm/tSet.js.map +1 -1
  465. package/dist/esm/internal/stream.js +4 -4
  466. package/dist/esm/internal/stream.js.map +1 -1
  467. package/dist/esm/internal/subscriptionRef.js.map +1 -1
  468. package/dist/esm/internal/take.js +1 -1
  469. package/dist/esm/internal/take.js.map +1 -1
  470. package/dist/esm/internal/version.js +1 -1
  471. package/dist/esm/package.json +1 -1
  472. package/package.json +10 -2
  473. package/src/Brand.ts +4 -4
  474. package/src/Cache.ts +15 -17
  475. package/src/Cause.ts +124 -40
  476. package/src/Channel.ts +4 -4
  477. package/src/ChildExecutorDecision.ts +10 -2
  478. package/src/Chunk.ts +44 -36
  479. package/src/Clock.ts +4 -4
  480. package/src/Config.ts +4 -4
  481. package/src/ConfigError.ts +8 -8
  482. package/src/ConfigProvider.ts +5 -5
  483. package/src/ConfigProviderPathPatch.ts +1 -1
  484. package/src/Console.ts +36 -36
  485. package/src/Context.ts +4 -4
  486. package/src/Data.ts +13 -44
  487. package/src/Deferred.ts +4 -4
  488. package/src/Differ.ts +9 -9
  489. package/src/Duration.ts +5 -0
  490. package/src/Effect.ts +88 -26
  491. package/src/Either.ts +28 -5
  492. package/src/Equal.ts +1 -1
  493. package/src/Equivalence.ts +1 -1
  494. package/src/Exit.ts +21 -7
  495. package/src/Fiber.ts +20 -14
  496. package/src/FiberRef.ts +7 -7
  497. package/src/GroupBy.ts +2 -2
  498. package/src/Hash.ts +1 -1
  499. package/src/HashMap.ts +6 -4
  500. package/src/HashSet.ts +11 -11
  501. package/src/Inspectable.ts +3 -3
  502. package/src/KeyedPool.ts +13 -7
  503. package/src/Layer.ts +2 -2
  504. package/src/List.ts +24 -22
  505. package/src/Logger.ts +4 -4
  506. package/src/Match.ts +11 -11
  507. package/src/MergeDecision.ts +2 -2
  508. package/src/MergeState.ts +11 -5
  509. package/src/Metric.ts +5 -5
  510. package/src/MetricHook.ts +4 -4
  511. package/src/MetricKey.ts +2 -2
  512. package/src/MetricKeyType.ts +2 -2
  513. package/src/MetricPair.ts +2 -2
  514. package/src/MetricPolling.ts +22 -22
  515. package/src/MetricRegistry.ts +9 -9
  516. package/src/MetricState.ts +6 -4
  517. package/src/MutableHashMap.ts +1 -1
  518. package/src/MutableHashSet.ts +1 -1
  519. package/src/MutableList.ts +1 -1
  520. package/src/MutableQueue.ts +1 -1
  521. package/src/MutableRef.ts +1 -1
  522. package/src/NonEmptyIterable.ts +2 -2
  523. package/src/Option.ts +18 -15
  524. package/src/Order.ts +1 -1
  525. package/src/Pipeable.ts +275 -277
  526. package/src/Pool.ts +4 -4
  527. package/src/Predicate.ts +21 -2
  528. package/src/PrimaryKey.ts +17 -0
  529. package/src/PubSub.ts +3 -3
  530. package/src/Queue.ts +52 -30
  531. package/src/Random.ts +3 -3
  532. package/src/ReadonlyArray.ts +51 -66
  533. package/src/ReadonlyRecord.ts +37 -35
  534. package/src/RedBlackTree.ts +5 -2
  535. package/src/Ref.ts +3 -3
  536. package/src/Reloadable.ts +3 -3
  537. package/src/Request.ts +53 -8
  538. package/src/RequestBlock.ts +9 -9
  539. package/src/RequestResolver.ts +5 -5
  540. package/src/Resource.ts +4 -4
  541. package/src/Runtime.ts +3 -3
  542. package/src/STM.ts +23 -12
  543. package/src/Schedule.ts +7 -7
  544. package/src/Scheduler.ts +3 -3
  545. package/src/Scope.ts +3 -3
  546. package/src/ScopedCache.ts +9 -9
  547. package/src/ScopedRef.ts +3 -3
  548. package/src/SingleProducerAsyncInput.ts +7 -7
  549. package/src/Sink.ts +23 -9
  550. package/src/SortedMap.ts +9 -3
  551. package/src/SortedSet.ts +26 -41
  552. package/src/Stream.ts +70 -29
  553. package/src/StreamEmit.ts +12 -12
  554. package/src/SubscriptionRef.ts +5 -3
  555. package/src/Supervisor.ts +10 -10
  556. package/src/SynchronizedRef.ts +4 -4
  557. package/src/TArray.ts +4 -4
  558. package/src/TDeferred.ts +5 -5
  559. package/src/TMap.ts +5 -5
  560. package/src/TPriorityQueue.ts +4 -4
  561. package/src/TPubSub.ts +6 -3
  562. package/src/TQueue.ts +9 -9
  563. package/src/TRandom.ts +3 -3
  564. package/src/TRef.ts +4 -4
  565. package/src/TSet.ts +4 -4
  566. package/src/Take.ts +2 -2
  567. package/src/TestAnnotation.ts +8 -4
  568. package/src/TestAnnotations.ts +2 -2
  569. package/src/TestClock.ts +3 -5
  570. package/src/TestLive.ts +1 -1
  571. package/src/TestSized.ts +1 -1
  572. package/src/Tracer.ts +6 -6
  573. package/src/Types.ts +8 -0
  574. package/src/UpstreamPullRequest.ts +10 -4
  575. package/src/UpstreamPullStrategy.ts +3 -3
  576. package/src/Utils.ts +1 -1
  577. package/src/index.ts +5 -0
  578. package/src/internal/blockedRequests.ts +6 -6
  579. package/src/internal/cache.ts +12 -12
  580. package/src/internal/cause.ts +14 -138
  581. package/src/internal/channel/channelExecutor.ts +1 -1
  582. package/src/internal/channel/channelState.ts +5 -5
  583. package/src/internal/channel/continuation.ts +52 -32
  584. package/src/internal/channel/mergeDecision.ts +1 -1
  585. package/src/internal/channel/singleProducerAsyncInput.ts +1 -1
  586. package/src/internal/channel/subexecutor.ts +7 -7
  587. package/src/internal/config.ts +6 -6
  588. package/src/internal/configProvider.ts +14 -1
  589. package/src/internal/core-effect.ts +49 -38
  590. package/src/internal/core-stream.ts +18 -21
  591. package/src/internal/core.ts +286 -38
  592. package/src/internal/data.ts +3 -22
  593. package/src/internal/dataSource.ts +1 -1
  594. package/src/internal/deferred.ts +5 -5
  595. package/src/internal/differ/contextPatch.ts +5 -5
  596. package/src/internal/differ/orPatch.ts +18 -6
  597. package/src/internal/effect/circular.ts +3 -3
  598. package/src/internal/effectable.ts +23 -4
  599. package/src/internal/fiberMessage.ts +1 -4
  600. package/src/internal/fiberRuntime.ts +14 -15
  601. package/src/internal/fiberScope.ts +1 -1
  602. package/src/internal/groupBy.ts +1 -1
  603. package/src/internal/hashMap/node.ts +5 -5
  604. package/src/internal/hashMap.ts +23 -22
  605. package/src/internal/hashSet.ts +18 -20
  606. package/src/internal/keyedPool.ts +4 -4
  607. package/src/internal/layer.ts +6 -12
  608. package/src/internal/metric/key.ts +1 -1
  609. package/src/internal/metric/polling.ts +26 -26
  610. package/src/internal/metric.ts +4 -0
  611. package/src/internal/pool.ts +2 -2
  612. package/src/internal/pubsub.ts +64 -61
  613. package/src/internal/queue.ts +20 -6
  614. package/src/internal/redBlackTree/iterator.ts +1 -1
  615. package/src/internal/redBlackTree/node.ts +1 -1
  616. package/src/internal/redBlackTree.ts +7 -2
  617. package/src/internal/ref.ts +1 -1
  618. package/src/internal/reloadable.ts +1 -1
  619. package/src/internal/request.ts +39 -13
  620. package/src/internal/resource.ts +4 -4
  621. package/src/internal/ringBuffer.ts +1 -1
  622. package/src/internal/runtime.ts +2 -3
  623. package/src/internal/schedule.ts +6 -7
  624. package/src/internal/scopedCache.ts +7 -5
  625. package/src/internal/scopedRef.ts +1 -1
  626. package/src/internal/sink.ts +6 -3
  627. package/src/internal/stack.ts +1 -1
  628. package/src/internal/stm/core.ts +3 -3
  629. package/src/internal/stm/stm/stmState.ts +1 -1
  630. package/src/internal/stm/stm/tExit.ts +3 -3
  631. package/src/internal/stm/stm/tryCommit.ts +1 -1
  632. package/src/internal/stm/stm/versioned.ts +1 -1
  633. package/src/internal/stm/stm.ts +2 -2
  634. package/src/internal/stm/tArray.ts +2 -2
  635. package/src/internal/stm/tDeferred.ts +3 -3
  636. package/src/internal/stm/tMap.ts +3 -3
  637. package/src/internal/stm/tPriorityQueue.ts +2 -2
  638. package/src/internal/stm/tPubSub.ts +43 -38
  639. package/src/internal/stm/tQueue.ts +7 -8
  640. package/src/internal/stm/tReentrantLock.ts +2 -2
  641. package/src/internal/stm/tRef.ts +1 -1
  642. package/src/internal/stm/tSemaphore.ts +2 -2
  643. package/src/internal/stm/tSet.ts +2 -2
  644. package/src/internal/stream/debounceState.ts +2 -2
  645. package/src/internal/stream/handoff.ts +3 -3
  646. package/src/internal/stream/handoffSignal.ts +2 -2
  647. package/src/internal/stream/pull.ts +1 -1
  648. package/src/internal/stream.ts +66 -33
  649. package/src/internal/subscriptionRef.ts +2 -2
  650. package/src/internal/supervisor.ts +3 -3
  651. package/src/internal/take.ts +2 -2
  652. package/src/internal/version.ts +1 -1
@@ -9,31 +9,33 @@ import { pipeArguments } from "../Pipeable.js"
9
9
  import type * as PubSub from "../PubSub.js"
10
10
  import type * as Queue from "../Queue.js"
11
11
  import type * as Scope from "../Scope.js"
12
- import * as cause from "./cause.js"
13
12
  import * as core from "./core.js"
14
13
  import * as executionStrategy from "./executionStrategy.js"
15
14
  import * as fiberRuntime from "./fiberRuntime.js"
16
15
  import * as queue from "./queue.js"
17
16
 
17
+ const AbsentValue = Symbol.for("effect/PubSub/AbsentValue")
18
+ type AbsentValue = typeof AbsentValue
19
+
18
20
  /** @internal */
19
- export interface AtomicPubSub<A> {
21
+ export interface AtomicPubSub<in out A> {
20
22
  readonly capacity: number
21
- readonly isEmpty: () => boolean
22
- readonly isFull: () => boolean
23
- readonly size: () => number
24
- readonly publish: (value: A) => boolean
25
- readonly publishAll: (elements: Iterable<A>) => Chunk.Chunk<A>
26
- readonly slide: () => void
27
- readonly subscribe: () => Subscription<A>
23
+ isEmpty(): boolean
24
+ isFull(): boolean
25
+ size(): number
26
+ publish(value: A): boolean
27
+ publishAll(elements: Iterable<A>): Chunk.Chunk<A>
28
+ slide(): void
29
+ subscribe(): Subscription<A>
28
30
  }
29
31
 
30
32
  /** @internal */
31
- interface Subscription<A> {
32
- readonly isEmpty: () => boolean
33
- readonly size: () => number
34
- readonly poll: <D>(default_: D) => A | D
35
- readonly pollUpTo: (n: number) => Chunk.Chunk<A>
36
- readonly unsubscribe: () => void
33
+ interface Subscription<out A> {
34
+ isEmpty(): boolean
35
+ size(): number
36
+ poll<D>(default_: D): A | D
37
+ pollUpTo(n: number): Chunk.Chunk<A>
38
+ unsubscribe(): void
37
39
  }
38
40
 
39
41
  /** @internal */
@@ -190,7 +192,7 @@ export const unsafeMakeSubscription = <A>(
190
192
  }
191
193
 
192
194
  /** @internal */
193
- class BoundedPubSubArb<A> implements AtomicPubSub<A> {
195
+ class BoundedPubSubArb<in out A> implements AtomicPubSub<A> {
194
196
  array: Array<A>
195
197
  publisherIndex = 0
196
198
  subscribers: Array<number>
@@ -254,7 +256,7 @@ class BoundedPubSubArb<A> implements AtomicPubSub<A> {
254
256
  slide(): void {
255
257
  if (this.subscribersIndex !== this.publisherIndex) {
256
258
  const index = this.subscribersIndex % this.capacity
257
- this.array[index] = null as unknown as A
259
+ this.array[index] = AbsentValue as unknown as A
258
260
  this.subscribers[index] = 0
259
261
  this.subscribersIndex += 1
260
262
  }
@@ -266,7 +268,7 @@ class BoundedPubSubArb<A> implements AtomicPubSub<A> {
266
268
  }
267
269
  }
268
270
 
269
- class BoundedPubSubArbSubscription<A> implements Subscription<A> {
271
+ class BoundedPubSubArbSubscription<in out A> implements Subscription<A> {
270
272
  constructor(
271
273
  private self: BoundedPubSubArb<A>,
272
274
  private subscriberIndex: number,
@@ -299,7 +301,7 @@ class BoundedPubSubArbSubscription<A> implements Subscription<A> {
299
301
  const elem = this.self.array[index]!
300
302
  this.self.subscribers[index] -= 1
301
303
  if (this.self.subscribers[index] === 0) {
302
- this.self.array[index] = null as unknown as A
304
+ this.self.array[index] = AbsentValue as unknown as A
303
305
  this.self.subscribersIndex += 1
304
306
  }
305
307
  this.subscriberIndex += 1
@@ -325,7 +327,7 @@ class BoundedPubSubArbSubscription<A> implements Subscription<A> {
325
327
  const a = this.self.array[index] as A
326
328
  this.self.subscribers[index] -= 1
327
329
  if (this.self.subscribers[index] === 0) {
328
- this.self.array[index] = null as unknown as A
330
+ this.self.array[index] = AbsentValue as unknown as A
329
331
  this.self.subscribersIndex += 1
330
332
  }
331
333
  builder.push(a)
@@ -344,7 +346,7 @@ class BoundedPubSubArbSubscription<A> implements Subscription<A> {
344
346
  const index = this.subscriberIndex % this.self.capacity
345
347
  this.self.subscribers[index] -= 1
346
348
  if (this.self.subscribers[index] === 0) {
347
- this.self.array[index] = null as unknown as A
349
+ this.self.array[index] = AbsentValue as unknown as A
348
350
  this.self.subscribersIndex += 1
349
351
  }
350
352
  this.subscriberIndex += 1
@@ -354,7 +356,7 @@ class BoundedPubSubArbSubscription<A> implements Subscription<A> {
354
356
  }
355
357
 
356
358
  /** @internal */
357
- class BoundedPubSubPow2<A> implements AtomicPubSub<A> {
359
+ class BoundedPubSubPow2<in out A> implements AtomicPubSub<A> {
358
360
  array: Array<A>
359
361
  mask: number
360
362
  publisherIndex = 0
@@ -420,7 +422,7 @@ class BoundedPubSubPow2<A> implements AtomicPubSub<A> {
420
422
  slide(): void {
421
423
  if (this.subscribersIndex !== this.publisherIndex) {
422
424
  const index = this.subscribersIndex & this.mask
423
- this.array[index] = null as unknown as A
425
+ this.array[index] = AbsentValue as unknown as A
424
426
  this.subscribers[index] = 0
425
427
  this.subscribersIndex += 1
426
428
  }
@@ -433,7 +435,7 @@ class BoundedPubSubPow2<A> implements AtomicPubSub<A> {
433
435
  }
434
436
 
435
437
  /** @internal */
436
- class BoundedPubSubPow2Subscription<A> implements Subscription<A> {
438
+ class BoundedPubSubPow2Subscription<in out A> implements Subscription<A> {
437
439
  constructor(
438
440
  private self: BoundedPubSubPow2<A>,
439
441
  private subscriberIndex: number,
@@ -466,7 +468,7 @@ class BoundedPubSubPow2Subscription<A> implements Subscription<A> {
466
468
  const elem = this.self.array[index]!
467
469
  this.self.subscribers[index] -= 1
468
470
  if (this.self.subscribers[index] === 0) {
469
- this.self.array[index] = null as unknown as A
471
+ this.self.array[index] = AbsentValue as unknown as A
470
472
  this.self.subscribersIndex += 1
471
473
  }
472
474
  this.subscriberIndex += 1
@@ -492,7 +494,7 @@ class BoundedPubSubPow2Subscription<A> implements Subscription<A> {
492
494
  const elem = this.self.array[index] as A
493
495
  this.self.subscribers[index] -= 1
494
496
  if (this.self.subscribers[index] === 0) {
495
- this.self.array[index] = null as unknown as A
497
+ this.self.array[index] = AbsentValue as unknown as A
496
498
  this.self.subscribersIndex += 1
497
499
  }
498
500
  builder.push(elem)
@@ -510,7 +512,7 @@ class BoundedPubSubPow2Subscription<A> implements Subscription<A> {
510
512
  const index = this.subscriberIndex & this.self.mask
511
513
  this.self.subscribers[index] -= 1
512
514
  if (this.self.subscribers[index] === 0) {
513
- this.self.array[index] = null as unknown as A
515
+ this.self.array[index] = AbsentValue as unknown as A
514
516
  this.self.subscribersIndex += 1
515
517
  }
516
518
  this.subscriberIndex += 1
@@ -520,11 +522,11 @@ class BoundedPubSubPow2Subscription<A> implements Subscription<A> {
520
522
  }
521
523
 
522
524
  /** @internal */
523
- class BoundedPubSubSingle<A> implements AtomicPubSub<A> {
525
+ class BoundedPubSubSingle<in out A> implements AtomicPubSub<A> {
524
526
  publisherIndex = 0
525
527
  subscriberCount = 0
526
528
  subscribers = 0
527
- value: A = null as unknown as A
529
+ value: A = AbsentValue as unknown as A
528
530
 
529
531
  readonly capacity = 1
530
532
 
@@ -571,7 +573,7 @@ class BoundedPubSubSingle<A> implements AtomicPubSub<A> {
571
573
  slide(): void {
572
574
  if (this.isFull()) {
573
575
  this.subscribers = 0
574
- this.value = null as unknown as A
576
+ this.value = AbsentValue as unknown as A
575
577
  }
576
578
  }
577
579
 
@@ -582,7 +584,7 @@ class BoundedPubSubSingle<A> implements AtomicPubSub<A> {
582
584
  }
583
585
 
584
586
  /** @internal */
585
- class BoundedPubSubSingleSubscription<A> implements Subscription<A> {
587
+ class BoundedPubSubSingleSubscription<in out A> implements Subscription<A> {
586
588
  constructor(
587
589
  private self: BoundedPubSubSingle<A>,
588
590
  private subscriberIndex: number,
@@ -609,7 +611,7 @@ class BoundedPubSubSingleSubscription<A> implements Subscription<A> {
609
611
  const elem = this.self.value
610
612
  this.self.subscribers -= 1
611
613
  if (this.self.subscribers === 0) {
612
- this.self.value = null as unknown as A
614
+ this.self.value = AbsentValue as unknown as A
613
615
  }
614
616
  this.subscriberIndex += 1
615
617
  return elem
@@ -622,7 +624,7 @@ class BoundedPubSubSingleSubscription<A> implements Subscription<A> {
622
624
  const a = this.self.value
623
625
  this.self.subscribers -= 1
624
626
  if (this.self.subscribers === 0) {
625
- this.self.value = null as unknown as A
627
+ this.self.value = AbsentValue as unknown as A
626
628
  }
627
629
  this.subscriberIndex += 1
628
630
  return Chunk.of(a)
@@ -635,7 +637,7 @@ class BoundedPubSubSingleSubscription<A> implements Subscription<A> {
635
637
  if (this.subscriberIndex !== this.self.publisherIndex) {
636
638
  this.self.subscribers -= 1
637
639
  if (this.self.subscribers === 0) {
638
- this.self.value = null as unknown as A
640
+ this.self.value = AbsentValue as unknown as A
639
641
  }
640
642
  }
641
643
  }
@@ -643,9 +645,9 @@ class BoundedPubSubSingleSubscription<A> implements Subscription<A> {
643
645
  }
644
646
 
645
647
  /** @internal */
646
- class Node<A> {
648
+ class Node<out A> {
647
649
  constructor(
648
- public value: A | null,
650
+ public value: A | AbsentValue,
649
651
  public subscribers: number,
650
652
  public next: Node<A> | null
651
653
  ) {
@@ -653,8 +655,8 @@ class Node<A> {
653
655
  }
654
656
 
655
657
  /** @internal */
656
- class UnboundedPubSub<A> implements AtomicPubSub<A> {
657
- publisherHead = new Node<A>(null, 0, null)
658
+ class UnboundedPubSub<in out A> implements AtomicPubSub<A> {
659
+ publisherHead = new Node<A>(AbsentValue, 0, null)
658
660
  publisherIndex = 0
659
661
  publisherTail: Node<A>
660
662
  subscribersIndex = 0
@@ -697,7 +699,7 @@ class UnboundedPubSub<A> implements AtomicPubSub<A> {
697
699
  slide(): void {
698
700
  if (this.publisherHead !== this.publisherTail) {
699
701
  this.publisherHead = this.publisherHead.next!
700
- this.publisherHead.value = null
702
+ this.publisherHead.value = AbsentValue
701
703
  this.subscribersIndex += 1
702
704
  }
703
705
  }
@@ -714,7 +716,7 @@ class UnboundedPubSub<A> implements AtomicPubSub<A> {
714
716
  }
715
717
 
716
718
  /** @internal */
717
- class UnboundedPubSubSubscription<A> implements Subscription<A> {
719
+ class UnboundedPubSubSubscription<in out A> implements Subscription<A> {
718
720
  constructor(
719
721
  private self: UnboundedPubSub<A>,
720
722
  private subscriberHead: Node<A>,
@@ -733,7 +735,7 @@ class UnboundedPubSubSubscription<A> implements Subscription<A> {
733
735
  if (this.subscriberHead === this.self.publisherTail) {
734
736
  loop = false
735
737
  } else {
736
- if (this.subscriberHead.next!.value !== null) {
738
+ if (this.subscriberHead.next!.value !== AbsentValue) {
737
739
  empty = false
738
740
  loop = false
739
741
  } else {
@@ -763,12 +765,12 @@ class UnboundedPubSubSubscription<A> implements Subscription<A> {
763
765
  loop = false
764
766
  } else {
765
767
  const elem = this.subscriberHead.next!.value
766
- if (elem !== null) {
768
+ if (elem !== AbsentValue) {
767
769
  polled = elem
768
770
  this.subscriberHead.subscribers -= 1
769
771
  if (this.subscriberHead.subscribers === 0) {
770
772
  this.self.publisherHead = this.self.publisherHead.next!
771
- this.self.publisherHead.value = null
773
+ this.self.publisherHead.value = AbsentValue
772
774
  this.self.subscribersIndex += 1
773
775
  }
774
776
  loop = false
@@ -782,7 +784,7 @@ class UnboundedPubSubSubscription<A> implements Subscription<A> {
782
784
 
783
785
  pollUpTo(n: number): Chunk.Chunk<A> {
784
786
  const builder: Array<A> = []
785
- const default_ = null
787
+ const default_ = AbsentValue
786
788
  let i = 0
787
789
  while (i !== n) {
788
790
  const a = this.poll(default_ as unknown as A)
@@ -801,11 +803,11 @@ class UnboundedPubSubSubscription<A> implements Subscription<A> {
801
803
  this.unsubscribed = true
802
804
  this.self.publisherTail.subscribers -= 1
803
805
  while (this.subscriberHead !== this.self.publisherTail) {
804
- if (this.subscriberHead.next!.value !== null) {
806
+ if (this.subscriberHead.next!.value !== AbsentValue) {
805
807
  this.subscriberHead.subscribers -= 1
806
808
  if (this.subscriberHead.subscribers === 0) {
807
809
  this.self.publisherHead = this.self.publisherHead.next!
808
- this.self.publisherHead.value = null
810
+ this.self.publisherHead.value = AbsentValue
809
811
  this.self.subscribersIndex += 1
810
812
  }
811
813
  }
@@ -816,7 +818,7 @@ class UnboundedPubSubSubscription<A> implements Subscription<A> {
816
818
  }
817
819
 
818
820
  /** @internal */
819
- class SubscriptionImpl<A> implements Queue.Dequeue<A> {
821
+ class SubscriptionImpl<in out A> implements Queue.Dequeue<A> {
820
822
  [queue.DequeueTypeId] = queue.dequeueVariance
821
823
 
822
824
  constructor(
@@ -993,8 +995,9 @@ const takeRemainderLoop = <A>(
993
995
  }
994
996
 
995
997
  /** @internal */
996
- class PubSubImpl<A> implements PubSub.PubSub<A> {
998
+ class PubSubImpl<in out A> implements PubSub.PubSub<A> {
997
999
  readonly [queue.EnqueueTypeId] = queue.enqueueVariance
1000
+ readonly [queue.DequeueTypeId] = queue.dequeueVariance
998
1001
 
999
1002
  constructor(
1000
1003
  readonly pubsub: AtomicPubSub<A>,
@@ -1176,7 +1179,7 @@ const nextPow2 = (n: number): number => {
1176
1179
  /** @internal */
1177
1180
  const ensureCapacity = (capacity: number): void => {
1178
1181
  if (capacity <= 0) {
1179
- throw cause.InvalidPubSubCapacityException(`Cannot construct PubSub with capacity of ${capacity}`)
1182
+ throw new core.InvalidPubSubCapacityException(`Cannot construct PubSub with capacity of ${capacity}`)
1180
1183
  }
1181
1184
  }
1182
1185
 
@@ -1228,7 +1231,7 @@ const unsafeRemove = <A>(queue: MutableQueue.MutableQueue<A>, value: A): void =>
1228
1231
  *
1229
1232
  * @internal
1230
1233
  */
1231
- export interface PubSubStrategy<A> {
1234
+ export interface PubSubStrategy<in out A> {
1232
1235
  /**
1233
1236
  * Describes any finalization logic associated with this strategy.
1234
1237
  */
@@ -1238,42 +1241,42 @@ export interface PubSubStrategy<A> {
1238
1241
  * Describes how publishers should signal to subscribers that they are
1239
1242
  * waiting for space to become available in the `PubSub`.
1240
1243
  */
1241
- readonly handleSurplus: (
1244
+ handleSurplus(
1242
1245
  pubsub: AtomicPubSub<A>,
1243
1246
  subscribers: Subscribers<A>,
1244
1247
  elements: Iterable<A>,
1245
1248
  isShutdown: MutableRef.MutableRef<boolean>
1246
- ) => Effect.Effect<never, never, boolean>
1249
+ ): Effect.Effect<never, never, boolean>
1247
1250
 
1248
1251
  /**
1249
1252
  * Describes how subscribers should signal to publishers waiting for space
1250
1253
  * to become available in the `PubSub` that space may be available.
1251
1254
  */
1252
- readonly unsafeOnPubSubEmptySpace: (
1255
+ unsafeOnPubSubEmptySpace(
1253
1256
  pubsub: AtomicPubSub<A>,
1254
1257
  subscribers: Subscribers<A>
1255
- ) => void
1258
+ ): void
1256
1259
 
1257
1260
  /**
1258
1261
  * Describes how subscribers waiting for additional values from the `PubSub`
1259
1262
  * should take those values and signal to publishers that they are no
1260
1263
  * longer waiting for additional values.
1261
1264
  */
1262
- readonly unsafeCompletePollers: (
1265
+ unsafeCompletePollers(
1263
1266
  pubsub: AtomicPubSub<A>,
1264
1267
  subscribers: Subscribers<A>,
1265
1268
  subscription: Subscription<A>,
1266
1269
  pollers: MutableQueue.MutableQueue<Deferred.Deferred<never, A>>
1267
- ) => void
1270
+ ): void
1268
1271
 
1269
1272
  /**
1270
1273
  * Describes how publishers should signal to subscribers waiting for
1271
1274
  * additional values from the `PubSub` that new values are available.
1272
1275
  */
1273
- readonly unsafeCompleteSubscribers: (
1276
+ unsafeCompleteSubscribers(
1274
1277
  pubsub: AtomicPubSub<A>,
1275
1278
  subscribers: Subscribers<A>
1276
- ) => void
1279
+ ): void
1277
1280
  }
1278
1281
 
1279
1282
  /**
@@ -1285,7 +1288,7 @@ export interface PubSubStrategy<A> {
1285
1288
  *
1286
1289
  * @internal
1287
1290
  */
1288
- class BackPressureStrategy<A> implements PubSubStrategy<A> {
1291
+ class BackPressureStrategy<in out A> implements PubSubStrategy<A> {
1289
1292
  publishers: MutableQueue.MutableQueue<
1290
1293
  readonly [
1291
1294
  A,
@@ -1410,7 +1413,7 @@ class BackPressureStrategy<A> implements PubSubStrategy<A> {
1410
1413
  *
1411
1414
  * @internal
1412
1415
  */
1413
- export class DroppingStrategy<A> implements PubSubStrategy<A> {
1416
+ export class DroppingStrategy<in out A> implements PubSubStrategy<A> {
1414
1417
  get shutdown(): Effect.Effect<never, never, void> {
1415
1418
  return core.unit
1416
1419
  }
@@ -1454,7 +1457,7 @@ export class DroppingStrategy<A> implements PubSubStrategy<A> {
1454
1457
  *
1455
1458
  * @internal
1456
1459
  */
1457
- export class SlidingStrategy<A> implements PubSubStrategy<A> {
1460
+ export class SlidingStrategy<in out A> implements PubSubStrategy<A> {
1458
1461
  get shutdown(): Effect.Effect<never, never, void> {
1459
1462
  return core.unit
1460
1463
  }
@@ -32,9 +32,22 @@ export const QueueStrategyTypeId: Queue.QueueStrategyTypeId = Symbol.for(
32
32
  QueueStrategySymbolKey
33
33
  ) as Queue.QueueStrategyTypeId
34
34
 
35
+ /** @internal */
36
+ const BackingQueueSymbolKey = "effect/BackingQueue"
37
+
38
+ /** @internal */
39
+ export const BackingQueueTypeId: Queue.BackingQueueTypeId = Symbol.for(
40
+ BackingQueueSymbolKey
41
+ ) as Queue.BackingQueueTypeId
42
+
35
43
  /** @internal */
36
44
  const queueStrategyVariance = {
37
- _A: (_: never) => _
45
+ _A: (_: any) => _
46
+ }
47
+
48
+ /** @internal */
49
+ const backingQueueVariance = {
50
+ _A: (_: any) => _
38
51
  }
39
52
 
40
53
  /** @internal */
@@ -48,7 +61,7 @@ export const dequeueVariance = {
48
61
  }
49
62
 
50
63
  /** @internal */
51
- class QueueImpl<A> implements Queue.Queue<A> {
64
+ class QueueImpl<in out A> implements Queue.Queue<A> {
52
65
  readonly [EnqueueTypeId] = enqueueVariance
53
66
  readonly [DequeueTypeId] = dequeueVariance
54
67
 
@@ -386,7 +399,8 @@ export const make = <A>(
386
399
  )
387
400
 
388
401
  /** @internal */
389
- export class BackingQueueFromMutableQueue<A> implements Queue.BackingQueue<A> {
402
+ export class BackingQueueFromMutableQueue<in out A> implements Queue.BackingQueue<A> {
403
+ readonly [BackingQueueTypeId] = backingQueueVariance
390
404
  constructor(readonly mutable: MutableQueue.MutableQueue<A>) {}
391
405
  poll<Def>(def: Def): A | Def {
392
406
  return MutableQueue.poll(this.mutable, def)
@@ -503,7 +517,7 @@ export const droppingStrategy = <A>(): Queue.Strategy<A> => new DroppingStrategy
503
517
  export const slidingStrategy = <A>(): Queue.Strategy<A> => new SlidingStrategy()
504
518
 
505
519
  /** @internal */
506
- class BackPressureStrategy<A> implements Queue.Strategy<A> {
520
+ class BackPressureStrategy<in out A> implements Queue.Strategy<A> {
507
521
  readonly [QueueStrategyTypeId] = queueStrategyVariance
508
522
 
509
523
  readonly putters = MutableQueue.unbounded<readonly [A, Deferred.Deferred<never, boolean>, boolean]>()
@@ -605,7 +619,7 @@ class BackPressureStrategy<A> implements Queue.Strategy<A> {
605
619
  }
606
620
 
607
621
  /** @internal */
608
- class DroppingStrategy<A> implements Queue.Strategy<A> {
622
+ class DroppingStrategy<in out A> implements Queue.Strategy<A> {
609
623
  readonly [QueueStrategyTypeId] = queueStrategyVariance
610
624
 
611
625
  surplusSize(): number {
@@ -637,7 +651,7 @@ class DroppingStrategy<A> implements Queue.Strategy<A> {
637
651
  }
638
652
 
639
653
  /** @internal */
640
- class SlidingStrategy<A> implements Queue.Strategy<A> {
654
+ class SlidingStrategy<in out A> implements Queue.Strategy<A> {
641
655
  readonly [QueueStrategyTypeId] = queueStrategyVariance
642
656
 
643
657
  surplusSize(): number {
@@ -11,7 +11,7 @@ export const Direction = {
11
11
  } as const
12
12
 
13
13
  /** @internal */
14
- export class RedBlackTreeIterator<K, V> implements Iterator<[K, V]> {
14
+ export class RedBlackTreeIterator<in out K, out V> implements Iterator<[K, V]> {
15
15
  private count = 0
16
16
 
17
17
  constructor(
@@ -11,7 +11,7 @@ export declare namespace Node {
11
11
  }
12
12
 
13
13
  /** @internal */
14
- export class Node<K, V> {
14
+ export class Node<out K, out V> {
15
15
  constructor(
16
16
  public color: Node.Color,
17
17
  public key: K,
@@ -19,13 +19,18 @@ const RedBlackTreeSymbolKey = "effect/RedBlackTree"
19
19
  export const RedBlackTreeTypeId: RBT.TypeId = Symbol.for(RedBlackTreeSymbolKey) as RBT.TypeId
20
20
 
21
21
  /** @internal */
22
- export interface RedBlackTreeImpl<K, V> extends RBT.RedBlackTree<K, V> {
22
+ export interface RedBlackTreeImpl<in out K, out V> extends RBT.RedBlackTree<K, V> {
23
23
  readonly _ord: Order.Order<K>
24
24
  readonly _root: Node.Node<K, V> | undefined
25
25
  }
26
26
 
27
+ const redBlackTreeVariance = {
28
+ _Key: (_: any) => _,
29
+ _Value: (_: never) => _
30
+ }
31
+
27
32
  const RedBlackTreeProto: RBT.RedBlackTree<unknown, unknown> = {
28
- [RedBlackTreeTypeId]: RedBlackTreeTypeId,
33
+ [RedBlackTreeTypeId]: redBlackTreeVariance,
29
34
  [Hash.symbol](): number {
30
35
  let hash = Hash.hash(RedBlackTreeSymbolKey)
31
36
  for (const item of this) {
@@ -14,7 +14,7 @@ export const refVariance = {
14
14
  _A: (_: any) => _
15
15
  }
16
16
 
17
- class RefImpl<A> implements Ref.Ref<A> {
17
+ class RefImpl<in out A> implements Ref.Ref<A> {
18
18
  readonly [RefTypeId] = refVariance
19
19
  constructor(readonly ref: MutableRef.MutableRef<A>) {}
20
20
  modify<B>(f: (a: A) => readonly [B, A]): Effect.Effect<never, never, B> {
@@ -22,7 +22,7 @@ export const ReloadableTypeId: Reloadable.ReloadableTypeId = Symbol.for(
22
22
 
23
23
  /** @internal */
24
24
  const reloadableVariance = {
25
- _A: (_: never) => _
25
+ _A: (_: any) => _
26
26
  }
27
27
 
28
28
  /** @internal */
@@ -2,9 +2,10 @@ import type * as Effect from "../Effect.js"
2
2
  import { dual } from "../Function.js"
3
3
  import { hasProperty } from "../Predicate.js"
4
4
  import type * as Request from "../Request.js"
5
+ import type * as Types from "../Types.js"
5
6
  import * as completedRequestMap from "./completedRequestMap.js"
6
7
  import * as core from "./core.js"
7
- import * as Data from "./data.js"
8
+ import { StructuralPrototype } from "./effectable.js"
8
9
 
9
10
  /** @internal */
10
11
  const RequestSymbolKey = "effect/Request"
@@ -20,28 +21,53 @@ const requestVariance = {
20
21
  _A: (_: never) => _
21
22
  }
22
23
 
24
+ const RequestPrototype = {
25
+ ...StructuralPrototype,
26
+ [RequestTypeId]: requestVariance
27
+ }
28
+
23
29
  /** @internal */
24
30
  export const isRequest = (u: unknown): u is Request.Request<unknown, unknown> => hasProperty(u, RequestTypeId)
25
31
 
26
32
  /** @internal */
27
33
  export const of = <R extends Request.Request<any, any>>(): Request.Request.Constructor<R> => (args) =>
28
- // @ts-expect-error
29
- Data.struct({
30
- [RequestTypeId]: requestVariance,
31
- ...args
32
- })
34
+ Object.assign(Object.create(RequestPrototype), args)
33
35
 
34
36
  /** @internal */
35
37
  export const tagged = <R extends Request.Request<any, any> & { _tag: string }>(
36
38
  tag: R["_tag"]
37
39
  ): Request.Request.Constructor<R, "_tag"> =>
38
- (args) =>
39
- // @ts-expect-error
40
- Data.struct({
41
- [RequestTypeId]: requestVariance,
42
- _tag: tag,
43
- ...args
44
- })
40
+ (args) => {
41
+ const request = Object.assign(Object.create(RequestPrototype), args)
42
+ request._tag = tag
43
+ return request
44
+ }
45
+
46
+ /** @internal */
47
+ export const Class: new<Error, Success, A extends Record<string, any>>(
48
+ args: Types.Equals<Omit<A, keyof Request.Request<unknown, unknown>>, {}> extends true ? void
49
+ : { readonly [P in keyof A as P extends keyof Request.Request<unknown, unknown> ? never : P]: A[P] }
50
+ ) => Request.Request<Error, Success> & Readonly<A> = (function() {
51
+ function Class(this: any, args: any) {
52
+ if (args) {
53
+ Object.assign(this, args)
54
+ }
55
+ }
56
+ Class.prototype = RequestPrototype
57
+ return Class as any
58
+ })()
59
+
60
+ /** @internal */
61
+ export const TaggedClass = <Tag extends string>(
62
+ tag: Tag
63
+ ): new<Error, Success, A extends Record<string, any>>(
64
+ args: Types.Equals<Omit<A, keyof Request.Request<unknown, unknown>>, {}> extends true ? void
65
+ : { readonly [P in keyof A as P extends "_tag" | keyof Request.Request<unknown, unknown> ? never : P]: A[P] }
66
+ ) => Request.Request<Error, Success> & Readonly<A> & { readonly _tag: Tag } => {
67
+ return class TaggedClass extends Class<any, any, any> {
68
+ readonly _tag = tag
69
+ } as any
70
+ }
45
71
 
46
72
  /** @internal */
47
73
  export const complete = dual<
@@ -17,9 +17,9 @@ export const ResourceTypeId: Resource.ResourceTypeId = Symbol.for(
17
17
  ) as Resource.ResourceTypeId
18
18
 
19
19
  /** @internal */
20
- const cachedVariance = {
21
- _E: (_: never) => _,
22
- _A: (_: never) => _
20
+ const resourceVariance = {
21
+ _E: (_: any) => _,
22
+ _A: (_: any) => _
23
23
  }
24
24
 
25
25
  /** @internal */
@@ -46,7 +46,7 @@ export const manual = <R, E, A>(
46
46
  pipe(
47
47
  scopedRef.fromAcquire(core.exit(acquire)),
48
48
  core.map((ref) => ({
49
- [ResourceTypeId]: cachedVariance,
49
+ [ResourceTypeId]: resourceVariance,
50
50
  scopedRef: ref,
51
51
  acquire: core.provideContext(acquire, env)
52
52
  }))
@@ -3,7 +3,7 @@ import { constUndefined } from "../Function.js"
3
3
  import * as Option from "../Option.js"
4
4
 
5
5
  /** @internal */
6
- export class RingBuffer<A> {
6
+ export class RingBuffer<out A> {
7
7
  private array: Array<A | undefined>
8
8
  private size = 0
9
9
  private current = 0
@@ -14,7 +14,6 @@ import * as Predicate from "../Predicate.js"
14
14
  import type * as Runtime from "../Runtime.js"
15
15
  import type * as RuntimeFlags from "../RuntimeFlags.js"
16
16
  import * as _scheduler from "../Scheduler.js"
17
- import { NoSuchElementException } from "./cause.js"
18
17
  import * as InternalCause from "./cause.js"
19
18
  import * as core from "./core.js"
20
19
  import * as FiberRuntime from "./fiberRuntime.js"
@@ -208,7 +207,7 @@ const fastPath = <R, E, A>(effect: Effect.Effect<R, E, A>): Exit.Exit<E, A> | un
208
207
  }
209
208
  case "None": {
210
209
  // @ts-expect-error
211
- return core.exitFail(NoSuchElementException())
210
+ return core.exitFail(core.NoSuchElementException())
212
211
  }
213
212
  }
214
213
  }
@@ -258,7 +257,7 @@ export const unsafeRunPromiseExit =
258
257
  })
259
258
 
260
259
  /** @internal */
261
- export class RuntimeImpl<R> implements Runtime.Runtime<R> {
260
+ export class RuntimeImpl<in R> implements Runtime.Runtime<R> {
262
261
  constructor(
263
262
  readonly context: Context.Context<R>,
264
263
  readonly runtimeFlags: RuntimeFlags.RuntimeFlags,