effect 2.0.0-next.56 → 2.0.0-next.57

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 (887) hide show
  1. package/dist/cjs/BigDecimal.js +9 -9
  2. package/dist/cjs/BigDecimal.js.map +1 -1
  3. package/dist/cjs/BigInt.js.map +1 -1
  4. package/dist/cjs/Boolean.js.map +1 -1
  5. package/dist/cjs/Brand.js.map +1 -1
  6. package/dist/cjs/Cache.js.map +1 -1
  7. package/dist/cjs/Cause.js.map +1 -1
  8. package/dist/cjs/Channel.js.map +1 -1
  9. package/dist/cjs/Chunk.js +38 -29
  10. package/dist/cjs/Chunk.js.map +1 -1
  11. package/dist/cjs/Config.js +3 -3
  12. package/dist/cjs/Config.js.map +1 -1
  13. package/dist/cjs/Context.js.map +1 -1
  14. package/dist/cjs/Data.js.map +1 -1
  15. package/dist/cjs/Deferred.js.map +1 -1
  16. package/dist/cjs/Differ.js.map +1 -1
  17. package/dist/cjs/Duration.js +45 -2
  18. package/dist/cjs/Duration.js.map +1 -1
  19. package/dist/cjs/Effect.js +6 -11
  20. package/dist/cjs/Effect.js.map +1 -1
  21. package/dist/cjs/Either.js +36 -7
  22. package/dist/cjs/Either.js.map +1 -1
  23. package/dist/cjs/Equal.js.map +1 -1
  24. package/dist/cjs/Equivalence.js +1 -1
  25. package/dist/cjs/Equivalence.js.map +1 -1
  26. package/dist/cjs/Fiber.js.map +1 -1
  27. package/dist/cjs/FiberRef.js +6 -1
  28. package/dist/cjs/FiberRef.js.map +1 -1
  29. package/dist/cjs/Function.js.map +1 -1
  30. package/dist/cjs/GlobalValue.js.map +1 -1
  31. package/dist/cjs/GroupBy.js.map +1 -1
  32. package/dist/cjs/Hash.js.map +1 -1
  33. package/dist/cjs/Inspectable.js +4 -6
  34. package/dist/cjs/Inspectable.js.map +1 -1
  35. package/dist/cjs/KeyedPool.js.map +1 -1
  36. package/dist/cjs/Layer.js +9 -29
  37. package/dist/cjs/Layer.js.map +1 -1
  38. package/dist/cjs/List.js +25 -22
  39. package/dist/cjs/List.js.map +1 -1
  40. package/dist/cjs/LogLevel.js.map +1 -1
  41. package/dist/cjs/Logger.js.map +1 -1
  42. package/dist/cjs/Match.js.map +1 -1
  43. package/dist/cjs/MergeDecision.js.map +1 -1
  44. package/dist/cjs/Metric.js.map +1 -1
  45. package/dist/cjs/MetricHook.js.map +1 -1
  46. package/dist/cjs/MetricKey.js.map +1 -1
  47. package/dist/cjs/MetricKeyType.js.map +1 -1
  48. package/dist/cjs/MetricPair.js.map +1 -1
  49. package/dist/cjs/MetricState.js.map +1 -1
  50. package/dist/cjs/MutableHashMap.js +1 -1
  51. package/dist/cjs/MutableHashMap.js.map +1 -1
  52. package/dist/cjs/MutableHashSet.js +1 -1
  53. package/dist/cjs/MutableHashSet.js.map +1 -1
  54. package/dist/cjs/MutableList.js +1 -1
  55. package/dist/cjs/MutableList.js.map +1 -1
  56. package/dist/cjs/MutableQueue.js +1 -1
  57. package/dist/cjs/MutableQueue.js.map +1 -1
  58. package/dist/cjs/MutableRef.js +1 -1
  59. package/dist/cjs/MutableRef.js.map +1 -1
  60. package/dist/cjs/NonEmptyIterable.js.map +1 -1
  61. package/dist/cjs/Number.js.map +1 -1
  62. package/dist/cjs/Option.js +19 -12
  63. package/dist/cjs/Option.js.map +1 -1
  64. package/dist/cjs/Order.js +1 -1
  65. package/dist/cjs/Order.js.map +1 -1
  66. package/dist/cjs/Ordering.js.map +1 -1
  67. package/dist/cjs/Pipeable.js.map +1 -1
  68. package/dist/cjs/Pool.js +15 -17
  69. package/dist/cjs/Pool.js.map +1 -1
  70. package/dist/cjs/Predicate.js.map +1 -1
  71. package/dist/cjs/PrimaryKey.js +7 -1
  72. package/dist/cjs/PrimaryKey.js.map +1 -1
  73. package/dist/cjs/Queue.js.map +1 -1
  74. package/dist/cjs/ReadonlyArray.js +200 -187
  75. package/dist/cjs/ReadonlyArray.js.map +1 -1
  76. package/dist/cjs/ReadonlyRecord.js +59 -6
  77. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  78. package/dist/cjs/RedBlackTree.js.map +1 -1
  79. package/dist/cjs/Ref.js.map +1 -1
  80. package/dist/cjs/Reloadable.js.map +1 -1
  81. package/dist/cjs/Request.js +8 -1
  82. package/dist/cjs/Request.js.map +1 -1
  83. package/dist/cjs/RequestBlock.js +5 -24
  84. package/dist/cjs/RequestBlock.js.map +1 -1
  85. package/dist/cjs/RequestResolver.js.map +1 -1
  86. package/dist/cjs/Resource.js.map +1 -1
  87. package/dist/cjs/STM.js.map +1 -1
  88. package/dist/cjs/Schedule.js.map +1 -1
  89. package/dist/cjs/Scheduler.js.map +1 -1
  90. package/dist/cjs/ScopedCache.js.map +1 -1
  91. package/dist/cjs/ScopedRef.js.map +1 -1
  92. package/dist/cjs/Sink.js.map +1 -1
  93. package/dist/cjs/SortedMap.js +1 -1
  94. package/dist/cjs/SortedMap.js.map +1 -1
  95. package/dist/cjs/SortedSet.js +1 -1
  96. package/dist/cjs/SortedSet.js.map +1 -1
  97. package/dist/cjs/Stream.js.map +1 -1
  98. package/dist/cjs/Streamable.js +3 -0
  99. package/dist/cjs/Streamable.js.map +1 -1
  100. package/dist/cjs/String.js.map +1 -1
  101. package/dist/cjs/Struct.js.map +1 -1
  102. package/dist/cjs/SubscriptionRef.js.map +1 -1
  103. package/dist/cjs/Supervisor.js.map +1 -1
  104. package/dist/cjs/SynchronizedRef.js.map +1 -1
  105. package/dist/cjs/TArray.js.map +1 -1
  106. package/dist/cjs/TDeferred.js.map +1 -1
  107. package/dist/cjs/TMap.js.map +1 -1
  108. package/dist/cjs/TPriorityQueue.js.map +1 -1
  109. package/dist/cjs/TPubSub.js.map +1 -1
  110. package/dist/cjs/TQueue.js.map +1 -1
  111. package/dist/cjs/TRef.js.map +1 -1
  112. package/dist/cjs/TSet.js.map +1 -1
  113. package/dist/cjs/Take.js.map +1 -1
  114. package/dist/cjs/TestAnnotation.js.map +1 -1
  115. package/dist/cjs/TestAnnotationMap.js.map +1 -1
  116. package/dist/cjs/TestAnnotations.js.map +1 -1
  117. package/dist/cjs/TestClock.js.map +1 -1
  118. package/dist/cjs/TestContext.js +2 -2
  119. package/dist/cjs/TestContext.js.map +1 -1
  120. package/dist/cjs/UpstreamPullRequest.js.map +1 -1
  121. package/dist/cjs/UpstreamPullStrategy.js.map +1 -1
  122. package/dist/cjs/Utils.js.map +1 -1
  123. package/dist/cjs/internal/Iterable.js.map +1 -1
  124. package/dist/cjs/internal/blockedRequests.js +3 -2
  125. package/dist/cjs/internal/blockedRequests.js.map +1 -1
  126. package/dist/cjs/internal/cache.js +3 -0
  127. package/dist/cjs/internal/cache.js.map +1 -1
  128. package/dist/cjs/internal/cause.js +1 -1
  129. package/dist/cjs/internal/cause.js.map +1 -1
  130. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  131. package/dist/cjs/internal/channel/channelState.js +2 -1
  132. package/dist/cjs/internal/channel/channelState.js.map +1 -1
  133. package/dist/cjs/internal/channel/childExecutorDecision.js.map +1 -1
  134. package/dist/cjs/internal/channel/continuation.js +9 -1
  135. package/dist/cjs/internal/channel/continuation.js.map +1 -1
  136. package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
  137. package/dist/cjs/internal/channel/mergeState.js.map +1 -1
  138. package/dist/cjs/internal/channel/mergeStrategy.js.map +1 -1
  139. package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
  140. package/dist/cjs/internal/channel/subexecutor.js.map +1 -1
  141. package/dist/cjs/internal/channel/upstreamPullRequest.js +1 -1
  142. package/dist/cjs/internal/channel/upstreamPullRequest.js.map +1 -1
  143. package/dist/cjs/internal/channel/upstreamPullStrategy.js +1 -1
  144. package/dist/cjs/internal/channel/upstreamPullStrategy.js.map +1 -1
  145. package/dist/cjs/internal/channel.js.map +1 -1
  146. package/dist/cjs/internal/clock.js.map +1 -1
  147. package/dist/cjs/internal/concurrency.js.map +1 -1
  148. package/dist/cjs/internal/config.js +16 -24
  149. package/dist/cjs/internal/config.js.map +1 -1
  150. package/dist/cjs/internal/configError.js +2 -2
  151. package/dist/cjs/internal/configError.js.map +1 -1
  152. package/dist/cjs/internal/configProvider/pathPatch.js.map +1 -1
  153. package/dist/cjs/internal/configProvider.js +5 -3
  154. package/dist/cjs/internal/configProvider.js.map +1 -1
  155. package/dist/cjs/internal/configSecret.js.map +1 -1
  156. package/dist/cjs/internal/context.js +5 -5
  157. package/dist/cjs/internal/context.js.map +1 -1
  158. package/dist/cjs/internal/core-effect.js +13 -9
  159. package/dist/cjs/internal/core-effect.js.map +1 -1
  160. package/dist/cjs/internal/core-stream.js +7 -1
  161. package/dist/cjs/internal/core-stream.js.map +1 -1
  162. package/dist/cjs/internal/core.js +47 -77
  163. package/dist/cjs/internal/core.js.map +1 -1
  164. package/dist/cjs/internal/data.js.map +1 -1
  165. package/dist/cjs/internal/dataSource.js.map +1 -1
  166. package/dist/cjs/internal/deferred.js +2 -0
  167. package/dist/cjs/internal/deferred.js.map +1 -1
  168. package/dist/cjs/internal/differ/chunkPatch.js.map +1 -1
  169. package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
  170. package/dist/cjs/internal/differ/hashMapPatch.js.map +1 -1
  171. package/dist/cjs/internal/differ/hashSetPatch.js.map +1 -1
  172. package/dist/cjs/internal/differ/orPatch.js.map +1 -1
  173. package/dist/cjs/internal/differ.js.map +1 -1
  174. package/dist/cjs/internal/effect/circular.js +1 -0
  175. package/dist/cjs/internal/effect/circular.js.map +1 -1
  176. package/dist/cjs/internal/effectable.js +18 -5
  177. package/dist/cjs/internal/effectable.js.map +1 -1
  178. package/dist/cjs/internal/either.js +1 -1
  179. package/dist/cjs/internal/either.js.map +1 -1
  180. package/dist/cjs/internal/encoding/base64.js.map +1 -1
  181. package/dist/cjs/internal/encoding/base64Url.js.map +1 -1
  182. package/dist/cjs/internal/encoding/common.js.map +1 -1
  183. package/dist/cjs/internal/encoding/hex.js.map +1 -1
  184. package/dist/cjs/internal/executionStrategy.js.map +1 -1
  185. package/dist/cjs/internal/fiber.js +2 -0
  186. package/dist/cjs/internal/fiber.js.map +1 -1
  187. package/dist/cjs/internal/fiberId.js +3 -3
  188. package/dist/cjs/internal/fiberId.js.map +1 -1
  189. package/dist/cjs/internal/fiberRefs/patch.js.map +1 -1
  190. package/dist/cjs/internal/fiberRefs.js.map +1 -1
  191. package/dist/cjs/internal/fiberRuntime.js +172 -208
  192. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  193. package/dist/cjs/internal/groupBy.js +4 -1
  194. package/dist/cjs/internal/groupBy.js.map +1 -1
  195. package/dist/cjs/internal/hashMap/array.js.map +1 -1
  196. package/dist/cjs/internal/hashMap/node.js.map +1 -1
  197. package/dist/cjs/internal/hashMap.js +1 -1
  198. package/dist/cjs/internal/hashMap.js.map +1 -1
  199. package/dist/cjs/internal/hashSet.js +1 -1
  200. package/dist/cjs/internal/hashSet.js.map +1 -1
  201. package/dist/cjs/internal/keyedPool.js +3 -0
  202. package/dist/cjs/internal/keyedPool.js.map +1 -1
  203. package/dist/cjs/internal/layer.js +23 -53
  204. package/dist/cjs/internal/layer.js.map +1 -1
  205. package/dist/cjs/internal/logger.js +2 -1
  206. package/dist/cjs/internal/logger.js.map +1 -1
  207. package/dist/cjs/internal/matcher.js.map +1 -1
  208. package/dist/cjs/internal/metric/hook.js +2 -1
  209. package/dist/cjs/internal/metric/hook.js.map +1 -1
  210. package/dist/cjs/internal/metric/key.js +1 -1
  211. package/dist/cjs/internal/metric/key.js.map +1 -1
  212. package/dist/cjs/internal/metric/keyType.js +2 -1
  213. package/dist/cjs/internal/metric/keyType.js.map +1 -1
  214. package/dist/cjs/internal/metric/pair.js +1 -1
  215. package/dist/cjs/internal/metric/pair.js.map +1 -1
  216. package/dist/cjs/internal/metric/polling.js.map +1 -1
  217. package/dist/cjs/internal/metric/registry.js.map +1 -1
  218. package/dist/cjs/internal/metric/state.js +1 -1
  219. package/dist/cjs/internal/metric/state.js.map +1 -1
  220. package/dist/cjs/internal/metric.js +7 -5
  221. package/dist/cjs/internal/metric.js.map +1 -1
  222. package/dist/cjs/internal/opCodes/layer.js +4 -4
  223. package/dist/cjs/internal/opCodes/layer.js.map +1 -1
  224. package/dist/cjs/internal/option.js +1 -1
  225. package/dist/cjs/internal/option.js.map +1 -1
  226. package/dist/cjs/internal/pool.js +2 -0
  227. package/dist/cjs/internal/pool.js.map +1 -1
  228. package/dist/cjs/internal/pubsub.js +1 -1
  229. package/dist/cjs/internal/pubsub.js.map +1 -1
  230. package/dist/cjs/internal/query.js +1 -1
  231. package/dist/cjs/internal/query.js.map +1 -1
  232. package/dist/cjs/internal/queue.js +6 -4
  233. package/dist/cjs/internal/queue.js.map +1 -1
  234. package/dist/cjs/internal/random.js.map +1 -1
  235. package/dist/cjs/internal/redBlackTree/iterator.js.map +1 -1
  236. package/dist/cjs/internal/redBlackTree.js +3 -1
  237. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  238. package/dist/cjs/internal/ref.js +1 -0
  239. package/dist/cjs/internal/ref.js.map +1 -1
  240. package/dist/cjs/internal/reloadable.js +1 -1
  241. package/dist/cjs/internal/reloadable.js.map +1 -1
  242. package/dist/cjs/internal/request.js +5 -2
  243. package/dist/cjs/internal/request.js.map +1 -1
  244. package/dist/cjs/internal/resource.js +2 -1
  245. package/dist/cjs/internal/resource.js.map +1 -1
  246. package/dist/cjs/internal/ringBuffer.js.map +1 -1
  247. package/dist/cjs/internal/runtime.js +1 -1
  248. package/dist/cjs/internal/runtime.js.map +1 -1
  249. package/dist/cjs/internal/runtimeFlags.js.map +1 -1
  250. package/dist/cjs/internal/schedule/interval.js.map +1 -1
  251. package/dist/cjs/internal/schedule/intervals.js.map +1 -1
  252. package/dist/cjs/internal/schedule.js +6 -1
  253. package/dist/cjs/internal/schedule.js.map +1 -1
  254. package/dist/cjs/internal/scopedCache.js +5 -2
  255. package/dist/cjs/internal/scopedCache.js.map +1 -1
  256. package/dist/cjs/internal/scopedRef.js +1 -0
  257. package/dist/cjs/internal/scopedRef.js.map +1 -1
  258. package/dist/cjs/internal/sink.js +5 -1
  259. package/dist/cjs/internal/sink.js.map +1 -1
  260. package/dist/cjs/internal/stm/core.js +3 -1
  261. package/dist/cjs/internal/stm/core.js.map +1 -1
  262. package/dist/cjs/internal/stm/stm/journal.js.map +1 -1
  263. package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
  264. package/dist/cjs/internal/stm/stm/tExit.js +2 -1
  265. package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
  266. package/dist/cjs/internal/stm/stm.js.map +1 -1
  267. package/dist/cjs/internal/stm/tArray.js +1 -1
  268. package/dist/cjs/internal/stm/tArray.js.map +1 -1
  269. package/dist/cjs/internal/stm/tMap.js +2 -1
  270. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  271. package/dist/cjs/internal/stm/tPriorityQueue.js +1 -1
  272. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  273. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  274. package/dist/cjs/internal/stm/tQueue.js +2 -0
  275. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  276. package/dist/cjs/internal/stm/tRandom.js.map +1 -1
  277. package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
  278. package/dist/cjs/internal/stm/tRef.js +1 -1
  279. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  280. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
  281. package/dist/cjs/internal/stm/tSet.js +1 -1
  282. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  283. package/dist/cjs/internal/stream/haltStrategy.js.map +1 -1
  284. package/dist/cjs/internal/stream/handoff.js +1 -1
  285. package/dist/cjs/internal/stream/handoff.js.map +1 -1
  286. package/dist/cjs/internal/stream.js +1 -1
  287. package/dist/cjs/internal/stream.js.map +1 -1
  288. package/dist/cjs/internal/string-utils.js.map +1 -1
  289. package/dist/cjs/internal/subscriptionRef.js +1 -1
  290. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  291. package/dist/cjs/internal/supervisor/patch.js.map +1 -1
  292. package/dist/cjs/internal/supervisor.js +1 -0
  293. package/dist/cjs/internal/supervisor.js.map +1 -1
  294. package/dist/cjs/internal/synchronizedRef.js.map +1 -1
  295. package/dist/cjs/internal/take.js +2 -1
  296. package/dist/cjs/internal/take.js.map +1 -1
  297. package/dist/cjs/internal/version.js +1 -1
  298. package/dist/dts/BigDecimal.d.ts +5 -5
  299. package/dist/dts/BigDecimal.d.ts.map +1 -1
  300. package/dist/dts/Cache.d.ts +4 -3
  301. package/dist/dts/Cache.d.ts.map +1 -1
  302. package/dist/dts/Cause.d.ts +2 -1
  303. package/dist/dts/Cause.d.ts.map +1 -1
  304. package/dist/dts/Channel.d.ts +8 -7
  305. package/dist/dts/Channel.d.ts.map +1 -1
  306. package/dist/dts/Chunk.d.ts +55 -45
  307. package/dist/dts/Chunk.d.ts.map +1 -1
  308. package/dist/dts/Config.d.ts +16 -15
  309. package/dist/dts/Config.d.ts.map +1 -1
  310. package/dist/dts/Context.d.ts +4 -3
  311. package/dist/dts/Context.d.ts.map +1 -1
  312. package/dist/dts/Data.d.ts +4 -4
  313. package/dist/dts/Data.d.ts.map +1 -1
  314. package/dist/dts/Deferred.d.ts +3 -2
  315. package/dist/dts/Deferred.d.ts.map +1 -1
  316. package/dist/dts/Differ.d.ts +15 -14
  317. package/dist/dts/Differ.d.ts.map +1 -1
  318. package/dist/dts/Duration.d.ts +11 -0
  319. package/dist/dts/Duration.d.ts.map +1 -1
  320. package/dist/dts/Effect.d.ts +30 -27
  321. package/dist/dts/Effect.d.ts.map +1 -1
  322. package/dist/dts/Either.d.ts +46 -10
  323. package/dist/dts/Either.d.ts.map +1 -1
  324. package/dist/dts/Equivalence.d.ts +1 -1
  325. package/dist/dts/Fiber.d.ts +5 -4
  326. package/dist/dts/Fiber.d.ts.map +1 -1
  327. package/dist/dts/FiberRef.d.ts +7 -1
  328. package/dist/dts/FiberRef.d.ts.map +1 -1
  329. package/dist/dts/GroupBy.d.ts +5 -4
  330. package/dist/dts/GroupBy.d.ts.map +1 -1
  331. package/dist/dts/HKT.d.ts +5 -4
  332. package/dist/dts/HKT.d.ts.map +1 -1
  333. package/dist/dts/Inspectable.d.ts +0 -4
  334. package/dist/dts/Inspectable.d.ts.map +1 -1
  335. package/dist/dts/KeyedPool.d.ts +4 -3
  336. package/dist/dts/KeyedPool.d.ts.map +1 -1
  337. package/dist/dts/Layer.d.ts +14 -39
  338. package/dist/dts/Layer.d.ts.map +1 -1
  339. package/dist/dts/List.d.ts +32 -33
  340. package/dist/dts/List.d.ts.map +1 -1
  341. package/dist/dts/Logger.d.ts +3 -2
  342. package/dist/dts/Logger.d.ts.map +1 -1
  343. package/dist/dts/Match.d.ts +20 -8
  344. package/dist/dts/Match.d.ts.map +1 -1
  345. package/dist/dts/MergeDecision.d.ts +6 -5
  346. package/dist/dts/MergeDecision.d.ts.map +1 -1
  347. package/dist/dts/Metric.d.ts +6 -5
  348. package/dist/dts/Metric.d.ts.map +1 -1
  349. package/dist/dts/MetricHook.d.ts +3 -2
  350. package/dist/dts/MetricHook.d.ts.map +1 -1
  351. package/dist/dts/MetricKey.d.ts +2 -1
  352. package/dist/dts/MetricKey.d.ts.map +1 -1
  353. package/dist/dts/MetricKeyType.d.ts +3 -2
  354. package/dist/dts/MetricKeyType.d.ts.map +1 -1
  355. package/dist/dts/MetricPair.d.ts +2 -1
  356. package/dist/dts/MetricPair.d.ts.map +1 -1
  357. package/dist/dts/MetricState.d.ts +2 -1
  358. package/dist/dts/MetricState.d.ts.map +1 -1
  359. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  360. package/dist/dts/MutableHashSet.d.ts.map +1 -1
  361. package/dist/dts/MutableQueue.d.ts.map +1 -1
  362. package/dist/dts/MutableRef.d.ts.map +1 -1
  363. package/dist/dts/Option.d.ts +26 -13
  364. package/dist/dts/Option.d.ts.map +1 -1
  365. package/dist/dts/Order.d.ts +1 -1
  366. package/dist/dts/Pool.d.ts +18 -19
  367. package/dist/dts/Pool.d.ts.map +1 -1
  368. package/dist/dts/PrimaryKey.d.ts +5 -0
  369. package/dist/dts/PrimaryKey.d.ts.map +1 -1
  370. package/dist/dts/Queue.d.ts +5 -4
  371. package/dist/dts/Queue.d.ts.map +1 -1
  372. package/dist/dts/ReadonlyArray.d.ts +134 -170
  373. package/dist/dts/ReadonlyArray.d.ts.map +1 -1
  374. package/dist/dts/ReadonlyRecord.d.ts +38 -5
  375. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  376. package/dist/dts/RedBlackTree.d.ts +3 -2
  377. package/dist/dts/RedBlackTree.d.ts.map +1 -1
  378. package/dist/dts/Ref.d.ts +2 -1
  379. package/dist/dts/Ref.d.ts.map +1 -1
  380. package/dist/dts/Reloadable.d.ts +2 -1
  381. package/dist/dts/Reloadable.d.ts.map +1 -1
  382. package/dist/dts/Request.d.ts +14 -3
  383. package/dist/dts/Request.d.ts.map +1 -1
  384. package/dist/dts/RequestBlock.d.ts +17 -36
  385. package/dist/dts/RequestBlock.d.ts.map +1 -1
  386. package/dist/dts/RequestResolver.d.ts +3 -2
  387. package/dist/dts/RequestResolver.d.ts.map +1 -1
  388. package/dist/dts/Resource.d.ts +3 -2
  389. package/dist/dts/Resource.d.ts.map +1 -1
  390. package/dist/dts/STM.d.ts +4 -3
  391. package/dist/dts/STM.d.ts.map +1 -1
  392. package/dist/dts/Schedule.d.ts +7 -6
  393. package/dist/dts/Schedule.d.ts.map +1 -1
  394. package/dist/dts/ScopedCache.d.ts +4 -3
  395. package/dist/dts/ScopedCache.d.ts.map +1 -1
  396. package/dist/dts/ScopedRef.d.ts +2 -1
  397. package/dist/dts/ScopedRef.d.ts.map +1 -1
  398. package/dist/dts/Sink.d.ts +6 -5
  399. package/dist/dts/Sink.d.ts.map +1 -1
  400. package/dist/dts/SortedMap.d.ts +3 -2
  401. package/dist/dts/SortedMap.d.ts.map +1 -1
  402. package/dist/dts/SortedSet.d.ts +2 -1
  403. package/dist/dts/SortedSet.d.ts.map +1 -1
  404. package/dist/dts/Stream.d.ts +5 -4
  405. package/dist/dts/Stream.d.ts.map +1 -1
  406. package/dist/dts/Streamable.d.ts.map +1 -1
  407. package/dist/dts/SubscriptionRef.d.ts +2 -1
  408. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  409. package/dist/dts/Supervisor.d.ts +2 -1
  410. package/dist/dts/Supervisor.d.ts.map +1 -1
  411. package/dist/dts/SynchronizedRef.d.ts +2 -1
  412. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  413. package/dist/dts/TArray.d.ts +2 -1
  414. package/dist/dts/TArray.d.ts.map +1 -1
  415. package/dist/dts/TDeferred.d.ts +3 -2
  416. package/dist/dts/TDeferred.d.ts.map +1 -1
  417. package/dist/dts/TMap.d.ts +3 -2
  418. package/dist/dts/TMap.d.ts.map +1 -1
  419. package/dist/dts/TPriorityQueue.d.ts +2 -1
  420. package/dist/dts/TPriorityQueue.d.ts.map +1 -1
  421. package/dist/dts/TPubSub.d.ts +2 -1
  422. package/dist/dts/TPubSub.d.ts.map +1 -1
  423. package/dist/dts/TQueue.d.ts +3 -2
  424. package/dist/dts/TQueue.d.ts.map +1 -1
  425. package/dist/dts/TRef.d.ts +2 -1
  426. package/dist/dts/TRef.d.ts.map +1 -1
  427. package/dist/dts/TSet.d.ts +2 -1
  428. package/dist/dts/TSet.d.ts.map +1 -1
  429. package/dist/dts/Take.d.ts +3 -2
  430. package/dist/dts/Take.d.ts.map +1 -1
  431. package/dist/dts/TestAnnotation.d.ts +2 -1
  432. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  433. package/dist/dts/TestContext.d.ts.map +1 -1
  434. package/dist/dts/Types.d.ts +21 -0
  435. package/dist/dts/Types.d.ts.map +1 -1
  436. package/dist/dts/UpstreamPullRequest.d.ts +2 -1
  437. package/dist/dts/UpstreamPullRequest.d.ts.map +1 -1
  438. package/dist/dts/UpstreamPullStrategy.d.ts +2 -1
  439. package/dist/dts/UpstreamPullStrategy.d.ts.map +1 -1
  440. package/dist/dts/Utils.d.ts +6 -5
  441. package/dist/dts/Utils.d.ts.map +1 -1
  442. package/dist/dts/internal/config.d.ts +1 -2
  443. package/dist/dts/internal/config.d.ts.map +1 -1
  444. package/dist/dts/internal/core-stream.d.ts.map +1 -1
  445. package/dist/dts/internal/logger.d.ts.map +1 -1
  446. package/dist/dts/internal/metric/keyType.d.ts.map +1 -1
  447. package/dist/dts/internal/version.d.ts +1 -1
  448. package/dist/esm/BigDecimal.js +7 -7
  449. package/dist/esm/BigDecimal.js.map +1 -1
  450. package/dist/esm/BigInt.js.map +1 -1
  451. package/dist/esm/Boolean.js.map +1 -1
  452. package/dist/esm/Brand.js.map +1 -1
  453. package/dist/esm/Cache.js.map +1 -1
  454. package/dist/esm/Cause.js.map +1 -1
  455. package/dist/esm/Channel.js.map +1 -1
  456. package/dist/esm/Chunk.js +38 -29
  457. package/dist/esm/Chunk.js.map +1 -1
  458. package/dist/esm/Config.js +3 -3
  459. package/dist/esm/Config.js.map +1 -1
  460. package/dist/esm/Context.js.map +1 -1
  461. package/dist/esm/Data.js.map +1 -1
  462. package/dist/esm/Deferred.js.map +1 -1
  463. package/dist/esm/Differ.js.map +1 -1
  464. package/dist/esm/Duration.js +44 -2
  465. package/dist/esm/Duration.js.map +1 -1
  466. package/dist/esm/Effect.js +2 -7
  467. package/dist/esm/Effect.js.map +1 -1
  468. package/dist/esm/Either.js +35 -6
  469. package/dist/esm/Either.js.map +1 -1
  470. package/dist/esm/Equal.js.map +1 -1
  471. package/dist/esm/Equivalence.js +1 -1
  472. package/dist/esm/Equivalence.js.map +1 -1
  473. package/dist/esm/Fiber.js.map +1 -1
  474. package/dist/esm/FiberRef.js +5 -0
  475. package/dist/esm/FiberRef.js.map +1 -1
  476. package/dist/esm/Function.js.map +1 -1
  477. package/dist/esm/GlobalValue.js.map +1 -1
  478. package/dist/esm/GroupBy.js.map +1 -1
  479. package/dist/esm/HKT.js +0 -3
  480. package/dist/esm/HKT.js.map +1 -1
  481. package/dist/esm/Hash.js.map +1 -1
  482. package/dist/esm/Inspectable.js +2 -4
  483. package/dist/esm/Inspectable.js.map +1 -1
  484. package/dist/esm/KeyedPool.js.map +1 -1
  485. package/dist/esm/Layer.js +8 -28
  486. package/dist/esm/Layer.js.map +1 -1
  487. package/dist/esm/List.js +25 -22
  488. package/dist/esm/List.js.map +1 -1
  489. package/dist/esm/LogLevel.js.map +1 -1
  490. package/dist/esm/Logger.js.map +1 -1
  491. package/dist/esm/Match.js.map +1 -1
  492. package/dist/esm/MergeDecision.js.map +1 -1
  493. package/dist/esm/Metric.js.map +1 -1
  494. package/dist/esm/MetricHook.js.map +1 -1
  495. package/dist/esm/MetricKey.js.map +1 -1
  496. package/dist/esm/MetricKeyType.js.map +1 -1
  497. package/dist/esm/MetricPair.js.map +1 -1
  498. package/dist/esm/MetricState.js.map +1 -1
  499. package/dist/esm/MutableHashMap.js +2 -2
  500. package/dist/esm/MutableHashMap.js.map +1 -1
  501. package/dist/esm/MutableHashSet.js +2 -2
  502. package/dist/esm/MutableHashSet.js.map +1 -1
  503. package/dist/esm/MutableList.js +2 -2
  504. package/dist/esm/MutableList.js.map +1 -1
  505. package/dist/esm/MutableQueue.js +2 -2
  506. package/dist/esm/MutableQueue.js.map +1 -1
  507. package/dist/esm/MutableRef.js +2 -2
  508. package/dist/esm/MutableRef.js.map +1 -1
  509. package/dist/esm/NonEmptyIterable.js.map +1 -1
  510. package/dist/esm/Number.js.map +1 -1
  511. package/dist/esm/Option.js +19 -12
  512. package/dist/esm/Option.js.map +1 -1
  513. package/dist/esm/Order.js +1 -1
  514. package/dist/esm/Order.js.map +1 -1
  515. package/dist/esm/Ordering.js.map +1 -1
  516. package/dist/esm/Pipeable.js.map +1 -1
  517. package/dist/esm/Pool.js +15 -17
  518. package/dist/esm/Pool.js.map +1 -1
  519. package/dist/esm/Predicate.js.map +1 -1
  520. package/dist/esm/PrimaryKey.js +5 -0
  521. package/dist/esm/PrimaryKey.js.map +1 -1
  522. package/dist/esm/Queue.js.map +1 -1
  523. package/dist/esm/ReadonlyArray.js +193 -177
  524. package/dist/esm/ReadonlyArray.js.map +1 -1
  525. package/dist/esm/ReadonlyRecord.js +56 -5
  526. package/dist/esm/ReadonlyRecord.js.map +1 -1
  527. package/dist/esm/RedBlackTree.js.map +1 -1
  528. package/dist/esm/Ref.js.map +1 -1
  529. package/dist/esm/Reloadable.js.map +1 -1
  530. package/dist/esm/Request.js +7 -0
  531. package/dist/esm/Request.js.map +1 -1
  532. package/dist/esm/RequestBlock.js +3 -22
  533. package/dist/esm/RequestBlock.js.map +1 -1
  534. package/dist/esm/RequestResolver.js.map +1 -1
  535. package/dist/esm/Resource.js.map +1 -1
  536. package/dist/esm/STM.js.map +1 -1
  537. package/dist/esm/Schedule.js.map +1 -1
  538. package/dist/esm/Scheduler.js.map +1 -1
  539. package/dist/esm/ScopedCache.js.map +1 -1
  540. package/dist/esm/ScopedRef.js.map +1 -1
  541. package/dist/esm/Sink.js.map +1 -1
  542. package/dist/esm/SortedMap.js +2 -2
  543. package/dist/esm/SortedMap.js.map +1 -1
  544. package/dist/esm/SortedSet.js +2 -2
  545. package/dist/esm/SortedSet.js.map +1 -1
  546. package/dist/esm/Stream.js.map +1 -1
  547. package/dist/esm/Streamable.js +3 -0
  548. package/dist/esm/Streamable.js.map +1 -1
  549. package/dist/esm/String.js.map +1 -1
  550. package/dist/esm/Struct.js.map +1 -1
  551. package/dist/esm/SubscriptionRef.js.map +1 -1
  552. package/dist/esm/Supervisor.js.map +1 -1
  553. package/dist/esm/SynchronizedRef.js.map +1 -1
  554. package/dist/esm/TArray.js.map +1 -1
  555. package/dist/esm/TDeferred.js.map +1 -1
  556. package/dist/esm/TMap.js.map +1 -1
  557. package/dist/esm/TPriorityQueue.js.map +1 -1
  558. package/dist/esm/TPubSub.js.map +1 -1
  559. package/dist/esm/TQueue.js.map +1 -1
  560. package/dist/esm/TRef.js.map +1 -1
  561. package/dist/esm/TSet.js.map +1 -1
  562. package/dist/esm/Take.js.map +1 -1
  563. package/dist/esm/TestAnnotation.js.map +1 -1
  564. package/dist/esm/TestAnnotationMap.js.map +1 -1
  565. package/dist/esm/TestAnnotations.js.map +1 -1
  566. package/dist/esm/TestClock.js.map +1 -1
  567. package/dist/esm/TestContext.js +2 -2
  568. package/dist/esm/TestContext.js.map +1 -1
  569. package/dist/esm/UpstreamPullRequest.js.map +1 -1
  570. package/dist/esm/UpstreamPullStrategy.js.map +1 -1
  571. package/dist/esm/Utils.js.map +1 -1
  572. package/dist/esm/internal/Iterable.js.map +1 -1
  573. package/dist/esm/internal/blockedRequests.js +3 -2
  574. package/dist/esm/internal/blockedRequests.js.map +1 -1
  575. package/dist/esm/internal/cache.js +3 -0
  576. package/dist/esm/internal/cache.js.map +1 -1
  577. package/dist/esm/internal/cause.js +1 -1
  578. package/dist/esm/internal/cause.js.map +1 -1
  579. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  580. package/dist/esm/internal/channel/channelState.js +2 -1
  581. package/dist/esm/internal/channel/channelState.js.map +1 -1
  582. package/dist/esm/internal/channel/childExecutorDecision.js.map +1 -1
  583. package/dist/esm/internal/channel/continuation.js +9 -1
  584. package/dist/esm/internal/channel/continuation.js.map +1 -1
  585. package/dist/esm/internal/channel/mergeDecision.js.map +1 -1
  586. package/dist/esm/internal/channel/mergeState.js.map +1 -1
  587. package/dist/esm/internal/channel/mergeStrategy.js.map +1 -1
  588. package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -1
  589. package/dist/esm/internal/channel/subexecutor.js.map +1 -1
  590. package/dist/esm/internal/channel/upstreamPullRequest.js +1 -1
  591. package/dist/esm/internal/channel/upstreamPullRequest.js.map +1 -1
  592. package/dist/esm/internal/channel/upstreamPullStrategy.js +1 -1
  593. package/dist/esm/internal/channel/upstreamPullStrategy.js.map +1 -1
  594. package/dist/esm/internal/channel.js.map +1 -1
  595. package/dist/esm/internal/clock.js.map +1 -1
  596. package/dist/esm/internal/concurrency.js.map +1 -1
  597. package/dist/esm/internal/config.js +15 -22
  598. package/dist/esm/internal/config.js.map +1 -1
  599. package/dist/esm/internal/configError.js +2 -2
  600. package/dist/esm/internal/configError.js.map +1 -1
  601. package/dist/esm/internal/configProvider/pathPatch.js.map +1 -1
  602. package/dist/esm/internal/configProvider.js +5 -3
  603. package/dist/esm/internal/configProvider.js.map +1 -1
  604. package/dist/esm/internal/configSecret.js.map +1 -1
  605. package/dist/esm/internal/context.js +6 -6
  606. package/dist/esm/internal/context.js.map +1 -1
  607. package/dist/esm/internal/core-effect.js +13 -9
  608. package/dist/esm/internal/core-effect.js.map +1 -1
  609. package/dist/esm/internal/core-stream.js +7 -1
  610. package/dist/esm/internal/core-stream.js.map +1 -1
  611. package/dist/esm/internal/core.js +46 -75
  612. package/dist/esm/internal/core.js.map +1 -1
  613. package/dist/esm/internal/data.js.map +1 -1
  614. package/dist/esm/internal/dataSource.js.map +1 -1
  615. package/dist/esm/internal/deferred.js +2 -0
  616. package/dist/esm/internal/deferred.js.map +1 -1
  617. package/dist/esm/internal/differ/chunkPatch.js.map +1 -1
  618. package/dist/esm/internal/differ/contextPatch.js.map +1 -1
  619. package/dist/esm/internal/differ/hashMapPatch.js.map +1 -1
  620. package/dist/esm/internal/differ/hashSetPatch.js.map +1 -1
  621. package/dist/esm/internal/differ/orPatch.js.map +1 -1
  622. package/dist/esm/internal/differ.js.map +1 -1
  623. package/dist/esm/internal/effect/circular.js +1 -0
  624. package/dist/esm/internal/effect/circular.js.map +1 -1
  625. package/dist/esm/internal/effectable.js +17 -4
  626. package/dist/esm/internal/effectable.js.map +1 -1
  627. package/dist/esm/internal/either.js +2 -2
  628. package/dist/esm/internal/either.js.map +1 -1
  629. package/dist/esm/internal/encoding/base64.js.map +1 -1
  630. package/dist/esm/internal/encoding/base64Url.js.map +1 -1
  631. package/dist/esm/internal/encoding/common.js.map +1 -1
  632. package/dist/esm/internal/encoding/hex.js.map +1 -1
  633. package/dist/esm/internal/executionStrategy.js.map +1 -1
  634. package/dist/esm/internal/fiber.js +2 -0
  635. package/dist/esm/internal/fiber.js.map +1 -1
  636. package/dist/esm/internal/fiberId.js +4 -4
  637. package/dist/esm/internal/fiberId.js.map +1 -1
  638. package/dist/esm/internal/fiberRefs/patch.js.map +1 -1
  639. package/dist/esm/internal/fiberRefs.js.map +1 -1
  640. package/dist/esm/internal/fiberRuntime.js +169 -205
  641. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  642. package/dist/esm/internal/groupBy.js +4 -1
  643. package/dist/esm/internal/groupBy.js.map +1 -1
  644. package/dist/esm/internal/hashMap/array.js.map +1 -1
  645. package/dist/esm/internal/hashMap/node.js.map +1 -1
  646. package/dist/esm/internal/hashMap.js +2 -2
  647. package/dist/esm/internal/hashMap.js.map +1 -1
  648. package/dist/esm/internal/hashSet.js +2 -2
  649. package/dist/esm/internal/hashSet.js.map +1 -1
  650. package/dist/esm/internal/keyedPool.js +3 -0
  651. package/dist/esm/internal/keyedPool.js.map +1 -1
  652. package/dist/esm/internal/layer.js +22 -52
  653. package/dist/esm/internal/layer.js.map +1 -1
  654. package/dist/esm/internal/logger.js +2 -1
  655. package/dist/esm/internal/logger.js.map +1 -1
  656. package/dist/esm/internal/matcher.js.map +1 -1
  657. package/dist/esm/internal/metric/hook.js +2 -1
  658. package/dist/esm/internal/metric/hook.js.map +1 -1
  659. package/dist/esm/internal/metric/key.js +1 -1
  660. package/dist/esm/internal/metric/key.js.map +1 -1
  661. package/dist/esm/internal/metric/keyType.js +2 -1
  662. package/dist/esm/internal/metric/keyType.js.map +1 -1
  663. package/dist/esm/internal/metric/pair.js +1 -1
  664. package/dist/esm/internal/metric/pair.js.map +1 -1
  665. package/dist/esm/internal/metric/polling.js.map +1 -1
  666. package/dist/esm/internal/metric/registry.js.map +1 -1
  667. package/dist/esm/internal/metric/state.js +1 -1
  668. package/dist/esm/internal/metric/state.js.map +1 -1
  669. package/dist/esm/internal/metric.js +7 -5
  670. package/dist/esm/internal/metric.js.map +1 -1
  671. package/dist/esm/internal/opCodes/layer.js +3 -3
  672. package/dist/esm/internal/opCodes/layer.js.map +1 -1
  673. package/dist/esm/internal/option.js +2 -2
  674. package/dist/esm/internal/option.js.map +1 -1
  675. package/dist/esm/internal/pool.js +2 -0
  676. package/dist/esm/internal/pool.js.map +1 -1
  677. package/dist/esm/internal/pubsub.js +1 -1
  678. package/dist/esm/internal/pubsub.js.map +1 -1
  679. package/dist/esm/internal/query.js +1 -1
  680. package/dist/esm/internal/query.js.map +1 -1
  681. package/dist/esm/internal/queue.js +6 -4
  682. package/dist/esm/internal/queue.js.map +1 -1
  683. package/dist/esm/internal/random.js.map +1 -1
  684. package/dist/esm/internal/redBlackTree/iterator.js.map +1 -1
  685. package/dist/esm/internal/redBlackTree.js +4 -2
  686. package/dist/esm/internal/redBlackTree.js.map +1 -1
  687. package/dist/esm/internal/ref.js +1 -0
  688. package/dist/esm/internal/ref.js.map +1 -1
  689. package/dist/esm/internal/reloadable.js +1 -1
  690. package/dist/esm/internal/reloadable.js.map +1 -1
  691. package/dist/esm/internal/request.js +4 -1
  692. package/dist/esm/internal/request.js.map +1 -1
  693. package/dist/esm/internal/resource.js +2 -1
  694. package/dist/esm/internal/resource.js.map +1 -1
  695. package/dist/esm/internal/ringBuffer.js.map +1 -1
  696. package/dist/esm/internal/runtime.js +2 -2
  697. package/dist/esm/internal/runtime.js.map +1 -1
  698. package/dist/esm/internal/runtimeFlags.js.map +1 -1
  699. package/dist/esm/internal/schedule/interval.js.map +1 -1
  700. package/dist/esm/internal/schedule/intervals.js.map +1 -1
  701. package/dist/esm/internal/schedule.js +6 -1
  702. package/dist/esm/internal/schedule.js.map +1 -1
  703. package/dist/esm/internal/scopedCache.js +5 -2
  704. package/dist/esm/internal/scopedCache.js.map +1 -1
  705. package/dist/esm/internal/scopedRef.js +1 -0
  706. package/dist/esm/internal/scopedRef.js.map +1 -1
  707. package/dist/esm/internal/sink.js +5 -1
  708. package/dist/esm/internal/sink.js.map +1 -1
  709. package/dist/esm/internal/stm/core.js +3 -1
  710. package/dist/esm/internal/stm/core.js.map +1 -1
  711. package/dist/esm/internal/stm/stm/journal.js.map +1 -1
  712. package/dist/esm/internal/stm/stm/stmState.js.map +1 -1
  713. package/dist/esm/internal/stm/stm/tExit.js +2 -1
  714. package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
  715. package/dist/esm/internal/stm/stm.js.map +1 -1
  716. package/dist/esm/internal/stm/tArray.js +1 -1
  717. package/dist/esm/internal/stm/tArray.js.map +1 -1
  718. package/dist/esm/internal/stm/tMap.js +2 -1
  719. package/dist/esm/internal/stm/tMap.js.map +1 -1
  720. package/dist/esm/internal/stm/tPriorityQueue.js +1 -1
  721. package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
  722. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  723. package/dist/esm/internal/stm/tQueue.js +2 -0
  724. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  725. package/dist/esm/internal/stm/tRandom.js.map +1 -1
  726. package/dist/esm/internal/stm/tReentrantLock.js.map +1 -1
  727. package/dist/esm/internal/stm/tRef.js +1 -1
  728. package/dist/esm/internal/stm/tRef.js.map +1 -1
  729. package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
  730. package/dist/esm/internal/stm/tSet.js +1 -1
  731. package/dist/esm/internal/stm/tSet.js.map +1 -1
  732. package/dist/esm/internal/stream/haltStrategy.js.map +1 -1
  733. package/dist/esm/internal/stream/handoff.js +1 -1
  734. package/dist/esm/internal/stream/handoff.js.map +1 -1
  735. package/dist/esm/internal/stream.js +1 -1
  736. package/dist/esm/internal/stream.js.map +1 -1
  737. package/dist/esm/internal/string-utils.js.map +1 -1
  738. package/dist/esm/internal/subscriptionRef.js +1 -1
  739. package/dist/esm/internal/subscriptionRef.js.map +1 -1
  740. package/dist/esm/internal/supervisor/patch.js.map +1 -1
  741. package/dist/esm/internal/supervisor.js +1 -0
  742. package/dist/esm/internal/supervisor.js.map +1 -1
  743. package/dist/esm/internal/synchronizedRef.js.map +1 -1
  744. package/dist/esm/internal/take.js +2 -1
  745. package/dist/esm/internal/take.js.map +1 -1
  746. package/dist/esm/internal/version.js +1 -1
  747. package/package.json +1 -1
  748. package/src/BigDecimal.ts +7 -7
  749. package/src/Cache.ts +4 -3
  750. package/src/Cause.ts +2 -1
  751. package/src/Channel.ts +8 -7
  752. package/src/Chunk.ts +66 -57
  753. package/src/Config.ts +16 -16
  754. package/src/Context.ts +4 -3
  755. package/src/Data.ts +4 -4
  756. package/src/Deferred.ts +3 -2
  757. package/src/Differ.ts +15 -14
  758. package/src/Duration.ts +54 -2
  759. package/src/Effect.ts +18 -29
  760. package/src/Either.ts +65 -10
  761. package/src/Equivalence.ts +1 -1
  762. package/src/Fiber.ts +5 -4
  763. package/src/FiberRef.ts +8 -1
  764. package/src/GroupBy.ts +5 -4
  765. package/src/HKT.ts +5 -4
  766. package/src/Inspectable.ts +2 -4
  767. package/src/KeyedPool.ts +4 -3
  768. package/src/Layer.ts +19 -56
  769. package/src/List.ts +44 -43
  770. package/src/Logger.ts +3 -2
  771. package/src/Match.ts +50 -38
  772. package/src/MergeDecision.ts +6 -5
  773. package/src/Metric.ts +8 -5
  774. package/src/MetricHook.ts +3 -2
  775. package/src/MetricKey.ts +2 -1
  776. package/src/MetricKeyType.ts +3 -2
  777. package/src/MetricPair.ts +2 -1
  778. package/src/MetricState.ts +2 -1
  779. package/src/MutableHashMap.ts +2 -2
  780. package/src/MutableHashSet.ts +2 -2
  781. package/src/MutableList.ts +2 -2
  782. package/src/MutableQueue.ts +2 -2
  783. package/src/MutableRef.ts +2 -2
  784. package/src/Option.ts +32 -14
  785. package/src/Order.ts +1 -1
  786. package/src/Pool.ts +18 -19
  787. package/src/PrimaryKey.ts +6 -0
  788. package/src/Queue.ts +5 -4
  789. package/src/ReadonlyArray.ts +300 -324
  790. package/src/ReadonlyRecord.ts +60 -5
  791. package/src/RedBlackTree.ts +3 -2
  792. package/src/Ref.ts +2 -1
  793. package/src/Reloadable.ts +2 -1
  794. package/src/Request.ts +15 -3
  795. package/src/RequestBlock.ts +22 -61
  796. package/src/RequestResolver.ts +3 -2
  797. package/src/Resource.ts +3 -2
  798. package/src/STM.ts +4 -3
  799. package/src/Schedule.ts +7 -6
  800. package/src/ScopedCache.ts +4 -3
  801. package/src/ScopedRef.ts +2 -1
  802. package/src/Sink.ts +6 -5
  803. package/src/SortedMap.ts +5 -4
  804. package/src/SortedSet.ts +4 -3
  805. package/src/Stream.ts +5 -4
  806. package/src/Streamable.ts +3 -0
  807. package/src/SubscriptionRef.ts +2 -1
  808. package/src/Supervisor.ts +2 -1
  809. package/src/SynchronizedRef.ts +2 -1
  810. package/src/TArray.ts +2 -1
  811. package/src/TDeferred.ts +3 -2
  812. package/src/TMap.ts +3 -2
  813. package/src/TPriorityQueue.ts +2 -1
  814. package/src/TPubSub.ts +2 -1
  815. package/src/TQueue.ts +3 -2
  816. package/src/TRef.ts +2 -1
  817. package/src/TSet.ts +2 -1
  818. package/src/Take.ts +3 -2
  819. package/src/TestAnnotation.ts +2 -2
  820. package/src/TestContext.ts +5 -4
  821. package/src/Types.ts +24 -0
  822. package/src/UpstreamPullRequest.ts +2 -1
  823. package/src/UpstreamPullStrategy.ts +2 -1
  824. package/src/Utils.ts +6 -5
  825. package/src/internal/blockedRequests.ts +78 -81
  826. package/src/internal/cache.ts +3 -0
  827. package/src/internal/cause.ts +1 -1
  828. package/src/internal/channel/channelState.ts +5 -3
  829. package/src/internal/channel/continuation.ts +19 -10
  830. package/src/internal/channel/upstreamPullRequest.ts +1 -1
  831. package/src/internal/channel/upstreamPullStrategy.ts +1 -1
  832. package/src/internal/config.ts +15 -23
  833. package/src/internal/configError.ts +2 -2
  834. package/src/internal/configProvider.ts +6 -4
  835. package/src/internal/context.ts +6 -6
  836. package/src/internal/core-effect.ts +27 -30
  837. package/src/internal/core-stream.ts +7 -1
  838. package/src/internal/core.ts +78 -118
  839. package/src/internal/deferred.ts +2 -0
  840. package/src/internal/effect/circular.ts +1 -0
  841. package/src/internal/effectable.ts +18 -4
  842. package/src/internal/either.ts +2 -2
  843. package/src/internal/fiber.ts +2 -0
  844. package/src/internal/fiberId.ts +4 -4
  845. package/src/internal/fiberRuntime.ts +228 -269
  846. package/src/internal/groupBy.ts +4 -1
  847. package/src/internal/hashMap.ts +2 -2
  848. package/src/internal/hashSet.ts +2 -2
  849. package/src/internal/keyedPool.ts +3 -0
  850. package/src/internal/layer.ts +29 -77
  851. package/src/internal/logger.ts +2 -1
  852. package/src/internal/metric/hook.ts +2 -1
  853. package/src/internal/metric/key.ts +1 -1
  854. package/src/internal/metric/keyType.ts +2 -1
  855. package/src/internal/metric/pair.ts +1 -1
  856. package/src/internal/metric/state.ts +1 -1
  857. package/src/internal/metric.ts +8 -5
  858. package/src/internal/opCodes/layer.ts +6 -6
  859. package/src/internal/option.ts +2 -2
  860. package/src/internal/pool.ts +2 -0
  861. package/src/internal/pubsub.ts +2 -1
  862. package/src/internal/query.ts +1 -1
  863. package/src/internal/queue.ts +18 -10
  864. package/src/internal/redBlackTree.ts +4 -2
  865. package/src/internal/ref.ts +1 -0
  866. package/src/internal/reloadable.ts +1 -1
  867. package/src/internal/request.ts +14 -1
  868. package/src/internal/resource.ts +2 -1
  869. package/src/internal/runtime.ts +2 -2
  870. package/src/internal/schedule.ts +6 -1
  871. package/src/internal/scopedCache.ts +7 -2
  872. package/src/internal/scopedRef.ts +1 -0
  873. package/src/internal/sink.ts +5 -1
  874. package/src/internal/stm/core.ts +3 -1
  875. package/src/internal/stm/stm/tExit.ts +5 -3
  876. package/src/internal/stm/tArray.ts +1 -1
  877. package/src/internal/stm/tMap.ts +2 -1
  878. package/src/internal/stm/tPriorityQueue.ts +1 -1
  879. package/src/internal/stm/tQueue.ts +2 -0
  880. package/src/internal/stm/tRef.ts +1 -1
  881. package/src/internal/stm/tSet.ts +1 -1
  882. package/src/internal/stream/handoff.ts +1 -1
  883. package/src/internal/stream.ts +2 -2
  884. package/src/internal/subscriptionRef.ts +1 -1
  885. package/src/internal/supervisor.ts +1 -0
  886. package/src/internal/take.ts +2 -1
  887. package/src/internal/version.ts +1 -1
