effect 2.2.5 → 2.3.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 (693) hide show
  1. package/RateLimiter/package.json +6 -0
  2. package/dist/cjs/Cause.js +14 -1
  3. package/dist/cjs/Cause.js.map +1 -1
  4. package/dist/cjs/Channel.js.map +1 -1
  5. package/dist/cjs/Clock.js.map +1 -1
  6. package/dist/cjs/Console.js.map +1 -1
  7. package/dist/cjs/Context.js +23 -25
  8. package/dist/cjs/Context.js.map +1 -1
  9. package/dist/cjs/Data.js +3 -3
  10. package/dist/cjs/Data.js.map +1 -1
  11. package/dist/cjs/Deferred.js +1 -1
  12. package/dist/cjs/Deferred.js.map +1 -1
  13. package/dist/cjs/Effect.js +9 -9
  14. package/dist/cjs/Effect.js.map +1 -1
  15. package/dist/cjs/Effectable.js.map +1 -1
  16. package/dist/cjs/Either.js.map +1 -1
  17. package/dist/cjs/Exit.js +2 -2
  18. package/dist/cjs/Exit.js.map +1 -1
  19. package/dist/cjs/Fiber.js.map +1 -1
  20. package/dist/cjs/FiberMap.js +3 -3
  21. package/dist/cjs/FiberRef.js.map +1 -1
  22. package/dist/cjs/FiberRefs.js.map +1 -1
  23. package/dist/cjs/FiberSet.js +3 -3
  24. package/dist/cjs/FiberSet.js.map +1 -1
  25. package/dist/cjs/GroupBy.js.map +1 -1
  26. package/dist/cjs/Layer.js.map +1 -1
  27. package/dist/cjs/LogLevel.js.map +1 -1
  28. package/dist/cjs/Logger.js.map +1 -1
  29. package/dist/cjs/Metric.js.map +1 -1
  30. package/dist/cjs/Number.js +20 -1
  31. package/dist/cjs/Number.js.map +1 -1
  32. package/dist/cjs/Option.js.map +1 -1
  33. package/dist/cjs/Pool.js.map +1 -1
  34. package/dist/cjs/PubSub.js.map +1 -1
  35. package/dist/cjs/Queue.js.map +1 -1
  36. package/dist/cjs/Random.js.map +1 -1
  37. package/dist/cjs/RateLimiter.js +38 -0
  38. package/dist/cjs/RateLimiter.js.map +1 -0
  39. package/dist/cjs/ReadonlyRecord.js +45 -9
  40. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  41. package/dist/cjs/Ref.js.map +1 -1
  42. package/dist/cjs/Request.js.map +1 -1
  43. package/dist/cjs/RequestResolver.js.map +1 -1
  44. package/dist/cjs/Resource.js.map +1 -1
  45. package/dist/cjs/Runtime.js +1 -4
  46. package/dist/cjs/Runtime.js.map +1 -1
  47. package/dist/cjs/RuntimeFlags.js.map +1 -1
  48. package/dist/cjs/STM.js.map +1 -1
  49. package/dist/cjs/Schedule.js.map +1 -1
  50. package/dist/cjs/Scope.js.map +1 -1
  51. package/dist/cjs/ScopedRef.js.map +1 -1
  52. package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
  53. package/dist/cjs/Sink.js.map +1 -1
  54. package/dist/cjs/Stream.js.map +1 -1
  55. package/dist/cjs/SubscriptionRef.js.map +1 -1
  56. package/dist/cjs/Supervisor.js.map +1 -1
  57. package/dist/cjs/SynchronizedRef.js.map +1 -1
  58. package/dist/cjs/TArray.js.map +1 -1
  59. package/dist/cjs/TDeferred.js.map +1 -1
  60. package/dist/cjs/TMap.js.map +1 -1
  61. package/dist/cjs/TPriorityQueue.js.map +1 -1
  62. package/dist/cjs/TPubSub.js.map +1 -1
  63. package/dist/cjs/TQueue.js.map +1 -1
  64. package/dist/cjs/TRandom.js.map +1 -1
  65. package/dist/cjs/TReentrantLock.js.map +1 -1
  66. package/dist/cjs/TRef.js.map +1 -1
  67. package/dist/cjs/TSemaphore.js.map +1 -1
  68. package/dist/cjs/TSet.js.map +1 -1
  69. package/dist/cjs/Take.js +6 -6
  70. package/dist/cjs/Take.js.map +1 -1
  71. package/dist/cjs/TestAnnotation.js +10 -13
  72. package/dist/cjs/TestAnnotation.js.map +1 -1
  73. package/dist/cjs/TestAnnotations.js +1 -1
  74. package/dist/cjs/TestAnnotations.js.map +1 -1
  75. package/dist/cjs/TestClock.js +1 -1
  76. package/dist/cjs/TestClock.js.map +1 -1
  77. package/dist/cjs/TestConfig.js +1 -1
  78. package/dist/cjs/TestConfig.js.map +1 -1
  79. package/dist/cjs/TestContext.js.map +1 -1
  80. package/dist/cjs/TestLive.js +1 -1
  81. package/dist/cjs/TestLive.js.map +1 -1
  82. package/dist/cjs/TestServices.js.map +1 -1
  83. package/dist/cjs/TestSized.js +1 -1
  84. package/dist/cjs/TestSized.js.map +1 -1
  85. package/dist/cjs/Utils.js +0 -1
  86. package/dist/cjs/Utils.js.map +1 -1
  87. package/dist/cjs/index.js +4 -2
  88. package/dist/cjs/index.js.map +1 -1
  89. package/dist/cjs/internal/cache.js.map +1 -1
  90. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  91. package/dist/cjs/internal/channel/mergeDecision.js +2 -6
  92. package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
  93. package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
  94. package/dist/cjs/internal/channel.js +1 -1
  95. package/dist/cjs/internal/channel.js.map +1 -1
  96. package/dist/cjs/internal/clock.js +1 -1
  97. package/dist/cjs/internal/clock.js.map +1 -1
  98. package/dist/cjs/internal/configProvider.js +2 -4
  99. package/dist/cjs/internal/configProvider.js.map +1 -1
  100. package/dist/cjs/internal/console.js.map +1 -1
  101. package/dist/cjs/internal/context.js +31 -22
  102. package/dist/cjs/internal/context.js.map +1 -1
  103. package/dist/cjs/internal/core-effect.js +13 -27
  104. package/dist/cjs/internal/core-effect.js.map +1 -1
  105. package/dist/cjs/internal/core-stream.js.map +1 -1
  106. package/dist/cjs/internal/core.js +61 -130
  107. package/dist/cjs/internal/core.js.map +1 -1
  108. package/dist/cjs/internal/data.js.map +1 -1
  109. package/dist/cjs/internal/defaultServices/console.js +1 -1
  110. package/dist/cjs/internal/defaultServices/console.js.map +1 -1
  111. package/dist/cjs/internal/defaultServices.js.map +1 -1
  112. package/dist/cjs/internal/deferred.js.map +1 -1
  113. package/dist/cjs/internal/differ/contextPatch.js +9 -9
  114. package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
  115. package/dist/cjs/internal/effect/circular.js +7 -10
  116. package/dist/cjs/internal/effect/circular.js.map +1 -1
  117. package/dist/cjs/internal/effectable.js +4 -4
  118. package/dist/cjs/internal/effectable.js.map +1 -1
  119. package/dist/cjs/internal/fiber.js +2 -6
  120. package/dist/cjs/internal/fiber.js.map +1 -1
  121. package/dist/cjs/internal/fiberRuntime.js +10 -19
  122. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  123. package/dist/cjs/internal/groupBy.js.map +1 -1
  124. package/dist/cjs/internal/keyedPool.js.map +1 -1
  125. package/dist/cjs/internal/layer/circular.js.map +1 -1
  126. package/dist/cjs/internal/layer.js +3 -3
  127. package/dist/cjs/internal/layer.js.map +1 -1
  128. package/dist/cjs/internal/logSpan.js +3 -5
  129. package/dist/cjs/internal/logSpan.js.map +1 -1
  130. package/dist/cjs/internal/metric.js.map +1 -1
  131. package/dist/cjs/internal/pool.js.map +1 -1
  132. package/dist/cjs/internal/pubsub.js +2 -6
  133. package/dist/cjs/internal/pubsub.js.map +1 -1
  134. package/dist/cjs/internal/query.js.map +1 -1
  135. package/dist/cjs/internal/queue.js.map +1 -1
  136. package/dist/cjs/internal/random.js +1 -1
  137. package/dist/cjs/internal/random.js.map +1 -1
  138. package/dist/cjs/internal/rateLimiter.js +44 -0
  139. package/dist/cjs/internal/rateLimiter.js.map +1 -0
  140. package/dist/cjs/internal/ref.js.map +1 -1
  141. package/dist/cjs/internal/reloadable.js +1 -9
  142. package/dist/cjs/internal/reloadable.js.map +1 -1
  143. package/dist/cjs/internal/runtime.js +0 -1
  144. package/dist/cjs/internal/runtime.js.map +1 -1
  145. package/dist/cjs/internal/schedule.js.map +1 -1
  146. package/dist/cjs/internal/scopedCache.js.map +1 -1
  147. package/dist/cjs/internal/scopedRef.js.map +1 -1
  148. package/dist/cjs/internal/sink.js +7 -7
  149. package/dist/cjs/internal/sink.js.map +1 -1
  150. package/dist/cjs/internal/stm/core.js.map +1 -1
  151. package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
  152. package/dist/cjs/internal/stm/stm/tExit.js +2 -2
  153. package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
  154. package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
  155. package/dist/cjs/internal/stm/stm.js.map +1 -1
  156. package/dist/cjs/internal/stm/tArray.js.map +1 -1
  157. package/dist/cjs/internal/stm/tDeferred.js +4 -2
  158. package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
  159. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  160. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  161. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  162. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  163. package/dist/cjs/internal/stm/tRandom.js +1 -1
  164. package/dist/cjs/internal/stm/tRandom.js.map +1 -1
  165. package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
  166. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  167. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
  168. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  169. package/dist/cjs/internal/stream/debounceState.js.map +1 -1
  170. package/dist/cjs/internal/stream/handoff.js.map +1 -1
  171. package/dist/cjs/internal/stream/handoffSignal.js.map +1 -1
  172. package/dist/cjs/internal/stream/pull.js.map +1 -1
  173. package/dist/cjs/internal/stream.js +0 -2
  174. package/dist/cjs/internal/stream.js.map +1 -1
  175. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  176. package/dist/cjs/internal/supervisor.js.map +1 -1
  177. package/dist/cjs/internal/take.js +2 -2
  178. package/dist/cjs/internal/take.js.map +1 -1
  179. package/dist/cjs/internal/testing/sleep.js.map +1 -1
  180. package/dist/cjs/internal/tracer.js +2 -2
  181. package/dist/cjs/internal/tracer.js.map +1 -1
  182. package/dist/cjs/internal/version.js +1 -1
  183. package/dist/dts/Cache.d.ts +20 -20
  184. package/dist/dts/Cache.d.ts.map +1 -1
  185. package/dist/dts/Cause.d.ts +33 -5
  186. package/dist/dts/Cause.d.ts.map +1 -1
  187. package/dist/dts/Channel.d.ts +197 -194
  188. package/dist/dts/Channel.d.ts.map +1 -1
  189. package/dist/dts/Clock.d.ts +7 -7
  190. package/dist/dts/Clock.d.ts.map +1 -1
  191. package/dist/dts/Config.d.ts +1 -1
  192. package/dist/dts/Config.d.ts.map +1 -1
  193. package/dist/dts/ConfigProvider.d.ts +6 -6
  194. package/dist/dts/ConfigProvider.d.ts.map +1 -1
  195. package/dist/dts/Console.d.ts +43 -43
  196. package/dist/dts/Console.d.ts.map +1 -1
  197. package/dist/dts/Context.d.ts +44 -29
  198. package/dist/dts/Context.d.ts.map +1 -1
  199. package/dist/dts/Data.d.ts +38 -57
  200. package/dist/dts/Data.d.ts.map +1 -1
  201. package/dist/dts/Deferred.d.ts +36 -36
  202. package/dist/dts/Deferred.d.ts.map +1 -1
  203. package/dist/dts/Effect.d.ts +732 -729
  204. package/dist/dts/Effect.d.ts.map +1 -1
  205. package/dist/dts/Effectable.d.ts +8 -8
  206. package/dist/dts/Effectable.d.ts.map +1 -1
  207. package/dist/dts/Either.d.ts +2 -3
  208. package/dist/dts/Either.d.ts.map +1 -1
  209. package/dist/dts/Exit.d.ts +74 -74
  210. package/dist/dts/Exit.d.ts.map +1 -1
  211. package/dist/dts/Fiber.d.ts +75 -75
  212. package/dist/dts/Fiber.d.ts.map +1 -1
  213. package/dist/dts/FiberMap.d.ts +22 -22
  214. package/dist/dts/FiberMap.d.ts.map +1 -1
  215. package/dist/dts/FiberRef.d.ts +28 -28
  216. package/dist/dts/FiberRef.d.ts.map +1 -1
  217. package/dist/dts/FiberRefs.d.ts +1 -1
  218. package/dist/dts/FiberRefs.d.ts.map +1 -1
  219. package/dist/dts/FiberSet.d.ts +16 -16
  220. package/dist/dts/FiberSet.d.ts.map +1 -1
  221. package/dist/dts/GroupBy.d.ts +6 -6
  222. package/dist/dts/GroupBy.d.ts.map +1 -1
  223. package/dist/dts/KeyedPool.d.ts +22 -22
  224. package/dist/dts/KeyedPool.d.ts.map +1 -1
  225. package/dist/dts/Layer.d.ts +126 -126
  226. package/dist/dts/Layer.d.ts.map +1 -1
  227. package/dist/dts/LogLevel.d.ts +2 -2
  228. package/dist/dts/LogLevel.d.ts.map +1 -1
  229. package/dist/dts/Logger.d.ts +14 -14
  230. package/dist/dts/Logger.d.ts.map +1 -1
  231. package/dist/dts/MergeDecision.d.ts +7 -7
  232. package/dist/dts/MergeState.d.ts +13 -13
  233. package/dist/dts/MergeState.d.ts.map +1 -1
  234. package/dist/dts/Metric.d.ts +32 -32
  235. package/dist/dts/Metric.d.ts.map +1 -1
  236. package/dist/dts/MetricPolling.d.ts +6 -6
  237. package/dist/dts/MetricPolling.d.ts.map +1 -1
  238. package/dist/dts/Number.d.ts +15 -0
  239. package/dist/dts/Number.d.ts.map +1 -1
  240. package/dist/dts/Option.d.ts +2 -3
  241. package/dist/dts/Option.d.ts.map +1 -1
  242. package/dist/dts/Pool.d.ts +15 -16
  243. package/dist/dts/Pool.d.ts.map +1 -1
  244. package/dist/dts/PubSub.d.ts +18 -18
  245. package/dist/dts/PubSub.d.ts.map +1 -1
  246. package/dist/dts/Queue.d.ts +40 -40
  247. package/dist/dts/Queue.d.ts.map +1 -1
  248. package/dist/dts/Random.d.ts +13 -13
  249. package/dist/dts/Random.d.ts.map +1 -1
  250. package/dist/dts/RateLimiter.d.ts +31 -0
  251. package/dist/dts/RateLimiter.d.ts.map +1 -0
  252. package/dist/dts/ReadonlyArray.d.ts +3 -3
  253. package/dist/dts/ReadonlyRecord.d.ts +37 -8
  254. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  255. package/dist/dts/Ref.d.ts +25 -25
  256. package/dist/dts/Ref.d.ts.map +1 -1
  257. package/dist/dts/Reloadable.d.ts +9 -9
  258. package/dist/dts/Reloadable.d.ts.map +1 -1
  259. package/dist/dts/Request.d.ts +27 -28
  260. package/dist/dts/Request.d.ts.map +1 -1
  261. package/dist/dts/RequestBlock.d.ts +3 -3
  262. package/dist/dts/RequestBlock.d.ts.map +1 -1
  263. package/dist/dts/RequestResolver.d.ts +16 -16
  264. package/dist/dts/RequestResolver.d.ts.map +1 -1
  265. package/dist/dts/Resource.d.ts +7 -7
  266. package/dist/dts/Resource.d.ts.map +1 -1
  267. package/dist/dts/Runtime.d.ts +13 -16
  268. package/dist/dts/Runtime.d.ts.map +1 -1
  269. package/dist/dts/RuntimeFlags.d.ts +10 -10
  270. package/dist/dts/RuntimeFlags.d.ts.map +1 -1
  271. package/dist/dts/STM.d.ts +303 -303
  272. package/dist/dts/STM.d.ts.map +1 -1
  273. package/dist/dts/Schedule.d.ts +19 -19
  274. package/dist/dts/Schedule.d.ts.map +1 -1
  275. package/dist/dts/Scope.d.ts +10 -10
  276. package/dist/dts/Scope.d.ts.map +1 -1
  277. package/dist/dts/ScopedCache.d.ts +14 -14
  278. package/dist/dts/ScopedCache.d.ts.map +1 -1
  279. package/dist/dts/ScopedRef.d.ts +5 -5
  280. package/dist/dts/ScopedRef.d.ts.map +1 -1
  281. package/dist/dts/SingleProducerAsyncInput.d.ts +8 -8
  282. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
  283. package/dist/dts/Sink.d.ts +214 -205
  284. package/dist/dts/Sink.d.ts.map +1 -1
  285. package/dist/dts/Stream.d.ts +595 -592
  286. package/dist/dts/Stream.d.ts.map +1 -1
  287. package/dist/dts/StreamEmit.d.ts +5 -5
  288. package/dist/dts/StreamEmit.d.ts.map +1 -1
  289. package/dist/dts/Streamable.d.ts +2 -2
  290. package/dist/dts/Streamable.d.ts.map +1 -1
  291. package/dist/dts/SubscriptionRef.d.ts +41 -41
  292. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  293. package/dist/dts/Supervisor.d.ts +17 -17
  294. package/dist/dts/Supervisor.d.ts.map +1 -1
  295. package/dist/dts/SynchronizedRef.d.ts +41 -41
  296. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  297. package/dist/dts/TArray.d.ts +72 -72
  298. package/dist/dts/TArray.d.ts.map +1 -1
  299. package/dist/dts/TDeferred.d.ts +12 -12
  300. package/dist/dts/TDeferred.d.ts.map +1 -1
  301. package/dist/dts/TMap.d.ts +67 -67
  302. package/dist/dts/TMap.d.ts.map +1 -1
  303. package/dist/dts/TPriorityQueue.d.ts +23 -23
  304. package/dist/dts/TPriorityQueue.d.ts.map +1 -1
  305. package/dist/dts/TPubSub.d.ts +15 -15
  306. package/dist/dts/TPubSub.d.ts.map +1 -1
  307. package/dist/dts/TQueue.d.ts +40 -40
  308. package/dist/dts/TQueue.d.ts.map +1 -1
  309. package/dist/dts/TRandom.d.ts +13 -13
  310. package/dist/dts/TRandom.d.ts.map +1 -1
  311. package/dist/dts/TReentrantLock.d.ts +21 -21
  312. package/dist/dts/TReentrantLock.d.ts.map +1 -1
  313. package/dist/dts/TRef.d.ts +25 -25
  314. package/dist/dts/TRef.d.ts.map +1 -1
  315. package/dist/dts/TSemaphore.d.ts +15 -15
  316. package/dist/dts/TSemaphore.d.ts.map +1 -1
  317. package/dist/dts/TSet.d.ts +49 -49
  318. package/dist/dts/TSet.d.ts.map +1 -1
  319. package/dist/dts/Take.d.ts +41 -41
  320. package/dist/dts/Take.d.ts.map +1 -1
  321. package/dist/dts/TestAnnotation.d.ts +1 -3
  322. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  323. package/dist/dts/TestAnnotations.d.ts +3 -3
  324. package/dist/dts/TestAnnotations.d.ts.map +1 -1
  325. package/dist/dts/TestClock.d.ts +18 -18
  326. package/dist/dts/TestClock.d.ts.map +1 -1
  327. package/dist/dts/TestConfig.d.ts.map +1 -1
  328. package/dist/dts/TestContext.d.ts +2 -2
  329. package/dist/dts/TestContext.d.ts.map +1 -1
  330. package/dist/dts/TestLive.d.ts +1 -1
  331. package/dist/dts/TestLive.d.ts.map +1 -1
  332. package/dist/dts/TestServices.d.ts +31 -31
  333. package/dist/dts/TestServices.d.ts.map +1 -1
  334. package/dist/dts/TestSized.d.ts +2 -2
  335. package/dist/dts/TestSized.d.ts.map +1 -1
  336. package/dist/dts/Tracer.d.ts +1 -1
  337. package/dist/dts/Utils.d.ts.map +1 -1
  338. package/dist/dts/index.d.ts +12 -2
  339. package/dist/dts/index.d.ts.map +1 -1
  340. package/dist/dts/internal/channel/channelExecutor.d.ts +1 -1
  341. package/dist/dts/internal/channel/channelExecutor.d.ts.map +1 -1
  342. package/dist/dts/internal/core-stream.d.ts +1 -1
  343. package/dist/dts/internal/core-stream.d.ts.map +1 -1
  344. package/dist/dts/internal/rateLimiter.d.ts +2 -0
  345. package/dist/dts/internal/rateLimiter.d.ts.map +1 -0
  346. package/dist/dts/internal/stm/stm.d.ts +6 -6
  347. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  348. package/dist/dts/internal/version.d.ts +1 -1
  349. package/dist/esm/Cause.js +13 -0
  350. package/dist/esm/Cause.js.map +1 -1
  351. package/dist/esm/Channel.js.map +1 -1
  352. package/dist/esm/Clock.js.map +1 -1
  353. package/dist/esm/Console.js.map +1 -1
  354. package/dist/esm/Context.js +22 -24
  355. package/dist/esm/Context.js.map +1 -1
  356. package/dist/esm/Data.js +4 -5
  357. package/dist/esm/Data.js.map +1 -1
  358. package/dist/esm/Deferred.js +1 -1
  359. package/dist/esm/Deferred.js.map +1 -1
  360. package/dist/esm/Effect.js +9 -9
  361. package/dist/esm/Effect.js.map +1 -1
  362. package/dist/esm/Effectable.js.map +1 -1
  363. package/dist/esm/Either.js.map +1 -1
  364. package/dist/esm/Exit.js +2 -2
  365. package/dist/esm/Exit.js.map +1 -1
  366. package/dist/esm/Fiber.js.map +1 -1
  367. package/dist/esm/FiberMap.js +3 -3
  368. package/dist/esm/FiberRef.js.map +1 -1
  369. package/dist/esm/FiberRefs.js.map +1 -1
  370. package/dist/esm/FiberSet.js +3 -3
  371. package/dist/esm/FiberSet.js.map +1 -1
  372. package/dist/esm/GroupBy.js.map +1 -1
  373. package/dist/esm/Layer.js.map +1 -1
  374. package/dist/esm/LogLevel.js.map +1 -1
  375. package/dist/esm/Logger.js.map +1 -1
  376. package/dist/esm/Metric.js.map +1 -1
  377. package/dist/esm/Number.js +18 -0
  378. package/dist/esm/Number.js.map +1 -1
  379. package/dist/esm/Option.js.map +1 -1
  380. package/dist/esm/Pool.js.map +1 -1
  381. package/dist/esm/PubSub.js.map +1 -1
  382. package/dist/esm/Queue.js.map +1 -1
  383. package/dist/esm/Random.js.map +1 -1
  384. package/dist/esm/RateLimiter.js +7 -0
  385. package/dist/esm/RateLimiter.js.map +1 -0
  386. package/dist/esm/ReadonlyRecord.js +44 -8
  387. package/dist/esm/ReadonlyRecord.js.map +1 -1
  388. package/dist/esm/Ref.js.map +1 -1
  389. package/dist/esm/Request.js.map +1 -1
  390. package/dist/esm/RequestResolver.js.map +1 -1
  391. package/dist/esm/Resource.js.map +1 -1
  392. package/dist/esm/Runtime.js +1 -4
  393. package/dist/esm/Runtime.js.map +1 -1
  394. package/dist/esm/RuntimeFlags.js.map +1 -1
  395. package/dist/esm/STM.js.map +1 -1
  396. package/dist/esm/Schedule.js.map +1 -1
  397. package/dist/esm/Scope.js.map +1 -1
  398. package/dist/esm/ScopedRef.js.map +1 -1
  399. package/dist/esm/SingleProducerAsyncInput.js.map +1 -1
  400. package/dist/esm/Sink.js.map +1 -1
  401. package/dist/esm/Stream.js.map +1 -1
  402. package/dist/esm/SubscriptionRef.js.map +1 -1
  403. package/dist/esm/Supervisor.js.map +1 -1
  404. package/dist/esm/SynchronizedRef.js.map +1 -1
  405. package/dist/esm/TArray.js.map +1 -1
  406. package/dist/esm/TDeferred.js.map +1 -1
  407. package/dist/esm/TMap.js.map +1 -1
  408. package/dist/esm/TPriorityQueue.js.map +1 -1
  409. package/dist/esm/TPubSub.js.map +1 -1
  410. package/dist/esm/TQueue.js.map +1 -1
  411. package/dist/esm/TRandom.js.map +1 -1
  412. package/dist/esm/TReentrantLock.js.map +1 -1
  413. package/dist/esm/TRef.js.map +1 -1
  414. package/dist/esm/TSemaphore.js.map +1 -1
  415. package/dist/esm/TSet.js.map +1 -1
  416. package/dist/esm/Take.js +6 -6
  417. package/dist/esm/Take.js.map +1 -1
  418. package/dist/esm/TestAnnotation.js +10 -13
  419. package/dist/esm/TestAnnotation.js.map +1 -1
  420. package/dist/esm/TestAnnotations.js +1 -1
  421. package/dist/esm/TestAnnotations.js.map +1 -1
  422. package/dist/esm/TestClock.js +1 -1
  423. package/dist/esm/TestClock.js.map +1 -1
  424. package/dist/esm/TestConfig.js +1 -1
  425. package/dist/esm/TestConfig.js.map +1 -1
  426. package/dist/esm/TestContext.js.map +1 -1
  427. package/dist/esm/TestLive.js +1 -1
  428. package/dist/esm/TestLive.js.map +1 -1
  429. package/dist/esm/TestServices.js.map +1 -1
  430. package/dist/esm/TestSized.js +1 -1
  431. package/dist/esm/TestSized.js.map +1 -1
  432. package/dist/esm/Utils.js +1 -1
  433. package/dist/esm/Utils.js.map +1 -1
  434. package/dist/esm/index.js +12 -2
  435. package/dist/esm/index.js.map +1 -1
  436. package/dist/esm/internal/cache.js.map +1 -1
  437. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  438. package/dist/esm/internal/channel/mergeDecision.js +2 -6
  439. package/dist/esm/internal/channel/mergeDecision.js.map +1 -1
  440. package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -1
  441. package/dist/esm/internal/channel.js +1 -1
  442. package/dist/esm/internal/channel.js.map +1 -1
  443. package/dist/esm/internal/clock.js +1 -1
  444. package/dist/esm/internal/clock.js.map +1 -1
  445. package/dist/esm/internal/configProvider.js +2 -4
  446. package/dist/esm/internal/configProvider.js.map +1 -1
  447. package/dist/esm/internal/console.js.map +1 -1
  448. package/dist/esm/internal/context.js +28 -20
  449. package/dist/esm/internal/context.js.map +1 -1
  450. package/dist/esm/internal/core-effect.js +12 -26
  451. package/dist/esm/internal/core-effect.js.map +1 -1
  452. package/dist/esm/internal/core-stream.js.map +1 -1
  453. package/dist/esm/internal/core.js +57 -127
  454. package/dist/esm/internal/core.js.map +1 -1
  455. package/dist/esm/internal/data.js.map +1 -1
  456. package/dist/esm/internal/defaultServices/console.js +1 -1
  457. package/dist/esm/internal/defaultServices/console.js.map +1 -1
  458. package/dist/esm/internal/defaultServices.js.map +1 -1
  459. package/dist/esm/internal/deferred.js.map +1 -1
  460. package/dist/esm/internal/differ/contextPatch.js +9 -9
  461. package/dist/esm/internal/differ/contextPatch.js.map +1 -1
  462. package/dist/esm/internal/effect/circular.js +5 -8
  463. package/dist/esm/internal/effect/circular.js.map +1 -1
  464. package/dist/esm/internal/effectable.js +4 -4
  465. package/dist/esm/internal/effectable.js.map +1 -1
  466. package/dist/esm/internal/fiber.js +2 -6
  467. package/dist/esm/internal/fiber.js.map +1 -1
  468. package/dist/esm/internal/fiberRuntime.js +10 -19
  469. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  470. package/dist/esm/internal/groupBy.js.map +1 -1
  471. package/dist/esm/internal/keyedPool.js.map +1 -1
  472. package/dist/esm/internal/layer/circular.js.map +1 -1
  473. package/dist/esm/internal/layer.js +3 -3
  474. package/dist/esm/internal/layer.js.map +1 -1
  475. package/dist/esm/internal/logSpan.js +3 -5
  476. package/dist/esm/internal/logSpan.js.map +1 -1
  477. package/dist/esm/internal/metric.js.map +1 -1
  478. package/dist/esm/internal/pool.js.map +1 -1
  479. package/dist/esm/internal/pubsub.js +1 -5
  480. package/dist/esm/internal/pubsub.js.map +1 -1
  481. package/dist/esm/internal/query.js.map +1 -1
  482. package/dist/esm/internal/queue.js.map +1 -1
  483. package/dist/esm/internal/random.js +1 -1
  484. package/dist/esm/internal/random.js.map +1 -1
  485. package/dist/esm/internal/rateLimiter.js +12 -0
  486. package/dist/esm/internal/rateLimiter.js.map +1 -0
  487. package/dist/esm/internal/ref.js.map +1 -1
  488. package/dist/esm/internal/reloadable.js +1 -9
  489. package/dist/esm/internal/reloadable.js.map +1 -1
  490. package/dist/esm/internal/runtime.js +0 -1
  491. package/dist/esm/internal/runtime.js.map +1 -1
  492. package/dist/esm/internal/schedule.js.map +1 -1
  493. package/dist/esm/internal/scopedCache.js.map +1 -1
  494. package/dist/esm/internal/scopedRef.js.map +1 -1
  495. package/dist/esm/internal/sink.js +7 -7
  496. package/dist/esm/internal/sink.js.map +1 -1
  497. package/dist/esm/internal/stm/core.js.map +1 -1
  498. package/dist/esm/internal/stm/stm/stmState.js.map +1 -1
  499. package/dist/esm/internal/stm/stm/tExit.js +2 -2
  500. package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
  501. package/dist/esm/internal/stm/stm/tryCommit.js.map +1 -1
  502. package/dist/esm/internal/stm/stm.js.map +1 -1
  503. package/dist/esm/internal/stm/tArray.js.map +1 -1
  504. package/dist/esm/internal/stm/tDeferred.js +4 -2
  505. package/dist/esm/internal/stm/tDeferred.js.map +1 -1
  506. package/dist/esm/internal/stm/tMap.js.map +1 -1
  507. package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
  508. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  509. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  510. package/dist/esm/internal/stm/tRandom.js +1 -1
  511. package/dist/esm/internal/stm/tRandom.js.map +1 -1
  512. package/dist/esm/internal/stm/tReentrantLock.js.map +1 -1
  513. package/dist/esm/internal/stm/tRef.js.map +1 -1
  514. package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
  515. package/dist/esm/internal/stm/tSet.js.map +1 -1
  516. package/dist/esm/internal/stream/debounceState.js.map +1 -1
  517. package/dist/esm/internal/stream/handoff.js.map +1 -1
  518. package/dist/esm/internal/stream/handoffSignal.js.map +1 -1
  519. package/dist/esm/internal/stream/pull.js.map +1 -1
  520. package/dist/esm/internal/stream.js +0 -2
  521. package/dist/esm/internal/stream.js.map +1 -1
  522. package/dist/esm/internal/subscriptionRef.js.map +1 -1
  523. package/dist/esm/internal/supervisor.js.map +1 -1
  524. package/dist/esm/internal/take.js +2 -2
  525. package/dist/esm/internal/take.js.map +1 -1
  526. package/dist/esm/internal/testing/sleep.js.map +1 -1
  527. package/dist/esm/internal/tracer.js +2 -2
  528. package/dist/esm/internal/tracer.js.map +1 -1
  529. package/dist/esm/internal/version.js +1 -1
  530. package/package.json +9 -1
  531. package/src/Cache.ts +20 -20
  532. package/src/Cause.ts +37 -13
  533. package/src/Channel.ts +802 -794
  534. package/src/Clock.ts +7 -7
  535. package/src/Config.ts +1 -1
  536. package/src/ConfigProvider.ts +6 -6
  537. package/src/Console.ts +44 -48
  538. package/src/Context.ts +52 -30
  539. package/src/Data.ts +38 -61
  540. package/src/Deferred.ts +39 -41
  541. package/src/Effect.ts +1187 -1206
  542. package/src/Effectable.ts +8 -8
  543. package/src/Either.ts +2 -3
  544. package/src/Exit.ts +88 -105
  545. package/src/Fiber.ts +77 -83
  546. package/src/FiberMap.ts +77 -77
  547. package/src/FiberRef.ts +28 -28
  548. package/src/FiberRefs.ts +1 -1
  549. package/src/FiberSet.ts +61 -62
  550. package/src/GroupBy.ts +8 -12
  551. package/src/KeyedPool.ts +22 -22
  552. package/src/Layer.ts +187 -181
  553. package/src/LogLevel.ts +7 -6
  554. package/src/Logger.ts +18 -18
  555. package/src/MergeDecision.ts +7 -7
  556. package/src/MergeState.ts +16 -16
  557. package/src/Metric.ts +39 -39
  558. package/src/MetricPolling.ts +6 -6
  559. package/src/Number.ts +19 -0
  560. package/src/Option.ts +2 -3
  561. package/src/Pool.ts +15 -16
  562. package/src/PubSub.ts +18 -18
  563. package/src/Queue.ts +43 -46
  564. package/src/Random.ts +13 -15
  565. package/src/RateLimiter.ts +37 -0
  566. package/src/ReadonlyRecord.ts +49 -8
  567. package/src/Ref.ts +25 -25
  568. package/src/Reloadable.ts +10 -10
  569. package/src/Request.ts +31 -31
  570. package/src/RequestBlock.ts +3 -3
  571. package/src/RequestResolver.ts +21 -21
  572. package/src/Resource.ts +13 -13
  573. package/src/Runtime.ts +16 -19
  574. package/src/RuntimeFlags.ts +10 -10
  575. package/src/STM.ts +361 -362
  576. package/src/Schedule.ts +19 -19
  577. package/src/Scheduler.ts +2 -2
  578. package/src/Scope.ts +14 -15
  579. package/src/ScopedCache.ts +14 -14
  580. package/src/ScopedRef.ts +7 -7
  581. package/src/SingleProducerAsyncInput.ts +8 -9
  582. package/src/Sink.ts +357 -381
  583. package/src/Stream.ts +935 -1033
  584. package/src/StreamEmit.ts +5 -5
  585. package/src/Streamable.ts +2 -2
  586. package/src/SubscriptionRef.ts +51 -51
  587. package/src/Supervisor.ts +26 -26
  588. package/src/SynchronizedRef.ts +44 -44
  589. package/src/TArray.ts +74 -74
  590. package/src/TDeferred.ts +14 -14
  591. package/src/TMap.ts +72 -72
  592. package/src/TPriorityQueue.ts +23 -24
  593. package/src/TPubSub.ts +15 -15
  594. package/src/TQueue.ts +40 -40
  595. package/src/TRandom.ts +13 -13
  596. package/src/TReentrantLock.ts +21 -21
  597. package/src/TRef.ts +25 -25
  598. package/src/TSemaphore.ts +15 -15
  599. package/src/TSet.ts +49 -49
  600. package/src/Take.ts +51 -51
  601. package/src/TestAnnotation.ts +6 -17
  602. package/src/TestAnnotations.ts +7 -9
  603. package/src/TestClock.ts +39 -45
  604. package/src/TestConfig.ts +1 -3
  605. package/src/TestContext.ts +3 -3
  606. package/src/TestLive.ts +3 -5
  607. package/src/TestServices.ts +45 -47
  608. package/src/TestSized.ts +5 -5
  609. package/src/Tracer.ts +1 -1
  610. package/src/Utils.ts +8 -10
  611. package/src/index.ts +13 -2
  612. package/src/internal/blockedRequests.ts +2 -2
  613. package/src/internal/cache.ts +38 -38
  614. package/src/internal/channel/channelExecutor.ts +65 -73
  615. package/src/internal/channel/channelState.ts +11 -11
  616. package/src/internal/channel/continuation.ts +10 -10
  617. package/src/internal/channel/mergeDecision.ts +14 -16
  618. package/src/internal/channel/mergeState.ts +12 -12
  619. package/src/internal/channel/singleProducerAsyncInput.ts +15 -17
  620. package/src/internal/channel/subexecutor.ts +7 -7
  621. package/src/internal/channel.ts +901 -980
  622. package/src/internal/clock.ts +6 -6
  623. package/src/internal/concurrency.ts +9 -9
  624. package/src/internal/configProvider.ts +29 -36
  625. package/src/internal/console.ts +12 -12
  626. package/src/internal/context.ts +32 -23
  627. package/src/internal/core-effect.ts +655 -616
  628. package/src/internal/core-stream.ts +317 -325
  629. package/src/internal/core.ts +856 -790
  630. package/src/internal/data.ts +2 -3
  631. package/src/internal/dataSource.ts +14 -14
  632. package/src/internal/defaultServices/console.ts +3 -1
  633. package/src/internal/defaultServices.ts +21 -21
  634. package/src/internal/deferred.ts +9 -9
  635. package/src/internal/differ/contextPatch.ts +17 -17
  636. package/src/internal/effect/circular.ts +154 -159
  637. package/src/internal/effectable.ts +7 -7
  638. package/src/internal/fiber.ts +55 -59
  639. package/src/internal/fiberRefs.ts +1 -1
  640. package/src/internal/fiberRuntime.ts +426 -463
  641. package/src/internal/groupBy.ts +59 -62
  642. package/src/internal/keyedPool.ts +37 -37
  643. package/src/internal/layer/circular.ts +37 -37
  644. package/src/internal/layer.ts +235 -240
  645. package/src/internal/logSpan.ts +3 -5
  646. package/src/internal/metric/polling.ts +5 -5
  647. package/src/internal/metric.ts +54 -55
  648. package/src/internal/pool.ts +72 -72
  649. package/src/internal/pubsub.ts +75 -84
  650. package/src/internal/query.ts +25 -27
  651. package/src/internal/queue.ts +65 -70
  652. package/src/internal/random.ts +9 -9
  653. package/src/internal/rateLimiter.ts +30 -0
  654. package/src/internal/ref.ts +24 -24
  655. package/src/internal/reloadable.ts +11 -31
  656. package/src/internal/request.ts +14 -14
  657. package/src/internal/resource.ts +8 -8
  658. package/src/internal/runtime.ts +21 -22
  659. package/src/internal/schedule.ts +131 -134
  660. package/src/internal/scopedCache.ts +35 -32
  661. package/src/internal/scopedRef.ts +14 -14
  662. package/src/internal/sink.ts +507 -565
  663. package/src/internal/stm/core.ts +101 -102
  664. package/src/internal/stm/stm/stmState.ts +10 -10
  665. package/src/internal/stm/stm/tExit.ts +18 -18
  666. package/src/internal/stm/stm/tryCommit.ts +5 -5
  667. package/src/internal/stm/stm.ts +363 -374
  668. package/src/internal/stm/tArray.ts +92 -92
  669. package/src/internal/stm/tDeferred.ts +16 -14
  670. package/src/internal/stm/tMap.ts +83 -84
  671. package/src/internal/stm/tPriorityQueue.ts +24 -25
  672. package/src/internal/stm/tPubSub.ts +37 -38
  673. package/src/internal/stm/tQueue.ts +44 -48
  674. package/src/internal/stm/tRandom.ts +18 -18
  675. package/src/internal/stm/tReentrantLock.ts +28 -28
  676. package/src/internal/stm/tRef.ts +25 -25
  677. package/src/internal/stm/tSemaphore.ts +16 -16
  678. package/src/internal/stm/tSet.ts +51 -52
  679. package/src/internal/stream/debounceState.ts +7 -7
  680. package/src/internal/stream/emit.ts +4 -4
  681. package/src/internal/stream/handoff.ts +19 -19
  682. package/src/internal/stream/handoffSignal.ts +4 -4
  683. package/src/internal/stream/pull.ts +10 -11
  684. package/src/internal/stream.ts +1770 -1788
  685. package/src/internal/subscriptionRef.ts +17 -17
  686. package/src/internal/supervisor.ts +49 -56
  687. package/src/internal/synchronizedRef.ts +27 -27
  688. package/src/internal/take.ts +61 -61
  689. package/src/internal/testing/sleep.ts +2 -2
  690. package/src/internal/testing/suspendedWarningData.ts +2 -2
  691. package/src/internal/testing/warningData.ts +2 -2
  692. package/src/internal/tracer.ts +2 -6
  693. package/src/internal/version.ts +1 -1
