effect 2.0.0-next.44 → 2.0.0-next.46

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 (779) hide show
  1. package/Bigint/dist/effect-Bigint.cjs.dev.js +125 -1
  2. package/Bigint/dist/effect-Bigint.cjs.mjs +6 -1
  3. package/Bigint/dist/effect-Bigint.cjs.prod.js +125 -1
  4. package/Bigint/dist/effect-Bigint.esm.js +111 -2
  5. package/Boolean/dist/effect-Boolean.cjs.dev.js +1 -1
  6. package/Boolean/dist/effect-Boolean.cjs.prod.js +1 -1
  7. package/Boolean/dist/effect-Boolean.esm.js +1 -1
  8. package/Brand/dist/effect-Brand.cjs.dev.js +3 -3
  9. package/Brand/dist/effect-Brand.cjs.prod.js +3 -3
  10. package/Cache/dist/effect-Cache.cjs.dev.js +32 -32
  11. package/Cache/dist/effect-Cache.cjs.prod.js +32 -32
  12. package/Cause/dist/effect-Cause.cjs.dev.js +17 -17
  13. package/Cause/dist/effect-Cause.cjs.mjs +1 -1
  14. package/Cause/dist/effect-Cause.cjs.prod.js +17 -17
  15. package/Cause/dist/effect-Cause.esm.js +4 -4
  16. package/Channel/dist/effect-Channel.cjs.dev.js +50 -50
  17. package/Channel/dist/effect-Channel.cjs.mjs +3 -3
  18. package/Channel/dist/effect-Channel.cjs.prod.js +50 -50
  19. package/Channel/dist/effect-Channel.esm.js +8 -8
  20. package/ChannelSingleProducerAsyncInput/dist/effect-ChannelSingleProducerAsyncInput.cjs.dev.js +36 -36
  21. package/ChannelSingleProducerAsyncInput/dist/effect-ChannelSingleProducerAsyncInput.cjs.prod.js +36 -36
  22. package/Chunk/dist/effect-Chunk.cjs.dev.js +3 -3
  23. package/Chunk/dist/effect-Chunk.cjs.prod.js +3 -3
  24. package/Clock/dist/effect-Clock.cjs.dev.js +16 -16
  25. package/Clock/dist/effect-Clock.cjs.prod.js +16 -16
  26. package/Config/dist/effect-Config.cjs.dev.js +11 -11
  27. package/Config/dist/effect-Config.cjs.prod.js +11 -11
  28. package/ConfigError/dist/effect-ConfigError.cjs.dev.js +4 -4
  29. package/ConfigError/dist/effect-ConfigError.cjs.prod.js +4 -4
  30. package/ConfigProvider/dist/effect-ConfigProvider.cjs.dev.js +17 -17
  31. package/ConfigProvider/dist/effect-ConfigProvider.cjs.prod.js +17 -17
  32. package/ConfigProviderPathPatch/dist/effect-ConfigProviderPathPatch.cjs.dev.js +5 -5
  33. package/ConfigProviderPathPatch/dist/effect-ConfigProviderPathPatch.cjs.prod.js +5 -5
  34. package/ConfigSecret/dist/effect-ConfigSecret.cjs.dev.js +4 -4
  35. package/ConfigSecret/dist/effect-ConfigSecret.cjs.prod.js +4 -4
  36. package/Console/dist/effect-Console.cjs.dev.js +35 -35
  37. package/Console/dist/effect-Console.cjs.prod.js +35 -35
  38. package/Context/dist/effect-Context.cjs.dev.js +3 -8
  39. package/Context/dist/effect-Context.cjs.prod.js +3 -8
  40. package/Data/dist/effect-Data.cjs.dev.js +141 -54
  41. package/Data/dist/effect-Data.cjs.mjs +2 -0
  42. package/Data/dist/effect-Data.cjs.prod.js +141 -54
  43. package/Data/dist/effect-Data.esm.js +51 -3
  44. package/DefaultServices/dist/effect-DefaultServices.cjs.dev.js +16 -16
  45. package/DefaultServices/dist/effect-DefaultServices.cjs.prod.js +16 -16
  46. package/Deferred/dist/effect-Deferred.cjs.dev.js +8 -8
  47. package/Deferred/dist/effect-Deferred.cjs.prod.js +8 -8
  48. package/Differ/dist/effect-Differ.cjs.dev.js +11 -11
  49. package/Differ/dist/effect-Differ.cjs.prod.js +11 -11
  50. package/Duration/dist/effect-Duration.cjs.dev.js +3 -3
  51. package/Duration/dist/effect-Duration.cjs.prod.js +3 -3
  52. package/Effect/dist/effect-Effect.cjs.dev.js +44 -44
  53. package/Effect/dist/effect-Effect.cjs.prod.js +44 -44
  54. package/Effectable/dist/effect-Effectable.cjs.dev.js +24 -14
  55. package/Effectable/dist/effect-Effectable.cjs.mjs +5 -4
  56. package/Effectable/dist/effect-Effectable.cjs.prod.js +24 -14
  57. package/Effectable/dist/effect-Effectable.esm.js +15 -5
  58. package/Either/dist/effect-Either.cjs.dev.js +3 -3
  59. package/Either/dist/effect-Either.cjs.prod.js +3 -3
  60. package/Encoding/dist/effect-Encoding.cjs.dev.js +3 -3
  61. package/Encoding/dist/effect-Encoding.cjs.prod.js +3 -3
  62. package/ExecutionStrategy/dist/effect-ExecutionStrategy.cjs.dev.js +2 -2
  63. package/ExecutionStrategy/dist/effect-ExecutionStrategy.cjs.prod.js +2 -2
  64. package/Exit/dist/effect-Exit.cjs.dev.js +8 -8
  65. package/Exit/dist/effect-Exit.cjs.prod.js +8 -8
  66. package/Fiber/dist/effect-Fiber.cjs.dev.js +29 -29
  67. package/Fiber/dist/effect-Fiber.cjs.prod.js +29 -29
  68. package/FiberId/dist/effect-FiberId.cjs.dev.js +5 -5
  69. package/FiberId/dist/effect-FiberId.cjs.prod.js +5 -5
  70. package/FiberRef/dist/effect-FiberRef.cjs.dev.js +29 -29
  71. package/FiberRef/dist/effect-FiberRef.cjs.prod.js +29 -29
  72. package/FiberRefs/dist/effect-FiberRefs.cjs.dev.js +9 -9
  73. package/FiberRefs/dist/effect-FiberRefs.cjs.prod.js +9 -9
  74. package/FiberRefsPatch/dist/effect-FiberRefsPatch.cjs.dev.js +10 -10
  75. package/FiberRefsPatch/dist/effect-FiberRefsPatch.cjs.prod.js +10 -10
  76. package/GroupBy/dist/effect-GroupBy.cjs.dev.js +42 -42
  77. package/GroupBy/dist/effect-GroupBy.cjs.prod.js +42 -42
  78. package/HashMap/dist/effect-HashMap.cjs.dev.js +20 -20
  79. package/HashMap/dist/effect-HashMap.cjs.prod.js +20 -20
  80. package/HashSet/dist/effect-HashSet.cjs.dev.js +20 -20
  81. package/HashSet/dist/effect-HashSet.cjs.prod.js +20 -20
  82. package/KeyedPool/dist/effect-KeyedPool.cjs.dev.js +33 -33
  83. package/KeyedPool/dist/effect-KeyedPool.cjs.prod.js +33 -33
  84. package/Layer/dist/effect-Layer.cjs.dev.js +32 -32
  85. package/Layer/dist/effect-Layer.cjs.prod.js +32 -32
  86. package/List/dist/effect-List.cjs.dev.js +3 -3
  87. package/List/dist/effect-List.cjs.prod.js +3 -3
  88. package/LogLevel/dist/effect-LogLevel.cjs.dev.js +8 -8
  89. package/LogLevel/dist/effect-LogLevel.cjs.prod.js +8 -8
  90. package/Logger/dist/effect-Logger.cjs.dev.js +33 -33
  91. package/Logger/dist/effect-Logger.cjs.prod.js +33 -33
  92. package/Metric/dist/effect-Metric.cjs.dev.js +27 -27
  93. package/Metric/dist/effect-Metric.cjs.prod.js +27 -27
  94. package/MetricBoundaries/dist/effect-MetricBoundaries.cjs.dev.js +4 -4
  95. package/MetricBoundaries/dist/effect-MetricBoundaries.cjs.prod.js +4 -4
  96. package/MetricHook/dist/effect-MetricHook.cjs.dev.js +6 -6
  97. package/MetricHook/dist/effect-MetricHook.cjs.prod.js +6 -6
  98. package/MetricKey/dist/effect-MetricKey.cjs.dev.js +6 -6
  99. package/MetricKey/dist/effect-MetricKey.cjs.prod.js +6 -6
  100. package/MetricKeyType/dist/effect-MetricKeyType.cjs.dev.js +4 -4
  101. package/MetricKeyType/dist/effect-MetricKeyType.cjs.prod.js +4 -4
  102. package/MetricPolling/dist/effect-MetricPolling.cjs.dev.js +30 -30
  103. package/MetricPolling/dist/effect-MetricPolling.cjs.prod.js +30 -30
  104. package/MetricRegistry/dist/effect-MetricRegistry.cjs.dev.js +8 -8
  105. package/MetricRegistry/dist/effect-MetricRegistry.cjs.prod.js +8 -8
  106. package/MetricState/dist/effect-MetricState.cjs.dev.js +1 -1
  107. package/MetricState/dist/effect-MetricState.cjs.prod.js +1 -1
  108. package/MutableHashMap/dist/effect-MutableHashMap.cjs.dev.js +4 -4
  109. package/MutableHashMap/dist/effect-MutableHashMap.cjs.prod.js +4 -4
  110. package/MutableHashSet/dist/effect-MutableHashSet.cjs.dev.js +4 -4
  111. package/MutableHashSet/dist/effect-MutableHashSet.cjs.prod.js +4 -4
  112. package/MutableQueue/dist/effect-MutableQueue.cjs.dev.js +3 -3
  113. package/MutableQueue/dist/effect-MutableQueue.cjs.prod.js +3 -3
  114. package/Number/dist/effect-Number.cjs.dev.js +1 -1
  115. package/Number/dist/effect-Number.cjs.prod.js +1 -1
  116. package/Number/dist/effect-Number.esm.js +1 -1
  117. package/Option/dist/effect-Option.cjs.dev.js +9 -9
  118. package/Option/dist/effect-Option.cjs.prod.js +9 -9
  119. package/Pool/dist/effect-Pool.cjs.dev.js +31 -31
  120. package/Pool/dist/effect-Pool.cjs.prod.js +31 -31
  121. package/PubSub/dist/effect-PubSub.cjs.d.mts +2 -0
  122. package/PubSub/dist/effect-PubSub.cjs.d.mts.map +1 -0
  123. package/PubSub/dist/effect-PubSub.cjs.d.ts +2 -0
  124. package/PubSub/dist/effect-PubSub.cjs.d.ts.map +1 -0
  125. package/{Hub/dist/effect-Hub.cjs.dev.js → PubSub/dist/effect-PubSub.cjs.dev.js} +163 -163
  126. package/PubSub/dist/effect-PubSub.cjs.js +7 -0
  127. package/{Hub/dist/effect-Hub.cjs.mjs → PubSub/dist/effect-PubSub.cjs.mjs} +1 -1
  128. package/{Hub/dist/effect-Hub.cjs.prod.js → PubSub/dist/effect-PubSub.cjs.prod.js} +163 -163
  129. package/{Hub/dist/effect-Hub.esm.js → PubSub/dist/effect-PubSub.esm.js} +15 -15
  130. package/PubSub/package.json +4 -0
  131. package/Queue/dist/effect-Queue.cjs.dev.js +28 -28
  132. package/Queue/dist/effect-Queue.cjs.prod.js +28 -28
  133. package/README.md +5 -5
  134. package/Random/dist/effect-Random.cjs.dev.js +16 -16
  135. package/Random/dist/effect-Random.cjs.prod.js +16 -16
  136. package/ReadonlyArray/dist/effect-ReadonlyArray.cjs.dev.js +3 -3
  137. package/ReadonlyArray/dist/effect-ReadonlyArray.cjs.prod.js +3 -3
  138. package/ReadonlyRecord/dist/effect-ReadonlyRecord.cjs.dev.js +3 -3
  139. package/ReadonlyRecord/dist/effect-ReadonlyRecord.cjs.prod.js +3 -3
  140. package/RedBlackTree/dist/effect-RedBlackTree.cjs.dev.js +4 -4
  141. package/RedBlackTree/dist/effect-RedBlackTree.cjs.prod.js +4 -4
  142. package/Ref/dist/effect-Ref.cjs.dev.js +9 -9
  143. package/Ref/dist/effect-Ref.cjs.prod.js +9 -9
  144. package/Reloadable/dist/effect-Reloadable.cjs.dev.js +44 -44
  145. package/Reloadable/dist/effect-Reloadable.cjs.prod.js +44 -44
  146. package/Request/dist/effect-Request.cjs.dev.js +29 -29
  147. package/Request/dist/effect-Request.cjs.prod.js +29 -29
  148. package/RequestBlock/dist/effect-RequestBlock.cjs.dev.js +36 -36
  149. package/RequestBlock/dist/effect-RequestBlock.cjs.prod.js +36 -36
  150. package/RequestResolver/dist/effect-RequestResolver.cjs.dev.js +38 -38
  151. package/RequestResolver/dist/effect-RequestResolver.cjs.prod.js +38 -38
  152. package/Resource/dist/effect-Resource.cjs.dev.js +34 -34
  153. package/Resource/dist/effect-Resource.cjs.prod.js +34 -34
  154. package/Runtime/dist/effect-Runtime.cjs.dev.js +34 -34
  155. package/Runtime/dist/effect-Runtime.cjs.prod.js +34 -34
  156. package/RuntimeFlags/dist/effect-RuntimeFlags.cjs.dev.js +33 -33
  157. package/RuntimeFlags/dist/effect-RuntimeFlags.cjs.prod.js +33 -33
  158. package/RuntimeFlagsPatch/dist/effect-RuntimeFlagsPatch.cjs.dev.js +6 -6
  159. package/RuntimeFlagsPatch/dist/effect-RuntimeFlagsPatch.cjs.prod.js +6 -6
  160. package/STM/dist/effect-STM.cjs.dev.js +48 -48
  161. package/STM/dist/effect-STM.cjs.prod.js +48 -48
  162. package/Schedule/dist/effect-Schedule.cjs.dev.js +19 -19
  163. package/Schedule/dist/effect-Schedule.cjs.prod.js +19 -19
  164. package/ScheduleDecision/dist/effect-ScheduleDecision.cjs.dev.js +3 -3
  165. package/ScheduleDecision/dist/effect-ScheduleDecision.cjs.prod.js +3 -3
  166. package/ScheduleInterval/dist/effect-ScheduleInterval.cjs.dev.js +3 -3
  167. package/ScheduleInterval/dist/effect-ScheduleInterval.cjs.prod.js +3 -3
  168. package/ScheduleIntervals/dist/effect-ScheduleIntervals.cjs.dev.js +3 -3
  169. package/ScheduleIntervals/dist/effect-ScheduleIntervals.cjs.prod.js +3 -3
  170. package/Scheduler/dist/effect-Scheduler.cjs.dev.js +8 -8
  171. package/Scheduler/dist/effect-Scheduler.cjs.prod.js +8 -8
  172. package/Scope/dist/effect-Scope.cjs.dev.js +27 -27
  173. package/Scope/dist/effect-Scope.cjs.prod.js +27 -27
  174. package/ScopedCache/dist/effect-ScopedCache.cjs.dev.js +78 -61
  175. package/ScopedCache/dist/effect-ScopedCache.cjs.prod.js +78 -61
  176. package/ScopedRef/dist/effect-ScopedRef.cjs.dev.js +34 -34
  177. package/ScopedRef/dist/effect-ScopedRef.cjs.prod.js +34 -34
  178. package/Sink/dist/effect-Sink.cjs.dev.js +43 -43
  179. package/Sink/dist/effect-Sink.cjs.mjs +1 -1
  180. package/Sink/dist/effect-Sink.cjs.prod.js +43 -43
  181. package/Sink/dist/effect-Sink.esm.js +5 -5
  182. package/SortedMap/dist/effect-SortedMap.cjs.dev.js +3 -3
  183. package/SortedMap/dist/effect-SortedMap.cjs.prod.js +3 -3
  184. package/SortedSet/dist/effect-SortedSet.cjs.dev.js +3 -3
  185. package/SortedSet/dist/effect-SortedSet.cjs.prod.js +3 -3
  186. package/Stream/dist/effect-Stream.cjs.dev.js +60 -60
  187. package/Stream/dist/effect-Stream.cjs.mjs +5 -5
  188. package/Stream/dist/effect-Stream.cjs.prod.js +60 -60
  189. package/Stream/dist/effect-Stream.esm.js +15 -15
  190. package/Streamable/dist/effect-Streamable.cjs.d.mts +2 -0
  191. package/Streamable/dist/effect-Streamable.cjs.d.mts.map +1 -0
  192. package/Streamable/dist/effect-Streamable.cjs.d.ts +2 -0
  193. package/Streamable/dist/effect-Streamable.cjs.d.ts.map +1 -0
  194. package/Streamable/dist/effect-Streamable.cjs.dev.js +152 -0
  195. package/Streamable/dist/effect-Streamable.cjs.js +7 -0
  196. package/Streamable/dist/effect-Streamable.cjs.mjs +3 -0
  197. package/Streamable/dist/effect-Streamable.cjs.prod.js +152 -0
  198. package/Streamable/dist/effect-Streamable.esm.js +42 -0
  199. package/Streamable/package.json +4 -0
  200. package/String/dist/effect-String.cjs.dev.js +4 -4
  201. package/String/dist/effect-String.cjs.prod.js +4 -4
  202. package/String/dist/effect-String.esm.js +1 -1
  203. package/SubscriptionRef/dist/effect-SubscriptionRef.cjs.dev.js +48 -48
  204. package/SubscriptionRef/dist/effect-SubscriptionRef.cjs.prod.js +48 -48
  205. package/Supervisor/dist/effect-Supervisor.cjs.dev.js +34 -34
  206. package/Supervisor/dist/effect-Supervisor.cjs.prod.js +34 -34
  207. package/SynchronizedRef/dist/effect-SynchronizedRef.cjs.dev.js +30 -30
  208. package/SynchronizedRef/dist/effect-SynchronizedRef.cjs.prod.js +30 -30
  209. package/TArray/dist/effect-TArray.cjs.dev.js +46 -46
  210. package/TArray/dist/effect-TArray.cjs.prod.js +46 -46
  211. package/TDeferred/dist/effect-TDeferred.cjs.dev.js +45 -45
  212. package/TDeferred/dist/effect-TDeferred.cjs.prod.js +45 -45
  213. package/TMap/dist/effect-TMap.cjs.dev.js +47 -47
  214. package/TMap/dist/effect-TMap.cjs.prod.js +47 -47
  215. package/TPriorityQueue/dist/effect-TPriorityQueue.cjs.dev.js +44 -44
  216. package/TPriorityQueue/dist/effect-TPriorityQueue.cjs.prod.js +44 -44
  217. package/TPubSub/dist/effect-TPubSub.cjs.d.mts +2 -0
  218. package/TPubSub/dist/effect-TPubSub.cjs.d.mts.map +1 -0
  219. package/TPubSub/dist/effect-TPubSub.cjs.d.ts +2 -0
  220. package/TPubSub/dist/effect-TPubSub.cjs.d.ts.map +1 -0
  221. package/{THub/dist/effect-THub.cjs.dev.js → TPubSub/dist/effect-TPubSub.cjs.dev.js} +101 -101
  222. package/TPubSub/dist/effect-TPubSub.cjs.js +7 -0
  223. package/{THub/dist/effect-THub.cjs.mjs → TPubSub/dist/effect-TPubSub.cjs.mjs} +2 -2
  224. package/{THub/dist/effect-THub.cjs.prod.js → TPubSub/dist/effect-TPubSub.cjs.prod.js} +101 -101
  225. package/TPubSub/dist/effect-TPubSub.esm.js +157 -0
  226. package/TPubSub/package.json +4 -0
  227. package/TQueue/dist/effect-TQueue.cjs.dev.js +46 -46
  228. package/TQueue/dist/effect-TQueue.cjs.prod.js +46 -46
  229. package/TRandom/dist/effect-TRandom.cjs.dev.js +50 -50
  230. package/TRandom/dist/effect-TRandom.cjs.prod.js +50 -50
  231. package/TReentrantLock/dist/effect-TReentrantLock.cjs.dev.js +46 -46
  232. package/TReentrantLock/dist/effect-TReentrantLock.cjs.prod.js +46 -46
  233. package/TRef/dist/effect-TRef.cjs.dev.js +44 -44
  234. package/TRef/dist/effect-TRef.cjs.prod.js +44 -44
  235. package/TSemaphore/dist/effect-TSemaphore.cjs.dev.js +45 -45
  236. package/TSemaphore/dist/effect-TSemaphore.cjs.prod.js +45 -45
  237. package/TSet/dist/effect-TSet.cjs.dev.js +47 -47
  238. package/TSet/dist/effect-TSet.cjs.prod.js +47 -47
  239. package/Take/dist/effect-Take.cjs.dev.js +36 -36
  240. package/Take/dist/effect-Take.cjs.prod.js +36 -36
  241. package/TestAnnotation/dist/effect-TestAnnotation.cjs.dev.js +8 -8
  242. package/TestAnnotation/dist/effect-TestAnnotation.cjs.prod.js +8 -8
  243. package/TestAnnotations/dist/effect-TestAnnotations.cjs.dev.js +25 -25
  244. package/TestAnnotations/dist/effect-TestAnnotations.cjs.prod.js +25 -25
  245. package/TestClock/dist/effect-TestClock.cjs.dev.js +46 -46
  246. package/TestClock/dist/effect-TestClock.cjs.prod.js +46 -46
  247. package/TestConfig/dist/effect-TestConfig.cjs.dev.js +3 -8
  248. package/TestConfig/dist/effect-TestConfig.cjs.prod.js +3 -8
  249. package/TestContext/dist/effect-TestContext.cjs.dev.js +37 -37
  250. package/TestContext/dist/effect-TestContext.cjs.prod.js +37 -37
  251. package/TestLive/dist/effect-TestLive.cjs.dev.js +17 -17
  252. package/TestLive/dist/effect-TestLive.cjs.prod.js +17 -17
  253. package/TestServices/dist/effect-TestServices.cjs.dev.js +42 -42
  254. package/TestServices/dist/effect-TestServices.cjs.prod.js +42 -42
  255. package/TestSized/dist/effect-TestSized.cjs.dev.js +11 -11
  256. package/TestSized/dist/effect-TestSized.cjs.prod.js +11 -11
  257. package/Tracer/dist/effect-Tracer.cjs.dev.js +16 -16
  258. package/Tracer/dist/effect-Tracer.cjs.prod.js +16 -16
  259. package/dist/{Context-01a123ac.cjs.prod.js → Context-9fe5eb16.cjs.prod.js} +5 -5
  260. package/dist/{Context-593661f6.cjs.dev.js → Context-da73ddfa.cjs.dev.js} +5 -5
  261. package/dist/{Effectable-2f022879.cjs.dev.js → Effectable-7314aed8.cjs.dev.js} +63 -10
  262. package/dist/{Effectable-cd8f3a96.cjs.prod.js → Effectable-c4c14a2b.cjs.prod.js} +63 -10
  263. package/dist/{Either-7a881c7a.cjs.prod.js → Either-d43f082c.cjs.prod.js} +6 -79
  264. package/dist/{Either-12bbe00c.cjs.dev.js → Either-fa0ef1d9.cjs.dev.js} +6 -79
  265. package/dist/{ExecutionStrategy-14d3053a.cjs.prod.js → ExecutionStrategy-4808fe5d.cjs.prod.js} +2 -2
  266. package/dist/{ExecutionStrategy-70f1a920.cjs.dev.js → ExecutionStrategy-7d9d457b.cjs.dev.js} +2 -2
  267. package/dist/{HashSet-0b4ff1e4.cjs.dev.js → HashSet-5963ad6b.cjs.dev.js} +32 -32
  268. package/dist/{HashSet-6257b66d.cjs.prod.js → HashSet-ac02a3e1.cjs.prod.js} +32 -32
  269. package/dist/Option-463b42e6.cjs.dev.js +81 -0
  270. package/dist/Option-935e5d7c.cjs.prod.js +81 -0
  271. package/dist/{Ref-a3a4e50d.cjs.prod.js → Ref-4014b526.cjs.prod.js} +1 -1
  272. package/dist/{Ref-74b592a4.cjs.dev.js → Ref-acdee7ef.cjs.dev.js} +1 -1
  273. package/dist/{cache-75fbef45.cjs.prod.js → cache-5c7d77e4.cjs.prod.js} +17 -17
  274. package/dist/{cache-e1ea3923.cjs.dev.js → cache-7eed9d33.cjs.dev.js} +17 -17
  275. package/dist/{circular-6f16b226.cjs.prod.js → circular-1f481ffb.cjs.prod.js} +33 -33
  276. package/dist/{circular-f406f9a4.cjs.prod.js → circular-9e10a5a7.cjs.prod.js} +6 -6
  277. package/dist/{circular-58ff5e9c.cjs.dev.js → circular-c2dbce1a.cjs.dev.js} +33 -33
  278. package/dist/{circular-30564534.cjs.dev.js → circular-c8b65bdb.cjs.dev.js} +6 -6
  279. package/dist/{config-80900693.cjs.dev.js → config-3b7935a3.cjs.dev.js} +3 -3
  280. package/dist/{config-d0ddc159.cjs.prod.js → config-5ba54da1.cjs.prod.js} +3 -3
  281. package/dist/{configProvider-93617d6d.cjs.prod.js → configProvider-b6b20998.cjs.prod.js} +29 -29
  282. package/dist/{configProvider-ce43fdbf.cjs.dev.js → configProvider-f34a82f1.cjs.dev.js} +29 -29
  283. package/dist/{core-0b0539de.cjs.prod.js → core-07202cc0.cjs.prod.js} +711 -726
  284. package/dist/{core-60ca562a.cjs.prod.js → core-7411d1e1.cjs.prod.js} +3 -3
  285. package/dist/{core-b4d7b4f5.cjs.dev.js → core-b7401357.cjs.dev.js} +711 -726
  286. package/dist/{core-13f8a866.cjs.dev.js → core-c5747f88.cjs.dev.js} +3 -3
  287. package/dist/{core-effect-892f3686.cjs.dev.js → core-effect-1c564d42.cjs.dev.js} +77 -75
  288. package/dist/{core-effect-c65770cd.cjs.prod.js → core-effect-9201ea63.cjs.prod.js} +77 -75
  289. package/dist/{dataSource-3ba9e4d3.cjs.dev.js → dataSource-b5eda714.cjs.dev.js} +2 -2
  290. package/dist/{dataSource-7df3a5f6.cjs.prod.js → dataSource-b83bc277.cjs.prod.js} +2 -2
  291. package/dist/declarations/src/Bigint.d.ts +92 -1
  292. package/dist/declarations/src/Bigint.d.ts.map +1 -1
  293. package/dist/declarations/src/Boolean.d.ts +1 -1
  294. package/dist/declarations/src/Cause.d.ts +6 -6
  295. package/dist/declarations/src/Cause.d.ts.map +1 -1
  296. package/dist/declarations/src/Channel.d.ts +7 -7
  297. package/dist/declarations/src/Channel.d.ts.map +1 -1
  298. package/dist/declarations/src/Data.d.ts +30 -0
  299. package/dist/declarations/src/Data.d.ts.map +1 -1
  300. package/dist/declarations/src/Effect.d.ts +4 -2
  301. package/dist/declarations/src/Effect.d.ts.map +1 -1
  302. package/dist/declarations/src/Effectable.d.ts +14 -4
  303. package/dist/declarations/src/Effectable.d.ts.map +1 -1
  304. package/dist/declarations/src/Metric.d.ts +31 -7
  305. package/dist/declarations/src/Metric.d.ts.map +1 -1
  306. package/dist/declarations/src/MetricHook.d.ts +7 -4
  307. package/dist/declarations/src/MetricHook.d.ts.map +1 -1
  308. package/dist/declarations/src/MetricKey.d.ts +24 -4
  309. package/dist/declarations/src/MetricKey.d.ts.map +1 -1
  310. package/dist/declarations/src/MetricKeyType.d.ts +9 -6
  311. package/dist/declarations/src/MetricKeyType.d.ts.map +1 -1
  312. package/dist/declarations/src/MetricRegistry.d.ts +2 -2
  313. package/dist/declarations/src/MetricRegistry.d.ts.map +1 -1
  314. package/dist/declarations/src/MetricState.d.ts +15 -9
  315. package/dist/declarations/src/MetricState.d.ts.map +1 -1
  316. package/dist/declarations/src/Number.d.ts +1 -1
  317. package/dist/declarations/src/{Hub.d.ts → PubSub.d.ts} +38 -38
  318. package/dist/declarations/src/PubSub.d.ts.map +1 -0
  319. package/dist/declarations/src/Sink.d.ts +4 -4
  320. package/dist/declarations/src/Sink.d.ts.map +1 -1
  321. package/dist/declarations/src/Stream.d.ts +24 -24
  322. package/dist/declarations/src/Stream.d.ts.map +1 -1
  323. package/dist/declarations/src/Streamable.d.ts +27 -0
  324. package/dist/declarations/src/Streamable.d.ts.map +1 -0
  325. package/dist/declarations/src/String.d.ts +1 -1
  326. package/dist/declarations/src/SubscriptionRef.d.ts.map +1 -1
  327. package/dist/declarations/src/TPubSub.d.ts +146 -0
  328. package/dist/declarations/src/TPubSub.d.ts.map +1 -0
  329. package/dist/declarations/src/index.d.ts +15 -15
  330. package/dist/declarations/src/index.d.ts.map +1 -1
  331. package/dist/{defaultServices-5530ff0e.cjs.dev.js → defaultServices-755d5b46.cjs.dev.js} +6 -6
  332. package/dist/{defaultServices-086b8ac9.cjs.prod.js → defaultServices-9d7ce86f.cjs.prod.js} +6 -6
  333. package/dist/effect.cjs.dev.js +9 -9
  334. package/dist/effect.cjs.mjs +3 -3
  335. package/dist/effect.cjs.prod.js +9 -9
  336. package/dist/effect.esm.js +6 -6
  337. package/dist/{fiber-1bfb4c1d.cjs.dev.js → fiber-5156eff2.cjs.dev.js} +12 -12
  338. package/dist/{fiber-2eb0a4c1.cjs.prod.js → fiber-9519d109.cjs.prod.js} +12 -12
  339. package/dist/{fiberRefs-be6b6a70.cjs.prod.js → fiberRefs-558c17e6.cjs.prod.js} +1 -1
  340. package/dist/{fiberRefs-be4fae6a.cjs.dev.js → fiberRefs-98b71233.cjs.dev.js} +1 -1
  341. package/dist/{fiberRuntime-2d31e120.cjs.prod.js → fiberRuntime-31ae011f.cjs.prod.js} +99 -100
  342. package/dist/{fiberRuntime-c7280769.cjs.dev.js → fiberRuntime-d3872282.cjs.dev.js} +99 -100
  343. package/dist/{groupBy-0702739b.cjs.prod.js → groupBy-724f64ef.cjs.prod.js} +4 -4
  344. package/dist/{groupBy-7f852bf3.cjs.dev.js → groupBy-862cc2da.cjs.dev.js} +4 -4
  345. package/dist/{hook-e72b20fd.cjs.dev.js → hook-8cefc909.cjs.dev.js} +8 -4
  346. package/dist/{hook-470b717e.cjs.prod.js → hook-98ce30e4.cjs.prod.js} +8 -4
  347. package/dist/{key-f0a1408a.cjs.dev.js → key-198b6670.cjs.dev.js} +3 -3
  348. package/dist/{key-378a6a2c.cjs.prod.js → key-eb8a12b2.cjs.prod.js} +3 -3
  349. package/dist/{keyType-cf67c69c.cjs.prod.js → keyType-0c5e6178.cjs.prod.js} +9 -2
  350. package/dist/{keyType-55f27f07.cjs.dev.js → keyType-7c164b82.cjs.dev.js} +9 -2
  351. package/dist/{layer-b42e8022.cjs.dev.js → layer-29574350.cjs.dev.js} +33 -33
  352. package/dist/{layer-d103b49b.cjs.prod.js → layer-51ff4846.cjs.prod.js} +33 -33
  353. package/dist/{patch-a1b2802f.cjs.dev.js → patch-0220a642.cjs.dev.js} +1 -1
  354. package/dist/{patch-c4d6c61e.cjs.prod.js → patch-7c559bb2.cjs.prod.js} +1 -1
  355. package/dist/{pathPatch-15c8d723.cjs.prod.js → pathPatch-b56a4da2.cjs.prod.js} +1 -1
  356. package/dist/{pathPatch-d9d41297.cjs.dev.js → pathPatch-fab016f1.cjs.dev.js} +1 -1
  357. package/dist/{pool-ef44ba82.cjs.dev.js → pool-3211287f.cjs.dev.js} +31 -31
  358. package/dist/{pool-e414eb88.cjs.prod.js → pool-f77d7705.cjs.prod.js} +31 -31
  359. package/dist/{query-1d0157db.cjs.prod.js → query-a52b25f0.cjs.prod.js} +11 -11
  360. package/dist/{query-54337864.cjs.dev.js → query-c36decd5.cjs.dev.js} +11 -11
  361. package/dist/{queue-27ac9d98.cjs.prod.js → queue-315ea45d.cjs.prod.js} +22 -22
  362. package/dist/{queue-533d70d4.cjs.dev.js → queue-7a223c44.cjs.dev.js} +22 -22
  363. package/dist/{registry-1099de3f.cjs.dev.js → registry-62ff192e.cjs.dev.js} +4 -4
  364. package/dist/{registry-013ecdde.cjs.prod.js → registry-d5258dff.cjs.prod.js} +4 -4
  365. package/dist/{runtime-ea174155.cjs.prod.js → runtime-005f8a9b.cjs.prod.js} +7 -7
  366. package/dist/{runtime-afad6a9b.cjs.dev.js → runtime-57c8ddf8.cjs.dev.js} +7 -7
  367. package/dist/{schedule-1d92198c.cjs.prod.js → schedule-8cdf6bf1.cjs.prod.js} +40 -40
  368. package/dist/{schedule-e0f55cab.cjs.dev.js → schedule-e7a9f93f.cjs.dev.js} +40 -40
  369. package/dist/scopedRef-789d7fef.cjs.prod.js +55 -0
  370. package/dist/scopedRef-eb19c7a6.cjs.dev.js +55 -0
  371. package/dist/{singleProducerAsyncInput-4105a342.cjs.dev.js → singleProducerAsyncInput-9ff8389b.cjs.dev.js} +1 -1
  372. package/dist/{singleProducerAsyncInput-21463e16.cjs.prod.js → singleProducerAsyncInput-f9b258b1.cjs.prod.js} +1 -1
  373. package/dist/{sink-9129504b.cjs.prod.js → sink-572d8981.cjs.prod.js} +17 -17
  374. package/dist/{sink-ee393b63.cjs.dev.js → sink-8d3427e7.cjs.dev.js} +17 -17
  375. package/dist/{state-dd1bd066.cjs.prod.js → state-0bdf02b7.cjs.prod.js} +2 -6
  376. package/dist/{state-8fbec044.cjs.dev.js → state-931050c4.cjs.dev.js} +2 -6
  377. package/dist/{stm-537da66b.cjs.dev.js → stm-8aca0022.cjs.dev.js} +3 -3
  378. package/dist/{stm-5043c3cb.cjs.prod.js → stm-f250b596.cjs.prod.js} +3 -3
  379. package/dist/{stream-c7eda5bc.cjs.dev.js → stream-34d80d2c.cjs.dev.js} +31 -28
  380. package/dist/{stream-13637643.cjs.prod.js → stream-ea4f4d44.cjs.prod.js} +31 -28
  381. package/dist/{synchronizedRef-37e32854.cjs.dev.js → synchronizedRef-a12fd967.cjs.dev.js} +6 -6
  382. package/dist/{synchronizedRef-b4cde4de.cjs.prod.js → synchronizedRef-ed8aa6ac.cjs.prod.js} +6 -6
  383. package/dist/{tArray-df1bae1c.cjs.dev.js → tArray-17f078f2.cjs.dev.js} +3 -3
  384. package/dist/{tArray-d5476a2d.cjs.prod.js → tArray-d184e22f.cjs.prod.js} +3 -3
  385. package/dist/{tMap-a3e14c05.cjs.dev.js → tMap-1a5aa78b.cjs.dev.js} +4 -4
  386. package/dist/{tMap-20ef43ea.cjs.prod.js → tMap-e219f30e.cjs.prod.js} +4 -4
  387. package/dist/{tQueue-bd3cf539.cjs.dev.js → tQueue-0a4fc773.cjs.dev.js} +3 -3
  388. package/dist/{tQueue-c02c22bd.cjs.prod.js → tQueue-47129ad0.cjs.prod.js} +3 -3
  389. package/dist/{tRef-49e44dde.cjs.prod.js → tRef-ab4c5713.cjs.prod.js} +1 -1
  390. package/dist/{tRef-75dd04b3.cjs.dev.js → tRef-b860ef05.cjs.dev.js} +1 -1
  391. package/internal/Context.esm.js +4 -4
  392. package/internal/Data.esm.js +4 -1
  393. package/internal/Differ/ChunkPatch.esm.js +1 -1
  394. package/internal/Differ/ContextPatch.esm.js +1 -1
  395. package/internal/Differ/HashMapPatch.esm.js +1 -1
  396. package/internal/Differ/HashSetPatch.esm.js +1 -1
  397. package/internal/Differ/OrPatch.esm.js +1 -1
  398. package/internal/Effectable.esm.js +9 -9
  399. package/internal/Either.esm.js +3 -3
  400. package/internal/Option.esm.js +3 -3
  401. package/internal/cache.esm.js +1 -1
  402. package/internal/cause.esm.js +6 -21
  403. package/internal/channel.esm.js +5 -5
  404. package/internal/core-effect.esm.js +6 -4
  405. package/internal/fiberRuntime.esm.js +3 -3
  406. package/internal/layer.esm.js +1 -1
  407. package/internal/metric/hook.esm.js +7 -3
  408. package/internal/metric/key.esm.js +2 -2
  409. package/internal/metric/keyType.esm.js +9 -2
  410. package/internal/metric/registry.esm.js +2 -2
  411. package/internal/metric/state.esm.js +2 -6
  412. package/internal/metric.esm.js +3 -3
  413. package/internal/{hub.esm.js → pubsub.esm.js} +108 -108
  414. package/internal/request.esm.js +1 -1
  415. package/internal/sink.esm.js +8 -8
  416. package/internal/stm/{tHub.esm.js → tPubSub.esm.js} +30 -30
  417. package/internal/stream.esm.js +23 -20
  418. package/internal/subscriptionRef.esm.js +8 -8
  419. package/package.json +66 -211
  420. package/src/.index.ts +30 -0
  421. package/src/Bigint.ts +497 -0
  422. package/src/Boolean.ts +261 -0
  423. package/src/Brand.ts +336 -0
  424. package/src/Cache.ts +250 -0
  425. package/src/Cause.ts +813 -0
  426. package/src/Channel.ts +2244 -0
  427. package/src/ChannelChildExecutorDecision.ts +138 -0
  428. package/src/ChannelMergeDecision.ts +94 -0
  429. package/src/ChannelMergeState.ts +166 -0
  430. package/src/ChannelMergeStrategy.ts +107 -0
  431. package/src/ChannelSingleProducerAsyncInput.ts +68 -0
  432. package/src/ChannelUpstreamPullRequest.ts +110 -0
  433. package/src/ChannelUpstreamPullStrategy.ts +120 -0
  434. package/src/Chunk.ts +1314 -0
  435. package/src/Clock.ts +111 -0
  436. package/src/Config.ts +447 -0
  437. package/src/ConfigError.ts +267 -0
  438. package/src/ConfigProvider.ts +296 -0
  439. package/src/ConfigProviderPathPatch.ts +100 -0
  440. package/src/ConfigSecret.ts +76 -0
  441. package/src/Console.ts +222 -0
  442. package/src/Context.ts +365 -0
  443. package/src/Data.ts +367 -0
  444. package/src/DefaultServices.ts +34 -0
  445. package/src/Deferred.ts +283 -0
  446. package/src/Differ.ts +406 -0
  447. package/src/Duration.ts +558 -0
  448. package/src/Effect.ts +5177 -0
  449. package/src/Effectable.ts +107 -0
  450. package/src/Either.ts +593 -0
  451. package/src/Encoding.ts +130 -0
  452. package/src/Equal.ts +64 -0
  453. package/src/Equivalence.ts +235 -0
  454. package/src/ExecutionStrategy.ts +111 -0
  455. package/src/Exit.ts +464 -0
  456. package/src/Fiber.ts +650 -0
  457. package/src/FiberId.ts +187 -0
  458. package/src/FiberRef.ts +399 -0
  459. package/src/FiberRefs.ts +160 -0
  460. package/src/FiberRefsPatch.ts +105 -0
  461. package/src/FiberStatus.ts +108 -0
  462. package/src/Function.ts +834 -0
  463. package/src/GlobalValue.ts +20 -0
  464. package/src/GroupBy.ts +102 -0
  465. package/src/HKT.ts +44 -0
  466. package/src/Hash.ts +162 -0
  467. package/src/HashMap.ts +373 -0
  468. package/src/HashSet.ts +300 -0
  469. package/src/Inspectable.ts +45 -0
  470. package/src/KeyedPool.ts +160 -0
  471. package/src/Layer.ts +866 -0
  472. package/src/List.ts +942 -0
  473. package/src/LogLevel.ts +266 -0
  474. package/src/LogSpan.ts +25 -0
  475. package/src/Logger.ts +321 -0
  476. package/src/Metric.ts +657 -0
  477. package/src/MetricBoundaries.ts +70 -0
  478. package/src/MetricHook.ts +139 -0
  479. package/src/MetricKey.ts +227 -0
  480. package/src/MetricKeyType.ts +257 -0
  481. package/src/MetricLabel.ts +47 -0
  482. package/src/MetricPair.ts +70 -0
  483. package/src/MetricPolling.ts +136 -0
  484. package/src/MetricRegistry.ts +47 -0
  485. package/src/MetricState.ts +256 -0
  486. package/src/MutableHashMap.ts +187 -0
  487. package/src/MutableHashSet.ts +118 -0
  488. package/src/MutableList.ts +289 -0
  489. package/src/MutableQueue.ts +227 -0
  490. package/src/MutableRef.ts +204 -0
  491. package/src/NonEmptyIterable.ts +30 -0
  492. package/src/Number.ts +406 -0
  493. package/src/Option.ts +1307 -0
  494. package/src/Order.ts +328 -0
  495. package/src/Ordering.ts +112 -0
  496. package/src/Pipeable.ts +318 -0
  497. package/src/Pool.ts +148 -0
  498. package/src/Predicate.ts +704 -0
  499. package/src/PubSub.ts +175 -0
  500. package/src/Queue.ts +575 -0
  501. package/src/Random.ts +115 -0
  502. package/src/ReadonlyArray.ts +2017 -0
  503. package/src/ReadonlyRecord.ts +641 -0
  504. package/src/RedBlackTree.ts +415 -0
  505. package/src/Ref.ts +159 -0
  506. package/src/Reloadable.ts +136 -0
  507. package/src/Request.ts +285 -0
  508. package/src/RequestBlock.ts +157 -0
  509. package/src/RequestResolver.ts +305 -0
  510. package/src/Resource.ts +97 -0
  511. package/src/Runtime.ts +216 -0
  512. package/src/RuntimeFlags.ts +336 -0
  513. package/src/RuntimeFlagsPatch.ts +183 -0
  514. package/src/STM.ts +2076 -0
  515. package/src/Schedule.ts +1396 -0
  516. package/src/ScheduleDecision.ts +62 -0
  517. package/src/ScheduleInterval.ts +151 -0
  518. package/src/ScheduleIntervals.ts +122 -0
  519. package/src/Scheduler.ts +359 -0
  520. package/src/Scope.ts +171 -0
  521. package/src/ScopedCache.ts +148 -0
  522. package/src/ScopedRef.ts +95 -0
  523. package/src/Sink.ts +1431 -0
  524. package/src/SortedMap.ts +229 -0
  525. package/src/SortedSet.ts +385 -0
  526. package/src/Stream.ts +4540 -0
  527. package/src/StreamEmit.ts +83 -0
  528. package/src/StreamHaltStrategy.ts +111 -0
  529. package/src/Streamable.ts +42 -0
  530. package/src/String.ts +682 -0
  531. package/src/Struct.ts +151 -0
  532. package/src/SubscriptionRef.ts +273 -0
  533. package/src/Supervisor.ts +239 -0
  534. package/src/Symbol.ts +28 -0
  535. package/src/SynchronizedRef.ts +249 -0
  536. package/src/TArray.ts +494 -0
  537. package/src/TDeferred.ts +99 -0
  538. package/src/TMap.ts +510 -0
  539. package/src/TPriorityQueue.ts +223 -0
  540. package/src/TPubSub.ts +187 -0
  541. package/src/TQueue.ts +431 -0
  542. package/src/TRandom.ts +129 -0
  543. package/src/TReentrantLock.ts +224 -0
  544. package/src/TRef.ts +176 -0
  545. package/src/TSemaphore.ts +129 -0
  546. package/src/TSet.ts +349 -0
  547. package/src/Take.ts +257 -0
  548. package/src/TestAnnotation.ts +166 -0
  549. package/src/TestAnnotationMap.ts +124 -0
  550. package/src/TestAnnotations.ts +113 -0
  551. package/src/TestClock.ts +552 -0
  552. package/src/TestConfig.ts +49 -0
  553. package/src/TestContext.ts +35 -0
  554. package/src/TestLive.ts +55 -0
  555. package/src/TestServices.ts +392 -0
  556. package/src/TestSized.ts +55 -0
  557. package/src/Tracer.ts +119 -0
  558. package/src/Tuple.ts +204 -0
  559. package/src/Types.ts +123 -0
  560. package/src/Unify.ts +118 -0
  561. package/src/Utils.ts +699 -0
  562. package/src/index.ts +840 -0
  563. package/src/internal/Common.ts +56 -0
  564. package/src/internal/Context.ts +252 -0
  565. package/src/internal/Data.ts +55 -0
  566. package/src/internal/Differ/ChunkPatch.ts +209 -0
  567. package/src/internal/Differ/ContextPatch.ts +229 -0
  568. package/src/internal/Differ/HashMapPatch.ts +217 -0
  569. package/src/internal/Differ/HashSetPatch.ts +174 -0
  570. package/src/internal/Differ/OrPatch.ts +296 -0
  571. package/src/internal/Differ.ts +184 -0
  572. package/src/internal/Effectable.ts +92 -0
  573. package/src/internal/Either.ts +107 -0
  574. package/src/internal/Encoding/Base64.ts +282 -0
  575. package/src/internal/Encoding/Base64Url.ts +28 -0
  576. package/src/internal/Encoding/Common.ts +24 -0
  577. package/src/internal/Encoding/Hex.ts +315 -0
  578. package/src/internal/HashMap/array.ts +49 -0
  579. package/src/internal/HashMap/bitwise.ts +32 -0
  580. package/src/internal/HashMap/config.ts +14 -0
  581. package/src/internal/HashMap/keySet.ts +8 -0
  582. package/src/internal/HashMap/node.ts +390 -0
  583. package/src/internal/HashMap.ts +533 -0
  584. package/src/internal/HashSet.ts +319 -0
  585. package/src/internal/Iterable.ts +54 -0
  586. package/src/internal/Option.ts +79 -0
  587. package/src/internal/ReadonlyArray.ts +8 -0
  588. package/src/internal/RedBlackTree/iterator.ts +207 -0
  589. package/src/internal/RedBlackTree/node.ts +48 -0
  590. package/src/internal/RedBlackTree.ts +1195 -0
  591. package/src/internal/Stack.ts +4 -0
  592. package/src/internal/blockedRequests.ts +512 -0
  593. package/src/internal/cache.ts +714 -0
  594. package/src/internal/cause.ts +1205 -0
  595. package/src/internal/channel/channelExecutor.ts +1193 -0
  596. package/src/internal/channel/channelState.ts +132 -0
  597. package/src/internal/channel/childExecutorDecision.ts +95 -0
  598. package/src/internal/channel/continuation.ts +171 -0
  599. package/src/internal/channel/mergeDecision.ts +115 -0
  600. package/src/internal/channel/mergeState.ts +120 -0
  601. package/src/internal/channel/mergeStrategy.ts +72 -0
  602. package/src/internal/channel/singleProducerAsyncInput.ts +261 -0
  603. package/src/internal/channel/subexecutor.ts +229 -0
  604. package/src/internal/channel/upstreamPullRequest.ts +83 -0
  605. package/src/internal/channel/upstreamPullStrategy.ts +86 -0
  606. package/src/internal/channel.ts +2516 -0
  607. package/src/internal/clock.ts +97 -0
  608. package/src/internal/completedRequestMap.ts +9 -0
  609. package/src/internal/concurrency.ts +83 -0
  610. package/src/internal/config.ts +598 -0
  611. package/src/internal/configError.ts +291 -0
  612. package/src/internal/configProvider/pathPatch.ts +97 -0
  613. package/src/internal/configProvider.ts +692 -0
  614. package/src/internal/configSecret.ts +71 -0
  615. package/src/internal/console.ts +136 -0
  616. package/src/internal/core-effect.ts +2146 -0
  617. package/src/internal/core-stream.ts +999 -0
  618. package/src/internal/core.ts +2765 -0
  619. package/src/internal/dataSource.ts +258 -0
  620. package/src/internal/defaultServices/console.ts +97 -0
  621. package/src/internal/defaultServices.ts +140 -0
  622. package/src/internal/deferred.ts +44 -0
  623. package/src/internal/effect/circular.ts +664 -0
  624. package/src/internal/executionStrategy.ts +72 -0
  625. package/src/internal/fiber.ts +350 -0
  626. package/src/internal/fiberId.ts +270 -0
  627. package/src/internal/fiberMessage.ts +85 -0
  628. package/src/internal/fiberRefs/patch.ts +144 -0
  629. package/src/internal/fiberRefs.ts +239 -0
  630. package/src/internal/fiberRuntime.ts +3477 -0
  631. package/src/internal/fiberScope.ts +72 -0
  632. package/src/internal/fiberStatus.ts +118 -0
  633. package/src/internal/groupBy.ts +516 -0
  634. package/src/internal/keyedPool.ts +240 -0
  635. package/src/internal/layer/circular.ts +203 -0
  636. package/src/internal/layer.ts +1230 -0
  637. package/src/internal/logSpan.ts +15 -0
  638. package/src/internal/logger-circular.ts +24 -0
  639. package/src/internal/logger.ts +307 -0
  640. package/src/internal/metric/boundaries.ts +72 -0
  641. package/src/internal/metric/hook.ts +459 -0
  642. package/src/internal/metric/key.ts +173 -0
  643. package/src/internal/metric/keyType.ts +263 -0
  644. package/src/internal/metric/label.ts +44 -0
  645. package/src/internal/metric/pair.ts +48 -0
  646. package/src/internal/metric/polling.ts +143 -0
  647. package/src/internal/metric/registry.ts +188 -0
  648. package/src/internal/metric/state.ts +286 -0
  649. package/src/internal/metric.ts +522 -0
  650. package/src/internal/opCodes/cause.ts +35 -0
  651. package/src/internal/opCodes/channel.ts +83 -0
  652. package/src/internal/opCodes/channelChildExecutorDecision.ts +17 -0
  653. package/src/internal/opCodes/channelMergeDecision.ts +11 -0
  654. package/src/internal/opCodes/channelMergeState.ts +17 -0
  655. package/src/internal/opCodes/channelMergeStrategy.ts +11 -0
  656. package/src/internal/opCodes/channelState.ts +23 -0
  657. package/src/internal/opCodes/channelUpstreamPullRequest.ts +11 -0
  658. package/src/internal/opCodes/channelUpstreamPullStrategy.ts +11 -0
  659. package/src/internal/opCodes/config.ts +65 -0
  660. package/src/internal/opCodes/configError.ts +35 -0
  661. package/src/internal/opCodes/continuation.ts +11 -0
  662. package/src/internal/opCodes/deferred.ts +11 -0
  663. package/src/internal/opCodes/effect.ts +83 -0
  664. package/src/internal/opCodes/layer.ts +53 -0
  665. package/src/internal/opCodes/streamHaltStrategy.ts +23 -0
  666. package/src/internal/pool.ts +499 -0
  667. package/src/internal/pubsub.ts +1557 -0
  668. package/src/internal/query.ts +199 -0
  669. package/src/internal/queue.ts +729 -0
  670. package/src/internal/random.ts +88 -0
  671. package/src/internal/ref.ts +164 -0
  672. package/src/internal/reloadable.ts +164 -0
  673. package/src/internal/request.ts +137 -0
  674. package/src/internal/resource.ts +64 -0
  675. package/src/internal/ringBuffer.ts +68 -0
  676. package/src/internal/runtime.ts +348 -0
  677. package/src/internal/runtimeFlags.ts +176 -0
  678. package/src/internal/runtimeFlagsPatch.ts +103 -0
  679. package/src/internal/schedule/decision.ts +47 -0
  680. package/src/internal/schedule/interval.ts +101 -0
  681. package/src/internal/schedule/intervals.ts +179 -0
  682. package/src/internal/schedule.ts +2096 -0
  683. package/src/internal/scopedCache.ts +634 -0
  684. package/src/internal/scopedRef.ts +133 -0
  685. package/src/internal/singleShotGen.ts +35 -0
  686. package/src/internal/sink.ts +2118 -0
  687. package/src/internal/stm/core.ts +804 -0
  688. package/src/internal/stm/opCodes/stm.ts +71 -0
  689. package/src/internal/stm/opCodes/stmState.ts +17 -0
  690. package/src/internal/stm/opCodes/strategy.ts +17 -0
  691. package/src/internal/stm/opCodes/tExit.ts +29 -0
  692. package/src/internal/stm/opCodes/tryCommit.ts +11 -0
  693. package/src/internal/stm/stm/entry.ts +59 -0
  694. package/src/internal/stm/stm/journal.ts +123 -0
  695. package/src/internal/stm/stm/opCodes/stm.ts +71 -0
  696. package/src/internal/stm/stm/opCodes/stmState.ts +17 -0
  697. package/src/internal/stm/stm/opCodes/strategy.ts +17 -0
  698. package/src/internal/stm/stm/opCodes/tExit.ts +29 -0
  699. package/src/internal/stm/stm/opCodes/tryCommit.ts +11 -0
  700. package/src/internal/stm/stm/stmState.ts +130 -0
  701. package/src/internal/stm/stm/tExit.ts +180 -0
  702. package/src/internal/stm/stm/tryCommit.ts +34 -0
  703. package/src/internal/stm/stm/txnId.ts +14 -0
  704. package/src/internal/stm/stm/versioned.ts +4 -0
  705. package/src/internal/stm/stm.ts +1491 -0
  706. package/src/internal/stm/tArray.ts +550 -0
  707. package/src/internal/stm/tDeferred.ts +79 -0
  708. package/src/internal/stm/tMap.ts +824 -0
  709. package/src/internal/stm/tPriorityQueue.ts +259 -0
  710. package/src/internal/stm/tPubSub.ts +542 -0
  711. package/src/internal/stm/tQueue.ts +400 -0
  712. package/src/internal/stm/tRandom.ts +140 -0
  713. package/src/internal/stm/tReentrantLock.ts +352 -0
  714. package/src/internal/stm/tRef.ts +190 -0
  715. package/src/internal/stm/tSemaphore.ts +113 -0
  716. package/src/internal/stm/tSet.ts +237 -0
  717. package/src/internal/stream/debounceState.ts +57 -0
  718. package/src/internal/stream/emit.ts +46 -0
  719. package/src/internal/stream/haltStrategy.ts +85 -0
  720. package/src/internal/stream/handoff.ts +185 -0
  721. package/src/internal/stream/handoffSignal.ts +59 -0
  722. package/src/internal/stream/pull.ts +35 -0
  723. package/src/internal/stream/sinkEndReason.ts +30 -0
  724. package/src/internal/stream/zipAllState.ts +88 -0
  725. package/src/internal/stream/zipChunksState.ts +56 -0
  726. package/src/internal/stream.ts +8089 -0
  727. package/src/internal/string-utils.ts +107 -0
  728. package/src/internal/subscriptionRef.ts +133 -0
  729. package/src/internal/supervisor/patch.ts +190 -0
  730. package/src/internal/supervisor.ts +301 -0
  731. package/src/internal/synchronizedRef.ts +115 -0
  732. package/src/internal/take.ts +198 -0
  733. package/src/internal/testing/sleep.ts +27 -0
  734. package/src/internal/testing/suspendedWarningData.ts +85 -0
  735. package/src/internal/testing/warningData.ts +94 -0
  736. package/src/internal/timeout.ts +23 -0
  737. package/src/internal/tracer.ts +74 -0
  738. package/Error/dist/effect-Error.cjs.d.mts +0 -2
  739. package/Error/dist/effect-Error.cjs.d.mts.map +0 -1
  740. package/Error/dist/effect-Error.cjs.d.ts +0 -2
  741. package/Error/dist/effect-Error.cjs.d.ts.map +0 -1
  742. package/Error/dist/effect-Error.cjs.dev.js +0 -140
  743. package/Error/dist/effect-Error.cjs.js +0 -7
  744. package/Error/dist/effect-Error.cjs.mjs +0 -4
  745. package/Error/dist/effect-Error.cjs.prod.js +0 -140
  746. package/Error/dist/effect-Error.esm.js +0 -47
  747. package/Error/package.json +0 -4
  748. package/Hub/dist/effect-Hub.cjs.d.mts +0 -2
  749. package/Hub/dist/effect-Hub.cjs.d.mts.map +0 -1
  750. package/Hub/dist/effect-Hub.cjs.d.ts +0 -2
  751. package/Hub/dist/effect-Hub.cjs.d.ts.map +0 -1
  752. package/Hub/dist/effect-Hub.cjs.js +0 -7
  753. package/Hub/package.json +0 -4
  754. package/THub/dist/effect-THub.cjs.d.mts +0 -2
  755. package/THub/dist/effect-THub.cjs.d.mts.map +0 -1
  756. package/THub/dist/effect-THub.cjs.d.ts +0 -2
  757. package/THub/dist/effect-THub.cjs.d.ts.map +0 -1
  758. package/THub/dist/effect-THub.cjs.js +0 -7
  759. package/THub/dist/effect-THub.esm.js +0 -157
  760. package/THub/package.json +0 -4
  761. package/dist/declarations/src/Error.d.ts +0 -37
  762. package/dist/declarations/src/Error.d.ts.map +0 -1
  763. package/dist/declarations/src/Hub.d.ts.map +0 -1
  764. package/dist/declarations/src/THub.d.ts +0 -146
  765. package/dist/declarations/src/THub.d.ts.map +0 -1
  766. package/dist/scopedRef-1c2c9acf.cjs.prod.js +0 -55
  767. package/dist/scopedRef-ab4c58b0.cjs.dev.js +0 -55
  768. /package/dist/{FiberId-e594f6e8.cjs.prod.js → FiberId-1d7ac632.cjs.prod.js} +0 -0
  769. /package/dist/{FiberId-557db880.cjs.dev.js → FiberId-d88ddce6.cjs.dev.js} +0 -0
  770. /package/dist/{RuntimeFlagsPatch-ea268c50.cjs.dev.js → RuntimeFlagsPatch-69102b03.cjs.dev.js} +0 -0
  771. /package/dist/{RuntimeFlagsPatch-e2769b87.cjs.prod.js → RuntimeFlagsPatch-866fa259.cjs.prod.js} +0 -0
  772. /package/dist/{boundaries-20cfad9d.cjs.prod.js → boundaries-9af538e3.cjs.prod.js} +0 -0
  773. /package/dist/{boundaries-3810d885.cjs.dev.js → boundaries-f212e414.cjs.dev.js} +0 -0
  774. /package/dist/{configError-33e55472.cjs.prod.js → configError-b43723af.cjs.prod.js} +0 -0
  775. /package/dist/{configError-240e9b61.cjs.dev.js → configError-d5efe9c0.cjs.dev.js} +0 -0
  776. /package/dist/{configSecret-e34c1b14.cjs.dev.js → configSecret-3e8ae336.cjs.dev.js} +0 -0
  777. /package/dist/{configSecret-d1caca55.cjs.prod.js → configSecret-e2faa181.cjs.prod.js} +0 -0
  778. /package/dist/{take-2af6e92a.cjs.prod.js → take-85daaf79.cjs.prod.js} +0 -0
  779. /package/dist/{take-df9480a8.cjs.dev.js → take-f9ef9e2e.cjs.dev.js} +0 -0
