effect 3.4.8 → 3.5.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 (696) hide show
  1. package/RcMap/package.json +6 -0
  2. package/RcRef/package.json +6 -0
  3. package/dist/cjs/Array.js +14 -37
  4. package/dist/cjs/Array.js.map +1 -1
  5. package/dist/cjs/BigDecimal.js +11 -34
  6. package/dist/cjs/BigDecimal.js.map +1 -1
  7. package/dist/cjs/BigInt.js +7 -30
  8. package/dist/cjs/BigInt.js.map +1 -1
  9. package/dist/cjs/Boolean.js +6 -29
  10. package/dist/cjs/Boolean.js.map +1 -1
  11. package/dist/cjs/Brand.js +6 -29
  12. package/dist/cjs/Brand.js.map +1 -1
  13. package/dist/cjs/Cache.js +3 -26
  14. package/dist/cjs/Cache.js.map +1 -1
  15. package/dist/cjs/Cause.js +26 -28
  16. package/dist/cjs/Cause.js.map +1 -1
  17. package/dist/cjs/Channel.js +6 -29
  18. package/dist/cjs/Channel.js.map +1 -1
  19. package/dist/cjs/ChildExecutorDecision.js +3 -26
  20. package/dist/cjs/ChildExecutorDecision.js.map +1 -1
  21. package/dist/cjs/Chunk.js +12 -35
  22. package/dist/cjs/Chunk.js.map +1 -1
  23. package/dist/cjs/Clock.js +4 -27
  24. package/dist/cjs/Clock.js.map +1 -1
  25. package/dist/cjs/Config.js +3 -26
  26. package/dist/cjs/Config.js.map +1 -1
  27. package/dist/cjs/ConfigError.js +3 -26
  28. package/dist/cjs/ConfigError.js.map +1 -1
  29. package/dist/cjs/ConfigProvider.js +3 -26
  30. package/dist/cjs/ConfigProvider.js.map +1 -1
  31. package/dist/cjs/ConfigProviderPathPatch.js +3 -26
  32. package/dist/cjs/ConfigProviderPathPatch.js.map +1 -1
  33. package/dist/cjs/Console.js +4 -27
  34. package/dist/cjs/Console.js.map +1 -1
  35. package/dist/cjs/Context.js +3 -26
  36. package/dist/cjs/Context.js.map +1 -1
  37. package/dist/cjs/Cron.js +13 -36
  38. package/dist/cjs/Cron.js.map +1 -1
  39. package/dist/cjs/Data.js +9 -30
  40. package/dist/cjs/Data.js.map +1 -1
  41. package/dist/cjs/DefaultServices.js +3 -26
  42. package/dist/cjs/DefaultServices.js.map +1 -1
  43. package/dist/cjs/Deferred.js +4 -27
  44. package/dist/cjs/Deferred.js.map +1 -1
  45. package/dist/cjs/Differ.js +10 -33
  46. package/dist/cjs/Differ.js.map +1 -1
  47. package/dist/cjs/Duration.js +33 -35
  48. package/dist/cjs/Duration.js.map +1 -1
  49. package/dist/cjs/Effect.js +16 -39
  50. package/dist/cjs/Effect.js.map +1 -1
  51. package/dist/cjs/Effectable.js +3 -26
  52. package/dist/cjs/Effectable.js.map +1 -1
  53. package/dist/cjs/Either.js +8 -31
  54. package/dist/cjs/Either.js.map +1 -1
  55. package/dist/cjs/Encoding.js +7 -30
  56. package/dist/cjs/Encoding.js.map +1 -1
  57. package/dist/cjs/Equal.js +5 -28
  58. package/dist/cjs/Equal.js.map +1 -1
  59. package/dist/cjs/Equivalence.js +1 -1
  60. package/dist/cjs/Equivalence.js.map +1 -1
  61. package/dist/cjs/ExecutionStrategy.js +3 -26
  62. package/dist/cjs/ExecutionStrategy.js.map +1 -1
  63. package/dist/cjs/Exit.js +3 -26
  64. package/dist/cjs/Exit.js.map +1 -1
  65. package/dist/cjs/Fiber.js +6 -29
  66. package/dist/cjs/Fiber.js.map +1 -1
  67. package/dist/cjs/FiberHandle.js +15 -38
  68. package/dist/cjs/FiberHandle.js.map +1 -1
  69. package/dist/cjs/FiberId.js +3 -26
  70. package/dist/cjs/FiberId.js.map +1 -1
  71. package/dist/cjs/FiberMap.js +17 -40
  72. package/dist/cjs/FiberMap.js.map +1 -1
  73. package/dist/cjs/FiberRef.js +6 -29
  74. package/dist/cjs/FiberRef.js.map +1 -1
  75. package/dist/cjs/FiberRefs.js +3 -26
  76. package/dist/cjs/FiberRefs.js.map +1 -1
  77. package/dist/cjs/FiberRefsPatch.js +3 -26
  78. package/dist/cjs/FiberRefsPatch.js.map +1 -1
  79. package/dist/cjs/FiberSet.js +16 -39
  80. package/dist/cjs/FiberSet.js.map +1 -1
  81. package/dist/cjs/FiberStatus.js +3 -26
  82. package/dist/cjs/FiberStatus.js.map +1 -1
  83. package/dist/cjs/GlobalValue.js +3 -26
  84. package/dist/cjs/GlobalValue.js.map +1 -1
  85. package/dist/cjs/GroupBy.js +3 -26
  86. package/dist/cjs/GroupBy.js.map +1 -1
  87. package/dist/cjs/Hash.js +4 -4
  88. package/dist/cjs/Hash.js.map +1 -1
  89. package/dist/cjs/HashMap.js +4 -27
  90. package/dist/cjs/HashMap.js.map +1 -1
  91. package/dist/cjs/HashSet.js +3 -26
  92. package/dist/cjs/HashSet.js.map +1 -1
  93. package/dist/cjs/Inspectable.js +1 -1
  94. package/dist/cjs/Inspectable.js.map +1 -1
  95. package/dist/cjs/Iterable.js +8 -31
  96. package/dist/cjs/Iterable.js.map +1 -1
  97. package/dist/cjs/KeyedPool.js +3 -26
  98. package/dist/cjs/KeyedPool.js.map +1 -1
  99. package/dist/cjs/Layer.js +11 -34
  100. package/dist/cjs/Layer.js.map +1 -1
  101. package/dist/cjs/List.js +13 -36
  102. package/dist/cjs/List.js.map +1 -1
  103. package/dist/cjs/LogLevel.js +6 -29
  104. package/dist/cjs/LogLevel.js.map +1 -1
  105. package/dist/cjs/LogSpan.js +3 -26
  106. package/dist/cjs/LogSpan.js.map +1 -1
  107. package/dist/cjs/Logger.js +17 -30
  108. package/dist/cjs/Logger.js.map +1 -1
  109. package/dist/cjs/ManagedRuntime.js +3 -26
  110. package/dist/cjs/ManagedRuntime.js.map +1 -1
  111. package/dist/cjs/Match.js +4 -27
  112. package/dist/cjs/Match.js.map +1 -1
  113. package/dist/cjs/MergeDecision.js +3 -26
  114. package/dist/cjs/MergeDecision.js.map +1 -1
  115. package/dist/cjs/MergeState.js +3 -26
  116. package/dist/cjs/MergeState.js.map +1 -1
  117. package/dist/cjs/MergeStrategy.js +3 -26
  118. package/dist/cjs/MergeStrategy.js.map +1 -1
  119. package/dist/cjs/Metric.js +4 -27
  120. package/dist/cjs/Metric.js.map +1 -1
  121. package/dist/cjs/MetricBoundaries.js +3 -26
  122. package/dist/cjs/MetricBoundaries.js.map +1 -1
  123. package/dist/cjs/MetricHook.js +3 -26
  124. package/dist/cjs/MetricHook.js.map +1 -1
  125. package/dist/cjs/MetricKey.js +3 -26
  126. package/dist/cjs/MetricKey.js.map +1 -1
  127. package/dist/cjs/MetricKeyType.js +3 -26
  128. package/dist/cjs/MetricKeyType.js.map +1 -1
  129. package/dist/cjs/MetricLabel.js +3 -26
  130. package/dist/cjs/MetricLabel.js.map +1 -1
  131. package/dist/cjs/MetricPair.js +3 -26
  132. package/dist/cjs/MetricPair.js.map +1 -1
  133. package/dist/cjs/MetricPolling.js +3 -26
  134. package/dist/cjs/MetricPolling.js.map +1 -1
  135. package/dist/cjs/MetricRegistry.js +3 -26
  136. package/dist/cjs/MetricRegistry.js.map +1 -1
  137. package/dist/cjs/MetricState.js +3 -26
  138. package/dist/cjs/MetricState.js.map +1 -1
  139. package/dist/cjs/Micro.js +15 -38
  140. package/dist/cjs/Micro.js.map +1 -1
  141. package/dist/cjs/ModuleVersion.js +3 -26
  142. package/dist/cjs/ModuleVersion.js.map +1 -1
  143. package/dist/cjs/MutableHashMap.js +8 -31
  144. package/dist/cjs/MutableHashMap.js.map +1 -1
  145. package/dist/cjs/MutableHashSet.js +6 -29
  146. package/dist/cjs/MutableHashSet.js.map +1 -1
  147. package/dist/cjs/MutableList.js +5 -28
  148. package/dist/cjs/MutableList.js.map +1 -1
  149. package/dist/cjs/MutableQueue.js +7 -30
  150. package/dist/cjs/MutableQueue.js.map +1 -1
  151. package/dist/cjs/MutableRef.js +6 -29
  152. package/dist/cjs/MutableRef.js.map +1 -1
  153. package/dist/cjs/Number.js +7 -30
  154. package/dist/cjs/Number.js.map +1 -1
  155. package/dist/cjs/Option.js +10 -33
  156. package/dist/cjs/Option.js.map +1 -1
  157. package/dist/cjs/Order.js +1 -1
  158. package/dist/cjs/Order.js.map +1 -1
  159. package/dist/cjs/Ordering.js +1 -1
  160. package/dist/cjs/Ordering.js.map +1 -1
  161. package/dist/cjs/Pool.js +3 -26
  162. package/dist/cjs/Pool.js.map +1 -1
  163. package/dist/cjs/Predicate.js +1 -1
  164. package/dist/cjs/Predicate.js.map +1 -1
  165. package/dist/cjs/PubSub.js +3 -26
  166. package/dist/cjs/PubSub.js.map +1 -1
  167. package/dist/cjs/Queue.js +3 -26
  168. package/dist/cjs/Queue.js.map +1 -1
  169. package/dist/cjs/Random.js +13 -28
  170. package/dist/cjs/Random.js.map +1 -1
  171. package/dist/cjs/RateLimiter.js +3 -26
  172. package/dist/cjs/RateLimiter.js.map +1 -1
  173. package/dist/cjs/RcMap.js +52 -0
  174. package/dist/cjs/RcMap.js.map +1 -0
  175. package/dist/cjs/RcRef.js +51 -0
  176. package/dist/cjs/RcRef.js.map +1 -0
  177. package/dist/cjs/Readable.js +6 -29
  178. package/dist/cjs/Readable.js.map +1 -1
  179. package/dist/cjs/Record.js +6 -29
  180. package/dist/cjs/Record.js.map +1 -1
  181. package/dist/cjs/RedBlackTree.js +4 -27
  182. package/dist/cjs/RedBlackTree.js.map +1 -1
  183. package/dist/cjs/Redacted.js +4 -27
  184. package/dist/cjs/Redacted.js.map +1 -1
  185. package/dist/cjs/Ref.js +3 -26
  186. package/dist/cjs/Ref.js.map +1 -1
  187. package/dist/cjs/Reloadable.js +3 -26
  188. package/dist/cjs/Reloadable.js.map +1 -1
  189. package/dist/cjs/Request.js +7 -30
  190. package/dist/cjs/Request.js.map +1 -1
  191. package/dist/cjs/RequestBlock.js +3 -26
  192. package/dist/cjs/RequestBlock.js.map +1 -1
  193. package/dist/cjs/RequestResolver.js +6 -29
  194. package/dist/cjs/RequestResolver.js.map +1 -1
  195. package/dist/cjs/Resource.js +3 -26
  196. package/dist/cjs/Resource.js.map +1 -1
  197. package/dist/cjs/Runtime.js +3 -26
  198. package/dist/cjs/Runtime.js.map +1 -1
  199. package/dist/cjs/RuntimeFlags.js +4 -27
  200. package/dist/cjs/RuntimeFlags.js.map +1 -1
  201. package/dist/cjs/RuntimeFlagsPatch.js +4 -27
  202. package/dist/cjs/RuntimeFlagsPatch.js.map +1 -1
  203. package/dist/cjs/STM.js +6 -29
  204. package/dist/cjs/STM.js.map +1 -1
  205. package/dist/cjs/Schedule.js +3 -26
  206. package/dist/cjs/Schedule.js.map +1 -1
  207. package/dist/cjs/ScheduleDecision.js +3 -26
  208. package/dist/cjs/ScheduleDecision.js.map +1 -1
  209. package/dist/cjs/ScheduleInterval.js +3 -26
  210. package/dist/cjs/ScheduleInterval.js.map +1 -1
  211. package/dist/cjs/ScheduleIntervals.js +3 -26
  212. package/dist/cjs/ScheduleIntervals.js.map +1 -1
  213. package/dist/cjs/Scheduler.js +5 -28
  214. package/dist/cjs/Scheduler.js.map +1 -1
  215. package/dist/cjs/Scope.js +4 -27
  216. package/dist/cjs/Scope.js.map +1 -1
  217. package/dist/cjs/ScopedCache.js +3 -26
  218. package/dist/cjs/ScopedCache.js.map +1 -1
  219. package/dist/cjs/ScopedRef.js +3 -26
  220. package/dist/cjs/ScopedRef.js.map +1 -1
  221. package/dist/cjs/Secret.js +3 -26
  222. package/dist/cjs/Secret.js.map +1 -1
  223. package/dist/cjs/SingleProducerAsyncInput.js +3 -26
  224. package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
  225. package/dist/cjs/Sink.js +3 -26
  226. package/dist/cjs/Sink.js.map +1 -1
  227. package/dist/cjs/SortedMap.js +10 -33
  228. package/dist/cjs/SortedMap.js.map +1 -1
  229. package/dist/cjs/SortedSet.js +9 -32
  230. package/dist/cjs/SortedSet.js.map +1 -1
  231. package/dist/cjs/Stream.js +1077 -32
  232. package/dist/cjs/Stream.js.map +1 -1
  233. package/dist/cjs/StreamHaltStrategy.js +3 -26
  234. package/dist/cjs/StreamHaltStrategy.js.map +1 -1
  235. package/dist/cjs/Streamable.js +4 -27
  236. package/dist/cjs/Streamable.js.map +1 -1
  237. package/dist/cjs/String.js +9 -32
  238. package/dist/cjs/String.js.map +1 -1
  239. package/dist/cjs/Struct.js +6 -29
  240. package/dist/cjs/Struct.js.map +1 -1
  241. package/dist/cjs/Subscribable.js +8 -31
  242. package/dist/cjs/Subscribable.js.map +1 -1
  243. package/dist/cjs/SubscriptionRef.js +5 -28
  244. package/dist/cjs/SubscriptionRef.js.map +1 -1
  245. package/dist/cjs/Supervisor.js +5 -28
  246. package/dist/cjs/Supervisor.js.map +1 -1
  247. package/dist/cjs/Symbol.js +4 -27
  248. package/dist/cjs/Symbol.js.map +1 -1
  249. package/dist/cjs/SynchronizedRef.js +5 -28
  250. package/dist/cjs/SynchronizedRef.js.map +1 -1
  251. package/dist/cjs/TArray.js +3 -26
  252. package/dist/cjs/TArray.js.map +1 -1
  253. package/dist/cjs/TDeferred.js +3 -26
  254. package/dist/cjs/TDeferred.js.map +1 -1
  255. package/dist/cjs/TMap.js +3 -26
  256. package/dist/cjs/TMap.js.map +1 -1
  257. package/dist/cjs/TPriorityQueue.js +3 -26
  258. package/dist/cjs/TPriorityQueue.js.map +1 -1
  259. package/dist/cjs/TPubSub.js +3 -26
  260. package/dist/cjs/TPubSub.js.map +1 -1
  261. package/dist/cjs/TQueue.js +3 -26
  262. package/dist/cjs/TQueue.js.map +1 -1
  263. package/dist/cjs/TRandom.js +3 -26
  264. package/dist/cjs/TRandom.js.map +1 -1
  265. package/dist/cjs/TReentrantLock.js +3 -26
  266. package/dist/cjs/TReentrantLock.js.map +1 -1
  267. package/dist/cjs/TRef.js +3 -26
  268. package/dist/cjs/TRef.js.map +1 -1
  269. package/dist/cjs/TSemaphore.js +3 -26
  270. package/dist/cjs/TSemaphore.js.map +1 -1
  271. package/dist/cjs/TSet.js +3 -26
  272. package/dist/cjs/TSet.js.map +1 -1
  273. package/dist/cjs/Take.js +3 -26
  274. package/dist/cjs/Take.js.map +1 -1
  275. package/dist/cjs/TestAnnotation.js +10 -33
  276. package/dist/cjs/TestAnnotation.js.map +1 -1
  277. package/dist/cjs/TestAnnotationMap.js +5 -28
  278. package/dist/cjs/TestAnnotationMap.js.map +1 -1
  279. package/dist/cjs/TestAnnotations.js +15 -38
  280. package/dist/cjs/TestAnnotations.js.map +1 -1
  281. package/dist/cjs/TestClock.js +25 -48
  282. package/dist/cjs/TestClock.js.map +1 -1
  283. package/dist/cjs/TestConfig.js +3 -26
  284. package/dist/cjs/TestConfig.js.map +1 -1
  285. package/dist/cjs/TestContext.js +7 -30
  286. package/dist/cjs/TestContext.js.map +1 -1
  287. package/dist/cjs/TestLive.js +5 -28
  288. package/dist/cjs/TestLive.js.map +1 -1
  289. package/dist/cjs/TestServices.js +15 -38
  290. package/dist/cjs/TestServices.js.map +1 -1
  291. package/dist/cjs/TestSized.js +4 -27
  292. package/dist/cjs/TestSized.js.map +1 -1
  293. package/dist/cjs/Tracer.js +4 -27
  294. package/dist/cjs/Tracer.js.map +1 -1
  295. package/dist/cjs/Trie.js +3 -26
  296. package/dist/cjs/Trie.js.map +1 -1
  297. package/dist/cjs/Tuple.js +6 -29
  298. package/dist/cjs/Tuple.js.map +1 -1
  299. package/dist/cjs/Unify.js +1 -1
  300. package/dist/cjs/Unify.js.map +1 -1
  301. package/dist/cjs/UpstreamPullRequest.js +3 -26
  302. package/dist/cjs/UpstreamPullRequest.js.map +1 -1
  303. package/dist/cjs/UpstreamPullStrategy.js +3 -26
  304. package/dist/cjs/UpstreamPullStrategy.js.map +1 -1
  305. package/dist/cjs/Utils.js +4 -4
  306. package/dist/cjs/Utils.js.map +1 -1
  307. package/dist/cjs/index.js +166 -185
  308. package/dist/cjs/index.js.map +1 -1
  309. package/dist/cjs/internal/blockedRequests.js +9 -32
  310. package/dist/cjs/internal/blockedRequests.js.map +1 -1
  311. package/dist/cjs/internal/cache.js +20 -43
  312. package/dist/cjs/internal/cache.js.map +1 -1
  313. package/dist/cjs/internal/cause.js +37 -44
  314. package/dist/cjs/internal/cause.js.map +1 -1
  315. package/dist/cjs/internal/channel/channelExecutor.js +21 -44
  316. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  317. package/dist/cjs/internal/channel/channelState.js +5 -28
  318. package/dist/cjs/internal/channel/channelState.js.map +1 -1
  319. package/dist/cjs/internal/channel/childExecutorDecision.js +5 -28
  320. package/dist/cjs/internal/channel/childExecutorDecision.js.map +1 -1
  321. package/dist/cjs/internal/channel/continuation.js +4 -27
  322. package/dist/cjs/internal/channel/continuation.js.map +1 -1
  323. package/dist/cjs/internal/channel/mergeDecision.js +5 -28
  324. package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
  325. package/dist/cjs/internal/channel/mergeState.js +5 -28
  326. package/dist/cjs/internal/channel/mergeState.js.map +1 -1
  327. package/dist/cjs/internal/channel/mergeStrategy.js +5 -28
  328. package/dist/cjs/internal/channel/mergeStrategy.js.map +1 -1
  329. package/dist/cjs/internal/channel/singleProducerAsyncInput.js +9 -32
  330. package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
  331. package/dist/cjs/internal/channel/subexecutor.js +5 -28
  332. package/dist/cjs/internal/channel/subexecutor.js.map +1 -1
  333. package/dist/cjs/internal/channel/upstreamPullRequest.js +5 -28
  334. package/dist/cjs/internal/channel/upstreamPullRequest.js.map +1 -1
  335. package/dist/cjs/internal/channel/upstreamPullStrategy.js +5 -28
  336. package/dist/cjs/internal/channel/upstreamPullStrategy.js.map +1 -1
  337. package/dist/cjs/internal/channel.js +31 -54
  338. package/dist/cjs/internal/channel.js.map +1 -1
  339. package/dist/cjs/internal/clock.js +6 -29
  340. package/dist/cjs/internal/clock.js.map +1 -1
  341. package/dist/cjs/internal/completedRequestMap.js +2 -2
  342. package/dist/cjs/internal/completedRequestMap.js.map +1 -1
  343. package/dist/cjs/internal/concurrency.js +3 -26
  344. package/dist/cjs/internal/concurrency.js.map +1 -1
  345. package/dist/cjs/internal/config.js +17 -40
  346. package/dist/cjs/internal/config.js.map +1 -1
  347. package/dist/cjs/internal/configError.js +7 -30
  348. package/dist/cjs/internal/configError.js.map +1 -1
  349. package/dist/cjs/internal/configProvider/pathPatch.js +8 -31
  350. package/dist/cjs/internal/configProvider/pathPatch.js.map +1 -1
  351. package/dist/cjs/internal/configProvider.js +17 -40
  352. package/dist/cjs/internal/configProvider.js.map +1 -1
  353. package/dist/cjs/internal/console.js +9 -32
  354. package/dist/cjs/internal/console.js.map +1 -1
  355. package/dist/cjs/internal/context.js +10 -33
  356. package/dist/cjs/internal/context.js.map +1 -1
  357. package/dist/cjs/internal/core-effect.js +29 -57
  358. package/dist/cjs/internal/core-effect.js.map +1 -1
  359. package/dist/cjs/internal/core-stream.js +14 -37
  360. package/dist/cjs/internal/core-stream.js.map +1 -1
  361. package/dist/cjs/internal/core.js +47 -65
  362. package/dist/cjs/internal/core.js.map +1 -1
  363. package/dist/cjs/internal/data.js +5 -28
  364. package/dist/cjs/internal/data.js.map +1 -1
  365. package/dist/cjs/internal/dataSource.js +10 -33
  366. package/dist/cjs/internal/dataSource.js.map +1 -1
  367. package/dist/cjs/internal/defaultServices/console.js +4 -27
  368. package/dist/cjs/internal/defaultServices/console.js.map +1 -1
  369. package/dist/cjs/internal/defaultServices.js +14 -37
  370. package/dist/cjs/internal/defaultServices.js.map +1 -1
  371. package/dist/cjs/internal/deferred.js +3 -26
  372. package/dist/cjs/internal/deferred.js.map +1 -1
  373. package/dist/cjs/internal/differ/chunkPatch.js +6 -29
  374. package/dist/cjs/internal/differ/chunkPatch.js.map +1 -1
  375. package/dist/cjs/internal/differ/contextPatch.js +7 -30
  376. package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
  377. package/dist/cjs/internal/differ/hashMapPatch.js +7 -30
  378. package/dist/cjs/internal/differ/hashMapPatch.js.map +1 -1
  379. package/dist/cjs/internal/differ/hashSetPatch.js +6 -29
  380. package/dist/cjs/internal/differ/hashSetPatch.js.map +1 -1
  381. package/dist/cjs/internal/differ/orPatch.js +7 -30
  382. package/dist/cjs/internal/differ/orPatch.js.map +1 -1
  383. package/dist/cjs/internal/differ/readonlyArrayPatch.js +6 -29
  384. package/dist/cjs/internal/differ/readonlyArrayPatch.js.map +1 -1
  385. package/dist/cjs/internal/differ.js +10 -33
  386. package/dist/cjs/internal/differ.js.map +1 -1
  387. package/dist/cjs/internal/doNotation.js +1 -1
  388. package/dist/cjs/internal/doNotation.js.map +1 -1
  389. package/dist/cjs/internal/effect/circular.js +24 -47
  390. package/dist/cjs/internal/effect/circular.js.map +1 -1
  391. package/dist/cjs/internal/effectable.js +8 -31
  392. package/dist/cjs/internal/effectable.js.map +1 -1
  393. package/dist/cjs/internal/either.js +9 -32
  394. package/dist/cjs/internal/either.js.map +1 -1
  395. package/dist/cjs/internal/encoding/base64.js +4 -27
  396. package/dist/cjs/internal/encoding/base64.js.map +1 -1
  397. package/dist/cjs/internal/encoding/base64Url.js +5 -28
  398. package/dist/cjs/internal/encoding/base64Url.js.map +1 -1
  399. package/dist/cjs/internal/encoding/common.js +1 -1
  400. package/dist/cjs/internal/encoding/common.js.map +1 -1
  401. package/dist/cjs/internal/encoding/hex.js +4 -27
  402. package/dist/cjs/internal/encoding/hex.js.map +1 -1
  403. package/dist/cjs/internal/executionStrategy.js +1 -1
  404. package/dist/cjs/internal/executionStrategy.js.map +1 -1
  405. package/dist/cjs/internal/fiber.js +17 -40
  406. package/dist/cjs/internal/fiber.js.map +1 -1
  407. package/dist/cjs/internal/fiberId.js +11 -34
  408. package/dist/cjs/internal/fiberId.js.map +1 -1
  409. package/dist/cjs/internal/fiberRefs/patch.js +6 -29
  410. package/dist/cjs/internal/fiberRefs/patch.js.map +1 -1
  411. package/dist/cjs/internal/fiberRefs.js +9 -32
  412. package/dist/cjs/internal/fiberRefs.js.map +1 -1
  413. package/dist/cjs/internal/fiberRuntime.js +58 -79
  414. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  415. package/dist/cjs/internal/fiberScope.js +5 -28
  416. package/dist/cjs/internal/fiberScope.js.map +1 -1
  417. package/dist/cjs/internal/fiberStatus.js +6 -29
  418. package/dist/cjs/internal/fiberStatus.js.map +1 -1
  419. package/dist/cjs/internal/groupBy.js +18 -41
  420. package/dist/cjs/internal/groupBy.js.map +1 -1
  421. package/dist/cjs/internal/hashMap/bitwise.js +1 -1
  422. package/dist/cjs/internal/hashMap/bitwise.js.map +1 -1
  423. package/dist/cjs/internal/hashMap/keySet.js +1 -1
  424. package/dist/cjs/internal/hashMap/keySet.js.map +1 -1
  425. package/dist/cjs/internal/hashMap/node.js +9 -32
  426. package/dist/cjs/internal/hashMap/node.js.map +1 -1
  427. package/dist/cjs/internal/hashMap.js +12 -35
  428. package/dist/cjs/internal/hashMap.js.map +1 -1
  429. package/dist/cjs/internal/hashSet.js +9 -32
  430. package/dist/cjs/internal/hashSet.js.map +1 -1
  431. package/dist/cjs/internal/keyedPool.js +14 -37
  432. package/dist/cjs/internal/keyedPool.js.map +1 -1
  433. package/dist/cjs/internal/layer/circular.js +12 -35
  434. package/dist/cjs/internal/layer/circular.js.map +1 -1
  435. package/dist/cjs/internal/layer.js +25 -48
  436. package/dist/cjs/internal/layer.js.map +1 -1
  437. package/dist/cjs/internal/logger-circular.js +9 -32
  438. package/dist/cjs/internal/logger-circular.js.map +1 -1
  439. package/dist/cjs/internal/logger.js +139 -61
  440. package/dist/cjs/internal/logger.js.map +1 -1
  441. package/dist/cjs/internal/managedRuntime.js +9 -32
  442. package/dist/cjs/internal/managedRuntime.js.map +1 -1
  443. package/dist/cjs/internal/matcher.js +6 -29
  444. package/dist/cjs/internal/matcher.js.map +1 -1
  445. package/dist/cjs/internal/metric/boundaries.js +9 -32
  446. package/dist/cjs/internal/metric/boundaries.js.map +1 -1
  447. package/dist/cjs/internal/metric/hook.js +9 -32
  448. package/dist/cjs/internal/metric/hook.js.map +1 -1
  449. package/dist/cjs/internal/metric/key.js +11 -34
  450. package/dist/cjs/internal/metric/key.js.map +1 -1
  451. package/dist/cjs/internal/metric/keyType.js +8 -31
  452. package/dist/cjs/internal/metric/keyType.js.map +1 -1
  453. package/dist/cjs/internal/metric/label.js +6 -29
  454. package/dist/cjs/internal/metric/label.js.map +1 -1
  455. package/dist/cjs/internal/metric/pair.js +1 -1
  456. package/dist/cjs/internal/metric/pair.js.map +1 -1
  457. package/dist/cjs/internal/metric/polling.js +8 -31
  458. package/dist/cjs/internal/metric/polling.js.map +1 -1
  459. package/dist/cjs/internal/metric/registry.js +8 -31
  460. package/dist/cjs/internal/metric/registry.js.map +1 -1
  461. package/dist/cjs/internal/metric/state.js +8 -31
  462. package/dist/cjs/internal/metric/state.js.map +1 -1
  463. package/dist/cjs/internal/metric.js +15 -38
  464. package/dist/cjs/internal/metric.js.map +1 -1
  465. package/dist/cjs/internal/option.js +7 -30
  466. package/dist/cjs/internal/option.js.map +1 -1
  467. package/dist/cjs/internal/pool.js +43 -42
  468. package/dist/cjs/internal/pool.js.map +1 -1
  469. package/dist/cjs/internal/pubsub.js +229 -72
  470. package/dist/cjs/internal/pubsub.js.map +1 -1
  471. package/dist/cjs/internal/query.js +10 -33
  472. package/dist/cjs/internal/query.js.map +1 -1
  473. package/dist/cjs/internal/queue.js +12 -35
  474. package/dist/cjs/internal/queue.js.map +1 -1
  475. package/dist/cjs/internal/random.js +9 -31
  476. package/dist/cjs/internal/random.js.map +1 -1
  477. package/dist/cjs/internal/rateLimiter.js +6 -29
  478. package/dist/cjs/internal/rateLimiter.js.map +1 -1
  479. package/dist/cjs/internal/rcMap.js +129 -0
  480. package/dist/cjs/internal/rcMap.js.map +1 -0
  481. package/dist/cjs/internal/rcRef.js +122 -0
  482. package/dist/cjs/internal/rcRef.js.map +1 -0
  483. package/dist/cjs/internal/redBlackTree/iterator.js +4 -27
  484. package/dist/cjs/internal/redBlackTree/iterator.js.map +1 -1
  485. package/dist/cjs/internal/redBlackTree.js +13 -36
  486. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  487. package/dist/cjs/internal/redacted.js +8 -31
  488. package/dist/cjs/internal/redacted.js.map +1 -1
  489. package/dist/cjs/internal/ref.js +8 -31
  490. package/dist/cjs/internal/ref.js.map +1 -1
  491. package/dist/cjs/internal/reloadable.js +10 -33
  492. package/dist/cjs/internal/reloadable.js.map +1 -1
  493. package/dist/cjs/internal/request.js +7 -30
  494. package/dist/cjs/internal/request.js.map +1 -1
  495. package/dist/cjs/internal/resource.js +7 -30
  496. package/dist/cjs/internal/resource.js.map +1 -1
  497. package/dist/cjs/internal/ringBuffer.js +5 -28
  498. package/dist/cjs/internal/ringBuffer.js.map +1 -1
  499. package/dist/cjs/internal/runtime.js +23 -46
  500. package/dist/cjs/internal/runtime.js.map +1 -1
  501. package/dist/cjs/internal/runtimeFlags.js +5 -28
  502. package/dist/cjs/internal/runtimeFlags.js.map +1 -1
  503. package/dist/cjs/internal/runtimeFlagsPatch.js +1 -1
  504. package/dist/cjs/internal/runtimeFlagsPatch.js.map +1 -1
  505. package/dist/cjs/internal/schedule/decision.js +4 -27
  506. package/dist/cjs/internal/schedule/decision.js.map +1 -1
  507. package/dist/cjs/internal/schedule/interval.js +5 -28
  508. package/dist/cjs/internal/schedule/interval.js.map +1 -1
  509. package/dist/cjs/internal/schedule/intervals.js +7 -30
  510. package/dist/cjs/internal/schedule/intervals.js.map +1 -1
  511. package/dist/cjs/internal/schedule.js +21 -44
  512. package/dist/cjs/internal/schedule.js.map +1 -1
  513. package/dist/cjs/internal/scopedCache.js +19 -42
  514. package/dist/cjs/internal/scopedCache.js.map +1 -1
  515. package/dist/cjs/internal/scopedRef.js +10 -33
  516. package/dist/cjs/internal/scopedRef.js.map +1 -1
  517. package/dist/cjs/internal/secret.js +5 -28
  518. package/dist/cjs/internal/secret.js.map +1 -1
  519. package/dist/cjs/internal/singleShotGen.js.map +1 -1
  520. package/dist/cjs/internal/sink.js +22 -45
  521. package/dist/cjs/internal/sink.js.map +1 -1
  522. package/dist/cjs/internal/stm/core.js +30 -53
  523. package/dist/cjs/internal/stm/core.js.map +1 -1
  524. package/dist/cjs/internal/stm/stm/entry.js +3 -26
  525. package/dist/cjs/internal/stm/stm/entry.js.map +1 -1
  526. package/dist/cjs/internal/stm/stm/journal.js +3 -26
  527. package/dist/cjs/internal/stm/stm/journal.js.map +1 -1
  528. package/dist/cjs/internal/stm/stm/stmState.js +9 -32
  529. package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
  530. package/dist/cjs/internal/stm/stm/tExit.js +7 -30
  531. package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
  532. package/dist/cjs/internal/stm/stm/tryCommit.js +3 -26
  533. package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
  534. package/dist/cjs/internal/stm/stm/versioned.js.map +1 -1
  535. package/dist/cjs/internal/stm/stm.js +17 -40
  536. package/dist/cjs/internal/stm/stm.js.map +1 -1
  537. package/dist/cjs/internal/stm/tArray.js +9 -32
  538. package/dist/cjs/internal/stm/tArray.js.map +1 -1
  539. package/dist/cjs/internal/stm/tDeferred.js +8 -31
  540. package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
  541. package/dist/cjs/internal/stm/tMap.js +15 -38
  542. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  543. package/dist/cjs/internal/stm/tPriorityQueue.js +9 -32
  544. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  545. package/dist/cjs/internal/stm/tPubSub.js +12 -35
  546. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  547. package/dist/cjs/internal/stm/tQueue.js +12 -35
  548. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  549. package/dist/cjs/internal/stm/tRandom.js +10 -33
  550. package/dist/cjs/internal/stm/tRandom.js.map +1 -1
  551. package/dist/cjs/internal/stm/tReentrantLock.js +10 -33
  552. package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
  553. package/dist/cjs/internal/stm/tRef.js +7 -30
  554. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  555. package/dist/cjs/internal/stm/tSemaphore.js +8 -31
  556. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
  557. package/dist/cjs/internal/stm/tSet.js +10 -33
  558. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  559. package/dist/cjs/internal/stream/emit.js +8 -31
  560. package/dist/cjs/internal/stream/emit.js.map +1 -1
  561. package/dist/cjs/internal/stream/haltStrategy.js +4 -27
  562. package/dist/cjs/internal/stream/haltStrategy.js.map +1 -1
  563. package/dist/cjs/internal/stream/handoff.js +7 -30
  564. package/dist/cjs/internal/stream/handoff.js.map +1 -1
  565. package/dist/cjs/internal/stream/pull.js +7 -30
  566. package/dist/cjs/internal/stream/pull.js.map +1 -1
  567. package/dist/cjs/internal/stream.js +103 -80
  568. package/dist/cjs/internal/stream.js.map +1 -1
  569. package/dist/cjs/internal/subscriptionRef.js +13 -36
  570. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  571. package/dist/cjs/internal/supervisor/patch.js +8 -31
  572. package/dist/cjs/internal/supervisor/patch.js.map +1 -1
  573. package/dist/cjs/internal/supervisor.js +8 -31
  574. package/dist/cjs/internal/supervisor.js.map +1 -1
  575. package/dist/cjs/internal/synchronizedRef.js +5 -28
  576. package/dist/cjs/internal/synchronizedRef.js.map +1 -1
  577. package/dist/cjs/internal/take.js +9 -32
  578. package/dist/cjs/internal/take.js.map +1 -1
  579. package/dist/cjs/internal/tracer.js +3 -26
  580. package/dist/cjs/internal/tracer.js.map +1 -1
  581. package/dist/cjs/internal/trie.js +9 -32
  582. package/dist/cjs/internal/trie.js.map +1 -1
  583. package/dist/cjs/internal/version.js +1 -1
  584. package/dist/dts/Cause.d.ts +40 -1
  585. package/dist/dts/Cause.d.ts.map +1 -1
  586. package/dist/dts/Channel.d.ts +3 -3
  587. package/dist/dts/Channel.d.ts.map +1 -1
  588. package/dist/dts/Config.d.ts +5 -0
  589. package/dist/dts/Config.d.ts.map +1 -1
  590. package/dist/dts/Console.d.ts +2 -4
  591. package/dist/dts/Console.d.ts.map +1 -1
  592. package/dist/dts/Duration.d.ts +5 -0
  593. package/dist/dts/Duration.d.ts.map +1 -1
  594. package/dist/dts/Logger.d.ts +15 -0
  595. package/dist/dts/Logger.d.ts.map +1 -1
  596. package/dist/dts/PubSub.d.ts +15 -4
  597. package/dist/dts/PubSub.d.ts.map +1 -1
  598. package/dist/dts/Random.d.ts +8 -0
  599. package/dist/dts/Random.d.ts.map +1 -1
  600. package/dist/dts/RcMap.d.ts +93 -0
  601. package/dist/dts/RcMap.d.ts.map +1 -0
  602. package/dist/dts/RcRef.d.ts +83 -0
  603. package/dist/dts/RcRef.d.ts.map +1 -0
  604. package/dist/dts/Stream.d.ts +1139 -29
  605. package/dist/dts/Stream.d.ts.map +1 -1
  606. package/dist/dts/index.d.ts +8 -0
  607. package/dist/dts/index.d.ts.map +1 -1
  608. package/dist/dts/internal/core-effect.d.ts.map +1 -1
  609. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  610. package/dist/dts/internal/logger.d.ts.map +1 -1
  611. package/dist/dts/internal/random.d.ts +1 -1
  612. package/dist/dts/internal/random.d.ts.map +1 -1
  613. package/dist/dts/internal/rcMap.d.ts +2 -0
  614. package/dist/dts/internal/rcMap.d.ts.map +1 -0
  615. package/dist/dts/internal/rcRef.d.ts +2 -0
  616. package/dist/dts/internal/rcRef.d.ts.map +1 -0
  617. package/dist/dts/internal/stream.d.ts +1 -0
  618. package/dist/dts/internal/stream.d.ts.map +1 -1
  619. package/dist/esm/Cause.js +21 -0
  620. package/dist/esm/Cause.js.map +1 -1
  621. package/dist/esm/Channel.js.map +1 -1
  622. package/dist/esm/Config.js.map +1 -1
  623. package/dist/esm/Console.js.map +1 -1
  624. package/dist/esm/Data.js +3 -1
  625. package/dist/esm/Data.js.map +1 -1
  626. package/dist/esm/Duration.js +20 -0
  627. package/dist/esm/Duration.js.map +1 -1
  628. package/dist/esm/Logger.js +10 -0
  629. package/dist/esm/Logger.js.map +1 -1
  630. package/dist/esm/PubSub.js.map +1 -1
  631. package/dist/esm/Random.js +8 -0
  632. package/dist/esm/Random.js.map +1 -1
  633. package/dist/esm/RcMap.js +44 -0
  634. package/dist/esm/RcMap.js.map +1 -0
  635. package/dist/esm/RcRef.js +43 -0
  636. package/dist/esm/RcRef.js.map +1 -0
  637. package/dist/esm/Stream.js +1102 -3
  638. package/dist/esm/Stream.js.map +1 -1
  639. package/dist/esm/index.js +8 -0
  640. package/dist/esm/index.js.map +1 -1
  641. package/dist/esm/internal/cause.js +21 -5
  642. package/dist/esm/internal/cause.js.map +1 -1
  643. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  644. package/dist/esm/internal/channel.js.map +1 -1
  645. package/dist/esm/internal/core-effect.js +0 -5
  646. package/dist/esm/internal/core-effect.js.map +1 -1
  647. package/dist/esm/internal/core.js +11 -7
  648. package/dist/esm/internal/core.js.map +1 -1
  649. package/dist/esm/internal/defaultServices.js +1 -1
  650. package/dist/esm/internal/defaultServices.js.map +1 -1
  651. package/dist/esm/internal/fiberRuntime.js +2 -0
  652. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  653. package/dist/esm/internal/logger.js +126 -26
  654. package/dist/esm/internal/logger.js.map +1 -1
  655. package/dist/esm/internal/pool.js +29 -5
  656. package/dist/esm/internal/pool.js.map +1 -1
  657. package/dist/esm/internal/pubsub.js +216 -36
  658. package/dist/esm/internal/pubsub.js.map +1 -1
  659. package/dist/esm/internal/random.js +2 -1
  660. package/dist/esm/internal/random.js.map +1 -1
  661. package/dist/esm/internal/rcMap.js +120 -0
  662. package/dist/esm/internal/rcMap.js.map +1 -0
  663. package/dist/esm/internal/rcRef.js +112 -0
  664. package/dist/esm/internal/rcRef.js.map +1 -0
  665. package/dist/esm/internal/stream.js +53 -8
  666. package/dist/esm/internal/stream.js.map +1 -1
  667. package/dist/esm/internal/version.js +1 -1
  668. package/package.json +17 -1
  669. package/src/Cause.ts +47 -1
  670. package/src/Channel.ts +3 -3
  671. package/src/Config.ts +6 -0
  672. package/src/Console.ts +2 -4
  673. package/src/Data.ts +1 -1
  674. package/src/Duration.ts +18 -0
  675. package/src/Logger.ts +19 -0
  676. package/src/PubSub.ts +11 -4
  677. package/src/Random.ts +9 -0
  678. package/src/RcMap.ts +103 -0
  679. package/src/RcRef.ts +91 -0
  680. package/src/Stream.ts +1158 -29
  681. package/src/index.ts +10 -0
  682. package/src/internal/cause.ts +26 -5
  683. package/src/internal/channel/channelExecutor.ts +1 -1
  684. package/src/internal/channel.ts +4 -3
  685. package/src/internal/core-effect.ts +0 -5
  686. package/src/internal/core.ts +19 -9
  687. package/src/internal/defaultServices.ts +1 -1
  688. package/src/internal/fiberRuntime.ts +6 -0
  689. package/src/internal/logger.ts +133 -27
  690. package/src/internal/pool.ts +36 -5
  691. package/src/internal/pubsub.ts +249 -58
  692. package/src/internal/random.ts +2 -1
  693. package/src/internal/rcMap.ts +213 -0
  694. package/src/internal/rcRef.ts +172 -0
  695. package/src/internal/stream.ts +325 -111
  696. package/src/internal/version.ts +1 -1
