effect 2.0.0-next.46 → 2.0.0-next.48

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 (421) hide show
  1. package/BigInt/dist/effect-BigInt.cjs.d.mts +2 -0
  2. package/BigInt/dist/effect-BigInt.cjs.d.mts.map +1 -0
  3. package/BigInt/dist/effect-BigInt.cjs.d.ts +2 -0
  4. package/BigInt/dist/effect-BigInt.cjs.d.ts.map +1 -0
  5. package/{Bigint/dist/effect-Bigint.cjs.dev.js → BigInt/dist/effect-BigInt.cjs.dev.js} +30 -30
  6. package/BigInt/dist/effect-BigInt.cjs.js +7 -0
  7. package/{Bigint/dist/effect-Bigint.cjs.mjs → BigInt/dist/effect-BigInt.cjs.mjs} +2 -2
  8. package/{Bigint/dist/effect-Bigint.cjs.prod.js → BigInt/dist/effect-BigInt.cjs.prod.js} +30 -30
  9. package/{Bigint/dist/effect-Bigint.esm.js → BigInt/dist/effect-BigInt.esm.js} +28 -28
  10. package/BigInt/package.json +4 -0
  11. package/Brand/dist/effect-Brand.cjs.dev.js +3 -3
  12. package/Brand/dist/effect-Brand.cjs.prod.js +3 -3
  13. package/Cache/dist/effect-Cache.cjs.dev.js +28 -28
  14. package/Cache/dist/effect-Cache.cjs.prod.js +28 -28
  15. package/Cause/dist/effect-Cause.cjs.dev.js +8 -8
  16. package/Cause/dist/effect-Cause.cjs.prod.js +8 -8
  17. package/Channel/dist/effect-Channel.cjs.dev.js +41 -41
  18. package/Channel/dist/effect-Channel.cjs.prod.js +41 -41
  19. package/ChannelSingleProducerAsyncInput/dist/effect-ChannelSingleProducerAsyncInput.cjs.dev.js +36 -38
  20. package/ChannelSingleProducerAsyncInput/dist/effect-ChannelSingleProducerAsyncInput.cjs.prod.js +36 -38
  21. package/Chunk/dist/effect-Chunk.cjs.dev.js +3 -3
  22. package/Chunk/dist/effect-Chunk.cjs.prod.js +3 -3
  23. package/Clock/dist/effect-Clock.cjs.dev.js +14 -14
  24. package/Clock/dist/effect-Clock.cjs.prod.js +14 -14
  25. package/Config/dist/effect-Config.cjs.dev.js +11 -11
  26. package/Config/dist/effect-Config.cjs.prod.js +11 -11
  27. package/ConfigError/dist/effect-ConfigError.cjs.dev.js +4 -4
  28. package/ConfigError/dist/effect-ConfigError.cjs.prod.js +4 -4
  29. package/ConfigProvider/dist/effect-ConfigProvider.cjs.dev.js +13 -13
  30. package/ConfigProvider/dist/effect-ConfigProvider.cjs.prod.js +13 -13
  31. package/ConfigProviderPathPatch/dist/effect-ConfigProviderPathPatch.cjs.dev.js +5 -5
  32. package/ConfigProviderPathPatch/dist/effect-ConfigProviderPathPatch.cjs.prod.js +5 -5
  33. package/ConfigSecret/dist/effect-ConfigSecret.cjs.dev.js +4 -4
  34. package/ConfigSecret/dist/effect-ConfigSecret.cjs.prod.js +4 -4
  35. package/Console/dist/effect-Console.cjs.dev.js +32 -32
  36. package/Console/dist/effect-Console.cjs.prod.js +32 -32
  37. package/Context/dist/effect-Context.cjs.dev.js +3 -3
  38. package/Context/dist/effect-Context.cjs.prod.js +3 -3
  39. package/Data/dist/effect-Data.cjs.dev.js +50 -46
  40. package/Data/dist/effect-Data.cjs.prod.js +50 -46
  41. package/Data/dist/effect-Data.esm.js +11 -5
  42. package/DefaultServices/dist/effect-DefaultServices.cjs.dev.js +14 -14
  43. package/DefaultServices/dist/effect-DefaultServices.cjs.prod.js +14 -14
  44. package/Deferred/dist/effect-Deferred.cjs.dev.js +8 -8
  45. package/Deferred/dist/effect-Deferred.cjs.prod.js +8 -8
  46. package/Differ/dist/effect-Differ.cjs.dev.js +5 -5
  47. package/Differ/dist/effect-Differ.cjs.prod.js +5 -5
  48. package/Duration/dist/effect-Duration.cjs.dev.js +4 -4
  49. package/Duration/dist/effect-Duration.cjs.prod.js +4 -4
  50. package/Duration/dist/effect-Duration.esm.js +2 -2
  51. package/Effect/dist/effect-Effect.cjs.dev.js +67 -136
  52. package/Effect/dist/effect-Effect.cjs.mjs +2 -11
  53. package/Effect/dist/effect-Effect.cjs.prod.js +67 -136
  54. package/Effect/dist/effect-Effect.esm.js +30 -90
  55. package/Effectable/dist/effect-Effectable.cjs.dev.js +1 -1
  56. package/Effectable/dist/effect-Effectable.cjs.prod.js +1 -1
  57. package/Either/dist/effect-Either.cjs.dev.js +17 -3
  58. package/Either/dist/effect-Either.cjs.mjs +3 -1
  59. package/Either/dist/effect-Either.cjs.prod.js +17 -3
  60. package/Either/dist/effect-Either.esm.js +13 -1
  61. package/Encoding/dist/effect-Encoding.cjs.dev.js +3 -3
  62. package/Encoding/dist/effect-Encoding.cjs.prod.js +3 -3
  63. package/Exit/dist/effect-Exit.cjs.dev.js +8 -8
  64. package/Exit/dist/effect-Exit.cjs.prod.js +8 -8
  65. package/Fiber/dist/effect-Fiber.cjs.dev.js +29 -29
  66. package/Fiber/dist/effect-Fiber.cjs.prod.js +29 -29
  67. package/FiberId/dist/effect-FiberId.cjs.dev.js +5 -5
  68. package/FiberId/dist/effect-FiberId.cjs.prod.js +5 -5
  69. package/FiberRef/dist/effect-FiberRef.cjs.dev.js +29 -29
  70. package/FiberRef/dist/effect-FiberRef.cjs.prod.js +29 -29
  71. package/FiberRefs/dist/effect-FiberRefs.cjs.dev.js +9 -9
  72. package/FiberRefs/dist/effect-FiberRefs.cjs.prod.js +9 -9
  73. package/FiberRefsPatch/dist/effect-FiberRefsPatch.cjs.dev.js +10 -10
  74. package/FiberRefsPatch/dist/effect-FiberRefsPatch.cjs.prod.js +10 -10
  75. package/GroupBy/dist/effect-GroupBy.cjs.dev.js +43 -43
  76. package/GroupBy/dist/effect-GroupBy.cjs.prod.js +43 -43
  77. package/HashMap/dist/effect-HashMap.cjs.dev.js +4 -4
  78. package/HashMap/dist/effect-HashMap.cjs.prod.js +4 -4
  79. package/HashSet/dist/effect-HashSet.cjs.dev.js +4 -4
  80. package/HashSet/dist/effect-HashSet.cjs.prod.js +4 -4
  81. package/KeyedPool/dist/effect-KeyedPool.cjs.dev.js +29 -29
  82. package/KeyedPool/dist/effect-KeyedPool.cjs.prod.js +29 -29
  83. package/Layer/dist/effect-Layer.cjs.dev.js +151 -52
  84. package/Layer/dist/effect-Layer.cjs.mjs +12 -0
  85. package/Layer/dist/effect-Layer.cjs.prod.js +151 -52
  86. package/Layer/dist/effect-Layer.esm.js +92 -2
  87. package/List/dist/effect-List.cjs.dev.js +3 -3
  88. package/List/dist/effect-List.cjs.prod.js +3 -3
  89. package/LogLevel/dist/effect-LogLevel.cjs.dev.js +8 -8
  90. package/LogLevel/dist/effect-LogLevel.cjs.prod.js +8 -8
  91. package/Logger/dist/effect-Logger.cjs.dev.js +33 -39
  92. package/Logger/dist/effect-Logger.cjs.prod.js +33 -39
  93. package/Logger/dist/effect-Logger.esm.js +0 -5
  94. package/Match/dist/effect-Match.cjs.d.mts +2 -0
  95. package/Match/dist/effect-Match.cjs.d.mts.map +1 -0
  96. package/Match/dist/effect-Match.cjs.d.ts +2 -0
  97. package/Match/dist/effect-Match.cjs.d.ts.map +1 -0
  98. package/Match/dist/effect-Match.cjs.dev.js +620 -0
  99. package/Match/dist/effect-Match.cjs.js +7 -0
  100. package/Match/dist/effect-Match.cjs.mjs +39 -0
  101. package/Match/dist/effect-Match.cjs.prod.js +620 -0
  102. package/Match/dist/effect-Match.esm.js +258 -0
  103. package/Match/package.json +4 -0
  104. package/Metric/dist/effect-Metric.cjs.dev.js +27 -27
  105. package/Metric/dist/effect-Metric.cjs.prod.js +27 -27
  106. package/MetricBoundaries/dist/effect-MetricBoundaries.cjs.dev.js +4 -4
  107. package/MetricBoundaries/dist/effect-MetricBoundaries.cjs.prod.js +4 -4
  108. package/MetricHook/dist/effect-MetricHook.cjs.dev.js +6 -6
  109. package/MetricHook/dist/effect-MetricHook.cjs.prod.js +6 -6
  110. package/MetricKey/dist/effect-MetricKey.cjs.dev.js +7 -7
  111. package/MetricKey/dist/effect-MetricKey.cjs.prod.js +7 -7
  112. package/MetricKeyType/dist/effect-MetricKeyType.cjs.dev.js +4 -4
  113. package/MetricKeyType/dist/effect-MetricKeyType.cjs.prod.js +4 -4
  114. package/MetricLabel/dist/effect-MetricLabel.cjs.dev.js +1 -1
  115. package/MetricLabel/dist/effect-MetricLabel.cjs.prod.js +1 -1
  116. package/MetricPolling/dist/effect-MetricPolling.cjs.dev.js +29 -29
  117. package/MetricPolling/dist/effect-MetricPolling.cjs.prod.js +29 -29
  118. package/MetricRegistry/dist/effect-MetricRegistry.cjs.dev.js +8 -8
  119. package/MetricRegistry/dist/effect-MetricRegistry.cjs.prod.js +8 -8
  120. package/MetricState/dist/effect-MetricState.cjs.dev.js +1 -1
  121. package/MetricState/dist/effect-MetricState.cjs.prod.js +1 -1
  122. package/MutableHashMap/dist/effect-MutableHashMap.cjs.dev.js +4 -4
  123. package/MutableHashMap/dist/effect-MutableHashMap.cjs.prod.js +4 -4
  124. package/MutableHashSet/dist/effect-MutableHashSet.cjs.dev.js +4 -4
  125. package/MutableHashSet/dist/effect-MutableHashSet.cjs.prod.js +4 -4
  126. package/MutableQueue/dist/effect-MutableQueue.cjs.dev.js +3 -3
  127. package/MutableQueue/dist/effect-MutableQueue.cjs.prod.js +3 -3
  128. package/Option/dist/effect-Option.cjs.dev.js +3 -3
  129. package/Option/dist/effect-Option.cjs.prod.js +3 -3
  130. package/Pool/dist/effect-Pool.cjs.dev.js +29 -29
  131. package/Pool/dist/effect-Pool.cjs.prod.js +29 -29
  132. package/Predicate/dist/effect-Predicate.cjs.dev.js +5 -5
  133. package/Predicate/dist/effect-Predicate.cjs.mjs +1 -1
  134. package/Predicate/dist/effect-Predicate.cjs.prod.js +5 -5
  135. package/Predicate/dist/effect-Predicate.esm.js +5 -5
  136. package/PubSub/dist/effect-PubSub.cjs.dev.js +28 -28
  137. package/PubSub/dist/effect-PubSub.cjs.prod.js +28 -28
  138. package/Queue/dist/effect-Queue.cjs.dev.js +28 -28
  139. package/Queue/dist/effect-Queue.cjs.prod.js +28 -28
  140. package/README.md +23 -0
  141. package/Random/dist/effect-Random.cjs.dev.js +14 -14
  142. package/Random/dist/effect-Random.cjs.prod.js +14 -14
  143. package/ReadonlyArray/dist/effect-ReadonlyArray.cjs.dev.js +3 -3
  144. package/ReadonlyArray/dist/effect-ReadonlyArray.cjs.prod.js +3 -3
  145. package/ReadonlyRecord/dist/effect-ReadonlyRecord.cjs.dev.js +3 -3
  146. package/ReadonlyRecord/dist/effect-ReadonlyRecord.cjs.prod.js +3 -3
  147. package/RedBlackTree/dist/effect-RedBlackTree.cjs.dev.js +3 -3
  148. package/RedBlackTree/dist/effect-RedBlackTree.cjs.prod.js +3 -3
  149. package/Ref/dist/effect-Ref.cjs.dev.js +9 -9
  150. package/Ref/dist/effect-Ref.cjs.prod.js +9 -9
  151. package/Reloadable/dist/effect-Reloadable.cjs.dev.js +33 -33
  152. package/Reloadable/dist/effect-Reloadable.cjs.prod.js +33 -33
  153. package/Request/dist/effect-Request.cjs.dev.js +28 -28
  154. package/Request/dist/effect-Request.cjs.prod.js +28 -28
  155. package/RequestBlock/dist/effect-RequestBlock.cjs.dev.js +36 -38
  156. package/RequestBlock/dist/effect-RequestBlock.cjs.prod.js +36 -38
  157. package/RequestResolver/dist/effect-RequestResolver.cjs.dev.js +42 -44
  158. package/RequestResolver/dist/effect-RequestResolver.cjs.prod.js +42 -44
  159. package/Resource/dist/effect-Resource.cjs.dev.js +31 -31
  160. package/Resource/dist/effect-Resource.cjs.prod.js +31 -31
  161. package/Runtime/dist/effect-Runtime.cjs.dev.js +30 -30
  162. package/Runtime/dist/effect-Runtime.cjs.prod.js +30 -30
  163. package/RuntimeFlags/dist/effect-RuntimeFlags.cjs.dev.js +33 -34
  164. package/RuntimeFlags/dist/effect-RuntimeFlags.cjs.prod.js +33 -34
  165. package/RuntimeFlagsPatch/dist/effect-RuntimeFlagsPatch.cjs.dev.js +6 -6
  166. package/RuntimeFlagsPatch/dist/effect-RuntimeFlagsPatch.cjs.prod.js +6 -6
  167. package/STM/dist/effect-STM.cjs.dev.js +45 -45
  168. package/STM/dist/effect-STM.cjs.prod.js +45 -45
  169. package/Schedule/dist/effect-Schedule.cjs.dev.js +20 -20
  170. package/Schedule/dist/effect-Schedule.cjs.prod.js +20 -20
  171. package/ScheduleDecision/dist/effect-ScheduleDecision.cjs.dev.js +3 -3
  172. package/ScheduleDecision/dist/effect-ScheduleDecision.cjs.prod.js +3 -3
  173. package/ScheduleInterval/dist/effect-ScheduleInterval.cjs.dev.js +3 -3
  174. package/ScheduleInterval/dist/effect-ScheduleInterval.cjs.prod.js +3 -3
  175. package/ScheduleIntervals/dist/effect-ScheduleIntervals.cjs.dev.js +3 -3
  176. package/ScheduleIntervals/dist/effect-ScheduleIntervals.cjs.prod.js +3 -3
  177. package/Scheduler/dist/effect-Scheduler.cjs.dev.js +8 -8
  178. package/Scheduler/dist/effect-Scheduler.cjs.prod.js +8 -8
  179. package/Scope/dist/effect-Scope.cjs.dev.js +27 -27
  180. package/Scope/dist/effect-Scope.cjs.prod.js +27 -27
  181. package/ScopedCache/dist/effect-ScopedCache.cjs.dev.js +34 -36
  182. package/ScopedCache/dist/effect-ScopedCache.cjs.prod.js +34 -36
  183. package/ScopedRef/dist/effect-ScopedRef.cjs.dev.js +31 -31
  184. package/ScopedRef/dist/effect-ScopedRef.cjs.prod.js +31 -31
  185. package/Sink/dist/effect-Sink.cjs.dev.js +39 -39
  186. package/Sink/dist/effect-Sink.cjs.prod.js +39 -39
  187. package/SortedMap/dist/effect-SortedMap.cjs.dev.js +3 -3
  188. package/SortedMap/dist/effect-SortedMap.cjs.prod.js +3 -3
  189. package/SortedSet/dist/effect-SortedSet.cjs.dev.js +3 -3
  190. package/SortedSet/dist/effect-SortedSet.cjs.prod.js +3 -3
  191. package/Stream/dist/effect-Stream.cjs.dev.js +43 -43
  192. package/Stream/dist/effect-Stream.cjs.prod.js +43 -43
  193. package/Streamable/dist/effect-Streamable.cjs.dev.js +43 -43
  194. package/Streamable/dist/effect-Streamable.cjs.prod.js +43 -43
  195. package/String/dist/effect-String.cjs.dev.js +3 -3
  196. package/String/dist/effect-String.cjs.prod.js +3 -3
  197. package/SubscriptionRef/dist/effect-SubscriptionRef.cjs.dev.js +46 -46
  198. package/SubscriptionRef/dist/effect-SubscriptionRef.cjs.prod.js +46 -46
  199. package/Supervisor/dist/effect-Supervisor.cjs.dev.js +33 -34
  200. package/Supervisor/dist/effect-Supervisor.cjs.prod.js +33 -34
  201. package/SynchronizedRef/dist/effect-SynchronizedRef.cjs.dev.js +30 -30
  202. package/SynchronizedRef/dist/effect-SynchronizedRef.cjs.prod.js +30 -30
  203. package/TArray/dist/effect-TArray.cjs.dev.js +47 -47
  204. package/TArray/dist/effect-TArray.cjs.prod.js +47 -47
  205. package/TDeferred/dist/effect-TDeferred.cjs.dev.js +46 -46
  206. package/TDeferred/dist/effect-TDeferred.cjs.prod.js +46 -46
  207. package/TMap/dist/effect-TMap.cjs.dev.js +48 -48
  208. package/TMap/dist/effect-TMap.cjs.prod.js +48 -48
  209. package/TPriorityQueue/dist/effect-TPriorityQueue.cjs.dev.js +45 -45
  210. package/TPriorityQueue/dist/effect-TPriorityQueue.cjs.prod.js +45 -45
  211. package/TPubSub/dist/effect-TPubSub.cjs.dev.js +50 -50
  212. package/TPubSub/dist/effect-TPubSub.cjs.prod.js +50 -50
  213. package/TQueue/dist/effect-TQueue.cjs.dev.js +47 -47
  214. package/TQueue/dist/effect-TQueue.cjs.prod.js +47 -47
  215. package/TRandom/dist/effect-TRandom.cjs.dev.js +46 -46
  216. package/TRandom/dist/effect-TRandom.cjs.prod.js +46 -46
  217. package/TReentrantLock/dist/effect-TReentrantLock.cjs.dev.js +50 -50
  218. package/TReentrantLock/dist/effect-TReentrantLock.cjs.prod.js +50 -50
  219. package/TRef/dist/effect-TRef.cjs.dev.js +45 -45
  220. package/TRef/dist/effect-TRef.cjs.prod.js +45 -45
  221. package/TSemaphore/dist/effect-TSemaphore.cjs.dev.js +46 -46
  222. package/TSemaphore/dist/effect-TSemaphore.cjs.prod.js +46 -46
  223. package/TSet/dist/effect-TSet.cjs.dev.js +48 -48
  224. package/TSet/dist/effect-TSet.cjs.prod.js +48 -48
  225. package/Take/dist/effect-Take.cjs.dev.js +36 -38
  226. package/Take/dist/effect-Take.cjs.prod.js +36 -38
  227. package/TestAnnotation/dist/effect-TestAnnotation.cjs.dev.js +5 -5
  228. package/TestAnnotation/dist/effect-TestAnnotation.cjs.prod.js +5 -5
  229. package/TestAnnotations/dist/effect-TestAnnotations.cjs.dev.js +20 -20
  230. package/TestAnnotations/dist/effect-TestAnnotations.cjs.prod.js +20 -20
  231. package/TestClock/dist/effect-TestClock.cjs.dev.js +32 -32
  232. package/TestClock/dist/effect-TestClock.cjs.prod.js +32 -32
  233. package/TestConfig/dist/effect-TestConfig.cjs.dev.js +3 -3
  234. package/TestConfig/dist/effect-TestConfig.cjs.prod.js +3 -3
  235. package/TestContext/dist/effect-TestContext.cjs.dev.js +34 -36
  236. package/TestContext/dist/effect-TestContext.cjs.prod.js +34 -36
  237. package/TestLive/dist/effect-TestLive.cjs.dev.js +14 -14
  238. package/TestLive/dist/effect-TestLive.cjs.prod.js +14 -14
  239. package/TestServices/dist/effect-TestServices.cjs.dev.js +40 -42
  240. package/TestServices/dist/effect-TestServices.cjs.prod.js +40 -42
  241. package/TestSized/dist/effect-TestSized.cjs.dev.js +8 -8
  242. package/TestSized/dist/effect-TestSized.cjs.prod.js +8 -8
  243. package/Tracer/dist/effect-Tracer.cjs.dev.js +20 -18
  244. package/Tracer/dist/effect-Tracer.cjs.mjs +1 -0
  245. package/Tracer/dist/effect-Tracer.cjs.prod.js +20 -18
  246. package/Tracer/dist/effect-Tracer.esm.js +7 -6
  247. package/dist/{Context-da73ddfa.cjs.dev.js → Context-607e9b4c.cjs.dev.js} +2 -2
  248. package/dist/{Context-9fe5eb16.cjs.prod.js → Context-c91d8ca0.cjs.prod.js} +2 -2
  249. package/dist/{Either-d43f082c.cjs.prod.js → Either-a3f96c60.cjs.prod.js} +2 -2
  250. package/dist/{Either-fa0ef1d9.cjs.dev.js → Either-e7500e90.cjs.dev.js} +2 -2
  251. package/dist/{Option-463b42e6.cjs.dev.js → Option-01caa9d4.cjs.dev.js} +1 -1
  252. package/dist/{Option-935e5d7c.cjs.prod.js → Option-dd52e82a.cjs.prod.js} +1 -1
  253. package/dist/{Ref-acdee7ef.cjs.dev.js → Ref-548003d1.cjs.dev.js} +1 -1
  254. package/dist/{Ref-4014b526.cjs.prod.js → Ref-6608e3b6.cjs.prod.js} +1 -1
  255. package/dist/{cache-7eed9d33.cjs.dev.js → cache-7953c9ae.cjs.dev.js} +5 -5
  256. package/dist/{cache-5c7d77e4.cjs.prod.js → cache-d7096ab5.cjs.prod.js} +5 -5
  257. package/dist/{circular-c8b65bdb.cjs.dev.js → circular-171d6971.cjs.dev.js} +8 -9
  258. package/dist/{circular-c2dbce1a.cjs.dev.js → circular-8568ddf2.cjs.dev.js} +7 -7
  259. package/dist/{circular-1f481ffb.cjs.prod.js → circular-894f44de.cjs.prod.js} +7 -7
  260. package/dist/{circular-9e10a5a7.cjs.prod.js → circular-b6cc8a1d.cjs.prod.js} +8 -9
  261. package/dist/{config-5ba54da1.cjs.prod.js → config-615bcaef.cjs.prod.js} +3 -3
  262. package/dist/{config-3b7935a3.cjs.dev.js → config-ea74e7d0.cjs.dev.js} +3 -3
  263. package/dist/{configProvider-f34a82f1.cjs.dev.js → configProvider-089a1159.cjs.dev.js} +4 -4
  264. package/dist/{configProvider-b6b20998.cjs.prod.js → configProvider-3877a6ec.cjs.prod.js} +4 -4
  265. package/dist/{core-b7401357.cjs.dev.js → core-365f89c2.cjs.dev.js} +3 -3
  266. package/dist/{core-07202cc0.cjs.prod.js → core-3908bc43.cjs.prod.js} +3 -3
  267. package/dist/{core-c5747f88.cjs.dev.js → core-3d37486a.cjs.dev.js} +3 -3
  268. package/dist/{core-7411d1e1.cjs.prod.js → core-8ccae4e2.cjs.prod.js} +3 -3
  269. package/dist/{core-effect-9201ea63.cjs.prod.js → core-effect-37a0d753.cjs.prod.js} +8 -8
  270. package/dist/{core-effect-1c564d42.cjs.dev.js → core-effect-c529ccac.cjs.dev.js} +8 -8
  271. package/dist/{dataSource-b83bc277.cjs.prod.js → dataSource-0e407d86.cjs.prod.js} +2 -2
  272. package/dist/{dataSource-b5eda714.cjs.dev.js → dataSource-d125d7af.cjs.dev.js} +2 -2
  273. package/dist/declarations/src/{Bigint.d.ts → BigInt.d.ts} +27 -27
  274. package/dist/declarations/src/{Bigint.d.ts.map → BigInt.d.ts.map} +1 -1
  275. package/dist/declarations/src/Channel.d.ts +4 -2
  276. package/dist/declarations/src/Channel.d.ts.map +1 -1
  277. package/dist/declarations/src/Data.d.ts +1 -2
  278. package/dist/declarations/src/Data.d.ts.map +1 -1
  279. package/dist/declarations/src/Effect.d.ts +67 -102
  280. package/dist/declarations/src/Effect.d.ts.map +1 -1
  281. package/dist/declarations/src/Either.d.ts +16 -0
  282. package/dist/declarations/src/Either.d.ts.map +1 -1
  283. package/dist/declarations/src/FiberRef.d.ts +2 -2
  284. package/dist/declarations/src/FiberRef.d.ts.map +1 -1
  285. package/dist/declarations/src/Layer.d.ts +98 -3
  286. package/dist/declarations/src/Layer.d.ts.map +1 -1
  287. package/dist/declarations/src/Logger.d.ts +2 -7
  288. package/dist/declarations/src/Logger.d.ts.map +1 -1
  289. package/dist/declarations/src/Match.d.ts +420 -0
  290. package/dist/declarations/src/Match.d.ts.map +1 -0
  291. package/dist/declarations/src/Predicate.d.ts +4 -4
  292. package/dist/declarations/src/Queue.d.ts +5 -0
  293. package/dist/declarations/src/Queue.d.ts.map +1 -1
  294. package/dist/declarations/src/Stream.d.ts +4 -2
  295. package/dist/declarations/src/Stream.d.ts.map +1 -1
  296. package/dist/declarations/src/Tracer.d.ts +17 -10
  297. package/dist/declarations/src/Tracer.d.ts.map +1 -1
  298. package/dist/declarations/src/index.d.ts +5 -1
  299. package/dist/declarations/src/index.d.ts.map +1 -1
  300. package/dist/{defaultServices-9d7ce86f.cjs.prod.js → defaultServices-1c3db777.cjs.prod.js} +15 -4
  301. package/dist/{defaultServices-755d5b46.cjs.dev.js → defaultServices-a933c201.cjs.dev.js} +15 -4
  302. package/dist/effect.cjs.dev.js +6 -3
  303. package/dist/effect.cjs.mjs +2 -1
  304. package/dist/effect.cjs.prod.js +6 -3
  305. package/dist/effect.esm.js +4 -2
  306. package/dist/{fiber-5156eff2.cjs.dev.js → fiber-13587a5a.cjs.dev.js} +3 -3
  307. package/dist/{fiber-9519d109.cjs.prod.js → fiber-2858bd1f.cjs.prod.js} +3 -3
  308. package/dist/{fiberRefs-98b71233.cjs.dev.js → fiberRefs-abe2a811.cjs.dev.js} +1 -1
  309. package/dist/{fiberRefs-558c17e6.cjs.prod.js → fiberRefs-ea1edd57.cjs.prod.js} +1 -1
  310. package/dist/{fiberRuntime-31ae011f.cjs.prod.js → fiberRuntime-9fafeaab.cjs.prod.js} +27 -23
  311. package/dist/{fiberRuntime-d3872282.cjs.dev.js → fiberRuntime-ebcb168f.cjs.dev.js} +27 -23
  312. package/dist/{groupBy-862cc2da.cjs.dev.js → groupBy-050e6b17.cjs.dev.js} +4 -4
  313. package/dist/{groupBy-724f64ef.cjs.prod.js → groupBy-93f35a1d.cjs.prod.js} +4 -4
  314. package/dist/{hook-8cefc909.cjs.dev.js → hook-2c94278c.cjs.dev.js} +1 -1
  315. package/dist/{hook-98ce30e4.cjs.prod.js → hook-9af5cf52.cjs.prod.js} +1 -1
  316. package/dist/{key-198b6670.cjs.dev.js → key-2d4efb00.cjs.dev.js} +2 -2
  317. package/dist/{key-eb8a12b2.cjs.prod.js → key-9b2f3322.cjs.prod.js} +2 -2
  318. package/dist/{layer-29574350.cjs.dev.js → layer-09807eda.cjs.dev.js} +15 -10
  319. package/dist/{layer-51ff4846.cjs.prod.js → layer-fc5b5ca7.cjs.prod.js} +15 -10
  320. package/dist/{patch-0220a642.cjs.dev.js → patch-2f545954.cjs.dev.js} +1 -1
  321. package/dist/{patch-7c559bb2.cjs.prod.js → patch-e72c6c2f.cjs.prod.js} +1 -1
  322. package/dist/{pathPatch-fab016f1.cjs.dev.js → pathPatch-9fa78980.cjs.dev.js} +1 -1
  323. package/dist/{pathPatch-b56a4da2.cjs.prod.js → pathPatch-f3064fa9.cjs.prod.js} +1 -1
  324. package/dist/{pool-3211287f.cjs.dev.js → pool-7c9cd8e9.cjs.dev.js} +5 -5
  325. package/dist/{pool-f77d7705.cjs.prod.js → pool-9370f703.cjs.prod.js} +5 -5
  326. package/dist/{query-c36decd5.cjs.dev.js → query-6cd164ab.cjs.dev.js} +3 -3
  327. package/dist/{query-a52b25f0.cjs.prod.js → query-8147932f.cjs.prod.js} +3 -3
  328. package/dist/{queue-7a223c44.cjs.dev.js → queue-06ce789d.cjs.dev.js} +23 -13
  329. package/dist/{queue-315ea45d.cjs.prod.js → queue-6afe5f19.cjs.prod.js} +23 -13
  330. package/dist/{registry-62ff192e.cjs.dev.js → registry-35e8eb48.cjs.dev.js} +2 -2
  331. package/dist/{registry-d5258dff.cjs.prod.js → registry-5c67df33.cjs.prod.js} +2 -2
  332. package/dist/{runtime-005f8a9b.cjs.prod.js → runtime-d41d839b.cjs.prod.js} +6 -6
  333. package/dist/{runtime-57c8ddf8.cjs.dev.js → runtime-fb1c1c19.cjs.dev.js} +6 -6
  334. package/dist/{schedule-e7a9f93f.cjs.dev.js → schedule-0e1db444.cjs.dev.js} +3 -3
  335. package/dist/{schedule-8cdf6bf1.cjs.prod.js → schedule-64057679.cjs.prod.js} +3 -3
  336. package/dist/{scopedRef-eb19c7a6.cjs.dev.js → scopedRef-2ea09a4f.cjs.dev.js} +6 -6
  337. package/dist/{scopedRef-789d7fef.cjs.prod.js → scopedRef-7a6d42f7.cjs.prod.js} +6 -6
  338. package/dist/{singleProducerAsyncInput-f9b258b1.cjs.prod.js → singleProducerAsyncInput-8b8ad112.cjs.prod.js} +1 -1
  339. package/dist/{singleProducerAsyncInput-9ff8389b.cjs.dev.js → singleProducerAsyncInput-97f74016.cjs.dev.js} +1 -1
  340. package/dist/{sink-572d8981.cjs.prod.js → sink-6d1a77bf.cjs.prod.js} +3 -3
  341. package/dist/{sink-8d3427e7.cjs.dev.js → sink-ebf2fbdb.cjs.dev.js} +3 -3
  342. package/dist/{stm-f250b596.cjs.prod.js → stm-4a6de085.cjs.prod.js} +3 -3
  343. package/dist/{stm-8aca0022.cjs.dev.js → stm-dbec85f1.cjs.dev.js} +3 -3
  344. package/dist/{stream-34d80d2c.cjs.dev.js → stream-478aa5a8.cjs.dev.js} +9 -6
  345. package/dist/{stream-ea4f4d44.cjs.prod.js → stream-f7345889.cjs.prod.js} +9 -6
  346. package/dist/{synchronizedRef-ed8aa6ac.cjs.prod.js → synchronizedRef-432b4455.cjs.prod.js} +1 -1
  347. package/dist/{synchronizedRef-a12fd967.cjs.dev.js → synchronizedRef-fa63e917.cjs.dev.js} +1 -1
  348. package/dist/{tArray-17f078f2.cjs.dev.js → tArray-0c9045e7.cjs.dev.js} +3 -3
  349. package/dist/{tArray-d184e22f.cjs.prod.js → tArray-b30ccc3e.cjs.prod.js} +3 -3
  350. package/dist/{tMap-e219f30e.cjs.prod.js → tMap-001c791c.cjs.prod.js} +4 -4
  351. package/dist/{tMap-1a5aa78b.cjs.dev.js → tMap-0625df1d.cjs.dev.js} +4 -4
  352. package/dist/{tQueue-47129ad0.cjs.prod.js → tQueue-6accdd70.cjs.prod.js} +3 -3
  353. package/dist/{tQueue-0a4fc773.cjs.dev.js → tQueue-cdbf9130.cjs.dev.js} +3 -3
  354. package/dist/{tRef-ab4c5713.cjs.prod.js → tRef-8b60d85b.cjs.prod.js} +1 -1
  355. package/dist/{tRef-b860ef05.cjs.dev.js → tRef-b5bae36d.cjs.dev.js} +1 -1
  356. package/internal/channel.esm.js +2 -2
  357. package/internal/core-effect.esm.js +1 -1
  358. package/internal/fiberRuntime.esm.js +27 -23
  359. package/internal/layer/circular.esm.js +5 -6
  360. package/internal/layer.esm.js +9 -5
  361. package/internal/logger.esm.js +3 -3
  362. package/internal/matcher.esm.js +314 -0
  363. package/internal/queue.esm.js +24 -14
  364. package/internal/stream.esm.js +7 -4
  365. package/internal/tracer.esm.js +14 -4
  366. package/package.json +21 -13
  367. package/src/{Bigint.ts → BigInt.ts} +26 -26
  368. package/src/Channel.ts +4 -2
  369. package/src/Data.ts +18 -16
  370. package/src/Duration.ts +2 -2
  371. package/src/Effect.ts +84 -151
  372. package/src/Either.ts +33 -0
  373. package/src/FiberRef.ts +2 -3
  374. package/src/Layer.ts +157 -3
  375. package/src/Logger.ts +2 -8
  376. package/src/Match.ts +800 -0
  377. package/src/Predicate.ts +4 -4
  378. package/src/Queue.ts +8 -0
  379. package/src/Stream.ts +4 -2
  380. package/src/Tracer.ts +18 -9
  381. package/src/index.ts +6 -1
  382. package/src/internal/channel.ts +5 -3
  383. package/src/internal/core-effect.ts +27 -22
  384. package/src/internal/core.ts +5 -7
  385. package/src/internal/fiberRuntime.ts +39 -13
  386. package/src/internal/layer/circular.ts +21 -6
  387. package/src/internal/layer.ts +20 -4
  388. package/src/internal/logger.ts +4 -4
  389. package/src/internal/matcher.ts +594 -0
  390. package/src/internal/queue.ts +26 -11
  391. package/src/internal/stream.ts +9 -7
  392. package/src/internal/tracer.ts +28 -5
  393. package/src/tsconfig.json +41 -0
  394. package/Bigint/dist/effect-Bigint.cjs.d.mts +0 -2
  395. package/Bigint/dist/effect-Bigint.cjs.d.mts.map +0 -1
  396. package/Bigint/dist/effect-Bigint.cjs.d.ts +0 -2
  397. package/Bigint/dist/effect-Bigint.cjs.d.ts.map +0 -1
  398. package/Bigint/dist/effect-Bigint.cjs.js +0 -7
  399. package/Bigint/package.json +0 -4
  400. /package/dist/{Effectable-c4c14a2b.cjs.prod.js → Effectable-6a8a05f1.cjs.prod.js} +0 -0
  401. /package/dist/{Effectable-7314aed8.cjs.dev.js → Effectable-71c10ab9.cjs.dev.js} +0 -0
  402. /package/dist/{FiberId-1d7ac632.cjs.prod.js → FiberId-54d8bd67.cjs.prod.js} +0 -0
  403. /package/dist/{FiberId-d88ddce6.cjs.dev.js → FiberId-6708cdca.cjs.dev.js} +0 -0
  404. /package/dist/{HashSet-ac02a3e1.cjs.prod.js → HashSet-86613304.cjs.prod.js} +0 -0
  405. /package/dist/{HashSet-5963ad6b.cjs.dev.js → HashSet-dd020cb0.cjs.dev.js} +0 -0
  406. /package/dist/{RuntimeFlagsPatch-866fa259.cjs.prod.js → RuntimeFlagsPatch-902b4680.cjs.prod.js} +0 -0
  407. /package/dist/{RuntimeFlagsPatch-69102b03.cjs.dev.js → RuntimeFlagsPatch-cf423492.cjs.dev.js} +0 -0
  408. /package/dist/{boundaries-f212e414.cjs.dev.js → boundaries-b5265184.cjs.dev.js} +0 -0
  409. /package/dist/{boundaries-9af538e3.cjs.prod.js → boundaries-bfd86b3e.cjs.prod.js} +0 -0
  410. /package/dist/{configError-b43723af.cjs.prod.js → configError-856c7153.cjs.prod.js} +0 -0
  411. /package/dist/{configError-d5efe9c0.cjs.dev.js → configError-a824b415.cjs.dev.js} +0 -0
  412. /package/dist/{configSecret-e2faa181.cjs.prod.js → configSecret-9b941a86.cjs.prod.js} +0 -0
  413. /package/dist/{configSecret-3e8ae336.cjs.dev.js → configSecret-e7bb51da.cjs.dev.js} +0 -0
  414. /package/dist/{keyType-0c5e6178.cjs.prod.js → keyType-4ec0b247.cjs.prod.js} +0 -0
  415. /package/dist/{keyType-7c164b82.cjs.dev.js → keyType-f30c9fa4.cjs.dev.js} +0 -0
  416. /package/dist/{label-655343b5.cjs.prod.js → label-a588e6cd.cjs.prod.js} +0 -0
  417. /package/dist/{label-011edbe7.cjs.dev.js → label-b0cebeae.cjs.dev.js} +0 -0
  418. /package/dist/{state-0bdf02b7.cjs.prod.js → state-40d5dc71.cjs.prod.js} +0 -0
  419. /package/dist/{state-931050c4.cjs.dev.js → state-620f7a22.cjs.dev.js} +0 -0
  420. /package/dist/{take-85daaf79.cjs.prod.js → take-15455ae3.cjs.prod.js} +0 -0
  421. /package/dist/{take-f9ef9e2e.cjs.dev.js → take-1c250e7a.cjs.dev.js} +0 -0