@@ -17,6 +17,7 @@ import * as O from "./Option.js"
17
17
  import * as Order from "./Order.js"
18
18
  import type { Predicate, Refinement } from "./Predicate.js"
19
19
  import * as RR from "./ReadonlyRecord.js"
20
+ import * as Tuple from "./Tuple.js"
20
21
 
21
22
  /**
22
23
  * @category type lambdas
@@ -224,29 +225,30 @@ export const prepend: {
224
225
  } = dual(2, <A, B>(self: Iterable<A>, head: B): NonEmptyArray<A | B> => [head, ...self])
225
226
 
226
227
  /**
228
+ * Prepends the specified prefix array (or iterable) to the beginning of the specified array (or iterable).
229
+ * If either array is non-empty, the result is also a non-empty array.
230
+ *
231
+ * @example
232
+ * import * as ReadonlyArray from "effect/ReadonlyArray"
233
+ *
234
+ * assert.deepStrictEqual(
235
+ * ReadonlyArray.prependAll([1, 2], ["a", "b"]),
236
+ * ["a", "b", 1, 2]
237
+ * )
238
+ *
227
239
  * @category concatenating
228
240
  * @since 2.0.0
229
241
  */
230
242
  export const prependAll: {
231
- <B>(that: Iterable<B>): <A>(self: Iterable<A>) => Array<A | B>
232
- <A, B>(self: Iterable<A>, that: Iterable<B>): Array<A | B>
233
- } = dual(
234
- 2,
235
- <A>(self: Iterable<A>, that: Iterable<A>): Array<A> => fromIterable(that).concat(fromIterable(self))
236
- )
237
-
238
- /**
239
- * @category concatenating
240
- * @since 2.0.0
241
- */
242
- export const prependAllNonEmpty: {
243
- <B>(that: NonEmptyReadonlyArray<B>): <A>(self: Iterable<A>) => NonEmptyArray<A | B>
244
- <B>(that: Iterable<B>): <A>(self: NonEmptyReadonlyArray<A>) => NonEmptyArray<A | B>
243
+ <S extends ReadonlyArray<any> | Iterable<any>, T extends ReadonlyArray<any> | Iterable<any>>(
244
+ that: T
245
+ ): (self: S) => ReadonlyArray.With2<S, T, ReadonlyArray.Infer<S> | ReadonlyArray.Infer<T>>
245
246
  <A, B>(self: Iterable<A>, that: NonEmptyReadonlyArray<B>): NonEmptyArray<A | B>
246
247
  <A, B>(self: NonEmptyReadonlyArray<A>, that: Iterable<B>): NonEmptyArray<A | B>
248
+ <A, B>(self: Iterable<A>, that: Iterable<B>): Array<A | B>
247
249
  } = dual(
248
250
  2,
249
- <A, B>(self: Iterable<A>, that: Iterable<B>): Array<A | B> => prependAll(self, that)
251
+ <A>(self: Iterable<A>, that: Iterable<A>): Array<A> => fromIterable(that).concat(fromIterable(self))
250
252
  )
