effect 3.8.4 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (757) hide show
  1. package/dist/cjs/Array.js +24 -3
  2. package/dist/cjs/Array.js.map +1 -1
  3. package/dist/cjs/BigDecimal.js +5 -3
  4. package/dist/cjs/BigDecimal.js.map +1 -1
  5. package/dist/cjs/BigInt.js.map +1 -1
  6. package/dist/cjs/Boolean.js.map +1 -1
  7. package/dist/cjs/Cause.js.map +1 -1
  8. package/dist/cjs/Channel.js.map +1 -1
  9. package/dist/cjs/ChildExecutorDecision.js.map +1 -1
  10. package/dist/cjs/Chunk.js +3 -0
  11. package/dist/cjs/Chunk.js.map +1 -1
  12. package/dist/cjs/Config.js.map +1 -1
  13. package/dist/cjs/ConfigError.js.map +1 -1
  14. package/dist/cjs/ConfigProvider.js.map +1 -1
  15. package/dist/cjs/ConfigProviderPathPatch.js.map +1 -1
  16. package/dist/cjs/Console.js.map +1 -1
  17. package/dist/cjs/Context.js.map +1 -1
  18. package/dist/cjs/Cron.js +3 -0
  19. package/dist/cjs/Cron.js.map +1 -1
  20. package/dist/cjs/Data.js.map +1 -1
  21. package/dist/cjs/DateTime.js +6 -0
  22. package/dist/cjs/DateTime.js.map +1 -1
  23. package/dist/cjs/Deferred.js.map +1 -1
  24. package/dist/cjs/Differ.js.map +1 -1
  25. package/dist/cjs/Duration.js +3 -0
  26. package/dist/cjs/Duration.js.map +1 -1
  27. package/dist/cjs/Effect.js +122 -35
  28. package/dist/cjs/Effect.js.map +1 -1
  29. package/dist/cjs/Either.js.map +1 -1
  30. package/dist/cjs/Equivalence.js.map +1 -1
  31. package/dist/cjs/ExecutionStrategy.js.map +1 -1
  32. package/dist/cjs/Exit.js.map +1 -1
  33. package/dist/cjs/Fiber.js.map +1 -1
  34. package/dist/cjs/FiberHandle.js +3 -0
  35. package/dist/cjs/FiberHandle.js.map +1 -1
  36. package/dist/cjs/FiberId.js.map +1 -1
  37. package/dist/cjs/FiberMap.js +3 -0
  38. package/dist/cjs/FiberMap.js.map +1 -1
  39. package/dist/cjs/FiberRef.js.map +1 -1
  40. package/dist/cjs/FiberRefs.js.map +1 -1
  41. package/dist/cjs/FiberRefsPatch.js.map +1 -1
  42. package/dist/cjs/FiberSet.js +3 -0
  43. package/dist/cjs/FiberSet.js.map +1 -1
  44. package/dist/cjs/Function.js.map +1 -1
  45. package/dist/cjs/GroupBy.js.map +1 -1
  46. package/dist/cjs/Hash.js.map +1 -1
  47. package/dist/cjs/HashMap.js.map +1 -1
  48. package/dist/cjs/HashSet.js.map +1 -1
  49. package/dist/cjs/Inspectable.js +15 -1
  50. package/dist/cjs/Inspectable.js.map +1 -1
  51. package/dist/cjs/Iterable.js.map +1 -1
  52. package/dist/cjs/KeyedPool.js.map +1 -1
  53. package/dist/cjs/Layer.js.map +1 -1
  54. package/dist/cjs/List.js +6 -0
  55. package/dist/cjs/List.js.map +1 -1
  56. package/dist/cjs/LogLevel.js.map +1 -1
  57. package/dist/cjs/Logger.js.map +1 -1
  58. package/dist/cjs/Mailbox.js.map +1 -1
  59. package/dist/cjs/ManagedRuntime.js +16 -1
  60. package/dist/cjs/ManagedRuntime.js.map +1 -1
  61. package/dist/cjs/MergeDecision.js.map +1 -1
  62. package/dist/cjs/MergeState.js.map +1 -1
  63. package/dist/cjs/MergeStrategy.js.map +1 -1
  64. package/dist/cjs/Metric.js.map +1 -1
  65. package/dist/cjs/MetricHook.js.map +1 -1
  66. package/dist/cjs/MetricKey.js.map +1 -1
  67. package/dist/cjs/MetricPolling.js.map +1 -1
  68. package/dist/cjs/MetricState.js.map +1 -1
  69. package/dist/cjs/Micro.js +6 -0
  70. package/dist/cjs/Micro.js.map +1 -1
  71. package/dist/cjs/MutableHashMap.js +3 -0
  72. package/dist/cjs/MutableHashMap.js.map +1 -1
  73. package/dist/cjs/MutableHashSet.js +3 -0
  74. package/dist/cjs/MutableHashSet.js.map +1 -1
  75. package/dist/cjs/MutableList.js +3 -0
  76. package/dist/cjs/MutableList.js.map +1 -1
  77. package/dist/cjs/MutableQueue.js +3 -0
  78. package/dist/cjs/MutableQueue.js.map +1 -1
  79. package/dist/cjs/MutableRef.js +3 -0
  80. package/dist/cjs/MutableRef.js.map +1 -1
  81. package/dist/cjs/Number.js.map +1 -1
  82. package/dist/cjs/Option.js.map +1 -1
  83. package/dist/cjs/Order.js.map +1 -1
  84. package/dist/cjs/Ordering.js.map +1 -1
  85. package/dist/cjs/Pipeable.js.map +1 -1
  86. package/dist/cjs/Pool.js.map +1 -1
  87. package/dist/cjs/Predicate.js +18 -2
  88. package/dist/cjs/Predicate.js.map +1 -1
  89. package/dist/cjs/PubSub.js.map +1 -1
  90. package/dist/cjs/Queue.js.map +1 -1
  91. package/dist/cjs/RcMap.js.map +1 -1
  92. package/dist/cjs/Readable.js.map +1 -1
  93. package/dist/cjs/Record.js.map +1 -1
  94. package/dist/cjs/RedBlackTree.js.map +1 -1
  95. package/dist/cjs/Ref.js.map +1 -1
  96. package/dist/cjs/RegExp.js +20 -1
  97. package/dist/cjs/RegExp.js.map +1 -1
  98. package/dist/cjs/Request.js.map +1 -1
  99. package/dist/cjs/RequestResolver.js.map +1 -1
  100. package/dist/cjs/Resource.js.map +1 -1
  101. package/dist/cjs/Runtime.js.map +1 -1
  102. package/dist/cjs/RuntimeFlags.js.map +1 -1
  103. package/dist/cjs/RuntimeFlagsPatch.js.map +1 -1
  104. package/dist/cjs/STM.js.map +1 -1
  105. package/dist/cjs/Schedule.js.map +1 -1
  106. package/dist/cjs/ScheduleInterval.js.map +1 -1
  107. package/dist/cjs/ScheduleIntervals.js.map +1 -1
  108. package/dist/cjs/Scheduler.js.map +1 -1
  109. package/dist/cjs/Scope.js.map +1 -1
  110. package/dist/cjs/ScopedRef.js.map +1 -1
  111. package/dist/cjs/Sink.js.map +1 -1
  112. package/dist/cjs/SortedMap.js +3 -0
  113. package/dist/cjs/SortedMap.js.map +1 -1
  114. package/dist/cjs/SortedSet.js +3 -0
  115. package/dist/cjs/SortedSet.js.map +1 -1
  116. package/dist/cjs/Stream.js +17 -3
  117. package/dist/cjs/Stream.js.map +1 -1
  118. package/dist/cjs/StreamHaltStrategy.js.map +1 -1
  119. package/dist/cjs/String.js.map +1 -1
  120. package/dist/cjs/Struct.js.map +1 -1
  121. package/dist/cjs/Subscribable.js.map +1 -1
  122. package/dist/cjs/SubscriptionRef.js.map +1 -1
  123. package/dist/cjs/SynchronizedRef.js.map +1 -1
  124. package/dist/cjs/TArray.js.map +1 -1
  125. package/dist/cjs/TDeferred.js.map +1 -1
  126. package/dist/cjs/TMap.js.map +1 -1
  127. package/dist/cjs/TPriorityQueue.js.map +1 -1
  128. package/dist/cjs/TPubSub.js.map +1 -1
  129. package/dist/cjs/TQueue.js.map +1 -1
  130. package/dist/cjs/TReentrantLock.js.map +1 -1
  131. package/dist/cjs/TRef.js.map +1 -1
  132. package/dist/cjs/TSemaphore.js.map +1 -1
  133. package/dist/cjs/TSet.js.map +1 -1
  134. package/dist/cjs/Take.js.map +1 -1
  135. package/dist/cjs/TestAnnotationMap.js.map +1 -1
  136. package/dist/cjs/TestClock.js.map +1 -1
  137. package/dist/cjs/TestServices.js.map +1 -1
  138. package/dist/cjs/Trie.js.map +1 -1
  139. package/dist/cjs/Tuple.js +21 -2
  140. package/dist/cjs/Tuple.js.map +1 -1
  141. package/dist/cjs/Unify.js.map +1 -1
  142. package/dist/cjs/UpstreamPullRequest.js.map +1 -1
  143. package/dist/cjs/UpstreamPullStrategy.js.map +1 -1
  144. package/dist/cjs/Utils.js +1 -14
  145. package/dist/cjs/Utils.js.map +1 -1
  146. package/dist/cjs/internal/cause.js +3 -0
  147. package/dist/cjs/internal/cause.js.map +1 -1
  148. package/dist/cjs/internal/context.js +6 -1
  149. package/dist/cjs/internal/context.js.map +1 -1
  150. package/dist/cjs/internal/core-effect.js.map +1 -1
  151. package/dist/cjs/internal/core.js +16 -3
  152. package/dist/cjs/internal/core.js.map +1 -1
  153. package/dist/cjs/internal/effect/circular.js +5 -1
  154. package/dist/cjs/internal/effect/circular.js.map +1 -1
  155. package/dist/cjs/internal/fiberId.js +9 -0
  156. package/dist/cjs/internal/fiberId.js.map +1 -1
  157. package/dist/cjs/internal/hashMap.js +3 -0
  158. package/dist/cjs/internal/hashMap.js.map +1 -1
  159. package/dist/cjs/internal/hashSet.js +3 -0
  160. package/dist/cjs/internal/hashSet.js.map +1 -1
  161. package/dist/cjs/internal/layer.js +33 -19
  162. package/dist/cjs/internal/layer.js.map +1 -1
  163. package/dist/cjs/internal/mailbox.js +3 -0
  164. package/dist/cjs/internal/mailbox.js.map +1 -1
  165. package/dist/cjs/internal/managedRuntime/circular.js +10 -0
  166. package/dist/cjs/internal/managedRuntime/circular.js.map +1 -0
  167. package/dist/cjs/internal/managedRuntime.js +23 -9
  168. package/dist/cjs/internal/managedRuntime.js.map +1 -1
  169. package/dist/cjs/internal/option.js +3 -0
  170. package/dist/cjs/internal/option.js.map +1 -1
  171. package/dist/cjs/internal/pool.js +6 -1
  172. package/dist/cjs/internal/pool.js.map +1 -1
  173. package/dist/cjs/internal/redBlackTree.js +3 -0
  174. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  175. package/dist/cjs/internal/resource.js +15 -5
  176. package/dist/cjs/internal/resource.js.map +1 -1
  177. package/dist/cjs/internal/runtime.js +4 -1
  178. package/dist/cjs/internal/runtime.js.map +1 -1
  179. package/dist/cjs/internal/scopedRef.js +11 -8
  180. package/dist/cjs/internal/scopedRef.js.map +1 -1
  181. package/dist/cjs/internal/stm/core.js +1 -2
  182. package/dist/cjs/internal/stm/core.js.map +1 -1
  183. package/dist/cjs/internal/stream.js +12 -3
  184. package/dist/cjs/internal/stream.js.map +1 -1
  185. package/dist/cjs/internal/trie.js +3 -0
  186. package/dist/cjs/internal/trie.js.map +1 -1
  187. package/dist/cjs/internal/version.js +1 -1
  188. package/dist/dts/Array.d.ts +2735 -2
  189. package/dist/dts/Array.d.ts.map +1 -1
  190. package/dist/dts/BigDecimal.d.ts +558 -1
  191. package/dist/dts/BigDecimal.d.ts.map +1 -1
  192. package/dist/dts/BigInt.d.ts +490 -0
  193. package/dist/dts/BigInt.d.ts.map +1 -1
  194. package/dist/dts/Boolean.d.ts +228 -0
  195. package/dist/dts/Boolean.d.ts.map +1 -1
  196. package/dist/dts/Cause.d.ts +172 -0
  197. package/dist/dts/Cause.d.ts.map +1 -1
  198. package/dist/dts/Channel.d.ts +750 -0
  199. package/dist/dts/Channel.d.ts.map +1 -1
  200. package/dist/dts/ChildExecutorDecision.d.ts +12 -0
  201. package/dist/dts/ChildExecutorDecision.d.ts.map +1 -1
  202. package/dist/dts/Chunk.d.ts +791 -0
  203. package/dist/dts/Chunk.d.ts.map +1 -1
  204. package/dist/dts/Config.d.ts +174 -0
  205. package/dist/dts/Config.d.ts.map +1 -1
  206. package/dist/dts/ConfigError.d.ts +16 -0
  207. package/dist/dts/ConfigError.d.ts.map +1 -1
  208. package/dist/dts/ConfigProvider.d.ts +84 -0
  209. package/dist/dts/ConfigProvider.d.ts.map +1 -1
  210. package/dist/dts/ConfigProviderPathPatch.d.ts +32 -0
  211. package/dist/dts/ConfigProviderPathPatch.d.ts.map +1 -1
  212. package/dist/dts/Console.d.ts +24 -0
  213. package/dist/dts/Console.d.ts.map +1 -1
  214. package/dist/dts/Context.d.ts +234 -3
  215. package/dist/dts/Context.d.ts.map +1 -1
  216. package/dist/dts/Cron.d.ts +12 -0
  217. package/dist/dts/Cron.d.ts.map +1 -1
  218. package/dist/dts/Data.d.ts +165 -0
  219. package/dist/dts/Data.d.ts.map +1 -1
  220. package/dist/dts/DateTime.d.ts +878 -0
  221. package/dist/dts/DateTime.d.ts.map +1 -1
  222. package/dist/dts/Deferred.d.ts +171 -1
  223. package/dist/dts/Deferred.d.ts.map +1 -1
  224. package/dist/dts/Differ.d.ts +78 -0
  225. package/dist/dts/Differ.d.ts.map +1 -1
  226. package/dist/dts/Duration.d.ts +130 -0
  227. package/dist/dts/Duration.d.ts.map +1 -1
  228. package/dist/dts/Effect.d.ts +4350 -13
  229. package/dist/dts/Effect.d.ts.map +1 -1
  230. package/dist/dts/Either.d.ts +620 -0
  231. package/dist/dts/Either.d.ts.map +1 -1
  232. package/dist/dts/Equivalence.d.ts +24 -0
  233. package/dist/dts/Equivalence.d.ts.map +1 -1
  234. package/dist/dts/ExecutionStrategy.d.ts +14 -0
  235. package/dist/dts/ExecutionStrategy.d.ts.map +1 -1
  236. package/dist/dts/Exit.d.ts +252 -0
  237. package/dist/dts/Exit.d.ts.map +1 -1
  238. package/dist/dts/Fiber.d.ts +182 -0
  239. package/dist/dts/Fiber.d.ts.map +1 -1
  240. package/dist/dts/FiberHandle.d.ts +42 -0
  241. package/dist/dts/FiberHandle.d.ts.map +1 -1
  242. package/dist/dts/FiberId.d.ts +24 -0
  243. package/dist/dts/FiberId.d.ts.map +1 -1
  244. package/dist/dts/FiberMap.d.ts +102 -0
  245. package/dist/dts/FiberMap.d.ts.map +1 -1
  246. package/dist/dts/FiberRef.d.ts +80 -0
  247. package/dist/dts/FiberRef.d.ts.map +1 -1
  248. package/dist/dts/FiberRefs.d.ts +84 -0
  249. package/dist/dts/FiberRefs.d.ts.map +1 -1
  250. package/dist/dts/FiberRefsPatch.d.ts +30 -0
  251. package/dist/dts/FiberRefsPatch.d.ts.map +1 -1
  252. package/dist/dts/FiberSet.d.ts +38 -0
  253. package/dist/dts/FiberSet.d.ts.map +1 -1
  254. package/dist/dts/Function.d.ts +144 -28
  255. package/dist/dts/Function.d.ts.map +1 -1
  256. package/dist/dts/GroupBy.d.ts +38 -0
  257. package/dist/dts/GroupBy.d.ts.map +1 -1
  258. package/dist/dts/Hash.d.ts +8 -0
  259. package/dist/dts/Hash.d.ts.map +1 -1
  260. package/dist/dts/HashMap.d.ts +315 -0
  261. package/dist/dts/HashMap.d.ts.map +1 -1
  262. package/dist/dts/HashSet.d.ts +284 -0
  263. package/dist/dts/HashSet.d.ts.map +1 -1
  264. package/dist/dts/Inspectable.d.ts +15 -0
  265. package/dist/dts/Inspectable.d.ts.map +1 -1
  266. package/dist/dts/Iterable.d.ts +454 -0
  267. package/dist/dts/Iterable.d.ts.map +1 -1
  268. package/dist/dts/KeyedPool.d.ts +34 -0
  269. package/dist/dts/KeyedPool.d.ts.map +1 -1
  270. package/dist/dts/Layer.d.ts +460 -5
  271. package/dist/dts/Layer.d.ts.map +1 -1
  272. package/dist/dts/List.d.ts +430 -0
  273. package/dist/dts/List.d.ts.map +1 -1
  274. package/dist/dts/LogLevel.d.ts +46 -0
  275. package/dist/dts/LogLevel.d.ts.map +1 -1
  276. package/dist/dts/Logger.d.ts +194 -0
  277. package/dist/dts/Logger.d.ts.map +1 -1
  278. package/dist/dts/Mailbox.d.ts +16 -0
  279. package/dist/dts/Mailbox.d.ts.map +1 -1
  280. package/dist/dts/ManagedRuntime.d.ts +41 -2
  281. package/dist/dts/ManagedRuntime.d.ts.map +1 -1
  282. package/dist/dts/MergeDecision.d.ts +8 -0
  283. package/dist/dts/MergeDecision.d.ts.map +1 -1
  284. package/dist/dts/MergeState.d.ts +8 -0
  285. package/dist/dts/MergeState.d.ts.map +1 -1
  286. package/dist/dts/MergeStrategy.d.ts +12 -0
  287. package/dist/dts/MergeStrategy.d.ts.map +1 -1
  288. package/dist/dts/Metric.d.ts +410 -0
  289. package/dist/dts/Metric.d.ts.map +1 -1
  290. package/dist/dts/MetricHook.d.ts +24 -0
  291. package/dist/dts/MetricHook.d.ts.map +1 -1
  292. package/dist/dts/MetricKey.d.ts +48 -0
  293. package/dist/dts/MetricKey.d.ts.map +1 -1
  294. package/dist/dts/MetricPolling.d.ts +40 -0
  295. package/dist/dts/MetricPolling.d.ts.map +1 -1
  296. package/dist/dts/MetricState.d.ts +16 -0
  297. package/dist/dts/MetricState.d.ts.map +1 -1
  298. package/dist/dts/Micro.d.ts +1110 -0
  299. package/dist/dts/Micro.d.ts.map +1 -1
  300. package/dist/dts/MutableHashMap.d.ts +50 -0
  301. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  302. package/dist/dts/MutableHashSet.d.ts +24 -0
  303. package/dist/dts/MutableHashSet.d.ts.map +1 -1
  304. package/dist/dts/MutableList.d.ts +36 -0
  305. package/dist/dts/MutableList.d.ts.map +1 -1
  306. package/dist/dts/MutableQueue.d.ts +62 -0
  307. package/dist/dts/MutableQueue.d.ts.map +1 -1
  308. package/dist/dts/MutableRef.d.ts +56 -0
  309. package/dist/dts/MutableRef.d.ts.map +1 -1
  310. package/dist/dts/Number.d.ts +474 -0
  311. package/dist/dts/Number.d.ts.map +1 -1
  312. package/dist/dts/Option.d.ts +1019 -0
  313. package/dist/dts/Option.d.ts.map +1 -1
  314. package/dist/dts/Order.d.ts +24 -0
  315. package/dist/dts/Order.d.ts.map +1 -1
  316. package/dist/dts/Ordering.d.ts +66 -0
  317. package/dist/dts/Ordering.d.ts.map +1 -1
  318. package/dist/dts/Pipeable.d.ts +21 -21
  319. package/dist/dts/Pipeable.d.ts.map +1 -1
  320. package/dist/dts/Pool.d.ts +37 -1
  321. package/dist/dts/Pool.d.ts.map +1 -1
  322. package/dist/dts/Predicate.d.ts +513 -0
  323. package/dist/dts/Predicate.d.ts.map +1 -1
  324. package/dist/dts/PubSub.d.ts +28 -0
  325. package/dist/dts/PubSub.d.ts.map +1 -1
  326. package/dist/dts/Queue.d.ts +106 -2
  327. package/dist/dts/Queue.d.ts.map +1 -1
  328. package/dist/dts/RcMap.d.ts +70 -0
  329. package/dist/dts/RcMap.d.ts.map +1 -1
  330. package/dist/dts/Readable.d.ts +16 -0
  331. package/dist/dts/Readable.d.ts.map +1 -1
  332. package/dist/dts/Record.d.ts +800 -0
  333. package/dist/dts/Record.d.ts.map +1 -1
  334. package/dist/dts/RedBlackTree.d.ts +300 -0
  335. package/dist/dts/RedBlackTree.d.ts.map +1 -1
  336. package/dist/dts/Ref.d.ts +88 -0
  337. package/dist/dts/Ref.d.ts.map +1 -1
  338. package/dist/dts/RegExp.d.ts +12 -2
  339. package/dist/dts/RegExp.d.ts.map +1 -1
  340. package/dist/dts/Request.d.ts +76 -0
  341. package/dist/dts/Request.d.ts.map +1 -1
  342. package/dist/dts/RequestResolver.d.ts +144 -0
  343. package/dist/dts/RequestResolver.d.ts.map +1 -1
  344. package/dist/dts/Resource.d.ts +21 -1
  345. package/dist/dts/Resource.d.ts.map +1 -1
  346. package/dist/dts/Runtime.d.ts +126 -0
  347. package/dist/dts/Runtime.d.ts.map +1 -1
  348. package/dist/dts/RuntimeFlags.d.ts +100 -0
  349. package/dist/dts/RuntimeFlags.d.ts.map +1 -1
  350. package/dist/dts/RuntimeFlagsPatch.d.ts +112 -0
  351. package/dist/dts/RuntimeFlagsPatch.d.ts.map +1 -1
  352. package/dist/dts/STM.d.ts +1090 -0
  353. package/dist/dts/STM.d.ts.map +1 -1
  354. package/dist/dts/Schedule.d.ts +704 -0
  355. package/dist/dts/Schedule.d.ts.map +1 -1
  356. package/dist/dts/ScheduleInterval.d.ts +68 -0
  357. package/dist/dts/ScheduleInterval.d.ts.map +1 -1
  358. package/dist/dts/ScheduleIntervals.d.ts +50 -0
  359. package/dist/dts/ScheduleIntervals.d.ts.map +1 -1
  360. package/dist/dts/Scope.d.ts +36 -0
  361. package/dist/dts/Scope.d.ts.map +1 -1
  362. package/dist/dts/ScopedRef.d.ts +43 -1
  363. package/dist/dts/ScopedRef.d.ts.map +1 -1
  364. package/dist/dts/Sink.d.ts +464 -0
  365. package/dist/dts/Sink.d.ts.map +1 -1
  366. package/dist/dts/SortedMap.d.ts +76 -0
  367. package/dist/dts/SortedMap.d.ts.map +1 -1
  368. package/dist/dts/SortedSet.d.ts +142 -0
  369. package/dist/dts/SortedSet.d.ts.map +1 -1
  370. package/dist/dts/Stream.d.ts +4998 -1
  371. package/dist/dts/Stream.d.ts.map +1 -1
  372. package/dist/dts/StreamHaltStrategy.d.ts +12 -0
  373. package/dist/dts/StreamHaltStrategy.d.ts.map +1 -1
  374. package/dist/dts/String.d.ts +200 -0
  375. package/dist/dts/String.d.ts.map +1 -1
  376. package/dist/dts/Struct.d.ts +84 -0
  377. package/dist/dts/Struct.d.ts.map +1 -1
  378. package/dist/dts/Subscribable.d.ts +16 -0
  379. package/dist/dts/Subscribable.d.ts.map +1 -1
  380. package/dist/dts/SubscriptionRef.d.ts +152 -0
  381. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  382. package/dist/dts/SynchronizedRef.d.ts +152 -0
  383. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  384. package/dist/dts/TArray.d.ts +426 -0
  385. package/dist/dts/TArray.d.ts.map +1 -1
  386. package/dist/dts/TDeferred.d.ts +24 -0
  387. package/dist/dts/TDeferred.d.ts.map +1 -1
  388. package/dist/dts/TMap.d.ts +366 -0
  389. package/dist/dts/TMap.d.ts.map +1 -1
  390. package/dist/dts/TPriorityQueue.d.ts +60 -0
  391. package/dist/dts/TPriorityQueue.d.ts.map +1 -1
  392. package/dist/dts/TPubSub.d.ts +28 -0
  393. package/dist/dts/TPubSub.d.ts.map +1 -1
  394. package/dist/dts/TQueue.d.ts +108 -0
  395. package/dist/dts/TQueue.d.ts.map +1 -1
  396. package/dist/dts/TReentrantLock.d.ts +36 -0
  397. package/dist/dts/TReentrantLock.d.ts.map +1 -1
  398. package/dist/dts/TRef.d.ts +88 -0
  399. package/dist/dts/TRef.d.ts.map +1 -1
  400. package/dist/dts/TSemaphore.d.ts +40 -0
  401. package/dist/dts/TSemaphore.d.ts.map +1 -1
  402. package/dist/dts/TSet.d.ts +254 -0
  403. package/dist/dts/TSet.d.ts.map +1 -1
  404. package/dist/dts/Take.d.ts +56 -0
  405. package/dist/dts/Take.d.ts.map +1 -1
  406. package/dist/dts/TestAnnotationMap.d.ts.map +1 -1
  407. package/dist/dts/TestClock.d.ts.map +1 -1
  408. package/dist/dts/TestServices.d.ts.map +1 -1
  409. package/dist/dts/Trie.d.ts +906 -0
  410. package/dist/dts/Trie.d.ts.map +1 -1
  411. package/dist/dts/Tuple.d.ts +203 -0
  412. package/dist/dts/Tuple.d.ts.map +1 -1
  413. package/dist/dts/Types.d.ts +39 -0
  414. package/dist/dts/Types.d.ts.map +1 -1
  415. package/dist/dts/Unify.d.ts +26 -13
  416. package/dist/dts/Unify.d.ts.map +1 -1
  417. package/dist/dts/UpstreamPullRequest.d.ts +12 -0
  418. package/dist/dts/UpstreamPullRequest.d.ts.map +1 -1
  419. package/dist/dts/UpstreamPullStrategy.d.ts +12 -0
  420. package/dist/dts/UpstreamPullStrategy.d.ts.map +1 -1
  421. package/dist/dts/Utils.d.ts.map +1 -1
  422. package/dist/dts/internal/core.d.ts.map +1 -1
  423. package/dist/dts/internal/hashMap.d.ts.map +1 -1
  424. package/dist/dts/internal/layer.d.ts.map +1 -1
  425. package/dist/dts/internal/managedRuntime/circular.d.ts +2 -0
  426. package/dist/dts/internal/managedRuntime/circular.d.ts.map +1 -0
  427. package/dist/dts/internal/stream.d.ts.map +1 -1
  428. package/dist/esm/Array.js +21 -0
  429. package/dist/esm/Array.js.map +1 -1
  430. package/dist/esm/BigDecimal.js +6 -3
  431. package/dist/esm/BigDecimal.js.map +1 -1
  432. package/dist/esm/BigInt.js.map +1 -1
  433. package/dist/esm/Boolean.js.map +1 -1
  434. package/dist/esm/Cause.js.map +1 -1
  435. package/dist/esm/Channel.js.map +1 -1
  436. package/dist/esm/ChildExecutorDecision.js.map +1 -1
  437. package/dist/esm/Chunk.js +4 -1
  438. package/dist/esm/Chunk.js.map +1 -1
  439. package/dist/esm/Config.js.map +1 -1
  440. package/dist/esm/ConfigError.js.map +1 -1
  441. package/dist/esm/ConfigProvider.js.map +1 -1
  442. package/dist/esm/ConfigProviderPathPatch.js.map +1 -1
  443. package/dist/esm/Console.js.map +1 -1
  444. package/dist/esm/Context.js.map +1 -1
  445. package/dist/esm/Cron.js +4 -1
  446. package/dist/esm/Cron.js.map +1 -1
  447. package/dist/esm/Data.js.map +1 -1
  448. package/dist/esm/DateTime.js +6 -0
  449. package/dist/esm/DateTime.js.map +1 -1
  450. package/dist/esm/Deferred.js.map +1 -1
  451. package/dist/esm/Differ.js.map +1 -1
  452. package/dist/esm/Duration.js +4 -1
  453. package/dist/esm/Duration.js.map +1 -1
  454. package/dist/esm/Effect.js +116 -30
  455. package/dist/esm/Effect.js.map +1 -1
  456. package/dist/esm/Either.js.map +1 -1
  457. package/dist/esm/Equivalence.js.map +1 -1
  458. package/dist/esm/ExecutionStrategy.js.map +1 -1
  459. package/dist/esm/Exit.js.map +1 -1
  460. package/dist/esm/Fiber.js.map +1 -1
  461. package/dist/esm/FiberHandle.js +3 -0
  462. package/dist/esm/FiberHandle.js.map +1 -1
  463. package/dist/esm/FiberId.js.map +1 -1
  464. package/dist/esm/FiberMap.js +3 -0
  465. package/dist/esm/FiberMap.js.map +1 -1
  466. package/dist/esm/FiberRef.js.map +1 -1
  467. package/dist/esm/FiberRefs.js.map +1 -1
  468. package/dist/esm/FiberRefsPatch.js.map +1 -1
  469. package/dist/esm/FiberSet.js +3 -0
  470. package/dist/esm/FiberSet.js.map +1 -1
  471. package/dist/esm/Function.js.map +1 -1
  472. package/dist/esm/GroupBy.js.map +1 -1
  473. package/dist/esm/Hash.js.map +1 -1
  474. package/dist/esm/HashMap.js.map +1 -1
  475. package/dist/esm/HashSet.js.map +1 -1
  476. package/dist/esm/Inspectable.js +14 -0
  477. package/dist/esm/Inspectable.js.map +1 -1
  478. package/dist/esm/Iterable.js.map +1 -1
  479. package/dist/esm/KeyedPool.js.map +1 -1
  480. package/dist/esm/Layer.js.map +1 -1
  481. package/dist/esm/List.js +7 -1
  482. package/dist/esm/List.js.map +1 -1
  483. package/dist/esm/LogLevel.js.map +1 -1
  484. package/dist/esm/Logger.js.map +1 -1
  485. package/dist/esm/Mailbox.js.map +1 -1
  486. package/dist/esm/ManagedRuntime.js +15 -0
  487. package/dist/esm/ManagedRuntime.js.map +1 -1
  488. package/dist/esm/MergeDecision.js.map +1 -1
  489. package/dist/esm/MergeState.js.map +1 -1
  490. package/dist/esm/MergeStrategy.js.map +1 -1
  491. package/dist/esm/Metric.js.map +1 -1
  492. package/dist/esm/MetricHook.js.map +1 -1
  493. package/dist/esm/MetricKey.js.map +1 -1
  494. package/dist/esm/MetricPolling.js.map +1 -1
  495. package/dist/esm/MetricState.js.map +1 -1
  496. package/dist/esm/Micro.js +7 -1
  497. package/dist/esm/Micro.js.map +1 -1
  498. package/dist/esm/MutableHashMap.js +4 -1
  499. package/dist/esm/MutableHashMap.js.map +1 -1
  500. package/dist/esm/MutableHashSet.js +4 -1
  501. package/dist/esm/MutableHashSet.js.map +1 -1
  502. package/dist/esm/MutableList.js +4 -1
  503. package/dist/esm/MutableList.js.map +1 -1
  504. package/dist/esm/MutableQueue.js +4 -1
  505. package/dist/esm/MutableQueue.js.map +1 -1
  506. package/dist/esm/MutableRef.js +4 -1
  507. package/dist/esm/MutableRef.js.map +1 -1
  508. package/dist/esm/Number.js.map +1 -1
  509. package/dist/esm/Option.js.map +1 -1
  510. package/dist/esm/Order.js.map +1 -1
  511. package/dist/esm/Ordering.js.map +1 -1
  512. package/dist/esm/Pipeable.js.map +1 -1
  513. package/dist/esm/Pool.js.map +1 -1
  514. package/dist/esm/Predicate.js +15 -0
  515. package/dist/esm/Predicate.js.map +1 -1
  516. package/dist/esm/PubSub.js.map +1 -1
  517. package/dist/esm/Queue.js.map +1 -1
  518. package/dist/esm/RcMap.js.map +1 -1
  519. package/dist/esm/Readable.js.map +1 -1
  520. package/dist/esm/Record.js.map +1 -1
  521. package/dist/esm/RedBlackTree.js.map +1 -1
  522. package/dist/esm/Ref.js.map +1 -1
  523. package/dist/esm/RegExp.js +16 -0
  524. package/dist/esm/RegExp.js.map +1 -1
  525. package/dist/esm/Request.js.map +1 -1
  526. package/dist/esm/RequestResolver.js.map +1 -1
  527. package/dist/esm/Resource.js.map +1 -1
  528. package/dist/esm/Runtime.js.map +1 -1
  529. package/dist/esm/RuntimeFlags.js.map +1 -1
  530. package/dist/esm/RuntimeFlagsPatch.js.map +1 -1
  531. package/dist/esm/STM.js.map +1 -1
  532. package/dist/esm/Schedule.js.map +1 -1
  533. package/dist/esm/ScheduleInterval.js.map +1 -1
  534. package/dist/esm/ScheduleIntervals.js.map +1 -1
  535. package/dist/esm/Scheduler.js.map +1 -1
  536. package/dist/esm/Scope.js.map +1 -1
  537. package/dist/esm/ScopedRef.js.map +1 -1
  538. package/dist/esm/Sink.js.map +1 -1
  539. package/dist/esm/SortedMap.js +4 -1
  540. package/dist/esm/SortedMap.js.map +1 -1
  541. package/dist/esm/SortedSet.js +4 -1
  542. package/dist/esm/SortedSet.js.map +1 -1
  543. package/dist/esm/Stream.js +14 -0
  544. package/dist/esm/Stream.js.map +1 -1
  545. package/dist/esm/StreamHaltStrategy.js.map +1 -1
  546. package/dist/esm/String.js.map +1 -1
  547. package/dist/esm/Struct.js.map +1 -1
  548. package/dist/esm/Subscribable.js.map +1 -1
  549. package/dist/esm/SubscriptionRef.js.map +1 -1
  550. package/dist/esm/SynchronizedRef.js.map +1 -1
  551. package/dist/esm/TArray.js.map +1 -1
  552. package/dist/esm/TDeferred.js.map +1 -1
  553. package/dist/esm/TMap.js.map +1 -1
  554. package/dist/esm/TPriorityQueue.js.map +1 -1
  555. package/dist/esm/TPubSub.js.map +1 -1
  556. package/dist/esm/TQueue.js.map +1 -1
  557. package/dist/esm/TReentrantLock.js.map +1 -1
  558. package/dist/esm/TRef.js.map +1 -1
  559. package/dist/esm/TSemaphore.js.map +1 -1
  560. package/dist/esm/TSet.js.map +1 -1
  561. package/dist/esm/Take.js.map +1 -1
  562. package/dist/esm/TestAnnotationMap.js.map +1 -1
  563. package/dist/esm/TestClock.js.map +1 -1
  564. package/dist/esm/TestServices.js.map +1 -1
  565. package/dist/esm/Trie.js.map +1 -1
  566. package/dist/esm/Tuple.js +19 -0
  567. package/dist/esm/Tuple.js.map +1 -1
  568. package/dist/esm/Unify.js.map +1 -1
  569. package/dist/esm/UpstreamPullRequest.js.map +1 -1
  570. package/dist/esm/UpstreamPullStrategy.js.map +1 -1
  571. package/dist/esm/Utils.js +1 -14
  572. package/dist/esm/Utils.js.map +1 -1
  573. package/dist/esm/internal/cause.js +4 -1
  574. package/dist/esm/internal/cause.js.map +1 -1
  575. package/dist/esm/internal/context.js +7 -2
  576. package/dist/esm/internal/context.js.map +1 -1
  577. package/dist/esm/internal/core-effect.js.map +1 -1
  578. package/dist/esm/internal/core.js +14 -2
  579. package/dist/esm/internal/core.js.map +1 -1
  580. package/dist/esm/internal/effect/circular.js +5 -1
  581. package/dist/esm/internal/effect/circular.js.map +1 -1
  582. package/dist/esm/internal/fiberId.js +10 -1
  583. package/dist/esm/internal/fiberId.js.map +1 -1
  584. package/dist/esm/internal/hashMap.js +4 -1
  585. package/dist/esm/internal/hashMap.js.map +1 -1
  586. package/dist/esm/internal/hashSet.js +4 -1
  587. package/dist/esm/internal/hashSet.js.map +1 -1
  588. package/dist/esm/internal/layer.js +32 -18
  589. package/dist/esm/internal/layer.js.map +1 -1
  590. package/dist/esm/internal/mailbox.js +3 -0
  591. package/dist/esm/internal/mailbox.js.map +1 -1
  592. package/dist/esm/internal/managedRuntime/circular.js +4 -0
  593. package/dist/esm/internal/managedRuntime/circular.js.map +1 -0
  594. package/dist/esm/internal/managedRuntime.js +21 -8
  595. package/dist/esm/internal/managedRuntime.js.map +1 -1
  596. package/dist/esm/internal/option.js +4 -1
  597. package/dist/esm/internal/option.js.map +1 -1
  598. package/dist/esm/internal/pool.js +6 -1
  599. package/dist/esm/internal/pool.js.map +1 -1
  600. package/dist/esm/internal/redBlackTree.js +4 -1
  601. package/dist/esm/internal/redBlackTree.js.map +1 -1
  602. package/dist/esm/internal/resource.js +15 -5
  603. package/dist/esm/internal/resource.js.map +1 -1
  604. package/dist/esm/internal/runtime.js +4 -1
  605. package/dist/esm/internal/runtime.js.map +1 -1
  606. package/dist/esm/internal/scopedRef.js +11 -8
  607. package/dist/esm/internal/scopedRef.js.map +1 -1
  608. package/dist/esm/internal/stm/core.js +1 -2
  609. package/dist/esm/internal/stm/core.js.map +1 -1
  610. package/dist/esm/internal/stream.js +9 -0
  611. package/dist/esm/internal/stream.js.map +1 -1
  612. package/dist/esm/internal/trie.js +4 -1
  613. package/dist/esm/internal/trie.js.map +1 -1
  614. package/dist/esm/internal/version.js +1 -1
  615. package/package.json +1 -1
  616. package/src/Array.ts +2791 -40
  617. package/src/BigDecimal.ts +589 -19
  618. package/src/BigInt.ts +516 -16
  619. package/src/Boolean.ts +241 -8
  620. package/src/Cause.ts +177 -1
  621. package/src/Channel.ts +766 -49
  622. package/src/ChildExecutorDecision.ts +12 -0
  623. package/src/Chunk.ts +822 -5
  624. package/src/Config.ts +187 -8
  625. package/src/ConfigError.ts +16 -0
  626. package/src/ConfigProvider.ts +89 -1
  627. package/src/ConfigProviderPathPatch.ts +32 -0
  628. package/src/Console.ts +37 -8
  629. package/src/Context.ts +234 -3
  630. package/src/Cron.ts +16 -1
  631. package/src/Data.ts +165 -0
  632. package/src/DateTime.ts +1012 -50
  633. package/src/Deferred.ts +171 -1
  634. package/src/Differ.ts +89 -27
  635. package/src/Duration.ts +160 -17
  636. package/src/Effect.ts +4717 -164
  637. package/src/Either.ts +650 -34
  638. package/src/Equivalence.ts +24 -0
  639. package/src/ExecutionStrategy.ts +29 -10
  640. package/src/Exit.ts +252 -0
  641. package/src/Fiber.ts +182 -0
  642. package/src/FiberHandle.ts +45 -0
  643. package/src/FiberId.ts +24 -0
  644. package/src/FiberMap.ts +147 -21
  645. package/src/FiberRef.ts +80 -0
  646. package/src/FiberRefs.ts +84 -0
  647. package/src/FiberRefsPatch.ts +35 -1
  648. package/src/FiberSet.ts +41 -0
  649. package/src/Function.ts +416 -31
  650. package/src/GroupBy.ts +38 -0
  651. package/src/Hash.ts +8 -0
  652. package/src/HashMap.ts +316 -0
  653. package/src/HashSet.ts +284 -0
  654. package/src/Inspectable.ts +22 -0
  655. package/src/Iterable.ts +456 -6
  656. package/src/KeyedPool.ts +34 -0
  657. package/src/Layer.ts +475 -38
  658. package/src/List.ts +483 -4
  659. package/src/LogLevel.ts +46 -0
  660. package/src/Logger.ts +195 -4
  661. package/src/Mailbox.ts +16 -0
  662. package/src/ManagedRuntime.ts +46 -2
  663. package/src/MergeDecision.ts +8 -0
  664. package/src/MergeState.ts +8 -0
  665. package/src/MergeStrategy.ts +25 -8
  666. package/src/Metric.ts +426 -15
  667. package/src/MetricHook.ts +24 -0
  668. package/src/MetricKey.ts +62 -8
  669. package/src/MetricPolling.ts +42 -6
  670. package/src/MetricState.ts +16 -0
  671. package/src/Micro.ts +1223 -61
  672. package/src/MutableHashMap.ts +109 -2
  673. package/src/MutableHashSet.ts +28 -1
  674. package/src/MutableList.ts +40 -1
  675. package/src/MutableQueue.ts +66 -1
  676. package/src/MutableRef.ts +60 -1
  677. package/src/Number.ts +500 -16
  678. package/src/Option.ts +1042 -16
  679. package/src/Order.ts +24 -0
  680. package/src/Ordering.ts +66 -0
  681. package/src/Pipeable.ts +224 -21
  682. package/src/Pool.ts +42 -1
  683. package/src/Predicate.ts +514 -0
  684. package/src/PubSub.ts +28 -0
  685. package/src/Queue.ts +106 -2
  686. package/src/RcMap.ts +70 -0
  687. package/src/Readable.ts +18 -7
  688. package/src/Record.ts +814 -40
  689. package/src/RedBlackTree.ts +305 -1
  690. package/src/Ref.ts +88 -0
  691. package/src/RegExp.ts +17 -0
  692. package/src/Request.ts +76 -0
  693. package/src/RequestResolver.ts +145 -4
  694. package/src/Resource.ts +22 -1
  695. package/src/Runtime.ts +134 -2
  696. package/src/RuntimeFlags.ts +100 -0
  697. package/src/RuntimeFlagsPatch.ts +112 -0
  698. package/src/STM.ts +1107 -11
  699. package/src/Schedule.ts +704 -0
  700. package/src/ScheduleInterval.ts +68 -0
  701. package/src/ScheduleIntervals.ts +50 -0
  702. package/src/Scheduler.ts +2 -0
  703. package/src/Scope.ts +36 -0
  704. package/src/ScopedRef.ts +44 -1
  705. package/src/Sink.ts +464 -0
  706. package/src/SortedMap.ts +80 -1
  707. package/src/SortedSet.ts +147 -4
  708. package/src/Stream.ts +5041 -54
  709. package/src/StreamHaltStrategy.ts +29 -12
  710. package/src/String.ts +200 -0
  711. package/src/Struct.ts +86 -7
  712. package/src/Subscribable.ts +16 -0
  713. package/src/SubscriptionRef.ts +159 -11
  714. package/src/SynchronizedRef.ts +169 -8
  715. package/src/TArray.ts +431 -1
  716. package/src/TDeferred.ts +24 -0
  717. package/src/TMap.ts +381 -12
  718. package/src/TPriorityQueue.ts +60 -0
  719. package/src/TPubSub.ts +28 -0
  720. package/src/TQueue.ts +108 -0
  721. package/src/TReentrantLock.ts +36 -0
  722. package/src/TRef.ts +88 -0
  723. package/src/TSemaphore.ts +40 -0
  724. package/src/TSet.ts +280 -12
  725. package/src/Take.ts +56 -0
  726. package/src/TestAnnotationMap.ts +45 -1
  727. package/src/TestClock.ts +6 -0
  728. package/src/TestServices.ts +66 -0
  729. package/src/Trie.ts +906 -0
  730. package/src/Tuple.ts +223 -8
  731. package/src/Types.ts +41 -0
  732. package/src/Unify.ts +28 -17
  733. package/src/UpstreamPullRequest.ts +12 -0
  734. package/src/UpstreamPullStrategy.ts +12 -0
  735. package/src/Utils.ts +1 -15
  736. package/src/internal/cause.ts +4 -1
  737. package/src/internal/context.ts +7 -2
  738. package/src/internal/core-effect.ts +7 -7
  739. package/src/internal/core.ts +14 -2
  740. package/src/internal/effect/circular.ts +8 -2
  741. package/src/internal/fiberId.ts +10 -1
  742. package/src/internal/hashMap.ts +4 -1
  743. package/src/internal/hashSet.ts +4 -1
  744. package/src/internal/layer.ts +105 -38
  745. package/src/internal/mailbox.ts +3 -0
  746. package/src/internal/managedRuntime/circular.ts +6 -0
  747. package/src/internal/managedRuntime.ts +36 -22
  748. package/src/internal/option.ts +4 -1
  749. package/src/internal/pool.ts +7 -1
  750. package/src/internal/redBlackTree.ts +4 -1
  751. package/src/internal/resource.ts +16 -5
  752. package/src/internal/runtime.ts +4 -1
  753. package/src/internal/scopedRef.ts +12 -8
  754. package/src/internal/stm/core.ts +2 -3
  755. package/src/internal/stream.ts +27 -0
  756. package/src/internal/trie.ts +4 -1
  757. package/src/internal/version.ts +1 -1
