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/Chunk.ts ADDED
@@ -0,0 +1,1314 @@
1
+ /**
2
+ * @since 2.0.0
3
+ */
4
+ import type { Either } from "./Either"
5
+ import * as Equal from "./Equal"
6
+ import * as Equivalence from "./Equivalence"
7
+ import { dual, identity, pipe } from "./Function"
8
+ import * as Hash from "./Hash"
9
+ import type { TypeLambda } from "./HKT"
10
+ import { type Inspectable, NodeInspectSymbol, toJSON, toString } from "./Inspectable"
11
+ import type { NonEmptyIterable } from "./NonEmptyIterable"
12
+ import type { Option } from "./Option"
13
+ import * as O from "./Option"
14
+ import * as Order from "./Order"
15
+ import type { Pipeable } from "./Pipeable"
16
+ import { pipeArguments } from "./Pipeable"
17
+ import type { Predicate, Refinement } from "./Predicate"
18
+ import { isObject } from "./Predicate"
19
+ import * as RA from "./ReadonlyArray"
20
+ import type { NonEmptyReadonlyArray } from "./ReadonlyArray"
21
+
22
+ const TypeId: unique symbol = Symbol.for("effect/Chunk") as TypeId
23
+
24
+ /**
25
+ * @category symbol
26
+ * @since 2.0.0
27
+ */
28
+ export type TypeId = typeof TypeId
29
+
30
+ /**
31
+ * @category models
32
+ * @since 2.0.0
33
+ */
34
+ export interface Chunk<A> extends Iterable<A>, Equal.Equal, Pipeable, Inspectable {
35
+ readonly [TypeId]: {
36
+ readonly _A: (_: never) => A
37
+ }
38
+ readonly length: number
39
+ /** @internal */
40
+ right: Chunk<A>
41
+ /** @internal */
42
+ left: Chunk<A>
43
+ /** @internal */
44
+ backing: Backing<A>
45
+ /** @internal */
46
+ depth: number
47
+ }
48
+
49
+ /**
50
+ * @category model
51
+ * @since 2.0.0
52
+ */
53
+ export interface NonEmptyChunk<A> extends Chunk<A>, NonEmptyIterable<A> {}
54
+
55
+ /**
56
+ * @category type lambdas
57
+ * @since 2.0.0
58
+ */
59
+ export interface ChunkTypeLambda extends TypeLambda {
60
+ readonly type: Chunk<this["Target"]>
61
+ }
62
+
63
+ type Backing<A> =
64
+ | IArray<A>
65
+ | IConcat<A>
66
+ | ISingleton<A>
67
+ | IEmpty
68
+ | ISlice<A>
69
+
70
+ interface IArray<A> {
71
+ readonly _tag: "IArray"
72
+ readonly array: ReadonlyArray<A>
73
+ }
74
+
75
+ interface IConcat<A> {
76
+ readonly _tag: "IConcat"
77
+ readonly left: Chunk<A>
78
+ readonly right: Chunk<A>
79
+ }
80
+
81
+ interface ISingleton<A> {
82
+ readonly _tag: "ISingleton"
83
+ readonly a: A
84
+ }
85
+
86
+ interface IEmpty {
87
+ readonly _tag: "IEmpty"
88
+ }
89
+
90
+ interface ISlice<A> {
91
+ readonly _tag: "ISlice"
92
+ readonly chunk: Chunk<A>
93
+ readonly offset: number
94
+ readonly length: number
95
+ }
96
+
97
+ function copy<A>(
98
+ src: ReadonlyArray<A>,
99
+ srcPos: number,
100
+ dest: Array<A>,
101
+ destPos: number,
102
+ len: number
103
+ ) {
104
+ for (let i = srcPos; i < Math.min(src.length, srcPos + len); i++) {
105
+ dest[destPos + i - srcPos] = src[i]!
106
+ }
107
+ return dest
108
+ }
109
+
110
+ const emptyArray: ReadonlyArray<never> = []
111
+
112
+ /**
113
+ * Compares the two chunks of equal length using the specified function
114
+ *
115
+ * @category equivalence
116
+ * @since 2.0.0
117
+ */
118
+ export const getEquivalence = <A>(isEquivalent: Equivalence.Equivalence<A>): Equivalence.Equivalence<Chunk<A>> =>
119
+ Equivalence.make((self, that) => toReadonlyArray(self).every((value, i) => isEquivalent(value, unsafeGet(that, i))))
120
+
121
+ const _equivalence = getEquivalence(Equal.equals)
122
+
123
+ const ChunkProto: Omit<Chunk<unknown>, "backing" | "depth" | "left" | "length" | "right"> = {
124
+ [TypeId]: {
125
+ _A: (_: never) => _
126
+ },
127
+ toString<A>(this: Chunk<A>) {
128
+ return toString(this.toJSON())
129
+ },
130
+ toJSON<A>(this: Chunk<A>) {
131
+ return {
132
+ _id: "Chunk",
133
+ values: toReadonlyArray(this).map(toJSON)
134
+ }
135
+ },
136
+ [NodeInspectSymbol]<A>(this: Chunk<A>) {
137
+ return this.toJSON()
138
+ },
139
+ [Equal.symbol]<A>(this: Chunk<A>, that: unknown): boolean {
140
+ return isChunk(that) && _equivalence(this, that)
141
+ },
142
+ [Hash.symbol]<A>(this: Chunk<A>): number {
143
+ return Hash.array(toReadonlyArray(this))
144
+ },
145
+ [Symbol.iterator]<A>(this: Chunk<A>): Iterator<A> {
146
+ switch (this.backing._tag) {
147
+ case "IArray": {
148
+ return this.backing.array[Symbol.iterator]()
149
+ }
150
+ case "IEmpty": {
151
+ return emptyArray[Symbol.iterator]()
152
+ }
153
+ default: {
154
+ return toReadonlyArray(this)[Symbol.iterator]()
155
+ }
156
+ }
157
+ },
158
+ pipe<A>(this: Chunk<A>) {
159
+ return pipeArguments(this, arguments)
160
+ }
161
+ }
162
+
163
+ const makeChunk = <A>(backing: Backing<A>): Chunk<A> => {
164
+ const chunk = Object.create(ChunkProto)
165
+ chunk.backing = backing
166
+ switch (backing._tag) {
167
+ case "IEmpty": {
168
+ chunk.length = 0
169
+ chunk.depth = 0
170
+ chunk.left = chunk
171
+ chunk.right = chunk
172
+ break
173
+ }
174
+ case "IConcat": {
175
+ chunk.length = backing.left.length + backing.right.length
176
+ chunk.depth = 1 + Math.max(backing.left.depth, backing.right.depth)
177
+ chunk.left = backing.left
178
+ chunk.right = backing.right
179
+ break
180
+ }
181
+ case "IArray": {
182
+ chunk.length = backing.array.length
183
+ chunk.depth = 0
184
+ chunk.left = _empty
185
+ chunk.right = _empty
186
+ break
187
+ }
188
+ case "ISingleton": {
189
+ chunk.length = 1
190
+ chunk.depth = 0
191
+ chunk.left = _empty
192
+ chunk.right = _empty
193
+ break
194
+ }
195
+ case "ISlice": {
196
+ chunk.length = backing.length
197
+ chunk.depth = backing.chunk.depth + 1
198
+ chunk.left = _empty
199
+ chunk.right = _empty
200
+ break
201
+ }
202
+ }
203
+ return chunk
204
+ }
205
+
206
+ /**
207
+ * Checks if `u` is a `Chunk<unknown>`
208
+ *
209
+ * @category constructors
210
+ * @since 2.0.0
211
+ */
212
+ export const isChunk: {
213
+ <A>(u: Iterable<A>): u is Chunk<A>
214
+ (u: unknown): u is Chunk<unknown>
215
+ } = (u: unknown): u is Chunk<unknown> => isObject(u) && TypeId in u
216
+
217
+ const _empty = makeChunk<never>({ _tag: "IEmpty" })
218
+
219
+ /**
220
+ * @category constructors
221
+ * @since 2.0.0
222
+ */
223
+ export const empty: <A = never>() => Chunk<A> = () => _empty
224
+
225
+ /**
226
+ * Builds a `NonEmptyChunk` from an non-empty collection of elements.
227
+ *
228
+ * @category constructors
229
+ * @since 2.0.0
230
+ */
231
+ export const make = <As extends readonly [any, ...ReadonlyArray<any>]>(
232
+ ...as: As
233
+ ): NonEmptyChunk<As[number]> => as.length === 1 ? of(as[0]) : unsafeFromNonEmptyArray(as)
234
+
235
+ /**
236
+ * Builds a `NonEmptyChunk` from a single element.
237
+ *
238
+ * @category constructors
239
+ * @since 2.0.0
240
+ */
241
+ export const of = <A>(a: A): NonEmptyChunk<A> => makeChunk({ _tag: "ISingleton", a }) as any
242
+
243
+ /**
244
+ * Converts from an `Iterable<A>`
245
+ *
246
+ * @category conversions
247
+ * @since 2.0.0
248
+ */
249
+ export const fromIterable = <A>(self: Iterable<A>): Chunk<A> =>
250
+ isChunk(self) ? self : makeChunk({ _tag: "IArray", array: RA.fromIterable(self) })
251
+
252
+ const copyToArray = <A>(self: Chunk<A>, array: Array<any>, initial: number): void => {
253
+ switch (self.backing._tag) {
254
+ case "IArray": {
255
+ copy(self.backing.array, 0, array, initial, self.length)
256
+ break
257
+ }
258
+ case "IConcat": {
259
+ copyToArray(self.left, array, initial)
260
+ copyToArray(self.right, array, initial + self.left.length)
261
+ break
262
+ }
263
+ case "ISingleton": {
264
+ array[initial] = self.backing.a
265
+ break
266
+ }
267
+ case "ISlice": {
268
+ let i = 0
269
+ let j = initial
270
+ while (i < self.length) {
271
+ array[j] = unsafeGet(self, i)
272
+ i += 1
273
+ j += 1
274
+ }
275
+ break
276
+ }
277
+ }
278
+ }
279
+
280
+ /**
281
+ * Converts the specified `Chunk` to a `ReadonlyArray`.
282
+ *
283
+ * @category conversions
284
+ * @since 2.0.0
285
+ */
286
+ export const toReadonlyArray = <A>(self: Chunk<A>): ReadonlyArray<A> => {
287
+ switch (self.backing._tag) {
288
+ case "IEmpty": {
289
+ return emptyArray
290
+ }
291
+ case "IArray": {
292
+ return self.backing.array
293
+ }
294
+ default: {
295
+ const arr = new Array<A>(self.length)
296
+ copyToArray(self, arr, 0)
297
+ self.backing = {
298
+ _tag: "IArray",
299
+ array: arr
300
+ }
301
+ self.left = _empty
302
+ self.right = _empty
303
+ self.depth = 0
304
+ return arr
305
+ }
306
+ }
307
+ }
308
+
309
+ /**
310
+ * @since 2.0.0
311
+ * @category elements
312
+ */
313
+ export const reverse = <A>(self: Chunk<A>): Chunk<A> => {
314
+ switch (self.backing._tag) {
315
+ case "IEmpty":
316
+ case "ISingleton":
317
+ return self
318
+ case "IArray": {
319
+ return makeChunk({ _tag: "IArray", array: RA.reverse(self.backing.array) })
320
+ }
321
+ case "IConcat": {
322
+ return makeChunk({ _tag: "IConcat", left: reverse(self.backing.right), right: reverse(self.backing.left) })
323
+ }
324
+ case "ISlice":
325
+ return unsafeFromArray(RA.reverse(toReadonlyArray(self)))
326
+ }
327
+ }
328
+
329
+ /**
330
+ * This function provides a safe way to read a value at a particular index from a `Chunk`.
331
+ *
332
+ * @category elements
333
+ * @since 2.0.0
334
+ */
335
+ export const get: {
336
+ (index: number): <A>(self: Chunk<A>) => Option<A>
337
+ <A>(self: Chunk<A>, index: number): Option<A>
338
+ } = dual(
339
+ 2,
340
+ <A>(self: Chunk<A>, index: number): Option<A> =>
341
+ index < 0 || index >= self.length ? O.none() : O.some(unsafeGet(self, index))
342
+ )
343
+
344
+ /**
345
+ * Wraps an array into a chunk without copying, unsafe on mutable arrays
346
+ *
347
+ * @since 2.0.0
348
+ * @category unsafe
349
+ */
350
+ export const unsafeFromArray = <A>(self: ReadonlyArray<A>): Chunk<A> => makeChunk({ _tag: "IArray", array: self })
351
+
352
+ /**
353
+ * Wraps an array into a chunk without copying, unsafe on mutable arrays
354
+ *
355
+ * @since 2.0.0
356
+ * @category unsafe
357
+ */
358
+ export const unsafeFromNonEmptyArray = <A>(self: NonEmptyReadonlyArray<A>): NonEmptyChunk<A> =>
359
+ unsafeFromArray(self) as any
360
+
361
+ /**
362
+ * Gets an element unsafely, will throw on out of bounds
363
+ *
364
+ * @since 2.0.0
365
+ * @category unsafe
366
+ */
367
+ export const unsafeGet: {
368
+ (index: number): <A>(self: Chunk<A>) => A
369
+ <A>(self: Chunk<A>, index: number): A
370
+ } = dual(2, <A>(self: Chunk<A>, index: number): A => {
371
+ switch (self.backing._tag) {
372
+ case "IEmpty": {
373
+ throw new Error(`Index out of bounds`)
374
+ }
375
+ case "ISingleton": {
376
+ if (index !== 0) {
377
+ throw new Error(`Index out of bounds`)
378
+ }
379
+ return self.backing.a
380
+ }
381
+ case "IArray": {
382
+ if (index >= self.length || index < 0) {
383
+ throw new Error(`Index out of bounds`)
384
+ }
385
+ return self.backing.array[index]!
386
+ }
387
+ case "IConcat": {
388
+ return index < self.left.length
389
+ ? unsafeGet(self.left, index)
390
+ : unsafeGet(self.right, index - self.left.length)
391
+ }
392
+ case "ISlice": {
393
+ return unsafeGet(self.backing.chunk, index + self.backing.offset)
394
+ }
395
+ }
396
+ })
397
+
398
+ /**
399
+ * Appends the specified element to the end of the `Chunk`.
400
+ *
401
+ * @category concatenating
402
+ * @since 2.0.0
403
+ */
404
+ export const append: {
405
+ <A2>(a: A2): <A>(self: Chunk<A>) => NonEmptyChunk<A2 | A>
406
+ <A, A2>(self: Chunk<A>, a: A2): NonEmptyChunk<A | A2>
407
+ } = dual(2, <A, A2>(self: Chunk<A>, a: A2): NonEmptyChunk<A | A2> => appendAllNonEmpty(self, of(a)))
408
+
409
+ /**
410
+ * Prepend an element to the front of a `Chunk`, creating a new `NonEmptyChunk`.
411
+ *
412
+ * @category concatenating
413
+ * @since 2.0.0
414
+ */
415
+ export const prepend: {
416
+ <B>(elem: B): <A>(self: Chunk<A>) => NonEmptyChunk<B | A>
417
+ <A, B>(self: Chunk<A>, elem: B): NonEmptyChunk<A | B>
418
+ } = dual(2, <A, B>(self: Chunk<A>, elem: B): NonEmptyChunk<A | B> => appendAllNonEmpty(of(elem), self))
419
+
420
+ /**
421
+ * Takes the first up to `n` elements from the chunk
422
+ *
423
+ * @since 2.0.0
424
+ */
425
+ export const take: {
426
+ (n: number): <A>(self: Chunk<A>) => Chunk<A>
427
+ <A>(self: Chunk<A>, n: number): Chunk<A>
428
+ } = dual(2, <A>(self: Chunk<A>, n: number): Chunk<A> => {
429
+ if (n <= 0) {
430
+ return _empty
431
+ } else if (n >= self.length) {
432
+ return self
433
+ } else {
434
+ switch (self.backing._tag) {
435
+ case "ISlice": {
436
+ return makeChunk({
437
+ _tag: "ISlice",
438
+ chunk: self.backing.chunk,
439
+ length: n,
440
+ offset: self.backing.offset
441
+ })
442
+ }
443
+ case "IConcat": {
444
+ if (n > self.left.length) {
445
+ return makeChunk({
446
+ _tag: "IConcat",
447
+ left: self.left,
448
+ right: take(self.right, n - self.left.length)
449
+ })
450
+ }
451
+
452
+ return take(self.left, n)
453
+ }
454
+ default: {
455
+ return makeChunk({
456
+ _tag: "ISlice",
457
+ chunk: self,
458
+ offset: 0,
459
+ length: n
460
+ })
461
+ }
462
+ }
463
+ }
464
+ })
465
+
466
+ /**
467
+ * Drops the first up to `n` elements from the chunk
468
+ *
469
+ * @since 2.0.0
470
+ */
471
+ export const drop: {
472
+ (n: number): <A>(self: Chunk<A>) => Chunk<A>
473
+ <A>(self: Chunk<A>, n: number): Chunk<A>
474
+ } = dual(2, <A>(self: Chunk<A>, n: number): Chunk<A> => {
475
+ if (n <= 0) {
476
+ return self
477
+ } else if (n >= self.length) {
478
+ return _empty
479
+ } else {
480
+ switch (self.backing._tag) {
481
+ case "ISlice": {
482
+ return makeChunk({
483
+ _tag: "ISlice",
484
+ chunk: self.backing.chunk,
485
+ offset: self.backing.offset + n,
486
+ length: self.backing.length - n
487
+ })
488
+ }
489
+ case "IConcat": {
490
+ if (n > self.left.length) {
491
+ return drop(self.right, n - self.left.length)
492
+ }
493
+ return makeChunk({
494
+ _tag: "IConcat",
495
+ left: drop(self.left, n),
496
+ right: self.right
497
+ })
498
+ }
499
+ default: {
500
+ return makeChunk({
501
+ _tag: "ISlice",
502
+ chunk: self,
503
+ offset: n,
504
+ length: self.length - n
505
+ })
506
+ }
507
+ }
508
+ }
509
+ })
510
+
511
+ /**
512
+ * Drops the last `n` elements.
513
+ *
514
+ * @since 2.0.0
515
+ */
516
+ export const dropRight: {
517
+ (n: number): <A>(self: Chunk<A>) => Chunk<A>
518
+ <A>(self: Chunk<A>, n: number): Chunk<A>
519
+ } = dual(2, <A>(self: Chunk<A>, n: number): Chunk<A> => take(self, Math.max(0, self.length - n)))
520
+
521
+ /**
522
+ * Drops all elements so long as the predicate returns true.
523
+ *
524
+ * @since 2.0.0
525
+ */
526
+ export const dropWhile: {
527
+ <A>(f: (a: A) => boolean): (self: Chunk<A>) => Chunk<A>
528
+ <A>(self: Chunk<A>, f: (a: A) => boolean): Chunk<A>
529
+ } = dual(2, <A>(self: Chunk<A>, f: (a: A) => boolean): Chunk<A> => {
530
+ const arr = toReadonlyArray(self)
531
+ const len = arr.length
532
+ let i = 0
533
+ while (i < len && f(arr[i]!)) {
534
+ i++
535
+ }
536
+ return drop(self, i)
537
+ })
538
+
539
+ /**
540
+ * @category concatenating
541
+ * @since 2.0.0
542
+ */
543
+ export const prependAll: {
544
+ <B>(that: Chunk<B>): <A>(self: Chunk<A>) => Chunk<B | A>
545
+ <A, B>(self: Chunk<A>, that: Chunk<B>): Chunk<A | B>
546
+ } = dual(2, <A, B>(self: NonEmptyChunk<A>, that: Chunk<B>): Chunk<A | B> => appendAll(that, self))
547
+
548
+ /**
549
+ * @category concatenating
550
+ * @since 2.0.0
551
+ */
552
+ export const prependAllNonEmpty: {
553
+ <B>(that: NonEmptyChunk<B>): <A>(self: Chunk<A>) => NonEmptyChunk<B | A>
554
+ <B>(that: Chunk<B>): <A>(self: NonEmptyChunk<A>) => NonEmptyChunk<B | A>
555
+ <A, B>(self: Chunk<A>, that: NonEmptyChunk<B>): NonEmptyChunk<A | B>
556
+ <A, B>(self: NonEmptyChunk<A>, that: Chunk<B>): NonEmptyChunk<A | B>
557
+ } = dual(2, <A, B>(self: NonEmptyChunk<A>, that: Chunk<B>): NonEmptyChunk<A | B> => prependAll(self, that) as any)
558
+
559
+ /**
560
+ * Concatenates the two chunks
561
+ *
562
+ * @category concatenating
563
+ * @since 2.0.0
564
+ */
565
+ export const appendAll: {
566
+ <B>(that: Chunk<B>): <A>(self: Chunk<A>) => Chunk<B | A>
567
+ <A, B>(self: Chunk<A>, that: Chunk<B>): Chunk<A | B>
568
+ } = dual(2, <A, B>(self: Chunk<A>, that: Chunk<B>): Chunk<A | B> => {
569
+ if (self.backing._tag === "IEmpty") {
570
+ return that
571
+ }
572
+ if (that.backing._tag === "IEmpty") {
573
+ return self
574
+ }
575
+ const diff = that.depth - self.depth
576
+ if (Math.abs(diff) <= 1) {
577
+ return makeChunk<A | B>({ _tag: "IConcat", left: self, right: that })
578
+ } else if (diff < -1) {
579
+ if (self.left.depth >= self.right.depth) {
580
+ const nr = appendAll(self.right, that)
581
+ return makeChunk({ _tag: "IConcat", left: self.left, right: nr })
582
+ } else {
583
+ const nrr = appendAll(self.right.right, that)
584
+ if (nrr.depth === self.depth - 3) {
585
+ const nr = makeChunk({ _tag: "IConcat", left: self.right.left, right: nrr })
586
+ return makeChunk({ _tag: "IConcat", left: self.left, right: nr })
587
+ } else {
588
+ const nl = makeChunk({ _tag: "IConcat", left: self.left, right: self.right.left })
589
+ return makeChunk({ _tag: "IConcat", left: nl, right: nrr })
590
+ }
591
+ }
592
+ } else {
593
+ if (that.right.depth >= that.left.depth) {
594
+ const nl = appendAll(self, that.left)
595
+ return makeChunk({ _tag: "IConcat", left: nl, right: that.right })
596
+ } else {
597
+ const nll = appendAll(self, that.left.left)
598
+ if (nll.depth === that.depth - 3) {
599
+ const nl = makeChunk({ _tag: "IConcat", left: nll, right: that.left.right })
600
+ return makeChunk({ _tag: "IConcat", left: nl, right: that.right })
601
+ } else {
602
+ const nr = makeChunk({ _tag: "IConcat", left: that.left.right, right: that.right })
603
+ return makeChunk({ _tag: "IConcat", left: nll, right: nr })
604
+ }
605
+ }
606
+ }
607
+ })
608
+
609
+ /**
610
+ * @category concatenating
611
+ * @since 2.0.0
612
+ */
613
+ export const appendAllNonEmpty: {
614
+ <B>(that: NonEmptyChunk<B>): <A>(self: Chunk<A>) => NonEmptyChunk<B | A>
615
+ <B>(that: Chunk<B>): <A>(self: NonEmptyChunk<A>) => NonEmptyChunk<B | A>
616
+ <A, B>(self: Chunk<A>, that: NonEmptyChunk<B>): NonEmptyChunk<A | B>
617
+ <A, B>(self: NonEmptyChunk<A>, that: Chunk<B>): NonEmptyChunk<A | B>
618
+ } = dual(2, <A, B>(self: NonEmptyChunk<A>, that: Chunk<B>): NonEmptyChunk<A | B> => appendAll(self, that) as any)
619
+
620
+ /**
621
+ * Returns a filtered and mapped subset of the elements.
622
+ *
623
+ * @since 2.0.0
624
+ * @category filtering
625
+ */
626
+ export const filterMap: {
627
+ <A, B>(f: (a: A, i: number) => Option<B>): (self: Chunk<A>) => Chunk<B>
628
+ <A, B>(self: Chunk<A>, f: (a: A, i: number) => Option<B>): Chunk<B>
629
+ } = dual(
630
+ 2,
631
+ <A, B>(self: Chunk<A>, f: (a: A, i: number) => Option<B>): Chunk<B> => unsafeFromArray(RA.filterMap(self, f))
632
+ )
633
+
634
+ /**
635
+ * Returns a filtered and mapped subset of the elements.
636
+ *
637
+ * @since 2.0.0
638
+ * @category filtering
639
+ */
640
+ export const filter: {
641
+ <C extends A, B extends A, A = C>(refinement: Refinement<A, B>): (self: Chunk<C>) => Chunk<B>
642
+ <B extends A, A = B>(predicate: Predicate<A>): (self: Chunk<B>) => Chunk<B>
643
+ <C extends A, B extends A, A = C>(self: Chunk<C>, refinement: Refinement<A, B>): Chunk<B>
644
+ <B extends A, A = B>(self: Chunk<B>, predicate: Predicate<A>): Chunk<B>
645
+ } = dual(
646
+ 2,
647
+ <B extends A, A = B>(self: Chunk<B>, predicate: Predicate<A>) =>
648
+ unsafeFromArray(RA.filterMap(self, O.liftPredicate(predicate)))
649
+ )
650
+
651
+ /**
652
+ * Transforms all elements of the chunk for as long as the specified function returns some value
653
+ *
654
+ * @since 2.0.0
655
+ * @category filtering
656
+ */
657
+ export const filterMapWhile: {
658
+ <A, B>(f: (a: A) => Option<B>): (self: Chunk<A>) => Chunk<B>
659
+ <A, B>(self: Chunk<A>, f: (a: A) => Option<B>): Chunk<B>
660
+ } = dual(2, <A, B>(self: Chunk<A>, f: (a: A) => Option<B>) => unsafeFromArray(RA.filterMapWhile(self, f)))
661
+
662
+ /**
663
+ * Filter out optional values
664
+ *
665
+ * @since 2.0.0
666
+ * @category filtering
667
+ */
668
+ export const compact = <A>(self: Chunk<Option<A>>): Chunk<A> => filterMap(self, identity)
669
+
670
+ /**
671
+ * Returns a chunk with the elements mapped by the specified function.
672
+ *
673
+ * @since 2.0.0
674
+ * @category sequencing
675
+ */
676
+ export const flatMap: {
677
+ <A, B>(f: (a: A, i: number) => Chunk<B>): (self: Chunk<A>) => Chunk<B>
678
+ <A, B>(self: Chunk<A>, f: (a: A, i: number) => Chunk<B>): Chunk<B>
679
+ } = dual(2, <A, B>(self: Chunk<A>, f: (a: A, i: number) => Chunk<B>) => {
680
+ if (self.backing._tag === "ISingleton") {
681
+ return f(self.backing.a, 0)
682
+ }
683
+ let out: Chunk<B> = _empty
684
+ let i = 0
685
+ for (const k of self) {
686
+ out = appendAll(out, f(k, i++))
687
+ }
688
+ return out
689
+ })
690
+
691
+ /**
692
+ * @category sequencing
693
+ * @since 2.0.0
694
+ */
695
+ export const flatMapNonEmpty: {
696
+ <A, B>(f: (a: A, i: number) => NonEmptyChunk<B>): (self: NonEmptyChunk<A>) => NonEmptyChunk<B>
697
+ <A, B>(self: NonEmptyChunk<A>, f: (a: A, i: number) => NonEmptyChunk<B>): NonEmptyChunk<B>
698
+ } = flatMap as any
699
+
700
+ /**
701
+ * Applies the specified function to each element of the `List`.
702
+ *
703
+ * @since 2.0.0
704
+ * @category combinators
705
+ */
706
+ export const forEach: {
707
+ <A, B>(f: (a: A) => B): (self: Chunk<A>) => void
708
+ <A, B>(self: Chunk<A>, f: (a: A) => B): void
709
+ } = dual(2, <A, B>(self: Chunk<A>, f: (a: A) => B): void => toReadonlyArray(self).forEach(f))
710
+
711
+ /**
712
+ * Flattens a chunk of chunks into a single chunk by concatenating all chunks.
713
+ *
714
+ * @since 2.0.0
715
+ * @category sequencing
716
+ */
717
+ export const flatten: <A>(self: Chunk<Chunk<A>>) => Chunk<A> = flatMap(identity)
718
+
719
+ /**
720
+ * @category sequencing
721
+ * @since 2.0.0
722
+ */
723
+ export const flattenNonEmpty: <A>(
724
+ self: NonEmptyChunk<NonEmptyChunk<A>>
725
+ ) => NonEmptyChunk<A> = flatMapNonEmpty(identity)
726
+
727
+ /**
728
+ * Groups elements in chunks of up to `n` elements.
729
+ *
730
+ * @since 2.0.0
731
+ * @category elements
732
+ */
733
+ export const chunksOf: {
734
+ (n: number): <A>(self: Chunk<A>) => Chunk<Chunk<A>>
735
+ <A>(self: Chunk<A>, n: number): Chunk<Chunk<A>>
736
+ } = dual(2, <A>(self: Chunk<A>, n: number) => {
737
+ const gr: Array<Chunk<A>> = []
738
+ let current: Array<A> = []
739
+ toReadonlyArray(self).forEach((a) => {
740
+ current.push(a)
741
+ if (current.length >= n) {
742
+ gr.push(unsafeFromArray(current))
743
+ current = []
744
+ }
745
+ })
746
+ if (current.length > 0) {
747
+ gr.push(unsafeFromArray(current))
748
+ }
749
+ return unsafeFromArray(gr)
750
+ })
751
+
752
+ /**
753
+ * Creates a Chunk of unique values that are included in all given Chunks.
754
+ *
755
+ * The order and references of result values are determined by the Chunk.
756
+ *
757
+ * @since 2.0.0
758
+ * @category elements
759
+ */
760
+ export const intersection: {
761
+ <A>(that: Chunk<A>): <B>(self: Chunk<B>) => Chunk<A & B>
762
+ <A, B>(self: Chunk<A>, that: Chunk<B>): Chunk<A & B>
763
+ } = dual(
764
+ 2,
765
+ <A, B>(self: Chunk<A>, that: Chunk<B>): Chunk<A & B> =>
766
+ unsafeFromArray(RA.intersection(toReadonlyArray(self), toReadonlyArray(that)))
767
+ )
768
+
769
+ /**
770
+ * Determines if the chunk is empty.
771
+ *
772
+ * @since 2.0.0
773
+ * @category elements
774
+ */
775
+ export const isEmpty = <A>(self: Chunk<A>): boolean => self.length === 0
776
+
777
+ /**
778
+ * Determines if the chunk is not empty.
779
+ *
780
+ * @since 2.0.0
781
+ * @category elements
782
+ */
783
+ export const isNonEmpty = <A>(self: Chunk<A>): self is NonEmptyChunk<A> => self.length > 0
784
+
785
+ /**
786
+ * Returns the first element of this chunk if it exists.
787
+ *
788
+ * @since 2.0.0
789
+ * @category elements
790
+ */
791
+ export const head: <A>(self: Chunk<A>) => Option<A> = get(0)
792
+
793
+ /**
794
+ * Returns the first element of this chunk.
795
+ *
796
+ * @since 2.0.0
797
+ * @category unsafe
798
+ */
799
+ export const unsafeHead = <A>(self: Chunk<A>): A => unsafeGet(self, 0)
800
+
801
+ /**
802
+ * Returns the first element of this non empty chunk.
803
+ *
804
+ * @since 2.0.0
805
+ * @category elements
806
+ */
807
+ export const headNonEmpty: <A>(self: NonEmptyChunk<A>) => A = unsafeHead
808
+
809
+ /**
810
+ * Returns the last element of this chunk if it exists.
811
+ *
812
+ * @since 2.0.0
813
+ * @category elements
814
+ */
815
+ export const last = <A>(self: Chunk<A>): Option<A> => get(self, self.length - 1)
816
+
817
+ /**
818
+ * Returns the last element of this chunk.
819
+ *
820
+ * @since 2.0.0
821
+ * @category unsafe
822
+ */
823
+ export const unsafeLast = <A>(self: Chunk<A>): A => unsafeGet(self, self.length - 1)
824
+
825
+ /**
826
+ * Returns an effect whose success is mapped by the specified f function.
827
+ *
828
+ * @since 2.0.0
829
+ * @category mapping
830
+ */
831
+ export const map: {
832
+ <A, B>(f: (a: A, i: number) => B): (self: Chunk<A>) => Chunk<B>
833
+ <A, B>(self: Chunk<A>, f: (a: A, i: number) => B): Chunk<B>
834
+ } = dual(2, <A, B>(self: Chunk<A>, f: (a: A, i: number) => B): Chunk<B> =>
835
+ self.backing._tag === "ISingleton" ?
836
+ of(f(self.backing.a, 0)) :
837
+ unsafeFromArray(pipe(toReadonlyArray(self), RA.map((a, i) => f(a, i)))))
838
+
839
+ /**
840
+ * Statefully maps over the chunk, producing new elements of type `B`.
841
+ *
842
+ * @since 2.0.0
843
+ * @category folding
844
+ */
845
+ export const mapAccum: {
846
+ <S, A, B>(s: S, f: (s: S, a: A) => readonly [S, B]): (self: Chunk<A>) => [S, Chunk<B>]
847
+ <S, A, B>(self: Chunk<A>, s: S, f: (s: S, a: A) => readonly [S, B]): [S, Chunk<B>]
848
+ } = dual(3, <S, A, B>(self: Chunk<A>, s: S, f: (s: S, a: A) => readonly [S, B]): [S, Chunk<B>] => {
849
+ const [s1, as] = RA.mapAccum(self, s, f)
850
+ return [s1, unsafeFromArray(as)]
851
+ })
852
+
853
+ /**
854
+ * Separate elements based on a predicate that also exposes the index of the element.
855
+ *
856
+ * @category filtering
857
+ * @since 2.0.0
858
+ */
859
+ export const partition: {
860
+ <C extends A, B extends A, A = C>(refinement: Refinement<A, B>): (self: Chunk<C>) => [Chunk<Exclude<C, B>>, Chunk<B>]
861
+ <B extends A, A = B>(predicate: (a: A) => boolean): (self: Chunk<B>) => [Chunk<B>, Chunk<B>]
862
+ <C extends A, B extends A, A = C>(self: Chunk<C>, refinement: Refinement<A, B>): [Chunk<Exclude<C, B>>, Chunk<B>]
863
+ <B extends A, A = B>(self: Chunk<B>, predicate: (a: A) => boolean): [Chunk<B>, Chunk<B>]
864
+ } = dual(
865
+ 2,
866
+ <B extends A, A = B>(self: Chunk<B>, predicate: (a: A) => boolean): [Chunk<B>, Chunk<B>] =>
867
+ pipe(
868
+ RA.partition(toReadonlyArray(self), predicate),
869
+ ([l, r]) => [unsafeFromArray(l), unsafeFromArray(r)]
870
+ )
871
+ )
872
+
873
+ /**
874
+ * Partitions the elements of this chunk into two chunks using f.
875
+ *
876
+ * @category filtering
877
+ * @since 2.0.0
878
+ */
879
+ export const partitionMap: {
880
+ <A, B, C>(f: (a: A) => Either<B, C>): (self: Chunk<A>) => [Chunk<B>, Chunk<C>]
881
+ <A, B, C>(self: Chunk<A>, f: (a: A) => Either<B, C>): [Chunk<B>, Chunk<C>]
882
+ } = dual(2, <A, B, C>(self: Chunk<A>, f: (a: A) => Either<B, C>): [Chunk<B>, Chunk<C>] =>
883
+ pipe(
884
+ RA.partitionMap(toReadonlyArray(self), f),
885
+ ([l, r]) => [unsafeFromArray(l), unsafeFromArray(r)]
886
+ ))
887
+
888
+ /**
889
+ * Partitions the elements of this chunk into two chunks.
890
+ *
891
+ * @category filtering
892
+ * @since 2.0.0
893
+ */
894
+ export const separate = <A, B>(self: Chunk<Either<A, B>>): [Chunk<A>, Chunk<B>] =>
895
+ pipe(
896
+ RA.separate(toReadonlyArray(self)),
897
+ ([l, r]) => [unsafeFromArray(l), unsafeFromArray(r)]
898
+ )
899
+
900
+ /**
901
+ * Retireves the size of the chunk
902
+ *
903
+ * @since 2.0.0
904
+ * @category elements
905
+ */
906
+ export const size = <A>(self: Chunk<A>): number => self.length
907
+
908
+ /**
909
+ * Sort the elements of a Chunk in increasing order, creating a new Chunk.
910
+ *
911
+ * @since 2.0.0
912
+ * @category elements
913
+ */
914
+ export const sort: {
915
+ <B>(O: Order.Order<B>): <A extends B>(self: Chunk<A>) => Chunk<A>
916
+ <A extends B, B>(self: Chunk<A>, O: Order.Order<B>): Chunk<A>
917
+ } = dual(
918
+ 2,
919
+ <A extends B, B>(self: Chunk<A>, O: Order.Order<B>): Chunk<A> => unsafeFromArray(RA.sort(toReadonlyArray(self), O))
920
+ )
921
+
922
+ /**
923
+ * @since 2.0.0
924
+ * @category elements
925
+ */
926
+ export const sortWith: {
927
+ <A, B>(f: (a: A) => B, order: Order.Order<B>): (self: Chunk<A>) => Chunk<A>
928
+ <A, B>(self: Chunk<A>, f: (a: A) => B, order: Order.Order<B>): Chunk<A>
929
+ } = dual(
930
+ 3,
931
+ <A, B>(self: Chunk<A>, f: (a: A) => B, order: Order.Order<B>): Chunk<A> => sort(self, Order.mapInput(order, f))
932
+ )
933
+
934
+ /**
935
+ * Returns two splits of this chunk at the specified index.
936
+ *
937
+ * @since 2.0.0
938
+ * @category elements
939
+ */
940
+ export const splitAt: {
941
+ (n: number): <A>(self: Chunk<A>) => [Chunk<A>, Chunk<A>]
942
+ <A>(self: Chunk<A>, n: number): [Chunk<A>, Chunk<A>]
943
+ } = dual(2, <A>(self: Chunk<A>, n: number): [Chunk<A>, Chunk<A>] => [take(self, n), drop(self, n)])
944
+
945
+ /**
946
+ * Splits this chunk into `n` equally sized chunks.
947
+ *
948
+ * @since 2.0.0
949
+ * @category elements
950
+ */
951
+ export const split: {
952
+ (n: number): <A>(self: Chunk<A>) => Chunk<Chunk<A>>
953
+ <A>(self: Chunk<A>, n: number): Chunk<Chunk<A>>
954
+ } = dual(2, <A>(self: Chunk<A>, n: number) => chunksOf(self, Math.ceil(self.length / Math.floor(n))))
955
+
956
+ /**
957
+ * Splits this chunk on the first element that matches this predicate.
958
+ *
959
+ * @category elements
960
+ * @since 2.0.0
961
+ */
962
+ export const splitWhere: {
963
+ <A>(predicate: Predicate<A>): (self: Chunk<A>) => [Chunk<A>, Chunk<A>]
964
+ <A>(self: Chunk<A>, predicate: Predicate<A>): [Chunk<A>, Chunk<A>]
965
+ } = dual(2, <A>(self: Chunk<A>, predicate: Predicate<A>): [Chunk<A>, Chunk<A>] => {
966
+ let i = 0
967
+ for (const a of toReadonlyArray(self)) {
968
+ if (predicate(a)) {
969
+ break
970
+ } else {
971
+ i++
972
+ }
973
+ }
974
+ return splitAt(self, i)
975
+ })
976
+
977
+ /**
978
+ * Returns every elements after the first.
979
+ *
980
+ * @since 2.0.0
981
+ * @category elements
982
+ */
983
+ export const tail = <A>(self: Chunk<A>): Option<Chunk<A>> => self.length > 0 ? O.some(drop(self, 1)) : O.none()
984
+
985
+ /**
986
+ * Returns every elements after the first.
987
+ *
988
+ * @since 2.0.0
989
+ * @category elements
990
+ */
991
+ export const tailNonEmpty = <A>(self: NonEmptyChunk<A>): Chunk<A> => drop(self, 1)
992
+
993
+ /**
994
+ * Takes the last `n` elements.
995
+ *
996
+ * @since 2.0.0
997
+ * @category elements
998
+ */
999
+ export const takeRight: {
1000
+ (n: number): <A>(self: Chunk<A>) => Chunk<A>
1001
+ <A>(self: Chunk<A>, n: number): Chunk<A>
1002
+ } = dual(2, <A>(self: Chunk<A>, n: number): Chunk<A> => drop(self, self.length - n))
1003
+
1004
+ /**
1005
+ * Takes all elements so long as the predicate returns true.
1006
+ *
1007
+ * @since 2.0.0
1008
+ * @category elements
1009
+ */
1010
+ export const takeWhile: {
1011
+ <A>(predicate: Predicate<A>): (self: Chunk<A>) => Chunk<A>
1012
+ <A>(self: Chunk<A>, predicate: Predicate<A>): Chunk<A>
1013
+ } = dual(2, <A>(self: Chunk<A>, predicate: Predicate<A>) => {
1014
+ const res: Array<A> = []
1015
+ for (const a of toReadonlyArray(self)) {
1016
+ if (predicate(a)) {
1017
+ res.push(a)
1018
+ } else {
1019
+ break
1020
+ }
1021
+ }
1022
+ return unsafeFromArray(res)
1023
+ })
1024
+
1025
+ /**
1026
+ * Creates a Chunks of unique values, in order, from all given Chunks.
1027
+ *
1028
+ * @since 2.0.0
1029
+ * @category elements
1030
+ */
1031
+ export const union: {
1032
+ <A>(that: Chunk<A>): <B>(self: Chunk<B>) => Chunk<A | B>
1033
+ <A, B>(self: Chunk<A>, that: Chunk<B>): Chunk<A | B>
1034
+ } = dual(
1035
+ 2,
1036
+ <A, B>(self: Chunk<A>, that: Chunk<B>) => unsafeFromArray(RA.union(toReadonlyArray(self), toReadonlyArray(that)))
1037
+ )
1038
+
1039
+ /**
1040
+ * Remove duplicates from an array, keeping the first occurrence of an element.
1041
+ *
1042
+ * @since 2.0.0
1043
+ * @category elements
1044
+ */
1045
+ export const dedupe = <A>(self: Chunk<A>): Chunk<A> => unsafeFromArray(RA.dedupe(toReadonlyArray(self)))
1046
+
1047
+ /**
1048
+ * Deduplicates adjacent elements that are identical.
1049
+ *
1050
+ * @since 2.0.0
1051
+ * @category filtering
1052
+ */
1053
+ export const dedupeAdjacent = <A>(self: Chunk<A>): Chunk<A> => unsafeFromArray(RA.dedupeAdjacent(self))
1054
+
1055
+ /**
1056
+ * Takes a `Chunk` of pairs and return two corresponding `Chunk`s.
1057
+ *
1058
+ * Note: The function is reverse of `zip`.
1059
+ *
1060
+ * @since 2.0.0
1061
+ * @category elements
1062
+ */
1063
+ export const unzip = <A, B>(self: Chunk<readonly [A, B]>): [Chunk<A>, Chunk<B>] => {
1064
+ const [left, right] = RA.unzip(self)
1065
+ return [unsafeFromArray(left), unsafeFromArray(right)]
1066
+ }
1067
+
1068
+ /**
1069
+ * Zips this chunk pointwise with the specified chunk using the specified combiner.
1070
+ *
1071
+ * @since 2.0.0
1072
+ * @category elements
1073
+ */
1074
+ export const zipWith: {
1075
+ <A, B, C>(that: Chunk<B>, f: (a: A, b: B) => C): (self: Chunk<A>) => Chunk<C>
1076
+ <A, B, C>(self: Chunk<A>, that: Chunk<B>, f: (a: A, b: B) => C): Chunk<C>
1077
+ } = dual(
1078
+ 3,
1079
+ <A, B, C>(self: Chunk<A>, that: Chunk<B>, f: (a: A, b: B) => C): Chunk<C> =>
1080
+ unsafeFromArray(RA.zipWith(self, that, f))
1081
+ )
1082
+
1083
+ /**
1084
+ * Zips this chunk pointwise with the specified chunk.
1085
+ *
1086
+ * @since 2.0.0
1087
+ * @category elements
1088
+ */
1089
+ export const zip: {
1090
+ <B>(that: Chunk<B>): <A>(self: Chunk<A>) => Chunk<readonly [A, B]>
1091
+ <A, B>(self: Chunk<A>, that: Chunk<B>): Chunk<readonly [A, B]>
1092
+ } = dual(
1093
+ 2,
1094
+ <A, B>(self: Chunk<A>, that: Chunk<B>): Chunk<readonly [A, B]> => zipWith(self, that, (a, b) => [a, b])
1095
+ )
1096
+
1097
+ /**
1098
+ * Delete the element at the specified index, creating a new `Chunk`,
1099
+ * or returning the input if the index is out of bounds.
1100
+ *
1101
+ * @since 2.0.0
1102
+ */
1103
+ export const remove: {
1104
+ (i: number): <A>(self: Chunk<A>) => Chunk<A>
1105
+ <A>(self: Chunk<A>, i: number): Chunk<A>
1106
+ } = dual(
1107
+ 2,
1108
+ <A>(self: Chunk<A>, i: number): Chunk<A> => unsafeFromArray(RA.remove(toReadonlyArray(self), i))
1109
+ )
1110
+
1111
+ /**
1112
+ * @since 2.0.0
1113
+ */
1114
+ export const modifyOption: {
1115
+ <A, B>(i: number, f: (a: A) => B): (self: Chunk<A>) => Option<Chunk<A | B>>
1116
+ <A, B>(self: Chunk<A>, i: number, f: (a: A) => B): Option<Chunk<A | B>>
1117
+ } = dual(
1118
+ 3,
1119
+ <A, B>(self: Chunk<A>, i: number, f: (a: A) => B): Option<Chunk<A | B>> =>
1120
+ O.map(RA.modifyOption(toReadonlyArray(self), i, f), unsafeFromArray)
1121
+ )
1122
+
1123
+ /**
1124
+ * Apply a function to the element at the specified index, creating a new `Chunk`,
1125
+ * or returning the input if the index is out of bounds.
1126
+ *
1127
+ * @since 2.0.0
1128
+ */
1129
+ export const modify: {
1130
+ <A, B>(i: number, f: (a: A) => B): (self: Chunk<A>) => Chunk<A | B>
1131
+ <A, B>(self: Chunk<A>, i: number, f: (a: A) => B): Chunk<A | B>
1132
+ } = dual(
1133
+ 3,
1134
+ <A, B>(self: Chunk<A>, i: number, f: (a: A) => B): Chunk<A | B> => O.getOrElse(modifyOption(self, i, f), () => self)
1135
+ )
1136
+
1137
+ /**
1138
+ * Change the element at the specified index, creating a new `Chunk`,
1139
+ * or returning the input if the index is out of bounds.
1140
+ *
1141
+ * @since 2.0.0
1142
+ */
1143
+ export const replace: {
1144
+ <B>(i: number, b: B): <A>(self: Chunk<A>) => Chunk<B | A>
1145
+ <A, B>(self: Chunk<A>, i: number, b: B): Chunk<B | A>
1146
+ } = dual(3, <A, B>(self: Chunk<A>, i: number, b: B): Chunk<B | A> => modify(self, i, () => b))
1147
+
1148
+ /**
1149
+ * @since 2.0.0
1150
+ */
1151
+ export const replaceOption: {
1152
+ <B>(i: number, b: B): <A>(self: Chunk<A>) => Option<Chunk<B | A>>
1153
+ <A, B>(self: Chunk<A>, i: number, b: B): Option<Chunk<B | A>>
1154
+ } = dual(3, <A, B>(self: Chunk<A>, i: number, b: B): Option<Chunk<B | A>> => modifyOption(self, i, () => b))
1155
+
1156
+ /**
1157
+ * Return a Chunk of length n with element i initialized with f(i).
1158
+ *
1159
+ * **Note**. `n` is normalized to an integer >= 1.
1160
+ *
1161
+ * @category constructors
1162
+ * @since 2.0.0
1163
+ */
1164
+ export const makeBy: {
1165
+ <A>(f: (i: number) => A): (n: number) => NonEmptyChunk<A>
1166
+ <A>(n: number, f: (i: number) => A): NonEmptyChunk<A>
1167
+ } = dual(2, (n, f) => fromIterable(RA.makeBy(n, f)))
1168
+
1169
+ /**
1170
+ * Create a non empty `Chunk` containing a range of integers, including both endpoints.
1171
+ *
1172
+ * @category constructors
1173
+ * @since 2.0.0
1174
+ */
1175
+ export const range = (start: number, end: number): NonEmptyChunk<number> =>
1176
+ start <= end ? makeBy(end - start + 1, (i) => start + i) : of(start)
1177
+
1178
+ // -------------------------------------------------------------------------------------
1179
+ // re-exports from ReadonlyArray
1180
+ // -------------------------------------------------------------------------------------
1181
+
1182
+ /**
1183
+ * Returns a function that checks if a `Chunk` contains a given value using the default `Equivalence`.
1184
+ *
1185
+ * @category elements
1186
+ * @since 2.0.0
1187
+ */
1188
+ export const contains: {
1189
+ <A>(a: A): (self: Chunk<A>) => boolean
1190
+ <A>(self: Chunk<A>, a: A): boolean
1191
+ } = RA.contains
1192
+
1193
+ /**
1194
+ * Returns a function that checks if a `Chunk` contains a given value using a provided `isEquivalent` function.
1195
+ *
1196
+ * @category elements
1197
+ * @since 2.0.0
1198
+ */
1199
+ export const containsWith: <A>(
1200
+ isEquivalent: (self: A, that: A) => boolean
1201
+ ) => {
1202
+ (a: A): (self: Chunk<A>) => boolean
1203
+ (self: Chunk<A>, a: A): boolean
1204
+ } = RA.containsWith
1205
+
1206
+ /**
1207
+ * Returns the first element that satisfies the specified
1208
+ * predicate, or `None` if no such element exists.
1209
+ *
1210
+ * @category elements
1211
+ * @since 2.0.0
1212
+ */
1213
+ export const findFirst: {
1214
+ <A, B extends A>(refinement: Refinement<A, B>): (self: Chunk<A>) => Option<B>
1215
+ <A>(predicate: Predicate<A>): <B extends A>(self: Chunk<B>) => Option<B>
1216
+ <A, B extends A>(self: Chunk<A>, refinement: Refinement<A, B>): Option<B>
1217
+ <B extends A, A>(self: Chunk<B>, predicate: Predicate<A>): Option<B>
1218
+ } = RA.findFirst
1219
+
1220
+ /**
1221
+ * Return the first index for which a predicate holds.
1222
+ *
1223
+ * @category elements
1224
+ * @since 2.0.0
1225
+ */
1226
+ export const findFirstIndex: {
1227
+ <A>(predicate: Predicate<A>): (self: Chunk<A>) => Option<number>
1228
+ <A>(self: Chunk<A>, predicate: Predicate<A>): Option<number>
1229
+ } = RA.findFirstIndex
1230
+
1231
+ /**
1232
+ * Find the last element for which a predicate holds.
1233
+ *
1234
+ * @category elements
1235
+ * @since 2.0.0
1236
+ */
1237
+ export const findLast: {
1238
+ <A, B extends A>(refinement: Refinement<A, B>): (self: Chunk<A>) => Option<B>
1239
+ <A>(predicate: Predicate<A>): <B extends A>(self: Chunk<B>) => Option<B>
1240
+ <A, B extends A>(self: Chunk<A>, refinement: Refinement<A, B>): Option<B>
1241
+ <B extends A, A>(self: Chunk<B>, predicate: Predicate<A>): Option<B>
1242
+ } = RA.findLast
1243
+
1244
+ /**
1245
+ * Return the last index for which a predicate holds.
1246
+ *
1247
+ * @category elements
1248
+ * @since 2.0.0
1249
+ */
1250
+ export const findLastIndex: {
1251
+ <A>(predicate: Predicate<A>): (self: Chunk<A>) => Option<number>
1252
+ <A>(self: Chunk<A>, predicate: Predicate<A>): Option<number>
1253
+ } = RA.findLastIndex
1254
+
1255
+ /**
1256
+ * Check if a predicate holds true for every `Chunk` element.
1257
+ *
1258
+ * @category elements
1259
+ * @since 2.0.0
1260
+ */
1261
+ export const every: {
1262
+ <A, B extends A>(refinement: Refinement<A, B>): (self: Chunk<A>) => self is Chunk<B>
1263
+ <A>(predicate: Predicate<A>): (self: Chunk<A>) => boolean
1264
+ <A, B extends A>(self: Chunk<A>, refinement: Refinement<A, B>): self is Chunk<B>
1265
+ <A>(self: Chunk<A>, predicate: Predicate<A>): boolean
1266
+ } = dual(
1267
+ 2,
1268
+ <A, B extends A>(self: Chunk<A>, refinement: Refinement<A, B>): self is Chunk<B> =>
1269
+ RA.fromIterable(self).every(refinement)
1270
+ )
1271
+
1272
+ /**
1273
+ * Check if a predicate holds true for some `Chunk` element.
1274
+ *
1275
+ * @category elements
1276
+ * @since 2.0.0
1277
+ */
1278
+ export const some: {
1279
+ <A>(predicate: Predicate<A>): <B extends A>(self: Chunk<B>) => self is NonEmptyChunk<B>
1280
+ <B extends A, A = B>(self: Chunk<B>, predicate: Predicate<A>): self is NonEmptyChunk<B>
1281
+ } = dual(
1282
+ 2,
1283
+ <B extends A, A = B>(self: Chunk<B>, predicate: Predicate<A>): self is NonEmptyChunk<B> =>
1284
+ RA.fromIterable(self).some(predicate)
1285
+ )
1286
+
1287
+ /**
1288
+ * Joins the elements together with "sep" in the middle.
1289
+ *
1290
+ * @category folding
1291
+ * @since 2.0.0
1292
+ */
1293
+ export const join: {
1294
+ (sep: string): (self: Chunk<string>) => string
1295
+ (self: Chunk<string>, sep: string): string
1296
+ } = RA.join
1297
+
1298
+ /**
1299
+ * @category folding
1300
+ * @since 2.0.0
1301
+ */
1302
+ export const reduce: {
1303
+ <B, A>(b: B, f: (b: B, a: A, i: number) => B): (self: Chunk<A>) => B
1304
+ <A, B>(self: Chunk<A>, b: B, f: (b: B, a: A, i: number) => B): B
1305
+ } = RA.reduce
1306
+
1307
+ /**
1308
+ * @category folding
1309
+ * @since 2.0.0
1310
+ */
1311
+ export const reduceRight: {
1312
+ <B, A>(b: B, f: (b: B, a: A, i: number) => B): (self: Chunk<A>) => B
1313
+ <A, B>(self: Chunk<A>, b: B, f: (b: B, a: A, i: number) => B): B
1314
+ } = RA.reduceRight