@@ -0,0 +1,594 @@
1
+ import * as Either from "../Either"
2
+ import { identity } from "../Function"
3
+ import type {
4
+ Case,
5
+ Matcher,
6
+ MatcherTypeId,
7
+ Not,
8
+ SafeRefinement,
9
+ TypeMatcher,
10
+ Types,
11
+ ValueMatcher,
12
+ When
13
+ } from "../Match"
14
+ import * as Option from "../Option"
15
+ import { pipeArguments } from "../Pipeable"
16
+ import type * as Predicate from "../Predicate"
17
+ import type { Unify } from "../Unify"
18
+
19
+ /** @internal */
20
+ export const TypeId: MatcherTypeId = Symbol.for(
21
+ "@effect/matcher/Matcher"
22
+ ) as MatcherTypeId
23
+
24
+ const TypeMatcherProto: Omit<TypeMatcher<any, any, any, any>, "cases"> = {
25
+ [TypeId]: {
26
+ _input: identity,
27
+ _filters: identity,
28
+ _remaining: identity,
29
+ _result: identity
30
+ },
31
+ _tag: "TypeMatcher",
32
+ add<I, R, RA, A>(
33
+ this: TypeMatcher<any, any, any, any>,
34
+ _case: Case
35
+ ): TypeMatcher<I, R, RA, A> {
36
+ return makeTypeMatcher([...this.cases, _case])
37
+ },
38
+ pipe() {
39
+ return pipeArguments(this, arguments)
40
+ }
41
+ }
42
+
43
+ function makeTypeMatcher<I, R, RA, A>(
44
+ cases: ReadonlyArray<Case>
45
+ ): TypeMatcher<I, R, RA, A> {
46
+ const matcher = Object.create(TypeMatcherProto)
47
+ matcher.cases = cases
48
+ return matcher
49
+ }
50
+
51
+ const ValueMatcherProto: Omit<
52
+ ValueMatcher<any, any, any, any, any>,
53
+ "provided" | "value"
54
+ > = {
55
+ [TypeId]: {
56
+ _input: identity,
57
+ _filters: identity,
58
+ _result: identity
59
+ },
60
+ _tag: "ValueMatcher",
61
+ add<I, R, RA, A, Pr>(
62
+ this: ValueMatcher<any, any, any, any, any>,
63
+ _case: Case
64
+ ): ValueMatcher<I, R, RA, A, Pr> {
65
+ if (this.value._tag === "Right") {
66
+ return this
67
+ }
68
+
69
+ if (_case._tag === "When" && _case.guard(this.provided) === true) {
70
+ return makeValueMatcher(
71
+ this.provided,
72
+ Either.right(_case.evaluate(this.provided))
73
+ )
74
+ } else if (_case._tag === "Not" && _case.guard(this.provided) === false) {
75
+ return makeValueMatcher(
76
+ this.provided,
77
+ Either.right(_case.evaluate(this.provided))
78
+ )
79
+ }
80
+
81
+ return this
82
+ },
83
+ pipe() {
84
+ return pipeArguments(this, arguments)
85
+ }
86
+ }
87
+
88
+ function makeValueMatcher<I, R, RA, A, Pr>(
89
+ provided: Pr,
90
+ value: Either.Either<RA, Pr>
91
+ ): ValueMatcher<I, R, RA, A, Pr> {
92
+ const matcher = Object.create(ValueMatcherProto)
93
+ matcher.provided = provided
94
+ matcher.value = value
95
+ return matcher
96
+ }
97
+
98
+ const makeWhen = (
99
+ guard: (u: unknown) => boolean,
100
+ evaluate: (input: unknown) => any
101
+ ): When => ({
102
+ _tag: "When",
103
+ guard,
104
+ evaluate
105
+ })
106
+
107
+ const makeNot = (
108
+ guard: (u: unknown) => boolean,
109
+ evaluate: (input: unknown) => any
110
+ ): Not => ({
111
+ _tag: "Not",
112
+ guard,
113
+ evaluate
114
+ })
115
+
116
+ const makePredicate = (pattern: unknown): Predicate.Predicate<unknown> => {
117
+ if (typeof pattern === "function") {
118
+ return pattern as Predicate.Predicate<unknown>
119
+ } else if (Array.isArray(pattern)) {
120
+ const predicates = pattern.map(makePredicate)
121
+ const len = predicates.length
122
+
123
+ return (u: unknown) => {
124
+ if (!Array.isArray(u)) {
125
+ return false
126
+ }
127
+
128
+ for (let i = 0; i < len; i++) {
129
+ if (predicates[i](u[i]) === false) {
130
+ return false
131
+ }
132
+ }
133
+
134
+ return true
135
+ }
136
+ } else if (pattern !== null && typeof pattern === "object") {
137
+ const keysAndPredicates = Object.entries(pattern).map(
138
+ ([k, p]) => [k, makePredicate(p)] as const
139
+ )
140
+ const len = keysAndPredicates.length
141
+
142
+ return (u: unknown) => {
143
+ if (typeof u !== "object" || u === null) {
144
+ return false
145
+ }
146
+
147
+ for (let i = 0; i < len; i++) {
148
+ const [key, predicate] = keysAndPredicates[i]
149
+ if (!(key in u) || predicate((u as any)[key]) === false) {
150
+ return false
151
+ }
152
+ }
153
+
154
+ return true
155
+ }
156
+ }
157
+
158
+ return (u: unknown) => u === pattern
159
+ }
160
+
161
+ const makeOrPredicate = (
162
+ patterns: ReadonlyArray<unknown>
163
+ ): Predicate.Predicate<unknown> => {
164
+ const predicates = patterns.map(makePredicate)
165
+ const len = predicates.length
166
+
167
+ return (u: unknown) => {
168
+ for (let i = 0; i < len; i++) {
169
+ if (predicates[i](u) === true) {
170
+ return true
171
+ }
172
+ }
173
+
174
+ return false
175
+ }
176
+ }
177
+
178
+ const makeAndPredicate = (
179
+ patterns: ReadonlyArray<unknown>
180
+ ): Predicate.Predicate<unknown> => {
181
+ const predicates = patterns.map(makePredicate)
182
+ const len = predicates.length
183
+
184
+ return (u: unknown) => {
185
+ for (let i = 0; i < len; i++) {
186
+ if (predicates[i](u) === false) {
187
+ return false
188
+ }
189
+ }
190
+
191
+ return true
192
+ }
193
+ }
194
+
195
+ /** @internal */
196
+ export const type = <I>(): Matcher<
197
+ I,
198
+ Types.Without<never>,
199
+ I,
200
+ never,
201
+ never
202
+ > => makeTypeMatcher([])
203
+
204
+ /** @internal */
205
+ export const value = <const I>(
206
+ i: I
207
+ ): Matcher<I, Types.Without<never>, I, never, I> => makeValueMatcher(i, Either.left(i))
208
+
209
+ /** @internal */
210
+ export const valueTags = <
211
+ const I,
212
+ P extends {
213
+ readonly [Tag in Types.Tags<"_tag", I> & string]: (
214
+ _: Extract<I, { readonly _tag: Tag }>
215
+ ) => any
216
+ }
217
+ >(
218
+ fields: P
219
+ ) => {
220
+ const match: any = tagsExhaustive(fields)(makeTypeMatcher([]))
221
+ return (input: I): Unify<ReturnType<P[keyof P]>> => match(input)
222
+ }
223
+
224
+ /** @internal */
225
+ export const typeTags = <I>() =>
226
+ <
227
+ P extends {
228
+ readonly [Tag in Types.Tags<"_tag", I> & string]: (
229
+ _: Extract<I, { readonly _tag: Tag }>
230
+ ) => any
231
+ }
232
+ >(
233
+ fields: P
234
+ ) => {
235
+ const match: any = tagsExhaustive(fields)(makeTypeMatcher([]))
236
+ return (input: I): Unify<ReturnType<P[keyof P]>> => match(input)
237
+ }
238
+
239
+ /** @internal */
240
+ export const when = <
241
+ R,
242
+ const P extends Types.PatternPrimitive<R> | Types.PatternBase<R>,
243
+ Fn extends (_: Types.WhenMatch<R, P>) => unknown
244
+ >(
245
+ pattern: P,
246
+ f: Fn
247
+ ) =>
248
+ <I, F, A, Pr>(
249
+ self: Matcher<I, F, R, A, Pr>
250
+ ): Matcher<
251
+ I,
252
+ Types.AddWithout<F, Types.PForExclude<P>>,
253
+ Types.ApplyFilters<I, Types.AddWithout<F, Types.PForExclude<P>>>,
254
+ A | ReturnType<Fn>,
255
+ Pr
256
+ > => (self as any).add(makeWhen(makePredicate(pattern), f as any))
257
+
258
+ /** @internal */
259
+ export const whenOr = <
260
+ R,
261
+ const P extends ReadonlyArray<
262
+ Types.PatternPrimitive<R> | Types.PatternBase<R>
263
+ >,
264
+ Fn extends (_: Types.WhenMatch<R, P[number]>) => unknown
265
+ >(
266
+ ...args: [...patterns: P, f: Fn]
267
+ ) =>
268
+ <I, F, A, Pr>(
269
+ self: Matcher<I, F, R, A, Pr>
270
+ ): Matcher<
271
+ I,
272
+ Types.AddWithout<F, Types.PForExclude<P[number]>>,
273
+ Types.ApplyFilters<I, Types.AddWithout<F, Types.PForExclude<P[number]>>>,
274
+ A | ReturnType<Fn>,
275
+ Pr
276
+ > => {
277
+ const onMatch = args[args.length - 1] as any
278
+ const patterns = args.slice(0, -1) as unknown as P
279
+ return (self as any).add(makeWhen(makeOrPredicate(patterns), onMatch))
280
+ }
281
+
282
+ /** @internal */
283
+ export const whenAnd = <
284
+ R,
285
+ const P extends ReadonlyArray<
286
+ Types.PatternPrimitive<R> | Types.PatternBase<R>
287
+ >,
288
+ Fn extends (_: Types.WhenMatch<R, Types.ArrayToIntersection<P>>) => unknown
289
+ >(
290
+ ...args: [...patterns: P, f: Fn]
291
+ ) =>
292
+ <I, F, A, Pr>(
293
+ self: Matcher<I, F, R, A, Pr>
294
+ ): Matcher<
295
+ I,
296
+ Types.AddWithout<F, Types.PForExclude<Types.ArrayToIntersection<P>>>,
297
+ Types.ApplyFilters<
298
+ I,
299
+ Types.AddWithout<F, Types.PForExclude<Types.ArrayToIntersection<P>>>
300
+ >,
301
+ A | ReturnType<Fn>,
302
+ Pr
303
+ > => {
304
+ const onMatch = args[args.length - 1] as any
305
+ const patterns = args.slice(0, -1) as unknown as P
306
+ return (self as any).add(makeWhen(makeAndPredicate(patterns), onMatch))
307
+ }
308
+
309
+ /** @internal */
310
+ export const discriminator = <D extends string>(field: D) =>
311
+ <R, P extends Types.Tags<D, R> & string, B>(
312
+ ...pattern: [
313
+ first: P,
314
+ ...values: Array<P>,
315
+ f: (_: Extract<R, Record<D, P>>) => B
316
+ ]
317
+ ) => {
318
+ const f = pattern[pattern.length - 1]
319
+ const values: Array<P> = pattern.slice(0, -1) as any
320
+ const pred = values.length === 1
321
+ ? (_: any) => _[field] === values[0]
322
+ : (_: any) => values.includes(_[field])
323
+
324
+ return <I, F, A, Pr>(
325
+ self: Matcher<I, F, R, A, Pr>
326
+ ): Matcher<
327
+ I,
328
+ Types.AddWithout<F, Extract<R, Record<D, P>>>,
329
+ Types.ApplyFilters<I, Types.AddWithout<F, Extract<R, Record<D, P>>>>,
330
+ A | B,
331
+ Pr
332
+ > => (self as any).add(makeWhen(pred, f as any)) as any
333
+ }
334
+
335
+ /** @internal */
336
+ export const discriminatorStartsWith = <D extends string>(field: D) =>
337
+ <R, P extends string, B>(
338
+ pattern: P,
339
+ f: (_: Extract<R, Record<D, `${P}${string}`>>) => B
340
+ ) => {
341
+ const pred = (_: any) => typeof _[field] === "string" && _[field].startsWith(pattern)
342
+
343
+ return <I, F, A, Pr>(
344
+ self: Matcher<I, F, R, A, Pr>
345
+ ): Matcher<
346
+ I,
347
+ Types.AddWithout<F, Extract<R, Record<D, `${P}${string}`>>>,
348
+ Types.ApplyFilters<
349
+ I,
350
+ Types.AddWithout<F, Extract<R, Record<D, `${P}${string}`>>>
351
+ >,
352
+ A | B,
353
+ Pr
354
+ > => (self as any).add(makeWhen(pred, f as any)) as any
355
+ }
356
+
357
+ /** @internal */
358
+ export const discriminators = <D extends string>(field: D) =>
359
+ <
360
+ R,
361
+ P extends {
362
+ readonly [Tag in Types.Tags<D, R> & string]?: (
363
+ _: Extract<R, Record<D, Tag>>
364
+ ) => any
365
+ }
366
+ >(
367
+ fields: P
368
+ ) => {
369
+ const predicates: Array<When> = []
370
+ for (const key in fields) {
371
+ const pred = (_: any) => _[field] === key
372
+ const f = fields[key]
373
+ if (f) {
374
+ predicates.push(makeWhen(pred, f as any))
375
+ }
376
+ }
377
+ const len = predicates.length
378
+
379
+ return <I, F, A, Pr>(
380
+ self: Matcher<I, F, R, A, Pr>
381
+ ): Matcher<
382
+ I,
383
+ Types.AddWithout<F, Extract<R, Record<D, keyof P>>>,
384
+ Types.ApplyFilters<I, Types.AddWithout<F, Extract<R, Record<D, keyof P>>>>,
385
+ A | ReturnType<P[keyof P] & {}>,
386
+ Pr
387
+ > => {
388
+ let matcher: any = self
389
+ for (let i = 0; i < len; i++) {
390
+ matcher = matcher.add(predicates[i])
391
+ }
392
+ return matcher
393
+ }
394
+ }
395
+
396
+ /** @internal */
397
+ export const discriminatorsExhaustive: <D extends string>(
398
+ field: D
399
+ ) => <
400
+ R,
401
+ P extends {
402
+ readonly [Tag in Types.Tags<D, R> & string]: (
403
+ _: Extract<R, Record<D, Tag>>
404
+ ) => any
405
+ }
406
+ >(
407
+ fields: P
408
+ ) => <I, F, A, Pr>(
409
+ self: Matcher<I, F, R, A, Pr>
410
+ ) => [Pr] extends [never] ? (u: I) => Unify<A | ReturnType<P[keyof P]>>
411
+ : Unify<A | ReturnType<P[keyof P]>> = (field: string) => (fields: object) => {
412
+ const addCases = discriminators(field)(fields)
413
+ return (matcher: any) => exhaustive(addCases(matcher))
414
+ }
415
+
416
+ /** @internal */
417
+ export const tag: <R, P extends Types.Tags<"_tag", R> & string, B>(
418
+ ...pattern: [
419
+ first: P,
420
+ ...values: Array<P>,
421
+ f: (_: Extract<R, Record<"_tag", P>>) => B
422
+ ]
423
+ ) => <I, F, A, Pr>(
424
+ self: Matcher<I, F, R, A, Pr>
425
+ ) => Matcher<
426
+ I,
427
+ Types.AddWithout<F, Extract<R, Record<"_tag", P>>>,
428
+ Types.ApplyFilters<I, Types.AddWithout<F, Extract<R, Record<"_tag", P>>>>,
429
+ B | A,
430
+ Pr
431
+ > = discriminator("_tag")
432
+
433
+ /** @internal */
434
+ export const tagStartsWith = discriminatorStartsWith("_tag")
435
+
436
+ /** @internal */
437
+ export const tags = discriminators("_tag")
438
+
439
+ /** @internal */
440
+ export const tagsExhaustive = discriminatorsExhaustive("_tag")
441
+
442
+ /** @internal */
443
+ export const not = <
444
+ R,
445
+ const P extends Types.PatternPrimitive<R> | Types.PatternBase<R>,
446
+ Fn extends (_: Types.NotMatch<R, P>) => unknown
447
+ >(
448
+ pattern: P,
449
+ f: Fn
450
+ ) =>
451
+ <I, F, A, Pr>(
452
+ self: Matcher<I, F, R, A, Pr>
453
+ ): Matcher<
454
+ I,
455
+ Types.AddOnly<F, Types.WhenMatch<R, P>>,
456
+ Types.ApplyFilters<I, Types.AddOnly<F, Types.WhenMatch<R, P>>>,
457
+ A | ReturnType<Fn>,
458
+ Pr
459
+ > => (self as any).add(makeNot(makePredicate(pattern), f as any))
460
+
461
+ /** @internal */
462
+ export const nonEmptyString: SafeRefinement<string, never> =
463
+ ((u: unknown) => typeof u === "string" && u.length > 0) as any
464
+
465
+ /** @internal */
466
+ export const is: <
467
+ Literals extends ReadonlyArray<string | number | boolean | null | bigint>
468
+ >(
469
+ ...literals: Literals
470
+ ) => Predicate.Refinement<unknown, Literals[number]> = (...literals): any => {
471
+ const len = literals.length
472
+ return (u: unknown) => {
473
+ for (let i = 0; i < len; i++) {
474
+ if (u === literals[i]) {
475
+ return true
476
+ }
477
+ }
478
+ return false
479
+ }
480
+ }
481
+
482
+ /** @internal */
483
+ export const any: SafeRefinement<unknown, any> = (() => true) as any
484
+
485
+ /** @internal */
486
+ export const defined = <A>(u: A): u is A & {} => (u !== undefined && u !== null) as any
487
+
488
+ /** @internal */
489
+ export const instanceOf = <A extends abstract new(...args: any) => any>(
490
+ constructor: A
491
+ ): SafeRefinement<InstanceType<A>, never> => ((u: unknown) => u instanceof constructor) as any
492
+
493
+ /** @internal */
494
+ export const instanceOfUnsafe: <A extends abstract new(...args: any) => any>(
495
+ constructor: A
496
+ ) => SafeRefinement<InstanceType<A>, InstanceType<A>> = instanceOf
497
+
498
+ /** @internal */
499
+ export const orElse = <RA, B>(f: (b: RA) => B) =>
500
+ <I, R, A, Pr>(
501
+ self: Matcher<I, R, RA, A, Pr>
502
+ ): [Pr] extends [never] ? (input: I) => Unify<A | B> : Unify<A | B> => {
503
+ const result = either(self)
504
+
505
+ if (Either.isEither(result)) {
506
+ // @ts-expect-error
507
+ return result._tag === "Right" ? result.right : f(result.left)
508
+ }
509
+
510
+ // @ts-expect-error
511
+ return (input: I) => {
512
+ const a = result(input)
513
+ return a._tag === "Right" ? a.right : f(a.left)
514
+ }
515
+ }
516
+
517
+ /** @internal */
518
+ export const orElseAbsurd = <I, R, RA, A, Pr>(
519
+ self: Matcher<I, R, RA, A, Pr>
520
+ ): [Pr] extends [never] ? (input: I) => Unify<A> : Unify<A> =>
521
+ orElse(() => {
522
+ throw new Error("absurd")
523
+ })(self)
524
+
525
+ /** @internal */
526
+ export const either: <I, F, R, A, Pr>(
527
+ self: Matcher<I, F, R, A, Pr>
528
+ ) => [Pr] extends [never] ? (input: I) => Either.Either<R, Unify<A>>
529
+ : Either.Either<R, Unify<A>> = (<I, R, RA, A>(self: Matcher<I, R, RA, A, I>) => {
530
+ if (self._tag === "ValueMatcher") {
531
+ return self.value
532
+ }
533
+
534
+ const len = self.cases.length
535
+ return (input: I): Either.Either<RA, A> => {
536
+ for (let i = 0; i < len; i++) {
537
+ const _case = self.cases[i]
538
+ if (_case._tag === "When" && _case.guard(input) === true) {
539
+ return Either.right(_case.evaluate(input))
540
+ } else if (_case._tag === "Not" && _case.guard(input) === false) {
541
+ return Either.right(_case.evaluate(input))
542
+ }
543
+ }
544
+
545
+ return Either.left(input as any)
546
+ }
547
+ }) as any
548
+
549
+ /** @internal */
550
+ export const option: <I, F, R, A, Pr>(
551
+ self: Matcher<I, F, R, A, Pr>
552
+ ) => [Pr] extends [never] ? (input: I) => Option.Option<Unify<A>>
553
+ : Option.Option<Unify<A>> = (<I, A>(self: Matcher<I, any, any, A, I>) => {
554
+ const toEither = either(self)
555
+ if (Either.isEither(toEither)) {
556
+ return Either.match(toEither, {
557
+ onLeft: () => Option.none(),
558
+ onRight: Option.some
559
+ })
560
+ }
561
+ return (input: I): Option.Option<A> =>
562
+ Either.match((toEither as any)(input), {
563
+ onLeft: () => Option.none(),
564
+ onRight: Option.some as any
565
+ })
566
+ }) as any
567
+
568
+ /** @internal */
569
+ export const exhaustive: <I, F, A, Pr>(
570
+ self: Matcher<I, F, never, A, Pr>
571
+ ) => [Pr] extends [never] ? (u: I) => Unify<A> : Unify<A> = (<I, F, A>(
572
+ self: Matcher<I, F, never, A, I>
573
+ ) => {
574
+ const toEither = either(self as any)
575
+
576
+ if (Either.isEither(toEither)) {
577
+ if (toEither._tag === "Right") {
578
+ return toEither.right
579
+ }
580
+
581
+ throw new Error("@effect/match: exhaustive absurd")
582
+ }
583
+
584
+ return (u: I): A => {
585
+ // @ts-expect-error
586
+ const result = toEither(u)
587
+
588
+ if (result._tag === "Right") {
589
+ return result.right as any
590
+ }
591
+
592
+ throw new Error("@effect/match: exhaustive absurd")
593
+ }
594
+ }) as any
@@ -513,6 +513,17 @@ class BackPressureStrategy<A> implements Queue.Strategy<A> {
513
513
  return MutableQueue.length(this.putters)
514
514
  }
