effect 2.0.0-next.55 → 2.0.0-next.56

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 (652) hide show
  1. package/README.md +14 -9
  2. package/dist/cjs/Cache.js.map +1 -1
  3. package/dist/cjs/Cause.js +53 -18
  4. package/dist/cjs/Cause.js.map +1 -1
  5. package/dist/cjs/ChildExecutorDecision.js.map +1 -1
  6. package/dist/cjs/Chunk.js +5 -5
  7. package/dist/cjs/Chunk.js.map +1 -1
  8. package/dist/cjs/Data.js +11 -20
  9. package/dist/cjs/Data.js.map +1 -1
  10. package/dist/cjs/Duration.js +4 -0
  11. package/dist/cjs/Duration.js.map +1 -1
  12. package/dist/cjs/Effect.js +11 -4
  13. package/dist/cjs/Effect.js.map +1 -1
  14. package/dist/cjs/Either.js +9 -2
  15. package/dist/cjs/Either.js.map +1 -1
  16. package/dist/cjs/Exit.js.map +1 -1
  17. package/dist/cjs/Fiber.js.map +1 -1
  18. package/dist/cjs/HashMap.js.map +1 -1
  19. package/dist/cjs/KeyedPool.js.map +1 -1
  20. package/dist/cjs/List.js.map +1 -1
  21. package/dist/cjs/MergeState.js.map +1 -1
  22. package/dist/cjs/MetricPolling.js +2 -2
  23. package/dist/cjs/MetricPolling.js.map +1 -1
  24. package/dist/cjs/MetricState.js.map +1 -1
  25. package/dist/cjs/NonEmptyIterable.js.map +1 -1
  26. package/dist/cjs/Option.js +2 -2
  27. package/dist/cjs/Option.js.map +1 -1
  28. package/dist/cjs/Pipeable.js.map +1 -1
  29. package/dist/cjs/Predicate.js +17 -1
  30. package/dist/cjs/Predicate.js.map +1 -1
  31. package/dist/cjs/PrimaryKey.js +15 -0
  32. package/dist/cjs/PrimaryKey.js.map +1 -0
  33. package/dist/cjs/Queue.js +6 -1
  34. package/dist/cjs/Queue.js.map +1 -1
  35. package/dist/cjs/ReadonlyArray.js +2 -0
  36. package/dist/cjs/ReadonlyArray.js.map +1 -1
  37. package/dist/cjs/ReadonlyRecord.js +2 -2
  38. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  39. package/dist/cjs/RedBlackTree.js.map +1 -1
  40. package/dist/cjs/Request.js +35 -1
  41. package/dist/cjs/Request.js.map +1 -1
  42. package/dist/cjs/STM.js +1 -1
  43. package/dist/cjs/STM.js.map +1 -1
  44. package/dist/cjs/Sink.js.map +1 -1
  45. package/dist/cjs/SortedMap.js +4 -1
  46. package/dist/cjs/SortedMap.js.map +1 -1
  47. package/dist/cjs/SortedSet.js +2 -2
  48. package/dist/cjs/SortedSet.js.map +1 -1
  49. package/dist/cjs/Stream.js.map +1 -1
  50. package/dist/cjs/SubscriptionRef.js.map +1 -1
  51. package/dist/cjs/TPubSub.js.map +1 -1
  52. package/dist/cjs/TestAnnotation.js +3 -1
  53. package/dist/cjs/TestAnnotation.js.map +1 -1
  54. package/dist/cjs/TestClock.js.map +1 -1
  55. package/dist/cjs/UpstreamPullRequest.js.map +1 -1
  56. package/dist/cjs/index.js +4 -2
  57. package/dist/cjs/index.js.map +1 -1
  58. package/dist/cjs/internal/cache.js.map +1 -1
  59. package/dist/cjs/internal/cause.js +4 -103
  60. package/dist/cjs/internal/cause.js.map +1 -1
  61. package/dist/cjs/internal/channel/continuation.js.map +1 -1
  62. package/dist/cjs/internal/configProvider.js +13 -1
  63. package/dist/cjs/internal/configProvider.js.map +1 -1
  64. package/dist/cjs/internal/core-effect.js +7 -7
  65. package/dist/cjs/internal/core-effect.js.map +1 -1
  66. package/dist/cjs/internal/core-stream.js.map +1 -1
  67. package/dist/cjs/internal/core.js +159 -11
  68. package/dist/cjs/internal/core.js.map +1 -1
  69. package/dist/cjs/internal/data.js +4 -22
  70. package/dist/cjs/internal/data.js.map +1 -1
  71. package/dist/cjs/internal/dataSource.js +1 -1
  72. package/dist/cjs/internal/dataSource.js.map +1 -1
  73. package/dist/cjs/internal/deferred.js.map +1 -1
  74. package/dist/cjs/internal/differ/orPatch.js.map +1 -1
  75. package/dist/cjs/internal/effect/circular.js.map +1 -1
  76. package/dist/cjs/internal/effectable.js +21 -3
  77. package/dist/cjs/internal/effectable.js.map +1 -1
  78. package/dist/cjs/internal/fiberMessage.js.map +1 -1
  79. package/dist/cjs/internal/fiberRuntime.js +9 -10
  80. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  81. package/dist/cjs/internal/hashMap.js +1 -1
  82. package/dist/cjs/internal/hashMap.js.map +1 -1
  83. package/dist/cjs/internal/hashSet.js +2 -2
  84. package/dist/cjs/internal/hashSet.js.map +1 -1
  85. package/dist/cjs/internal/keyedPool.js.map +1 -1
  86. package/dist/cjs/internal/layer.js.map +1 -1
  87. package/dist/cjs/internal/metric/polling.js +7 -7
  88. package/dist/cjs/internal/metric/polling.js.map +1 -1
  89. package/dist/cjs/internal/metric.js +4 -0
  90. package/dist/cjs/internal/metric.js.map +1 -1
  91. package/dist/cjs/internal/pool.js.map +1 -1
  92. package/dist/cjs/internal/pubsub.js +24 -23
  93. package/dist/cjs/internal/pubsub.js.map +1 -1
  94. package/dist/cjs/internal/queue.js +10 -1
  95. package/dist/cjs/internal/queue.js.map +1 -1
  96. package/dist/cjs/internal/redBlackTree.js +5 -1
  97. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  98. package/dist/cjs/internal/reloadable.js.map +1 -1
  99. package/dist/cjs/internal/request.js +29 -15
  100. package/dist/cjs/internal/request.js.map +1 -1
  101. package/dist/cjs/internal/resource.js +2 -2
  102. package/dist/cjs/internal/resource.js.map +1 -1
  103. package/dist/cjs/internal/runtime.js +2 -3
  104. package/dist/cjs/internal/runtime.js.map +1 -1
  105. package/dist/cjs/internal/schedule.js +6 -7
  106. package/dist/cjs/internal/schedule.js.map +1 -1
  107. package/dist/cjs/internal/scopedCache.js.map +1 -1
  108. package/dist/cjs/internal/scopedRef.js.map +1 -1
  109. package/dist/cjs/internal/sink.js +1 -1
  110. package/dist/cjs/internal/sink.js.map +1 -1
  111. package/dist/cjs/internal/stm/core.js +2 -2
  112. package/dist/cjs/internal/stm/core.js.map +1 -1
  113. package/dist/cjs/internal/stm/tArray.js.map +1 -1
  114. package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
  115. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  116. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  117. package/dist/cjs/internal/stm/tPubSub.js +17 -14
  118. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  119. package/dist/cjs/internal/stm/tQueue.js +6 -7
  120. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  121. package/dist/cjs/internal/stm/tSemaphore.js +2 -2
  122. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
  123. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  124. package/dist/cjs/internal/stream.js +4 -4
  125. package/dist/cjs/internal/stream.js.map +1 -1
  126. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  127. package/dist/cjs/internal/take.js +1 -1
  128. package/dist/cjs/internal/take.js.map +1 -1
  129. package/dist/cjs/internal/version.js +1 -1
  130. package/dist/dts/Brand.d.ts +4 -4
  131. package/dist/dts/Brand.d.ts.map +1 -1
  132. package/dist/dts/Cache.d.ts +15 -14
  133. package/dist/dts/Cache.d.ts.map +1 -1
  134. package/dist/dts/Cause.d.ts +92 -25
  135. package/dist/dts/Cause.d.ts.map +1 -1
  136. package/dist/dts/Channel.d.ts +4 -4
  137. package/dist/dts/Channel.d.ts.map +1 -1
  138. package/dist/dts/ChildExecutorDecision.d.ts.map +1 -1
  139. package/dist/dts/Chunk.d.ts +26 -24
  140. package/dist/dts/Chunk.d.ts.map +1 -1
  141. package/dist/dts/Clock.d.ts +4 -4
  142. package/dist/dts/Clock.d.ts.map +1 -1
  143. package/dist/dts/Config.d.ts +4 -4
  144. package/dist/dts/Config.d.ts.map +1 -1
  145. package/dist/dts/ConfigError.d.ts +7 -7
  146. package/dist/dts/ConfigError.d.ts.map +1 -1
  147. package/dist/dts/ConfigProvider.d.ts +3 -3
  148. package/dist/dts/ConfigProvider.d.ts.map +1 -1
  149. package/dist/dts/ConfigProviderPathPatch.d.ts +1 -1
  150. package/dist/dts/ConfigProviderPathPatch.d.ts.map +1 -1
  151. package/dist/dts/Console.d.ts +36 -36
  152. package/dist/dts/Console.d.ts.map +1 -1
  153. package/dist/dts/Context.d.ts +4 -4
  154. package/dist/dts/Context.d.ts.map +1 -1
  155. package/dist/dts/Data.d.ts +3 -17
  156. package/dist/dts/Data.d.ts.map +1 -1
  157. package/dist/dts/Deferred.d.ts +4 -4
  158. package/dist/dts/Deferred.d.ts.map +1 -1
  159. package/dist/dts/Differ.d.ts +9 -9
  160. package/dist/dts/Differ.d.ts.map +1 -1
  161. package/dist/dts/Duration.d.ts +1 -1
  162. package/dist/dts/Duration.d.ts.map +1 -1
  163. package/dist/dts/Effect.d.ts +34 -20
  164. package/dist/dts/Effect.d.ts.map +1 -1
  165. package/dist/dts/Either.d.ts +15 -3
  166. package/dist/dts/Either.d.ts.map +1 -1
  167. package/dist/dts/Equal.d.ts +1 -1
  168. package/dist/dts/Equal.d.ts.map +1 -1
  169. package/dist/dts/Equivalence.d.ts +1 -1
  170. package/dist/dts/Equivalence.d.ts.map +1 -1
  171. package/dist/dts/Exit.d.ts +5 -3
  172. package/dist/dts/Exit.d.ts.map +1 -1
  173. package/dist/dts/Fiber.d.ts +12 -12
  174. package/dist/dts/Fiber.d.ts.map +1 -1
  175. package/dist/dts/FiberRef.d.ts +3 -3
  176. package/dist/dts/FiberRef.d.ts.map +1 -1
  177. package/dist/dts/GroupBy.d.ts +2 -2
  178. package/dist/dts/GroupBy.d.ts.map +1 -1
  179. package/dist/dts/Hash.d.ts +1 -1
  180. package/dist/dts/Hash.d.ts.map +1 -1
  181. package/dist/dts/HashMap.d.ts +6 -4
  182. package/dist/dts/HashMap.d.ts.map +1 -1
  183. package/dist/dts/HashSet.d.ts +9 -9
  184. package/dist/dts/HashSet.d.ts.map +1 -1
  185. package/dist/dts/Inspectable.d.ts +3 -3
  186. package/dist/dts/Inspectable.d.ts.map +1 -1
  187. package/dist/dts/KeyedPool.d.ts +5 -5
  188. package/dist/dts/KeyedPool.d.ts.map +1 -1
  189. package/dist/dts/Layer.d.ts +2 -2
  190. package/dist/dts/Layer.d.ts.map +1 -1
  191. package/dist/dts/List.d.ts +16 -16
  192. package/dist/dts/List.d.ts.map +1 -1
  193. package/dist/dts/Logger.d.ts +4 -4
  194. package/dist/dts/Logger.d.ts.map +1 -1
  195. package/dist/dts/Match.d.ts +11 -11
  196. package/dist/dts/Match.d.ts.map +1 -1
  197. package/dist/dts/MergeDecision.d.ts +2 -2
  198. package/dist/dts/MergeDecision.d.ts.map +1 -1
  199. package/dist/dts/MergeState.d.ts +5 -5
  200. package/dist/dts/MergeState.d.ts.map +1 -1
  201. package/dist/dts/Metric.d.ts +5 -5
  202. package/dist/dts/Metric.d.ts.map +1 -1
  203. package/dist/dts/MetricHook.d.ts +4 -4
  204. package/dist/dts/MetricHook.d.ts.map +1 -1
  205. package/dist/dts/MetricKey.d.ts +2 -2
  206. package/dist/dts/MetricKey.d.ts.map +1 -1
  207. package/dist/dts/MetricKeyType.d.ts +2 -2
  208. package/dist/dts/MetricKeyType.d.ts.map +1 -1
  209. package/dist/dts/MetricPair.d.ts +2 -2
  210. package/dist/dts/MetricPair.d.ts.map +1 -1
  211. package/dist/dts/MetricPolling.d.ts +16 -16
  212. package/dist/dts/MetricPolling.d.ts.map +1 -1
  213. package/dist/dts/MetricRegistry.d.ts +7 -7
  214. package/dist/dts/MetricRegistry.d.ts.map +1 -1
  215. package/dist/dts/MetricState.d.ts +4 -4
  216. package/dist/dts/MetricState.d.ts.map +1 -1
  217. package/dist/dts/MutableHashMap.d.ts +1 -1
  218. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  219. package/dist/dts/MutableHashSet.d.ts +1 -1
  220. package/dist/dts/MutableHashSet.d.ts.map +1 -1
  221. package/dist/dts/MutableList.d.ts +1 -1
  222. package/dist/dts/MutableList.d.ts.map +1 -1
  223. package/dist/dts/MutableQueue.d.ts +1 -1
  224. package/dist/dts/MutableQueue.d.ts.map +1 -1
  225. package/dist/dts/MutableRef.d.ts +1 -1
  226. package/dist/dts/MutableRef.d.ts.map +1 -1
  227. package/dist/dts/NonEmptyIterable.d.ts +2 -2
  228. package/dist/dts/NonEmptyIterable.d.ts.map +1 -1
  229. package/dist/dts/Option.d.ts +13 -11
  230. package/dist/dts/Option.d.ts.map +1 -1
  231. package/dist/dts/Order.d.ts +1 -1
  232. package/dist/dts/Order.d.ts.map +1 -1
  233. package/dist/dts/Pipeable.d.ts +21 -23
  234. package/dist/dts/Pipeable.d.ts.map +1 -1
  235. package/dist/dts/Pool.d.ts +4 -4
  236. package/dist/dts/Pool.d.ts.map +1 -1
  237. package/dist/dts/Predicate.d.ts +17 -2
  238. package/dist/dts/Predicate.d.ts.map +1 -1
  239. package/dist/dts/PrimaryKey.d.ts +16 -0
  240. package/dist/dts/PrimaryKey.d.ts.map +1 -0
  241. package/dist/dts/PubSub.d.ts +3 -3
  242. package/dist/dts/PubSub.d.ts.map +1 -1
  243. package/dist/dts/Queue.d.ts +46 -27
  244. package/dist/dts/Queue.d.ts.map +1 -1
  245. package/dist/dts/Random.d.ts +3 -3
  246. package/dist/dts/Random.d.ts.map +1 -1
  247. package/dist/dts/ReadonlyArray.d.ts +36 -36
  248. package/dist/dts/ReadonlyArray.d.ts.map +1 -1
  249. package/dist/dts/ReadonlyRecord.d.ts +13 -11
  250. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  251. package/dist/dts/RedBlackTree.d.ts +5 -2
  252. package/dist/dts/RedBlackTree.d.ts.map +1 -1
  253. package/dist/dts/Ref.d.ts +3 -3
  254. package/dist/dts/Ref.d.ts.map +1 -1
  255. package/dist/dts/Reloadable.d.ts +3 -3
  256. package/dist/dts/Reloadable.d.ts.map +1 -1
  257. package/dist/dts/Request.d.ts +49 -8
  258. package/dist/dts/Request.d.ts.map +1 -1
  259. package/dist/dts/RequestBlock.d.ts +8 -8
  260. package/dist/dts/RequestBlock.d.ts.map +1 -1
  261. package/dist/dts/RequestResolver.d.ts +5 -5
  262. package/dist/dts/RequestResolver.d.ts.map +1 -1
  263. package/dist/dts/Resource.d.ts +4 -4
  264. package/dist/dts/Resource.d.ts.map +1 -1
  265. package/dist/dts/Runtime.d.ts +3 -3
  266. package/dist/dts/Runtime.d.ts.map +1 -1
  267. package/dist/dts/STM.d.ts +9 -9
  268. package/dist/dts/STM.d.ts.map +1 -1
  269. package/dist/dts/Schedule.d.ts +6 -6
  270. package/dist/dts/Schedule.d.ts.map +1 -1
  271. package/dist/dts/Scheduler.d.ts +3 -3
  272. package/dist/dts/Scheduler.d.ts.map +1 -1
  273. package/dist/dts/ScopedCache.d.ts +9 -9
  274. package/dist/dts/ScopedCache.d.ts.map +1 -1
  275. package/dist/dts/ScopedRef.d.ts +3 -3
  276. package/dist/dts/ScopedRef.d.ts.map +1 -1
  277. package/dist/dts/SingleProducerAsyncInput.d.ts +7 -7
  278. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
  279. package/dist/dts/Sink.d.ts +7 -4
  280. package/dist/dts/Sink.d.ts.map +1 -1
  281. package/dist/dts/SortedMap.d.ts +5 -2
  282. package/dist/dts/SortedMap.d.ts.map +1 -1
  283. package/dist/dts/SortedSet.d.ts +6 -12
  284. package/dist/dts/SortedSet.d.ts.map +1 -1
  285. package/dist/dts/Stream.d.ts +27 -19
  286. package/dist/dts/Stream.d.ts.map +1 -1
  287. package/dist/dts/StreamEmit.d.ts +12 -12
  288. package/dist/dts/StreamEmit.d.ts.map +1 -1
  289. package/dist/dts/SubscriptionRef.d.ts +3 -3
  290. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  291. package/dist/dts/Supervisor.d.ts +9 -9
  292. package/dist/dts/Supervisor.d.ts.map +1 -1
  293. package/dist/dts/SynchronizedRef.d.ts +4 -4
  294. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  295. package/dist/dts/TArray.d.ts +3 -3
  296. package/dist/dts/TArray.d.ts.map +1 -1
  297. package/dist/dts/TDeferred.d.ts +4 -4
  298. package/dist/dts/TDeferred.d.ts.map +1 -1
  299. package/dist/dts/TMap.d.ts +4 -4
  300. package/dist/dts/TMap.d.ts.map +1 -1
  301. package/dist/dts/TPriorityQueue.d.ts +3 -3
  302. package/dist/dts/TPriorityQueue.d.ts.map +1 -1
  303. package/dist/dts/TPubSub.d.ts +4 -1
  304. package/dist/dts/TPubSub.d.ts.map +1 -1
  305. package/dist/dts/TQueue.d.ts +9 -9
  306. package/dist/dts/TQueue.d.ts.map +1 -1
  307. package/dist/dts/TRandom.d.ts +3 -3
  308. package/dist/dts/TRandom.d.ts.map +1 -1
  309. package/dist/dts/TRef.d.ts +3 -3
  310. package/dist/dts/TRef.d.ts.map +1 -1
  311. package/dist/dts/TSet.d.ts +3 -3
  312. package/dist/dts/TSet.d.ts.map +1 -1
  313. package/dist/dts/Take.d.ts +2 -2
  314. package/dist/dts/Take.d.ts.map +1 -1
  315. package/dist/dts/TestAnnotation.d.ts +5 -3
  316. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  317. package/dist/dts/TestAnnotations.d.ts +2 -2
  318. package/dist/dts/TestAnnotations.d.ts.map +1 -1
  319. package/dist/dts/TestClock.d.ts +3 -3
  320. package/dist/dts/TestClock.d.ts.map +1 -1
  321. package/dist/dts/TestLive.d.ts +1 -1
  322. package/dist/dts/TestLive.d.ts.map +1 -1
  323. package/dist/dts/TestSized.d.ts +1 -1
  324. package/dist/dts/TestSized.d.ts.map +1 -1
  325. package/dist/dts/Tracer.d.ts +5 -5
  326. package/dist/dts/Tracer.d.ts.map +1 -1
  327. package/dist/dts/Types.d.ts +7 -0
  328. package/dist/dts/Types.d.ts.map +1 -1
  329. package/dist/dts/UpstreamPullRequest.d.ts +2 -2
  330. package/dist/dts/UpstreamPullRequest.d.ts.map +1 -1
  331. package/dist/dts/UpstreamPullStrategy.d.ts +3 -3
  332. package/dist/dts/UpstreamPullStrategy.d.ts.map +1 -1
  333. package/dist/dts/Utils.d.ts +1 -1
  334. package/dist/dts/Utils.d.ts.map +1 -1
  335. package/dist/dts/index.d.ts +4 -0
  336. package/dist/dts/index.d.ts.map +1 -1
  337. package/dist/dts/internal/core-stream.d.ts.map +1 -1
  338. package/dist/dts/internal/fiberScope.d.ts +1 -1
  339. package/dist/dts/internal/fiberScope.d.ts.map +1 -1
  340. package/dist/dts/internal/stream/handoffSignal.d.ts +1 -1
  341. package/dist/dts/internal/stream/handoffSignal.d.ts.map +1 -1
  342. package/dist/dts/internal/version.d.ts +1 -1
  343. package/dist/esm/Cache.js.map +1 -1
  344. package/dist/esm/Cause.js +52 -17
  345. package/dist/esm/Cause.js.map +1 -1
  346. package/dist/esm/ChildExecutorDecision.js.map +1 -1
  347. package/dist/esm/Chunk.js +5 -5
  348. package/dist/esm/Chunk.js.map +1 -1
  349. package/dist/esm/Data.js +10 -19
  350. package/dist/esm/Data.js.map +1 -1
  351. package/dist/esm/Duration.js +4 -0
  352. package/dist/esm/Duration.js.map +1 -1
  353. package/dist/esm/Effect.js +7 -0
  354. package/dist/esm/Effect.js.map +1 -1
  355. package/dist/esm/Either.js +8 -1
  356. package/dist/esm/Either.js.map +1 -1
  357. package/dist/esm/Exit.js.map +1 -1
  358. package/dist/esm/Fiber.js.map +1 -1
  359. package/dist/esm/HashMap.js.map +1 -1
  360. package/dist/esm/KeyedPool.js.map +1 -1
  361. package/dist/esm/List.js.map +1 -1
  362. package/dist/esm/MergeState.js.map +1 -1
  363. package/dist/esm/MetricPolling.js +1 -1
  364. package/dist/esm/MetricPolling.js.map +1 -1
  365. package/dist/esm/MetricState.js.map +1 -1
  366. package/dist/esm/NonEmptyIterable.js.map +1 -1
  367. package/dist/esm/Option.js +2 -2
  368. package/dist/esm/Option.js.map +1 -1
  369. package/dist/esm/Pipeable.js.map +1 -1
  370. package/dist/esm/Predicate.js +15 -0
  371. package/dist/esm/Predicate.js.map +1 -1
  372. package/dist/esm/PrimaryKey.js +9 -0
  373. package/dist/esm/PrimaryKey.js.map +1 -0
  374. package/dist/esm/Queue.js +5 -0
  375. package/dist/esm/Queue.js.map +1 -1
  376. package/dist/esm/ReadonlyArray.js +2 -0
  377. package/dist/esm/ReadonlyArray.js.map +1 -1
  378. package/dist/esm/ReadonlyRecord.js +2 -2
  379. package/dist/esm/ReadonlyRecord.js.map +1 -1
  380. package/dist/esm/RedBlackTree.js.map +1 -1
  381. package/dist/esm/Request.js +34 -0
  382. package/dist/esm/Request.js.map +1 -1
  383. package/dist/esm/STM.js +1 -1
  384. package/dist/esm/STM.js.map +1 -1
  385. package/dist/esm/Sink.js.map +1 -1
  386. package/dist/esm/SortedMap.js +4 -1
  387. package/dist/esm/SortedMap.js.map +1 -1
  388. package/dist/esm/SortedSet.js +2 -2
  389. package/dist/esm/SortedSet.js.map +1 -1
  390. package/dist/esm/Stream.js.map +1 -1
  391. package/dist/esm/SubscriptionRef.js.map +1 -1
  392. package/dist/esm/TPubSub.js.map +1 -1
  393. package/dist/esm/TestAnnotation.js +3 -1
  394. package/dist/esm/TestAnnotation.js.map +1 -1
  395. package/dist/esm/TestClock.js.map +1 -1
  396. package/dist/esm/UpstreamPullRequest.js.map +1 -1
  397. package/dist/esm/index.js +4 -0
  398. package/dist/esm/index.js.map +1 -1
  399. package/dist/esm/internal/cache.js.map +1 -1
  400. package/dist/esm/internal/cause.js +3 -96
  401. package/dist/esm/internal/cause.js.map +1 -1
  402. package/dist/esm/internal/channel/continuation.js.map +1 -1
  403. package/dist/esm/internal/configProvider.js +13 -1
  404. package/dist/esm/internal/configProvider.js.map +1 -1
  405. package/dist/esm/internal/core-effect.js +7 -7
  406. package/dist/esm/internal/core-effect.js.map +1 -1
  407. package/dist/esm/internal/core-stream.js.map +1 -1
  408. package/dist/esm/internal/core.js +151 -10
  409. package/dist/esm/internal/core.js.map +1 -1
  410. package/dist/esm/internal/data.js +3 -21
  411. package/dist/esm/internal/data.js.map +1 -1
  412. package/dist/esm/internal/dataSource.js +1 -1
  413. package/dist/esm/internal/dataSource.js.map +1 -1
  414. package/dist/esm/internal/deferred.js.map +1 -1
  415. package/dist/esm/internal/differ/orPatch.js.map +1 -1
  416. package/dist/esm/internal/effect/circular.js.map +1 -1
  417. package/dist/esm/internal/effectable.js +20 -2
  418. package/dist/esm/internal/effectable.js.map +1 -1
  419. package/dist/esm/internal/fiberMessage.js.map +1 -1
  420. package/dist/esm/internal/fiberRuntime.js +9 -10
  421. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  422. package/dist/esm/internal/hashMap.js +1 -1
  423. package/dist/esm/internal/hashMap.js.map +1 -1
  424. package/dist/esm/internal/hashSet.js +2 -2
  425. package/dist/esm/internal/hashSet.js.map +1 -1
  426. package/dist/esm/internal/keyedPool.js.map +1 -1
  427. package/dist/esm/internal/layer.js.map +1 -1
  428. package/dist/esm/internal/metric/polling.js +6 -6
  429. package/dist/esm/internal/metric/polling.js.map +1 -1
  430. package/dist/esm/internal/metric.js +4 -0
  431. package/dist/esm/internal/metric.js.map +1 -1
  432. package/dist/esm/internal/pool.js.map +1 -1
  433. package/dist/esm/internal/pubsub.js +24 -23
  434. package/dist/esm/internal/pubsub.js.map +1 -1
  435. package/dist/esm/internal/queue.js +9 -0
  436. package/dist/esm/internal/queue.js.map +1 -1
  437. package/dist/esm/internal/redBlackTree.js +5 -1
  438. package/dist/esm/internal/redBlackTree.js.map +1 -1
  439. package/dist/esm/internal/reloadable.js.map +1 -1
  440. package/dist/esm/internal/request.js +27 -14
  441. package/dist/esm/internal/request.js.map +1 -1
  442. package/dist/esm/internal/resource.js +2 -2
  443. package/dist/esm/internal/resource.js.map +1 -1
  444. package/dist/esm/internal/runtime.js +1 -2
  445. package/dist/esm/internal/runtime.js.map +1 -1
  446. package/dist/esm/internal/schedule.js +6 -7
  447. package/dist/esm/internal/schedule.js.map +1 -1
  448. package/dist/esm/internal/scopedCache.js.map +1 -1
  449. package/dist/esm/internal/scopedRef.js.map +1 -1
  450. package/dist/esm/internal/sink.js +1 -1
  451. package/dist/esm/internal/sink.js.map +1 -1
  452. package/dist/esm/internal/stm/core.js +2 -2
  453. package/dist/esm/internal/stm/core.js.map +1 -1
  454. package/dist/esm/internal/stm/tArray.js.map +1 -1
  455. package/dist/esm/internal/stm/tDeferred.js.map +1 -1
  456. package/dist/esm/internal/stm/tMap.js.map +1 -1
  457. package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
  458. package/dist/esm/internal/stm/tPubSub.js +17 -14
  459. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  460. package/dist/esm/internal/stm/tQueue.js +6 -7
  461. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  462. package/dist/esm/internal/stm/tSemaphore.js +2 -2
  463. package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
  464. package/dist/esm/internal/stm/tSet.js.map +1 -1
  465. package/dist/esm/internal/stream.js +4 -4
  466. package/dist/esm/internal/stream.js.map +1 -1
  467. package/dist/esm/internal/subscriptionRef.js.map +1 -1
  468. package/dist/esm/internal/take.js +1 -1
  469. package/dist/esm/internal/take.js.map +1 -1
  470. package/dist/esm/internal/version.js +1 -1
  471. package/dist/esm/package.json +1 -1
  472. package/package.json +10 -2
  473. package/src/Brand.ts +4 -4
  474. package/src/Cache.ts +15 -17
  475. package/src/Cause.ts +124 -40
  476. package/src/Channel.ts +4 -4
  477. package/src/ChildExecutorDecision.ts +10 -2
  478. package/src/Chunk.ts +44 -36
  479. package/src/Clock.ts +4 -4
  480. package/src/Config.ts +4 -4
  481. package/src/ConfigError.ts +8 -8
  482. package/src/ConfigProvider.ts +5 -5
  483. package/src/ConfigProviderPathPatch.ts +1 -1
  484. package/src/Console.ts +36 -36
  485. package/src/Context.ts +4 -4
  486. package/src/Data.ts +13 -44
  487. package/src/Deferred.ts +4 -4
  488. package/src/Differ.ts +9 -9
  489. package/src/Duration.ts +5 -0
  490. package/src/Effect.ts +88 -26
  491. package/src/Either.ts +28 -5
  492. package/src/Equal.ts +1 -1
  493. package/src/Equivalence.ts +1 -1
  494. package/src/Exit.ts +21 -7
  495. package/src/Fiber.ts +20 -14
  496. package/src/FiberRef.ts +7 -7
  497. package/src/GroupBy.ts +2 -2
  498. package/src/Hash.ts +1 -1
  499. package/src/HashMap.ts +6 -4
  500. package/src/HashSet.ts +11 -11
  501. package/src/Inspectable.ts +3 -3
  502. package/src/KeyedPool.ts +13 -7
  503. package/src/Layer.ts +2 -2
  504. package/src/List.ts +24 -22
  505. package/src/Logger.ts +4 -4
  506. package/src/Match.ts +11 -11
  507. package/src/MergeDecision.ts +2 -2
  508. package/src/MergeState.ts +11 -5
  509. package/src/Metric.ts +5 -5
  510. package/src/MetricHook.ts +4 -4
  511. package/src/MetricKey.ts +2 -2
  512. package/src/MetricKeyType.ts +2 -2
  513. package/src/MetricPair.ts +2 -2
  514. package/src/MetricPolling.ts +22 -22
  515. package/src/MetricRegistry.ts +9 -9
  516. package/src/MetricState.ts +6 -4
  517. package/src/MutableHashMap.ts +1 -1
  518. package/src/MutableHashSet.ts +1 -1
  519. package/src/MutableList.ts +1 -1
  520. package/src/MutableQueue.ts +1 -1
  521. package/src/MutableRef.ts +1 -1
  522. package/src/NonEmptyIterable.ts +2 -2
  523. package/src/Option.ts +18 -15
  524. package/src/Order.ts +1 -1
  525. package/src/Pipeable.ts +275 -277
  526. package/src/Pool.ts +4 -4
  527. package/src/Predicate.ts +21 -2
  528. package/src/PrimaryKey.ts +17 -0
  529. package/src/PubSub.ts +3 -3
  530. package/src/Queue.ts +52 -30
  531. package/src/Random.ts +3 -3
  532. package/src/ReadonlyArray.ts +51 -66
  533. package/src/ReadonlyRecord.ts +37 -35
  534. package/src/RedBlackTree.ts +5 -2
  535. package/src/Ref.ts +3 -3
  536. package/src/Reloadable.ts +3 -3
  537. package/src/Request.ts +53 -8
  538. package/src/RequestBlock.ts +9 -9
  539. package/src/RequestResolver.ts +5 -5
  540. package/src/Resource.ts +4 -4
  541. package/src/Runtime.ts +3 -3
  542. package/src/STM.ts +23 -12
  543. package/src/Schedule.ts +7 -7
  544. package/src/Scheduler.ts +3 -3
  545. package/src/Scope.ts +3 -3
  546. package/src/ScopedCache.ts +9 -9
  547. package/src/ScopedRef.ts +3 -3
  548. package/src/SingleProducerAsyncInput.ts +7 -7
  549. package/src/Sink.ts +23 -9
  550. package/src/SortedMap.ts +9 -3
  551. package/src/SortedSet.ts +26 -41
  552. package/src/Stream.ts +70 -29
  553. package/src/StreamEmit.ts +12 -12
  554. package/src/SubscriptionRef.ts +5 -3
  555. package/src/Supervisor.ts +10 -10
  556. package/src/SynchronizedRef.ts +4 -4
  557. package/src/TArray.ts +4 -4
  558. package/src/TDeferred.ts +5 -5
  559. package/src/TMap.ts +5 -5
  560. package/src/TPriorityQueue.ts +4 -4
  561. package/src/TPubSub.ts +6 -3
  562. package/src/TQueue.ts +9 -9
  563. package/src/TRandom.ts +3 -3
  564. package/src/TRef.ts +4 -4
  565. package/src/TSet.ts +4 -4
  566. package/src/Take.ts +2 -2
  567. package/src/TestAnnotation.ts +8 -4
  568. package/src/TestAnnotations.ts +2 -2
  569. package/src/TestClock.ts +3 -5
  570. package/src/TestLive.ts +1 -1
  571. package/src/TestSized.ts +1 -1
  572. package/src/Tracer.ts +6 -6
  573. package/src/Types.ts +8 -0
  574. package/src/UpstreamPullRequest.ts +10 -4
  575. package/src/UpstreamPullStrategy.ts +3 -3
  576. package/src/Utils.ts +1 -1
  577. package/src/index.ts +5 -0
  578. package/src/internal/blockedRequests.ts +6 -6
  579. package/src/internal/cache.ts +12 -12
  580. package/src/internal/cause.ts +14 -138
  581. package/src/internal/channel/channelExecutor.ts +1 -1
  582. package/src/internal/channel/channelState.ts +5 -5
  583. package/src/internal/channel/continuation.ts +52 -32
  584. package/src/internal/channel/mergeDecision.ts +1 -1
  585. package/src/internal/channel/singleProducerAsyncInput.ts +1 -1
  586. package/src/internal/channel/subexecutor.ts +7 -7
  587. package/src/internal/config.ts +6 -6
  588. package/src/internal/configProvider.ts +14 -1
  589. package/src/internal/core-effect.ts +49 -38
  590. package/src/internal/core-stream.ts +18 -21
  591. package/src/internal/core.ts +286 -38
  592. package/src/internal/data.ts +3 -22
  593. package/src/internal/dataSource.ts +1 -1
  594. package/src/internal/deferred.ts +5 -5
  595. package/src/internal/differ/contextPatch.ts +5 -5
  596. package/src/internal/differ/orPatch.ts +18 -6
  597. package/src/internal/effect/circular.ts +3 -3
  598. package/src/internal/effectable.ts +23 -4
  599. package/src/internal/fiberMessage.ts +1 -4
  600. package/src/internal/fiberRuntime.ts +14 -15
  601. package/src/internal/fiberScope.ts +1 -1
  602. package/src/internal/groupBy.ts +1 -1
  603. package/src/internal/hashMap/node.ts +5 -5
  604. package/src/internal/hashMap.ts +23 -22
  605. package/src/internal/hashSet.ts +18 -20
  606. package/src/internal/keyedPool.ts +4 -4
  607. package/src/internal/layer.ts +6 -12
  608. package/src/internal/metric/key.ts +1 -1
  609. package/src/internal/metric/polling.ts +26 -26
  610. package/src/internal/metric.ts +4 -0
  611. package/src/internal/pool.ts +2 -2
  612. package/src/internal/pubsub.ts +64 -61
  613. package/src/internal/queue.ts +20 -6
  614. package/src/internal/redBlackTree/iterator.ts +1 -1
  615. package/src/internal/redBlackTree/node.ts +1 -1
  616. package/src/internal/redBlackTree.ts +7 -2
  617. package/src/internal/ref.ts +1 -1
  618. package/src/internal/reloadable.ts +1 -1
  619. package/src/internal/request.ts +39 -13
  620. package/src/internal/resource.ts +4 -4
  621. package/src/internal/ringBuffer.ts +1 -1
  622. package/src/internal/runtime.ts +2 -3
  623. package/src/internal/schedule.ts +6 -7
  624. package/src/internal/scopedCache.ts +7 -5
  625. package/src/internal/scopedRef.ts +1 -1
  626. package/src/internal/sink.ts +6 -3
  627. package/src/internal/stack.ts +1 -1
  628. package/src/internal/stm/core.ts +3 -3
  629. package/src/internal/stm/stm/stmState.ts +1 -1
  630. package/src/internal/stm/stm/tExit.ts +3 -3
  631. package/src/internal/stm/stm/tryCommit.ts +1 -1
  632. package/src/internal/stm/stm/versioned.ts +1 -1
  633. package/src/internal/stm/stm.ts +2 -2
  634. package/src/internal/stm/tArray.ts +2 -2
  635. package/src/internal/stm/tDeferred.ts +3 -3
  636. package/src/internal/stm/tMap.ts +3 -3
  637. package/src/internal/stm/tPriorityQueue.ts +2 -2
  638. package/src/internal/stm/tPubSub.ts +43 -38
  639. package/src/internal/stm/tQueue.ts +7 -8
  640. package/src/internal/stm/tReentrantLock.ts +2 -2
  641. package/src/internal/stm/tRef.ts +1 -1
  642. package/src/internal/stm/tSemaphore.ts +2 -2
  643. package/src/internal/stm/tSet.ts +2 -2
  644. package/src/internal/stream/debounceState.ts +2 -2
  645. package/src/internal/stream/handoff.ts +3 -3
  646. package/src/internal/stream/handoffSignal.ts +2 -2
  647. package/src/internal/stream/pull.ts +1 -1
  648. package/src/internal/stream.ts +66 -33
  649. package/src/internal/subscriptionRef.ts +2 -2
  650. package/src/internal/supervisor.ts +3 -3
  651. package/src/internal/take.ts +2 -2
  652. package/src/internal/version.ts +1 -1