package/src/Tuple.ts CHANGED
@@ -7,6 +7,7 @@ import * as Equivalence from "./Equivalence.js"
7
7
  import { dual } from "./Function.js"
8
8
  import type { TypeLambda } from "./HKT.js"
9
9
  import * as order from "./Order.js"
10
+ import type { TupleOf } from "./Types.js"
10
11
 
11
12
  /**
12
13
  * @category type lambdas
@@ -61,6 +62,71 @@ export const getFirst = <L, R>(self: readonly [L, R]): L => self[0]
61
62
  */
62
63
  export const getSecond = <L, R>(self: readonly [L, R]): R => self[1]
63
64
 
65
+ /**
66
+ * Transforms each element of tuple using the given function, treating tuple homomorphically
67
+ *
68
+ * @param self - A tuple.
69
+ * @param f - The function to transform elements of the tuple.
70
+ *
71
+ * @example
72
+ * import { pipe, Tuple } from "effect"
73
+ *
74
+ * const result = pipe(
75
+ * ["a", 1, false] as const,
76
+ * Tuple.map((el) => el.toString().toUpperCase())
77
+ * )
78
+ * assert.deepStrictEqual(result, ['A', '1', 'FALSE'])
79
+ *
80
+ * @category mapping
81
+ * @since 3.9.0
82
+ */
83
+ export const map: {
84
+ /**
85
+ * Transforms each element of tuple using the given function, treating tuple homomorphically
86
+ *
87
+ * @param self - A tuple.
88
+ * @param f - The function to transform elements of the tuple.
89
+ *
90
+ * @example
91
+ * import { pipe, Tuple } from "effect"
92
+ *
93
+ * const result = pipe(
94
+ * ["a", 1, false] as const,
95
+ * Tuple.map((el) => el.toString().toUpperCase())
96
+ * )
97
+ * assert.deepStrictEqual(result, ['A', '1', 'FALSE'])
98
+ *
99
+ * @category mapping
100
+ * @since 3.9.0
101
+ */
102
+ <T extends ReadonlyArray<any> | [], B>(fn: (element: T[number]) => B): (self: T) => TupleOf<T["length"], B>
103
+ /**
104
+ * Transforms each element of tuple using the given function, treating tuple homomorphically
105
+ *
106
+ * @param self - A tuple.
107
+ * @param f - The function to transform elements of the tuple.
108
+ *
109
+ * @example
110
+ * import { pipe, Tuple } from "effect"
111
+ *
112
+ * const result = pipe(
113
+ * ["a", 1, false] as const,
114
+ * Tuple.map((el) => el.toString().toUpperCase())
115
+ * )
116
+ * assert.deepStrictEqual(result, ['A', '1', 'FALSE'])
117
+ *
118
+ * @category mapping
119
+ * @since 3.9.0
120
+ */
121
+ <B, T extends ReadonlyArray<any> | []>(self: T, fn: (element: T[number]) => B): TupleOf<T["length"], B>
122
+ } = dual(
123
+ 2,
124
+ <N extends number, A, B>(
125
+ self: TupleOf<N, A>,
126
+ fn: (element: A) => B
127
+ ): TupleOf<N, B> => self.map((element) => fn(element)) as TupleOf<N, B>
128
+ )
129
+
64
130
  /**
65
131
  * Transforms both elements of a tuple using the given functions.
66
132
  *
@@ -80,14 +146,55 @@ export const getSecond = <L, R>(self: readonly [L, R]): R => self[1]
80
146
  * @since 2.0.0
81
147
  */