515
515
 
516
+ onCompleteTakersWithEmptyQueue(takers: MutableQueue.MutableQueue<Deferred.Deferred<never, A>>): void {
517
+ while (!MutableQueue.isEmpty(this.putters) && !MutableQueue.isEmpty(takers)) {
518
+ const taker = MutableQueue.poll(takers, void 0)!
519
+ const putter = MutableQueue.poll(this.putters, void 0)!
520
+ if (putter[2]) {
521
+ unsafeCompleteDeferred(putter[1], true)
522
+ }
523
+ unsafeCompleteDeferred(taker, putter[0])
524
+ }
525
+ }
526
+
516
527
  shutdown(): Effect.Effect<never, never, void> {
517
528
  return pipe(
518
529
  core.fiberId,
@@ -575,17 +586,12 @@ class BackPressureStrategy<A> implements Queue.Strategy<A> {
575
586
  }
576
587
 
577
588
  unsafeOffer(iterable: Iterable<A>, deferred: Deferred.Deferred<never, boolean>): void {
578
- const iterator = iterable[Symbol.iterator]()
579
- let next: IteratorResult<A> = iterator.next()
580
- if (!next.done) {
581
- // eslint-disable-next-line no-constant-condition
582
- while (1) {
583
- const value = next.value
584
- next = iterator.next()
585
- if (next.done) {
586
- pipe(this.putters, MutableQueue.offer([value, deferred, true as boolean] as const))
587
- break
588
- }
589
+ const stuff = Array.from(iterable)
590
+ for (let i = 0; i < stuff.length; i++) {
591
+ const value = stuff[i]
592
+ if (i === stuff.length - 1) {
593
+ pipe(this.putters, MutableQueue.offer([value, deferred, true as boolean] as const))
594
+ } else {
589
595
  pipe(this.putters, MutableQueue.offer([value, deferred, false as boolean] as const))
590
596
  }
591
597
  }
@@ -611,6 +617,9 @@ class DroppingStrategy<A> implements Queue.Strategy<A> {
611
617
  return core.unit
612
618
  }
613
619
 
620
+ onCompleteTakersWithEmptyQueue(): void {
621
+ }
622
+
614
623
  handleSurplus(
615
624
  _iterable: Iterable<A>,
616
625
  _queue: Queue.BackingQueue<A>,
@@ -640,6 +649,9 @@ class SlidingStrategy<A> implements Queue.Strategy<A> {
640
649
  return core.unit
641
650
  }
642
651
 
652
+ onCompleteTakersWithEmptyQueue(): void {
653
+ }
654
+
643
655
  handleSurplus(
644
656
  iterable: Iterable<A>,
645
657
  queue: Queue.BackingQueue<A>,
@@ -726,4 +738,7 @@ export const unsafeCompleteTakers = <A>(
726
738
  keepPolling = false
727
739
  }
728
740
  }
741
+ if (keepPolling && queue.length() === 0 && !MutableQueue.isEmpty(takers)) {
742
+ strategy.onCompleteTakersWithEmptyQueue(takers)
743
+ }
729
744
  }
@@ -3149,10 +3149,10 @@ export const groupAdjacentBy = dual<
3149
3149
  const input = Chunk.unsafeGet(chunk, until)
3150
3150
  const updatedKey = f(input)
3151
3151
  if (!Equal.equals(key, updatedKey)) {
3152
- builder.push([
3153
- key,
3154
- Chunk.unsafeFromArray(Array.from(tuple[1]).slice(from, until)) as Chunk.NonEmptyChunk<A>
3155
- ])
3152
+ const previousChunk = tuple[1]
3153
+ const additionalChunk = Chunk.unsafeFromArray(Array.from(chunk).slice(from, until))
3154
+ const group = Chunk.appendAllNonEmpty(previousChunk, additionalChunk)
3155
+ builder.push([key, group])
3156
3156
  key = updatedKey
3157
3157
  from = until
3158
3158
  loop = false
@@ -6843,10 +6843,11 @@ export const withSpan = dual<
6843
6843
  (
6844
6844
  name: string,
6845
6845
  options?: {
6846
- readonly attributes?: Record<string, Tracer.AttributeValue>
6846
+ readonly attributes?: Record<string, unknown>
6847
6847
  readonly links?: ReadonlyArray<Tracer.SpanLink>
6848
6848
  readonly parent?: Tracer.ParentSpan
6849
6849
  readonly root?: boolean
6850
+ readonly sampled?: boolean
6850
6851
  readonly context?: Context.Context<never>
6851
6852
  }
6852
6853
  ) => <R, E, A>(self: Stream.Stream<R, E, A>) => Stream.Stream<R, E, A>,
@@ -6854,14 +6855,15 @@ export const withSpan = dual<
6854
6855
  self: Stream.Stream<R, E, A>,
6855
6856
  name: string,
6856
6857
  options?: {
6857
- readonly attributes?: Record<string, Tracer.AttributeValue>
6858
+ readonly attributes?: Record<string, unknown>
6858
6859
  readonly links?: ReadonlyArray<Tracer.SpanLink>
6859
6860
  readonly parent?: Tracer.ParentSpan
6860
6861
  readonly root?: boolean
6862
+ readonly sampled?: boolean
6861
6863
  readonly context?: Context.Context<never>
6862
6864
  }
6863
6865
  ) => Stream.Stream<R, E, A>
6864
- >(3, (self, name, options) => unwrapScoped(Effect.as(Effect.withSpanScoped(name, options), self)))
6866
+ >(3, (self, name, options) => unwrapScoped(Effect.as(Effect.setSpan(name, options), self)))
6865
6867
 
6866
6868
  /** @internal */
6867
6869
  export const zip = dual<