@@ -153,7 +153,7 @@ const adjustReadLock = (readLock: ReadLock, fiberId: FiberId.FiberId, adjustment
153
153
  return new ReadLock(HashMap.set(readLock.readers, fiberId, newTotal))
154
154
  }
155
155
 
156
- const adjustRead = (self: TReentrantLock.TReentrantLock, delta: number): STM.STM<never, never, number> =>
156
+ const adjustRead = (self: TReentrantLock.TReentrantLock, delta: number): STM.STM<number> =>
157
157
  core.withSTMRuntime((runtime) => {
158
158
  const lock = tRef.unsafeGet(self.state, runtime.journal)
159
159
  if (isReadLock(lock)) {
@@ -181,10 +181,10 @@ const adjustRead = (self: TReentrantLock.TReentrantLock, delta: number): STM.STM
181
181
  })
182
182
 
183
183
  /** @internal */
184
- export const acquireRead = (self: TReentrantLock.TReentrantLock): STM.STM<never, never, number> => adjustRead(self, 1)
184
+ export const acquireRead = (self: TReentrantLock.TReentrantLock): STM.STM<number> => adjustRead(self, 1)
185
185
 
186
186
  /** @internal */
187
- export const acquireWrite = (self: TReentrantLock.TReentrantLock): STM.STM<never, never, number> =>
187
+ export const acquireWrite = (self: TReentrantLock.TReentrantLock): STM.STM<number> =>
188
188
  core.withSTMRuntime((runtime) => {
189
189
  const lock = tRef.unsafeGet(self.state, runtime.journal)
190
190
  if (isReadLock(lock) && noOtherHolder(lock, runtime.fiberId)) {
@@ -207,7 +207,7 @@ export const acquireWrite = (self: TReentrantLock.TReentrantLock): STM.STM<never
207
207
  })
208
208
 
209
209
  /** @internal */
210
- export const fiberReadLocks = (self: TReentrantLock.TReentrantLock): STM.STM<never, never, number> =>
210
+ export const fiberReadLocks = (self: TReentrantLock.TReentrantLock): STM.STM<number> =>
211
211
  core.effect<never, number>((journal, fiberId) =>
212
212
  tRef.unsafeGet(
213
213
  self.state,
@@ -216,7 +216,7 @@ export const fiberReadLocks = (self: TReentrantLock.TReentrantLock): STM.STM<nev
216
216
  )
217
217
 
218
218
  /** @internal */
219
- export const fiberWriteLocks = (self: TReentrantLock.TReentrantLock): STM.STM<never, never, number> =>
219
+ export const fiberWriteLocks = (self: TReentrantLock.TReentrantLock): STM.STM<number> =>
220
220
  core.effect<never, number>((journal, fiberId) =>
221
221
  tRef.unsafeGet(
222
222
  self.state,
@@ -225,10 +225,10 @@ export const fiberWriteLocks = (self: TReentrantLock.TReentrantLock): STM.STM<ne
225
225
  )
226
226
 
227
227
  /** @internal */
228
- export const lock = (self: TReentrantLock.TReentrantLock): Effect.Effect<Scope.Scope, never, number> => writeLock(self)
228
+ export const lock = (self: TReentrantLock.TReentrantLock): Effect.Effect<number, never, Scope.Scope> => writeLock(self)
229
229
 
230
230
  /** @internal */
231
- export const locked = (self: TReentrantLock.TReentrantLock): STM.STM<never, never, boolean> =>
231
+ export const locked = (self: TReentrantLock.TReentrantLock): STM.STM<boolean> =>
232
232
  core.zipWith(
233
233
  readLocked(self),
234
234
  writeLocked(self),
@@ -236,37 +236,37 @@ export const locked = (self: TReentrantLock.TReentrantLock): STM.STM<never, neve
236
236
  )
237
237
 
238
238
  /** @internal */
239
- export const make: STM.STM<never, never, TReentrantLock.TReentrantLock> = core.map(
239
+ export const make: STM.STM<TReentrantLock.TReentrantLock> = core.map(
240
240
  tRef.make<LockState>(emptyReadLock),
241
241
  (readLock) => new TReentranLockImpl(readLock)
242
242
  )
243
243
 
244
244
  /** @internal */
245
- export const readLock = (self: TReentrantLock.TReentrantLock): Effect.Effect<Scope.Scope, never, number> =>
245
+ export const readLock = (self: TReentrantLock.TReentrantLock): Effect.Effect<number, never, Scope.Scope> =>
246
246
  Effect.acquireRelease(
247
247
  core.commit(acquireRead(self)),
248
248
  () => core.commit(releaseRead(self))
249
249
  )
250
250
 
251
251
  /** @internal */
252
- export const readLocks = (self: TReentrantLock.TReentrantLock): STM.STM<never, never, number> =>
252
+ export const readLocks = (self: TReentrantLock.TReentrantLock): STM.STM<number> =>
253
253
  core.map(
254
254
  tRef.get(self.state),
255
255
  (state) => state.readLocks
256
256
  )
257
257
 
258
258
  /** @internal */
259
- export const readLocked = (self: TReentrantLock.TReentrantLock): STM.STM<never, never, boolean> =>
259
+ export const readLocked = (self: TReentrantLock.TReentrantLock): STM.STM<boolean> =>
260
260
  core.map(
261
261
  tRef.get(self.state),
262
262
  (state) => state.readLocks > 0
263
263
  )
264
264
 
265
265
  /** @internal */
266
- export const releaseRead = (self: TReentrantLock.TReentrantLock): STM.STM<never, never, number> => adjustRead(self, -1)
266
+ export const releaseRead = (self: TReentrantLock.TReentrantLock): STM.STM<number> => adjustRead(self, -1)
267
267
 
268
268
  /** @internal */
269
- export const releaseWrite = (self: TReentrantLock.TReentrantLock): STM.STM<never, never, number> =>
269
+ export const releaseWrite = (self: TReentrantLock.TReentrantLock): STM.STM<number> =>
270
270
  core.withSTMRuntime((runtime) => {
271
271
  const lock = tRef.unsafeGet(self.state, runtime.journal)
272
272
  if (isWriteLock(lock) && lock.writeLocks === 1 && Equal.equals(runtime.fiberId)(lock.fiberId)) {
@@ -288,22 +288,22 @@ export const releaseWrite = (self: TReentrantLock.TReentrantLock): STM.STM<never
288
288
  export const withLock = dual<
289
289
  (
290
290
  self: TReentrantLock.TReentrantLock
291
- ) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
292
- <R, E, A>(
293
- effect: Effect.Effect<R, E, A>,
291
+ ) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
292
+ <A, E, R>(
293
+ effect: Effect.Effect<A, E, R>,
294
294
  self: TReentrantLock.TReentrantLock
295
- ) => Effect.Effect<R, E, A>
295
+ ) => Effect.Effect<A, E, R>
296
296
  >(2, (effect, self) => withWriteLock(effect, self))
297
297
 
298
298
  /** @internal */
299
299
  export const withReadLock = dual<
300
- (self: TReentrantLock.TReentrantLock) => <R, E, A>(
301
- effect: Effect.Effect<R, E, A>
302
- ) => Effect.Effect<R, E, A>,
303
- <R, E, A>(
304
- effect: Effect.Effect<R, E, A>,
300
+ (self: TReentrantLock.TReentrantLock) => <A, E, R>(
301
+ effect: Effect.Effect<A, E, R>
302
+ ) => Effect.Effect<A, E, R>,
303
+ <A, E, R>(
304
+ effect: Effect.Effect<A, E, R>,
305
305
  self: TReentrantLock.TReentrantLock
306
- ) => Effect.Effect<R, E, A>
306
+ ) => Effect.Effect<A, E, R>
307
307
  >(2, (effect, self) =>
308
308
  Effect.uninterruptibleMask((restore) =>
309
309
  Effect.zipRight(
@@ -317,8 +317,8 @@ export const withReadLock = dual<
317
317
 
318
318
  /** @internal */
319
319
  export const withWriteLock = dual<
320
- (self: TReentrantLock.TReentrantLock) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
321
- <R, E, A>(effect: Effect.Effect<R, E, A>, self: TReentrantLock.TReentrantLock) => Effect.Effect<R, E, A>
320
+ (self: TReentrantLock.TReentrantLock) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
321
+ <A, E, R>(effect: Effect.Effect<A, E, R>, self: TReentrantLock.TReentrantLock) => Effect.Effect<A, E, R>
322
322
  >(2, (effect, self) =>
323
323
  Effect.uninterruptibleMask((restore) =>
324
324
  Effect.zipRight(
@@ -331,21 +331,21 @@ export const withWriteLock = dual<
331
331
  ))
332
332
 
333
333
  /** @internal */
334
- export const writeLock = (self: TReentrantLock.TReentrantLock): Effect.Effect<Scope.Scope, never, number> =>
334
+ export const writeLock = (self: TReentrantLock.TReentrantLock): Effect.Effect<number, never, Scope.Scope> =>
335
335
  Effect.acquireRelease(
336
336
  core.commit(acquireWrite(self)),
337
337
  () => core.commit(releaseWrite(self))
338
338
  )
339
339
 
340
340
  /** @internal */
341
- export const writeLocked = (self: TReentrantLock.TReentrantLock): STM.STM<never, never, boolean> =>
341
+ export const writeLocked = (self: TReentrantLock.TReentrantLock): STM.STM<boolean> =>
342
342
  core.map(
343
343
  tRef.get(self.state),
344
344
  (state) => state.writeLocks > 0
345
345
  )
346
346
 
347
347
  /** @internal */
348
- export const writeLocks = (self: TReentrantLock.TReentrantLock): STM.STM<never, never, number> =>
348
+ export const writeLocks = (self: TReentrantLock.TReentrantLock): STM.STM<number> =>
349
349
  core.map(
350
350
  tRef.get(self.state),
351
351
  (state) => state.writeLocks
@@ -32,7 +32,7 @@ export class TRefImpl<in out A> implements TRef.TRef<A> {
32
32
  this.versioned = new Versioned.Versioned(value)
33
33
  this.todos = new Map()
34
34
  }
35
- modify<B>(f: (a: A) => readonly [B, A]): STM.STM<never, never, B> {
35
+ modify<B>(f: (a: A) => readonly [B, A]): STM.STM<B> {
36
36
  return core.effect<never, B>((journal) => {
37
37
  const entry = getOrMakeEntry(this, journal)
38
38
  const [retValue, newValue] = f(Entry.unsafeGet(entry) as A)
@@ -43,7 +43,7 @@ export class TRefImpl<in out A> implements TRef.TRef<A> {
43
43
  }
44
44
 
45
45
  /** @internal */
46
- export const make = <A>(value: A): STM.STM<never, never, TRef.TRef<A>> =>
46
+ export const make = <A>(value: A): STM.STM<TRef.TRef<A>> =>
47
47
  core.effect<never, TRef.TRef<A>>((journal) => {
48
48
  const ref = new TRefImpl(value)
49
49
  journal.set(ref, Entry.make(ref, true))
@@ -55,29 +55,29 @@ export const get = <A>(self: TRef.TRef<A>) => self.modify((a) => [a, a])
55
55
 
56
56
  /** @internal */
57
57
  export const set = dual<
58
- <A>(value: A) => (self: TRef.TRef<A>) => STM.STM<never, never, void>,
59
- <A>(self: TRef.TRef<A>, value: A) => STM.STM<never, never, void>
58
+ <A>(value: A) => (self: TRef.TRef<A>) => STM.STM<void>,
59
+ <A>(self: TRef.TRef<A>, value: A) => STM.STM<void>
60
60
  >(
61
61
  2,
62
- <A>(self: TRef.TRef<A>, value: A): STM.STM<never, never, void> => self.modify((): [void, A] => [void 0, value])
62
+ <A>(self: TRef.TRef<A>, value: A): STM.STM<void> => self.modify((): [void, A] => [void 0, value])
63
63
  )
64
64
 
65
65
  /** @internal */
66
66
  export const getAndSet = dual<
67
- <A>(value: A) => (self: TRef.TRef<A>) => STM.STM<never, never, A>,
68
- <A>(self: TRef.TRef<A>, value: A) => STM.STM<never, never, A>
67
+ <A>(value: A) => (self: TRef.TRef<A>) => STM.STM<A>,
68
+ <A>(self: TRef.TRef<A>, value: A) => STM.STM<A>
69
69
  >(2, (self, value) => self.modify((a) => [a, value]))
70
70
 
71
71
  /** @internal */
72
72
  export const getAndUpdate = dual<
73
- <A>(f: (a: A) => A) => (self: TRef.TRef<A>) => STM.STM<never, never, A>,
74
- <A>(self: TRef.TRef<A>, f: (a: A) => A) => STM.STM<never, never, A>
73
+ <A>(f: (a: A) => A) => (self: TRef.TRef<A>) => STM.STM<A>,
74
+ <A>(self: TRef.TRef<A>, f: (a: A) => A) => STM.STM<A>
75
75
  >(2, (self, f) => self.modify((a) => [a, f(a)]))
76
76
 
77
77
  /** @internal */
78
78
  export const getAndUpdateSome = dual<
79
- <A>(f: (a: A) => Option.Option<A>) => (self: TRef.TRef<A>) => STM.STM<never, never, A>,
80
- <A>(self: TRef.TRef<A>, f: (a: A) => Option.Option<A>) => STM.STM<never, never, A>
79
+ <A>(f: (a: A) => Option.Option<A>) => (self: TRef.TRef<A>) => STM.STM<A>,
80
+ <A>(self: TRef.TRef<A>, f: (a: A) => Option.Option<A>) => STM.STM<A>
81
81
  >(2, (self, f) =>
82
82
  self.modify((a) =>
83
83
  Option.match(f(a), {
@@ -88,20 +88,20 @@ export const getAndUpdateSome = dual<
88
88
 
89
89
  /** @internal */
90
90
  export const setAndGet = dual<
91
- <A>(value: A) => (self: TRef.TRef<A>) => STM.STM<never, never, A>,
92
- <A>(self: TRef.TRef<A>, value: A) => STM.STM<never, never, A>
91
+ <A>(value: A) => (self: TRef.TRef<A>) => STM.STM<A>,
92
+ <A>(self: TRef.TRef<A>, value: A) => STM.STM<A>
93
93
  >(2, (self, value) => self.modify(() => [value, value]))
94
94
 
95
95
  /** @internal */
96
96
  export const modify = dual<
97
- <A, B>(f: (a: A) => readonly [B, A]) => (self: TRef.TRef<A>) => STM.STM<never, never, B>,
98
- <A, B>(self: TRef.TRef<A>, f: (a: A) => readonly [B, A]) => STM.STM<never, never, B>
97
+ <A, B>(f: (a: A) => readonly [B, A]) => (self: TRef.TRef<A>) => STM.STM<B>,
98
+ <A, B>(self: TRef.TRef<A>, f: (a: A) => readonly [B, A]) => STM.STM<B>
99
99
  >(2, (self, f) => self.modify(f))
100
100
 
101
101
  /** @internal */
102
102
  export const modifySome = dual<
103
- <A, B>(fallback: B, f: (a: A) => Option.Option<readonly [B, A]>) => (self: TRef.TRef<A>) => STM.STM<never, never, B>,
104
- <A, B>(self: TRef.TRef<A>, fallback: B, f: (a: A) => Option.Option<readonly [B, A]>) => STM.STM<never, never, B>
103
+ <A, B>(fallback: B, f: (a: A) => Option.Option<readonly [B, A]>) => (self: TRef.TRef<A>) => STM.STM<B>,
104
+ <A, B>(self: TRef.TRef<A>, fallback: B, f: (a: A) => Option.Option<readonly [B, A]>) => STM.STM<B>
105
105
  >(3, (self, fallback, f) =>
106
106
  self.modify((a) =>
107
107
  Option.match(f(a), {
@@ -112,14 +112,14 @@ export const modifySome = dual<
112
112
 
113
113
  /** @internal */
114
114
  export const update = dual<
115
- <A>(f: (a: A) => A) => (self: TRef.TRef<A>) => STM.STM<never, never, void>,
116
- <A>(self: TRef.TRef<A>, f: (a: A) => A) => STM.STM<never, never, void>
115
+ <A>(f: (a: A) => A) => (self: TRef.TRef<A>) => STM.STM<void>,
116
+ <A>(self: TRef.TRef<A>, f: (a: A) => A) => STM.STM<void>
117
117
  >(2, (self, f) => self.modify((a) => [void 0, f(a)]))
118
118
 
119
119
  /** @internal */
120
120
  export const updateAndGet = dual<
121
- <A>(f: (a: A) => A) => (self: TRef.TRef<A>) => STM.STM<never, never, A>,
122
- <A>(self: TRef.TRef<A>, f: (a: A) => A) => STM.STM<never, never, A>
121
+ <A>(f: (a: A) => A) => (self: TRef.TRef<A>) => STM.STM<A>,
122
+ <A>(self: TRef.TRef<A>, f: (a: A) => A) => STM.STM<A>
123
123
  >(2, (self, f) =>
124
124
  self.modify((a) => {
125
125
  const b = f(a)
@@ -128,8 +128,8 @@ export const updateAndGet = dual<
128
128
 
129
129
  /** @internal */
130
130
  export const updateSome = dual<
131
- <A>(f: (a: A) => Option.Option<A>) => (self: TRef.TRef<A>) => STM.STM<never, never, void>,
132
- <A>(self: TRef.TRef<A>, f: (a: A) => Option.Option<A>) => STM.STM<never, never, void>
131
+ <A>(f: (a: A) => Option.Option<A>) => (self: TRef.TRef<A>) => STM.STM<void>,
132
+ <A>(self: TRef.TRef<A>, f: (a: A) => Option.Option<A>) => STM.STM<void>
133
133
  >(
134
134
  2,
135
135
  (self, f) =>
@@ -144,8 +144,8 @@ export const updateSome = dual<
144
144
 
145
145
  /** @internal */
146
146
  export const updateSomeAndGet = dual<
147
- <A>(f: (a: A) => Option.Option<A>) => (self: TRef.TRef<A>) => STM.STM<never, never, A>,
148
- <A>(self: TRef.TRef<A>, f: (a: A) => Option.Option<A>) => STM.STM<never, never, A>
147
+ <A>(f: (a: A) => Option.Option<A>) => (self: TRef.TRef<A>) => STM.STM<A>,
148
+ <A>(self: TRef.TRef<A>, f: (a: A) => Option.Option<A>) => STM.STM<A>
149
149
  >(
150
150
  2,
151
151
  (self, f) =>
@@ -23,16 +23,16 @@ class TSemaphoreImpl implements TSemaphore.TSemaphore {
23
23
  }
24
24
 
25
25
  /** @internal */
26
- export const make = (permits: number): STM.STM<never, never, TSemaphore.TSemaphore> =>
26
+ export const make = (permits: number): STM.STM<TSemaphore.TSemaphore> =>
27
27
  STM.map(tRef.make(permits), (permits) => new TSemaphoreImpl(permits))
28
28
 
29
29
  /** @internal */
30
- export const acquire = (self: TSemaphore.TSemaphore): STM.STM<never, never, void> => acquireN(self, 1)
30
+ export const acquire = (self: TSemaphore.TSemaphore): STM.STM<void> => acquireN(self, 1)
31
31
 
32
32
  /** @internal */
33
33
  export const acquireN = dual<
34
- (n: number) => (self: TSemaphore.TSemaphore) => STM.STM<never, never, void>,
35
- (self: TSemaphore.TSemaphore, n: number) => STM.STM<never, never, void>
34
+ (n: number) => (self: TSemaphore.TSemaphore) => STM.STM<void>,
35
+ (self: TSemaphore.TSemaphore, n: number) => STM.STM<void>
36
36
  >(2, (self, n) =>
37
37
  core.withSTMRuntime((driver) => {
38
38
  if (n < 0) {
@@ -50,12 +50,12 @@ export const acquireN = dual<
50
50
  export const available = (self: TSemaphore.TSemaphore) => tRef.get(self.permits)
51
51
 
52
52
  /** @internal */
53
- export const release = (self: TSemaphore.TSemaphore): STM.STM<never, never, void> => releaseN(self, 1)
53
+ export const release = (self: TSemaphore.TSemaphore): STM.STM<void> => releaseN(self, 1)
54
54
 
55
55
  /** @internal */
56
56
  export const releaseN = dual<
57
- (n: number) => (self: TSemaphore.TSemaphore) => STM.STM<never, never, void>,
58
- (self: TSemaphore.TSemaphore, n: number) => STM.STM<never, never, void>
57
+ (n: number) => (self: TSemaphore.TSemaphore) => STM.STM<void>,
58
+ (self: TSemaphore.TSemaphore, n: number) => STM.STM<void>
59
59
  >(2, (self, n) =>
60
60
  core.withSTMRuntime((driver) => {
61
61
  if (n < 0) {
@@ -67,8 +67,8 @@ export const releaseN = dual<
67
67
 
68
68
  /** @internal */
69
69
  export const withPermit = dual<
70
- (semaphore: TSemaphore.TSemaphore) => <R, E, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
71
- <R, E, A>(self: Effect.Effect<R, E, A>, semaphore: TSemaphore.TSemaphore) => Effect.Effect<R, E, A>
70
+ (semaphore: TSemaphore.TSemaphore) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
71
+ <A, E, R>(self: Effect.Effect<A, E, R>, semaphore: TSemaphore.TSemaphore) => Effect.Effect<A, E, R>
72
72
  >(2, (self, semaphore) => withPermits(self, semaphore, 1))
73
73
 
74
74
  /** @internal */
@@ -76,12 +76,12 @@ export const withPermits = dual<
76
76
  (
77
77
  semaphore: TSemaphore.TSemaphore,
78
78
  permits: number
79
- ) => <R, E, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
80
- <R, E, A>(
81
- self: Effect.Effect<R, E, A>,
79
+ ) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
80
+ <A, E, R>(
81
+ self: Effect.Effect<A, E, R>,
82
82
  semaphore: TSemaphore.TSemaphore,
83
83
  permits: number
84
- ) => Effect.Effect<R, E, A>
84
+ ) => Effect.Effect<A, E, R>
85
85
  >(3, (self, semaphore, permits) =>
86
86
  Effect.uninterruptibleMask((restore) =>
87
87
  Effect.zipRight(
@@ -94,13 +94,13 @@ export const withPermits = dual<
94
94
  ))
95
95
 
96
96
  /** @internal */
97
- export const withPermitScoped = (self: TSemaphore.TSemaphore): Effect.Effect<Scope.Scope, never, void> =>
97
+ export const withPermitScoped = (self: TSemaphore.TSemaphore): Effect.Effect<void, never, Scope.Scope> =>
98
98
  withPermitsScoped(self, 1)
99
99
 
100
100
  /** @internal */
101
101
  export const withPermitsScoped = dual<
102
- (permits: number) => (self: TSemaphore.TSemaphore) => Effect.Effect<Scope.Scope, never, void>,
103
- (self: TSemaphore.TSemaphore, permits: number) => Effect.Effect<Scope.Scope, never, void>
102
+ (permits: number) => (self: TSemaphore.TSemaphore) => Effect.Effect<void, never, Scope.Scope>,
103
+ (self: TSemaphore.TSemaphore, permits: number) => Effect.Effect<void, never, Scope.Scope>
104
104
  >(2, (self, permits) =>
105
105
  Effect.acquireReleaseInterruptible(
106
106
  core.commit(acquireN(self, permits)),
@@ -33,14 +33,14 @@ const isTSet = (u: unknown) => hasProperty(u, TSetTypeId)
33
33
 
34
34
  /** @internal */
35
35
  export const add = dual<
36
- <A>(value: A) => (self: TSet.TSet<A>) => STM.STM<never, never, void>,
37
- <A>(self: TSet.TSet<A>, value: A) => STM.STM<never, never, void>
36
+ <A>(value: A) => (self: TSet.TSet<A>) => STM.STM<void>,
37
+ <A>(self: TSet.TSet<A>, value: A) => STM.STM<void>
38
38
  >(2, (self, value) => tMap.set(self.tMap, value, void 0 as void))
39
39
 
40
40
  /** @internal */
41
41
  export const difference = dual<
42
- <A>(other: TSet.TSet<A>) => (self: TSet.TSet<A>) => STM.STM<never, never, void>,
43
- <A>(self: TSet.TSet<A>, other: TSet.TSet<A>) => STM.STM<never, never, void>
42
+ <A>(other: TSet.TSet<A>) => (self: TSet.TSet<A>) => STM.STM<void>,
43
+ <A>(self: TSet.TSet<A>, other: TSet.TSet<A>) => STM.STM<void>
44
44
  >(2, (self, other) =>
45
45
  core.flatMap(
46
46
  toHashSet(other),
@@ -48,16 +48,16 @@ export const difference = dual<
48
48
  ))
49
49
 
50
50
  /** @internal */
51
- export const empty = <A>(): STM.STM<never, never, TSet.TSet<A>> => fromIterable<A>([])
51
+ export const empty = <A>(): STM.STM<TSet.TSet<A>> => fromIterable<A>([])
52
52
 
53
53
  /** @internal */
54
54
  export const forEach = dual<
55
- <A, R, E>(f: (value: A) => STM.STM<R, E, void>) => (self: TSet.TSet<A>) => STM.STM<R, E, void>,
56
- <A, R, E>(self: TSet.TSet<A>, f: (value: A) => STM.STM<R, E, void>) => STM.STM<R, E, void>
55
+ <A, R, E>(f: (value: A) => STM.STM<void, E, R>) => (self: TSet.TSet<A>) => STM.STM<void, E, R>,
56
+ <A, R, E>(self: TSet.TSet<A>, f: (value: A) => STM.STM<void, E, R>) => STM.STM<void, E, R>
57
57
  >(2, (self, f) => reduceSTM(self, void 0 as void, (_, value) => f(value)))
58
58
 
59
59
  /** @internal */
60
- export const fromIterable = <A>(iterable: Iterable<A>): STM.STM<never, never, TSet.TSet<A>> =>
60
+ export const fromIterable = <A>(iterable: Iterable<A>): STM.STM<TSet.TSet<A>> =>
61
61
  core.map(
62
62
  tMap.fromIterable(Array.from(iterable).map((a): [A, void] => [a, void 0])),
63
63
  (tMap) => new TSetImpl(tMap)
@@ -65,14 +65,14 @@ export const fromIterable = <A>(iterable: Iterable<A>): STM.STM<never, never, TS
65
65
 
66
66
  /** @internal */
67
67
  export const has = dual<
68
- <A>(value: A) => (self: TSet.TSet<A>) => STM.STM<never, never, boolean>,
69
- <A>(self: TSet.TSet<A>, value: A) => STM.STM<never, never, boolean>
68
+ <A>(value: A) => (self: TSet.TSet<A>) => STM.STM<boolean>,
69
+ <A>(self: TSet.TSet<A>, value: A) => STM.STM<boolean>
70
70
  >(2, (self, value) => tMap.has(self.tMap, value))
71
71
 
72
72
  /** @internal */
73
73
  export const intersection = dual<
74
- <A>(other: TSet.TSet<A>) => (self: TSet.TSet<A>) => STM.STM<never, never, void>,
75
- <A>(self: TSet.TSet<A>, other: TSet.TSet<A>) => STM.STM<never, never, void>
74
+ <A>(other: TSet.TSet<A>) => (self: TSet.TSet<A>) => STM.STM<void>,
75
+ <A>(self: TSet.TSet<A>, other: TSet.TSet<A>) => STM.STM<void>
76
76
  >(2, (self, other) =>
77
77
  core.flatMap(
78
78
  toHashSet(other),
@@ -80,17 +80,17 @@ export const intersection = dual<
80
80
  ))
81
81
 
82
82
  /** @internal */
83
- export const isEmpty = <A>(self: TSet.TSet<A>): STM.STM<never, never, boolean> => tMap.isEmpty(self.tMap)
83
+ export const isEmpty = <A>(self: TSet.TSet<A>): STM.STM<boolean> => tMap.isEmpty(self.tMap)
84
84
 
85
85
  /** @internal */
86
86
  export const make = <Elements extends Array<any>>(
87
87
  ...elements: Elements
88
- ): STM.STM<never, never, TSet.TSet<Elements[number]>> => fromIterable(elements)
88
+ ): STM.STM<TSet.TSet<Elements[number]>> => fromIterable(elements)
89
89
 
90
90
  /** @internal */
91
91
  export const reduce = dual<
92
- <Z, A>(zero: Z, f: (accumulator: Z, value: A) => Z) => (self: TSet.TSet<A>) => STM.STM<never, never, Z>,
93
- <Z, A>(self: TSet.TSet<A>, zero: Z, f: (accumulator: Z, value: A) => Z) => STM.STM<never, never, Z>
92
+ <Z, A>(zero: Z, f: (accumulator: Z, value: A) => Z) => (self: TSet.TSet<A>) => STM.STM<Z>,
93
+ <Z, A>(self: TSet.TSet<A>, zero: Z, f: (accumulator: Z, value: A) => Z) => STM.STM<Z>
94
94
  >(3, (self, zero, f) =>
95
95
  tMap.reduce(
96
96
  self.tMap,
@@ -100,8 +100,8 @@ export const reduce = dual<
100
100
 
101
101
  /** @internal */
102
102
  export const reduceSTM = dual<
103
- <Z, A, R, E>(zero: Z, f: (accumulator: Z, value: A) => STM.STM<R, E, Z>) => (self: TSet.TSet<A>) => STM.STM<R, E, Z>,
104
- <Z, A, R, E>(self: TSet.TSet<A>, zero: Z, f: (accumulator: Z, value: A) => STM.STM<R, E, Z>) => STM.STM<R, E, Z>
103
+ <Z, A, R, E>(zero: Z, f: (accumulator: Z, value: A) => STM.STM<Z, E, R>) => (self: TSet.TSet<A>) => STM.STM<Z, E, R>,
104
+ <Z, A, R, E>(self: TSet.TSet<A>, zero: Z, f: (accumulator: Z, value: A) => STM.STM<Z, E, R>) => STM.STM<Z, E, R>
105
105
  >(3, (self, zero, f) =>
106
106
  tMap.reduceSTM(
107
107
  self.tMap,
@@ -111,37 +111,37 @@ export const reduceSTM = dual<
111
111
 
112
112
  /** @internal */
113
113
  export const remove = dual<
114
- <A>(value: A) => (self: TSet.TSet<A>) => STM.STM<never, never, void>,
115
- <A>(self: TSet.TSet<A>, value: A) => STM.STM<never, never, void>
114
+ <A>(value: A) => (self: TSet.TSet<A>) => STM.STM<void>,
115
+ <A>(self: TSet.TSet<A>, value: A) => STM.STM<void>
116
116
  >(2, (self, value) => tMap.remove(self.tMap, value))
117
117
 
118
118
  /** @internal */
119
119
  export const removeAll = dual<
120
- <A>(iterable: Iterable<A>) => (self: TSet.TSet<A>) => STM.STM<never, never, void>,
121
- <A>(self: TSet.TSet<A>, iterable: Iterable<A>) => STM.STM<never, never, void>
120
+ <A>(iterable: Iterable<A>) => (self: TSet.TSet<A>) => STM.STM<void>,
121
+ <A>(self: TSet.TSet<A>, iterable: Iterable<A>) => STM.STM<void>
122
122
  >(2, (self, iterable) => tMap.removeAll(self.tMap, iterable))
123
123
 
124
124
  /** @internal */
125
125
  export const removeIf: {
126
126
  <A>(predicate: Predicate<A>, options: {
127
127
  readonly discard: true
128
- }): (self: TSet.TSet<A>) => STM.STM<never, never, void>
128
+ }): (self: TSet.TSet<A>) => STM.STM<void>
129
129
  <A>(
130
130
  predicate: Predicate<A>,
131
131
  options?: {
132
132
  readonly discard: false
133
133
  }
134
- ): (self: TSet.TSet<A>) => STM.STM<never, never, Array<A>>
134
+ ): (self: TSet.TSet<A>) => STM.STM<Array<A>>
135
135
  <A>(self: TSet.TSet<A>, predicate: Predicate<A>, options: {
136
136
  readonly discard: true
137
- }): STM.STM<never, never, void>
137
+ }): STM.STM<void>
138
138
  <A>(
139
139
  self: TSet.TSet<A>,
140
140
  predicate: Predicate<A>,
141
141
  options?: {
142
142
  readonly discard: false
143
143
  }
144
- ): STM.STM<never, never, Array<A>>
144
+ ): STM.STM<Array<A>>
145
145
  } = dual(
146
146
  (args) => isTSet(args[0]),
147
147
  (self, predicate, options) =>
@@ -155,23 +155,23 @@ export const removeIf: {
155
155
  export const retainIf: {
156
156
  <A>(predicate: Predicate<A>, options: {
157
157
  readonly discard: true
158
- }): (self: TSet.TSet<A>) => STM.STM<never, never, void>
158
+ }): (self: TSet.TSet<A>) => STM.STM<void>
159
159
  <A>(
160
160
  predicate: Predicate<A>,
161
161
  options?: {
162
162
  readonly discard: false
163
163
  }
164
- ): (self: TSet.TSet<A>) => STM.STM<never, never, Array<A>>
164
+ ): (self: TSet.TSet<A>) => STM.STM<Array<A>>
165
165
  <A>(self: TSet.TSet<A>, predicate: Predicate<A>, options: {
166
166
  readonly discard: true
167
- }): STM.STM<never, never, void>
167
+ }): STM.STM<void>
168
168
  <A>(
169
169
  self: TSet.TSet<A>,
170
170
  predicate: Predicate<A>,
171
171
  options?: {
172
172
  readonly discard: false
173
173
  }
174
- ): STM.STM<never, never, Array<A>>
174
+ ): STM.STM<Array<A>>
175
175
  } = dual((args) => isTSet(args[0]), (self, predicate, options) =>
176
176
  options?.discard === true ?
177
177
  tMap.retainIf(self.tMap, (key) => predicate(key), { discard: true }) :
@@ -181,44 +181,43 @@ export const retainIf: {
181
181
  ))
182
182
 
183
183
  /** @internal */
184
- export const size = <A>(self: TSet.TSet<A>): STM.STM<never, never, number> =>
185
- core.map(toChunk(self), (chunk) => chunk.length)
184
+ export const size = <A>(self: TSet.TSet<A>): STM.STM<number> => core.map(toChunk(self), (chunk) => chunk.length)
186
185
 
187
186
  /** @internal */
188
187
  export const takeFirst = dual<
189
- <A, B>(pf: (a: A) => Option.Option<B>) => (self: TSet.TSet<A>) => STM.STM<never, never, B>,
190
- <A, B>(self: TSet.TSet<A>, pf: (a: A) => Option.Option<B>) => STM.STM<never, never, B>
188
+ <A, B>(pf: (a: A) => Option.Option<B>) => (self: TSet.TSet<A>) => STM.STM<B>,
189
+ <A, B>(self: TSet.TSet<A>, pf: (a: A) => Option.Option<B>) => STM.STM<B>
191
190
  >(2, (self, pf) => tMap.takeFirst(self.tMap, (key) => pf(key)))
192
191
 
193
192
  /** @internal */
194
193
  export const takeFirstSTM = dual<
195
- <A, R, E, B>(pf: (a: A) => STM.STM<R, Option.Option<E>, B>) => (self: TSet.TSet<A>) => STM.STM<R, E, B>,
196
- <A, R, E, B>(self: TSet.TSet<A>, pf: (a: A) => STM.STM<R, Option.Option<E>, B>) => STM.STM<R, E, B>
194
+ <A, R, E, B>(pf: (a: A) => STM.STM<B, Option.Option<E>, R>) => (self: TSet.TSet<A>) => STM.STM<B, E, R>,
195
+ <A, R, E, B>(self: TSet.TSet<A>, pf: (a: A) => STM.STM<B, Option.Option<E>, R>) => STM.STM<B, E, R>
197
196
  >(2, (self, pf) => tMap.takeFirstSTM(self.tMap, (key) => pf(key)))
198
197
 
199
198
  /** @internal */
200
199
  export const takeSome = dual<
201
- <A, B>(pf: (a: A) => Option.Option<B>) => (self: TSet.TSet<A>) => STM.STM<never, never, RA.NonEmptyArray<B>>,
202
- <A, B>(self: TSet.TSet<A>, pf: (a: A) => Option.Option<B>) => STM.STM<never, never, RA.NonEmptyArray<B>>
200
+ <A, B>(pf: (a: A) => Option.Option<B>) => (self: TSet.TSet<A>) => STM.STM<RA.NonEmptyArray<B>>,
201
+ <A, B>(self: TSet.TSet<A>, pf: (a: A) => Option.Option<B>) => STM.STM<RA.NonEmptyArray<B>>
203
202
  >(2, (self, pf) => tMap.takeSome(self.tMap, (key) => pf(key)))
204
203
 
205
204
  /** @internal */
206
205
  export const takeSomeSTM = dual<
207
206
  <A, R, E, B>(
208
- pf: (a: A) => STM.STM<R, Option.Option<E>, B>
209
- ) => (self: TSet.TSet<A>) => STM.STM<R, E, RA.NonEmptyArray<B>>,
207
+ pf: (a: A) => STM.STM<B, Option.Option<E>, R>
208
+ ) => (self: TSet.TSet<A>) => STM.STM<RA.NonEmptyArray<B>, E, R>,
210
209
  <A, R, E, B>(
211
210
  self: TSet.TSet<A>,
212
- pf: (a: A) => STM.STM<R, Option.Option<E>, B>
213
- ) => STM.STM<R, E, RA.NonEmptyArray<B>>
211
+ pf: (a: A) => STM.STM<B, Option.Option<E>, R>
212
+ ) => STM.STM<RA.NonEmptyArray<B>, E, R>
214
213
  >(2, (self, pf) => tMap.takeSomeSTM(self.tMap, (key) => pf(key)))
215
214
 
216
215
  /** @internal */
217
- export const toChunk = <A>(self: TSet.TSet<A>): STM.STM<never, never, Chunk.Chunk<A>> =>
216
+ export const toChunk = <A>(self: TSet.TSet<A>): STM.STM<Chunk.Chunk<A>> =>
218
217
  tMap.keys(self.tMap).pipe(STM.map(Chunk.unsafeFromArray))
219
218
 
220
219
  /** @internal */
221
- export const toHashSet = <A>(self: TSet.TSet<A>): STM.STM<never, never, HashSet.HashSet<A>> =>
220
+ export const toHashSet = <A>(self: TSet.TSet<A>): STM.STM<HashSet.HashSet<A>> =>
222
221
  reduce(
223
222
  self,
224
223
  HashSet.empty<A>(),
@@ -226,7 +225,7 @@ export const toHashSet = <A>(self: TSet.TSet<A>): STM.STM<never, never, HashSet.
226
225
  )
227
226
 
228
227
  /** @internal */
229
- export const toArray = <A>(self: TSet.TSet<A>): STM.STM<never, never, Array<A>> =>
228
+ export const toArray = <A>(self: TSet.TSet<A>): STM.STM<Array<A>> =>
230
229
  reduce<Array<A>, A>(
231
230
  self,
232
231
  [],
@@ -234,19 +233,19 @@ export const toArray = <A>(self: TSet.TSet<A>): STM.STM<never, never, Array<A>>
234
233
  )
235
234
 
236
235
  /** @internal */
237
- export const toReadonlySet = <A>(self: TSet.TSet<A>): STM.STM<never, never, ReadonlySet<A>> =>
236
+ export const toReadonlySet = <A>(self: TSet.TSet<A>): STM.STM<ReadonlySet<A>> =>
238
237
  core.map(toArray(self), (values) => new Set(values))
239
238
 
240
239
  /** @internal */
241
240
  export const transform = dual<
242
- <A>(f: (a: A) => A) => (self: TSet.TSet<A>) => STM.STM<never, never, void>,
243
- <A>(self: TSet.TSet<A>, f: (a: A) => A) => STM.STM<never, never, void>
241
+ <A>(f: (a: A) => A) => (self: TSet.TSet<A>) => STM.STM<void>,
242
+ <A>(self: TSet.TSet<A>, f: (a: A) => A) => STM.STM<void>
244
243
  >(2, (self, f) => tMap.transform(self.tMap, (key, value) => [f(key), value]))
245
244
 
246
245
  /** @internal */
247
246
  export const transformSTM = dual<
248
- <A, R, E>(f: (a: A) => STM.STM<R, E, A>) => (self: TSet.TSet<A>) => STM.STM<R, E, void>,
249
- <A, R, E>(self: TSet.TSet<A>, f: (a: A) => STM.STM<R, E, A>) => STM.STM<R, E, void>
247
+ <A, R, E>(f: (a: A) => STM.STM<A, E, R>) => (self: TSet.TSet<A>) => STM.STM<void, E, R>,
248
+ <A, R, E>(self: TSet.TSet<A>, f: (a: A) => STM.STM<A, E, R>) => STM.STM<void, E, R>
250
249
  >(2, (self, f) =>
251
250
  tMap.transformSTM(
252
251
  self.tMap,
@@ -255,6 +254,6 @@ export const transformSTM = dual<
255
254
 
256
255
  /** @internal */
257
256
  export const union = dual<
258
- <A>(other: TSet.TSet<A>) => (self: TSet.TSet<A>) => STM.STM<never, never, void>,
259
- <A>(self: TSet.TSet<A>, other: TSet.TSet<A>) => STM.STM<never, never, void>
257
+ <A>(other: TSet.TSet<A>) => (self: TSet.TSet<A>) => STM.STM<void>,
258
+ <A>(self: TSet.TSet<A>, other: TSet.TSet<A>) => STM.STM<void>
260
259
  >(2, (self, other) => forEach(other, (value) => add(self, value)))