251
253
 
252
254
  /**
@@ -261,29 +263,22 @@ export const append: {
261
263
  } = dual(2, <A, B>(self: Iterable<A>, last: B): Array<A | B> => [...self, last])
262
264
 
263
265
  /**
266
+ * Concatenates two arrays (or iterables), combining their elements.
267
+ * If either array is non-empty, the result is also a non-empty array.
268
+ *
264
269
  * @category concatenating
265
270
  * @since 2.0.0
266
271
  */
267
272
  export const appendAll: {
268
- <B>(that: Iterable<B>): <A>(self: Iterable<A>) => Array<A | B>
269
- <A, B>(self: Iterable<A>, that: Iterable<B>): Array<A | B>
270
- } = dual(
271
- 2,
272
- <A>(self: Iterable<A>, that: Iterable<A>): Array<A> => fromIterable(self).concat(fromIterable(that))
273
- )
274
-
275
- /**
276
- * @category concatenating
277
- * @since 2.0.0
278
- */
279
- export const appendAllNonEmpty: {
280
- <B>(that: NonEmptyReadonlyArray<B>): <A>(self: Iterable<A>) => NonEmptyArray<A | B>
281
- <B>(that: Iterable<B>): <A>(self: NonEmptyReadonlyArray<A>) => NonEmptyArray<A | B>
273
+ <S extends ReadonlyArray<any> | Iterable<any>, T extends ReadonlyArray<any> | Iterable<any>>(
274
+ that: T
275
+ ): (self: S) => ReadonlyArray.With2<S, T, ReadonlyArray.Infer<S> | ReadonlyArray.Infer<T>>
282
276
  <A, B>(self: Iterable<A>, that: NonEmptyReadonlyArray<B>): NonEmptyArray<A | B>
283
277
  <A, B>(self: NonEmptyReadonlyArray<A>, that: Iterable<B>): NonEmptyArray<A | B>
278
+ <A, B>(self: Iterable<A>, that: Iterable<B>): Array<A | B>
284
279
  } = dual(
285
280
  2,
286
- <A, B>(self: Iterable<A>, that: Iterable<B>): Array<A | B> => appendAll(self, that)
281
+ <A>(self: Iterable<A>, that: Iterable<A>): Array<A> => fromIterable(self).concat(fromIterable(that))
287
282
  )
