effect 3.4.8 → 3.5.0

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 (696) hide show
  1. package/RcMap/package.json +6 -0
  2. package/RcRef/package.json +6 -0
  3. package/dist/cjs/Array.js +14 -37
  4. package/dist/cjs/Array.js.map +1 -1
  5. package/dist/cjs/BigDecimal.js +11 -34
  6. package/dist/cjs/BigDecimal.js.map +1 -1
  7. package/dist/cjs/BigInt.js +7 -30
  8. package/dist/cjs/BigInt.js.map +1 -1
  9. package/dist/cjs/Boolean.js +6 -29
  10. package/dist/cjs/Boolean.js.map +1 -1
  11. package/dist/cjs/Brand.js +6 -29
  12. package/dist/cjs/Brand.js.map +1 -1
  13. package/dist/cjs/Cache.js +3 -26
  14. package/dist/cjs/Cache.js.map +1 -1
  15. package/dist/cjs/Cause.js +26 -28
  16. package/dist/cjs/Cause.js.map +1 -1
  17. package/dist/cjs/Channel.js +6 -29
  18. package/dist/cjs/Channel.js.map +1 -1
  19. package/dist/cjs/ChildExecutorDecision.js +3 -26
  20. package/dist/cjs/ChildExecutorDecision.js.map +1 -1
  21. package/dist/cjs/Chunk.js +12 -35
  22. package/dist/cjs/Chunk.js.map +1 -1
  23. package/dist/cjs/Clock.js +4 -27
  24. package/dist/cjs/Clock.js.map +1 -1
  25. package/dist/cjs/Config.js +3 -26
  26. package/dist/cjs/Config.js.map +1 -1
  27. package/dist/cjs/ConfigError.js +3 -26
  28. package/dist/cjs/ConfigError.js.map +1 -1
  29. package/dist/cjs/ConfigProvider.js +3 -26
  30. package/dist/cjs/ConfigProvider.js.map +1 -1
  31. package/dist/cjs/ConfigProviderPathPatch.js +3 -26
  32. package/dist/cjs/ConfigProviderPathPatch.js.map +1 -1
  33. package/dist/cjs/Console.js +4 -27
  34. package/dist/cjs/Console.js.map +1 -1
  35. package/dist/cjs/Context.js +3 -26
  36. package/dist/cjs/Context.js.map +1 -1
  37. package/dist/cjs/Cron.js +13 -36
  38. package/dist/cjs/Cron.js.map +1 -1
  39. package/dist/cjs/Data.js +9 -30
  40. package/dist/cjs/Data.js.map +1 -1
  41. package/dist/cjs/DefaultServices.js +3 -26
  42. package/dist/cjs/DefaultServices.js.map +1 -1
  43. package/dist/cjs/Deferred.js +4 -27
  44. package/dist/cjs/Deferred.js.map +1 -1
  45. package/dist/cjs/Differ.js +10 -33
  46. package/dist/cjs/Differ.js.map +1 -1
  47. package/dist/cjs/Duration.js +33 -35
  48. package/dist/cjs/Duration.js.map +1 -1
  49. package/dist/cjs/Effect.js +16 -39
  50. package/dist/cjs/Effect.js.map +1 -1
  51. package/dist/cjs/Effectable.js +3 -26
  52. package/dist/cjs/Effectable.js.map +1 -1
  53. package/dist/cjs/Either.js +8 -31
  54. package/dist/cjs/Either.js.map +1 -1
  55. package/dist/cjs/Encoding.js +7 -30
  56. package/dist/cjs/Encoding.js.map +1 -1
  57. package/dist/cjs/Equal.js +5 -28
  58. package/dist/cjs/Equal.js.map +1 -1
  59. package/dist/cjs/Equivalence.js +1 -1
  60. package/dist/cjs/Equivalence.js.map +1 -1
  61. package/dist/cjs/ExecutionStrategy.js +3 -26
  62. package/dist/cjs/ExecutionStrategy.js.map +1 -1
  63. package/dist/cjs/Exit.js +3 -26
  64. package/dist/cjs/Exit.js.map +1 -1
  65. package/dist/cjs/Fiber.js +6 -29
  66. package/dist/cjs/Fiber.js.map +1 -1
  67. package/dist/cjs/FiberHandle.js +15 -38
  68. package/dist/cjs/FiberHandle.js.map +1 -1
  69. package/dist/cjs/FiberId.js +3 -26
  70. package/dist/cjs/FiberId.js.map +1 -1
  71. package/dist/cjs/FiberMap.js +17 -40
  72. package/dist/cjs/FiberMap.js.map +1 -1
  73. package/dist/cjs/FiberRef.js +6 -29
  74. package/dist/cjs/FiberRef.js.map +1 -1
  75. package/dist/cjs/FiberRefs.js +3 -26
  76. package/dist/cjs/FiberRefs.js.map +1 -1
  77. package/dist/cjs/FiberRefsPatch.js +3 -26
  78. package/dist/cjs/FiberRefsPatch.js.map +1 -1
  79. package/dist/cjs/FiberSet.js +16 -39
  80. package/dist/cjs/FiberSet.js.map +1 -1
  81. package/dist/cjs/FiberStatus.js +3 -26
  82. package/dist/cjs/FiberStatus.js.map +1 -1
  83. package/dist/cjs/GlobalValue.js +3 -26
  84. package/dist/cjs/GlobalValue.js.map +1 -1
  85. package/dist/cjs/GroupBy.js +3 -26
  86. package/dist/cjs/GroupBy.js.map +1 -1
  87. package/dist/cjs/Hash.js +4 -4
  88. package/dist/cjs/Hash.js.map +1 -1
  89. package/dist/cjs/HashMap.js +4 -27
  90. package/dist/cjs/HashMap.js.map +1 -1
  91. package/dist/cjs/HashSet.js +3 -26
  92. package/dist/cjs/HashSet.js.map +1 -1
  93. package/dist/cjs/Inspectable.js +1 -1
  94. package/dist/cjs/Inspectable.js.map +1 -1
  95. package/dist/cjs/Iterable.js +8 -31
  96. package/dist/cjs/Iterable.js.map +1 -1
  97. package/dist/cjs/KeyedPool.js +3 -26
  98. package/dist/cjs/KeyedPool.js.map +1 -1
  99. package/dist/cjs/Layer.js +11 -34
  100. package/dist/cjs/Layer.js.map +1 -1
  101. package/dist/cjs/List.js +13 -36
  102. package/dist/cjs/List.js.map +1 -1
  103. package/dist/cjs/LogLevel.js +6 -29
  104. package/dist/cjs/LogLevel.js.map +1 -1
  105. package/dist/cjs/LogSpan.js +3 -26
  106. package/dist/cjs/LogSpan.js.map +1 -1
  107. package/dist/cjs/Logger.js +17 -30
  108. package/dist/cjs/Logger.js.map +1 -1
  109. package/dist/cjs/ManagedRuntime.js +3 -26
  110. package/dist/cjs/ManagedRuntime.js.map +1 -1
  111. package/dist/cjs/Match.js +4 -27
  112. package/dist/cjs/Match.js.map +1 -1
  113. package/dist/cjs/MergeDecision.js +3 -26
  114. package/dist/cjs/MergeDecision.js.map +1 -1
  115. package/dist/cjs/MergeState.js +3 -26
  116. package/dist/cjs/MergeState.js.map +1 -1
  117. package/dist/cjs/MergeStrategy.js +3 -26
  118. package/dist/cjs/MergeStrategy.js.map +1 -1
  119. package/dist/cjs/Metric.js +4 -27
  120. package/dist/cjs/Metric.js.map +1 -1
  121. package/dist/cjs/MetricBoundaries.js +3 -26
  122. package/dist/cjs/MetricBoundaries.js.map +1 -1
  123. package/dist/cjs/MetricHook.js +3 -26
  124. package/dist/cjs/MetricHook.js.map +1 -1
  125. package/dist/cjs/MetricKey.js +3 -26
  126. package/dist/cjs/MetricKey.js.map +1 -1
  127. package/dist/cjs/MetricKeyType.js +3 -26
  128. package/dist/cjs/MetricKeyType.js.map +1 -1
  129. package/dist/cjs/MetricLabel.js +3 -26
  130. package/dist/cjs/MetricLabel.js.map +1 -1
  131. package/dist/cjs/MetricPair.js +3 -26
  132. package/dist/cjs/MetricPair.js.map +1 -1
  133. package/dist/cjs/MetricPolling.js +3 -26
  134. package/dist/cjs/MetricPolling.js.map +1 -1
  135. package/dist/cjs/MetricRegistry.js +3 -26
  136. package/dist/cjs/MetricRegistry.js.map +1 -1
  137. package/dist/cjs/MetricState.js +3 -26
  138. package/dist/cjs/MetricState.js.map +1 -1
  139. package/dist/cjs/Micro.js +15 -38
  140. package/dist/cjs/Micro.js.map +1 -1
  141. package/dist/cjs/ModuleVersion.js +3 -26
  142. package/dist/cjs/ModuleVersion.js.map +1 -1
  143. package/dist/cjs/MutableHashMap.js +8 -31
  144. package/dist/cjs/MutableHashMap.js.map +1 -1
  145. package/dist/cjs/MutableHashSet.js +6 -29
  146. package/dist/cjs/MutableHashSet.js.map +1 -1
  147. package/dist/cjs/MutableList.js +5 -28
  148. package/dist/cjs/MutableList.js.map +1 -1
  149. package/dist/cjs/MutableQueue.js +7 -30
  150. package/dist/cjs/MutableQueue.js.map +1 -1
  151. package/dist/cjs/MutableRef.js +6 -29
  152. package/dist/cjs/MutableRef.js.map +1 -1
  153. package/dist/cjs/Number.js +7 -30
  154. package/dist/cjs/Number.js.map +1 -1
  155. package/dist/cjs/Option.js +10 -33
  156. package/dist/cjs/Option.js.map +1 -1
  157. package/dist/cjs/Order.js +1 -1
  158. package/dist/cjs/Order.js.map +1 -1
  159. package/dist/cjs/Ordering.js +1 -1
  160. package/dist/cjs/Ordering.js.map +1 -1
  161. package/dist/cjs/Pool.js +3 -26
  162. package/dist/cjs/Pool.js.map +1 -1
  163. package/dist/cjs/Predicate.js +1 -1
  164. package/dist/cjs/Predicate.js.map +1 -1
  165. package/dist/cjs/PubSub.js +3 -26
  166. package/dist/cjs/PubSub.js.map +1 -1
  167. package/dist/cjs/Queue.js +3 -26
  168. package/dist/cjs/Queue.js.map +1 -1
  169. package/dist/cjs/Random.js +13 -28
  170. package/dist/cjs/Random.js.map +1 -1
  171. package/dist/cjs/RateLimiter.js +3 -26
  172. package/dist/cjs/RateLimiter.js.map +1 -1
  173. package/dist/cjs/RcMap.js +52 -0
  174. package/dist/cjs/RcMap.js.map +1 -0
  175. package/dist/cjs/RcRef.js +51 -0
  176. package/dist/cjs/RcRef.js.map +1 -0
  177. package/dist/cjs/Readable.js +6 -29
  178. package/dist/cjs/Readable.js.map +1 -1
  179. package/dist/cjs/Record.js +6 -29
  180. package/dist/cjs/Record.js.map +1 -1
  181. package/dist/cjs/RedBlackTree.js +4 -27
  182. package/dist/cjs/RedBlackTree.js.map +1 -1
  183. package/dist/cjs/Redacted.js +4 -27
  184. package/dist/cjs/Redacted.js.map +1 -1
  185. package/dist/cjs/Ref.js +3 -26
  186. package/dist/cjs/Ref.js.map +1 -1
  187. package/dist/cjs/Reloadable.js +3 -26
  188. package/dist/cjs/Reloadable.js.map +1 -1
  189. package/dist/cjs/Request.js +7 -30
  190. package/dist/cjs/Request.js.map +1 -1
  191. package/dist/cjs/RequestBlock.js +3 -26
  192. package/dist/cjs/RequestBlock.js.map +1 -1
  193. package/dist/cjs/RequestResolver.js +6 -29
  194. package/dist/cjs/RequestResolver.js.map +1 -1
  195. package/dist/cjs/Resource.js +3 -26
  196. package/dist/cjs/Resource.js.map +1 -1
  197. package/dist/cjs/Runtime.js +3 -26
  198. package/dist/cjs/Runtime.js.map +1 -1
  199. package/dist/cjs/RuntimeFlags.js +4 -27
  200. package/dist/cjs/RuntimeFlags.js.map +1 -1
  201. package/dist/cjs/RuntimeFlagsPatch.js +4 -27
  202. package/dist/cjs/RuntimeFlagsPatch.js.map +1 -1
  203. package/dist/cjs/STM.js +6 -29
  204. package/dist/cjs/STM.js.map +1 -1
  205. package/dist/cjs/Schedule.js +3 -26
  206. package/dist/cjs/Schedule.js.map +1 -1
  207. package/dist/cjs/ScheduleDecision.js +3 -26
  208. package/dist/cjs/ScheduleDecision.js.map +1 -1
  209. package/dist/cjs/ScheduleInterval.js +3 -26
  210. package/dist/cjs/ScheduleInterval.js.map +1 -1
  211. package/dist/cjs/ScheduleIntervals.js +3 -26
  212. package/dist/cjs/ScheduleIntervals.js.map +1 -1
  213. package/dist/cjs/Scheduler.js +5 -28
  214. package/dist/cjs/Scheduler.js.map +1 -1
  215. package/dist/cjs/Scope.js +4 -27
  216. package/dist/cjs/Scope.js.map +1 -1
  217. package/dist/cjs/ScopedCache.js +3 -26
  218. package/dist/cjs/ScopedCache.js.map +1 -1
  219. package/dist/cjs/ScopedRef.js +3 -26
  220. package/dist/cjs/ScopedRef.js.map +1 -1
  221. package/dist/cjs/Secret.js +3 -26
  222. package/dist/cjs/Secret.js.map +1 -1
  223. package/dist/cjs/SingleProducerAsyncInput.js +3 -26
  224. package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
  225. package/dist/cjs/Sink.js +3 -26
  226. package/dist/cjs/Sink.js.map +1 -1
  227. package/dist/cjs/SortedMap.js +10 -33
  228. package/dist/cjs/SortedMap.js.map +1 -1
  229. package/dist/cjs/SortedSet.js +9 -32
  230. package/dist/cjs/SortedSet.js.map +1 -1
  231. package/dist/cjs/Stream.js +1077 -32
  232. package/dist/cjs/Stream.js.map +1 -1
  233. package/dist/cjs/StreamHaltStrategy.js +3 -26
  234. package/dist/cjs/StreamHaltStrategy.js.map +1 -1
  235. package/dist/cjs/Streamable.js +4 -27
  236. package/dist/cjs/Streamable.js.map +1 -1
  237. package/dist/cjs/String.js +9 -32
  238. package/dist/cjs/String.js.map +1 -1
  239. package/dist/cjs/Struct.js +6 -29
  240. package/dist/cjs/Struct.js.map +1 -1
  241. package/dist/cjs/Subscribable.js +8 -31
  242. package/dist/cjs/Subscribable.js.map +1 -1
  243. package/dist/cjs/SubscriptionRef.js +5 -28
  244. package/dist/cjs/SubscriptionRef.js.map +1 -1
  245. package/dist/cjs/Supervisor.js +5 -28
  246. package/dist/cjs/Supervisor.js.map +1 -1
  247. package/dist/cjs/Symbol.js +4 -27
  248. package/dist/cjs/Symbol.js.map +1 -1
  249. package/dist/cjs/SynchronizedRef.js +5 -28
  250. package/dist/cjs/SynchronizedRef.js.map +1 -1
  251. package/dist/cjs/TArray.js +3 -26
  252. package/dist/cjs/TArray.js.map +1 -1
  253. package/dist/cjs/TDeferred.js +3 -26
  254. package/dist/cjs/TDeferred.js.map +1 -1
  255. package/dist/cjs/TMap.js +3 -26
  256. package/dist/cjs/TMap.js.map +1 -1
  257. package/dist/cjs/TPriorityQueue.js +3 -26
  258. package/dist/cjs/TPriorityQueue.js.map +1 -1
  259. package/dist/cjs/TPubSub.js +3 -26
  260. package/dist/cjs/TPubSub.js.map +1 -1
  261. package/dist/cjs/TQueue.js +3 -26
  262. package/dist/cjs/TQueue.js.map +1 -1
  263. package/dist/cjs/TRandom.js +3 -26
  264. package/dist/cjs/TRandom.js.map +1 -1
  265. package/dist/cjs/TReentrantLock.js +3 -26
  266. package/dist/cjs/TReentrantLock.js.map +1 -1
  267. package/dist/cjs/TRef.js +3 -26
  268. package/dist/cjs/TRef.js.map +1 -1
  269. package/dist/cjs/TSemaphore.js +3 -26
  270. package/dist/cjs/TSemaphore.js.map +1 -1
  271. package/dist/cjs/TSet.js +3 -26
  272. package/dist/cjs/TSet.js.map +1 -1
  273. package/dist/cjs/Take.js +3 -26
  274. package/dist/cjs/Take.js.map +1 -1
  275. package/dist/cjs/TestAnnotation.js +10 -33
  276. package/dist/cjs/TestAnnotation.js.map +1 -1
  277. package/dist/cjs/TestAnnotationMap.js +5 -28
  278. package/dist/cjs/TestAnnotationMap.js.map +1 -1
  279. package/dist/cjs/TestAnnotations.js +15 -38
  280. package/dist/cjs/TestAnnotations.js.map +1 -1
  281. package/dist/cjs/TestClock.js +25 -48
  282. package/dist/cjs/TestClock.js.map +1 -1
  283. package/dist/cjs/TestConfig.js +3 -26
  284. package/dist/cjs/TestConfig.js.map +1 -1
  285. package/dist/cjs/TestContext.js +7 -30
  286. package/dist/cjs/TestContext.js.map +1 -1
  287. package/dist/cjs/TestLive.js +5 -28
  288. package/dist/cjs/TestLive.js.map +1 -1
  289. package/dist/cjs/TestServices.js +15 -38
  290. package/dist/cjs/TestServices.js.map +1 -1
  291. package/dist/cjs/TestSized.js +4 -27
  292. package/dist/cjs/TestSized.js.map +1 -1
  293. package/dist/cjs/Tracer.js +4 -27
  294. package/dist/cjs/Tracer.js.map +1 -1
  295. package/dist/cjs/Trie.js +3 -26
  296. package/dist/cjs/Trie.js.map +1 -1
  297. package/dist/cjs/Tuple.js +6 -29
  298. package/dist/cjs/Tuple.js.map +1 -1
  299. package/dist/cjs/Unify.js +1 -1
  300. package/dist/cjs/Unify.js.map +1 -1
  301. package/dist/cjs/UpstreamPullRequest.js +3 -26
  302. package/dist/cjs/UpstreamPullRequest.js.map +1 -1
  303. package/dist/cjs/UpstreamPullStrategy.js +3 -26
  304. package/dist/cjs/UpstreamPullStrategy.js.map +1 -1
  305. package/dist/cjs/Utils.js +4 -4
  306. package/dist/cjs/Utils.js.map +1 -1
  307. package/dist/cjs/index.js +166 -185
  308. package/dist/cjs/index.js.map +1 -1
  309. package/dist/cjs/internal/blockedRequests.js +9 -32
  310. package/dist/cjs/internal/blockedRequests.js.map +1 -1
  311. package/dist/cjs/internal/cache.js +20 -43
  312. package/dist/cjs/internal/cache.js.map +1 -1
  313. package/dist/cjs/internal/cause.js +37 -44
  314. package/dist/cjs/internal/cause.js.map +1 -1
  315. package/dist/cjs/internal/channel/channelExecutor.js +21 -44
  316. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  317. package/dist/cjs/internal/channel/channelState.js +5 -28
  318. package/dist/cjs/internal/channel/channelState.js.map +1 -1
  319. package/dist/cjs/internal/channel/childExecutorDecision.js +5 -28
  320. package/dist/cjs/internal/channel/childExecutorDecision.js.map +1 -1
  321. package/dist/cjs/internal/channel/continuation.js +4 -27
  322. package/dist/cjs/internal/channel/continuation.js.map +1 -1
  323. package/dist/cjs/internal/channel/mergeDecision.js +5 -28
  324. package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
  325. package/dist/cjs/internal/channel/mergeState.js +5 -28
  326. package/dist/cjs/internal/channel/mergeState.js.map +1 -1
  327. package/dist/cjs/internal/channel/mergeStrategy.js +5 -28
  328. package/dist/cjs/internal/channel/mergeStrategy.js.map +1 -1
  329. package/dist/cjs/internal/channel/singleProducerAsyncInput.js +9 -32
  330. package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
  331. package/dist/cjs/internal/channel/subexecutor.js +5 -28
  332. package/dist/cjs/internal/channel/subexecutor.js.map +1 -1
  333. package/dist/cjs/internal/channel/upstreamPullRequest.js +5 -28
  334. package/dist/cjs/internal/channel/upstreamPullRequest.js.map +1 -1
  335. package/dist/cjs/internal/channel/upstreamPullStrategy.js +5 -28
  336. package/dist/cjs/internal/channel/upstreamPullStrategy.js.map +1 -1
  337. package/dist/cjs/internal/channel.js +31 -54
  338. package/dist/cjs/internal/channel.js.map +1 -1
  339. package/dist/cjs/internal/clock.js +6 -29
  340. package/dist/cjs/internal/clock.js.map +1 -1
  341. package/dist/cjs/internal/completedRequestMap.js +2 -2
  342. package/dist/cjs/internal/completedRequestMap.js.map +1 -1
  343. package/dist/cjs/internal/concurrency.js +3 -26
  344. package/dist/cjs/internal/concurrency.js.map +1 -1
  345. package/dist/cjs/internal/config.js +17 -40
  346. package/dist/cjs/internal/config.js.map +1 -1
  347. package/dist/cjs/internal/configError.js +7 -30
  348. package/dist/cjs/internal/configError.js.map +1 -1
  349. package/dist/cjs/internal/configProvider/pathPatch.js +8 -31
  350. package/dist/cjs/internal/configProvider/pathPatch.js.map +1 -1
  351. package/dist/cjs/internal/configProvider.js +17 -40
  352. package/dist/cjs/internal/configProvider.js.map +1 -1
  353. package/dist/cjs/internal/console.js +9 -32
  354. package/dist/cjs/internal/console.js.map +1 -1
  355. package/dist/cjs/internal/context.js +10 -33
  356. package/dist/cjs/internal/context.js.map +1 -1
  357. package/dist/cjs/internal/core-effect.js +29 -57
  358. package/dist/cjs/internal/core-effect.js.map +1 -1
  359. package/dist/cjs/internal/core-stream.js +14 -37
  360. package/dist/cjs/internal/core-stream.js.map +1 -1
  361. package/dist/cjs/internal/core.js +47 -65
  362. package/dist/cjs/internal/core.js.map +1 -1
  363. package/dist/cjs/internal/data.js +5 -28
  364. package/dist/cjs/internal/data.js.map +1 -1
  365. package/dist/cjs/internal/dataSource.js +10 -33
  366. package/dist/cjs/internal/dataSource.js.map +1 -1
  367. package/dist/cjs/internal/defaultServices/console.js +4 -27
  368. package/dist/cjs/internal/defaultServices/console.js.map +1 -1
  369. package/dist/cjs/internal/defaultServices.js +14 -37
  370. package/dist/cjs/internal/defaultServices.js.map +1 -1
  371. package/dist/cjs/internal/deferred.js +3 -26
  372. package/dist/cjs/internal/deferred.js.map +1 -1
  373. package/dist/cjs/internal/differ/chunkPatch.js +6 -29
  374. package/dist/cjs/internal/differ/chunkPatch.js.map +1 -1
  375. package/dist/cjs/internal/differ/contextPatch.js +7 -30
  376. package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
  377. package/dist/cjs/internal/differ/hashMapPatch.js +7 -30
  378. package/dist/cjs/internal/differ/hashMapPatch.js.map +1 -1
  379. package/dist/cjs/internal/differ/hashSetPatch.js +6 -29
  380. package/dist/cjs/internal/differ/hashSetPatch.js.map +1 -1
  381. package/dist/cjs/internal/differ/orPatch.js +7 -30
  382. package/dist/cjs/internal/differ/orPatch.js.map +1 -1
  383. package/dist/cjs/internal/differ/readonlyArrayPatch.js +6 -29
  384. package/dist/cjs/internal/differ/readonlyArrayPatch.js.map +1 -1
  385. package/dist/cjs/internal/differ.js +10 -33
  386. package/dist/cjs/internal/differ.js.map +1 -1
  387. package/dist/cjs/internal/doNotation.js +1 -1
  388. package/dist/cjs/internal/doNotation.js.map +1 -1
  389. package/dist/cjs/internal/effect/circular.js +24 -47
  390. package/dist/cjs/internal/effect/circular.js.map +1 -1
  391. package/dist/cjs/internal/effectable.js +8 -31
  392. package/dist/cjs/internal/effectable.js.map +1 -1
  393. package/dist/cjs/internal/either.js +9 -32
  394. package/dist/cjs/internal/either.js.map +1 -1
  395. package/dist/cjs/internal/encoding/base64.js +4 -27
  396. package/dist/cjs/internal/encoding/base64.js.map +1 -1
  397. package/dist/cjs/internal/encoding/base64Url.js +5 -28
  398. package/dist/cjs/internal/encoding/base64Url.js.map +1 -1
  399. package/dist/cjs/internal/encoding/common.js +1 -1
  400. package/dist/cjs/internal/encoding/common.js.map +1 -1
  401. package/dist/cjs/internal/encoding/hex.js +4 -27
  402. package/dist/cjs/internal/encoding/hex.js.map +1 -1
  403. package/dist/cjs/internal/executionStrategy.js +1 -1
  404. package/dist/cjs/internal/executionStrategy.js.map +1 -1
  405. package/dist/cjs/internal/fiber.js +17 -40
  406. package/dist/cjs/internal/fiber.js.map +1 -1
  407. package/dist/cjs/internal/fiberId.js +11 -34
  408. package/dist/cjs/internal/fiberId.js.map +1 -1
  409. package/dist/cjs/internal/fiberRefs/patch.js +6 -29
  410. package/dist/cjs/internal/fiberRefs/patch.js.map +1 -1
  411. package/dist/cjs/internal/fiberRefs.js +9 -32
  412. package/dist/cjs/internal/fiberRefs.js.map +1 -1
  413. package/dist/cjs/internal/fiberRuntime.js +58 -79
  414. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  415. package/dist/cjs/internal/fiberScope.js +5 -28
  416. package/dist/cjs/internal/fiberScope.js.map +1 -1
  417. package/dist/cjs/internal/fiberStatus.js +6 -29
  418. package/dist/cjs/internal/fiberStatus.js.map +1 -1
  419. package/dist/cjs/internal/groupBy.js +18 -41
  420. package/dist/cjs/internal/groupBy.js.map +1 -1
  421. package/dist/cjs/internal/hashMap/bitwise.js +1 -1
  422. package/dist/cjs/internal/hashMap/bitwise.js.map +1 -1
  423. package/dist/cjs/internal/hashMap/keySet.js +1 -1
  424. package/dist/cjs/internal/hashMap/keySet.js.map +1 -1
  425. package/dist/cjs/internal/hashMap/node.js +9 -32
  426. package/dist/cjs/internal/hashMap/node.js.map +1 -1
  427. package/dist/cjs/internal/hashMap.js +12 -35
  428. package/dist/cjs/internal/hashMap.js.map +1 -1
  429. package/dist/cjs/internal/hashSet.js +9 -32
  430. package/dist/cjs/internal/hashSet.js.map +1 -1
  431. package/dist/cjs/internal/keyedPool.js +14 -37
  432. package/dist/cjs/internal/keyedPool.js.map +1 -1
  433. package/dist/cjs/internal/layer/circular.js +12 -35
  434. package/dist/cjs/internal/layer/circular.js.map +1 -1
  435. package/dist/cjs/internal/layer.js +25 -48
  436. package/dist/cjs/internal/layer.js.map +1 -1
  437. package/dist/cjs/internal/logger-circular.js +9 -32
  438. package/dist/cjs/internal/logger-circular.js.map +1 -1
  439. package/dist/cjs/internal/logger.js +139 -61
  440. package/dist/cjs/internal/logger.js.map +1 -1
  441. package/dist/cjs/internal/managedRuntime.js +9 -32
  442. package/dist/cjs/internal/managedRuntime.js.map +1 -1
  443. package/dist/cjs/internal/matcher.js +6 -29
  444. package/dist/cjs/internal/matcher.js.map +1 -1
  445. package/dist/cjs/internal/metric/boundaries.js +9 -32
  446. package/dist/cjs/internal/metric/boundaries.js.map +1 -1
  447. package/dist/cjs/internal/metric/hook.js +9 -32
  448. package/dist/cjs/internal/metric/hook.js.map +1 -1
  449. package/dist/cjs/internal/metric/key.js +11 -34
  450. package/dist/cjs/internal/metric/key.js.map +1 -1
  451. package/dist/cjs/internal/metric/keyType.js +8 -31
  452. package/dist/cjs/internal/metric/keyType.js.map +1 -1
  453. package/dist/cjs/internal/metric/label.js +6 -29
  454. package/dist/cjs/internal/metric/label.js.map +1 -1
  455. package/dist/cjs/internal/metric/pair.js +1 -1
  456. package/dist/cjs/internal/metric/pair.js.map +1 -1
  457. package/dist/cjs/internal/metric/polling.js +8 -31
  458. package/dist/cjs/internal/metric/polling.js.map +1 -1
  459. package/dist/cjs/internal/metric/registry.js +8 -31
  460. package/dist/cjs/internal/metric/registry.js.map +1 -1
  461. package/dist/cjs/internal/metric/state.js +8 -31
  462. package/dist/cjs/internal/metric/state.js.map +1 -1
  463. package/dist/cjs/internal/metric.js +15 -38
  464. package/dist/cjs/internal/metric.js.map +1 -1
  465. package/dist/cjs/internal/option.js +7 -30
  466. package/dist/cjs/internal/option.js.map +1 -1
  467. package/dist/cjs/internal/pool.js +43 -42
  468. package/dist/cjs/internal/pool.js.map +1 -1
  469. package/dist/cjs/internal/pubsub.js +229 -72
  470. package/dist/cjs/internal/pubsub.js.map +1 -1
  471. package/dist/cjs/internal/query.js +10 -33
  472. package/dist/cjs/internal/query.js.map +1 -1
  473. package/dist/cjs/internal/queue.js +12 -35
  474. package/dist/cjs/internal/queue.js.map +1 -1
  475. package/dist/cjs/internal/random.js +9 -31
  476. package/dist/cjs/internal/random.js.map +1 -1
  477. package/dist/cjs/internal/rateLimiter.js +6 -29
  478. package/dist/cjs/internal/rateLimiter.js.map +1 -1
  479. package/dist/cjs/internal/rcMap.js +129 -0
  480. package/dist/cjs/internal/rcMap.js.map +1 -0
  481. package/dist/cjs/internal/rcRef.js +122 -0
  482. package/dist/cjs/internal/rcRef.js.map +1 -0
  483. package/dist/cjs/internal/redBlackTree/iterator.js +4 -27
  484. package/dist/cjs/internal/redBlackTree/iterator.js.map +1 -1
  485. package/dist/cjs/internal/redBlackTree.js +13 -36
  486. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  487. package/dist/cjs/internal/redacted.js +8 -31
  488. package/dist/cjs/internal/redacted.js.map +1 -1
  489. package/dist/cjs/internal/ref.js +8 -31
  490. package/dist/cjs/internal/ref.js.map +1 -1
  491. package/dist/cjs/internal/reloadable.js +10 -33
  492. package/dist/cjs/internal/reloadable.js.map +1 -1
  493. package/dist/cjs/internal/request.js +7 -30
  494. package/dist/cjs/internal/request.js.map +1 -1
  495. package/dist/cjs/internal/resource.js +7 -30
  496. package/dist/cjs/internal/resource.js.map +1 -1
  497. package/dist/cjs/internal/ringBuffer.js +5 -28
  498. package/dist/cjs/internal/ringBuffer.js.map +1 -1
  499. package/dist/cjs/internal/runtime.js +23 -46
  500. package/dist/cjs/internal/runtime.js.map +1 -1
  501. package/dist/cjs/internal/runtimeFlags.js +5 -28
  502. package/dist/cjs/internal/runtimeFlags.js.map +1 -1
  503. package/dist/cjs/internal/runtimeFlagsPatch.js +1 -1
  504. package/dist/cjs/internal/runtimeFlagsPatch.js.map +1 -1
  505. package/dist/cjs/internal/schedule/decision.js +4 -27
  506. package/dist/cjs/internal/schedule/decision.js.map +1 -1
  507. package/dist/cjs/internal/schedule/interval.js +5 -28
  508. package/dist/cjs/internal/schedule/interval.js.map +1 -1
  509. package/dist/cjs/internal/schedule/intervals.js +7 -30
  510. package/dist/cjs/internal/schedule/intervals.js.map +1 -1
  511. package/dist/cjs/internal/schedule.js +21 -44
  512. package/dist/cjs/internal/schedule.js.map +1 -1
  513. package/dist/cjs/internal/scopedCache.js +19 -42
  514. package/dist/cjs/internal/scopedCache.js.map +1 -1
  515. package/dist/cjs/internal/scopedRef.js +10 -33
  516. package/dist/cjs/internal/scopedRef.js.map +1 -1
  517. package/dist/cjs/internal/secret.js +5 -28
  518. package/dist/cjs/internal/secret.js.map +1 -1
  519. package/dist/cjs/internal/singleShotGen.js.map +1 -1
  520. package/dist/cjs/internal/sink.js +22 -45
  521. package/dist/cjs/internal/sink.js.map +1 -1
  522. package/dist/cjs/internal/stm/core.js +30 -53
  523. package/dist/cjs/internal/stm/core.js.map +1 -1
  524. package/dist/cjs/internal/stm/stm/entry.js +3 -26
  525. package/dist/cjs/internal/stm/stm/entry.js.map +1 -1
  526. package/dist/cjs/internal/stm/stm/journal.js +3 -26
  527. package/dist/cjs/internal/stm/stm/journal.js.map +1 -1
  528. package/dist/cjs/internal/stm/stm/stmState.js +9 -32
  529. package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
  530. package/dist/cjs/internal/stm/stm/tExit.js +7 -30
  531. package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
  532. package/dist/cjs/internal/stm/stm/tryCommit.js +3 -26
  533. package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
  534. package/dist/cjs/internal/stm/stm/versioned.js.map +1 -1
  535. package/dist/cjs/internal/stm/stm.js +17 -40
  536. package/dist/cjs/internal/stm/stm.js.map +1 -1
  537. package/dist/cjs/internal/stm/tArray.js +9 -32
  538. package/dist/cjs/internal/stm/tArray.js.map +1 -1
  539. package/dist/cjs/internal/stm/tDeferred.js +8 -31
  540. package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
  541. package/dist/cjs/internal/stm/tMap.js +15 -38
  542. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  543. package/dist/cjs/internal/stm/tPriorityQueue.js +9 -32
  544. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  545. package/dist/cjs/internal/stm/tPubSub.js +12 -35
  546. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  547. package/dist/cjs/internal/stm/tQueue.js +12 -35
  548. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  549. package/dist/cjs/internal/stm/tRandom.js +10 -33
  550. package/dist/cjs/internal/stm/tRandom.js.map +1 -1
  551. package/dist/cjs/internal/stm/tReentrantLock.js +10 -33
  552. package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
  553. package/dist/cjs/internal/stm/tRef.js +7 -30
  554. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  555. package/dist/cjs/internal/stm/tSemaphore.js +8 -31
  556. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
  557. package/dist/cjs/internal/stm/tSet.js +10 -33
  558. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  559. package/dist/cjs/internal/stream/emit.js +8 -31
  560. package/dist/cjs/internal/stream/emit.js.map +1 -1
  561. package/dist/cjs/internal/stream/haltStrategy.js +4 -27
  562. package/dist/cjs/internal/stream/haltStrategy.js.map +1 -1
  563. package/dist/cjs/internal/stream/handoff.js +7 -30
  564. package/dist/cjs/internal/stream/handoff.js.map +1 -1
  565. package/dist/cjs/internal/stream/pull.js +7 -30
  566. package/dist/cjs/internal/stream/pull.js.map +1 -1
  567. package/dist/cjs/internal/stream.js +103 -80
  568. package/dist/cjs/internal/stream.js.map +1 -1
  569. package/dist/cjs/internal/subscriptionRef.js +13 -36
  570. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  571. package/dist/cjs/internal/supervisor/patch.js +8 -31
  572. package/dist/cjs/internal/supervisor/patch.js.map +1 -1
  573. package/dist/cjs/internal/supervisor.js +8 -31
  574. package/dist/cjs/internal/supervisor.js.map +1 -1
  575. package/dist/cjs/internal/synchronizedRef.js +5 -28
  576. package/dist/cjs/internal/synchronizedRef.js.map +1 -1
  577. package/dist/cjs/internal/take.js +9 -32
  578. package/dist/cjs/internal/take.js.map +1 -1
  579. package/dist/cjs/internal/tracer.js +3 -26
  580. package/dist/cjs/internal/tracer.js.map +1 -1
  581. package/dist/cjs/internal/trie.js +9 -32
  582. package/dist/cjs/internal/trie.js.map +1 -1
  583. package/dist/cjs/internal/version.js +1 -1
  584. package/dist/dts/Cause.d.ts +40 -1
  585. package/dist/dts/Cause.d.ts.map +1 -1
  586. package/dist/dts/Channel.d.ts +3 -3
  587. package/dist/dts/Channel.d.ts.map +1 -1
  588. package/dist/dts/Config.d.ts +5 -0
  589. package/dist/dts/Config.d.ts.map +1 -1
  590. package/dist/dts/Console.d.ts +2 -4
  591. package/dist/dts/Console.d.ts.map +1 -1
  592. package/dist/dts/Duration.d.ts +5 -0
  593. package/dist/dts/Duration.d.ts.map +1 -1
  594. package/dist/dts/Logger.d.ts +15 -0
  595. package/dist/dts/Logger.d.ts.map +1 -1
  596. package/dist/dts/PubSub.d.ts +15 -4
  597. package/dist/dts/PubSub.d.ts.map +1 -1
  598. package/dist/dts/Random.d.ts +8 -0
  599. package/dist/dts/Random.d.ts.map +1 -1
  600. package/dist/dts/RcMap.d.ts +93 -0
  601. package/dist/dts/RcMap.d.ts.map +1 -0
  602. package/dist/dts/RcRef.d.ts +83 -0
  603. package/dist/dts/RcRef.d.ts.map +1 -0
  604. package/dist/dts/Stream.d.ts +1139 -29
  605. package/dist/dts/Stream.d.ts.map +1 -1
  606. package/dist/dts/index.d.ts +8 -0
  607. package/dist/dts/index.d.ts.map +1 -1
  608. package/dist/dts/internal/core-effect.d.ts.map +1 -1
  609. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  610. package/dist/dts/internal/logger.d.ts.map +1 -1
  611. package/dist/dts/internal/random.d.ts +1 -1
  612. package/dist/dts/internal/random.d.ts.map +1 -1
  613. package/dist/dts/internal/rcMap.d.ts +2 -0
  614. package/dist/dts/internal/rcMap.d.ts.map +1 -0
  615. package/dist/dts/internal/rcRef.d.ts +2 -0
  616. package/dist/dts/internal/rcRef.d.ts.map +1 -0
  617. package/dist/dts/internal/stream.d.ts +1 -0
  618. package/dist/dts/internal/stream.d.ts.map +1 -1
  619. package/dist/esm/Cause.js +21 -0
  620. package/dist/esm/Cause.js.map +1 -1
  621. package/dist/esm/Channel.js.map +1 -1
  622. package/dist/esm/Config.js.map +1 -1
  623. package/dist/esm/Console.js.map +1 -1
  624. package/dist/esm/Data.js +3 -1
  625. package/dist/esm/Data.js.map +1 -1
  626. package/dist/esm/Duration.js +20 -0
  627. package/dist/esm/Duration.js.map +1 -1
  628. package/dist/esm/Logger.js +10 -0
  629. package/dist/esm/Logger.js.map +1 -1
  630. package/dist/esm/PubSub.js.map +1 -1
  631. package/dist/esm/Random.js +8 -0
  632. package/dist/esm/Random.js.map +1 -1
  633. package/dist/esm/RcMap.js +44 -0
  634. package/dist/esm/RcMap.js.map +1 -0
  635. package/dist/esm/RcRef.js +43 -0
  636. package/dist/esm/RcRef.js.map +1 -0
  637. package/dist/esm/Stream.js +1102 -3
  638. package/dist/esm/Stream.js.map +1 -1
  639. package/dist/esm/index.js +8 -0
  640. package/dist/esm/index.js.map +1 -1
  641. package/dist/esm/internal/cause.js +21 -5
  642. package/dist/esm/internal/cause.js.map +1 -1
  643. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  644. package/dist/esm/internal/channel.js.map +1 -1
  645. package/dist/esm/internal/core-effect.js +0 -5
  646. package/dist/esm/internal/core-effect.js.map +1 -1
  647. package/dist/esm/internal/core.js +11 -7
  648. package/dist/esm/internal/core.js.map +1 -1
  649. package/dist/esm/internal/defaultServices.js +1 -1
  650. package/dist/esm/internal/defaultServices.js.map +1 -1
  651. package/dist/esm/internal/fiberRuntime.js +2 -0
  652. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  653. package/dist/esm/internal/logger.js +126 -26
  654. package/dist/esm/internal/logger.js.map +1 -1
  655. package/dist/esm/internal/pool.js +29 -5
  656. package/dist/esm/internal/pool.js.map +1 -1
  657. package/dist/esm/internal/pubsub.js +216 -36
  658. package/dist/esm/internal/pubsub.js.map +1 -1
  659. package/dist/esm/internal/random.js +2 -1
  660. package/dist/esm/internal/random.js.map +1 -1
  661. package/dist/esm/internal/rcMap.js +120 -0
  662. package/dist/esm/internal/rcMap.js.map +1 -0
  663. package/dist/esm/internal/rcRef.js +112 -0
  664. package/dist/esm/internal/rcRef.js.map +1 -0
  665. package/dist/esm/internal/stream.js +53 -8
  666. package/dist/esm/internal/stream.js.map +1 -1
  667. package/dist/esm/internal/version.js +1 -1
  668. package/package.json +17 -1
  669. package/src/Cause.ts +47 -1
  670. package/src/Channel.ts +3 -3
  671. package/src/Config.ts +6 -0
  672. package/src/Console.ts +2 -4
  673. package/src/Data.ts +1 -1
  674. package/src/Duration.ts +18 -0
  675. package/src/Logger.ts +19 -0
  676. package/src/PubSub.ts +11 -4
  677. package/src/Random.ts +9 -0
  678. package/src/RcMap.ts +103 -0
  679. package/src/RcRef.ts +91 -0
  680. package/src/Stream.ts +1158 -29
  681. package/src/index.ts +10 -0
  682. package/src/internal/cause.ts +26 -5
  683. package/src/internal/channel/channelExecutor.ts +1 -1
  684. package/src/internal/channel.ts +4 -3
  685. package/src/internal/core-effect.ts +0 -5
  686. package/src/internal/core.ts +19 -9
  687. package/src/internal/defaultServices.ts +1 -1
  688. package/src/internal/fiberRuntime.ts +6 -0
  689. package/src/internal/logger.ts +133 -27
  690. package/src/internal/pool.ts +36 -5
  691. package/src/internal/pubsub.ts +249 -58
  692. package/src/internal/random.ts +2 -1
  693. package/src/internal/rcMap.ts +213 -0
  694. package/src/internal/rcRef.ts +172 -0
  695. package/src/internal/stream.ts +325 -111
  696. package/src/internal/version.ts +1 -1