package/src/index.ts CHANGED
@@ -605,6 +605,16 @@ export * as Random from "./Random.js"
605
605
  */
606
606
  export * as RateLimiter from "./RateLimiter.js"
607
607
 
608
+ /**
609
+ * @since 3.5.0
610
+ */
611
+ export * as RcMap from "./RcMap.js"
612
+
613
+ /**
614
+ * @since 3.5.0
615
+ */
616
+ export * as RcRef from "./RcRef.js"
617
+
608
618
  /**
609
619
  * @since 2.0.0
610
620
  */
@@ -970,25 +970,46 @@ export const reduceWithContext = dual<
970
970
  // -----------------------------------------------------------------------------
971
971
 
972
972
  /** @internal */
973
- export const pretty = <E>(cause: Cause.Cause<E>): string => {
973
+ export const pretty = <E>(cause: Cause.Cause<E>, options?: {
974
+ readonly renderErrorCause?: boolean | undefined
975
+ }): string => {
974
976
  if (isInterruptedOnly(cause)) {
975
977
  return "All fibers interrupted without errors."
976
978
  }
977
- return prettyErrors<E>(cause).map((e) => e.stack).join("\n")
979
+ return prettyErrors<E>(cause).map(function(e) {
980
+ if (options?.renderErrorCause !== true || e.cause === undefined) {
981
+ return e.stack
982
+ }
983
+ return `${e.stack} {\n${renderErrorCause(e.cause as PrettyError, " ")}\n}`
984
+ }).join("\n")
985
+ }
986
+
987
+ const renderErrorCause = (cause: PrettyError, prefix: string) => {
988
+ const lines = cause.stack!.split("\n")
989
+ let stack = `${prefix}[cause]: ${lines[0]}`
990
+ for (let i = 1, len = lines.length; i < len; i++) {
991
+ stack += `\n${prefix}${lines[i]}`
992
+ }
993
+ return stack
978
994
  }
979
995
 
980
996
  class PrettyError extends globalThis.Error implements Cause.PrettyError {
981
997
  span: undefined | Span = undefined
982
998
  constructor(originalError: unknown) {
999
+ const originalErrorIsObject = typeof originalError === "object" && originalError !== null
983
1000
  const prevLimit = Error.stackTraceLimit
984
- Error.stackTraceLimit = 0
985
- super(prettyErrorMessage(originalError))
1001
+ Error.stackTraceLimit = 1
1002
+ super(prettyErrorMessage(originalError), {
1003
+ cause: originalErrorIsObject && "cause" in originalError && typeof originalError.cause !== "undefined"
1004
+ ? new PrettyError(originalError.cause)
1005
+ : undefined
1006
+ })
986
1007
  if (this.message === "") {
987
1008
  this.message = "An error has occurred"
988
1009
  }
989
1010
  Error.stackTraceLimit = prevLimit
990
1011
  this.name = originalError instanceof Error ? originalError.name : "Error"
991
- if (typeof originalError === "object" && originalError !== null) {
1012
+ if (originalErrorIsObject) {
992
1013
  if (spanSymbol in originalError) {
993
1014
  this.span = originalError[spanSymbol] as Span
994
1015
  }
@@ -1095,7 +1095,7 @@ export const readUpstream = <A, E2, R, E>(
1095
1095
  /** @internal */
1096
1096
  export const run = <Env, InErr, InDone, OutErr, OutDone>(
1097
1097
  self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>
1098
- ): Effect.Effect<OutDone, OutErr, Env> => pipe(runScoped(self), Effect.scoped)
1098
+ ): Effect.Effect<OutDone, OutErr, Exclude<Env, Scope.Scope>> => pipe(runScoped(self), Effect.scoped)
1099
1099
 
1100
1100
  /** @internal */
1101
1101
  export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
@@ -2052,17 +2052,18 @@ export const repeated = <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2052
2052
  /** @internal */
2053
2053
  export const run = <OutErr, InErr, OutDone, InDone, Env>(
2054
2054
  self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>
2055
- ): Effect.Effect<OutDone, OutErr, Env> => Effect.scoped(executor.runScoped(self))
2055
+ ): Effect.Effect<OutDone, OutErr, Exclude<Env, Scope.Scope>> => Effect.scoped(executor.runScoped(self))
2056
2056
 
2057
2057
  /** @internal */
2058
2058
  export const runCollect = <OutElem, OutErr, InErr, OutDone, InDone, Env>(
2059
2059
  self: Channel.Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, Env>
2060
- ): Effect.Effect<[Chunk.Chunk<OutElem>, OutDone], OutErr, Env> => executor.run(core.collectElements(self))
2060
+ ): Effect.Effect<[Chunk.Chunk<OutElem>, OutDone], OutErr, Exclude<Env, Scope.Scope>> =>
2061
+ executor.run(core.collectElements(self))
2061
2062
 
2062
2063
  /** @internal */
2063
2064
  export const runDrain = <OutElem, OutErr, InErr, OutDone, InDone, Env>(
2064
2065
  self: Channel.Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, Env>
2065
- ): Effect.Effect<OutDone, OutErr, Env> => executor.run(drain(self))
2066
+ ): Effect.Effect<OutDone, OutErr, Exclude<Env, Scope.Scope>> => executor.run(drain(self))
2066
2067
 
2067
2068
  /** @internal */
2068
2069
  export const scoped = <A, E, R>(
@@ -911,11 +911,6 @@ export const logWithLevel = (level?: LogLevel.LogLevel) =>
911
911
  i--
912
912
  }
913
913
  }
914
- if (message.length === 0) {
915
- message = "" as any
916
- } else if (message.length === 1) {
917
- message = message[0]
918
- }
919
914
  if (cause === undefined) {
920
915
  cause = internalCause.empty
921
916
  }
@@ -2174,23 +2174,19 @@ export const causeSquashWith = dual<
2174
2174
  // -----------------------------------------------------------------------------
2175
2175
 
2176
2176
  /** @internal */
2177
- export const YieldableError: new(message?: string) => Cause.YieldableError = (function() {
2177
+ export const YieldableError: new(message?: string, options?: ErrorOptions) => Cause.YieldableError = (function() {
2178
2178
  class YieldableError extends globalThis.Error {
2179
2179
  commit() {
2180
2180
  return fail(this)
2181
2181
  }
2182
- toString() {
2183
- return this.message ? `${this.name}: ${this.message}` : this.name
2184
- }
2185
2182
  toJSON() {
2186
2183
  return { ...this }
2187
2184
  }
2188
- [NodeInspectSymbol](): string {
2189
- const stack = this.stack
2190
- if (stack) {
2191
- return `${this.toString()}\n${stack.split("\n").slice(1).join("\n")}`
2185
+ [NodeInspectSymbol]() {
2186
+ if (this.toString !== globalThis.Error.prototype.toString) {
2187
+ return this.stack ? `${this.toString()}\n${this.stack.split("\n").slice(1).join("\n")}` : this.toString()
2192
2188
  }
2193
- return this.toString()
2189
+ return this
2194
2190
  }
2195
2191
  }
2196
2192
  Object.assign(YieldableError.prototype, StructuralCommitPrototype)
@@ -2274,6 +2270,20 @@ export const InvalidPubSubCapacityException = makeException<Cause.InvalidPubSubC
2274
2270
  [InvalidPubSubCapacityExceptionTypeId]: InvalidPubSubCapacityExceptionTypeId
2275
2271
  }, "InvalidPubSubCapacityException")
2276
2272
 
2273
+ /** @internal */
2274
+ export const ExceededCapacityExceptionTypeId: Cause.ExceededCapacityExceptionTypeId = Symbol.for(
2275
+ "effect/Cause/errors/ExceededCapacityException"
2276
+ ) as Cause.ExceededCapacityExceptionTypeId
2277
+
2278
+ /** @internal */
2279
+ export const ExceededCapacityException = makeException<Cause.ExceededCapacityException>({
2280
+ [ExceededCapacityExceptionTypeId]: ExceededCapacityExceptionTypeId
2281
+ }, "ExceededCapacityException")
2282
+
2283
+ /** @internal */
2284
+ export const isExceededCapacityException = (u: unknown): u is Cause.ExceededCapacityException =>
2285
+ hasProperty(u, ExceededCapacityExceptionTypeId)
2286
+
2277
2287
  /** @internal */
2278
2288
  export const isInvalidCapacityError = (u: unknown): u is Cause.InvalidPubSubCapacityException =>
2279
2289
  hasProperty(u, InvalidPubSubCapacityExceptionTypeId)
@@ -22,7 +22,7 @@ export const liveServices: Context.Context<DefaultServices.DefaultServices> = pi
22
22
  Context.empty(),
23
23
  Context.add(clock.clockTag, clock.make()),
24
24
  Context.add(console_.consoleTag, console_.defaultConsole),
25
- Context.add(random.randomTag, random.make((Math.random() * 4294967296) >>> 0)),
25
+ Context.add(random.randomTag, random.make(Math.random())),
26
26
  Context.add(configProvider.configProviderTag, configProvider.fromEnv()),
27
27
  Context.add(tracer.tracerTag, tracer.nativeTracer)
28
28
  )
@@ -1421,6 +1421,12 @@ export const logFmtLogger: Logger<unknown, void> = globalValue(
1421
1421
  () => loggerWithConsoleLog(internalLogger.logfmtLogger)
1422
1422
  )
1423
1423
 
1424
+ /** @internal */
1425
+ export const prettyLogger: Logger<unknown, void> = globalValue(
1426
+ Symbol.for("effect/Logger/prettyLogger"),
1427
+ () => internalLogger.prettyLogger()
1428
+ )
1429
+
1424
1430
  /** @internal */
1425
1431
  export const structuredLogger: Logger<unknown, void> = globalValue(
1426
1432
  Symbol.for("effect/Logger/structuredLogger"),
@@ -1,3 +1,6 @@
1
+ import * as Arr from "../Array.js"
2
+ import * as Context from "../Context.js"
3
+ import * as FiberRefs from "../FiberRefs.js"
1
4
  import type { LazyArg } from "../Function.js"
2
5
  import { constVoid, dual, pipe } from "../Function.js"
3
6
  import * as HashMap from "../HashMap.js"
@@ -9,6 +12,8 @@ import * as LogSpan from "../LogSpan.js"
9
12
  import * as Option from "../Option.js"
10
13
  import { pipeArguments } from "../Pipeable.js"
11
14
  import * as Cause from "./cause.js"
15
+ import * as defaultServices from "./defaultServices.js"
16
+ import { consoleTag } from "./defaultServices/console.js"
12
17
  import * as _fiberId from "./fiberId.js"
13
18
 
14
19
  /** @internal */
@@ -157,7 +162,7 @@ export const zipRight = dual<
157
162
  >(2, (self, that) => map(zip(self, that), (tuple) => tuple[1]))
158
163
 
159
164
  /** @internal */
160
- export const stringLogger: Logger.Logger<unknown, string> = makeLogger<unknown, string>(
165
+ export const stringLogger: Logger.Logger<unknown, string> = makeLogger(
161
166
  ({ annotations, cause, date, fiberId, logLevel, message, spans }) => {
162
167
  const nowMillis = date.getTime()
163
168
 
@@ -169,16 +174,9 @@ export const stringLogger: Logger.Logger<unknown, string> = makeLogger<unknown,
169
174
 
170
175
  let output = outputArray.join(" ")
171
176
 
172
- if (Array.isArray(message)) {
173
- for (let i = 0; i < message.length; i++) {
174
- const stringMessage = Inspectable.toStringUnknown(message[i])
175
- if (stringMessage.length > 0) {
176
- output = output + " message="
177
- output = appendQuoted(stringMessage, output)
178
- }
179
- }
180
- } else {
181
- const stringMessage = Inspectable.toStringUnknown(message)
177
+ const messageArr = Arr.ensure(message)
178
+ for (let i = 0; i < messageArr.length; i++) {
179
+ const stringMessage = Inspectable.toStringUnknown(messageArr[i])
182
180
  if (stringMessage.length > 0) {
183
181
  output = output + " message="
184
182
  output = appendQuoted(stringMessage, output)
@@ -187,7 +185,7 @@ export const stringLogger: Logger.Logger<unknown, string> = makeLogger<unknown,
187
185
 
188
186
  if (cause != null && cause._tag !== "Empty") {
189
187
  output = output + " cause="
190
- output = appendQuoted(Cause.pretty(cause), output)
188
+ output = appendQuoted(Cause.pretty(cause, { renderErrorCause: true }), output)
191
189
  }
192
190
 
193
191
  if (List.isCons(spans)) {
@@ -204,7 +202,7 @@ export const stringLogger: Logger.Logger<unknown, string> = makeLogger<unknown,
204
202
  }
205
203
  }
206
204
 
207
- if (pipe(annotations, HashMap.size) > 0) {
205
+ if (HashMap.size(annotations) > 0) {
208
206
  output = output + " "
209
207
 
210
208
  let first = true
@@ -246,16 +244,9 @@ export const logfmtLogger = makeLogger<unknown, string>(
246
244
 
247
245
  let output = outputArray.join(" ")
248
246
 
249
- if (Array.isArray(message)) {
250
- for (let i = 0; i < message.length; i++) {
251
- const stringMessage = Inspectable.toStringUnknown(message[i], 0)
252
- if (stringMessage.length > 0) {
253
- output = output + " message="
254
- output = appendQuotedLogfmt(stringMessage, output)
255
- }
256
- }
257
- } else {
258
- const stringMessage = Inspectable.toStringUnknown(message, 0)
247
+ const messageArr = Arr.ensure(message)
248
+ for (let i = 0; i < messageArr.length; i++) {
249
+ const stringMessage = Inspectable.toStringUnknown(messageArr[i], 0)
259
250
  if (stringMessage.length > 0) {
260
251
  output = output + " message="
261
252
  output = appendQuotedLogfmt(stringMessage, output)
@@ -264,7 +255,7 @@ export const logfmtLogger = makeLogger<unknown, string>(
264
255
 
265
256
  if (cause != null && cause._tag !== "Empty") {
266
257
  output = output + " cause="
267
- output = appendQuotedLogfmt(Cause.pretty(cause), output)
258
+ output = appendQuotedLogfmt(Cause.pretty(cause, { renderErrorCause: true }), output)
268
259
  }
269
260
 
270
261
  if (List.isCons(spans)) {
@@ -281,7 +272,7 @@ export const logfmtLogger = makeLogger<unknown, string>(
281
272
  }
282
273
  }
283
274
 
284
- if (pipe(annotations, HashMap.size) > 0) {
275
+ if (HashMap.size(annotations) > 0) {
285
276
  output = output + " "
286
277
 
287
278
  let first = true
@@ -328,11 +319,12 @@ export const structuredLogger = makeLogger<unknown, {
328
319
  }
329
320
  }
330
321
 
322
+ const messageArr = Arr.ensure(message)
331
323
  return {
332
- message: structuredMessage(message),
324
+ message: messageArr.length === 1 ? structuredMessage(messageArr[0]) : messageArr.map(structuredMessage),
333
325
  logLevel: logLevel.label,
334
326
  timestamp: date.toISOString(),
335
- cause: Cause.isEmpty(cause) ? undefined : Cause.pretty(cause),
327
+ cause: Cause.isEmpty(cause) ? undefined : Cause.pretty(cause, { renderErrorCause: true }),
336
328
  annotations: annotationsObj,
337
329
  spans: spansObj,
338
330
  fiberId: _fiberId.threadName(fiberId)
@@ -376,3 +368,117 @@ const renderLogSpanLogfmt = (now: number) => (self: LogSpan.LogSpan): string =>
376
368
  export const isLogger = (u: unknown): u is Logger.Logger<unknown, unknown> => {
377
369
  return typeof u === "object" && u != null && LoggerTypeId in u
378
370
  }
371
+
372
+ const processStdoutIsTTY = typeof process === "object" && "stdout" in process && process.stdout.isTTY === true
373
+ const hasWindow = typeof window === "object"
374
+
375
+ const withColor = (text: string, ...colors: ReadonlyArray<string>) => {
376
+ let out = ""
377
+ for (let i = 0; i < colors.length; i++) {
378
+ out += `\x1b[${colors[i]}m`
379
+ }
380
+ return out + text + "\x1b[0m"
381
+ }
382
+ const withColorNoop = (text: string, ..._colors: ReadonlyArray<string>) => text
383
+ const colors = {
384
+ bold: "1",
385
+ red: "31",
386
+ green: "32",
387
+ yellow: "33",
388
+ blue: "34",
389
+ cyan: "36",
390
+ white: "37",
391
+ gray: "90",
392
+ black: "30",
393
+ bgBrightRed: "101"
394
+ } as const
395
+
396
+ const logLevelColors: Record<LogLevel.LogLevel["_tag"], ReadonlyArray<string>> = {
397
+ None: [],
398
+ All: [],
399
+ Trace: [colors.gray],
400
+ Debug: [colors.blue],
401
+ Info: [colors.green],
402
+ Warning: [colors.yellow],
403
+ Error: [colors.red],
404
+ Fatal: [colors.bgBrightRed, colors.black]
405
+ }
406
+
407
+ const defaultDateFormat = (date: Date): string =>
408
+ `${date.getHours().toString().padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}:${
409
+ date.getSeconds().toString().padStart(2, "0")
410
+ }.${date.getMilliseconds().toString().padStart(3, "0")}`
411
+
412
+ /** @internal */
413
+ export const prettyLogger = (options?: {
414
+ readonly colors?: "auto" | boolean | undefined
415
+ readonly stderr?: boolean | undefined
416
+ readonly formatDate?: ((date: Date) => string) | undefined
417
+ readonly mode?: "browser" | "tty" | "auto" | undefined
418
+ }) => {
419
+ const mode_ = options?.mode ?? "auto"
420
+ const mode = mode_ === "auto" ? (hasWindow ? "browser" : "tty") : mode_
421
+ const isBrowser = mode === "browser"
422
+ const showColors = typeof options?.colors === "boolean" ? options.colors : processStdoutIsTTY || isBrowser
423
+ const color = showColors ? withColor : withColorNoop
424
+ const formatDate = options?.formatDate ?? defaultDateFormat
425
+
426
+ return makeLogger<unknown, void>(
427
+ ({ annotations, cause, context, date, fiberId, logLevel, message: message_, spans }) => {
428
+ const services = FiberRefs.getOrDefault(context, defaultServices.currentServices)
429
+ const console = Context.get(services, consoleTag).unsafe
430
+ const log = options?.stderr === true ? console.error : console.log
431
+
432
+ const message = Arr.ensure(message_)
433
+
434
+ let firstLine = color(`[${formatDate(date)}]`, colors.white)
435
+ + ` ${color(logLevel.label, ...logLevelColors[logLevel._tag])}`
436
+ + ` (${_fiberId.threadName(fiberId)})`
437
+
438
+ if (List.isCons(spans)) {
439
+ const now = date.getTime()
440
+ const render = renderLogSpanLogfmt(now)
441
+ for (const span of spans) {
442
+ firstLine += " " + render(span)
443
+ }
444
+ }
445
+
446
+ firstLine += ":"
447
+ let messageIndex = 0
448
+ if (message.length > 0) {
449
+ const firstMaybeString = structuredMessage(message[0])
450
+ if (typeof firstMaybeString === "string") {
451
+ firstLine += " " + color(firstMaybeString, colors.bold, colors.cyan)
452
+ messageIndex++
453
+ }
454
+ }
455
+
456
+ if (isBrowser) {
457
+ console.groupCollapsed(firstLine)
458
+ } else {
459
+ log(firstLine)
460
+ console.group()
461
+ }
462
+ if (!Cause.isEmpty(cause)) {
463
+ if (isBrowser) {
464
+ console.error(Cause.pretty(cause, { renderErrorCause: true }))
465
+ } else {
466
+ log(Cause.pretty(cause, { renderErrorCause: true }))
467
+ }
468
+ }
469
+
470
+ if (messageIndex < message.length) {
471
+ for (; messageIndex < message.length; messageIndex++) {
472
+ log(message[messageIndex])
473
+ }
474
+ }
475
+
476
+ if (HashMap.size(annotations) > 0) {
477
+ for (const [key, value] of annotations) {
478
+ log(color(`${key}:`, colors.bold, colors.white), value)
479
+ }
480
+ }
481
+ console.groupEnd()
482
+ }
483
+ )
484
+ }
@@ -5,6 +5,7 @@ import type { Effect, Semaphore } from "../Effect.js"
5
5
  import type { Exit } from "../Exit.js"
6
6
  import { dual, identity } from "../Function.js"
7
7
  import * as Iterable from "../Iterable.js"
8
+ import * as Option from "../Option.js"
8
9
  import { pipeArguments } from "../Pipeable.js"
9
10
  import type { Pool, PoolTypeId as PoolTypeId_ } from "../Pool.js"
10
11
  import { hasProperty } from "../Predicate.js"
@@ -112,11 +113,13 @@ interface PoolItem<A, E> {
112
113
  readonly exit: Exit<A, E>
113
114
  finalizer: Effect<void>
114
115
  refCount: number
116
+ disableReclaim: boolean
115
117
  }
116
118
 
117
119
  interface Strategy<A, E> {
118
120
  readonly run: (pool: PoolImpl<A, E>) => Effect<void>
119
121
  readonly onAcquire: (item: PoolItem<A, E>) => Effect<void>
122
+ readonly reclaim: (pool: PoolImpl<A, E>) => Effect<Option.Option<PoolItem<A, E>>>
120
123
  }
121
124
 
122
125
  class PoolImpl<A, E> implements Pool<A, E> {
@@ -151,7 +154,8 @@ class PoolImpl<A, E> implements Pool<A, E> {
151
154
  const item: PoolItem<A, E> = {
152
155
  exit,
153
156
  finalizer: core.catchAllCause(scope.close(exit), reportUnhandledError),
154
- refCount: 0
157
+ refCount: 0,
158
+ disableReclaim: false
155
159
  }
156
160
  this.items.add(item)
157
161
  this.available.add(item)
@@ -189,7 +193,13 @@ class PoolImpl<A, E> implements Pool<A, E> {
189
193
  if (this.activeSize >= this.targetSize) {
190
194
  return core.void
191
195
  }
192
- return core.zipRight(this.allocate, this.resizeLoop)
196
+ return this.strategy.reclaim(this).pipe(
197
+ core.flatMap(Option.match({
198
+ onNone: () => this.allocate,
199
+ onSome: core.succeed
200
+ })),
201
+ core.zipRight(this.resizeLoop)
202
+ )
193
203
  })
194
204
  readonly resizeSemaphore = circular.unsafeMakeSemaphore(1)
195
205
  readonly resize = this.resizeSemaphore.withPermits(1)(this.resizeLoop)
@@ -253,6 +263,7 @@ class PoolImpl<A, E> implements Pool<A, E> {
253
263
  if (this.isShuttingDown) return core.void
254
264
  for (const poolItem of this.items) {
255
265
  if (poolItem.exit._tag === "Success" && poolItem.exit.value === item) {
266
+ poolItem.disableReclaim = true
256
267
  return core.uninterruptible(this.invalidatePoolItem(poolItem))
257
268
  }
258
269
  }
@@ -306,7 +317,8 @@ class PoolImpl<A, E> implements Pool<A, E> {
306
317
 
307
318
  const strategyNoop = <A, E>(): Strategy<A, E> => ({
308
319
  run: (_) => core.void,
309
- onAcquire: (_) => core.void
320
+ onAcquire: (_) => core.void,
321
+ reclaim: (_) => coreEffect.succeedNone
310
322
  })
311
323
 
312
324
  const strategyCreationTTL = <A, E>(ttl: Duration.DurationInput) =>
@@ -337,7 +349,8 @@ const strategyCreationTTL = <A, E>(ttl: Duration.DurationInput) =>
337
349
  core.suspend(() => {
338
350
  creationTimes.set(item, clock.unsafeCurrentTimeMillis())
339
351
  return queue.offer(item)
340
- })
352
+ }),
353
+ reclaim: (_) => coreEffect.succeedNone
341
354
  })
342
355
  })
343
356
  )
@@ -359,7 +372,25 @@ const strategyUsageTTL = <A, E>(ttl: Duration.DurationInput) =>
359
372
  coreEffect.forever
360
373
  )
361
374
  },
362
- onAcquire: (item) => queue.offer(item)
375
+ onAcquire: (item) => queue.offer(item),
376
+ reclaim(pool) {
377
+ return core.suspend((): Effect<Option.Option<PoolItem<A, E>>> => {
378
+ if (pool.invalidated.size === 0) {
379
+ return coreEffect.succeedNone
380
+ }
381
+ const item = Iterable.head(
382
+ Iterable.filter(pool.invalidated, (item) => !item.disableReclaim)
383
+ )
384
+ if (item._tag === "None") {
385
+ return coreEffect.succeedNone
386
+ }
387
+ pool.invalidated.delete(item.value)
388
+ if (item.value.refCount < pool.concurrency) {
389
+ pool.available.add(item.value)
390
+ }
391
+ return core.as(queue.offer(item.value), item)
392
+ })
393
+ }
363
394
  })
364
395
  })
365
396