288
283
 
289
284
  /**
@@ -837,24 +832,23 @@ export const remove: {
837
832
  * @category elements
838
833
  * @since 2.0.0
839
834
  */
840
- export const reverse = <A>(self: Iterable<A>): Array<A> => Array.from(self).reverse()
841
-
842
- /**
843
- * @category elements
844
- * @since 2.0.0
845
- */
846
- export const reverseNonEmpty = <A>(
847
- self: NonEmptyReadonlyArray<A>
848
- ): NonEmptyArray<A> => [lastNonEmpty(self), ...self.slice(0, -1).reverse()]
835
+ export const reverse: {
836
+ <A>(self: NonEmptyReadonlyArray<A>): NonEmptyArray<A>
837
+ <A>(self: Iterable<A>): Array<A>
838
+ } = (<A>(self: Iterable<A>): Array<A> => Array.from(self).reverse()) as any
849
839
 
850
840
  /**
851
- * Sort the elements of an `Iterable` in increasing order, creating a new `Array`.
841
+ * Create a new array with elements sorted in increasing order based on the specified comparator.
842
+ * If the input is a `NonEmptyReadonlyArray`, the output will also be a `NonEmptyReadonlyArray`.
852
843
  *
853
844
  * @category sorting
854
845
  * @since 2.0.0
855
846
  */