package/src/Stream.ts CHANGED
@@ -30,7 +30,7 @@ import type * as Emit from "./StreamEmit.js"
30
30
  import type * as HaltStrategy from "./StreamHaltStrategy.js"
31
31
  import type * as Take from "./Take.js"
32
32
  import type * as Tracer from "./Tracer.js"
33
- import type { Covariant, NoInfer } from "./Types.js"
33
+ import type { Covariant, NoInfer, TupleOf } from "./Types.js"
34
34
  import type * as Unify from "./Unify.js"
35
35
 
36
36
  /**
@@ -146,6 +146,7 @@ export declare namespace Stream {
146
146
  /**
147
147
  * @since 2.0.0
148
148
  * @category models
149
+ * @deprecated use Types.TupleOf instead
149
150
  */
150
151
  export type DynamicTuple<T, N extends number> = N extends N ? number extends N ? Array<T> : DynamicTupleOf<T, N, []>
151
152
  : never
@@ -153,6 +154,7 @@ export declare namespace Stream {
153
154
  /**
154
155
  * @since 2.0.0
155
156
  * @category models
157
+ * @deprecated use Types.TupleOf instead
156
158
  */
157
159
  export type DynamicTupleOf<T, N extends number, R extends Array<unknown>> = R["length"] extends N ? R
158
160
  : DynamicTupleOf<T, N, [T, ...R]>
@@ -188,6 +190,29 @@ export const accumulateChunks: <A, E, R>(self: Stream<A, E, R>) => Stream<A, E,
188
190
  * Creates a stream from a single value that will get cleaned up after the
189
191
  * stream is consumed.
190
192
  *
193
+ * @example
194
+ * import { Console, Effect, Stream } from "effect"
195
+ *
196
+ * // Simulating File operations
197
+ * const open = (filename: string) =>
198
+ * Effect.gen(function*() {
199
+ * yield* Console.log(`Opening ${filename}`)
200
+ * return {
201
+ * getLines: Effect.succeed(["Line 1", "Line 2", "Line 3"]),
202
+ * close: Console.log(`Closing ${filename}`)
203
+ * }
204
+ * })
205
+ *
206
+ * const stream = Stream.acquireRelease(
207
+ * open("file.txt"),
208
+ * (file) => file.close
209
+ * ).pipe(Stream.flatMap((file) => file.getLines))
210
+ *
211
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
212
+ * // Opening file.txt
213
+ * // Closing file.txt
214
+ * // { _id: 'Chunk', values: [ [ 'Line 1', 'Line 2', 'Line 3' ] ] }
215
+ *
191
216
  * @since 2.0.0
192
217
  * @category constructors
193
218
  */
@@ -269,6 +294,14 @@ export const aggregateWithinEither: {
269
294
  /**
270
295
  * Maps the success values of this stream to the specified constant value.
271
296
  *
297
+ * @example
298
+ * import { Effect, Stream } from "effect"
299
+ *
300
+ * const stream = Stream.range(1, 5).pipe(Stream.as(null))
301
+ *
302
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
303
+ * // { _id: 'Chunk', values: [ null, null, null, null, null ] }
304
+ *
272
305
  * @since 2.0.0
273
306
  * @category mapping
274
307
  */
@@ -279,7 +312,10 @@ export const as: {
279
312
 
280
313
  const _async: <A, E = never, R = never>(
281
314
  register: (emit: Emit.Emit<R, E, A, void>) => Effect.Effect<void, never, R> | void,
282
- outputBuffer?: number
315
+ bufferSize?: number | "unbounded" | {
316
+ readonly bufferSize?: number | undefined
317
+ readonly strategy?: "dropping" | "sliding" | "suspend" | undefined
318
+ } | undefined
283
319
  ) => Stream<A, E, R> = internal._async
284
320
 
285
321
  export {
@@ -291,6 +327,29 @@ export {
291
327
  * The registration function can optionally return an `Effect`, which will be
292
328
  * executed if the `Fiber` executing this Effect is interrupted.
293
329
  *
330
+ * @example
331
+ * import type { StreamEmit } from "effect"
332
+ * import { Chunk, Effect, Option, Stream } from "effect"
333
+ *
334
+ * const events = [1, 2, 3, 4]
335
+ *
336
+ * const stream = Stream.async(
337
+ * (emit: StreamEmit.Emit<never, never, number, void>) => {
338
+ * events.forEach((n) => {
339
+ * setTimeout(() => {
340
+ * if (n === 3) {
341
+ * emit(Effect.fail(Option.none())) // Terminate the stream
342
+ * } else {
343
+ * emit(Effect.succeed(Chunk.of(n))) // Add the current item to the stream
344
+ * }
345
+ * }, 100 * n)
346
+ * })
347
+ * }
348
+ * )
349
+ *
350
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
351
+ * // { _id: 'Chunk', values: [ 1, 2 ] }
352
+ *
294
353
  * @since 2.0.0
295
354
  * @category constructors
296
355
  */
@@ -308,7 +367,10 @@ export {
308
367
  */
309
368
  export const asyncEffect: <A, E = never, R = never>(
310
369
  register: (emit: Emit.Emit<R, E, A, void>) => Effect.Effect<unknown, E, R>,
311
- outputBuffer?: number
370
+ bufferSize?: number | "unbounded" | {
371
+ readonly bufferSize?: number | undefined
372
+ readonly strategy?: "dropping" | "sliding" | "suspend" | undefined
373
+ } | undefined
312
374
  ) => Stream<A, E, R> = internal.asyncEffect
313
375
 
314
376
  /**
@@ -322,7 +384,10 @@ export const asyncEffect: <A, E = never, R = never>(
322
384
  */
323
385
  export const asyncScoped: <A, E = never, R = never>(
324
386
  register: (emit: Emit.Emit<R, E, A, void>) => Effect.Effect<unknown, E, R | Scope.Scope>,
325
- outputBuffer?: number
387
+ bufferSize?: number | "unbounded" | {
388
+ readonly bufferSize?: number | undefined
389
+ readonly strategy?: "dropping" | "sliding" | "suspend" | undefined
390
+ } | undefined
326
391
  ) => Stream<A, E, Exclude<R, Scope.Scope>> = internal.asyncScoped
327
392
 
328
393
  /**
@@ -350,6 +415,77 @@ export const branchAfter: {
350
415
  * as this stream. The driver stream will only ever advance the `maximumLag`
351
416
  * chunks before the slowest downstream stream.
352
417
  *
418
+ * @example
419
+ * import { Console, Effect, Fiber, Schedule, Stream } from "effect"
420
+ *
421
+ * const numbers = Effect.scoped(
422
+ * Stream.range(1, 20).pipe(
423
+ * Stream.tap((n) => Console.log(`Emit ${n} element before broadcasting`)),
424
+ * Stream.broadcast(2, 5),
425
+ * Stream.flatMap(([first, second]) =>
426
+ * Effect.gen(function*() {
427
+ * const fiber1 = yield* Stream.runFold(first, 0, (acc, e) => Math.max(acc, e)).pipe(
428
+ * Effect.andThen((max) => Console.log(`Maximum: ${max}`)),
429
+ * Effect.fork
430
+ * )
431
+ * const fiber2 = yield* second.pipe(
432
+ * Stream.schedule(Schedule.spaced("1 second")),
433
+ * Stream.runForEach((n) => Console.log(`Logging to the Console: ${n}`)),
434
+ * Effect.fork
435
+ * )
436
+ * yield* Fiber.join(fiber1).pipe(
437
+ * Effect.zip(Fiber.join(fiber2), { concurrent: true })
438
+ * )
439
+ * })
440
+ * ),
441
+ * Stream.runCollect
442
+ * )
443
+ * )
444
+ *
445
+ * // Effect.runPromise(numbers).then(console.log)
446
+ * // Emit 1 element before broadcasting
447
+ * // Emit 2 element before broadcasting
448
+ * // Emit 3 element before broadcasting
449
+ * // Emit 4 element before broadcasting
450
+ * // Emit 5 element before broadcasting
451
+ * // Emit 6 element before broadcasting
452
+ * // Emit 7 element before broadcasting
453
+ * // Emit 8 element before broadcasting
454
+ * // Emit 9 element before broadcasting
455
+ * // Emit 10 element before broadcasting
456
+ * // Emit 11 element before broadcasting
457
+ * // Logging to the Console: 1
458
+ * // Logging to the Console: 2
459
+ * // Logging to the Console: 3
460
+ * // Logging to the Console: 4
461
+ * // Logging to the Console: 5
462
+ * // Emit 12 element before broadcasting
463
+ * // Emit 13 element before broadcasting
464
+ * // Emit 14 element before broadcasting
465
+ * // Emit 15 element before broadcasting
466
+ * // Emit 16 element before broadcasting
467
+ * // Logging to the Console: 6
468
+ * // Logging to the Console: 7
469
+ * // Logging to the Console: 8
470
+ * // Logging to the Console: 9
471
+ * // Logging to the Console: 10
472
+ * // Emit 17 element before broadcasting
473
+ * // Emit 18 element before broadcasting
474
+ * // Emit 19 element before broadcasting
475
+ * // Emit 20 element before broadcasting
476
+ * // Logging to the Console: 11
477
+ * // Logging to the Console: 12
478
+ * // Logging to the Console: 13
479
+ * // Logging to the Console: 14
480
+ * // Logging to the Console: 15
481
+ * // Maximum: 20
482
+ * // Logging to the Console: 16
483
+ * // Logging to the Console: 17
484
+ * // Logging to the Console: 18
485
+ * // Logging to the Console: 19
486
+ * // Logging to the Console: 20
487
+ * // { _id: 'Chunk', values: [ undefined ] }
488
+ *
353
489
  * @since 2.0.0
354
490
  * @category utils
355
491
  */
@@ -359,12 +495,12 @@ export const broadcast: {
359
495
  maximumLag: number
360
496
  ): <A, E, R>(
361
497
  self: Stream<A, E, R>
362
- ) => Effect.Effect<Stream.DynamicTuple<Stream<A, E>, N>, never, Scope.Scope | R>
498
+ ) => Effect.Effect<TupleOf<N, Stream<A, E>>, never, Scope.Scope | R>
363
499
  <A, E, R, N extends number>(
364
500
  self: Stream<A, E, R>,
365
501
  n: N,
366
502
  maximumLag: number
367
- ): Effect.Effect<Stream.DynamicTuple<Stream<A, E>, N>, never, Scope.Scope | R>
503
+ ): Effect.Effect<TupleOf<N, Stream<A, E>>, never, Scope.Scope | R>
368
504
  } = internal.broadcast
369
505
 
370
506
  /**
@@ -396,12 +532,12 @@ export const broadcastedQueues: {
396
532
  maximumLag: number
397
533
  ): <A, E, R>(
398
534
  self: Stream<A, E, R>
399
- ) => Effect.Effect<Stream.DynamicTuple<Queue.Dequeue<Take.Take<A, E>>, N>, never, R | Scope.Scope>
535
+ ) => Effect.Effect<TupleOf<N, Queue.Dequeue<Take.Take<A, E>>>, never, R | Scope.Scope>
400
536
  <A, E, R, N extends number>(
401
537
  self: Stream<A, E, R>,
402
538
  n: N,
403
539
  maximumLag: number
404
- ): Effect.Effect<Stream.DynamicTuple<Queue.Dequeue<Take.Take<A, E>>, N>, never, Scope.Scope | R>
540
+ ): Effect.Effect<TupleOf<N, Queue.Dequeue<Take.Take<A, E>>>, never, Scope.Scope | R>
405
541
  } = internal.broadcastedQueues
406
542
 
407
543
  /**
@@ -430,9 +566,38 @@ export const broadcastedQueuesDynamic: {
430
566
  * Allows a faster producer to progress independently of a slower consumer by
431
567
  * buffering up to `capacity` elements in a queue.
432
568
  *
433
- * @note This combinator destroys the chunking structure. It's recommended to
569
+ * Note: This combinator destroys the chunking structure. It's recommended to
434
570
  * use rechunk afterwards. Additionally, prefer capacities that are powers
435
571
  * of 2 for better performance.
572
+ *
573
+ * @example
574
+ * import { Console, Effect, Schedule, Stream } from "effect"
575
+ *
576
+ * const stream = Stream.range(1, 10).pipe(
577
+ * Stream.tap((n) => Console.log(`before buffering: ${n}`)),
578
+ * Stream.buffer({ capacity: 4 }),
579
+ * Stream.tap((n) => Console.log(`after buffering: ${n}`)),
580
+ * Stream.schedule(Schedule.spaced("5 seconds"))
581
+ * )
582
+ *
583
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
584
+ * // before buffering: 1
585
+ * // before buffering: 2
586
+ * // before buffering: 3
587
+ * // before buffering: 4
588
+ * // before buffering: 5
589
+ * // before buffering: 6
590
+ * // after buffering: 1
591
+ * // after buffering: 2
592
+ * // before buffering: 7
593
+ * // after buffering: 3
594
+ * // before buffering: 8
595
+ * // after buffering: 4
596
+ * // before buffering: 9
597
+ * // after buffering: 5
598
+ * // before buffering: 10
599
+ * // ...
600
+ *
436
601
  * @since 2.0.0
437
602
  * @category utils
438
603
  */
@@ -618,6 +783,14 @@ export const catchSomeCause: {
618
783
  * previous element emitted, using natural equality to determine whether two
619
784
  * elements are equal.
620
785
  *
786
+ * @example
787
+ * import { Effect, Stream } from "effect"
788
+ *
789
+ * const stream = Stream.make(1, 1, 1, 2, 2, 3, 4).pipe(Stream.changes)
790
+ *
791
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
792
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4 ] }
793
+ *
621
794
  * @since 2.0.0
622
795
  * @category utils
623
796
  */
@@ -749,6 +922,17 @@ export const combineChunks: {
749
922
  * that emits the elements from this stream and then the elements from the
750
923
  * specified stream.
751
924
  *
925
+ * @example
926
+ * import { Effect, Stream } from "effect"
927
+ *
928
+ * const s1 = Stream.make(1, 2, 3)
929
+ * const s2 = Stream.make(4, 5)
930
+ *
931
+ * const stream = Stream.concat(s1, s2)
932
+ *
933
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
934
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
935
+ *
752
936
  * @since 2.0.0
753
937
  * @category utils
754
938
  */
@@ -760,6 +944,24 @@ export const concat: {
760
944
  /**
761
945
  * Concatenates all of the streams in the chunk to one stream.
762
946
  *
947
+ * @example
948
+ * import { Chunk, Effect, Stream } from "effect"
949
+ *
950
+ * const s1 = Stream.make(1, 2, 3)
951
+ * const s2 = Stream.make(4, 5)
952
+ * const s3 = Stream.make(6, 7, 8)
953
+ *
954
+ * const stream = Stream.concatAll(Chunk.make(s1, s2, s3))
955
+ *
956
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
957
+ * // {
958
+ * // _id: 'Chunk',
959
+ * // values: [
960
+ * // 1, 2, 3, 4,
961
+ * // 5, 6, 7, 8
962
+ * // ]
963
+ * // }
964
+ *
763
965
  * @since 2.0.0
764
966
  * @category constructors
765
967
  */
@@ -772,6 +974,22 @@ export const concatAll: <A, E, R>(streams: Chunk.Chunk<Stream<A, E, R>>) => Stre
772
974
  *
773
975
  * See also `Stream.zip` for the more common point-wise variant.
774
976
  *
977
+ * @example
978
+ * import { Effect, Stream } from "effect"
979
+ *
980
+ * const s1 = Stream.make(1, 2, 3)
981
+ * const s2 = Stream.make("a", "b")
982
+ *
983
+ * const product = Stream.cross(s1, s2)
984
+ *
985
+ * // Effect.runPromise(Stream.runCollect(product)).then(console.log)
986
+ * // {
987
+ * // _id: "Chunk",
988
+ * // values: [
989
+ * // [ 1, "a" ], [ 1, "b" ], [ 2, "a" ], [ 2, "b" ], [ 3, "a" ], [ 3, "b" ]
990
+ * // ]
991
+ * // }
992
+ *
775
993
  * @since 2.0.0
776
994
  * @category utils
777
995
  */
@@ -844,6 +1062,45 @@ export const crossWith: {
844
1062
  * example, a search engine may only want to initiate a search after a user
845
1063
  * has paused typing so as to not prematurely recommend results.
846
1064
  *
1065
+ * @example
1066
+ * import { Effect, Stream } from "effect"
1067
+ *
1068
+ * let last = Date.now()
1069
+ * const log = (message: string) =>
1070
+ * Effect.sync(() => {
1071
+ * const end = Date.now()
1072
+ * console.log(`${message} after ${end - last}ms`)
1073
+ * last = end
1074
+ * })
1075
+ *
1076
+ * const stream = Stream.make(1, 2, 3).pipe(
1077
+ * Stream.concat(
1078
+ * Stream.fromEffect(Effect.sleep("200 millis").pipe(Effect.as(4))) // Emit 4 after 200 ms
1079
+ * ),
1080
+ * Stream.concat(Stream.make(5, 6)), // Continue with more rapid values
1081
+ * Stream.concat(
1082
+ * Stream.fromEffect(Effect.sleep("150 millis").pipe(Effect.as(7))) // Emit 7 after 150 ms
1083
+ * ),
1084
+ * Stream.concat(Stream.make(8)),
1085
+ * Stream.tap((n) => log(`Received ${n}`)),
1086
+ * Stream.debounce("100 millis"), // Only emit values after a pause of at least 100 milliseconds,
1087
+ * Stream.tap((n) => log(`> Emitted ${n}`))
1088
+ * )
1089
+ *
1090
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1091
+ * // Received 1 after 5ms
1092
+ * // Received 2 after 2ms
1093
+ * // Received 3 after 0ms
1094
+ * // > Emitted 3 after 104ms
1095
+ * // Received 4 after 99ms
1096
+ * // Received 5 after 1ms
1097
+ * // Received 6 after 0ms
1098
+ * // > Emitted 6 after 101ms
1099
+ * // Received 7 after 50ms
1100
+ * // Received 8 after 1ms
1101
+ * // > Emitted 8 after 101ms
1102
+ * // { _id: 'Chunk', values: [ 3, 6, 8 ] }
1103
+ *
847
1104
  * @since 2.0.0
848
1105
  * @category utils
849
1106
  */
@@ -893,7 +1150,7 @@ export const distributedWith: {
893
1150
  }
894
1151
  ): <E, R>(
895
1152
  self: Stream<A, E, R>
896
- ) => Effect.Effect<Stream.DynamicTuple<Queue.Dequeue<Exit.Exit<A, Option.Option<E>>>, N>, never, Scope.Scope | R>
1153
+ ) => Effect.Effect<TupleOf<N, Queue.Dequeue<Exit.Exit<A, Option.Option<E>>>>, never, Scope.Scope | R>
897
1154
  <A, E, R, N extends number>(
898
1155
  self: Stream<A, E, R>,
899
1156
  options: {
@@ -901,7 +1158,7 @@ export const distributedWith: {
901
1158
  readonly maximumLag: number
902
1159
  readonly decide: (a: A) => Effect.Effect<Predicate<number>>
903
1160
  }
904
- ): Effect.Effect<Stream.DynamicTuple<Queue.Dequeue<Exit.Exit<A, Option.Option<E>>>, N>, never, Scope.Scope | R>
1161
+ ): Effect.Effect<TupleOf<N, Queue.Dequeue<Exit.Exit<A, Option.Option<E>>>>, never, Scope.Scope | R>
905
1162
  } = internal.distributedWith
906
1163
 
907
1164
  /**
@@ -939,6 +1196,15 @@ export const distributedWithDynamic: {
939
1196
  * Converts this stream to a stream that executes its effects but emits no
940
1197
  * elements. Useful for sequencing effects using streams:
941
1198
  *
1199
+ * @example
1200
+ * import { Effect, Stream } from "effect"
1201
+ *
1202
+ * // We create a stream and immediately drain it.
1203
+ * const stream = Stream.range(1, 6).pipe(Stream.drain)
1204
+ *
1205
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1206
+ * // { _id: 'Chunk', values: [] }
1207
+ *
942
1208
  * @since 2.0.0
943
1209
  * @category utils
944
1210
  */
@@ -1054,6 +1320,14 @@ export const either: <A, E, R>(self: Stream<A, E, R>) => Stream<Either.Either<A,
1054
1320
  /**
1055
1321
  * The empty stream.
1056
1322
  *
1323
+ * @example
1324
+ * import { Effect, Stream } from "effect"
1325
+ *
1326
+ * const stream = Stream.empty
1327
+ *
1328
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1329
+ * // { _id: 'Chunk', values: [] }
1330
+ *
1057
1331
  * @since 2.0.0
1058
1332
  * @category constructors
1059
1333
  */
@@ -1062,6 +1336,22 @@ export const empty: Stream<never> = internal.empty
1062
1336
  /**
1063
1337
  * Executes the provided finalizer after this stream's finalizers run.
1064
1338
  *
1339
+ * @example
1340
+ * import { Console, Effect, Stream } from "effect"
1341
+ *
1342
+ * const program = Stream.fromEffect(Console.log("Application Logic.")).pipe(
1343
+ * Stream.concat(Stream.finalizer(Console.log("Finalizing the stream"))),
1344
+ * Stream.ensuring(
1345
+ * Console.log("Doing some other works after stream's finalization")
1346
+ * )
1347
+ * )
1348
+ *
1349
+ * // Effect.runPromise(Stream.runCollect(program)).then(console.log)
1350
+ * // Application Logic.
1351
+ * // Finalizing the stream
1352
+ * // Doing some other works after stream's finalization
1353
+ * // { _id: 'Chunk', values: [ undefined, undefined ] }
1354
+ *
1065
1355
  * @since 2.0.0
1066
1356
  * @category utils
1067
1357
  */
@@ -1133,6 +1423,18 @@ export const execute: <X, E, R>(effect: Effect.Effect<X, E, R>) => Stream<never,
1133
1423
  /**
1134
1424
  * Terminates with the specified error.
1135
1425
  *
1426
+ * @example
1427
+ * import { Effect, Stream } from "effect"
1428
+ *
1429
+ * const stream = Stream.fail("Uh oh!")
1430
+ *
1431
+ * Effect.runPromiseExit(Stream.runCollect(stream)).then(console.log)
1432
+ * // {
1433
+ * // _id: 'Exit',
1434
+ * // _tag: 'Failure',
1435
+ * // cause: { _id: 'Cause', _tag: 'Fail', failure: 'Uh oh!' }
1436
+ * // }
1437
+ *
1136
1438
  * @since 2.0.0
1137
1439
  * @category constructors
1138
1440
  */
@@ -1165,6 +1467,14 @@ export const failCauseSync: <E>(evaluate: LazyArg<Cause.Cause<E>>) => Stream<nev
1165
1467
  /**
1166
1468
  * Filters the elements emitted by this stream using the provided function.
1167
1469
  *
1470
+ * @example
1471
+ * import { Effect, Stream } from "effect"
1472
+ *
1473
+ * const stream = Stream.range(1, 11).pipe(Stream.filter((n) => n % 2 === 0))
1474
+ *
1475
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1476
+ * // { _id: 'Chunk', values: [ 2, 4, 6, 8, 10 ] }
1477
+ *
1168
1478
  * @since 2.0.0
1169
1479
  * @category filtering
1170
1480
  */
@@ -1248,6 +1558,29 @@ export const filterMapWhileEffect: {
1248
1558
  * Creates a one-element stream that never fails and executes the finalizer
1249
1559
  * when it ends.
1250
1560
  *
1561
+ * @example
1562
+ * import { Console, Effect, Stream } from "effect"
1563
+ *
1564
+ * const application = Stream.fromEffect(Console.log("Application Logic."))
1565
+ *
1566
+ * const deleteDir = (dir: string) => Console.log(`Deleting dir: ${dir}`)
1567
+ *
1568
+ * const program = application.pipe(
1569
+ * Stream.concat(
1570
+ * Stream.finalizer(
1571
+ * deleteDir("tmp").pipe(
1572
+ * Effect.andThen(Console.log("Temporary directory was deleted."))
1573
+ * )
1574
+ * )
1575
+ * )
1576
+ * )
1577
+ *
1578
+ * // Effect.runPromise(Stream.runCollect(program)).then(console.log)
1579
+ * // Application Logic.
1580
+ * // Deleting dir: tmp
1581
+ * // Temporary directory was deleted.
1582
+ * // { _id: 'Chunk', values: [ undefined, undefined ] }
1583
+ *
1251
1584
  * @since 2.0.0
1252
1585
  * @category constructors
1253
1586
  */
@@ -1408,6 +1741,22 @@ export const forever: <A, E, R>(self: Stream<A, E, R>) => Stream<A, E, R> = inte
1408
1741
  /**
1409
1742
  * Creates a stream from an `AsyncIterable`.
1410
1743
  *
1744
+ * @example
1745
+ * import { Effect, Stream } from "effect"
1746
+ *
1747
+ * const myAsyncIterable = async function*() {
1748
+ * yield 1
1749
+ * yield 2
1750
+ * }
1751
+ *
1752
+ * const stream = Stream.fromAsyncIterable(
1753
+ * myAsyncIterable(),
1754
+ * (e) => new Error(String(e)) // Error Handling
1755
+ * )
1756
+ *
1757
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1758
+ * // { _id: 'Chunk', values: [ 1, 2 ] }
1759
+ *
1411
1760
  * @since 2.0.0
1412
1761
  * @category constructors
1413
1762
  */
@@ -1437,6 +1786,15 @@ export const toChannel: <A, E, R>(
1437
1786
  /**
1438
1787
  * Creates a stream from a `Chunk` of values.
1439
1788
  *
1789
+ * @example
1790
+ * import { Chunk, Effect, Stream } from "effect"
1791
+ *
1792
+ * // Creating a stream with values from a single Chunk
1793
+ * const stream = Stream.fromChunk(Chunk.make(1, 2, 3))
1794
+ *
1795
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1796
+ * // { _id: 'Chunk', values: [ 1, 2, 3 ] }
1797
+ *
1440
1798
  * @since 2.0.0
1441
1799
  * @category constructors
1442
1800
  */
@@ -1477,6 +1835,15 @@ export const fromChunkQueue: <A>(
1477
1835
  /**
1478
1836
  * Creates a stream from an arbitrary number of chunks.
1479
1837
  *
1838
+ * @example
1839
+ * import { Chunk, Effect, Stream } from "effect"
1840
+ *
1841
+ * // Creating a stream with values from multiple Chunks
1842
+ * const stream = Stream.fromChunks(Chunk.make(1, 2, 3), Chunk.make(4, 5, 6))
1843
+ *
1844
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1845
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5, 6 ] }
1846
+ *
1480
1847
  * @since 2.0.0
1481
1848
  * @category constructors
1482
1849
  */
@@ -1486,6 +1853,14 @@ export const fromChunks: <A>(...chunks: Array<Chunk.Chunk<A>>) => Stream<A> = in
1486
1853
  * Either emits the success value of this effect or terminates the stream
1487
1854
  * with the failure value of this effect.
1488
1855
  *
1856
+ * @example
1857
+ * import { Effect, Random, Stream } from "effect"
1858
+ *
1859
+ * const stream = Stream.fromEffect(Random.nextInt)
1860
+ *
1861
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1862
+ * // Example Output: { _id: 'Chunk', values: [ 922694024 ] }
1863
+ *
1489
1864
  * @since 2.0.0
1490
1865
  * @category constructors
1491
1866
  */
@@ -1530,6 +1905,16 @@ export const fromPubSub: {
1530
1905
  /**
1531
1906
  * Creates a new `Stream` from an iterable collection of values.
1532
1907
  *
1908
+ * @example
1909
+ * import { Effect, Stream } from "effect"
1910
+ *
1911
+ * const numbers = [1, 2, 3]
1912
+ *
1913
+ * const stream = Stream.fromIterable(numbers)
1914
+ *
1915
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1916
+ * // { _id: 'Chunk', values: [ 1, 2, 3 ] }
1917
+ *
1533
1918
  * @since 2.0.0
1534
1919
  * @category constructors
1535
1920
  */
@@ -1538,6 +1923,23 @@ export const fromIterable: <A>(iterable: Iterable<A>) => Stream<A> = internal.fr
1538
1923
  /**
1539
1924
  * Creates a stream from an effect producing a value of type `Iterable<A>`.
1540
1925
  *
1926
+ * @example
1927
+ * import { Context, Effect, Stream } from "effect"
1928
+ *
1929
+ * class Database extends Context.Tag("Database")<
1930
+ * Database,
1931
+ * { readonly getUsers: Effect.Effect<Array<string>> }
1932
+ * >() {}
1933
+ *
1934
+ * const getUsers = Database.pipe(Effect.andThen((_) => _.getUsers))
1935
+ *
1936
+ * const stream = Stream.fromIterableEffect(getUsers)
1937
+ *
1938
+ * // Effect.runPromise(
1939
+ * // Stream.runCollect(stream.pipe(Stream.provideService(Database, { getUsers: Effect.succeed(["user1", "user2"]) })))
1940
+ * // ).then(console.log)
1941
+ * // { _id: 'Chunk', values: [ 'user1', 'user2' ] }
1942
+ *
1541
1943
  * @since 2.0.0
1542
1944
  * @category constructors
1543
1945
  */
@@ -1614,6 +2016,19 @@ export const fromReadableStreamByob: <E>(
1614
2016
  * input. The stream will emit an element for each value output from the
1615
2017
  * schedule, continuing for as long as the schedule continues.
1616
2018
  *
2019
+ * @example
2020
+ * import { Effect, Schedule, Stream } from "effect"
2021
+ *
2022
+ * // Emits values every 1 second for a total of 5 emissions
2023
+ * const schedule = Schedule.spaced("1 second").pipe(
2024
+ * Schedule.compose(Schedule.recurs(5))
2025
+ * )
2026
+ *
2027
+ * const stream = Stream.fromSchedule(schedule)
2028
+ *
2029
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2030
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
2031
+ *
1617
2032
  * @since 2.0.0
1618
2033
  * @category constructors
1619
2034
  */
@@ -1635,6 +2050,35 @@ export const groupAdjacentBy: {
1635
2050
  /**
1636
2051
  * More powerful version of `Stream.groupByKey`.
1637
2052
  *
2053
+ * @example
2054
+ * import { Chunk, Effect, GroupBy, Stream } from "effect"
2055
+ *
2056
+ * const groupByKeyResult = Stream.fromIterable([
2057
+ * "Mary",
2058
+ * "James",
2059
+ * "Robert",
2060
+ * "Patricia",
2061
+ * "John",
2062
+ * "Jennifer",
2063
+ * "Rebecca",
2064
+ * "Peter"
2065
+ * ]).pipe(
2066
+ * Stream.groupBy((name) => Effect.succeed([name.substring(0, 1), name]))
2067
+ * )
2068
+ *
2069
+ * const stream = GroupBy.evaluate(groupByKeyResult, (key, stream) =>
2070
+ * Stream.fromEffect(
2071
+ * Stream.runCollect(stream).pipe(
2072
+ * Effect.andThen((chunk) => [key, Chunk.size(chunk)] as const)
2073
+ * )
2074
+ * ))
2075
+ *
2076
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2077
+ * // {
2078
+ * // _id: 'Chunk',
2079
+ * // values: [ [ 'M', 1 ], [ 'J', 3 ], [ 'R', 2 ], [ 'P', 2 ] ]
2080
+ * // }
2081
+ *
1638
2082
  * @since 2.0.0
1639
2083
  * @category grouping
1640
2084
  */
@@ -1706,6 +2150,22 @@ export const groupByKey: {
1706
2150
  /**
1707
2151
  * Partitions the stream with specified `chunkSize`.
1708
2152
  *
2153
+ * @example
2154
+ * import { Effect, Stream } from "effect"
2155
+ *
2156
+ * const stream = Stream.range(0, 8).pipe(Stream.grouped(3))
2157
+ *
2158
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunks) => console.log("%o", chunks))
2159
+ * // {
2160
+ * // _id: 'Chunk',
2161
+ * // values: [
2162
+ * // { _id: 'Chunk', values: [ 0, 1, 2, [length]: 3 ] },
2163
+ * // { _id: 'Chunk', values: [ 3, 4, 5, [length]: 3 ] },
2164
+ * // { _id: 'Chunk', values: [ 6, 7, 8, [length]: 3 ] },
2165
+ * // [length]: 3
2166
+ * // ]
2167
+ * // }
2168
+ *
1709
2169
  * @since 2.0.0
1710
2170
  * @category utils
1711
2171
  */
@@ -1718,6 +2178,43 @@ export const grouped: {
1718
2178
  * Partitions the stream with the specified `chunkSize` or until the specified
1719
2179
  * `duration` has passed, whichever is satisfied first.
1720
2180
  *
2181
+ * @example
2182
+ * import { Chunk, Effect, Schedule, Stream } from "effect"
2183
+ *
2184
+ * const stream = Stream.range(0, 9).pipe(
2185
+ * Stream.repeat(Schedule.spaced("1 second")),
2186
+ * Stream.groupedWithin(18, "1.5 seconds"),
2187
+ * Stream.take(3)
2188
+ * )
2189
+ *
2190
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunks) => console.log(Chunk.toArray(chunks)))
2191
+ * // [
2192
+ * // {
2193
+ * // _id: 'Chunk',
2194
+ * // values: [
2195
+ * // 0, 1, 2, 3, 4, 5, 6,
2196
+ * // 7, 8, 9, 0, 1, 2, 3,
2197
+ * // 4, 5, 6, 7
2198
+ * // ]
2199
+ * // },
2200
+ * // {
2201
+ * // _id: 'Chunk',
2202
+ * // values: [
2203
+ * // 8, 9, 0, 1, 2,
2204
+ * // 3, 4, 5, 6, 7,
2205
+ * // 8, 9
2206
+ * // ]
2207
+ * // },
2208
+ * // {
2209
+ * // _id: 'Chunk',
2210
+ * // values: [
2211
+ * // 0, 1, 2, 3, 4, 5, 6,
2212
+ * // 7, 8, 9, 0, 1, 2, 3,
2213
+ * // 4, 5, 6, 7
2214
+ * // ]
2215
+ * // }
2216
+ * // ]
2217
+ *
1721
2218
  * @since 2.0.0
1722
2219
  * @category utils
1723
2220
  */
@@ -1789,6 +2286,16 @@ export const identity: <A, E = never, R = never>() => Stream<A, E, R> = internal
1789
2286
  * one stream is exhausted all remaining values in the other stream will be
1790
2287
  * pulled.
1791
2288
  *
2289
+ * @example
2290
+ * import { Effect, Stream } from "effect"
2291
+ *
2292
+ * const s1 = Stream.make(1, 2, 3)
2293
+ * const s2 = Stream.make(4, 5, 6)
2294
+ *
2295
+ * const stream = Stream.interleave(s1, s2)
2296
+ *
2297
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2298
+ * // { _id: 'Chunk', values: [ 1, 4, 2, 5, 3, 6 ] }
1792
2299
  * @since 2.0.0
1793
2300
  * @category utils
1794
2301
  */
@@ -1806,6 +2313,25 @@ export const interleave: {
1806
2313
  * stream are exhausted further requests for values from that stream will be
1807
2314
  * ignored.
1808
2315
  *
2316
+ * @example
2317
+ * import { Effect, Stream } from "effect"
2318
+ *
2319
+ * const s1 = Stream.make(1, 3, 5, 7, 9)
2320
+ * const s2 = Stream.make(2, 4, 6, 8, 10)
2321
+ *
2322
+ * const booleanStream = Stream.make(true, false, false).pipe(Stream.forever)
2323
+ *
2324
+ * const stream = Stream.interleaveWith(s1, s2, booleanStream)
2325
+ *
2326
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2327
+ * // {
2328
+ * // _id: 'Chunk',
2329
+ * // values: [
2330
+ * // 1, 2, 4, 3, 6,
2331
+ * // 8, 5, 10, 7, 9
2332
+ * // ]
2333
+ * // }
2334
+ *
1809
2335
  * @since 2.0.0
1810
2336
  * @category utils
1811
2337
  */
@@ -1824,6 +2350,20 @@ export const interleaveWith: {
1824
2350
  /**
1825
2351
  * Intersperse stream with provided `element`.
1826
2352
  *
2353
+ * @example
2354
+ * import { Effect, Stream } from "effect"
2355
+ *
2356
+ * const stream = Stream.make(1, 2, 3, 4, 5).pipe(Stream.intersperse(0))
2357
+ *
2358
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2359
+ * // {
2360
+ * // _id: 'Chunk',
2361
+ * // values: [
2362
+ * // 1, 0, 2, 0, 3,
2363
+ * // 0, 4, 0, 5
2364
+ * // ]
2365
+ * // }
2366
+ *
1827
2367
  * @since 2.0.0
1828
2368
  * @category utils
1829
2369
  */
@@ -1835,6 +2375,27 @@ export const intersperse: {
1835
2375
  /**
1836
2376
  * Intersperse the specified element, also adding a prefix and a suffix.
1837
2377
  *
2378
+ * @example
2379
+ * import { Effect, Stream } from "effect"
2380
+ *
2381
+ * const stream = Stream.make(1, 2, 3, 4, 5).pipe(
2382
+ * Stream.intersperseAffixes({
2383
+ * start: "[",
2384
+ * middle: "-",
2385
+ * end: "]"
2386
+ * })
2387
+ * )
2388
+ *
2389
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2390
+ * // {
2391
+ * // _id: 'Chunk',
2392
+ * // values: [
2393
+ * // '[', 1, '-', 2, '-',
2394
+ * // 3, '-', 4, '-', 5,
2395
+ * // ']'
2396
+ * // ]
2397
+ * // }
2398
+ *
1838
2399
  * @since 2.0.0
1839
2400
  * @category utils
1840
2401
  */
@@ -1896,6 +2457,15 @@ export const interruptWhenDeferred: {
1896
2457
  * The infinite stream of iterative function application: a, f(a), f(f(a)),
1897
2458
  * f(f(f(a))), ...
1898
2459
  *
2460
+ * @example
2461
+ * import { Effect, Stream } from "effect"
2462
+ *
2463
+ * // An infinite Stream of numbers starting from 1 and incrementing
2464
+ * const stream = Stream.iterate(1, (n) => n + 1)
2465
+ *
2466
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(10)))).then(console.log)
2467
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] }
2468
+ *
1899
2469
  * @since 2.0.0
1900
2470
  * @category constructors
1901
2471
  */
@@ -1904,6 +2474,14 @@ export const iterate: <A>(value: A, next: (value: A) => A) => Stream<A> = intern
1904
2474
  /**
1905
2475
  * Creates a stream from an sequence of values.
1906
2476
  *
2477
+ * @example
2478
+ * import { Effect, Stream } from "effect"
2479
+ *
2480
+ * const stream = Stream.make(1, 2, 3)
2481
+ *
2482
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2483
+ * // { _id: 'Chunk', values: [ 1, 2, 3 ] }
2484
+ *
1907
2485
  * @since 2.0.0
1908
2486
  * @category constructors
1909
2487
  */
@@ -1912,6 +2490,14 @@ export const make: <As extends Array<any>>(...as: As) => Stream<As[number]> = in
1912
2490
  /**
1913
2491
  * Transforms the elements of this stream using the supplied function.
1914
2492
  *
2493
+ * @example
2494
+ * import { Effect, Stream } from "effect"
2495
+ *
2496
+ * const stream = Stream.make(1, 2, 3).pipe(Stream.map((n) => n + 1))
2497
+ *
2498
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2499
+ * // { _id: 'Chunk', values: [ 2, 3, 4 ] }
2500
+ *
1915
2501
  * @since 2.0.0
1916
2502
  * @category mapping
1917
2503
  */
@@ -1923,6 +2509,18 @@ export const map: {
1923
2509
  /**
1924
2510
  * Statefully maps over the elements of this stream to produce new elements.
1925
2511
  *
2512
+ * @example
2513
+ * import { Effect, Stream } from "effect"
2514
+ *
2515
+ * const runningTotal = (stream: Stream.Stream<number>): Stream.Stream<number> =>
2516
+ * stream.pipe(Stream.mapAccum(0, (s, a) => [s + a, s + a]))
2517
+ *
2518
+ * // input: 0, 1, 2, 3, 4, 5, 6
2519
+ * // Effect.runPromise(Stream.runCollect(runningTotal(Stream.range(0, 6)))).then(
2520
+ * // console.log
2521
+ * // )
2522
+ * // { _id: "Chunk", values: [ 0, 1, 3, 6, 10, 15, 21 ] }
2523
+ *
1926
2524
  * @since 2.0.0
1927
2525
  * @category mapping
1928
2526
  */
@@ -1998,6 +2596,17 @@ export const mapChunksEffect: {
1998
2596
  * Maps each element to an iterable, and flattens the iterables into the
1999
2597
  * output of this stream.
2000
2598
  *
2599
+ * @example
2600
+ * import { Effect, Stream } from "effect"
2601
+ *
2602
+ * const numbers = Stream.make("1-2-3", "4-5", "6").pipe(
2603
+ * Stream.mapConcat((s) => s.split("-")),
2604
+ * Stream.map((s) => parseInt(s))
2605
+ * )
2606
+ *
2607
+ * // Effect.runPromise(Stream.runCollect(numbers)).then(console.log)
2608
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5, 6 ] }
2609
+ *
2001
2610
  * @since 2.0.0
2002
2611
  * @category mapping
2003
2612
  */
@@ -2055,6 +2664,16 @@ export const mapConcatEffect: {
2055
2664
  /**
2056
2665
  * Maps over elements of the stream with the specified effectful function.
2057
2666
  *
2667
+ * @example
2668
+ * import { Effect, Random, Stream } from "effect"
2669
+ *
2670
+ * const stream = Stream.make(10, 20, 30).pipe(
2671
+ * Stream.mapEffect((n) => Random.nextIntBetween(0, n))
2672
+ * )
2673
+ *
2674
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2675
+ * // Example Output: { _id: 'Chunk', values: [ 7, 19, 8 ] }
2676
+ *
2058
2677
  * @since 2.0.0
2059
2678
  * @category mapping
2060
2679
  */
@@ -2111,6 +2730,21 @@ export const mapErrorCause: {
2111
2730
  * New produced stream will terminate when both specified stream terminate if
2112
2731
  * no termination strategy is specified.
2113
2732
  *
2733
+ * @example
2734
+ * import { Effect, Schedule, Stream } from "effect"
2735
+ *
2736
+ * const s1 = Stream.make(1, 2, 3).pipe(
2737
+ * Stream.schedule(Schedule.spaced("100 millis"))
2738
+ * )
2739
+ * const s2 = Stream.make(4, 5, 6).pipe(
2740
+ * Stream.schedule(Schedule.spaced("200 millis"))
2741
+ * )
2742
+ *
2743
+ * const stream = Stream.merge(s1, s2)
2744
+ *
2745
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2746
+ * // { _id: 'Chunk', values: [ 1, 4, 2, 3, 5, 6 ] }
2747
+ *
2114
2748
  * @since 2.0.0
2115
2749
  * @category utils
2116
2750
  */
@@ -2157,6 +2791,24 @@ export const mergeAll: {
2157
2791
  * New produced stream will terminate when both specified stream terminate if
2158
2792
  * no termination strategy is specified.
2159
2793
  *
2794
+ * @example
2795
+ * import { Effect, Schedule, Stream } from "effect"
2796
+ *
2797
+ * const s1 = Stream.make("1", "2", "3").pipe(
2798
+ * Stream.schedule(Schedule.spaced("100 millis"))
2799
+ * )
2800
+ * const s2 = Stream.make(4.1, 5.3, 6.2).pipe(
2801
+ * Stream.schedule(Schedule.spaced("200 millis"))
2802
+ * )
2803
+ *
2804
+ * const stream = Stream.mergeWith(s1, s2, {
2805
+ * onSelf: (s) => parseInt(s),
2806
+ * onOther: (n) => Math.floor(n)
2807
+ * })
2808
+ *
2809
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2810
+ * // { _id: 'Chunk', values: [ 1, 4, 2, 3, 5, 6 ] }
2811
+ *
2160
2812
  * @since 2.0.0
2161
2813
  * @category utils
2162
2814
  */
@@ -2202,8 +2854,8 @@ export const mergeEither: {
2202
2854
  * @category utils
2203
2855
  */
2204
2856
  export const mergeLeft: {
2205
- <A2, E2, R2>(that: Stream<A2, E2, R2>): <A, E, R>(self: Stream<A, E, R>) => Stream<A, E2 | E, R2 | R>
2206
- <A, E, R, A2, E2, R2>(self: Stream<A, E, R>, that: Stream<A2, E2, R2>): Stream<A, E | E2, R | R2>
2857
+ <AR, ER, RR>(right: Stream<AR, ER, RR>): <AL, EL, RL>(left: Stream<AL, EL, RL>) => Stream<AL, ER | EL, RR | RL>
2858
+ <AL, EL, RL, AR, ER, RR>(left: Stream<AL, EL, RL>, right: Stream<AR, ER, RR>): Stream<AL, EL | ER, RL | RR>
2207
2859
  } = internal.mergeLeft
2208
2860
 
2209
2861
  /**
@@ -2214,8 +2866,8 @@ export const mergeLeft: {
2214
2866
  * @category utils
2215
2867
  */
2216
2868
  export const mergeRight: {
2217
- <A2, E2, R2>(that: Stream<A2, E2, R2>): <A, E, R>(self: Stream<A, E, R>) => Stream<A2, E2 | E, R2 | R>
2218
- <A, E, R, A2, E2, R2>(self: Stream<A, E, R>, that: Stream<A2, E2, R2>): Stream<A2, E | E2, R | R2>
2869
+ <AR, ER, RR>(right: Stream<AR, ER, RR>): <AL, EL, RL>(left: Stream<AL, EL, RL>) => Stream<AR, ER | EL, RR | RL>
2870
+ <AL, EL, RL, AR, ER, RR>(left: Stream<AL, EL, RL>, right: Stream<AR, ER, RR>): Stream<AR, EL | ER, RL | RR>
2219
2871
  } = internal.mergeRight
2220
2872
 
2221
2873
  /**
@@ -2380,6 +3032,17 @@ export const orElseSucceed: {
2380
3032
  * than the unfolding of the state. This is useful for embedding paginated
2381
3033
  * APIs, hence the name.
2382
3034
  *
3035
+ * @example
3036
+ * import { Effect, Option, Stream } from "effect"
3037
+ *
3038
+ * const stream = Stream.paginate(0, (n) => [
3039
+ * n,
3040
+ * n < 3 ? Option.some(n + 1) : Option.none()
3041
+ * ])
3042
+ *
3043
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3044
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3 ] }
3045
+ *
2383
3046
  * @since 2.0.0
2384
3047
  * @category constructors
2385
3048
  */
@@ -2430,6 +3093,25 @@ export const paginateEffect: <S, A, E, R>(
2430
3093
  * evaluated to false. The faster stream may advance by up to buffer elements
2431
3094
  * further than the slower one.
2432
3095
  *
3096
+ * @example
3097
+ * import { Effect, Stream } from "effect"
3098
+ *
3099
+ * const partition = Stream.range(1, 10).pipe(
3100
+ * Stream.partition((n) => n % 2 === 0, { bufferSize: 5 })
3101
+ * )
3102
+ *
3103
+ * const program = Effect.scoped(
3104
+ * Effect.gen(function*() {
3105
+ * const [evens, odds] = yield* partition
3106
+ * console.log(yield* Stream.runCollect(evens))
3107
+ * console.log(yield* Stream.runCollect(odds))
3108
+ * })
3109
+ * )
3110
+ *
3111
+ * // Effect.runPromise(program)
3112
+ * // { _id: 'Chunk', values: [ 2, 4, 6, 8, 10 ] }
3113
+ * // { _id: 'Chunk', values: [ 1, 3, 5, 7, 9 ] }
3114
+ *
2433
3115
  * @since 2.0.0
2434
3116
  * @category utils
2435
3117
  */
@@ -2462,6 +3144,28 @@ export const partition: {
2462
3144
  * Split a stream by an effectful predicate. The faster stream may advance by
2463
3145
  * up to buffer elements further than the slower one.
2464
3146
  *
3147
+ * @example
3148
+ * import { Effect, Either, Stream } from "effect"
3149
+ *
3150
+ * const partition = Stream.range(1, 9).pipe(
3151
+ * Stream.partitionEither(
3152
+ * (n) => Effect.succeed(n % 2 === 0 ? Either.left(n) : Either.right(n)),
3153
+ * { bufferSize: 5 }
3154
+ * )
3155
+ * )
3156
+ *
3157
+ * const program = Effect.scoped(
3158
+ * Effect.gen(function*() {
3159
+ * const [evens, odds] = yield* partition
3160
+ * console.log(yield* Stream.runCollect(evens))
3161
+ * console.log(yield* Stream.runCollect(odds))
3162
+ * })
3163
+ * )
3164
+ *
3165
+ * // Effect.runPromise(program)
3166
+ * // { _id: 'Chunk', values: [ 2, 4, 6, 8 ] }
3167
+ * // { _id: 'Chunk', values: [ 1, 3, 5, 7, 9 ] }
3168
+ *
2465
3169
  * @since 2.0.0
2466
3170
  * @category utils
2467
3171
  */
@@ -2664,9 +3368,52 @@ export const provideSomeLayer: {
2664
3368
  ): Stream<A, E | E2, RIn | Exclude<R, ROut>>
2665
3369
  } = internal.provideSomeLayer
2666
3370
 
3371
+ /**
3372
+ * Returns a stream that mirrors the first upstream to emit an item.
3373
+ * As soon as one of the upstream emits a first value, all the others are interrupted.
3374
+ * The resulting stream will forward all items from the "winning" source stream.
3375
+ * Any upstream failures will cause the returned stream to fail.
3376
+ *
3377
+ * @example
3378
+ * import { Stream, Schedule, Console, Effect } from "effect"
3379
+ *
3380
+ * const stream = Stream.raceAll(
3381
+ * Stream.fromSchedule(Schedule.spaced('1 millis')),
3382
+ * Stream.fromSchedule(Schedule.spaced('2 millis')),
3383
+ * Stream.fromSchedule(Schedule.spaced('4 millis')),
3384
+ * ).pipe(Stream.take(6), Stream.tap(Console.log))
3385
+ *
3386
+ * Effect.runPromise(Stream.runDrain(stream))
3387
+ * // Output each millisecond from the first stream, the rest streams are interrupted
3388
+ * // 0
3389
+ * // 1
3390
+ * // 2
3391
+ * // 3
3392
+ * // 4
3393
+ * // 5
3394
+ * @since 3.5.0
3395
+ * @category racing
3396
+ */
3397
+ export const raceAll: <S extends ReadonlyArray<Stream<any, any, any>>>(
3398
+ ...streams: S
3399
+ ) => Stream<
3400
+ Stream.Success<S[number]>,
3401
+ Stream.Error<S[number]>,
3402
+ Stream.Context<S[number]>
3403
+ > = internal.raceAll
3404
+
2667
3405
  /**
2668
3406
  * Constructs a stream from a range of integers, including both endpoints.
2669
3407
  *
3408
+ * @example
3409
+ * import { Effect, Stream } from "effect"
3410
+ *
3411
+ * // A Stream with a range of numbers from 1 to 5
3412
+ * const stream = Stream.range(1, 5)
3413
+ *
3414
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3415
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
3416
+ *
2670
3417
  * @since 2.0.0
2671
3418
  * @category constructors
2672
3419
  */
@@ -2714,6 +3461,14 @@ export const refineOrDieWith: {
2714
3461
  * Repeats the entire stream using the specified schedule. The stream will
2715
3462
  * execute normally, and then repeat again according to the provided schedule.
2716
3463
  *
3464
+ * @example
3465
+ * import { Effect, Schedule, Stream } from "effect"
3466
+ *
3467
+ * const stream = Stream.repeat(Stream.succeed(1), Schedule.forever)
3468
+ *
3469
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
3470
+ * // { _id: 'Chunk', values: [ 1, 1, 1, 1, 1 ] }
3471
+ *
2717
3472
  * @since 2.0.0
2718
3473
  * @category utils
2719
3474
  */
@@ -2726,6 +3481,14 @@ export const repeat: {
2726
3481
  * Creates a stream from an effect producing a value of type `A` which repeats
2727
3482
  * forever.
2728
3483
  *
3484
+ * @example
3485
+ * import { Effect, Random, Stream } from "effect"
3486
+ *
3487
+ * const stream = Stream.repeatEffect(Random.nextInt)
3488
+ *
3489
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
3490
+ * // Example Output: { _id: 'Chunk', values: [ 3891571149, 4239494205, 2352981603, 2339111046, 1488052210 ] }
3491
+ *
2729
3492
  * @since 2.0.0
2730
3493
  * @category constructors
2731
3494
  */
@@ -2756,6 +3519,22 @@ export const repeatEffectChunkOption: <A, E, R>(
2756
3519
  * Creates a stream from an effect producing values of type `A` until it fails
2757
3520
  * with `None`.
2758
3521
  *
3522
+ * @example
3523
+ * // In this example, we're draining an Iterator to create a stream from it
3524
+ * import { Stream, Effect, Option } from "effect"
3525
+ *
3526
+ * const drainIterator = <A>(it: Iterator<A>): Stream.Stream<A> =>
3527
+ * Stream.repeatEffectOption(
3528
+ * Effect.sync(() => it.next()).pipe(
3529
+ * Effect.andThen((res) => {
3530
+ * if (res.done) {
3531
+ * return Effect.fail(Option.none())
3532
+ * }
3533
+ * return Effect.succeed(res.value)
3534
+ * })
3535
+ * )
3536
+ * )
3537
+ *
2759
3538
  * @since 2.0.0
2760
3539
  * @category constructors
2761
3540
  */
@@ -2837,6 +3616,14 @@ export const repeatElementsWith: {
2837
3616
  /**
2838
3617
  * Repeats the provided value infinitely.
2839
3618
  *
3619
+ * @example
3620
+ * import { Effect, Stream } from "effect"
3621
+ *
3622
+ * const stream = Stream.repeatValue(0)
3623
+ *
3624
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
3625
+ * // { _id: 'Chunk', values: [ 0, 0, 0, 0, 0 ] }
3626
+ *
2840
3627
  * @since 2.0.0
2841
3628
  * @category constructors
2842
3629
  */
@@ -2896,7 +3683,7 @@ export const run: {
2896
3683
  <A, E, R, A2, E2, R2>(
2897
3684
  self: Stream<A, E, R>,
2898
3685
  sink: Sink.Sink<A2, A, unknown, E2, R2>
2899
- ): Effect.Effect<A2, E | E2, R | R2>
3686
+ ): Effect.Effect<A2, E | E2, Exclude<R | R2, Scope.Scope>>
2900
3687
  } = internal.run
2901
3688
 
2902
3689
  /**
@@ -2905,7 +3692,8 @@ export const run: {
2905
3692
  * @since 2.0.0
2906
3693
  * @category destructors
2907
3694
  */
2908
- export const runCollect: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<Chunk.Chunk<A>, E, R> = internal.runCollect
3695
+ export const runCollect: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<Chunk.Chunk<A>, E, Exclude<R, Scope.Scope>> =
3696
+ internal.runCollect
2909
3697
 
2910
3698
  /**
2911
3699
  * Runs the stream and emits the number of elements processed
@@ -2913,7 +3701,8 @@ export const runCollect: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<Chunk
2913
3701
  * @since 2.0.0
2914
3702
  * @category destructors
2915
3703
  */
2916
- export const runCount: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<number, E, R> = internal.runCount
3704
+ export const runCount: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<number, E, Exclude<R, Scope.Scope>> =
3705
+ internal.runCount
2917
3706
 
2918
3707
  /**
2919
3708
  * Runs the stream only for its effects. The emitted elements are discarded.
@@ -2921,7 +3710,8 @@ export const runCount: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<number,
2921
3710
  * @since 2.0.0
2922
3711
  * @category destructors
2923
3712
  */
2924
- export const runDrain: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<void, E, R> = internal.runDrain
3713
+ export const runDrain: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<void, E, Exclude<R, Scope.Scope>> =
3714
+ internal.runDrain
2925
3715
 
2926
3716
  /**
2927
3717
  * Executes a pure fold over the stream of values - reduces all elements in
@@ -2931,8 +3721,8 @@ export const runDrain: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<void, E
2931
3721
  * @category destructors
2932
3722
  */
2933
3723
  export const runFold: {
2934
- <S, A>(s: S, f: (s: S, a: A) => S): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E, R>
2935
- <A, E, R, S>(self: Stream<A, E, R>, s: S, f: (s: S, a: A) => S): Effect.Effect<S, E, R>
3724
+ <S, A>(s: S, f: (s: S, a: A) => S): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E, Exclude<R, Scope.Scope>>
3725
+ <A, E, R, S>(self: Stream<A, E, R>, s: S, f: (s: S, a: A) => S): Effect.Effect<S, E, Exclude<R, Scope.Scope>>
2936
3726
  } = internal.runFold
2937
3727
 
2938
3728
  /**
@@ -2945,12 +3735,12 @@ export const runFoldEffect: {
2945
3735
  <S, A, E2, R2>(
2946
3736
  s: S,
2947
3737
  f: (s: S, a: A) => Effect.Effect<S, E2, R2>
2948
- ): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E2 | E, R2 | R>
3738
+ ): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E2 | E, Exclude<R | R2, Scope.Scope>>
2949
3739
  <A, E, R, S, E2, R2>(
2950
3740
  self: Stream<A, E, R>,
2951
3741
  s: S,
2952
3742
  f: (s: S, a: A) => Effect.Effect<S, E2, R2>
2953
- ): Effect.Effect<S, E | E2, R | R2>
3743
+ ): Effect.Effect<S, E | E2, Exclude<R | R2, Scope.Scope>>
2954
3744
  } = internal.runFoldEffect
2955
3745
 
2956
3746
  /**
@@ -2992,8 +3782,17 @@ export const runFoldScopedEffect: {
2992
3782
  * @category destructors
2993
3783
  */
2994
3784
  export const runFoldWhile: {
2995
- <S, A>(s: S, cont: Predicate<S>, f: (s: S, a: A) => S): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E, R>
2996
- <A, E, R, S>(self: Stream<A, E, R>, s: S, cont: Predicate<S>, f: (s: S, a: A) => S): Effect.Effect<S, E, R>
3785
+ <S, A>(
3786
+ s: S,
3787
+ cont: Predicate<S>,
3788
+ f: (s: S, a: A) => S
3789
+ ): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E, Exclude<R, Scope.Scope>>
3790
+ <A, E, R, S>(
3791
+ self: Stream<A, E, R>,
3792
+ s: S,
3793
+ cont: Predicate<S>,
3794
+ f: (s: S, a: A) => S
3795
+ ): Effect.Effect<S, E, Exclude<R, Scope.Scope>>
2997
3796
  } = internal.runFoldWhile
2998
3797
 
2999
3798
  /**
@@ -3008,13 +3807,13 @@ export const runFoldWhileEffect: {
3008
3807
  s: S,
3009
3808
  cont: Predicate<S>,
3010
3809
  f: (s: S, a: A) => Effect.Effect<S, E2, R2>
3011
- ): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E2 | E, R2 | R>
3810
+ ): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E2 | E, Exclude<R | R2, Scope.Scope>>
3012
3811
  <A, E, R, S, E2, R2>(
3013
3812
  self: Stream<A, E, R>,
3014
3813
  s: S,
3015
3814
  cont: Predicate<S>,
3016
3815
  f: (s: S, a: A) => Effect.Effect<S, E2, R2>
3017
- ): Effect.Effect<S, E | E2, R | R2>
3816
+ ): Effect.Effect<S, E | E2, Exclude<R | R2, Scope.Scope>>
3018
3817
  } = internal.runFoldWhileEffect
3019
3818
 
3020
3819
  /**
@@ -3276,6 +4075,14 @@ export const runSum: <E, R>(self: Stream<number, E, R>) => Effect.Effect<number,
3276
4075
  * Statefully maps over the elements of this stream to produce all
3277
4076
  * intermediate results of type `S` given an initial S.
3278
4077
  *
4078
+ * @example
4079
+ * import { Effect, Stream } from "effect"
4080
+ *
4081
+ * const stream = Stream.range(1, 6).pipe(Stream.scan(0, (a, b) => a + b))
4082
+ *
4083
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
4084
+ * // { _id: 'Chunk', values: [ 0, 1, 3, 6, 10, 15, 21 ] }
4085
+ *
3279
4086
  * @since 2.0.0
3280
4087
  * @category utils
3281
4088
  */
@@ -3372,6 +4179,24 @@ export const scheduleWith: {
3372
4179
  /**
3373
4180
  * Creates a single-valued stream from a scoped resource.
3374
4181
  *
4182
+ * @example
4183
+ * import { Console, Effect, Stream } from "effect"
4184
+ *
4185
+ * // Creating a single-valued stream from a scoped resource
4186
+ * const stream = Stream.scoped(
4187
+ * Effect.acquireUseRelease(
4188
+ * Console.log("acquire"),
4189
+ * () => Console.log("use"),
4190
+ * () => Console.log("release")
4191
+ * )
4192
+ * )
4193
+ *
4194
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
4195
+ * // acquire
4196
+ * // use
4197
+ * // release
4198
+ * // { _id: 'Chunk', values: [ undefined ] }
4199
+ *
3375
4200
  * @since 2.0.0
3376
4201
  * @category constructors
3377
4202
  */
@@ -3488,6 +4313,15 @@ export const splitLines: <E, R>(self: Stream<string, E, R>) => Stream<string, E,
3488
4313
  /**
3489
4314
  * Creates a single-valued pure stream.
3490
4315
  *
4316
+ * @example
4317
+ * import { Effect, Stream } from "effect"
4318
+ *
4319
+ * // A Stream with a single number
4320
+ * const stream = Stream.succeed(3)
4321
+ *
4322
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
4323
+ * // { _id: 'Chunk', values: [ 3 ] }
4324
+ *
3491
4325
  * @since 2.0.0
3492
4326
  * @category constructors
3493
4327
  */
@@ -3512,6 +4346,14 @@ export const suspend: <A, E, R>(stream: LazyArg<Stream<A, E, R>>) => Stream<A, E
3512
4346
  /**
3513
4347
  * Takes the specified number of elements from this stream.
3514
4348
  *
4349
+ * @example
4350
+ * import { Effect, Stream } from "effect"
4351
+ *
4352
+ * const stream = Stream.take(Stream.iterate(0, (n) => n + 1), 5)
4353
+ *
4354
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
4355
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
4356
+ *
3515
4357
  * @since 2.0.0
3516
4358
  * @category utils
3517
4359
  */
@@ -3523,6 +4365,14 @@ export const take: {
3523
4365
  /**
3524
4366
  * Takes the last specified number of elements from this stream.
3525
4367
  *
4368
+ * @example
4369
+ * import { Effect, Stream } from "effect"
4370
+ *
4371
+ * const stream = Stream.takeRight(Stream.make(1, 2, 3, 4, 5, 6), 3)
4372
+ *
4373
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
4374
+ * // { _id: 'Chunk', values: [ 4, 5, 6 ] }
4375
+ *
3526
4376
  * @since 2.0.0
3527
4377
  * @category utils
3528
4378
  */
@@ -3535,6 +4385,14 @@ export const takeRight: {
3535
4385
  * Takes all elements of the stream until the specified predicate evaluates to
3536
4386
  * `true`.
3537
4387
  *
4388
+ * @example
4389
+ * import { Effect, Stream } from "effect"
4390
+ *
4391
+ * const stream = Stream.takeUntil(Stream.iterate(0, (n) => n + 1), (n) => n === 4)
4392
+ *
4393
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
4394
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
4395
+ *
3538
4396
  * @since 2.0.0
3539
4397
  * @category utils
3540
4398
  */
@@ -3564,6 +4422,14 @@ export const takeUntilEffect: {
3564
4422
  * Takes all elements of the stream for as long as the specified predicate
3565
4423
  * evaluates to `true`.
3566
4424
  *
4425
+ * @example
4426
+ * import { Effect, Stream } from "effect"
4427
+ *
4428
+ * const stream = Stream.takeWhile(Stream.iterate(0, (n) => n + 1), (n) => n < 5)
4429
+ *
4430
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
4431
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
4432
+ *
3567
4433
  * @since 2.0.0
3568
4434
  * @category utils
3569
4435
  */
@@ -3577,6 +4443,24 @@ export const takeWhile: {
3577
4443
  /**
3578
4444
  * Adds an effect to consumption of every element of the stream.
3579
4445
  *
4446
+ * @example
4447
+ * import { Console, Effect, Stream } from "effect"
4448
+ *
4449
+ * const stream = Stream.make(1, 2, 3).pipe(
4450
+ * Stream.tap((n) => Console.log(`before mapping: ${n}`)),
4451
+ * Stream.map((n) => n * 2),
4452
+ * Stream.tap((n) => Console.log(`after mapping: ${n}`))
4453
+ * )
4454
+ *
4455
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
4456
+ * // before mapping: 1
4457
+ * // after mapping: 2
4458
+ * // before mapping: 2
4459
+ * // after mapping: 4
4460
+ * // before mapping: 3
4461
+ * // after mapping: 6
4462
+ * // { _id: 'Chunk', values: [ 2, 4, 6 ] }
4463
+ *
3580
4464
  * @since 2.0.0
3581
4465
  * @category sequencing
3582
4466
  */
@@ -3657,7 +4541,7 @@ export const tapSink: {
3657
4541
  * parameters using the token bucket algorithm. Allows for burst in the
3658
4542
  * processing of elements by allowing the token bucket to accumulate tokens up
3659
4543
  * to a `units + burst` threshold. The weight of each chunk is determined by
3660
- * the `costFn` function.
4544
+ * the `cost` function.
3661
4545
  *
3662
4546
  * If using the "enforce" strategy, chunks that do not meet the bandwidth
3663
4547
  * constraints are dropped. If using the "shape" strategy, chunks are delayed
@@ -3665,6 +4549,43 @@ export const tapSink: {
3665
4549
  *
3666
4550
  * Defaults to the "shape" strategy.
3667
4551
  *
4552
+ * @example
4553
+ * import { Chunk, Effect, Schedule, Stream } from "effect"
4554
+ *
4555
+ * let last = Date.now()
4556
+ * const log = (message: string) =>
4557
+ * Effect.sync(() => {
4558
+ * const end = Date.now()
4559
+ * console.log(`${message} after ${end - last}ms`)
4560
+ * last = end
4561
+ * })
4562
+ *
4563
+ * const stream = Stream.fromSchedule(Schedule.spaced("50 millis")).pipe(
4564
+ * Stream.take(6),
4565
+ * Stream.tap((n) => log(`Received ${n}`)),
4566
+ * Stream.throttle({
4567
+ * cost: Chunk.size,
4568
+ * duration: "100 millis",
4569
+ * units: 1
4570
+ * }),
4571
+ * Stream.tap((n) => log(`> Emitted ${n}`))
4572
+ * )
4573
+ *
4574
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
4575
+ * // Received 0 after 56ms
4576
+ * // > Emitted 0 after 0ms
4577
+ * // Received 1 after 52ms
4578
+ * // > Emitted 1 after 48ms
4579
+ * // Received 2 after 52ms
4580
+ * // > Emitted 2 after 49ms
4581
+ * // Received 3 after 52ms
4582
+ * // > Emitted 3 after 48ms
4583
+ * // Received 4 after 52ms
4584
+ * // > Emitted 4 after 47ms
4585
+ * // Received 5 after 52ms
4586
+ * // > Emitted 5 after 49ms
4587
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4, 5 ] }
4588
+ *
3668
4589
  * @since 2.0.0
3669
4590
  * @category utils
3670
4591
  */
@@ -3731,6 +4652,27 @@ export const throttleEffect: {
3731
4652
  /**
3732
4653
  * A stream that emits void values spaced by the specified duration.
3733
4654
  *
4655
+ * @example
4656
+ * import { Effect, Stream } from "effect"
4657
+ *
4658
+ * let last = Date.now()
4659
+ * const log = (message: string) =>
4660
+ * Effect.sync(() => {
4661
+ * const end = Date.now()
4662
+ * console.log(`${message} after ${end - last}ms`)
4663
+ * last = end
4664
+ * })
4665
+ *
4666
+ * const stream = Stream.tick("1 seconds").pipe(Stream.tap(() => log("tick")))
4667
+ *
4668
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
4669
+ * // tick after 4ms
4670
+ * // tick after 1003ms
4671
+ * // tick after 1001ms
4672
+ * // tick after 1002ms
4673
+ * // tick after 1002ms
4674
+ * // { _id: 'Chunk', values: [ undefined, undefined, undefined, undefined, undefined ] }
4675
+ *
3734
4676
  * @since 2.0.0
3735
4677
  * @category constructors
3736
4678
  */
@@ -3820,6 +4762,32 @@ export const toPubSub: {
3820
4762
  * finished, or with Some error if it fails, otherwise it returns a chunk of
3821
4763
  * the stream's output.
3822
4764
  *
4765
+ * @example
4766
+ * import { Effect, Stream } from "effect"
4767
+ *
4768
+ * // Simulate a chunked stream
4769
+ * const stream = Stream.fromIterable([1, 2, 3, 4, 5]).pipe(Stream.rechunk(2))
4770
+ *
4771
+ * const program = Effect.gen(function*() {
4772
+ * // Create an effect to get data chunks from the stream
4773
+ * const getChunk = yield* Stream.toPull(stream)
4774
+ *
4775
+ * // Continuously fetch and process chunks
4776
+ * while (true) {
4777
+ * const chunk = yield* getChunk
4778
+ * console.log(chunk)
4779
+ * }
4780
+ * })
4781
+ *
4782
+ * // Effect.runPromise(Effect.scoped(program)).then(console.log, console.error)
4783
+ * // { _id: 'Chunk', values: [ 1, 2 ] }
4784
+ * // { _id: 'Chunk', values: [ 3, 4 ] }
4785
+ * // { _id: 'Chunk', values: [ 5 ] }
4786
+ * // (FiberFailure) Error: {
4787
+ * // "_id": "Option",
4788
+ * // "_tag": "None"
4789
+ * // }
4790
+ *
3823
4791
  * @since 2.0.0
3824
4792
  * @category destructors
3825
4793
  */
@@ -3947,6 +4915,14 @@ export const transduce: {
3947
4915
  /**
3948
4916
  * Creates a stream by peeling off the "layers" of a value of type `S`.
3949
4917
  *
4918
+ * @example
4919
+ * import { Effect, Option, Stream } from "effect"
4920
+ *
4921
+ * const stream = Stream.unfold(1, (n) => Option.some([n, n + 1]))
4922
+ *
4923
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
4924
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
4925
+ *
3950
4926
  * @since 2.0.0
3951
4927
  * @category constructors
3952
4928
  */
@@ -3979,6 +4955,17 @@ export const unfoldChunkEffect: <S, A, E, R>(
3979
4955
  * Creates a stream by effectfully peeling off the "layers" of a value of type
3980
4956
  * `S`.
3981
4957
  *
4958
+ * @example
4959
+ * import { Effect, Option, Random, Stream } from "effect"
4960
+ *
4961
+ * const stream = Stream.unfoldEffect(1, (n) =>
4962
+ * Random.nextBoolean.pipe(
4963
+ * Effect.map((b) => (b ? Option.some([n, -n]) : Option.some([n, n])))
4964
+ * ))
4965
+ *
4966
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
4967
+ * // { _id: 'Chunk', values: [ 1, -1, -1, -1, -1 ] }
4968
+ *
3982
4969
  * @since 2.0.0
3983
4970
  * @category constructors
3984
4971
  */
@@ -3992,6 +4979,14 @@ export {
3992
4979
  /**
3993
4980
  * A stream that contains a single `void` value.
3994
4981
  *
4982
+ * @example
4983
+ * import { Effect, Stream } from "effect"
4984
+ *
4985
+ * const stream = Stream.void
4986
+ *
4987
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
4988
+ * // { _id: 'Chunk', values: [ undefined ] }
4989
+ *
3995
4990
  * @since 2.0.0
3996
4991
  * @category constructors
3997
4992
  */
@@ -4112,6 +5107,18 @@ export const withSpan: {
4112
5107
  *
4113
5108
  * The new stream will end when one of the sides ends.
4114
5109
  *
5110
+ * @example
5111
+ * import { Effect, Stream } from "effect"
5112
+ *
5113
+ * // We create two streams and zip them together.
5114
+ * const stream = Stream.zip(
5115
+ * Stream.make(1, 2, 3, 4, 5, 6),
5116
+ * Stream.make("a", "b", "c")
5117
+ * )
5118
+ *
5119
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
5120
+ * // { _id: 'Chunk', values: [ [ 1, 'a' ], [ 2, 'b' ], [ 3, 'c' ] ] }
5121
+ *
4115
5122
  * @since 2.0.0
4116
5123
  * @category zipping
4117
5124
  */
@@ -4146,6 +5153,18 @@ export const zipFlatten: {
4146
5153
  * The defaults `defaultLeft` and `defaultRight` will be used if the streams
4147
5154
  * have different lengths and one of the streams has ended before the other.
4148
5155
  *
5156
+ * @example
5157
+ * import { Effect, Stream } from "effect"
5158
+ *
5159
+ * const stream = Stream.zipAll(Stream.make(1, 2, 3, 4, 5, 6), {
5160
+ * other: Stream.make("a", "b", "c"),
5161
+ * defaultSelf: 0,
5162
+ * defaultOther: "x"
5163
+ * })
5164
+ *
5165
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
5166
+ * // { _id: "Chunk", values: [ [ 1, "a" ], [ 2, "b" ], [ 3, "c" ], [ 4, "x" ], [ 5, "x" ], [ 6, "x" ] ] }
5167
+ *
4149
5168
  * @since 2.0.0
4150
5169
  * @category zipping
4151
5170
  */
@@ -4331,6 +5350,19 @@ export const zipAllSortedByKeyWith: {
4331
5350
  * The functions `left` and `right` will be used if the streams have different
4332
5351
  * lengths and one of the streams has ended before the other.
4333
5352
  *
5353
+ * @example
5354
+ * import { Effect, Stream } from "effect"
5355
+ *
5356
+ * const stream = Stream.zipAllWith(Stream.make(1, 2, 3, 4, 5, 6), {
5357
+ * other: Stream.make("a", "b", "c"),
5358
+ * onSelf: (n) => [n, "x"],
5359
+ * onOther: (s) => [0, s],
5360
+ * onBoth: (n, s) => [n - s.length, s]
5361
+ * })
5362
+ *
5363
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
5364
+ * // { _id: "Chunk", values: [ [ 0, "a" ], [ 1, "b" ], [ 2, "c" ], [ 4, "x" ], [ 5, "x" ], [ 6, "x" ] ] }
5365
+ *
4334
5366
  * @since 2.0.0
4335
5367
  * @category zipping
4336
5368
  */
@@ -4363,6 +5395,22 @@ export const zipAllWith: {
4363
5395
  * that emitted elements that are not the last value in chunks will never be
4364
5396
  * used for zipping.
4365
5397
  *
5398
+ * @example
5399
+ * import { Effect, Schedule, Stream } from "effect"
5400
+ *
5401
+ * const s1 = Stream.make(1, 2, 3).pipe(
5402
+ * Stream.schedule(Schedule.spaced("1 second"))
5403
+ * )
5404
+ *
5405
+ * const s2 = Stream.make("a", "b", "c", "d").pipe(
5406
+ * Stream.schedule(Schedule.spaced("500 millis"))
5407
+ * )
5408
+ *
5409
+ * const stream = Stream.zipLatest(s1, s2)
5410
+ *
5411
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
5412
+ * // { _id: "Chunk", values: [ [ 1, "a" ], [ 1, "b" ], [ 2, "b" ], [ 2, "c" ], [ 2, "d" ], [ 3, "d" ] ] }
5413
+ *
4366
5414
  * @since 2.0.0
4367
5415
  * @category zipping
4368
5416
  */
@@ -4388,7 +5436,7 @@ export const zipLatest: {
4388
5436
  * Stream.fromSchedule(Schedule.spaced('4 millis')),
4389
5437
  * ).pipe(Stream.take(6), Stream.tap(Console.log))
4390
5438
  *
4391
- * Effect.runPromise(Stream.runDrain(stream))
5439
+ * // Effect.runPromise(Stream.runDrain(stream))
4392
5440
  * // Output:
4393
5441
  * // [ 0, 0, 0 ]
4394
5442
  * // [ 1, 0, 0 ]
@@ -4468,6 +5516,19 @@ export const zipRight: {
4468
5516
  *
4469
5517
  * The new stream will end when one of the sides ends.
4470
5518
  *
5519
+ * @example
5520
+ * import { Effect, Stream } from "effect"
5521
+ *
5522
+ * // We create two streams and zip them with custom logic.
5523
+ * const stream = Stream.zipWith(
5524
+ * Stream.make(1, 2, 3, 4, 5, 6),
5525
+ * Stream.make("a", "b", "c"),
5526
+ * (n, s) => [n - s.length, s]
5527
+ * )
5528
+ *
5529
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
5530
+ * // { _id: 'Chunk', values: [ [ 0, 'a' ], [ 1, 'b' ], [ 2, 'c' ] ] }
5531
+ *
4471
5532
  * @since 2.0.0
4472
5533
  * @category zipping
4473
5534
  */
@@ -4513,6 +5574,19 @@ export const zipWithChunks: {
4513
5574
  /**
4514
5575
  * Zips each element with the next element if present.
4515
5576
  *
5577
+ * @example
5578
+ * import { Chunk, Effect, Stream } from "effect"
5579
+ *
5580
+ * const stream = Stream.zipWithNext(Stream.make(1, 2, 3, 4))
5581
+ *
5582
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
5583
+ * // [
5584
+ * // [ 1, { _id: 'Option', _tag: 'Some', value: 2 } ],
5585
+ * // [ 2, { _id: 'Option', _tag: 'Some', value: 3 } ],
5586
+ * // [ 3, { _id: 'Option', _tag: 'Some', value: 4 } ],
5587
+ * // [ 4, { _id: 'Option', _tag: 'None' } ]
5588
+ * // ]
5589
+ *
4516
5590
  * @since 2.0.0
4517
5591
  * @category zipping
4518
5592
  */
@@ -4522,6 +5596,19 @@ export const zipWithNext: <A, E, R>(self: Stream<A, E, R>) => Stream<[A, Option.
4522
5596
  * Zips each element with the previous element. Initially accompanied by
4523
5597
  * `None`.
4524
5598
  *
5599
+ * @example
5600
+ * import { Chunk, Effect, Stream } from "effect"
5601
+ *
5602
+ * const stream = Stream.zipWithPrevious(Stream.make(1, 2, 3, 4))
5603
+ *
5604
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
5605
+ * // [
5606
+ * // [ { _id: 'Option', _tag: 'None' }, 1 ],
5607
+ * // [ { _id: 'Option', _tag: 'Some', value: 1 }, 2 ],
5608
+ * // [ { _id: 'Option', _tag: 'Some', value: 2 }, 3 ],
5609
+ * // [ { _id: 'Option', _tag: 'Some', value: 3 }, 4 ]
5610
+ * // ]
5611
+ *
4525
5612
  * @since 2.0.0
4526
5613
  * @category zipping
4527
5614
  */
@@ -4531,6 +5618,35 @@ export const zipWithPrevious: <A, E, R>(self: Stream<A, E, R>) => Stream<[Option
4531
5618
  /**
4532
5619
  * Zips each element with both the previous and next element.
4533
5620
  *
5621
+ * @example
5622
+ * import { Chunk, Effect, Stream } from "effect"
5623
+ *
5624
+ * const stream = Stream.zipWithPreviousAndNext(Stream.make(1, 2, 3, 4))
5625
+ *
5626
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
5627
+ * // [
5628
+ * // [
5629
+ * // { _id: 'Option', _tag: 'None' },
5630
+ * // 1,
5631
+ * // { _id: 'Option', _tag: 'Some', value: 2 }
5632
+ * // ],
5633
+ * // [
5634
+ * // { _id: 'Option', _tag: 'Some', value: 1 },
5635
+ * // 2,
5636
+ * // { _id: 'Option', _tag: 'Some', value: 3 }
5637
+ * // ],
5638
+ * // [
5639
+ * // { _id: 'Option', _tag: 'Some', value: 2 },
5640
+ * // 3,
5641
+ * // { _id: 'Option', _tag: 'Some', value: 4 }
5642
+ * // ],
5643
+ * // [
5644
+ * // { _id: 'Option', _tag: 'Some', value: 3 },
5645
+ * // 4,
5646
+ * // { _id: 'Option', _tag: 'None' }
5647
+ * // ]
5648
+ * // ]
5649
+ *
4534
5650
  * @since 2.0.0
4535
5651
  * @category zipping
4536
5652
  */
@@ -4541,6 +5657,19 @@ export const zipWithPreviousAndNext: <A, E, R>(
4541
5657
  /**
4542
5658
  * Zips this stream together with the index of elements.
4543
5659
  *
5660
+ * @example
5661
+ * import { Effect, Stream } from "effect"
5662
+ *
5663
+ * const stream = Stream.make("Mary", "James", "Robert", "Patricia")
5664
+ *
5665
+ * const indexedStream = Stream.zipWithIndex(stream)
5666
+ *
5667
+ * // Effect.runPromise(Stream.runCollect(indexedStream)).then(console.log)
5668
+ * // {
5669
+ * // _id: 'Chunk',
5670
+ * // values: [ [ 'Mary', 0 ], [ 'James', 1 ], [ 'Robert', 2 ], [ 'Patricia', 3 ] ]
5671
+ * // }
5672
+ *
4544
5673
  * @since 2.0.0
4545
5674
  * @category zipping
4546
5675
  */