package/src/List.ts ADDED
@@ -0,0 +1,942 @@
1
+ /**
2
+ * A data type for immutable linked lists representing ordered collections of elements of type `A`.
3
+ *
4
+ * This data type is optimal for last-in-first-out (LIFO), stack-like access patterns. If you need another access pattern, for example, random access or FIFO, consider using a collection more suited to this than `List`.
5
+ *
6
+ * **Performance**
7
+ *
8
+ * - Time: `List` has `O(1)` prepend and head/tail access. Most other operations are `O(n)` on the number of elements in the list. This includes the index-based lookup of elements, `length`, `append` and `reverse`.
9
+ * - Space: `List` implements structural sharing of the tail list. This means that many operations are either zero- or constant-memory cost.
10
+ *
11
+ * @since 2.0.0
12
+ */
13
+
14
+ /**
15
+ * This file is ported from
16
+ *
17
+ * Scala (https://www.scala-lang.org)
18
+ *
19
+ * Copyright EPFL and Lightbend, Inc.
20
+ *
21
+ * Licensed under Apache License 2.0
22
+ * (http://www.apache.org/licenses/LICENSE-2.0).
23
+ */
24
+ import * as Chunk from "./Chunk"
25
+ import * as Either from "./Either"
26
+ import * as Equal from "./Equal"
27
+ import * as Equivalence from "./Equivalence"
28
+ import { dual, identity, unsafeCoerce } from "./Function"
29
+ import * as Hash from "./Hash"
30
+ import { type Inspectable, NodeInspectSymbol, toJSON, toString } from "./Inspectable"
31
+ import * as Option from "./Option"
32
+ import type { Pipeable } from "./Pipeable"
33
+ import { pipeArguments } from "./Pipeable"
34
+ import type { Predicate, Refinement } from "./Predicate"
35
+ import { isObject } from "./Predicate"
36
+ import * as ReadonlyArray from "./ReadonlyArray"
37
+
38
+ /**
39
+ * Represents an immutable linked list of elements of type `A`.
40
+ *
41
+ * A `List` is optimal for last-in-first-out (LIFO), stack-like access patterns.
42
+ * If you need another access pattern, for example, random access or FIFO,
43
+ * consider using a collection more suited for that other than `List`.
44
+ *
45
+ * @since 2.0.0
46
+ * @category models
47
+ */
48
+ export type List<A> = Cons<A> | Nil<A>
49
+
50
+ /**
51
+ * @since 2.0.0
52
+ * @category symbol
53
+ */
54
+ export const TypeId: unique symbol = Symbol.for("effect/List")
55
+
56
+ /**
57
+ * @since 2.0.0
58
+ * @category symbol
59
+ */
60
+ export type TypeId = typeof TypeId
61
+
62
+ /**
63
+ * @since 2.0.0
64
+ * @category models
65
+ */
66
+ export interface Nil<A> extends Iterable<A>, Equal.Equal, Pipeable, Inspectable {
67
+ readonly [TypeId]: TypeId
68
+ readonly _tag: "Nil"
69
+ }
70
+
71
+ /**
72
+ * @since 2.0.0
73
+ * @category models
74
+ */
75
+ export interface Cons<A> extends Iterable<A>, Equal.Equal, Pipeable, Inspectable {
76
+ readonly [TypeId]: TypeId
77
+ readonly _tag: "Cons"
78
+ readonly head: A
79
+ readonly tail: List<A>
80
+ }
81
+
82
+ /**
83
+ * Converts the specified `List` to a `ReadonlyArray`.
84
+ *
85
+ * @category conversions
86
+ * @since 2.0.0
87
+ */
88
+ export const toReadonlyArray = <A>(self: List<A>): ReadonlyArray<A> => Array.from(self)
89
+
90
+ /**
91
+ * @category equivalence
92
+ * @since 2.0.0
93
+ */
94
+ export const getEquivalence = <A>(isEquivalent: Equivalence.Equivalence<A>): Equivalence.Equivalence<List<A>> =>
95
+ Equivalence.mapInput(ReadonlyArray.getEquivalence(isEquivalent), toReadonlyArray<A>)
96
+
97
+ const _equivalence = getEquivalence(Equal.equals)
98
+
99
+ const ConsProto: Omit<Cons<unknown>, "head" | "tail"> = {
100
+ [TypeId]: TypeId,
101
+ _tag: "Cons",
102
+ toString(this: Cons<unknown>) {
103
+ return toString(this.toJSON())
104
+ },
105
+ toJSON(this: Cons<unknown>) {
106
+ return {
107
+ _id: "List",
108
+ _tag: "Cons",
109
+ values: toReadonlyArray(this).map(toJSON)
110
+ }
111
+ },
112
+ [NodeInspectSymbol]() {
113
+ return this.toJSON()
114
+ },
115
+ [Equal.symbol](this: Cons<unknown>, that: unknown): boolean {
116
+ return isList(that) &&
117
+ this._tag === that._tag &&
118
+ _equivalence(this, that)
119
+ },
120
+ [Hash.symbol](this: Cons<unknown>): number {
121
+ return Hash.array(toReadonlyArray(this))
122
+ },
123
+ [Symbol.iterator](this: Cons<unknown>): Iterator<unknown> {
124
+ let done = false
125
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
126
+ let self: List<unknown> = this
127
+ return {
128
+ next() {
129
+ if (done) {
130
+ return this.return!()
131
+ }
132
+ if (self._tag === "Nil") {
133
+ done = true
134
+ return this.return!()
135
+ }
136
+ const value: unknown = self.head
137
+ self = self.tail
138
+ return { done, value }
139
+ },
140
+ return(value?: unknown) {
141
+ if (!done) {
142
+ done = true
143
+ }
144
+ return { done: true, value }
145
+ }
146
+ }
147
+ },
148
+ pipe() {
149
+ return pipeArguments(this, arguments)
150
+ }
151
+ }
152
+
153
+ interface MutableCons<A> extends Cons<A> {
154
+ head: A
155
+ tail: List<A>
156
+ }
157
+
158
+ const makeCons = <A>(head: A, tail: List<A>): MutableCons<A> => {
159
+ const cons = Object.create(ConsProto)
160
+ cons.head = head
161
+ cons.tail = tail
162
+ return cons
163
+ }
164
+
165
+ const NilProto: Nil<unknown> = {
166
+ [TypeId]: TypeId,
167
+ _tag: "Nil",
168
+ toString() {
169
+ return toString(this.toJSON())
170
+ },
171
+ toJSON() {
172
+ return {
173
+ _id: "List",
174
+ _tag: "Nil"
175
+ }
176
+ },
177
+ [NodeInspectSymbol]() {
178
+ return this.toJSON()
179
+ },
180
+ [Hash.symbol](): number {
181
+ return Hash.array(toReadonlyArray(this))
182
+ },
183
+ [Equal.symbol](that: unknown): boolean {
184
+ return isList(that) && this._tag === that._tag
185
+ },
186
+ [Symbol.iterator](): Iterator<unknown> {
187
+ return {
188
+ next() {
189
+ return { done: true, value: undefined }
190
+ }
191
+ }
192
+ },
193
+ pipe() {
194
+ return pipeArguments(this, arguments)
195
+ }
196
+ } as const
197
+
198
+ const _Nil = Object.create(NilProto) as Nil<never>
199
+
200
+ /**
201
+ * Returns `true` if the specified value is a `List`, `false` otherwise.
202
+ *
203
+ * @since 2.0.0
204
+ * @category refinements
205
+ */
206
+ export const isList: {
207
+ <A>(u: Iterable<A>): u is List<A>
208
+ (u: unknown): u is List<unknown>
209
+ } = (u: unknown): u is List<unknown> => isObject(u) && TypeId in u
210
+
211
+ /**
212
+ * Returns `true` if the specified value is a `List.Nil<A>`, `false` otherwise.
213
+ *
214
+ * @since 2.0.0
215
+ * @category refinements
216
+ */
217
+ export const isNil = <A>(self: List<A>): self is Nil<A> => self._tag === "Nil"
218
+
219
+ /**
220
+ * Returns `true` if the specified value is a `List.Cons<A>`, `false` otherwise.
221
+ *
222
+ * @since 2.0.0
223
+ * @category refinements
224
+ */
225
+ export const isCons = <A>(self: List<A>): self is Cons<A> => self._tag === "Cons"
226
+
227
+ /**
228
+ * Returns the number of elements contained in the specified `List`
229
+ *
230
+ * @since 2.0.0
231
+ * @category getters
232
+ */
233
+ export const size = <A>(self: List<A>): number => {
234
+ let these = self
235
+ let len = 0
236
+ while (!isNil(these)) {
237
+ len += 1
238
+ these = these.tail
239
+ }
240
+ return len
241
+ }
242
+
243
+ /**
244
+ * Constructs a new empty `List<A>`.
245
+ *
246
+ * @since 2.0.0
247
+ * @category constructors
248
+ */
249
+ export const nil = <A = never>(): List<A> => _Nil
250
+
251
+ /**
252
+ * Constructs a new `List.Cons<A>` from the specified `head` and `tail` values.
253
+ *
254
+ * @since 2.0.0
255
+ * @category constructors
256
+ */
257
+ export const cons = <A>(head: A, tail: List<A>): Cons<A> => makeCons(head, tail)
258
+
259
+ /**
260
+ * Constructs a new empty `List<A>`.
261
+ *
262
+ * Alias of {@link nil}.
263
+ *
264
+ * @since 2.0.0
265
+ * @category constructors
266
+ */
267
+ export const empty = nil
268
+
269
+ /**
270
+ * Constructs a new `List<A>` from the specified value.
271
+ *
272
+ * @since 2.0.0
273
+ * @category constructors
274
+ */
275
+ export const of = <A>(value: A): Cons<A> => makeCons(value, _Nil)
276
+
277
+ /**
278
+ * Constructs a new `List<A>` from the specified `Iterable<A>`.
279
+ *
280
+ * @since 2.0.0
281
+ * @category constructors
282
+ */
283
+ export const fromIterable = <A>(prefix: Iterable<A>): List<A> => {
284
+ const iterator = prefix[Symbol.iterator]()
285
+ let next: IteratorResult<A>
286
+ if ((next = iterator.next()) && !next.done) {
287
+ const result = makeCons(next.value, _Nil)
288
+ let curr = result
289
+ while ((next = iterator.next()) && !next.done) {
290
+ const temp = makeCons(next.value, _Nil)
291
+ curr.tail = temp
292
+ curr = temp
293
+ }
294
+ return result
295
+ } else {
296
+ return _Nil
297
+ }
298
+ }
299
+
300
+ /**
301
+ * Constructs a new `List<A>` from the specified values.
302
+ *
303
+ * @since 2.0.0
304
+ * @category constructors
305
+ */
306
+ export const make = <Elements extends readonly [any, ...Array<any>]>(
307
+ ...elements: Elements
308
+ ): Cons<Elements[number]> => fromIterable(elements) as any
309
+
310
+ /**
311
+ * Appends the specified element to the end of the `List`, creating a new `Cons`.
312
+ *
313
+ * @category concatenating
314
+ * @since 2.0.0
315
+ */
316
+ export const append: {
317
+ <B>(element: B): <A>(self: List<A>) => Cons<A | B>
318
+ <A, B>(self: List<A>, element: B): Cons<A | B>
319
+ } = dual(2, <A, B>(self: List<A>, element: B): Cons<A | B> => appendAllNonEmpty(self, of(element)))
320
+
321
+ /**
322
+ * Concatentates the specified lists together.
323
+ *
324
+ * @category concatenating
325
+ * @since 2.0.0
326
+ */
327
+ export const appendAll: {
328
+ <B>(that: List<B>): <A>(self: List<A>) => List<A | B>
329
+ <A, B>(self: List<A>, that: List<B>): List<A | B>
330
+ } = dual(2, <A, B>(self: List<A>, that: List<B>): List<A | B> => prependAll(that, self))
331
+
332
+ /**
333
+ * @category concatenating
334
+ * @since 2.0.0
335
+ */
336
+ export const appendAllNonEmpty: {
337
+ <B>(that: Cons<B>): <A>(self: List<A>) => Cons<B | A>
338
+ <B>(that: List<B>): <A>(self: Cons<A>) => Cons<B | A>
339
+ <A, B>(self: List<A>, that: Cons<B>): Cons<A | B>
340
+ <A, B>(self: Cons<A>, that: List<B>): Cons<A | B>
341
+ } = dual(2, <A, B>(self: Cons<A>, that: List<B>): Cons<A | B> => appendAll(self, that) as any)
342
+
343
+ /**
344
+ * Prepends the specified element to the beginning of the list.
345
+ *
346
+ * @category concatenating
347
+ * @since 2.0.0
348
+ */
349
+ export const prepend: {
350
+ <B>(element: B): <A>(self: List<A>) => Cons<A | B>
351
+ <A, B>(self: List<A>, element: B): Cons<A | B>
352
+ } = dual(2, <A, B>(self: List<A>, element: B): Cons<A | B> => cons<A | B>(element, self))
353
+
354
+ /**
355
+ * Prepends the specified prefix list to the beginning of the specified list.
356
+ *
357
+ * @category concatenating
358
+ * @since 2.0.0
359
+ */
360
+ export const prependAll: {
361
+ <B>(prefix: List<B>): <A>(self: List<A>) => List<A | B>
362
+ <A, B>(self: List<A>, prefix: List<B>): List<A | B>
363
+ } = dual(2, <A, B>(self: List<A>, prefix: List<B>): List<A | B> => {
364
+ if (isNil(self)) {
365
+ return prefix
366
+ } else if (isNil(prefix)) {
367
+ return self
368
+ } else {
369
+ const result = makeCons<A | B>(prefix.head, self)
370
+ let curr = result
371
+ let that = prefix.tail
372
+ while (!isNil(that)) {
373
+ const temp = makeCons<A | B>(that.head, self)
374
+ curr.tail = temp
375
+ curr = temp
376
+ that = that.tail
377
+ }
378
+ return result
379
+ }
380
+ })
381
+
382
+ /**
383
+ * @category concatenating
384
+ * @since 2.0.0
385
+ */
386
+ export const prependAllNonEmpty: {
387
+ <B>(that: Cons<B>): <A>(self: List<A>) => Cons<B | A>
388
+ <B>(that: List<B>): <A>(self: Cons<A>) => Cons<B | A>
389
+ <A, B>(self: List<A>, that: Cons<B>): Cons<A | B>
390
+ <A, B>(self: Cons<A>, that: List<B>): Cons<A | B>
391
+ } = dual(2, <A, B>(self: Cons<A>, that: List<B>): Cons<A | B> => prependAll(self, that) as any)
392
+
393
+ /**
394
+ * Prepends the specified prefix list (in reverse order) to the beginning of the
395
+ * specified list.
396
+ *
397
+ * @category concatenating
398
+ * @since 2.0.0
399
+ */
400
+ export const prependAllReversed: {
401
+ <B>(prefix: List<B>): <A>(self: List<A>) => List<A | B>
402
+ <A, B>(self: List<A>, prefix: List<B>): List<A | B>
403
+ } = dual(2, <A, B>(self: List<A>, prefix: List<B>): List<A | B> => {
404
+ let out: List<A | B> = self
405
+ let pres = prefix
406
+ while (isCons(pres)) {
407
+ out = makeCons(pres.head, out)
408
+ pres = pres.tail
409
+ }
410
+ return out
411
+ })
412
+
413
+ /**
414
+ * Drops the first `n` elements from the specified list.
415
+ *
416
+ * @since 2.0.0
417
+ * @category combinators
418
+ */
419
+ export const drop: {
420
+ (n: number): <A>(self: List<A>) => List<A>
421
+ <A>(self: List<A>, n: number): List<A>
422
+ } = dual(2, <A>(self: List<A>, n: number): List<A> => {
423
+ if (n <= 0) {
424
+ return self
425
+ }
426
+ if (n >= size(self)) {
427
+ return _Nil
428
+ }
429
+ let these = self
430
+ let i = 0
431
+ while (!isNil(these) && i < n) {
432
+ these = these.tail
433
+ i += 1
434
+ }
435
+ return these
436
+ })
437
+
438
+ /**
439
+ * Check if a predicate holds true for every `List` element.
440
+ *
441
+ * @since 2.0.0
442
+ * @category elements
443
+ */
444
+ export const every: {
445
+ <A, B extends A>(refinement: Refinement<A, B>): (self: List<A>) => self is List<B>
446
+ <A>(predicate: Predicate<A>): (self: List<A>) => boolean
447
+ <A, B extends A>(self: List<A>, refinement: Refinement<A, B>): self is List<B>
448
+ <A>(self: List<A>, predicate: Predicate<A>): boolean
449
+ } = dual(2, <A, B extends A>(self: List<A>, refinement: Refinement<A, B>): self is List<B> => {
450
+ for (const a of self) {
451
+ if (!refinement(a)) {
452
+ return false
453
+ }
454
+ }
455
+ return true
456
+ })
457
+
458
+ /**
459
+ * Check if a predicate holds true for some `List` element.
460
+ *
461
+ * @since 2.0.0
462
+ * @category elements
463
+ */
464
+ export const some: {
465
+ <A>(predicate: Predicate<A>): <B extends A>(self: List<B>) => self is Cons<B>
466
+ <B extends A, A = B>(self: List<B>, predicate: Predicate<A>): self is Cons<B>
467
+ } = dual(2, <B extends A, A = B>(self: List<B>, predicate: Predicate<A>): self is Cons<B> => {
468
+ let these = self
469
+ while (!isNil(these)) {
470
+ if (predicate(these.head)) {
471
+ return true
472
+ }
473
+ these = these.tail
474
+ }
475
+ return false
476
+ })
477
+
478
+ /**
479
+ * Filters a list using the specified predicate.
480
+ *
481
+ * @since 2.0.0
482
+ * @category combinators
483
+ */
484
+ export const filter: {
485
+ <C extends A, B extends A, A = C>(refinement: Refinement<A, B>): (self: List<C>) => List<B>
486
+ <B extends A, A = B>(predicate: Predicate<A>): (self: List<B>) => List<B>
487
+ <C extends A, B extends A, A = C>(self: List<C>, refinement: Refinement<A, B>): List<B>
488
+ <B extends A, A = B>(self: List<B>, predicate: Predicate<A>): List<B>
489
+ } = dual(2, <B extends A, A = B>(self: List<B>, predicate: Predicate<A>): List<B> => noneIn(self, predicate, false))
490
+
491
+ // everything seen so far is not included
492
+ const noneIn = <A>(
493
+ self: List<A>,
494
+ predicate: Predicate<A>,
495
+ isFlipped: boolean
496
+ ): List<A> => {
497
+ /* eslint-disable no-constant-condition */
498
+ while (true) {
499
+ if (isNil(self)) {
500
+ return _Nil
501
+ } else {
502
+ if (predicate(self.head) !== isFlipped) {
503
+ return allIn(self, self.tail, predicate, isFlipped)
504
+ } else {
505
+ self = self.tail
506
+ }
507
+ }
508
+ }
509
+ }
510
+
511
+ // everything from 'start' is included, if everything from this point is in we can return the origin
512
+ // start otherwise if we discover an element that is out we must create a new partial list.
513
+ const allIn = <A>(
514
+ start: List<A>,
515
+ remaining: List<A>,
516
+ predicate: Predicate<A>,
517
+ isFlipped: boolean
518
+ ): List<A> => {
519
+ /* eslint-disable no-constant-condition */
520
+ while (true) {
521
+ if (isNil(remaining)) {
522
+ return start
523
+ } else {
524
+ if (predicate(remaining.head) !== isFlipped) {
525
+ remaining = remaining.tail
526
+ } else {
527
+ return partialFill(start, remaining, predicate, isFlipped)
528
+ }
529
+ }
530
+ }
531
+ }
532
+
533
+ // we have seen elements that should be included then one that should be excluded, start building
534
+ const partialFill = <A>(
535
+ origStart: List<A>,
536
+ firstMiss: List<A>,
537
+ predicate: Predicate<A>,
538
+ isFlipped: boolean
539
+ ): List<A> => {
540
+ const newHead = makeCons<A>(unsafeHead(origStart)!, _Nil)
541
+ let toProcess = unsafeTail(origStart)! as Cons<A>
542
+ let currentLast = newHead
543
+
544
+ // we know that all elements are :: until at least firstMiss.tail
545
+ while (!(toProcess === firstMiss)) {
546
+ const newElem = makeCons(unsafeHead(toProcess)!, _Nil)
547
+ currentLast.tail = newElem
548
+ currentLast = unsafeCoerce(newElem)
549
+ toProcess = unsafeCoerce(toProcess.tail)
550
+ }
551
+
552
+ // at this point newHead points to a list which is a duplicate of all the 'in' elements up to the first miss.
553
+ // currentLast is the last element in that list.
554
+
555
+ // now we are going to try and share as much of the tail as we can, only moving elements across when we have to.
556
+ let next = firstMiss.tail
557
+ let nextToCopy: Cons<A> = unsafeCoerce(next) // the next element we would need to copy to our list if we cant share.
558
+ while (!isNil(next)) {
559
+ // generally recommended is next.isNonEmpty but this incurs an extra method call.
560
+ const head = unsafeHead(next)!
561
+ if (predicate(head) !== isFlipped) {
562
+ next = next.tail
563
+ } else {
564
+ // its not a match - do we have outstanding elements?
565
+ while (!(nextToCopy === next)) {
566
+ const newElem = makeCons(unsafeHead(nextToCopy)!, _Nil)
567
+ currentLast.tail = newElem
568
+ currentLast = newElem
569
+ nextToCopy = unsafeCoerce(nextToCopy.tail)
570
+ }
571
+ nextToCopy = unsafeCoerce(next.tail)
572
+ next = next.tail
573
+ }
574
+ }
575
+
576
+ // we have remaining elements - they are unchanged attach them to the end
577
+ if (!isNil(nextToCopy)) {
578
+ currentLast.tail = nextToCopy
579
+ }
580
+ return newHead
581
+ }
582
+
583
+ /**
584
+ * Filters and maps a list using the specified partial function. The resulting
585
+ * list may be smaller than the input list due to the possibility of the partial
586
+ * function not being defined for some elements.
587
+ *
588
+ * @since 2.0.0
589
+ * @category combinators
590
+ */
591
+ export const filterMap: {
592
+ <A, B>(f: (a: A) => Option.Option<B>): (self: List<A>) => List<B>
593
+ <A, B>(self: List<A>, f: (a: A) => Option.Option<B>): List<B>
594
+ } = dual(2, <A, B>(self: List<A>, f: (a: A) => Option.Option<B>): List<B> => {
595
+ const bs: Array<B> = []
596
+ for (const a of self) {
597
+ const oa = f(a)
598
+ if (Option.isSome(oa)) {
599
+ bs.push(oa.value)
600
+ }
601
+ }
602
+ return fromIterable(bs)
603
+ })
604
+
605
+ /**
606
+ * Removes all `None` values from the specified list.
607
+ *
608
+ * @since 2.0.0
609
+ * @category combinators
610
+ */
611
+ export const compact = <A>(self: List<Option.Option<A>>): List<A> => filterMap(self, identity)
612
+
613
+ /**
614
+ * Returns the first element that satisfies the specified
615
+ * predicate, or `None` if no such element exists.
616
+ *
617
+ * @category elements
618
+ * @since 2.0.0
619
+ */
620
+ export const findFirst: {
621
+ <A, B extends A>(refinement: Refinement<A, B>): (self: List<A>) => Option.Option<B>
622
+ <A>(predicate: Predicate<A>): (self: List<A>) => Option.Option<A>
623
+ <A, B extends A>(self: List<A>, refinement: Refinement<A, B>): Option.Option<B>
624
+ <A>(self: List<A>, predicate: Predicate<A>): Option.Option<A>
625
+ } = dual(2, <A>(self: List<A>, predicate: Predicate<A>): Option.Option<A> => {
626
+ let these = self
627
+ while (!isNil(these)) {
628
+ if (predicate(these.head)) {
629
+ return Option.some(these.head)
630
+ }
631
+ these = these.tail
632
+ }
633
+ return Option.none()
634
+ })
635
+
636
+ /**
637
+ * Flat maps a list using the specified function.
638
+ *
639
+ * @since 2.0.0
640
+ * @category sequencing
641
+ */
642
+ export const flatMap: {
643
+ <A, B>(f: (a: A) => List<B>): (self: List<A>) => List<B>
644
+ <A, B>(self: List<A>, f: (a: A) => List<B>): List<B>
645
+ } = dual(2, <A, B>(self: List<A>, f: (a: A) => List<B>): List<B> => {
646
+ let rest = self
647
+ let head: MutableCons<B> | undefined = undefined
648
+ let tail: MutableCons<B> | undefined = undefined
649
+ while (!isNil(rest)) {
650
+ let bs = f(rest.head)
651
+ while (!isNil(bs)) {
652
+ const next = makeCons(bs.head, _Nil)
653
+ if (tail === undefined) {
654
+ head = next
655
+ } else {
656
+ tail.tail = next
657
+ }
658
+ tail = next
659
+ bs = bs.tail
660
+ }
661
+ rest = rest.tail
662
+ }
663
+ if (head === undefined) {
664
+ return _Nil
665
+ }
666
+ return head
667
+ })
668
+
669
+ /**
670
+ * @category sequencing
671
+ * @since 2.0.0
672
+ */
673
+ export const flatMapNonEmpty: {
674
+ <A, B>(f: (a: A, i: number) => Cons<B>): (self: Cons<A>) => Cons<B>
675
+ <A, B>(self: Cons<A>, f: (a: A, i: number) => Cons<B>): Cons<B>
676
+ } = flatMap as any
677
+
678
+ /**
679
+ * Applies the specified function to each element of the `List`.
680
+ *
681
+ * @since 2.0.0
682
+ * @category combinators
683
+ */
684
+ export const forEach: {
685
+ <A, B>(f: (a: A) => B): (self: List<A>) => void
686
+ <A, B>(self: List<A>, f: (a: A) => B): void
687
+ } = dual(2, <A, B>(self: List<A>, f: (a: A) => B): void => {
688
+ let these = self
689
+ while (!isNil(these)) {
690
+ f(these.head)
691
+ these = these.tail
692
+ }
693
+ })
694
+
695
+ /**
696
+ * Returns the first element of the specified list, or `None` if the list is
697
+ * empty.
698
+ *
699
+ * @since 2.0.0
700
+ * @category getters
701
+ */
702
+ export const head = <A>(self: List<A>): Option.Option<A> => isNil(self) ? Option.none() : Option.some(self.head)
703
+
704
+ /**
705
+ * Returns the last element of the specified list, or `None` if the list is
706
+ * empty.
707
+ *
708
+ * @since 2.0.0
709
+ * @category getters
710
+ */
711
+ export const last = <A>(self: List<A>): Option.Option<A> => isNil(self) ? Option.none() : Option.some(unsafeLast(self)!)
712
+
713
+ /**
714
+ * Applies the specified mapping function to each element of the list.
715
+ *
716
+ * @since 2.0.0
717
+ * @category combinators
718
+ */
719
+ export const map: {
720
+ <A, B>(f: (a: A) => B): (self: List<A>) => List<B>
721
+ <A, B>(self: List<A>, f: (a: A) => B): List<B>
722
+ } = dual(2, <A, B>(self: List<A>, f: (a: A) => B): List<B> => {
723
+ if (isNil(self)) {
724
+ return self as unknown as List<B>
725
+ } else {
726
+ const head = makeCons(f(self.head), _Nil)
727
+ let nextHead = head
728
+ let rest = self.tail
729
+ while (!isNil(rest)) {
730
+ const next = makeCons(f(rest.head), _Nil)
731
+ nextHead.tail = next
732
+ nextHead = next
733
+ rest = rest.tail
734
+ }
735
+ return head
736
+ }
737
+ })
738
+
739
+ /**
740
+ * Partition a list into two lists, where the first list contains all elements
741
+ * that did not satisfy the specified predicate, and the second list contains
742
+ * all elements that did satisfy the specified predicate.
743
+ *
744
+ * @since 2.0.0
745
+ * @category combinators
746
+ */
747
+ export const partition: {
748
+ <C extends A, B extends A, A = C>(refinement: Refinement<A, B>): (self: List<C>) => [List<Exclude<C, B>>, List<B>]
749
+ <B extends A, A = B>(predicate: (a: A) => boolean): (self: List<B>) => [List<B>, List<B>]
750
+ <C extends A, B extends A, A = C>(self: List<C>, refinement: Refinement<A, B>): [List<Exclude<C, B>>, List<B>]
751
+ <B extends A, A = B>(self: List<B>, predicate: (a: A) => boolean): [List<B>, List<B>]
752
+ } = dual(2, <B extends A, A = B>(self: List<B>, predicate: (a: A) => boolean): [List<B>, List<B>] => {
753
+ const left: Array<B> = []
754
+ const right: Array<B> = []
755
+ for (const a of self) {
756
+ if (predicate(a)) {
757
+ right.push(a)
758
+ } else {
759
+ left.push(a)
760
+ }
761
+ }
762
+ return [fromIterable(left), fromIterable(right)]
763
+ })
764
+
765
+ /**
766
+ * Partition a list into two lists, where the first list contains all elements
767
+ * for which the specified function returned a `Left`, and the second list
768
+ * contains all elements for which the specified function returned a `Right`.
769
+ *
770
+ * @since 2.0.0
771
+ * @category combinators
772
+ */
773
+ export const partitionMap: {
774
+ <A, B, C>(f: (a: A) => Either.Either<B, C>): (self: List<A>) => readonly [List<B>, List<C>]
775
+ <A, B, C>(self: List<A>, f: (a: A) => Either.Either<B, C>): readonly [List<B>, List<C>]
776
+ } = dual(2, <A, B, C>(self: List<A>, f: (a: A) => Either.Either<B, C>): readonly [List<B>, List<C>] => {
777
+ const left: Array<B> = []
778
+ const right: Array<C> = []
779
+ for (const a of self) {
780
+ const e = f(a)
781
+ if (Either.isLeft(e)) {
782
+ left.push(e.left)
783
+ } else {
784
+ right.push(e.right)
785
+ }
786
+ }
787
+ return [fromIterable(left), fromIterable(right)]
788
+ })
789
+
790
+ /**
791
+ * Folds over the elements of the list using the specified function, using the
792
+ * specified initial value.
793
+ *
794
+ * @since 2.0.0
795
+ * @category folding
796
+ */
797
+ export const reduce: {
798
+ <Z, A>(zero: Z, f: (b: Z, a: A) => Z): (self: List<A>) => Z
799
+ <A, Z>(self: List<A>, zero: Z, f: (b: Z, a: A) => Z): Z
800
+ } = dual(3, <A, Z>(self: List<A>, zero: Z, f: (b: Z, a: A) => Z): Z => {
801
+ let acc = zero
802
+ let these = self
803
+ while (!isNil(these)) {
804
+ acc = f(acc, these.head)
805
+ these = these.tail
806
+ }
807
+ return acc
808
+ })
809
+
810
+ /**
811
+ * Folds over the elements of the list using the specified function, beginning
812
+ * with the last element of the list, using the specified initial value.
813
+ *
814
+ * @since 2.0.0
815
+ * @category folding
816
+ */
817
+ export const reduceRight: {
818
+ <Z, A>(zero: Z, f: (accumulator: Z, value: A) => Z): (self: List<A>) => Z
819
+ <Z, A>(self: List<A>, zero: Z, f: (accumulator: Z, value: A) => Z): Z
820
+ } = dual(3, <Z, A>(self: List<A>, zero: Z, f: (accumulator: Z, value: A) => Z): Z => {
821
+ let acc = zero
822
+ let these = reverse(self)
823
+ while (!isNil(these)) {
824
+ acc = f(acc, these.head)
825
+ these = these.tail
826
+ }
827
+ return acc
828
+ })
829
+
830
+ /**
831
+ * Returns a new list with the elements of the specified list in reverse order.
832
+ *
833
+ * @since 2.0.0
834
+ * @category elements
835
+ */
836
+ export const reverse = <A>(self: List<A>): List<A> => {
837
+ let result = empty<A>()
838
+ let these = self
839
+ while (!isNil(these)) {
840
+ result = prepend(result, these.head)
841
+ these = these.tail
842
+ }
843
+ return result
844
+ }
845
+
846
+ /**
847
+ * Splits the specified list into two lists at the specified index.
848
+ *
849
+ * @since 2.0.0
850
+ * @category combinators
851
+ */
852
+ export const splitAt: {
853
+ (n: number): <A>(self: List<A>) => readonly [List<A>, List<A>]
854
+ <A>(self: List<A>, n: number): readonly [List<A>, List<A>]
855
+ } = dual(2, <A>(self: List<A>, n: number): readonly [List<A>, List<A>] => [take(self, n), drop(self, n)])
856
+
857
+ /**
858
+ * Returns the tail of the specified list, or `None` if the list is empty.
859
+ *
860
+ * @since 2.0.0
861
+ * @category getters
862
+ */
863
+ export const tail = <A>(self: List<A>): Option.Option<List<A>> => isNil(self) ? Option.none() : Option.some(self.tail)
864
+
865
+ /**
866
+ * Takes the specified number of elements from the beginning of the specified
867
+ * list.
868
+ *
869
+ * @since 2.0.0
870
+ * @category combinators
871
+ */
872
+ export const take: {
873
+ (n: number): <A>(self: List<A>) => List<A>
874
+ <A>(self: List<A>, n: number): List<A>
875
+ } = dual(2, <A>(self: List<A>, n: number): List<A> => {
876
+ if (n <= 0) {
877
+ return _Nil
878
+ }
879
+ if (n >= size(self)) {
880
+ return self
881
+ }
882
+ let these = make(unsafeHead(self))
883
+ let current = unsafeTail(self)!
884
+ for (let i = 1; i < n; i++) {
885
+ these = makeCons(unsafeHead(current), these)
886
+ current = unsafeTail(current!)
887
+ }
888
+ return reverse(these)
889
+ })
890
+
891
+ /**
892
+ * Converts the specified `List` to a `Chunk`.
893
+ *
894
+ * @since 2.0.0
895
+ * @category conversions
896
+ */
897
+ export const toChunk = <A>(self: List<A>): Chunk.Chunk<A> => Chunk.fromIterable(self)
898
+
899
+ /**
900
+ * Unsafely returns the first element of the specified `List`.
901
+ *
902
+ * @since 2.0.0
903
+ * @category unsafe
904
+ */
905
+ export const unsafeHead = <A>(self: List<A>): A => {
906
+ if (isNil(self)) {
907
+ throw new Error("Expected List to be non-empty")
908
+ }
909
+ return self.head
910
+ }
911
+
912
+ /**
913
+ * Unsafely returns the last element of the specified `List`.
914
+ *
915
+ * @since 2.0.0
916
+ * @category unsafe
917
+ */
918
+ export const unsafeLast = <A>(self: List<A>): A => {
919
+ if (isNil(self)) {
920
+ throw new Error("Expected List to be non-empty")
921
+ }
922
+ let these = self
923
+ let scout = self.tail
924
+ while (!isNil(scout)) {
925
+ these = scout
926
+ scout = scout.tail
927
+ }
928
+ return these.head
929
+ }
930
+
931
+ /**
932
+ * Unsafely returns the tail of the specified `List`.
933
+ *
934
+ * @since 2.0.0
935
+ * @category unsafe
936
+ */
937
+ export const unsafeTail = <A>(self: List<A>): List<A> => {
938
+ if (isNil(self)) {
939
+ throw new Error("Expected List to be non-empty")
940
+ }
941
+ return self.tail
942
+ }