856
847
  export const sort: {
857
- <B>(O: Order.Order<B>): <A extends B>(self: Iterable<A>) => Array<A>
848
+ <B>(
849
+ O: Order.Order<B>
850
+ ): <T extends ReadonlyArray<any> | Iterable<any>>(self: T) => ReadonlyArray.With<T, ReadonlyArray.Infer<T>>
851
+ <A extends B, B>(self: NonEmptyReadonlyArray<A>, O: Order.Order<B>): NonEmptyArray<A>
858
852
  <A extends B, B>(self: Iterable<A>, O: Order.Order<B>): Array<A>
859
853
  } = dual(2, <A extends B, B>(self: Iterable<A>, O: Order.Order<B>): Array<A> => {
860
854
  const out = Array.from(self)
@@ -875,20 +869,6 @@ export const sortWith: {
875
869
  sort(self, Order.mapInput(order, f))
876
870
  )
877
871
 
878
- /**
879
- * Sort the elements of a `NonEmptyReadonlyArray` in increasing order, creating a new `NonEmptyArray`.
880
- *
881
- * @category sorting
882
- * @since 2.0.0
883
- */
884
- export const sortNonEmpty: {
885
- <B>(O: Order.Order<B>): <A extends B>(self: NonEmptyReadonlyArray<A>) => NonEmptyArray<A>
886
- <A extends B, B>(self: NonEmptyReadonlyArray<A>, O: Order.Order<B>): NonEmptyArray<A>
887
- } = dual(
888
- 2,
889
- <A extends B, B>(self: NonEmptyReadonlyArray<A>, O: Order.Order<B>): NonEmptyArray<A> => sort(O)(self) as any
890
- )
891
-
892
872
  /**
893
873
  * Sort the elements of an `Iterable` in increasing order, where elements are compared
894
874
  * using first `orders[0]`, then `orders[1]`, etc...
@@ -896,85 +876,62 @@ export const sortNonEmpty: {
896
876
  * @category sorting
897
877
  * @since 2.0.0
898
878
  */
899
- export const sortBy = <B>(...orders: ReadonlyArray<Order.Order<B>>) => <A extends B>(self: Iterable<A>): Array<A> => {
900
- const input = fromIterable(self)
901
- return (isNonEmptyReadonlyArray(input) ? sortByNonEmpty(...orders)(input) : [])
879
+ export const sortBy = <B>(...orders: ReadonlyArray<Order.Order<B>>): {
880
+ <A extends B>(as: NonEmptyReadonlyArray<A>): NonEmptyArray<A>
881
+ <A extends B>(self: Iterable<A>): Array<A>
882
+ } => {
883
+ const sortByAll = sort(Order.combineAll(orders))
884
+ return (<A extends B>(self: Iterable<A>): Array<A> => {
885
+ const input = fromIterable(self)
886
+ if (isNonEmptyReadonlyArray(input)) {
887
+ return sortByAll(input)
888
+ }
889
+ return []
890
+ }) as any
902
891
  }
903
892
 
904
- /**
905
- * @category sorting
906
- * @since 2.0.0
907
- */
908
- export const sortByNonEmpty = <B>(
909
- ...orders: ReadonlyArray<Order.Order<B>>
910
- ): <A extends B>(as: NonEmptyReadonlyArray<A>) => NonEmptyArray<A> => sortNonEmpty(Order.combineAll(orders))
911
-
912
893
  /**
913
894
  * Takes two `Iterable`s and returns an `Array` of corresponding pairs.
914
895
  * If one input `Iterable` is short, excess elements of the
915
896
  * longer `Iterable` are discarded.
916
897
  *
898
+ * @category zipping
917
899
  * @since 2.0.0
918
900
  */
919
901
  export const zip: {
902
+ <B>(that: NonEmptyReadonlyArray<B>): <A>(self: NonEmptyReadonlyArray<A>) => NonEmptyArray<[A, B]>
920
903
  <B>(that: Iterable<B>): <A>(self: Iterable<A>) => Array<[A, B]>
904
+ <A, B>(self: NonEmptyReadonlyArray<A>, that: NonEmptyReadonlyArray<B>): NonEmptyArray<[A, B]>
921
905
  <A, B>(self: Iterable<A>, that: Iterable<B>): Array<[A, B]>
922
906
  } = dual(
923
907
  2,
924
- <A, B>(self: Iterable<A>, that: Iterable<B>): Array<[A, B]> => zipWith(self, that, (a, b) => [a, b])
908
+ <A, B>(self: Iterable<A>, that: Iterable<B>): Array<[A, B]> => zipWith(self, that, Tuple.make)
925
909
  )
926
910
 
927
911
  /**
928
912
  * Apply a function to pairs of elements at the same index in two `Iterable`s, collecting the results in a new `Array`. If one
929
913
  * input `Iterable` is short, excess elements of the longer `Iterable` are discarded.
930
914
  *
915
+ * @category zipping
931
916
  * @since 2.0.0
932
917
  */
933
918
  export const zipWith: {
919
+ <B, A, C>(that: NonEmptyReadonlyArray<B>, f: (a: A, b: B) => C): (self: NonEmptyReadonlyArray<A>) => NonEmptyArray<C>
934
920
  <B, A, C>(that: Iterable<B>, f: (a: A, b: B) => C): (self: Iterable<A>) => Array<C>
921
+ <A, B, C>(self: NonEmptyReadonlyArray<A>, that: NonEmptyReadonlyArray<B>, f: (a: A, b: B) => C): NonEmptyArray<C>
935
922
  <B, A, C>(self: Iterable<A>, that: Iterable<B>, f: (a: A, b: B) => C): Array<C>
936
923
  } = dual(3, <B, A, C>(self: Iterable<A>, that: Iterable<B>, f: (a: A, b: B) => C): Array<C> => {
937
924
  const as = fromIterable(self)
938
925
  const bs = fromIterable(that)
939
- return isNonEmptyReadonlyArray(as) && isNonEmptyReadonlyArray(bs) ? zipNonEmptyWith(bs, f)(as) : []
940
- })
941
-
942
- /**
943
- * @since 2.0.0
944
- */
945
- export const zipNonEmpty: {
946
- <B>(that: NonEmptyReadonlyArray<B>): <A>(self: NonEmptyReadonlyArray<A>) => NonEmptyArray<[A, B]>
947
- <A, B>(self: NonEmptyReadonlyArray<A>, that: NonEmptyReadonlyArray<B>): NonEmptyArray<[A, B]>
948
- } = dual(
949
- 2,
950
- <A, B>(self: NonEmptyReadonlyArray<A>, that: NonEmptyReadonlyArray<B>): NonEmptyArray<[A, B]> =>
951
- zipNonEmptyWith(self, that, (a, b) => [a, b])
952
- )
953
-
954
- /**
955
- * @since 2.0.0
956
- */
957
- export const zipNonEmptyWith: {
958
- <B, A, C>(
959
- that: NonEmptyReadonlyArray<B>,
960
- f: (a: A, b: B) => C
961
- ): (self: NonEmptyReadonlyArray<A>) => NonEmptyArray<C>
962
- <A, B, C>(
963
- self: NonEmptyReadonlyArray<A>,
964
- that: NonEmptyReadonlyArray<B>,
965
- f: (a: A, b: B) => C
966
- ): NonEmptyArray<C>
967
- } = dual(3, <A, B, C>(
968
- self: NonEmptyReadonlyArray<A>,
969
- that: NonEmptyReadonlyArray<B>,
970
- f: (a: A, b: B) => C
971
- ): NonEmptyArray<C> => {
972
- const cs: NonEmptyArray<C> = [f(headNonEmpty(self), headNonEmpty(that))]
973
- const len = Math.min(self.length, that.length)
974
- for (let i = 1; i < len; i++) {
975
- cs[i] = f(self[i], that[i])
926
+ if (isNonEmptyReadonlyArray(as) && isNonEmptyReadonlyArray(bs)) {
927
+ const out: NonEmptyArray<C> = [f(headNonEmpty(as), headNonEmpty(bs))]
928
+ const len = Math.min(as.length, bs.length)
929
+ for (let i = 1; i < len; i++) {
930
+ out[i] = f(as[i], bs[i])
931
+ }
932
+ return out
976
933
  }
977
- return cs
934
+ return []
978
935
  })
979
936
 
980
937
  /**
@@ -982,57 +939,49 @@ export const zipNonEmptyWith: {
982
939
  *
983
940
  * @since 2.0.0
984
941
  */
985
- export const unzip = <A, B>(self: Iterable<readonly [A, B]>): [Array<A>, Array<B>] => {
942
+ export const unzip: {
943
+ <A, B>(self: NonEmptyReadonlyArray<readonly [A, B]>): [NonEmptyArray<A>, NonEmptyArray<B>]
944
+ <A, B>(self: Iterable<readonly [A, B]>): [Array<A>, Array<B>]
945
+ } = (<A, B>(self: Iterable<readonly [A, B]>): [Array<A>, Array<B>] => {
986
946
  const input = fromIterable(self)
987
- return isNonEmptyReadonlyArray(input) ? unzipNonEmpty(input) : [[], []]
988
- }
989
-
990
- /**
991
- * @since 2.0.0
992
- */
993
- export const unzipNonEmpty = <A, B>(
994
- self: NonEmptyReadonlyArray<readonly [A, B]>
995
- ): [NonEmptyArray<A>, NonEmptyArray<B>] => {
996
- const fa: NonEmptyArray<A> = [self[0][0]]
997
- const fb: NonEmptyArray<B> = [self[0][1]]
998
- for (let i = 1; i < self.length; i++) {
999
- fa[i] = self[i][0]
1000
- fb[i] = self[i][1]
947
+ if (isNonEmptyReadonlyArray(input)) {
948
+ const fa: NonEmptyArray<A> = [input[0][0]]
949
+ const fb: NonEmptyArray<B> = [input[0][1]]
950
+ for (let i = 1; i < input.length; i++) {
951
+ fa[i] = input[i][0]
952
+ fb[i] = input[i][1]
953
+ }
954
+ return [fa, fb]
1001
955
  }
1002
- return [fa, fb]
1003
- }
956
+ return [[], []]
957
+ }) as any
1004
958
 
1005
959
  /**
1006
- * Places an element in between members of an `Iterable`
960
+ * Places an element in between members of an `Iterable`.
961
+ * If the input is a non-empty array, the result is also a non-empty array.
1007
962
  *
1008
963
  * @since 2.0.0
1009
964
  */
1010
965
  export const intersperse: {
1011
- <B>(middle: B): <A>(self: Iterable<A>) => Array<A | B>
966
+ <B>(
967
+ middle: B
968
+ ): <T extends ReadonlyArray<any> | Iterable<any>>(self: T) => ReadonlyArray.With<T, ReadonlyArray.Infer<T>>
969
+ <A, B>(self: NonEmptyReadonlyArray<A>, middle: B): NonEmptyArray<A | B>
1012
970
  <A, B>(self: Iterable<A>, middle: B): Array<A | B>
1013
971
  } = dual(2, <A, B>(self: Iterable<A>, middle: B): Array<A | B> => {
1014
972
  const input = fromIterable(self)
1015
- return (isNonEmptyReadonlyArray(input) ? intersperseNonEmpty(input, middle) : [])
1016
- })
1017
-
1018
- /**
1019
- * Places an element in between members of a `NonEmptyReadonlyArray`
1020
- *
1021
- * @since 2.0.0
1022
- */
1023
- export const intersperseNonEmpty: {
1024
- <B>(middle: B): <A>(self: NonEmptyReadonlyArray<A>) => NonEmptyArray<A | B>
1025
- <A, B>(self: NonEmptyReadonlyArray<A>, middle: B): NonEmptyArray<A | B>
1026
- } = dual(2, <A, B>(self: NonEmptyReadonlyArray<A>, middle: B): NonEmptyArray<A | B> => {
1027
- const out: NonEmptyArray<A | B> = [headNonEmpty(self)]
1028
- const tail = tailNonEmpty(self)
1029
- for (let i = 0; i < tail.length; i++) {
1030
- if (i < tail.length) {
1031
- out.push(middle)
973
+ if (isNonEmptyReadonlyArray(input)) {
974
+ const out: NonEmptyArray<A | B> = [headNonEmpty(input)]
975
+ const tail = tailNonEmpty(input)
976
+ for (let i = 0; i < tail.length; i++) {
977
+ if (i < tail.length) {
978
+ out.push(middle)
979
+ }
980
+ out.push(tail[i])
1032
981
  }
1033
- out.push(tail[i])
982
+ return out
1034
983
  }
1035
- return out
984
+ return []
1036
985
  })
1037
986
 
1038
987
  /**
@@ -1093,37 +1042,30 @@ export const setNonEmptyLast: {
1093
1042
 
1094
1043
  /**
1095
1044
  * Rotate an `Iterable` by `n` steps.
1045
+ * If the input is a non-empty array, the result is also a non-empty array.
1096
1046
  *
1097
1047
  * @since 2.0.0
1098
1048
  */
1099
1049
  export const rotate: {
1100
- (n: number): <A>(self: Iterable<A>) => Array<A>
1050
+ (n: number): <T extends ReadonlyArray<any> | Iterable<any>>(self: T) => ReadonlyArray.With<T, ReadonlyArray.Infer<T>>
1051
+ <A>(self: NonEmptyReadonlyArray<A>, n: number): NonEmptyArray<A>
1101
1052
  <A>(self: Iterable<A>, n: number): Array<A>
1102
1053
  } = dual(2, <A>(self: Iterable<A>, n: number): Array<A> => {
1103
1054
  const input = fromIterable(self)
1104
- return isNonEmptyReadonlyArray(input) ? rotateNonEmpty(input, n) : []
1105
- })
1106
-
1107
- /**
1108
- * Rotate a `NonEmptyReadonlyArray` by `n` steps.
1109
- *
1110
- * @since 2.0.0
1111
- */
1112
- export const rotateNonEmpty: {
1113
- (n: number): <A>(self: NonEmptyReadonlyArray<A>) => NonEmptyArray<A>
1114
- <A>(self: NonEmptyReadonlyArray<A>, n: number): NonEmptyArray<A>
1115
- } = dual(2, <A>(self: NonEmptyReadonlyArray<A>, n: number): NonEmptyArray<A> => {
1116
- const len = self.length
1117
- const m = Math.round(n) % len
1118
- if (isOutOfBound(Math.abs(m), self) || m === 0) {
1119
- return copy(self)
1120
- }
1121
- if (m < 0) {
1122
- const [f, s] = splitNonEmptyAt(self, -m)
1123
- return appendAllNonEmpty(s, f)
1124
- } else {
1125
- return rotateNonEmpty(self, m - len)
1055
+ if (isNonEmptyReadonlyArray(input)) {
1056
+ const len = input.length
1057
+ const m = Math.round(n) % len
1058
+ if (isOutOfBound(Math.abs(m), input) || m === 0) {
1059
+ return copy(input)
1060
+ }
1061
+ if (m < 0) {
1062
+ const [f, s] = splitNonEmptyAt(input, -m)
1063
+ return appendAll(s, f)
1064
+ } else {
1065
+ return rotate(self, m - len)
1066
+ }
1126
1067
  }
1068
+ return []
1127
1069
  })
1128
1070
 
1129
1071
  /**
@@ -1158,34 +1100,6 @@ export const contains: {
1158
1100
  <A>(self: Iterable<A>, a: A): boolean
1159
1101
  } = containsWith(_equivalence)
1160
1102
 
1161
- /**
1162
- * Remove duplicates from a `NonEmptyReadonlyArray`, keeping the first occurrence of an element using the provided `isEquivalent` function.
1163
- *
1164
- * @since 2.0.0
1165
- */
1166
- export const dedupeNonEmptyWith: {
1167
- <A>(isEquivalent: (self: A, that: A) => boolean): (self: NonEmptyReadonlyArray<A>) => NonEmptyArray<A>
1168
- <A>(self: NonEmptyReadonlyArray<A>, isEquivalent: (self: A, that: A) => boolean): NonEmptyArray<A>
1169
- } = dual(2, <A>(self: NonEmptyReadonlyArray<A>, isEquivalent: (self: A, that: A) => boolean): NonEmptyArray<A> => {
1170
- const out: NonEmptyArray<A> = [headNonEmpty(self)]
1171
- const rest = tailNonEmpty(self)
1172
- for (const a of rest) {
1173
- if (out.every((o) => !isEquivalent(a, o))) {
1174
- out.push(a)
1175
- }
1176
- }
1177
- return out
1178
- })
1179
-
1180
- /**
1181
- * Remove duplicates from a `NonEmptyReadonlyArray`, keeping the first occurrence of an element.
1182
- *
1183
- * @since 2.0.0
1184
- */
1185
- export const dedupeNonEmpty: <A>(self: NonEmptyReadonlyArray<A>) => NonEmptyArray<A> = dedupeNonEmptyWith(
1186
- Equal.equivalence()
1187
- )
1188
-
1189
1103
  /**
1190
1104
  * A useful recursion pattern for processing an `Iterable` to produce a new `Array`, often used for "chopping" up the input
1191
1105
  * `Iterable`. Typically chop is called with some function that will consume an initial prefix of the `Iterable` and produce a
@@ -1196,7 +1110,11 @@ export const dedupeNonEmpty: <A>(self: NonEmptyReadonlyArray<A>) => NonEmptyArra
1196
1110
  export const chop: {
1197
1111
  <A, B>(
1198
1112
  f: (as: NonEmptyReadonlyArray<A>) => readonly [B, ReadonlyArray<A>]
1199
- ): (self: Iterable<A>) => Array<B>
1113
+ ): <T extends ReadonlyArray<any> | Iterable<any>>(self: T) => ReadonlyArray.With<T, ReadonlyArray.Infer<T>>
1114
+ <A, B>(
1115
+ self: NonEmptyReadonlyArray<A>,
1116
+ f: (as: NonEmptyReadonlyArray<A>) => readonly [B, ReadonlyArray<A>]
1117
+ ): NonEmptyArray<B>
1200
1118
  <A, B>(
1201
1119
  self: Iterable<A>,
1202
1120
  f: (as: NonEmptyReadonlyArray<A>) => readonly [B, ReadonlyArray<A>]
@@ -1206,41 +1124,23 @@ export const chop: {
1206
1124
  f: (as: NonEmptyReadonlyArray<A>) => readonly [B, ReadonlyArray<A>]
1207
1125
  ): Array<B> => {
1208
1126
  const input = fromIterable(self)
1209
- return isNonEmptyReadonlyArray(input) ? chopNonEmpty(input, f) : []
1210
- })
1211
-
1212
- /**
1213
- * A useful recursion pattern for processing a `NonEmptyReadonlyArray` to produce a new `NonEmptyReadonlyArray`, often used for "chopping" up the input
1214
- * `NonEmptyReadonlyArray`. Typically `chop` is called with some function that will consume an initial prefix of the `NonEmptyReadonlyArray` and produce a
1215
- * value and the tail of the `NonEmptyReadonlyArray`.
1216
- *
1217
- * @since 2.0.0
1218
- */
1219
- export const chopNonEmpty: {
1220
- <A, B>(
1221
- f: (as: NonEmptyReadonlyArray<A>) => readonly [B, ReadonlyArray<A>]
1222
- ): (self: NonEmptyReadonlyArray<A>) => NonEmptyArray<B>
1223
- <A, B>(
1224
- self: NonEmptyReadonlyArray<A>,
1225
- f: (as: NonEmptyReadonlyArray<A>) => readonly [B, ReadonlyArray<A>]
1226
- ): NonEmptyArray<B>
1227
- } = dual(2, <A, B>(
1228
- self: NonEmptyReadonlyArray<A>,
1229
- f: (as: NonEmptyReadonlyArray<A>) => readonly [B, ReadonlyArray<A>]
1230
- ): NonEmptyArray<B> => {
1231
- const [b, rest] = f(self)
1232
- const out: NonEmptyArray<B> = [b]
1233
- let next: ReadonlyArray<A> = rest
1234
- while (readonlyArray.isNonEmptyArray(next)) {
1235
- const [b, rest] = f(next)
1236
- out.push(b)
1237
- next = rest
1127
+ if (isNonEmptyReadonlyArray(input)) {
1128
+ const [b, rest] = f(input)
1129
+ const out: NonEmptyArray<B> = [b]
1130
+ let next: ReadonlyArray<A> = rest
1131
+ while (readonlyArray.isNonEmptyArray(next)) {
1132
+ const [b, rest] = f(next)
1133
+ out.push(b)
1134
+ next = rest
1135
+ }
1136
+ return out
1238
1137
  }
1239
- return out
1138
+ return []
1240
1139
  })
1241
1140
 
1242
1141
  /**
1243
- * Splits an `Iterable` into two pieces, the first piece has max `n` elements.
1142
+ * Splits an `Iterable` into two segments, with the first segment containing a maximum of `n` elements.
1143
+ * The value of `n` can be `0`.
1244
1144
  *
1245
1145
  * @category getters
1246
1146
  * @since 2.0.0
@@ -1250,11 +1150,14 @@ export const splitAt: {
1250
1150
  <A>(self: Iterable<A>, n: number): [beforeIndex: Array<A>, fromIndex: Array<A>]
1251
1151
  } = dual(2, <A>(self: Iterable<A>, n: number): [Array<A>, Array<A>] => {
1252
1152
  const input = Array.from(self)
1253
- return n >= 1 && isNonEmptyReadonlyArray(input) ?
1254
- splitNonEmptyAt(input, n) :
1255
- isEmptyReadonlyArray(input) ?
1256
- [input, []] :
1257
- [[], input]
1153
+ const _n = Math.floor(n)
1154
+ if (isNonEmptyReadonlyArray(input)) {
1155
+ if (_n >= 1) {
1156
+ return splitNonEmptyAt(input, _n)
1157
+ }
1158
+ return [[], input]
1159
+ }
1160
+ return [input, []]
1258
1161
  })
1259
1162
 
1260
1163
  /**
@@ -1266,7 +1169,8 @@ export const copy: {
1266
1169
  } = (<A>(self: ReadonlyArray<A>): Array<A> => self.slice()) as any
1267
1170
 
1268
1171
  /**
1269
- * Splits a `NonEmptyReadonlyArray` into two pieces, the first piece has max `n` elements.
1172
+ * Splits a `NonEmptyReadonlyArray` into two segments, with the first segment containing a maximum of `n` elements.
1173
+ * The value of `n` must be `>= 1`.
1270
1174
  *
1271
1175
  * @category getters
1272
1176
  * @since 2.0.0
@@ -1275,10 +1179,10 @@ export const splitNonEmptyAt: {
1275
1179
  (n: number): <A>(self: NonEmptyReadonlyArray<A>) => [beforeIndex: NonEmptyArray<A>, fromIndex: Array<A>]
1276
1180
  <A>(self: NonEmptyReadonlyArray<A>, n: number): [beforeIndex: NonEmptyArray<A>, fromIndex: Array<A>]
1277
1181
  } = dual(2, <A>(self: NonEmptyReadonlyArray<A>, n: number): [NonEmptyArray<A>, Array<A>] => {
1278
- const m = Math.max(1, n)
1279
- return m >= self.length ?
1182
+ const _n = Math.max(1, Math.floor(n))
1183
+ return _n >= self.length ?
1280
1184
  [copy(self), []] :
1281
- [prepend(self.slice(1, m), headNonEmpty(self)), self.slice(m)]
1185
+ [prepend(self.slice(1, _n), headNonEmpty(self)), self.slice(_n)]
1282
1186
  })
1283
1187
 
1284
1188
  /**
@@ -1296,29 +1200,21 @@ export const splitNonEmptyAt: {
1296
1200
  * @since 2.0.0
1297
1201
  */
1298
1202
  export const chunksOf: {
1299
- (n: number): <A>(self: Iterable<A>) => Array<NonEmptyArray<A>>
1203
+ (
1204
+ n: number
1205
+ ): <T extends ReadonlyArray<any> | Iterable<any>>(
1206
+ self: T
1207
+ ) => ReadonlyArray.With<T, NonEmptyArray<ReadonlyArray.Infer<T>>>
1208
+ <A>(self: NonEmptyReadonlyArray<A>, n: number): NonEmptyArray<NonEmptyArray<A>>
1300
1209
  <A>(self: Iterable<A>, n: number): Array<NonEmptyArray<A>>
1301
1210
  } = dual(2, <A>(self: Iterable<A>, n: number): Array<NonEmptyArray<A>> => {
1302
1211
  const input = fromIterable(self)
1303
- return isNonEmptyReadonlyArray(input) ? chunksOfNonEmpty(input, n) : []
1212
+ if (isNonEmptyReadonlyArray(input)) {
1213
+ return chop(input, splitNonEmptyAt(n))
1214
+ }
1215
+ return []
1304
1216
  })
1305
1217
 
1306
- /**
1307
- * Splits a `NonEmptyReadonlyArray` into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of
1308
- * the `NonEmptyReadonlyArray`.
1309
- *
1310
- * @category getters
1311
- * @since 2.0.0
1312
- */
1313
- export const chunksOfNonEmpty: {
1314
- (n: number): <A>(self: NonEmptyReadonlyArray<A>) => NonEmptyArray<NonEmptyArray<A>>
1315
- <A>(self: NonEmptyReadonlyArray<A>, n: number): NonEmptyArray<NonEmptyArray<A>>
1316
- } = dual(
1317
- 2,
1318
- <A>(self: NonEmptyReadonlyArray<A>, n: number): NonEmptyArray<NonEmptyArray<A>> =>
1319
- chopNonEmpty(self, splitNonEmptyAt(n))
1320
- )
1321
-
1322
1218
  /**
1323
1219
  * Group equal, consecutive elements of a `NonEmptyReadonlyArray` into `NonEmptyArray`s using the provided `isEquivalent` function.
1324
1220
  *
@@ -1331,7 +1227,7 @@ export const groupWith: {
1331
1227
  } = dual(
1332
1228
  2,
1333
1229
  <A>(self: NonEmptyReadonlyArray<A>, isEquivalent: (self: A, that: A) => boolean): NonEmptyArray<NonEmptyArray<A>> =>
1334
- chopNonEmpty(self, (as) => {
1230
+ chop(self, (as) => {
1335
1231
  const h = headNonEmpty(as)
1336
1232
  const out: NonEmptyArray<A> = [h]
1337
1233
  let i = 1
@@ -1383,53 +1279,48 @@ export const groupBy: {
1383
1279
  /**
1384
1280
  * @since 2.0.0
1385
1281
  */
1386
- export const unionWith = <A>(isEquivalent: (self: A, that: A) => boolean): {
1387
- (that: Iterable<A>): (self: Iterable<A>) => Array<A>
1388
- (self: Iterable<A>, that: Iterable<A>): Array<A>
1389
- } =>
1390
- dual(2, (self: Iterable<A>, that: Iterable<A>): Array<A> => {
1391
- const a = fromIterable(self)
1392
- const b = fromIterable(that)
1393
- return isNonEmptyReadonlyArray(a) && isNonEmptyReadonlyArray(b) ?
1394
- unionNonEmptyWith(isEquivalent)(a, b) :
1395
- isNonEmptyReadonlyArray(a) ?
1396
- a :
1397
- b
1398
- })
1282
+ export const unionWith: {
1283
+ <S extends ReadonlyArray<any> | Iterable<any>, T extends ReadonlyArray<any> | Iterable<any>>(
1284
+ that: T,
1285
+ isEquivalent: (self: ReadonlyArray.Infer<S>, that: ReadonlyArray.Infer<T>) => boolean
1286
+ ): (self: S) => ReadonlyArray.With2<S, T, ReadonlyArray.Infer<S> | ReadonlyArray.Infer<T>>
1287
+ <A, B>(
1288
+ self: NonEmptyReadonlyArray<A>,
1289
+ that: Iterable<B>,
1290
+ isEquivalent: (self: A, that: B) => boolean
1291
+ ): NonEmptyArray<A | B>
1292
+ <A, B>(
1293
+ self: Iterable<A>,
1294
+ that: NonEmptyReadonlyArray<B>,
1295
+ isEquivalent: (self: A, that: B) => boolean
1296
+ ): NonEmptyArray<A | B>
1297
+ <A, B>(self: Iterable<A>, that: Iterable<B>, isEquivalent: (self: A, that: B) => boolean): Array<A | B>
1298
+ } = dual(3, <A>(self: Iterable<A>, that: Iterable<A>, isEquivalent: (self: A, that: A) => boolean): Array<A> => {
1299
+ const a = fromIterable(self)
1300
+ const b = fromIterable(that)
1301
+ if (isNonEmptyReadonlyArray(a)) {
1302
+ if (isNonEmptyReadonlyArray(b)) {
1303
+ const dedupe = dedupeWith(isEquivalent)
1304
+ return dedupe(appendAll(a, b))
1305
+ }
1306
+ return a
1307
+ }
1308
+ return b
1309
+ })
1399
1310
 
1400
1311
  /**
1401
1312
  * @since 2.0.0
1402
1313
  */
1403
1314
  export const union: {
1404
- <B>(that: Iterable<B>): <A>(self: Iterable<A>) => Array<A | B>
1315
+ <T extends ReadonlyArray<any> | Iterable<any>>(
1316
+ that: T
1317
+ ): <S extends ReadonlyArray<any> | Iterable<any>>(
1318
+ self: S
1319
+ ) => ReadonlyArray.With2<S, T, ReadonlyArray.Infer<S> | ReadonlyArray.Infer<T>>
1320
+ <A, B>(self: NonEmptyReadonlyArray<A>, that: ReadonlyArray<B>): NonEmptyArray<A | B>
1321
+ <A, B>(self: ReadonlyArray<A>, that: NonEmptyReadonlyArray<B>): NonEmptyArray<A | B>
1405
1322
  <A, B>(self: Iterable<A>, that: Iterable<B>): Array<A | B>
1406
- } = unionWith(_equivalence)
1407
-
1408
- /**
1409
- * @since 2.0.0
1410
- */
1411
- export const unionNonEmptyWith = <A>(isEquivalent: (self: A, that: A) => boolean): {
1412
- (that: NonEmptyReadonlyArray<A>): (self: ReadonlyArray<A>) => NonEmptyArray<A>
1413
- (that: ReadonlyArray<A>): (self: NonEmptyReadonlyArray<A>) => NonEmptyArray<A>
1414
- (self: ReadonlyArray<A>, that: NonEmptyReadonlyArray<A>): NonEmptyArray<A>
1415
- (self: NonEmptyReadonlyArray<A>, that: ReadonlyArray<A>): NonEmptyArray<A>
1416
- } => {
1417
- const dedupe = dedupeNonEmptyWith(isEquivalent)
1418
- return dual(
1419
- 2,
1420
- (self: NonEmptyReadonlyArray<A>, that: ReadonlyArray<A>): NonEmptyArray<A> => dedupe(appendAllNonEmpty(self, that))
1421
- )
1422
- }
1423
-
1424
- /**
1425
- * @since 2.0.0
1426
- */
1427
- export const unionNonEmpty: {
1428
- <A>(that: NonEmptyReadonlyArray<A>): (self: ReadonlyArray<A>) => NonEmptyArray<A>
1429
- <A>(that: ReadonlyArray<A>): (self: NonEmptyReadonlyArray<A>) => NonEmptyArray<A>
1430
- <A>(self: ReadonlyArray<A>, that: NonEmptyReadonlyArray<A>): NonEmptyArray<A>
1431
- <A>(self: NonEmptyReadonlyArray<A>, that: ReadonlyArray<A>): NonEmptyArray<A>
1432
- } = unionNonEmptyWith(_equivalence)
1323
+ } = dual(2, <A, B>(self: Iterable<A>, that: Iterable<B>): Array<A | B> => unionWith(self, that, _equivalence))
1433
1324
 
1434
1325
  /**
1435
1326
  * Creates an `Array` of unique values that are included in all given `Iterable`s using the provided `isEquivalent` function.
@@ -1477,7 +1368,7 @@ export const differenceWith = <A>(isEquivalent: (self: A, that: A) => boolean):
1477
1368
  }
1478
1369
 
1479
1370
  /**
1480
- * Creates a `Array` of values not included in the other given `Iterable` using the provided `isEquivalent` function.
1371
+ * Creates a `Array` of values not included in the other given `Iterable`.
1481
1372
  * The order and references of result values are determined by the first `Iterable`.
1482
1373
  *
1483
1374
  * @since 2.0.0
@@ -1508,13 +1399,24 @@ export declare namespace ReadonlyArray {
1508
1399
  /**
1509
1400
  * @since 2.0.0
1510
1401
  */
1511
- export type Infer<T extends ReadonlyArray<any>> = T[number]
1402
+ export type Infer<T extends ReadonlyArray<any> | Iterable<any>> = T extends ReadonlyArray<infer A> ? A
1403
+ : T extends Iterable<infer A> ? A
1404
+ : never
1512
1405
 
1513
1406
  /**
1514
1407
  * @since 2.0.0
1515
1408
  */
1516
- export type With<T extends ReadonlyArray<any>, A> = T extends NonEmptyReadonlyArray<any> ? NonEmptyArray<A>
1409
+ export type With<T extends ReadonlyArray<any> | Iterable<any>, A> = T extends NonEmptyReadonlyArray<any> ?
1410
+ NonEmptyArray<A>
1517
1411
  : Array<A>
1412
+
1413
+ /**
1414
+ * @since 2.0.0
1415
+ */
1416
+ export type With2<S extends ReadonlyArray<any> | Iterable<any>, T extends ReadonlyArray<any> | Iterable<any>, A> =
1417
+ S extends NonEmptyReadonlyArray<any> ? NonEmptyArray<A>
1418
+ : T extends NonEmptyReadonlyArray<any> ? NonEmptyArray<A>
1419
+ : Array<A>
1518
1420
  }
1519
1421
 
1520
1422
  /**
@@ -1529,11 +1431,16 @@ export const map: {
1529
1431
  } = dual(2, <A, B>(self: ReadonlyArray<A>, f: (a: A, i: number) => B): Array<B> => self.map(f))
1530
1432
 
1531
1433
  /**
1434
+ * Applies a function to each element in an array and returns a new array containing the concatenated mapped elements.
1435
+ *
1532
1436
  * @category sequencing
1533
1437
  * @since 2.0.0
1534
1438
  */
1535
1439
  export const flatMap: {
1536
- <A, B>(f: (a: A, i: number) => ReadonlyArray<B>): (self: ReadonlyArray<A>) => Array<B>
1440
+ <S extends ReadonlyArray<any>, T extends ReadonlyArray<any>>(
1441
+ f: (a: ReadonlyArray.Infer<S>, i: number) => T
1442
+ ): (self: S) => ReadonlyArray.With2<S, T, ReadonlyArray.Infer<T>>
1443
+ <A, B>(self: NonEmptyReadonlyArray<A>, f: (a: A, i: number) => NonEmptyReadonlyArray<B>): NonEmptyArray<B>
1537
1444
  <A, B>(self: ReadonlyArray<A>, f: (a: A, i: number) => ReadonlyArray<B>): Array<B>
1538
1445
  } = dual(
1539
1446
  2,
@@ -1550,27 +1457,15 @@ export const flatMap: {
1550
1457
  )
1551
1458
 
1552
1459
  /**
1460
+ * Flattens an array of arrays into a single array by concatenating all arrays.
1461
+ *
1553
1462
  * @category sequencing
1554
1463
  * @since 2.0.0
1555
1464
  */
1556
- export const flatMapNonEmpty: {
1557
- <A, B>(f: (a: A, i: number) => NonEmptyReadonlyArray<B>): (self: NonEmptyReadonlyArray<A>) => NonEmptyArray<B>
1558
- <A, B>(self: NonEmptyReadonlyArray<A>, f: (a: A, i: number) => NonEmptyReadonlyArray<B>): NonEmptyArray<B>
1559
- } = flatMap as any
1560
-
1561
- /**
1562
- * @category sequencing
1563
- * @since 2.0.0
1564
- */
1565
- export const flatten: <A>(self: ReadonlyArray<ReadonlyArray<A>>) => Array<A> = flatMap(identity)
1566
-
1567
- /**
1568
- * @category sequencing
1569
- * @since 2.0.0
1570
- */
1571
- export const flattenNonEmpty: <A>(
1572
- self: NonEmptyReadonlyArray<NonEmptyReadonlyArray<A>>
1573
- ) => NonEmptyArray<A> = flatMapNonEmpty(identity)
1465
+ export const flatten: {
1466
+ <A>(self: NonEmptyReadonlyArray<NonEmptyReadonlyArray<A>>): NonEmptyArray<A>
1467
+ <A>(self: ReadonlyArray<ReadonlyArray<A>>): Array<A>
1468
+ } = flatMap(identity) as any
1574
1469
 
1575
1470
  /**
1576
1471
  * @category filtering
@@ -1642,10 +1537,73 @@ export const partitionMap: {
1642
1537
  )
1643
1538
 
1644
1539
  /**
1540
+ * Retrieves the `Some` values from an `Iterable` of `Option`s, collecting them into an array.
1541
+ *
1542
+ * @example
1543
+ * import { getSomes } from "effect/ReadonlyArray"
1544
+ * import { some, none } from "effect/Option"
1545
+ *
1546
+ * assert.deepStrictEqual(
1547
+ * getSomes([some(1), none(), some(2)]),
1548
+ * [1, 2]
1549
+ * )
1550
+ *
1551
+ * @category filtering
1552
+ * @since 2.0.0
1553
+ */
1554
+ export const getSomes: <A>(self: Iterable<Option<A>>) => Array<A> = filterMap(identity)
1555
+
1556
+ /**
1557
+ * Retrieves the `Left` values from an `Iterable` of `Either`s, collecting them into an array.
1558
+ *
1559
+ * @example
1560
+ * import { getLefts } from "effect/ReadonlyArray"
1561
+ * import { right, left } from "effect/Either"
1562
+ *
1563
+ * assert.deepStrictEqual(
1564
+ * getLefts([right(1), left("err"), right(2)]),
1565
+ * ["err"]
1566
+ * )
1567
+ *
1568
+ * @category filtering
1569
+ * @since 2.0.0
1570
+ */
1571
+ export const getLefts = <E, A>(self: Iterable<Either<E, A>>): Array<E> => {
1572
+ const out: Array<E> = []
1573
+ for (const a of self) {
1574
+ if (E.isLeft(a)) {
1575
+ out.push(a.left)
1576
+ }
1577
+ }
1578
+
1579
+ return out
1580
+ }
1581
+
1582
+ /**
1583
+ * Retrieves the `Right` values from an `Iterable` of `Either`s, collecting them into an array.
1584
+ *
1585
+ * @example
1586
+ * import { getRights } from "effect/ReadonlyArray"
1587
+ * import { right, left } from "effect/Either"
1588
+ *
1589
+ * assert.deepStrictEqual(
1590
+ * getRights([right(1), left("err"), right(2)]),
1591
+ * [1, 2]
1592
+ * )
1593
+ *
1645
1594
  * @category filtering
1646
1595
  * @since 2.0.0
1647
1596
  */
1648
- export const compact: <A>(self: Iterable<Option<A>>) => Array<A> = filterMap(identity)
1597
+ export const getRights = <E, A>(self: Iterable<Either<E, A>>): Array<A> => {
1598
+ const out: Array<A> = []
1599
+ for (const a of self) {
1600
+ if (E.isRight(a)) {
1601
+ out.push(a.right)
1602
+ }
1603
+ }
1604
+
1605
+ return out
1606
+ }
1649
1607
 
1650
1608
  /**
1651
1609
  * @category filtering
@@ -1773,7 +1731,7 @@ export const liftNullable = <A extends Array<unknown>, B>(
1773
1731
  (...a) => fromNullable(f(...a))
1774
1732
 
1775
1733
  /**
1776
- * @category combining
1734
+ * @category sequencing
1777
1735
  * @since 2.0.0
1778
1736
  */
1779
1737
  export const flatMapNullable: {
@@ -1901,27 +1859,45 @@ export const forEach: {
1901
1859
  } = dual(2, <A>(self: Iterable<A>, f: (a: A, i: number) => void): void => fromIterable(self).forEach((a, i) => f(a, i)))
1902
1860
 
1903
1861
  /**
1904
- * Remove duplicates from am `Iterable` using the provided `isEquivalent` function, keeping the first occurrence of an element.
1862
+ * Remove duplicates from an `Iterable` using the provided `isEquivalent` function,
1863
+ * preserving the order of the first occurrence of each element.
1905
1864
  *
1906
1865
  * @since 2.0.0
1907
1866
  */
1908
1867
  export const dedupeWith: {
1909
- <A>(isEquivalent: (self: A, that: A) => boolean): (self: Iterable<A>) => Array<A>
1868
+ <A>(
1869
+ isEquivalent: (self: A, that: A) => boolean
1870
+ ): <T extends ReadonlyArray<any> | Iterable<any>>(self: T) => ReadonlyArray.With<T, ReadonlyArray.Infer<T>>
1871
+ <A>(self: NonEmptyReadonlyArray<A>, isEquivalent: (self: A, that: A) => boolean): NonEmptyArray<A>
1910
1872
  <A>(self: Iterable<A>, isEquivalent: (self: A, that: A) => boolean): Array<A>
1911
1873
  } = dual(
1912
1874
  2,
1913
1875
  <A>(self: Iterable<A>, isEquivalent: (self: A, that: A) => boolean): Array<A> => {
1914
1876
  const input = fromIterable(self)
1915
- return isNonEmptyReadonlyArray(input) ? dedupeNonEmptyWith(isEquivalent)(input) : []
1877
+ if (isNonEmptyReadonlyArray(input)) {
1878
+ const out: NonEmptyArray<A> = [headNonEmpty(input)]
1879
+ const rest = tailNonEmpty(input)
1880
+ for (const r of rest) {
1881
+ if (out.every((a) => !isEquivalent(r, a))) {
1882
+ out.push(r)
1883
+ }
1884
+ }
1885
+ return out
1886
+ }
1887
+ return []
1916
1888
  }
1917
1889
  )
1918
1890
 
1919
1891
  /**
1920
- * Remove duplicates from am `Iterable`, keeping the first occurrence of an element.
1892
+ * Remove duplicates from an `Iterable`, preserving the order of the first occurrence of each element.
1893
+ * The equivalence used to compare elements is provided by `Equal.equivalence()` from the `Equal` module.
1921
1894
  *
1922
1895
  * @since 2.0.0
1923
1896
  */
1924
- export const dedupe: <A>(self: Iterable<A>) => Array<A> = dedupeWith(Equal.equivalence())
1897
+ export const dedupe: {
1898
+ <A>(self: NonEmptyReadonlyArray<A>): NonEmptyArray<A>
1899
+ <A>(self: Iterable<A>): Array<A>
1900
+ } = dedupeWith(Equal.equivalence()) as any
1925
1901
 
1926
1902
  /**
1927
1903
  * Deduplicates adjacent elements that are identical using the provided `isEquivalent` function.