package/src/PubSub.ts CHANGED
@@ -15,18 +15,18 @@ import type * as Scope from "./Scope.js"
15
15
  * @since 2.0.0
16
16
  * @category models
17
17
  */
18
- export interface PubSub<A> extends Queue.Enqueue<A>, Pipeable {
18
+ export interface PubSub<in out A> extends Queue.Enqueue<A>, Pipeable {
19
19
  /**
20
20
  * Publishes a message to the `PubSub`, returning whether the message was published
21
21
  * to the `PubSub`.
22
22
  */
23
- readonly publish: (value: A) => Effect.Effect<never, never, boolean>
23
+ publish(value: A): Effect.Effect<never, never, boolean>
24
24
 
25
25
  /**
26
26
  * Publishes all of the specified messages to the `PubSub`, returning whether they
27
27
  * were published to the `PubSub`.
28
28
  */
29
- readonly publishAll: (elements: Iterable<A>) => Effect.Effect<never, never, boolean>
29
+ publishAll(elements: Iterable<A>): Effect.Effect<never, never, boolean>
30
30
 
31
31
  /**
32
32
  * Subscribes to receive messages from the `PubSub`. The resulting subscription can
package/src/Queue.ts CHANGED
@@ -46,11 +46,23 @@ export const QueueStrategyTypeId: unique symbol = internal.QueueStrategyTypeId
46
46
  */
47
47
  export type QueueStrategyTypeId = typeof QueueStrategyTypeId
48
48
 
49
+ /**
50
+ * @since 2.0.0
51
+ * @category symbols
52
+ */
53
+ export const BackingQueueTypeId: unique symbol = internal.BackingQueueTypeId
54
+
55
+ /**
56
+ * @since 2.0.0
57
+ * @category symbols
58
+ */
59
+ export type BackingQueueTypeId = typeof BackingQueueTypeId
60
+
49
61
  /**
50
62
  * @since 2.0.0
51
63
  * @category models
52
64
  */
53
- export interface Queue<A> extends Enqueue<A>, Dequeue<A>, Pipeable {
65
+ export interface Queue<in out A> extends Enqueue<A>, Dequeue<A>, Pipeable {
54
66
  /** @internal */
55
67
  readonly queue: BackingQueue<A>
56
68
  /** @internal */
@@ -67,16 +79,16 @@ export interface Queue<A> extends Enqueue<A>, Dequeue<A>, Pipeable {
67
79
  * @since 2.0.0
68
80
  * @category models
69
81
  */
70
- export interface Enqueue<A> extends Queue.EnqueueVariance<A>, BaseQueue, Pipeable {
82
+ export interface Enqueue<in A> extends Queue.EnqueueVariance<A>, BaseQueue, Pipeable {
71
83
  /**
72
84
  * Places one value in the queue.
73
85
  */
74
- readonly offer: (value: A) => Effect.Effect<never, never, boolean>
86
+ offer(value: A): Effect.Effect<never, never, boolean>
75
87
 
76
88
  /**
77
89
  * Places one value in the queue when possible without needing the fiber runtime.
78
90
  */
79
- readonly unsafeOffer: (value: A) => boolean
91
+ unsafeOffer(value: A): boolean
80
92
 
81
93
  /**
82
94
  * For Bounded Queue: uses the `BackPressure` Strategy, places the values in
@@ -93,14 +105,14 @@ export interface Enqueue<A> extends Queue.EnqueueVariance<A>, BaseQueue, Pipeabl
93
105
  * For Dropping Queue: uses `Dropping` Strategy, It places the values in the
94
106
  * queue but if there is no room it will not enqueue them and return false.
95
107
  */
96
- readonly offerAll: (iterable: Iterable<A>) => Effect.Effect<never, never, boolean>
108
+ offerAll(iterable: Iterable<A>): Effect.Effect<never, never, boolean>
97
109
  }
98
110
 
99
111
  /**
100
112
  * @since 2.0.0
101
113
  * @category models
102
114
  */
103
- export interface Dequeue<A> extends Queue.DequeueVariance<A>, BaseQueue, Pipeable {
115
+ export interface Dequeue<out A> extends Queue.DequeueVariance<A>, BaseQueue, Pipeable {
104
116
  /**
105
117
  * Takes the oldest value in the queue. If the queue is empty, this will return
106
118
  * a computation that resumes when an item has been added to the queue.
@@ -116,14 +128,14 @@ export interface Dequeue<A> extends Queue.DequeueVariance<A>, BaseQueue, Pipeabl
116
128
  /**
117
129
  * Takes up to max number of values from the queue.
118
130
  */
119
- readonly takeUpTo: (max: number) => Effect.Effect<never, never, Chunk.Chunk<A>>
131
+ takeUpTo(max: number): Effect.Effect<never, never, Chunk.Chunk<A>>
120
132
 
121
133
  /**
122
134
  * Takes a number of elements from the queue between the specified minimum and
123
135
  * maximum. If there are fewer than the minimum number of elements available,
124
136
  * suspends until at least the minimum number of elements have been collected.
125
137
  */
126
- readonly takeBetween: (min: number, max: number) => Effect.Effect<never, never, Chunk.Chunk<A>>
138
+ takeBetween(min: number, max: number): Effect.Effect<never, never, Chunk.Chunk<A>>
127
139
  }
128
140
 
129
141
  /**
@@ -136,12 +148,12 @@ export interface BaseQueue {
136
148
  /**
137
149
  * Returns the number of elements the queue can hold.
138
150
  */
139
- readonly capacity: () => number
151
+ capacity(): number
140
152
 
141
153
  /**
142
154
  * Returns false if shutdown has been called.
143
155
  */
144
- readonly isActive: () => boolean
156
+ isActive(): boolean
145
157
 
146
158
  /**
147
159
  * Retrieves the size of the queue, which is equal to the number of elements
@@ -155,7 +167,7 @@ export interface BaseQueue {
155
167
  * in the queue. This may be negative if fibers are suspended waiting for
156
168
  * elements to be added to the queue. Returns None if shutdown has been called
157
169
  */
158
- readonly unsafeSize: () => Option.Option<number>
170
+ unsafeSize(): Option.Option<number>
159
171
 
160
172
  /**
161
173
  * Returns `true` if the `Queue` contains at least one element, `false`
@@ -191,12 +203,12 @@ export interface BaseQueue {
191
203
  * @since 2.0.0
192
204
  * @category models
193
205
  */
194
- export interface Strategy<A> extends Queue.StrategyVariance<A> {
206
+ export interface Strategy<in out A> extends Queue.StrategyVariance<A> {
195
207
  /**
196
208
  * Returns the number of surplus values that were unable to be added to the
197
209
  * `Queue`
198
210
  */
199
- readonly surplusSize: () => number
211
+ surplusSize(): number
200
212
 
201
213
  /**
202
214
  * Determines how the `Queue.Strategy` should shut down when the `Queue` is
@@ -209,68 +221,68 @@ export interface Strategy<A> extends Queue.StrategyVariance<A> {
209
221
  * values that could not be added to the `Queue` following an `offer`
210
222
  * operation.
211
223
  */
212
- readonly handleSurplus: (
224
+ handleSurplus(
213
225
  iterable: Iterable<A>,
214
226
  queue: BackingQueue<A>,
215
227
  takers: MutableQueue.MutableQueue<Deferred.Deferred<never, A>>,
216
228
  isShutdown: MutableRef.MutableRef<boolean>
217
- ) => Effect.Effect<never, never, boolean>
229
+ ): Effect.Effect<never, never, boolean>
218
230
 
219
231
  /**
220
232
  * It is called when the backing queue is empty but there are some
221
233
  * takers that can be completed
222
234
  */
223
- readonly onCompleteTakersWithEmptyQueue: (
235
+ onCompleteTakersWithEmptyQueue(
224
236
  takers: MutableQueue.MutableQueue<Deferred.Deferred<never, A>>
225
- ) => void
237
+ ): void
226
238
 
227
239
  /**
228
240
  * Determines the behavior of the `Queue.Strategy` when the `Queue` has empty
229
241
  * slots following a `take` operation.
230
242
  */
231
- readonly unsafeOnQueueEmptySpace: (
243
+ unsafeOnQueueEmptySpace(
232
244
  queue: BackingQueue<A>,
233
245
  takers: MutableQueue.MutableQueue<Deferred.Deferred<never, A>>
234
- ) => void
246
+ ): void
235
247
  }
236
248
 
237
249
  /**
238
250
  * @since 2.0.0
239
251
  * @category models
240
252
  */
241
- export interface BackingQueue<A> {
253
+ export interface BackingQueue<in out A> extends Queue.BackingQueueVariance<A> {
242
254
  /**
243
255
  * Dequeues an element from the queue.
244
256
  * Returns either an element from the queue, or the `def` param.
245
257
  */
246
- readonly poll: <Def>(def: Def) => A | Def
258
+ poll<Def>(def: Def): A | Def
247
259
  /**
248
260
  * Dequeues up to `limit` elements from the queue.
249
261
  */
250
- readonly pollUpTo: (limit: number) => Chunk.Chunk<A>
262
+ pollUpTo(limit: number): Chunk.Chunk<A>
251
263
  /**
252
264
  * Enqueues a collection of values into the queue.
253
265
  *
254
266
  * Returns a `Chunk` of the values that were **not** able to be enqueued.
255
267
  */
256
- readonly offerAll: (elements: Iterable<A>) => Chunk.Chunk<A>
268
+ offerAll(elements: Iterable<A>): Chunk.Chunk<A>
257
269
  /**
258
270
  * Offers an element to the queue.
259
271
  *
260
272
  * Returns whether the enqueue was successful or not.
261
273
  */
262
- readonly offer: (element: A) => boolean
274
+ offer(element: A): boolean
263
275
  /**
264
276
  * The **maximum** number of elements that a queue can hold.
265
277
  *
266
278
  * **Note**: unbounded queues can still implement this interface with
267
279
  * `capacity = Infinity`.
268
280
  */
269
- readonly capacity: () => number
281
+ capacity(): number
270
282
  /**
271
283
  * Returns the number of elements currently in the queue
272
284
  */
273
- readonly length: () => number
285
+ length(): number
274
286
  }
275
287
 
276
288
  /**
@@ -281,7 +293,7 @@ export declare namespace Queue {
281
293
  * @since 2.0.0
282
294
  * @category models
283
295
  */
284
- export interface EnqueueVariance<A> {
296
+ export interface EnqueueVariance<in A> {
285
297
  readonly [EnqueueTypeId]: {
286
298
  readonly _In: (_: A) => void
287
299
  }
@@ -291,7 +303,7 @@ export declare namespace Queue {
291
303
  * @since 2.0.0
292
304
  * @category models
293
305
  */
294
- export interface DequeueVariance<A> {
306
+ export interface DequeueVariance<out A> {
295
307
  readonly [DequeueTypeId]: {
296
308
  readonly _Out: (_: never) => A
297
309
  }
@@ -301,9 +313,19 @@ export declare namespace Queue {
301
313
  * @since 2.0.0
302
314
  * @category models
303
315
  */
304
- export interface StrategyVariance<A> {
316
+ export interface StrategyVariance<in out A> {
305
317
  readonly [QueueStrategyTypeId]: {
306
- readonly _A: (_: never) => A
318
+ readonly _A: (_: A) => A
319
+ }
320
+ }
321
+
322
+ /**
323
+ * @since 2.0.0
324
+ * @category models
325
+ */
326
+ export interface BackingQueueVariance<in out A> {
327
+ readonly [BackingQueueTypeId]: {
328
+ readonly _A: (_: A) => A
307
329
  }
308
330
  }
309
331
  }
package/src/Random.ts CHANGED
@@ -40,16 +40,16 @@ export interface Random {
40
40
  * Returns the next numeric value in the specified range from the
41
41
  * pseudo-random number generator.
42
42
  */
43
- readonly nextRange: (min: number, max: number) => Effect.Effect<never, never, number>
43
+ nextRange(min: number, max: number): Effect.Effect<never, never, number>
44
44
  /**
45
45
  * Returns the next integer value in the specified range from the
46
46
  * pseudo-random number generator.
47
47
  */
48
- readonly nextIntBetween: (min: number, max: number) => Effect.Effect<never, never, number>
48
+ nextIntBetween(min: number, max: number): Effect.Effect<never, never, number>
49
49
  /**
50
50
  * Uses the pseudo-random number generator to shuffle the specified iterable.
51
51
  */
52
- readonly shuffle: <A>(elements: Iterable<A>) => Effect.Effect<never, never, Chunk.Chunk<A>>
52
+ shuffle<A>(elements: Iterable<A>): Effect.Effect<never, never, Chunk.Chunk<A>>
53
53
  }
54
54
 
55
55
  /**
@@ -444,7 +444,7 @@ export const unsafeGet: {
444
444
  */
445
445
  export const unprepend = <A>(
446
446
  self: NonEmptyReadonlyArray<A>
447
- ): [A, Array<A>] => [headNonEmpty(self), tailNonEmpty(self)]
447
+ ): [firstElement: A, remainingElements: Array<A>] => [headNonEmpty(self), tailNonEmpty(self)]
448
448
 
449
449
  /**
450
450
  * Return a tuple containing a copy of the `NonEmptyReadonlyArray` without its last element, and that last element.
@@ -454,7 +454,7 @@ export const unprepend = <A>(
454
454
  */
455
455
  export const unappend = <A>(
456
456
  self: NonEmptyReadonlyArray<A>
457
- ): [Array<A>, A] => [initNonEmpty(self), lastNonEmpty(self)]
457
+ ): [arrayWithoutLastElement: Array<A>, lastElement: A] => [initNonEmpty(self), lastNonEmpty(self)]
458
458
 
459
459
  /**
460
460
  * Get the first element of a `ReadonlyArray`, or `None` if the `ReadonlyArray` is empty.
@@ -562,11 +562,11 @@ export const takeRight: {
562
562
  */
563
563
  export const takeWhile: {
564
564
  <A, B extends A>(refinement: Refinement<A, B>): (self: Iterable<A>) => Array<B>
565
- <A>(predicate: Predicate<A>): <B extends A>(self: Iterable<B>) => Array<B>
565
+ <B extends A, A = B>(predicate: Predicate<A>): (self: Iterable<B>) => Array<B>
566
566
  <A, B extends A>(self: Iterable<A>, refinement: Refinement<A, B>): Array<B>
567
- <B extends A, A>(self: Iterable<B>, predicate: Predicate<A>): Array<B>
568
- } = dual(2, <B extends A, A>(self: Iterable<B>, predicate: Predicate<A>): Array<B> => {
569
- const out: Array<B> = []
567
+ <A>(self: Iterable<A>, predicate: Predicate<A>): Array<A>
568
+ } = dual(2, <A>(self: Iterable<A>, predicate: Predicate<A>): Array<A> => {
569
+ const out: Array<A> = []
570
570
  for (const a of self) {
571
571
  if (!predicate(a)) {
572
572
  break
@@ -597,18 +597,15 @@ const spanIndex = <A>(self: Iterable<A>, predicate: Predicate<A>): number => {
597
597
  * @since 2.0.0
598
598
  */
599
599
  export const span: {
600
- <A, B extends A>(
601
- refinement: Refinement<A, B>
602
- ): (self: Iterable<A>) => [init: Array<B>, rest: Array<A>]
603
- <A>(predicate: Predicate<A>): <B extends A>(self: Iterable<B>) => [init: Array<B>, rest: Array<B>]
604
- <A, B extends A>(
605
- self: Iterable<A>,
600
+ <C extends A, B extends A, A = C>(
606
601
  refinement: Refinement<A, B>
607
- ): [init: Array<B>, rest: Array<A>]
608
- <B extends A, A>(self: Iterable<B>, predicate: Predicate<A>): [init: Array<B>, rest: Array<B>]
602
+ ): (self: Iterable<C>) => [init: Array<B>, rest: Array<Exclude<C, B>>]
603
+ <B extends A, A = B>(predicate: Predicate<A>): (self: Iterable<B>) => [init: Array<B>, rest: Array<B>]
604
+ <A, B extends A>(self: Iterable<A>, refinement: Refinement<A, B>): [init: Array<B>, rest: Array<Exclude<A, B>>]
605
+ <A>(self: Iterable<A>, predicate: Predicate<A>): [init: Array<A>, rest: Array<A>]
609
606
  } = dual(
610
607
  2,
611
- <B extends A, A>(self: Iterable<B>, predicate: Predicate<A>): [init: Array<B>, rest: Array<B>] =>
608
+ <A>(self: Iterable<A>, predicate: Predicate<A>): [init: Array<A>, rest: Array<A>] =>
612
609
  splitAt(self, spanIndex(self, predicate))
613
610
  )
614
611
 
@@ -651,14 +648,11 @@ export const dropRight: {
651
648
  * @since 2.0.0
652
649
  */
653
650
  export const dropWhile: {
654
- <A, B extends A>(refinement: Refinement<A, B>): (self: Iterable<A>) => Array<B>
655
- <A>(predicate: Predicate<A>): <B extends A>(self: Iterable<B>) => Array<B>
656
- <A, B extends A>(self: Iterable<A>, refinement: Refinement<A, B>): Array<B>
657
- <B extends A, A>(self: Iterable<B>, predicate: Predicate<A>): Array<B>
651
+ <B extends A, A = B>(predicate: Predicate<A>): (self: Iterable<B>) => Array<B>
652
+ <A>(self: Iterable<A>, predicate: Predicate<A>): Array<A>
658
653
  } = dual(
659
654
  2,
660
- <B extends A, A>(self: Iterable<B>, predicate: Predicate<A>): Array<B> =>
661
- fromIterable(self).slice(spanIndex(self, predicate))
655
+ <A>(self: Iterable<A>, predicate: Predicate<A>): Array<A> => fromIterable(self).slice(spanIndex(self, predicate))
662
656
  )
663
657
 
664
658
  /**
@@ -709,10 +703,10 @@ export const findLastIndex: {
709
703
  */
710
704
  export const findFirst: {
711
705
  <A, B extends A>(refinement: Refinement<A, B>): (self: Iterable<A>) => Option<B>
712
- <A>(predicate: Predicate<A>): <B extends A>(self: Iterable<B>) => Option<B>
706
+ <B extends A, A = B>(predicate: Predicate<A>): (self: Iterable<B>) => Option<B>
713
707
  <A, B extends A>(self: Iterable<A>, refinement: Refinement<A, B>): Option<B>
714
- <B extends A, A>(self: Iterable<B>, predicate: Predicate<A>): Option<B>
715
- } = dual(2, <B extends A, A>(self: Iterable<B>, predicate: Predicate<A>): Option<B> => {
708
+ <A>(self: Iterable<A>, predicate: Predicate<A>): Option<A>
709
+ } = dual(2, <A>(self: Iterable<A>, predicate: Predicate<A>): Option<A> => {
716
710
  const input = fromIterable(self)
717
711
  for (let i = 0; i < input.length; i++) {
718
712
  if (predicate(input[i])) {
@@ -730,10 +724,10 @@ export const findFirst: {
730
724
  */
731
725
  export const findLast: {
732
726
  <A, B extends A>(refinement: Refinement<A, B>): (self: Iterable<A>) => Option<B>
733
- <A>(predicate: Predicate<A>): <B extends A>(self: Iterable<B>) => Option<B>
727
+ <B extends A, A = B>(predicate: Predicate<A>): (self: Iterable<B>) => Option<B>
734
728
  <A, B extends A>(self: Iterable<A>, refinement: Refinement<A, B>): Option<B>
735
- <B extends A, A>(self: Iterable<B>, predicate: Predicate<A>): Option<B>
736
- } = dual(2, <B extends A, A>(self: Iterable<B>, predicate: Predicate<A>): Option<B> => {
729
+ <A>(self: Iterable<A>, predicate: Predicate<A>): Option<A>
730
+ } = dual(2, <A>(self: Iterable<A>, predicate: Predicate<A>): Option<A> => {
737
731
  const input = fromIterable(self)
738
732
  for (let i = input.length - 1; i >= 0; i--) {
739
733
  if (predicate(input[i])) {
@@ -1252,8 +1246,8 @@ export const chopNonEmpty: {
1252
1246
  * @since 2.0.0
1253
1247
  */
1254
1248
  export const splitAt: {
1255
- (n: number): <A>(self: Iterable<A>) => [Array<A>, Array<A>]
1256
- <A>(self: Iterable<A>, n: number): [Array<A>, Array<A>]
1249
+ (n: number): <A>(self: Iterable<A>) => [beforeIndex: Array<A>, fromIndex: Array<A>]
1250
+ <A>(self: Iterable<A>, n: number): [beforeIndex: Array<A>, fromIndex: Array<A>]
1257
1251
  } = dual(2, <A>(self: Iterable<A>, n: number): [Array<A>, Array<A>] => {
1258
1252
  const input = Array.from(self)
1259
1253
  return n >= 1 && isNonEmptyReadonlyArray(input) ?
@@ -1278,8 +1272,8 @@ export const copy: {
1278
1272
  * @since 2.0.0
1279
1273
  */
1280
1274
  export const splitNonEmptyAt: {
1281
- (n: number): <A>(self: NonEmptyReadonlyArray<A>) => [NonEmptyArray<A>, Array<A>]
1282
- <A>(self: NonEmptyReadonlyArray<A>, n: number): [NonEmptyArray<A>, Array<A>]
1275
+ (n: number): <A>(self: NonEmptyReadonlyArray<A>) => [beforeIndex: NonEmptyArray<A>, fromIndex: Array<A>]
1276
+ <A>(self: NonEmptyReadonlyArray<A>, n: number): [beforeIndex: NonEmptyArray<A>, fromIndex: Array<A>]
1283
1277
  } = dual(2, <A>(self: NonEmptyReadonlyArray<A>, n: number): [NonEmptyArray<A>, Array<A>] => {
1284
1278
  const m = Math.max(1, n)
1285
1279
  return m >= self.length ?
@@ -1627,11 +1621,11 @@ export const filterMapWhile: {
1627
1621
  * @since 2.0.0
1628
1622
  */
1629
1623
  export const partitionMap: {
1630
- <A, B, C>(f: (a: A, i: number) => Either<B, C>): (self: Iterable<A>) => [Array<B>, Array<C>]
1631
- <A, B, C>(self: Iterable<A>, f: (a: A, i: number) => Either<B, C>): [Array<B>, Array<C>]
1624
+ <A, B, C>(f: (a: A, i: number) => Either<B, C>): (self: Iterable<A>) => [left: Array<B>, right: Array<C>]
1625
+ <A, B, C>(self: Iterable<A>, f: (a: A, i: number) => Either<B, C>): [left: Array<B>, right: Array<C>]
1632
1626
  } = dual(
1633
1627
  2,
1634
- <A, B, C>(self: Iterable<A>, f: (a: A, i: number) => Either<B, C>): [Array<B>, Array<C>] => {
1628
+ <A, B, C>(self: Iterable<A>, f: (a: A, i: number) => Either<B, C>): [left: Array<B>, right: Array<C>] => {
1635
1629
  const left: Array<B> = []
1636
1630
  const right: Array<C> = []
1637
1631
  const as = fromIterable(self)
@@ -1658,15 +1652,10 @@ export const compact: <A>(self: Iterable<Option<A>>) => Array<A> = filterMap(ide
1658
1652
  * @since 2.0.0
1659
1653
  */
1660
1654
  export const filter: {
1661
- <C extends A, B extends A, A = C>(
1662
- refinement: (a: A, i: number) => a is B
1663
- ): (self: Iterable<C>) => Array<B>
1664
- <B extends A, A = B>(predicate: (a: A, i: number) => boolean): (self: Iterable<B>) => Array<B>
1665
- <C extends A, B extends A, A = C>(
1666
- self: Iterable<C>,
1667
- refinement: (a: A, i: number) => a is B
1668
- ): Array<B>
1669
- <B extends A, A = B>(self: Iterable<B>, predicate: (a: A, i: number) => boolean): Array<B>
1655
+ <A, B extends A>(refinement: (a: A, i: number) => a is B): (self: Iterable<A>) => Array<B>
1656
+ <A, B extends A>(predicate: (b: B, i: number) => boolean): (self: Iterable<A>) => Array<A>
1657
+ <A, B extends A>(self: Iterable<A>, refinement: (a: A, i: number) => a is B): Array<B>
1658
+ <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Array<A>
1670
1659
  } = dual(
1671
1660
  2,
1672
1661
  <B extends A, A = B>(self: Iterable<B>, predicate: (a: A, i: number) => boolean): Array<B> => {
@@ -1682,32 +1671,28 @@ export const filter: {
1682
1671
  )
1683
1672
 
1684
1673
  /**
1674
+ * Separate elements based on a predicate that also exposes the index of the element.
1675
+ *
1685
1676
  * @category filtering
1686
1677
  * @since 2.0.0
1687
1678
  */
1688
1679
  export const partition: {
1689
1680
  <C extends A, B extends A, A = C>(refinement: (a: A, i: number) => a is B): (
1690
1681
  self: Iterable<C>
1691
- ) => [Array<C>, Array<B>]
1682
+ ) => [excluded: Array<Exclude<C, B>>, satisfying: Array<B>]
1692
1683
  <B extends A, A = B>(
1693
1684
  predicate: (a: A, i: number) => boolean
1694
- ): (self: Iterable<B>) => [Array<B>, Array<B>]
1695
- <C extends A, B extends A, A = C>(
1696
- self: Iterable<C>,
1685
+ ): (self: Iterable<B>) => [excluded: Array<B>, satisfying: Array<B>]
1686
+ <A, B extends A>(
1687
+ self: Iterable<A>,
1697
1688
  refinement: (a: A, i: number) => a is B
1698
- ): [Array<C>, Array<B>]
1699
- <B extends A, A = B>(
1700
- self: Iterable<B>,
1701
- predicate: (a: A, i: number) => boolean
1702
- ): [Array<B>, Array<B>]
1689
+ ): [excluded: Array<Exclude<A, B>>, satisfying: Array<B>]
1690
+ <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): [excluded: Array<A>, satisfying: Array<A>]
1703
1691
  } = dual(
1704
1692
  2,
1705
- <B extends A, A = B>(
1706
- self: Iterable<B>,
1707
- predicate: (a: A, i: number) => boolean
1708
- ): [Array<B>, Array<B>] => {
1709
- const left: Array<B> = []
1710
- const right: Array<B> = []
1693
+ <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): [excluded: Array<A>, satisfying: Array<A>] => {
1694
+ const left: Array<A> = []
1695
+ const right: Array<A> = []
1711
1696
  const as = fromIterable(self)
1712
1697
  for (let i = 0; i < as.length; i++) {
1713
1698
  if (predicate(as[i], i)) {
@@ -1759,9 +1744,9 @@ export const reduceRight: {
1759
1744
  * @since 2.0.0
1760
1745
  */
1761
1746
  export const liftPredicate: {
1762
- <C extends A, B extends A, A = C>(refinement: Refinement<A, B>): (c: C) => Array<B>
1763
- <B extends A, A = B>(predicate: Predicate<A>): (b: B) => Array<B>
1764
- } = <B extends A, A = B>(predicate: Predicate<A>) => (b: B) => predicate(b) ? [b] : []
1747
+ <A, B extends A>(refinement: Refinement<A, B>): (a: A) => Array<B>
1748
+ <A>(predicate: Predicate<A>): <B extends A>(b: B) => Array<B>
1749
+ } = <A>(predicate: Predicate<A>) => <B extends A>(b: B): Array<B> => predicate(b) ? [b] : []
1765
1750
 
1766
1751
  /**
1767
1752
  * @category lifting
@@ -1836,8 +1821,8 @@ export const every: {
1836
1821
  * @since 2.0.0
1837
1822
  */
1838
1823
  export const some: {
1839
- <A>(predicate: Predicate<A>): <B extends A>(self: ReadonlyArray<B>) => self is NonEmptyReadonlyArray<B>
1840
- <B extends A, A = B>(self: ReadonlyArray<B>, predicate: Predicate<A>): self is NonEmptyReadonlyArray<B>
1824
+ <B extends A, A = B>(predicate: Predicate<A>): (self: ReadonlyArray<B>) => self is NonEmptyReadonlyArray<B>
1825
+ <A>(self: ReadonlyArray<A>, predicate: Predicate<A>): self is NonEmptyReadonlyArray<A>
1841
1826
  } = dual(
1842
1827
  2,
1843
1828
  <A>(self: ReadonlyArray<A>, predicate: Predicate<A>): self is NonEmptyReadonlyArray<A> => self.some(predicate)
@@ -1983,9 +1968,9 @@ export const join: {
1983
1968
  * @category folding
1984
1969
  */
1985
1970
  export const mapAccum: {
1986
- <S, A, B>(s: S, f: (s: S, a: A) => readonly [S, B]): (self: Iterable<A>) => [S, Array<B>]
1987
- <S, A, B>(self: Iterable<A>, s: S, f: (s: S, a: A) => readonly [S, B]): [S, Array<B>]
1988
- } = dual(3, <S, A, B>(self: Iterable<A>, s: S, f: (s: S, a: A) => [S, B]) => {
1971
+ <S, A, B>(s: S, f: (s: S, a: A) => readonly [S, B]): (self: Iterable<A>) => [state: S, mappedArray: Array<B>]
1972
+ <S, A, B>(self: Iterable<A>, s: S, f: (s: S, a: A) => readonly [S, B]): [state: S, mappedArray: Array<B>]
1973
+ } = dual(3, <S, A, B>(self: Iterable<A>, s: S, f: (s: S, a: A) => [S, B]): [state: S, mappedArray: Array<B>] => {
1989
1974
  let s1 = s
1990
1975
  const out: Array<B> = []
1991
1976
  for (const a of self) {
@@ -16,7 +16,7 @@ import * as Option from "./Option.js"
16
16
  * @category models
17
17
  * @since 2.0.0
18
18
  */
19
- export interface ReadonlyRecord<A> {
19
+ export interface ReadonlyRecord<out A> {
20
20
  readonly [x: string]: A
21
21
  }
22
22
 
@@ -436,27 +436,19 @@ export const filterMap: {
436
436
  * @since 2.0.0
437
437
  */
438
438
  export const filter: {
439
- <K extends string, C extends A, B extends A, A = C>(
440
- refinement: (a: A, key: K) => a is B
441
- ): (self: Record<K, C>) => Record<string, B>
439
+ <K extends string, A, B extends A>(refinement: (a: A, key: K) => a is B): (self: Record<K, A>) => Record<string, B>
442
440
  <K extends string, B extends A, A = B>(
443
- predicate: (a: A, key: K) => boolean
441
+ predicate: (A: A, key: K) => boolean
444
442
  ): (self: Record<K, B>) => Record<string, B>
445
- <K extends string, C extends A, B extends A, A = C>(
446
- self: Record<K, C>,
447
- refinement: (a: A, key: K) => a is B
448
- ): Record<string, B>
449
- <K extends string, B extends A, A = B>(
450
- self: Record<K, B>,
451
- predicate: (a: A, key: K) => boolean
452
- ): Record<string, B>
443
+ <K extends string, A, B extends A>(self: Record<K, A>, refinement: (a: A, key: K) => a is B): Record<string, B>
444
+ <K extends string, A>(self: Record<K, A>, predicate: (a: A, key: K) => boolean): Record<string, A>
453
445
  } = dual(
454
446
  2,
455
- <B extends A, A = B>(
456
- self: Record<string, B>,
447
+ <A>(
448
+ self: Record<string, A>,
457
449
  predicate: (a: A, key: string) => boolean
458
- ): Record<string, B> => {
459
- const out: Record<string, B> = {}
450
+ ): Record<string, A> => {
451
+ const out: Record<string, A> = {}
460
452
  for (const key of Object.keys(self)) {
461
453
  if (predicate(self[key], key)) {
462
454
  out[key] = self[key]
@@ -507,17 +499,17 @@ export const compact: <A>(self: ReadonlyRecord<Option.Option<A>>) => Record<stri
507
499
  export const partitionMap: {
508
500
  <K extends string, A, B, C>(
509
501
  f: (a: A, key: K) => Either<B, C>
510
- ): (self: Record<K, A>) => [Record<string, B>, Record<string, C>]
502
+ ): (self: Record<K, A>) => [left: Record<string, B>, right: Record<string, C>]
511
503
  <K extends string, A, B, C>(
512
504
  self: Record<K, A>,
513
505
  f: (a: A, key: K) => Either<B, C>
514
- ): [Record<string, B>, Record<string, C>]
506
+ ): [left: Record<string, B>, right: Record<string, C>]
515
507
  } = dual(
516
508
  2,
517
509
  <A, B, C>(
518
510
  self: Record<string, A>,
519
511
  f: (a: A, key: string) => Either<B, C>
520
- ): [Record<string, B>, Record<string, C>] => {
512
+ ): [left: Record<string, B>, right: Record<string, C>] => {
521
513
  const left: Record<string, B> = {}
522
514
  const right: Record<string, C> = {}
523
515
  for (const key of Object.keys(self)) {
@@ -574,26 +566,26 @@ export const separate: <A, B>(
574
566
  export const partition: {
575
567
  <K extends string, C extends A, B extends A, A = C>(refinement: (a: A, key: K) => a is B): (
576
568
  self: Record<K, C>
577
- ) => [Record<string, C>, Record<string, B>]
569
+ ) => [excluded: Record<string, Exclude<C, B>>, satisfying: Record<string, B>]
578
570
  <K extends string, B extends A, A = B>(
579
571
  predicate: (a: A, key: K) => boolean
580
- ): (self: Record<K, B>) => [Record<string, B>, Record<string, B>]
581
- <K extends string, C extends A, B extends A, A = C>(
582
- self: Record<K, C>,
572
+ ): (self: Record<K, B>) => [excluded: Record<string, B>, satisfying: Record<string, B>]
573
+ <K extends string, A, B extends A>(
574
+ self: Record<K, A>,
583
575
  refinement: (a: A, key: K) => a is B
584
- ): [Record<string, C>, Record<string, B>]
585
- <K extends string, B extends A, A = B>(
586
- self: Record<K, B>,
576
+ ): [excluded: Record<string, Exclude<A, B>>, satisfying: Record<string, B>]
577
+ <K extends string, A>(
578
+ self: Record<K, A>,
587
579
  predicate: (a: A, key: K) => boolean
588
- ): [Record<string, B>, Record<string, B>]
580
+ ): [excluded: Record<string, A>, satisfying: Record<string, A>]
589
581
  } = dual(
590
582
  2,
591
- <B extends A, A = B>(
592
- self: Record<string, B>,
583
+ <A>(
584
+ self: Record<string, A>,
593
585
  predicate: (a: A, key: string) => boolean
594
- ): [Record<string, B>, Record<string, B>] => {
595
- const left: Record<string, B> = {}
596
- const right: Record<string, B> = {}
586
+ ): [excluded: Record<string, A>, satisfying: Record<string, A>] => {
587
+ const left: Record<string, A> = {}
588
+ const right: Record<string, A> = {}
597
589
  for (const key of Object.keys(self)) {
598
590
  if (predicate(self[key], key)) {
599
591
  right[key] = self[key]
@@ -740,11 +732,21 @@ export const reduce: {
740
732
  * @since 2.0.0
741
733
  */
742
734
  export const every: {
735
+ <A, K extends string, B extends A>(
736
+ refinement: (value: A, key: K) => value is B
737
+ ): (self: Record<K, A>) => self is Readonly<Record<K, B>>
743
738
  <A, K extends string>(predicate: (value: A, key: K) => boolean): (self: Record<K, A>) => boolean
739
+ <A, K extends string, B extends A>(
740
+ self: Record<K, A>,
741
+ refinement: (value: A, key: K) => value is B
742
+ ): self is Readonly<Record<K, B>>
744
743
  <K extends string, A>(self: Record<K, A>, predicate: (value: A, key: K) => boolean): boolean
745
- } = dual(2, <K extends string, A>(self: Record<K, A>, predicate: (value: A, key: K) => boolean): boolean => {
744
+ } = dual(2, <A, K extends string, B extends A>(
745
+ self: Record<K, A>,
746
+ refinement: (value: A, key: K) => value is B
747
+ ): self is Readonly<Record<K, A>> => {
746
748
  for (const key in self) {
747
- if (!predicate(self[key], key)) {
749
+ if (!refinement(self[key], key)) {
748
750
  return false
749
751
  }
750
752
  }