82
148
  export const mapBoth: {
83
- <L1, L2, R1, R2>(options: {
84
- readonly onFirst: (e: L1) => L2
85
- readonly onSecond: (a: R1) => R2
86
- }): (self: readonly [L1, R1]) => [L2, R2]
87
- <L1, R1, L2, R2>(self: readonly [L1, R1], options: {
88
- readonly onFirst: (e: L1) => L2
89
- readonly onSecond: (a: R1) => R2
90
- }): [L2, R2]
149
+ /**
150
+ * Transforms both elements of a tuple using the given functions.
151
+ *
152
+ * @param self - A tuple of length `2`.
153
+ * @param f - The function to transform the first element of the tuple.
154
+ * @param g - The function to transform the second element of the tuple.
155
+ *
156
+ * @example
157
+ * import { mapBoth } from "effect/Tuple"
158
+ *
159
+ * assert.deepStrictEqual(
160
+ * mapBoth(["hello", 42], { onFirst: s => s.toUpperCase(), onSecond: n => n.toString() }),
161
+ * ["HELLO", "42"]
162
+ * )
163
+ *
164
+ * @category mapping
165
+ * @since 2.0.0
166
+ */
167
+ <L1, L2, R1, R2>(
168
+ options: {
169
+ readonly onFirst: (e: L1) => L2
170
+ readonly onSecond: (a: R1) => R2
171
+ }
172
+ ): (self: readonly [L1, R1]) => [L2, R2]
173
+ /**
174
+ * Transforms both elements of a tuple using the given functions.
175
+ *
176
+ * @param self - A tuple of length `2`.
177
+ * @param f - The function to transform the first element of the tuple.
178
+ * @param g - The function to transform the second element of the tuple.
179
+ *
180
+ * @example
181
+ * import { mapBoth } from "effect/Tuple"
182
+ *
183
+ * assert.deepStrictEqual(
184
+ * mapBoth(["hello", 42], { onFirst: s => s.toUpperCase(), onSecond: n => n.toString() }),
185
+ * ["HELLO", "42"]
186
+ * )
187
+ *
188
+ * @category mapping
189
+ * @since 2.0.0
190
+ */
191
+ <L1, R1, L2, R2>(
192
+ self: readonly [L1, R1],
193
+ options: {
194
+ readonly onFirst: (e: L1) => L2
195
+ readonly onSecond: (a: R1) => R2
196
+ }
197
+ ): [L2, R2]
91
198
  } = dual(
92
199
  2,
93
200
  <L1, R1, L2, R2>(
@@ -117,7 +224,41 @@ export const mapBoth: {
117
224
  * @since 2.0.0
118
225
  */
119
226
  export const mapFirst: {
227
+ /**
228
+ * Transforms the first component of a tuple using a given function.
229
+ *
230
+ * @param self - A tuple of length `2`.
231
+ * @param f - The function to transform the first element of the tuple.
232
+ *
233
+ * @example
234
+ * import { mapFirst } from "effect/Tuple"
235
+ *
236
+ * assert.deepStrictEqual(
237
+ * mapFirst(["hello", 42], s => s.toUpperCase()),
238
+ * ["HELLO", 42]
239
+ * )
240
+ *
241
+ * @category mapping
242
+ * @since 2.0.0
243
+ */
120
244
  <L1, L2>(f: (left: L1) => L2): <R>(self: readonly [L1, R]) => [L2, R]
245
+ /**
246
+ * Transforms the first component of a tuple using a given function.
247
+ *
248
+ * @param self - A tuple of length `2`.
249
+ * @param f - The function to transform the first element of the tuple.
250
+ *
251
+ * @example
252
+ * import { mapFirst } from "effect/Tuple"
253
+ *
254
+ * assert.deepStrictEqual(
255
+ * mapFirst(["hello", 42], s => s.toUpperCase()),
256
+ * ["HELLO", 42]
257
+ * )
258
+ *
259
+ * @category mapping
260
+ * @since 2.0.0
261
+ */
121
262
  <L1, R, L2>(self: readonly [L1, R], f: (left: L1) => L2): [L2, R]
122
263
  } = dual(2, <L1, R, L2>(self: readonly [L1, R], f: (left: L1) => L2): [L2, R] => [f(self[0]), self[1]])
123
264
 
@@ -139,7 +280,41 @@ export const mapFirst: {
139
280
  * @since 2.0.0
140
281
  */
141
282
  export const mapSecond: {
283
+ /**
284
+ * Transforms the second component of a tuple using a given function.
285
+ *
286
+ * @param self - A tuple of length `2`.
287
+ * @param f - The function to transform the second element of the tuple.
288
+ *
289
+ * @example
290
+ * import { mapSecond } from "effect/Tuple"
291
+ *
292
+ * assert.deepStrictEqual(
293
+ * mapSecond(["hello", 42], n => n.toString()),
294
+ * ["hello", "42"]
295
+ * )
296
+ *
297
+ * @category mapping
298
+ * @since 2.0.0
299
+ */
142
300
  <R1, R2>(f: (right: R1) => R2): <L>(self: readonly [L, R1]) => [L, R2]
301
+ /**
302
+ * Transforms the second component of a tuple using a given function.
303
+ *
304
+ * @param self - A tuple of length `2`.
305
+ * @param f - The function to transform the second element of the tuple.
306
+ *
307
+ * @example
308
+ * import { mapSecond } from "effect/Tuple"
309
+ *
310
+ * assert.deepStrictEqual(
311
+ * mapSecond(["hello", 42], n => n.toString()),
312
+ * ["hello", "42"]
313
+ * )
314
+ *
315
+ * @category mapping
316
+ * @since 2.0.0
317
+ */
143
318
  <L, R1, R2>(self: readonly [L, R1], f: (right: R1) => R2): [L, R2]
144
319
  } = dual(2, <L, R1, R2>(self: readonly [L, R1], f: (right: R1) => R2): [L, R2] => [self[0], f(self[1])])
145
320
 
@@ -190,7 +365,19 @@ export const getOrder: <T extends ReadonlyArray<order.Order<any>>>(
190
365
  * @since 2.0.0
191
366
  */
192
367
  export const appendElement: {
368
+ /**
369
+ * Appends an element to the end of a tuple.
370
+ *
371
+ * @category concatenating
372
+ * @since 2.0.0
373
+ */
193
374
  <B>(that: B): <A extends ReadonlyArray<unknown>>(self: A) => [...A, B]
375
+ /**
376
+ * Appends an element to the end of a tuple.
377
+ *
378
+ * @category concatenating
379
+ * @since 2.0.0
380
+ */
194
381
  <A extends ReadonlyArray<unknown>, B>(self: A, that: B): [...A, B]
195
382
  } = dual(2, <A extends ReadonlyArray<unknown>, B>(self: A, that: B): [...A, B] => [...self, that])
196
383
 
@@ -209,7 +396,35 @@ export const appendElement: {
209
396
  * @since 3.4.0
210
397
  */
211
398
  export const at: {
399
+ /**
400
+ * Retrieves the element at a specified index from a tuple.
401
+ *
402
+ * @param self - A tuple from which to retrieve the element.
403
+ * @param index - The index of the element to retrieve.
404
+ *
405
+ * @example
406
+ * import { Tuple } from "effect"
407
+ *
408
+ * assert.deepStrictEqual(Tuple.at([1, 'hello', true], 1), 'hello')
409
+ *
410
+ * @category getters
411
+ * @since 3.4.0
412
+ */
212
413
  <N extends number>(index: N): <A extends ReadonlyArray<unknown>>(self: A) => A[N]
414
+ /**
415
+ * Retrieves the element at a specified index from a tuple.
416
+ *
417
+ * @param self - A tuple from which to retrieve the element.
418
+ * @param index - The index of the element to retrieve.
419
+ *
420
+ * @example
421
+ * import { Tuple } from "effect"
422
+ *
423
+ * assert.deepStrictEqual(Tuple.at([1, 'hello', true], 1), 'hello')
424
+ *
425
+ * @category getters
426
+ * @since 3.4.0
427
+ */
213
428
  <A extends ReadonlyArray<unknown>, N extends number>(self: A, index: N): A[N]
214
429
  } = dual(2, <A extends ReadonlyArray<unknown>, N extends number>(self: A, index: N): A[N] => self[index])
215
430
 
package/src/Types.ts CHANGED
@@ -254,6 +254,18 @@ export type NoInfer<A> = [A][A extends any ? 0 : never]
254
254
  */
255
255
  export type Invariant<A> = (_: A) => A
256
256
 
257
+ /**
258
+ * @since 3.9.0
259
+ * @category models
260
+ */
261
+ export declare namespace Invariant {
262
+ /**
263
+ * @since 3.9.0
264
+ * @category models
265
+ */
266
+ export type Type<A> = A extends Invariant<infer U> ? U : never
267
+ }
268
+
257
269
  /**
258
270
  * Covariant helper.
259
271
  *
@@ -262,6 +274,18 @@ export type Invariant<A> = (_: A) => A
262
274
  */
263
275
  export type Covariant<A> = (_: never) => A
264
276
 
277
+ /**
278
+ * @since 3.9.0
279
+ * @category models
280
+ */
281
+ export declare namespace Covariant {
282
+ /**
283
+ * @since 3.9.0
284
+ * @category models
285
+ */
286
+ export type Type<A> = A extends Covariant<infer U> ? U : never
287
+ }
288
+
265
289
  /**
266
290
  * Contravariant helper.
267
291
  *
@@ -270,6 +294,18 @@ export type Covariant<A> = (_: never) => A
270
294
  */
271
295
  export type Contravariant<A> = (_: A) => void
272
296
 
297
+ /**
298
+ * @since 3.9.0
299
+ * @category models
300
+ */
301
+ export declare namespace Contravariant {
302
+ /**
303
+ * @since 3.9.0
304
+ * @category models
305
+ */
306
+ export type Type<A> = A extends Contravariant<infer U> ? U : never
307
+ }
308
+
273
309
  /**
274
310
  * @since 2.0.0
275
311
  */
@@ -279,3 +315,8 @@ export type MatchRecord<S, onTrue, onFalse> = {} extends S ? onTrue : onFalse
279
315
  * @since 2.0.0
280
316
  */
281
317
  export type NotFunction<T> = T extends Function ? never : T
318
+
319
+ /**
320
+ * @since 3.9.0
321
+ */
322
+ export type NoExcessProperties<T, U> = T & { readonly [K in Exclude<keyof U, keyof T>]: never }
package/src/Unify.ts CHANGED
@@ -34,26 +34,21 @@ export declare const ignoreSymbol: unique symbol
34
34
  */
35
35
  export type ignoreSymbol = typeof ignoreSymbol
36
36
 
37
- type MaybeReturn<F> = F extends () => any ? ReturnType<F> : F
37
+ type MaybeReturn<F> = F extends () => infer R ? R : NonNullable<F>
38
38
 
39
- type Values<X extends [any, any]> = X extends any
40
- ? { [k in keyof X[0]]-?: k extends X[1] ? never : MaybeReturn<X[0][k]> }[keyof X[0]]
39
+ type Values<X extends [any, any]> = X extends [infer A, infer Ignore]
40
+ ? Exclude<keyof A, Ignore> extends infer k ? k extends keyof A ? MaybeReturn<A[k]> : never : never
41
41
  : never
42
42
 
43
- type Ignore<X> = X extends {
44
- [ignoreSymbol]?: any
45
- } ? keyof NonNullable<X[ignoreSymbol]>
43
+ type Ignore<X> = X extends { [ignoreSymbol]?: infer Obj } ? keyof NonNullable<Obj>
46
44
  : never
47
45
 
48
46
  type ExtractTypes<
49
- X extends {
50
- [typeSymbol]?: any
51
- [unifySymbol]?: any
52
- }
53
- > = X extends any ? [
54
- NonNullable<X[unifySymbol]>,
55
- Ignore<X>
56
- ]
47
+ X
48
+ > = X extends {
49
+ [typeSymbol]?: infer _Type
50
+ [unifySymbol]?: infer _Unify
51
+ } ? [NonNullable<_Unify>, Ignore<X>]
57
52
  : never
58
53
 
59
54
  type FilterIn<A> = A extends any ? typeSymbol extends keyof A ? A : never : never
@@ -76,6 +71,9 @@ export type Unify<A> = Values<
76
71
  * @since 2.0.0
77
72
  */
78
73
  export const unify: {
74
+ /**
75
+ * @since 2.0.0
76
+ */
79
77
  <
80
78
  Args extends Array<any>,
81
79
  Args2 extends Array<any>,
@@ -86,6 +84,9 @@ export const unify: {
86
84
  >(
87
85
  x: (...args: Args) => (...args: Args2) => (...args: Args3) => (...args: Args4) => (...args: Args5) => T
88
86
  ): (...args: Args) => (...args: Args2) => (...args: Args3) => (...args: Args4) => (...args: Args5) => Unify<T>
87
+ /**
88
+ * @since 2.0.0
89
+ */
89
90
  <
90
91
  Args extends Array<any>,
91
92
  Args2 extends Array<any>,
@@ -95,6 +96,9 @@ export const unify: {
95
96
  >(
96
97
  x: (...args: Args) => (...args: Args2) => (...args: Args3) => (...args: Args4) => T
97
98
  ): (...args: Args) => (...args: Args2) => (...args: Args3) => (...args: Args4) => Unify<T>
99
+ /**
100
+ * @since 2.0.0
101
+ */
98
102
  <
99
103
  Args extends Array<any>,
100
104
  Args2 extends Array<any>,
@@ -103,16 +107,23 @@ export const unify: {
103
107
  >(
104
108
  x: (...args: Args) => (...args: Args2) => (...args: Args3) => T
105
109
  ): (...args: Args) => (...args: Args2) => (...args: Args3) => Unify<T>
110
+ /**
111
+ * @since 2.0.0
112
+ */
106
113
  <
107
114
  Args extends Array<any>,
108
115
  Args2 extends Array<any>,
109
116
  T
110
- >(
111
- x: (...args: Args) => (...args: Args2) => T
112
- ): (...args: Args) => (...args: Args2) => Unify<T>
117
+ >(x: (...args: Args) => (...args: Args2) => T): (...args: Args) => (...args: Args2) => Unify<T>
118
+ /**
119
+ * @since 2.0.0
120
+ */
113
121
  <
114
122
  Args extends Array<any>,
115
123
  T
116
124
  >(x: (...args: Args) => T): (...args: Args) => Unify<T>
125
+ /**
126
+ * @since 2.0.0
127
+ */
117
128
  <T>(x: T): Unify<T>
118
129
  } = identity as any
@@ -101,12 +101,24 @@ export const isNoUpstream: <A>(self: UpstreamPullRequest<A>) => self is NoUpstre
101
101
  * @category folding
102
102
  */
103
103
  export const match: {
104
+ /**
105
+ * Folds an `UpstreamPullRequest<A>` into a value of type `Z`.
106
+ *
107
+ * @since 2.0.0
108
+ * @category folding
109
+ */
104
110
  <A, Z>(
105
111
  options: {
106
112
  readonly onPulled: (value: A) => Z
107
113
  readonly onNoUpstream: (activeDownstreamCount: number) => Z
108
114
  }
109
115
  ): (self: UpstreamPullRequest<A>) => Z
116
+ /**
117
+ * Folds an `UpstreamPullRequest<A>` into a value of type `Z`.
118
+ *
119
+ * @since 2.0.0
120
+ * @category folding
121
+ */
110
122
  <A, Z>(
111
123
  self: UpstreamPullRequest<A>,
112
124
  options: {
@@ -105,12 +105,24 @@ export const isPullAfterAllEnqueued: <A>(self: UpstreamPullStrategy<A>) => self
105
105
  * @category folding
106
106
  */
107
107
  export const match: {
108
+ /**
109
+ * Folds an `UpstreamPullStrategy<A>` into a value of type `Z`.
110
+ *
111
+ * @since 2.0.0
112
+ * @category folding
113
+ */
108
114
  <A, Z>(
109
115
  options: {
110
116
  readonly onNext: (emitSeparator: Option.Option<A>) => Z
111
117
  readonly onAllEnqueued: (emitSeparator: Option.Option<A>) => Z
112
118
  }
113
119
  ): (self: UpstreamPullStrategy<A>) => Z
120
+ /**
121
+ * Folds an `UpstreamPullStrategy<A>` into a value of type `Z`.
122
+ *
123
+ * @since 2.0.0
124
+ * @category folding
125
+ */
114
126
  <A, Z>(
115
127
  self: UpstreamPullStrategy<A>,
116
128
  options: {
package/src/Utils.ts CHANGED
@@ -614,21 +614,7 @@ export class PCGRandom {
614
614
  * @since 2.0.0
615
615
  */
616
616
  integer(max: number) {
617
- if (!max) {
618
- return this._next()
619
- }
620
- max = max >>> 0
621
- if ((max & (max - 1)) === 0) {
622
- return this._next() & (max - 1) // fast path for power of 2
623
- }
624
-
625
- let num = 0
626
- const skew = (-max >>> 0) % max >>> 0
627
- for (num = this._next(); num < skew; num = this._next()) {
628
- // this loop will rarely execute more than twice,
629
- // and is intentionally empty
630
- }
631
- return num % max
617
+ return Math.round(this.number() * Number.MAX_SAFE_INTEGER) % max
632
618
  }
633
619
 
634
620
  /**
@@ -8,7 +8,7 @@ import { constFalse, constTrue, dual, identity, pipe } from "../Function.js"
8
8
  import { globalValue } from "../GlobalValue.js"
9
9
  import * as Hash from "../Hash.js"
10
10
  import * as HashSet from "../HashSet.js"
11
- import { NodeInspectSymbol, toJSON } from "../Inspectable.js"
11
+ import { DenoInspectSymbol, NodeInspectSymbol, toJSON } from "../Inspectable.js"
12
12
  import * as Option from "../Option.js"
13
13
  import { pipeArguments } from "../Pipeable.js"
14
14
  import type { Predicate, Refinement } from "../Predicate.js"
@@ -69,6 +69,9 @@ const proto = {
69
69
  toString<E>(this: Cause.Cause<E>) {
70
70
  return pretty(this)
71
71
  },
72
+ [DenoInspectSymbol]<E>(this: Cause.Cause<E>) {
73
+ return this.toJSON()
74
+ },
72
75
  [NodeInspectSymbol]<E>(this: Cause.Cause<E>) {
73
76
  return this.toJSON()
74
77
  }
@@ -3,7 +3,7 @@ import * as Equal from "../Equal.js"
3
3
  import type { LazyArg } from "../Function.js"
4
4
  import { dual } from "../Function.js"
5
5
  import * as Hash from "../Hash.js"
6
- import { format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
6
+ import { DenoInspectSymbol, format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
7
7
  import type * as O from "../Option.js"
8
8
  import { pipeArguments } from "../Pipeable.js"
9
9
  import { hasProperty } from "../Predicate.js"
@@ -25,7 +25,6 @@ export const STMTypeId: STM.STMTypeId = Symbol.for(
25
25
  /** @internal */
26
26
  export const TagProto: any = {
27
27
  ...EffectPrototype,
28
- _tag: "Tag",
29
28
  _op: "Tag",
30
29
  [STMTypeId]: effectVariance,
31
30
  [TagTypeId]: {
@@ -42,6 +41,9 @@ export const TagProto: any = {
42
41
  stack: this.stack
43
42
  }
44
43
  },
44
+ [DenoInspectSymbol]() {
45
+ return this.toJSON()
46
+ },
45
47
  [NodeInspectSymbol]() {
46
48
  return this.toJSON()
47
49
  },
@@ -126,6 +128,9 @@ export const ContextProto: Omit<C.Context<unknown>, "unsafeMap"> = {
126
128
  services: Array.from(this.unsafeMap).map(toJSON)
127
129
  }
128
130
  },
131
+ [DenoInspectSymbol]() {
132
+ return (this as any).toJSON()
133
+ },
129
134
  [NodeInspectSymbol]() {
130
135
  return (this as any).toJSON()
131
136
  }
@@ -1055,17 +1055,17 @@ const loopDiscard = <S, X, E, R>(
1055
1055
 
1056
1056
  /* @internal */
1057
1057
  export const mapAccum: {
1058
- <S, A, B, E, R>(
1058
+ <S, A, B, E, R, I extends Iterable<A> = Iterable<A>>(
1059
1059
  zero: S,
1060
1060
  f: (s: S, a: A, i: number) => Effect.Effect<readonly [S, B], E, R>
1061
- ): (elements: Iterable<A>) => Effect.Effect<[S, Array<B>], E, R>
1062
- <A, S, B, E, R>(
1063
- elements: Iterable<A>,
1061
+ ): (elements: I) => Effect.Effect<[S, Arr.ReadonlyArray.With<I, B>], E, R>
1062
+ <A, S, B, E, R, I extends Iterable<A> = Iterable<A>>(
1063
+ elements: I,
1064
1064
  zero: S,
1065
1065
  f: (s: S, a: A, i: number) => Effect.Effect<readonly [S, B], E, R>
1066
- ): Effect.Effect<[S, Array<B>], E, R>
1067
- } = dual(3, <A, S, B, E, R>(
1068
- elements: Iterable<A>,
1066
+ ): Effect.Effect<[S, Arr.ReadonlyArray.With<I, B>], E, R>
1067
+ } = dual(3, <A, S, B, E, R, I extends Iterable<A> = Iterable<A>>(
1068
+ elements: I,
1069
1069
  zero: S,
1070
1070
  f: (s: S, a: A, i: number) => Effect.Effect<readonly [S, B], E, R>
1071
1071
  ): Effect.Effect<[S, Array<B>], E, R> =>
@@ -21,7 +21,7 @@ import { globalValue } from "../GlobalValue.js"
21
21
  import * as Hash from "../Hash.js"
22
22
  import * as HashMap from "../HashMap.js"
23
23
  import type * as HashSet from "../HashSet.js"
24
- import { format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
24
+ import { DenoInspectSymbol, format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
25
25
  import * as List from "../List.js"
26
26
  import type * as LogLevel from "../LogLevel.js"
27
27
  import type * as LogSpan from "../LogSpan.js"
@@ -177,6 +177,9 @@ class EffectPrimitive {
177
177
  toString() {
178
178
  return format(this.toJSON())
179
179
  }
180
+ [DenoInspectSymbol]() {
181
+ return this.toJSON()
182
+ }
180
183
  [NodeInspectSymbol]() {
181
184
  return this.toJSON()
182
185
  }
@@ -226,6 +229,9 @@ class EffectPrimitiveFailure {
226
229
  toString() {
227
230
  return format(this.toJSON())
228
231
  }
232
+ [DenoInspectSymbol]() {
233
+ return this.toJSON()
234
+ }
229
235
  [NodeInspectSymbol]() {
230
236
  return this.toJSON()
231
237
  }
@@ -275,6 +281,9 @@ class EffectPrimitiveSuccess {
275
281
  toString() {
276
282
  return format(this.toJSON())
277
283
  }
284
+ [DenoInspectSymbol]() {
285
+ return this.toJSON()
286
+ }
278
287
  [NodeInspectSymbol]() {
279
288
  return this.toJSON()
280
289
  }
@@ -673,7 +682,7 @@ export const originalInstance = <E>(obj: E): E => {
673
682
  }
674
683
 
675
684
  /* @internal */
676
- const capture = <E>(obj: E & object, span: Option.Option<Tracer.Span>): E => {
685
+ export const capture = <E>(obj: E & object, span: Option.Option<Tracer.Span>): E => {
677
686
  if (Option.isSome(span)) {
678
687
  return new Proxy(obj, {
679
688
  has(target, p) {
@@ -2194,6 +2203,9 @@ export const YieldableError: new(message?: string, options?: ErrorOptions) => Ca
2194
2203
  toJSON() {
2195
2204
  return { ...this }
2196
2205
  }
2206
+ [DenoInspectSymbol]() {
2207
+ return this[NodeInspectSymbol]()
2208
+ }
2197
2209
  [NodeInspectSymbol]() {
2198
2210
  if (this.toString !== globalThis.Error.prototype.toString) {
2199
2211
  return this.stack ? `${this.toString()}\n${this.stack.split("\n").slice(1).join("\n")}` : this.toString()
@@ -112,10 +112,16 @@ export const unsafeMakeSemaphore = (permits: number): Semaphore => new Semaphore
112
112
  /** @internal */
113
113
  export const makeSemaphore = (permits: number) => core.sync(() => unsafeMakeSemaphore(permits))
114
114
 
115
- class Latch implements Effect.Latch {
115
+ class Latch extends Effectable.Class<void> implements Effect.Latch {
116
116
  waiters: Array<(_: Effect.Effect<void>) => void> = []
117
117
  scheduled = false
118
- constructor(private isOpen: boolean) {}
118
+ constructor(private isOpen: boolean) {
119
+ super()
120
+ }
121
+
122
+ commit() {
123
+ return this.await
124
+ }
119
125
 
120
126
  private unsafeSchedule(fiber: Fiber.RuntimeFiber<void>) {
121
127
  if (this.scheduled || this.waiters.length === 0) {