effect 3.4.8 → 3.4.9

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 (584) hide show
  1. package/dist/cjs/Array.js +14 -37
  2. package/dist/cjs/Array.js.map +1 -1
  3. package/dist/cjs/BigDecimal.js +11 -34
  4. package/dist/cjs/BigDecimal.js.map +1 -1
  5. package/dist/cjs/BigInt.js +7 -30
  6. package/dist/cjs/BigInt.js.map +1 -1
  7. package/dist/cjs/Boolean.js +6 -29
  8. package/dist/cjs/Boolean.js.map +1 -1
  9. package/dist/cjs/Brand.js +6 -29
  10. package/dist/cjs/Brand.js.map +1 -1
  11. package/dist/cjs/Cache.js +3 -26
  12. package/dist/cjs/Cache.js.map +1 -1
  13. package/dist/cjs/Cause.js +4 -27
  14. package/dist/cjs/Cause.js.map +1 -1
  15. package/dist/cjs/Channel.js +6 -29
  16. package/dist/cjs/Channel.js.map +1 -1
  17. package/dist/cjs/ChildExecutorDecision.js +3 -26
  18. package/dist/cjs/ChildExecutorDecision.js.map +1 -1
  19. package/dist/cjs/Chunk.js +12 -35
  20. package/dist/cjs/Chunk.js.map +1 -1
  21. package/dist/cjs/Clock.js +4 -27
  22. package/dist/cjs/Clock.js.map +1 -1
  23. package/dist/cjs/Config.js +3 -26
  24. package/dist/cjs/Config.js.map +1 -1
  25. package/dist/cjs/ConfigError.js +3 -26
  26. package/dist/cjs/ConfigError.js.map +1 -1
  27. package/dist/cjs/ConfigProvider.js +3 -26
  28. package/dist/cjs/ConfigProvider.js.map +1 -1
  29. package/dist/cjs/ConfigProviderPathPatch.js +3 -26
  30. package/dist/cjs/ConfigProviderPathPatch.js.map +1 -1
  31. package/dist/cjs/Console.js +4 -27
  32. package/dist/cjs/Console.js.map +1 -1
  33. package/dist/cjs/Context.js +3 -26
  34. package/dist/cjs/Context.js.map +1 -1
  35. package/dist/cjs/Cron.js +13 -36
  36. package/dist/cjs/Cron.js.map +1 -1
  37. package/dist/cjs/Data.js +6 -29
  38. package/dist/cjs/Data.js.map +1 -1
  39. package/dist/cjs/DefaultServices.js +3 -26
  40. package/dist/cjs/DefaultServices.js.map +1 -1
  41. package/dist/cjs/Deferred.js +4 -27
  42. package/dist/cjs/Deferred.js.map +1 -1
  43. package/dist/cjs/Differ.js +10 -33
  44. package/dist/cjs/Differ.js.map +1 -1
  45. package/dist/cjs/Duration.js +10 -33
  46. package/dist/cjs/Duration.js.map +1 -1
  47. package/dist/cjs/Effect.js +16 -39
  48. package/dist/cjs/Effect.js.map +1 -1
  49. package/dist/cjs/Effectable.js +3 -26
  50. package/dist/cjs/Effectable.js.map +1 -1
  51. package/dist/cjs/Either.js +8 -31
  52. package/dist/cjs/Either.js.map +1 -1
  53. package/dist/cjs/Encoding.js +7 -30
  54. package/dist/cjs/Encoding.js.map +1 -1
  55. package/dist/cjs/Equal.js +5 -28
  56. package/dist/cjs/Equal.js.map +1 -1
  57. package/dist/cjs/Equivalence.js +1 -1
  58. package/dist/cjs/Equivalence.js.map +1 -1
  59. package/dist/cjs/ExecutionStrategy.js +3 -26
  60. package/dist/cjs/ExecutionStrategy.js.map +1 -1
  61. package/dist/cjs/Exit.js +3 -26
  62. package/dist/cjs/Exit.js.map +1 -1
  63. package/dist/cjs/Fiber.js +6 -29
  64. package/dist/cjs/Fiber.js.map +1 -1
  65. package/dist/cjs/FiberHandle.js +15 -38
  66. package/dist/cjs/FiberHandle.js.map +1 -1
  67. package/dist/cjs/FiberId.js +3 -26
  68. package/dist/cjs/FiberId.js.map +1 -1
  69. package/dist/cjs/FiberMap.js +17 -40
  70. package/dist/cjs/FiberMap.js.map +1 -1
  71. package/dist/cjs/FiberRef.js +6 -29
  72. package/dist/cjs/FiberRef.js.map +1 -1
  73. package/dist/cjs/FiberRefs.js +3 -26
  74. package/dist/cjs/FiberRefs.js.map +1 -1
  75. package/dist/cjs/FiberRefsPatch.js +3 -26
  76. package/dist/cjs/FiberRefsPatch.js.map +1 -1
  77. package/dist/cjs/FiberSet.js +16 -39
  78. package/dist/cjs/FiberSet.js.map +1 -1
  79. package/dist/cjs/FiberStatus.js +3 -26
  80. package/dist/cjs/FiberStatus.js.map +1 -1
  81. package/dist/cjs/GlobalValue.js +3 -26
  82. package/dist/cjs/GlobalValue.js.map +1 -1
  83. package/dist/cjs/GroupBy.js +3 -26
  84. package/dist/cjs/GroupBy.js.map +1 -1
  85. package/dist/cjs/Hash.js +4 -4
  86. package/dist/cjs/Hash.js.map +1 -1
  87. package/dist/cjs/HashMap.js +4 -27
  88. package/dist/cjs/HashMap.js.map +1 -1
  89. package/dist/cjs/HashSet.js +3 -26
  90. package/dist/cjs/HashSet.js.map +1 -1
  91. package/dist/cjs/Inspectable.js +1 -1
  92. package/dist/cjs/Inspectable.js.map +1 -1
  93. package/dist/cjs/Iterable.js +8 -31
  94. package/dist/cjs/Iterable.js.map +1 -1
  95. package/dist/cjs/KeyedPool.js +3 -26
  96. package/dist/cjs/KeyedPool.js.map +1 -1
  97. package/dist/cjs/Layer.js +11 -34
  98. package/dist/cjs/Layer.js.map +1 -1
  99. package/dist/cjs/List.js +13 -36
  100. package/dist/cjs/List.js.map +1 -1
  101. package/dist/cjs/LogLevel.js +6 -29
  102. package/dist/cjs/LogLevel.js.map +1 -1
  103. package/dist/cjs/LogSpan.js +3 -26
  104. package/dist/cjs/LogSpan.js.map +1 -1
  105. package/dist/cjs/Logger.js +6 -29
  106. package/dist/cjs/Logger.js.map +1 -1
  107. package/dist/cjs/ManagedRuntime.js +3 -26
  108. package/dist/cjs/ManagedRuntime.js.map +1 -1
  109. package/dist/cjs/Match.js +4 -27
  110. package/dist/cjs/Match.js.map +1 -1
  111. package/dist/cjs/MergeDecision.js +3 -26
  112. package/dist/cjs/MergeDecision.js.map +1 -1
  113. package/dist/cjs/MergeState.js +3 -26
  114. package/dist/cjs/MergeState.js.map +1 -1
  115. package/dist/cjs/MergeStrategy.js +3 -26
  116. package/dist/cjs/MergeStrategy.js.map +1 -1
  117. package/dist/cjs/Metric.js +4 -27
  118. package/dist/cjs/Metric.js.map +1 -1
  119. package/dist/cjs/MetricBoundaries.js +3 -26
  120. package/dist/cjs/MetricBoundaries.js.map +1 -1
  121. package/dist/cjs/MetricHook.js +3 -26
  122. package/dist/cjs/MetricHook.js.map +1 -1
  123. package/dist/cjs/MetricKey.js +3 -26
  124. package/dist/cjs/MetricKey.js.map +1 -1
  125. package/dist/cjs/MetricKeyType.js +3 -26
  126. package/dist/cjs/MetricKeyType.js.map +1 -1
  127. package/dist/cjs/MetricLabel.js +3 -26
  128. package/dist/cjs/MetricLabel.js.map +1 -1
  129. package/dist/cjs/MetricPair.js +3 -26
  130. package/dist/cjs/MetricPair.js.map +1 -1
  131. package/dist/cjs/MetricPolling.js +3 -26
  132. package/dist/cjs/MetricPolling.js.map +1 -1
  133. package/dist/cjs/MetricRegistry.js +3 -26
  134. package/dist/cjs/MetricRegistry.js.map +1 -1
  135. package/dist/cjs/MetricState.js +3 -26
  136. package/dist/cjs/MetricState.js.map +1 -1
  137. package/dist/cjs/Micro.js +15 -38
  138. package/dist/cjs/Micro.js.map +1 -1
  139. package/dist/cjs/ModuleVersion.js +3 -26
  140. package/dist/cjs/ModuleVersion.js.map +1 -1
  141. package/dist/cjs/MutableHashMap.js +8 -31
  142. package/dist/cjs/MutableHashMap.js.map +1 -1
  143. package/dist/cjs/MutableHashSet.js +6 -29
  144. package/dist/cjs/MutableHashSet.js.map +1 -1
  145. package/dist/cjs/MutableList.js +5 -28
  146. package/dist/cjs/MutableList.js.map +1 -1
  147. package/dist/cjs/MutableQueue.js +7 -30
  148. package/dist/cjs/MutableQueue.js.map +1 -1
  149. package/dist/cjs/MutableRef.js +6 -29
  150. package/dist/cjs/MutableRef.js.map +1 -1
  151. package/dist/cjs/Number.js +7 -30
  152. package/dist/cjs/Number.js.map +1 -1
  153. package/dist/cjs/Option.js +10 -33
  154. package/dist/cjs/Option.js.map +1 -1
  155. package/dist/cjs/Order.js +1 -1
  156. package/dist/cjs/Order.js.map +1 -1
  157. package/dist/cjs/Ordering.js +1 -1
  158. package/dist/cjs/Ordering.js.map +1 -1
  159. package/dist/cjs/Pool.js +3 -26
  160. package/dist/cjs/Pool.js.map +1 -1
  161. package/dist/cjs/Predicate.js +1 -1
  162. package/dist/cjs/Predicate.js.map +1 -1
  163. package/dist/cjs/PubSub.js +3 -26
  164. package/dist/cjs/PubSub.js.map +1 -1
  165. package/dist/cjs/Queue.js +3 -26
  166. package/dist/cjs/Queue.js.map +1 -1
  167. package/dist/cjs/Random.js +4 -27
  168. package/dist/cjs/Random.js.map +1 -1
  169. package/dist/cjs/RateLimiter.js +3 -26
  170. package/dist/cjs/RateLimiter.js.map +1 -1
  171. package/dist/cjs/Readable.js +6 -29
  172. package/dist/cjs/Readable.js.map +1 -1
  173. package/dist/cjs/Record.js +6 -29
  174. package/dist/cjs/Record.js.map +1 -1
  175. package/dist/cjs/RedBlackTree.js +4 -27
  176. package/dist/cjs/RedBlackTree.js.map +1 -1
  177. package/dist/cjs/Redacted.js +4 -27
  178. package/dist/cjs/Redacted.js.map +1 -1
  179. package/dist/cjs/Ref.js +3 -26
  180. package/dist/cjs/Ref.js.map +1 -1
  181. package/dist/cjs/Reloadable.js +3 -26
  182. package/dist/cjs/Reloadable.js.map +1 -1
  183. package/dist/cjs/Request.js +7 -30
  184. package/dist/cjs/Request.js.map +1 -1
  185. package/dist/cjs/RequestBlock.js +3 -26
  186. package/dist/cjs/RequestBlock.js.map +1 -1
  187. package/dist/cjs/RequestResolver.js +6 -29
  188. package/dist/cjs/RequestResolver.js.map +1 -1
  189. package/dist/cjs/Resource.js +3 -26
  190. package/dist/cjs/Resource.js.map +1 -1
  191. package/dist/cjs/Runtime.js +3 -26
  192. package/dist/cjs/Runtime.js.map +1 -1
  193. package/dist/cjs/RuntimeFlags.js +4 -27
  194. package/dist/cjs/RuntimeFlags.js.map +1 -1
  195. package/dist/cjs/RuntimeFlagsPatch.js +4 -27
  196. package/dist/cjs/RuntimeFlagsPatch.js.map +1 -1
  197. package/dist/cjs/STM.js +6 -29
  198. package/dist/cjs/STM.js.map +1 -1
  199. package/dist/cjs/Schedule.js +3 -26
  200. package/dist/cjs/Schedule.js.map +1 -1
  201. package/dist/cjs/ScheduleDecision.js +3 -26
  202. package/dist/cjs/ScheduleDecision.js.map +1 -1
  203. package/dist/cjs/ScheduleInterval.js +3 -26
  204. package/dist/cjs/ScheduleInterval.js.map +1 -1
  205. package/dist/cjs/ScheduleIntervals.js +3 -26
  206. package/dist/cjs/ScheduleIntervals.js.map +1 -1
  207. package/dist/cjs/Scheduler.js +5 -28
  208. package/dist/cjs/Scheduler.js.map +1 -1
  209. package/dist/cjs/Scope.js +4 -27
  210. package/dist/cjs/Scope.js.map +1 -1
  211. package/dist/cjs/ScopedCache.js +3 -26
  212. package/dist/cjs/ScopedCache.js.map +1 -1
  213. package/dist/cjs/ScopedRef.js +3 -26
  214. package/dist/cjs/ScopedRef.js.map +1 -1
  215. package/dist/cjs/Secret.js +3 -26
  216. package/dist/cjs/Secret.js.map +1 -1
  217. package/dist/cjs/SingleProducerAsyncInput.js +3 -26
  218. package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
  219. package/dist/cjs/Sink.js +3 -26
  220. package/dist/cjs/Sink.js.map +1 -1
  221. package/dist/cjs/SortedMap.js +10 -33
  222. package/dist/cjs/SortedMap.js.map +1 -1
  223. package/dist/cjs/SortedSet.js +9 -32
  224. package/dist/cjs/SortedSet.js.map +1 -1
  225. package/dist/cjs/Stream.js +1048 -30
  226. package/dist/cjs/Stream.js.map +1 -1
  227. package/dist/cjs/StreamHaltStrategy.js +3 -26
  228. package/dist/cjs/StreamHaltStrategy.js.map +1 -1
  229. package/dist/cjs/Streamable.js +4 -27
  230. package/dist/cjs/Streamable.js.map +1 -1
  231. package/dist/cjs/String.js +9 -32
  232. package/dist/cjs/String.js.map +1 -1
  233. package/dist/cjs/Struct.js +6 -29
  234. package/dist/cjs/Struct.js.map +1 -1
  235. package/dist/cjs/Subscribable.js +8 -31
  236. package/dist/cjs/Subscribable.js.map +1 -1
  237. package/dist/cjs/SubscriptionRef.js +5 -28
  238. package/dist/cjs/SubscriptionRef.js.map +1 -1
  239. package/dist/cjs/Supervisor.js +5 -28
  240. package/dist/cjs/Supervisor.js.map +1 -1
  241. package/dist/cjs/Symbol.js +4 -27
  242. package/dist/cjs/Symbol.js.map +1 -1
  243. package/dist/cjs/SynchronizedRef.js +5 -28
  244. package/dist/cjs/SynchronizedRef.js.map +1 -1
  245. package/dist/cjs/TArray.js +3 -26
  246. package/dist/cjs/TArray.js.map +1 -1
  247. package/dist/cjs/TDeferred.js +3 -26
  248. package/dist/cjs/TDeferred.js.map +1 -1
  249. package/dist/cjs/TMap.js +3 -26
  250. package/dist/cjs/TMap.js.map +1 -1
  251. package/dist/cjs/TPriorityQueue.js +3 -26
  252. package/dist/cjs/TPriorityQueue.js.map +1 -1
  253. package/dist/cjs/TPubSub.js +3 -26
  254. package/dist/cjs/TPubSub.js.map +1 -1
  255. package/dist/cjs/TQueue.js +3 -26
  256. package/dist/cjs/TQueue.js.map +1 -1
  257. package/dist/cjs/TRandom.js +3 -26
  258. package/dist/cjs/TRandom.js.map +1 -1
  259. package/dist/cjs/TReentrantLock.js +3 -26
  260. package/dist/cjs/TReentrantLock.js.map +1 -1
  261. package/dist/cjs/TRef.js +3 -26
  262. package/dist/cjs/TRef.js.map +1 -1
  263. package/dist/cjs/TSemaphore.js +3 -26
  264. package/dist/cjs/TSemaphore.js.map +1 -1
  265. package/dist/cjs/TSet.js +3 -26
  266. package/dist/cjs/TSet.js.map +1 -1
  267. package/dist/cjs/Take.js +3 -26
  268. package/dist/cjs/Take.js.map +1 -1
  269. package/dist/cjs/TestAnnotation.js +10 -33
  270. package/dist/cjs/TestAnnotation.js.map +1 -1
  271. package/dist/cjs/TestAnnotationMap.js +5 -28
  272. package/dist/cjs/TestAnnotationMap.js.map +1 -1
  273. package/dist/cjs/TestAnnotations.js +15 -38
  274. package/dist/cjs/TestAnnotations.js.map +1 -1
  275. package/dist/cjs/TestClock.js +25 -48
  276. package/dist/cjs/TestClock.js.map +1 -1
  277. package/dist/cjs/TestConfig.js +3 -26
  278. package/dist/cjs/TestConfig.js.map +1 -1
  279. package/dist/cjs/TestContext.js +7 -30
  280. package/dist/cjs/TestContext.js.map +1 -1
  281. package/dist/cjs/TestLive.js +5 -28
  282. package/dist/cjs/TestLive.js.map +1 -1
  283. package/dist/cjs/TestServices.js +15 -38
  284. package/dist/cjs/TestServices.js.map +1 -1
  285. package/dist/cjs/TestSized.js +4 -27
  286. package/dist/cjs/TestSized.js.map +1 -1
  287. package/dist/cjs/Tracer.js +4 -27
  288. package/dist/cjs/Tracer.js.map +1 -1
  289. package/dist/cjs/Trie.js +3 -26
  290. package/dist/cjs/Trie.js.map +1 -1
  291. package/dist/cjs/Tuple.js +6 -29
  292. package/dist/cjs/Tuple.js.map +1 -1
  293. package/dist/cjs/Unify.js +1 -1
  294. package/dist/cjs/Unify.js.map +1 -1
  295. package/dist/cjs/UpstreamPullRequest.js +3 -26
  296. package/dist/cjs/UpstreamPullRequest.js.map +1 -1
  297. package/dist/cjs/UpstreamPullStrategy.js +3 -26
  298. package/dist/cjs/UpstreamPullStrategy.js.map +1 -1
  299. package/dist/cjs/Utils.js +4 -4
  300. package/dist/cjs/Utils.js.map +1 -1
  301. package/dist/cjs/index.js +160 -183
  302. package/dist/cjs/index.js.map +1 -1
  303. package/dist/cjs/internal/blockedRequests.js +9 -32
  304. package/dist/cjs/internal/blockedRequests.js.map +1 -1
  305. package/dist/cjs/internal/cache.js +20 -43
  306. package/dist/cjs/internal/cache.js.map +1 -1
  307. package/dist/cjs/internal/cause.js +16 -39
  308. package/dist/cjs/internal/cause.js.map +1 -1
  309. package/dist/cjs/internal/channel/channelExecutor.js +21 -44
  310. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  311. package/dist/cjs/internal/channel/channelState.js +5 -28
  312. package/dist/cjs/internal/channel/channelState.js.map +1 -1
  313. package/dist/cjs/internal/channel/childExecutorDecision.js +5 -28
  314. package/dist/cjs/internal/channel/childExecutorDecision.js.map +1 -1
  315. package/dist/cjs/internal/channel/continuation.js +4 -27
  316. package/dist/cjs/internal/channel/continuation.js.map +1 -1
  317. package/dist/cjs/internal/channel/mergeDecision.js +5 -28
  318. package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
  319. package/dist/cjs/internal/channel/mergeState.js +5 -28
  320. package/dist/cjs/internal/channel/mergeState.js.map +1 -1
  321. package/dist/cjs/internal/channel/mergeStrategy.js +5 -28
  322. package/dist/cjs/internal/channel/mergeStrategy.js.map +1 -1
  323. package/dist/cjs/internal/channel/singleProducerAsyncInput.js +9 -32
  324. package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
  325. package/dist/cjs/internal/channel/subexecutor.js +5 -28
  326. package/dist/cjs/internal/channel/subexecutor.js.map +1 -1
  327. package/dist/cjs/internal/channel/upstreamPullRequest.js +5 -28
  328. package/dist/cjs/internal/channel/upstreamPullRequest.js.map +1 -1
  329. package/dist/cjs/internal/channel/upstreamPullStrategy.js +5 -28
  330. package/dist/cjs/internal/channel/upstreamPullStrategy.js.map +1 -1
  331. package/dist/cjs/internal/channel.js +31 -54
  332. package/dist/cjs/internal/channel.js.map +1 -1
  333. package/dist/cjs/internal/clock.js +6 -29
  334. package/dist/cjs/internal/clock.js.map +1 -1
  335. package/dist/cjs/internal/completedRequestMap.js +2 -2
  336. package/dist/cjs/internal/completedRequestMap.js.map +1 -1
  337. package/dist/cjs/internal/concurrency.js +3 -26
  338. package/dist/cjs/internal/concurrency.js.map +1 -1
  339. package/dist/cjs/internal/config.js +17 -40
  340. package/dist/cjs/internal/config.js.map +1 -1
  341. package/dist/cjs/internal/configError.js +7 -30
  342. package/dist/cjs/internal/configError.js.map +1 -1
  343. package/dist/cjs/internal/configProvider/pathPatch.js +8 -31
  344. package/dist/cjs/internal/configProvider/pathPatch.js.map +1 -1
  345. package/dist/cjs/internal/configProvider.js +17 -40
  346. package/dist/cjs/internal/configProvider.js.map +1 -1
  347. package/dist/cjs/internal/console.js +9 -32
  348. package/dist/cjs/internal/console.js.map +1 -1
  349. package/dist/cjs/internal/context.js +10 -33
  350. package/dist/cjs/internal/context.js.map +1 -1
  351. package/dist/cjs/internal/core-effect.js +29 -52
  352. package/dist/cjs/internal/core-effect.js.map +1 -1
  353. package/dist/cjs/internal/core-stream.js +14 -37
  354. package/dist/cjs/internal/core-stream.js.map +1 -1
  355. package/dist/cjs/internal/core.js +32 -55
  356. package/dist/cjs/internal/core.js.map +1 -1
  357. package/dist/cjs/internal/data.js +5 -28
  358. package/dist/cjs/internal/data.js.map +1 -1
  359. package/dist/cjs/internal/dataSource.js +10 -33
  360. package/dist/cjs/internal/dataSource.js.map +1 -1
  361. package/dist/cjs/internal/defaultServices/console.js +4 -27
  362. package/dist/cjs/internal/defaultServices/console.js.map +1 -1
  363. package/dist/cjs/internal/defaultServices.js +12 -35
  364. package/dist/cjs/internal/defaultServices.js.map +1 -1
  365. package/dist/cjs/internal/deferred.js +3 -26
  366. package/dist/cjs/internal/deferred.js.map +1 -1
  367. package/dist/cjs/internal/differ/chunkPatch.js +6 -29
  368. package/dist/cjs/internal/differ/chunkPatch.js.map +1 -1
  369. package/dist/cjs/internal/differ/contextPatch.js +7 -30
  370. package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
  371. package/dist/cjs/internal/differ/hashMapPatch.js +7 -30
  372. package/dist/cjs/internal/differ/hashMapPatch.js.map +1 -1
  373. package/dist/cjs/internal/differ/hashSetPatch.js +6 -29
  374. package/dist/cjs/internal/differ/hashSetPatch.js.map +1 -1
  375. package/dist/cjs/internal/differ/orPatch.js +7 -30
  376. package/dist/cjs/internal/differ/orPatch.js.map +1 -1
  377. package/dist/cjs/internal/differ/readonlyArrayPatch.js +6 -29
  378. package/dist/cjs/internal/differ/readonlyArrayPatch.js.map +1 -1
  379. package/dist/cjs/internal/differ.js +10 -33
  380. package/dist/cjs/internal/differ.js.map +1 -1
  381. package/dist/cjs/internal/doNotation.js +1 -1
  382. package/dist/cjs/internal/doNotation.js.map +1 -1
  383. package/dist/cjs/internal/effect/circular.js +24 -47
  384. package/dist/cjs/internal/effect/circular.js.map +1 -1
  385. package/dist/cjs/internal/effectable.js +8 -31
  386. package/dist/cjs/internal/effectable.js.map +1 -1
  387. package/dist/cjs/internal/either.js +9 -32
  388. package/dist/cjs/internal/either.js.map +1 -1
  389. package/dist/cjs/internal/encoding/base64.js +4 -27
  390. package/dist/cjs/internal/encoding/base64.js.map +1 -1
  391. package/dist/cjs/internal/encoding/base64Url.js +5 -28
  392. package/dist/cjs/internal/encoding/base64Url.js.map +1 -1
  393. package/dist/cjs/internal/encoding/common.js +1 -1
  394. package/dist/cjs/internal/encoding/common.js.map +1 -1
  395. package/dist/cjs/internal/encoding/hex.js +4 -27
  396. package/dist/cjs/internal/encoding/hex.js.map +1 -1
  397. package/dist/cjs/internal/executionStrategy.js +1 -1
  398. package/dist/cjs/internal/executionStrategy.js.map +1 -1
  399. package/dist/cjs/internal/fiber.js +17 -40
  400. package/dist/cjs/internal/fiber.js.map +1 -1
  401. package/dist/cjs/internal/fiberId.js +11 -34
  402. package/dist/cjs/internal/fiberId.js.map +1 -1
  403. package/dist/cjs/internal/fiberRefs/patch.js +6 -29
  404. package/dist/cjs/internal/fiberRefs/patch.js.map +1 -1
  405. package/dist/cjs/internal/fiberRefs.js +9 -32
  406. package/dist/cjs/internal/fiberRefs.js.map +1 -1
  407. package/dist/cjs/internal/fiberRuntime.js +55 -78
  408. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  409. package/dist/cjs/internal/fiberScope.js +5 -28
  410. package/dist/cjs/internal/fiberScope.js.map +1 -1
  411. package/dist/cjs/internal/fiberStatus.js +6 -29
  412. package/dist/cjs/internal/fiberStatus.js.map +1 -1
  413. package/dist/cjs/internal/groupBy.js +18 -41
  414. package/dist/cjs/internal/groupBy.js.map +1 -1
  415. package/dist/cjs/internal/hashMap/bitwise.js +1 -1
  416. package/dist/cjs/internal/hashMap/bitwise.js.map +1 -1
  417. package/dist/cjs/internal/hashMap/keySet.js +1 -1
  418. package/dist/cjs/internal/hashMap/keySet.js.map +1 -1
  419. package/dist/cjs/internal/hashMap/node.js +9 -32
  420. package/dist/cjs/internal/hashMap/node.js.map +1 -1
  421. package/dist/cjs/internal/hashMap.js +12 -35
  422. package/dist/cjs/internal/hashMap.js.map +1 -1
  423. package/dist/cjs/internal/hashSet.js +9 -32
  424. package/dist/cjs/internal/hashSet.js.map +1 -1
  425. package/dist/cjs/internal/keyedPool.js +14 -37
  426. package/dist/cjs/internal/keyedPool.js.map +1 -1
  427. package/dist/cjs/internal/layer/circular.js +12 -35
  428. package/dist/cjs/internal/layer/circular.js.map +1 -1
  429. package/dist/cjs/internal/layer.js +25 -48
  430. package/dist/cjs/internal/layer.js.map +1 -1
  431. package/dist/cjs/internal/logger-circular.js +9 -32
  432. package/dist/cjs/internal/logger-circular.js.map +1 -1
  433. package/dist/cjs/internal/logger.js +11 -34
  434. package/dist/cjs/internal/logger.js.map +1 -1
  435. package/dist/cjs/internal/managedRuntime.js +9 -32
  436. package/dist/cjs/internal/managedRuntime.js.map +1 -1
  437. package/dist/cjs/internal/matcher.js +6 -29
  438. package/dist/cjs/internal/matcher.js.map +1 -1
  439. package/dist/cjs/internal/metric/boundaries.js +9 -32
  440. package/dist/cjs/internal/metric/boundaries.js.map +1 -1
  441. package/dist/cjs/internal/metric/hook.js +9 -32
  442. package/dist/cjs/internal/metric/hook.js.map +1 -1
  443. package/dist/cjs/internal/metric/key.js +11 -34
  444. package/dist/cjs/internal/metric/key.js.map +1 -1
  445. package/dist/cjs/internal/metric/keyType.js +8 -31
  446. package/dist/cjs/internal/metric/keyType.js.map +1 -1
  447. package/dist/cjs/internal/metric/label.js +6 -29
  448. package/dist/cjs/internal/metric/label.js.map +1 -1
  449. package/dist/cjs/internal/metric/pair.js +1 -1
  450. package/dist/cjs/internal/metric/pair.js.map +1 -1
  451. package/dist/cjs/internal/metric/polling.js +8 -31
  452. package/dist/cjs/internal/metric/polling.js.map +1 -1
  453. package/dist/cjs/internal/metric/registry.js +8 -31
  454. package/dist/cjs/internal/metric/registry.js.map +1 -1
  455. package/dist/cjs/internal/metric/state.js +8 -31
  456. package/dist/cjs/internal/metric/state.js.map +1 -1
  457. package/dist/cjs/internal/metric.js +15 -38
  458. package/dist/cjs/internal/metric.js.map +1 -1
  459. package/dist/cjs/internal/option.js +7 -30
  460. package/dist/cjs/internal/option.js.map +1 -1
  461. package/dist/cjs/internal/pool.js +43 -42
  462. package/dist/cjs/internal/pool.js.map +1 -1
  463. package/dist/cjs/internal/pubsub.js +13 -36
  464. package/dist/cjs/internal/pubsub.js.map +1 -1
  465. package/dist/cjs/internal/query.js +10 -33
  466. package/dist/cjs/internal/query.js.map +1 -1
  467. package/dist/cjs/internal/queue.js +12 -35
  468. package/dist/cjs/internal/queue.js.map +1 -1
  469. package/dist/cjs/internal/random.js +7 -30
  470. package/dist/cjs/internal/random.js.map +1 -1
  471. package/dist/cjs/internal/rateLimiter.js +6 -29
  472. package/dist/cjs/internal/rateLimiter.js.map +1 -1
  473. package/dist/cjs/internal/redBlackTree/iterator.js +4 -27
  474. package/dist/cjs/internal/redBlackTree/iterator.js.map +1 -1
  475. package/dist/cjs/internal/redBlackTree.js +13 -36
  476. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  477. package/dist/cjs/internal/redacted.js +8 -31
  478. package/dist/cjs/internal/redacted.js.map +1 -1
  479. package/dist/cjs/internal/ref.js +8 -31
  480. package/dist/cjs/internal/ref.js.map +1 -1
  481. package/dist/cjs/internal/reloadable.js +10 -33
  482. package/dist/cjs/internal/reloadable.js.map +1 -1
  483. package/dist/cjs/internal/request.js +7 -30
  484. package/dist/cjs/internal/request.js.map +1 -1
  485. package/dist/cjs/internal/resource.js +7 -30
  486. package/dist/cjs/internal/resource.js.map +1 -1
  487. package/dist/cjs/internal/ringBuffer.js +5 -28
  488. package/dist/cjs/internal/ringBuffer.js.map +1 -1
  489. package/dist/cjs/internal/runtime.js +23 -46
  490. package/dist/cjs/internal/runtime.js.map +1 -1
  491. package/dist/cjs/internal/runtimeFlags.js +5 -28
  492. package/dist/cjs/internal/runtimeFlags.js.map +1 -1
  493. package/dist/cjs/internal/runtimeFlagsPatch.js +1 -1
  494. package/dist/cjs/internal/runtimeFlagsPatch.js.map +1 -1
  495. package/dist/cjs/internal/schedule/decision.js +4 -27
  496. package/dist/cjs/internal/schedule/decision.js.map +1 -1
  497. package/dist/cjs/internal/schedule/interval.js +5 -28
  498. package/dist/cjs/internal/schedule/interval.js.map +1 -1
  499. package/dist/cjs/internal/schedule/intervals.js +7 -30
  500. package/dist/cjs/internal/schedule/intervals.js.map +1 -1
  501. package/dist/cjs/internal/schedule.js +21 -44
  502. package/dist/cjs/internal/schedule.js.map +1 -1
  503. package/dist/cjs/internal/scopedCache.js +19 -42
  504. package/dist/cjs/internal/scopedCache.js.map +1 -1
  505. package/dist/cjs/internal/scopedRef.js +10 -33
  506. package/dist/cjs/internal/scopedRef.js.map +1 -1
  507. package/dist/cjs/internal/secret.js +5 -28
  508. package/dist/cjs/internal/secret.js.map +1 -1
  509. package/dist/cjs/internal/singleShotGen.js.map +1 -1
  510. package/dist/cjs/internal/sink.js +22 -45
  511. package/dist/cjs/internal/sink.js.map +1 -1
  512. package/dist/cjs/internal/stm/core.js +30 -53
  513. package/dist/cjs/internal/stm/core.js.map +1 -1
  514. package/dist/cjs/internal/stm/stm/entry.js +3 -26
  515. package/dist/cjs/internal/stm/stm/entry.js.map +1 -1
  516. package/dist/cjs/internal/stm/stm/journal.js +3 -26
  517. package/dist/cjs/internal/stm/stm/journal.js.map +1 -1
  518. package/dist/cjs/internal/stm/stm/stmState.js +9 -32
  519. package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
  520. package/dist/cjs/internal/stm/stm/tExit.js +7 -30
  521. package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
  522. package/dist/cjs/internal/stm/stm/tryCommit.js +3 -26
  523. package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
  524. package/dist/cjs/internal/stm/stm/versioned.js.map +1 -1
  525. package/dist/cjs/internal/stm/stm.js +17 -40
  526. package/dist/cjs/internal/stm/stm.js.map +1 -1
  527. package/dist/cjs/internal/stm/tArray.js +9 -32
  528. package/dist/cjs/internal/stm/tArray.js.map +1 -1
  529. package/dist/cjs/internal/stm/tDeferred.js +8 -31
  530. package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
  531. package/dist/cjs/internal/stm/tMap.js +15 -38
  532. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  533. package/dist/cjs/internal/stm/tPriorityQueue.js +9 -32
  534. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  535. package/dist/cjs/internal/stm/tPubSub.js +12 -35
  536. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  537. package/dist/cjs/internal/stm/tQueue.js +12 -35
  538. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  539. package/dist/cjs/internal/stm/tRandom.js +10 -33
  540. package/dist/cjs/internal/stm/tRandom.js.map +1 -1
  541. package/dist/cjs/internal/stm/tReentrantLock.js +10 -33
  542. package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
  543. package/dist/cjs/internal/stm/tRef.js +7 -30
  544. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  545. package/dist/cjs/internal/stm/tSemaphore.js +8 -31
  546. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
  547. package/dist/cjs/internal/stm/tSet.js +10 -33
  548. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  549. package/dist/cjs/internal/stream/emit.js +8 -31
  550. package/dist/cjs/internal/stream/emit.js.map +1 -1
  551. package/dist/cjs/internal/stream/haltStrategy.js +4 -27
  552. package/dist/cjs/internal/stream/haltStrategy.js.map +1 -1
  553. package/dist/cjs/internal/stream/handoff.js +7 -30
  554. package/dist/cjs/internal/stream/handoff.js.map +1 -1
  555. package/dist/cjs/internal/stream/pull.js +7 -30
  556. package/dist/cjs/internal/stream/pull.js.map +1 -1
  557. package/dist/cjs/internal/stream.js +46 -69
  558. package/dist/cjs/internal/stream.js.map +1 -1
  559. package/dist/cjs/internal/subscriptionRef.js +13 -36
  560. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  561. package/dist/cjs/internal/supervisor/patch.js +8 -31
  562. package/dist/cjs/internal/supervisor/patch.js.map +1 -1
  563. package/dist/cjs/internal/supervisor.js +8 -31
  564. package/dist/cjs/internal/supervisor.js.map +1 -1
  565. package/dist/cjs/internal/synchronizedRef.js +5 -28
  566. package/dist/cjs/internal/synchronizedRef.js.map +1 -1
  567. package/dist/cjs/internal/take.js +9 -32
  568. package/dist/cjs/internal/take.js.map +1 -1
  569. package/dist/cjs/internal/tracer.js +3 -26
  570. package/dist/cjs/internal/tracer.js.map +1 -1
  571. package/dist/cjs/internal/trie.js +9 -32
  572. package/dist/cjs/internal/trie.js.map +1 -1
  573. package/dist/cjs/internal/version.js +1 -1
  574. package/dist/dts/Stream.d.ts +1075 -3
  575. package/dist/dts/Stream.d.ts.map +1 -1
  576. package/dist/esm/Stream.js +1075 -3
  577. package/dist/esm/Stream.js.map +1 -1
  578. package/dist/esm/internal/pool.js +29 -5
  579. package/dist/esm/internal/pool.js.map +1 -1
  580. package/dist/esm/internal/version.js +1 -1
  581. package/package.json +1 -1
  582. package/src/Stream.ts +1075 -3
  583. package/src/internal/pool.ts +36 -5
  584. package/src/internal/version.ts +1 -1
@@ -32,6 +32,29 @@ export const accumulateChunks = internal.accumulateChunks;
32
32
  * Creates a stream from a single value that will get cleaned up after the
33
33
  * stream is consumed.
34
34
  *
35
+ * @example
36
+ * import { Console, Effect, Stream } from "effect"
37
+ *
38
+ * // Simulating File operations
39
+ * const open = (filename: string) =>
40
+ * Effect.gen(function*() {
41
+ * yield* Console.log(`Opening ${filename}`)
42
+ * return {
43
+ * getLines: Effect.succeed(["Line 1", "Line 2", "Line 3"]),
44
+ * close: Console.log(`Closing ${filename}`)
45
+ * }
46
+ * })
47
+ *
48
+ * const stream = Stream.acquireRelease(
49
+ * open("file.txt"),
50
+ * (file) => file.close
51
+ * ).pipe(Stream.flatMap((file) => file.getLines))
52
+ *
53
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
54
+ * // Opening file.txt
55
+ * // Closing file.txt
56
+ * // { _id: 'Chunk', values: [ [ 'Line 1', 'Line 2', 'Line 3' ] ] }
57
+ *
35
58
  * @since 2.0.0
36
59
  * @category constructors
37
60
  */
@@ -83,6 +106,14 @@ export const aggregateWithinEither = internal.aggregateWithinEither;
83
106
  /**
84
107
  * Maps the success values of this stream to the specified constant value.
85
108
  *
109
+ * @example
110
+ * import { Effect, Stream } from "effect"
111
+ *
112
+ * const stream = Stream.range(1, 5).pipe(Stream.as(null))
113
+ *
114
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
115
+ * // { _id: 'Chunk', values: [ null, null, null, null, null ] }
116
+ *
86
117
  * @since 2.0.0
87
118
  * @category mapping
88
119
  */
@@ -97,6 +128,29 @@ export {
97
128
  * The registration function can optionally return an `Effect`, which will be
98
129
  * executed if the `Fiber` executing this Effect is interrupted.
99
130
  *
131
+ * @example
132
+ * import type { StreamEmit } from "effect"
133
+ * import { Chunk, Effect, Option, Stream } from "effect"
134
+ *
135
+ * const events = [1, 2, 3, 4]
136
+ *
137
+ * const stream = Stream.async(
138
+ * (emit: StreamEmit.Emit<never, never, number, void>) => {
139
+ * events.forEach((n) => {
140
+ * setTimeout(() => {
141
+ * if (n === 3) {
142
+ * emit(Effect.fail(Option.none())) // Terminate the stream
143
+ * } else {
144
+ * emit(Effect.succeed(Chunk.of(n))) // Add the current item to the stream
145
+ * }
146
+ * }, 100 * n)
147
+ * })
148
+ * }
149
+ * )
150
+ *
151
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
152
+ * // { _id: 'Chunk', values: [ 1, 2 ] }
153
+ *
100
154
  * @since 2.0.0
101
155
  * @category constructors
102
156
  */
@@ -135,6 +189,77 @@ export const branchAfter = internal.branchAfter;
135
189
  * as this stream. The driver stream will only ever advance the `maximumLag`
136
190
  * chunks before the slowest downstream stream.
137
191
  *
192
+ * @example
193
+ * import { Console, Effect, Fiber, Schedule, Stream } from "effect"
194
+ *
195
+ * const numbers = Effect.scoped(
196
+ * Stream.range(1, 20).pipe(
197
+ * Stream.tap((n) => Console.log(`Emit ${n} element before broadcasting`)),
198
+ * Stream.broadcast(2, 5),
199
+ * Stream.flatMap(([first, second]) =>
200
+ * Effect.gen(function*() {
201
+ * const fiber1 = yield* Stream.runFold(first, 0, (acc, e) => Math.max(acc, e)).pipe(
202
+ * Effect.andThen((max) => Console.log(`Maximum: ${max}`)),
203
+ * Effect.fork
204
+ * )
205
+ * const fiber2 = yield* second.pipe(
206
+ * Stream.schedule(Schedule.spaced("1 second")),
207
+ * Stream.runForEach((n) => Console.log(`Logging to the Console: ${n}`)),
208
+ * Effect.fork
209
+ * )
210
+ * yield* Fiber.join(fiber1).pipe(
211
+ * Effect.zip(Fiber.join(fiber2), { concurrent: true })
212
+ * )
213
+ * })
214
+ * ),
215
+ * Stream.runCollect
216
+ * )
217
+ * )
218
+ *
219
+ * // Effect.runPromise(numbers).then(console.log)
220
+ * // Emit 1 element before broadcasting
221
+ * // Emit 2 element before broadcasting
222
+ * // Emit 3 element before broadcasting
223
+ * // Emit 4 element before broadcasting
224
+ * // Emit 5 element before broadcasting
225
+ * // Emit 6 element before broadcasting
226
+ * // Emit 7 element before broadcasting
227
+ * // Emit 8 element before broadcasting
228
+ * // Emit 9 element before broadcasting
229
+ * // Emit 10 element before broadcasting
230
+ * // Emit 11 element before broadcasting
231
+ * // Logging to the Console: 1
232
+ * // Logging to the Console: 2
233
+ * // Logging to the Console: 3
234
+ * // Logging to the Console: 4
235
+ * // Logging to the Console: 5
236
+ * // Emit 12 element before broadcasting
237
+ * // Emit 13 element before broadcasting
238
+ * // Emit 14 element before broadcasting
239
+ * // Emit 15 element before broadcasting
240
+ * // Emit 16 element before broadcasting
241
+ * // Logging to the Console: 6
242
+ * // Logging to the Console: 7
243
+ * // Logging to the Console: 8
244
+ * // Logging to the Console: 9
245
+ * // Logging to the Console: 10
246
+ * // Emit 17 element before broadcasting
247
+ * // Emit 18 element before broadcasting
248
+ * // Emit 19 element before broadcasting
249
+ * // Emit 20 element before broadcasting
250
+ * // Logging to the Console: 11
251
+ * // Logging to the Console: 12
252
+ * // Logging to the Console: 13
253
+ * // Logging to the Console: 14
254
+ * // Logging to the Console: 15
255
+ * // Maximum: 20
256
+ * // Logging to the Console: 16
257
+ * // Logging to the Console: 17
258
+ * // Logging to the Console: 18
259
+ * // Logging to the Console: 19
260
+ * // Logging to the Console: 20
261
+ * // { _id: 'Chunk', values: [ undefined ] }
262
+ *
138
263
  * @since 2.0.0
139
264
  * @category utils
140
265
  */
@@ -174,9 +299,38 @@ export const broadcastedQueuesDynamic = internal.broadcastedQueuesDynamic;
174
299
  * Allows a faster producer to progress independently of a slower consumer by
175
300
  * buffering up to `capacity` elements in a queue.
176
301
  *
177
- * @note This combinator destroys the chunking structure. It's recommended to
302
+ * Note: This combinator destroys the chunking structure. It's recommended to
178
303
  * use rechunk afterwards. Additionally, prefer capacities that are powers
179
304
  * of 2 for better performance.
305
+ *
306
+ * @example
307
+ * import { Console, Effect, Schedule, Stream } from "effect"
308
+ *
309
+ * const stream = Stream.range(1, 10).pipe(
310
+ * Stream.tap((n) => Console.log(`before buffering: ${n}`)),
311
+ * Stream.buffer({ capacity: 4 }),
312
+ * Stream.tap((n) => Console.log(`after buffering: ${n}`)),
313
+ * Stream.schedule(Schedule.spaced("5 seconds"))
314
+ * )
315
+ *
316
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
317
+ * // before buffering: 1
318
+ * // before buffering: 2
319
+ * // before buffering: 3
320
+ * // before buffering: 4
321
+ * // before buffering: 5
322
+ * // before buffering: 6
323
+ * // after buffering: 1
324
+ * // after buffering: 2
325
+ * // before buffering: 7
326
+ * // after buffering: 3
327
+ * // before buffering: 8
328
+ * // after buffering: 4
329
+ * // before buffering: 9
330
+ * // after buffering: 5
331
+ * // before buffering: 10
332
+ * // ...
333
+ *
180
334
  * @since 2.0.0
181
335
  * @category utils
182
336
  */
@@ -245,6 +399,14 @@ export const catchSomeCause = internal.catchSomeCause;
245
399
  * previous element emitted, using natural equality to determine whether two
246
400
  * elements are equal.
247
401
  *
402
+ * @example
403
+ * import { Effect, Stream } from "effect"
404
+ *
405
+ * const stream = Stream.make(1, 1, 1, 2, 2, 3, 4).pipe(Stream.changes)
406
+ *
407
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
408
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4 ] }
409
+ *
248
410
  * @since 2.0.0
249
411
  * @category utils
250
412
  */
@@ -313,6 +475,17 @@ export const combineChunks = internal.combineChunks;
313
475
  * that emits the elements from this stream and then the elements from the
314
476
  * specified stream.
315
477
  *
478
+ * @example
479
+ * import { Effect, Stream } from "effect"
480
+ *
481
+ * const s1 = Stream.make(1, 2, 3)
482
+ * const s2 = Stream.make(4, 5)
483
+ *
484
+ * const stream = Stream.concat(s1, s2)
485
+ *
486
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
487
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
488
+ *
316
489
  * @since 2.0.0
317
490
  * @category utils
318
491
  */
@@ -320,6 +493,24 @@ export const concat = internal.concat;
320
493
  /**
321
494
  * Concatenates all of the streams in the chunk to one stream.
322
495
  *
496
+ * @example
497
+ * import { Chunk, Effect, Stream } from "effect"
498
+ *
499
+ * const s1 = Stream.make(1, 2, 3)
500
+ * const s2 = Stream.make(4, 5)
501
+ * const s3 = Stream.make(6, 7, 8)
502
+ *
503
+ * const stream = Stream.concatAll(Chunk.make(s1, s2, s3))
504
+ *
505
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
506
+ * // {
507
+ * // _id: 'Chunk',
508
+ * // values: [
509
+ * // 1, 2, 3, 4,
510
+ * // 5, 6, 7, 8
511
+ * // ]
512
+ * // }
513
+ *
323
514
  * @since 2.0.0
324
515
  * @category constructors
325
516
  */
@@ -331,6 +522,22 @@ export const concatAll = internal.concatAll;
331
522
  *
332
523
  * See also `Stream.zip` for the more common point-wise variant.
333
524
  *
525
+ * @example
526
+ * import { Effect, Stream } from "effect"
527
+ *
528
+ * const s1 = Stream.make(1, 2, 3)
529
+ * const s2 = Stream.make("a", "b")
530
+ *
531
+ * const product = Stream.cross(s1, s2)
532
+ *
533
+ * // Effect.runPromise(Stream.runCollect(product)).then(console.log)
534
+ * // {
535
+ * // _id: "Chunk",
536
+ * // values: [
537
+ * // [ 1, "a" ], [ 1, "b" ], [ 2, "a" ], [ 2, "b" ], [ 3, "a" ], [ 3, "b" ]
538
+ * // ]
539
+ * // }
540
+ *
334
541
  * @since 2.0.0
335
542
  * @category utils
336
543
  */
@@ -380,6 +587,45 @@ export const crossWith = internal.crossWith;
380
587
  * example, a search engine may only want to initiate a search after a user
381
588
  * has paused typing so as to not prematurely recommend results.
382
589
  *
590
+ * @example
591
+ * import { Effect, Stream } from "effect"
592
+ *
593
+ * let last = Date.now()
594
+ * const log = (message: string) =>
595
+ * Effect.sync(() => {
596
+ * const end = Date.now()
597
+ * console.log(`${message} after ${end - last}ms`)
598
+ * last = end
599
+ * })
600
+ *
601
+ * const stream = Stream.make(1, 2, 3).pipe(
602
+ * Stream.concat(
603
+ * Stream.fromEffect(Effect.sleep("200 millis").pipe(Effect.as(4))) // Emit 4 after 200 ms
604
+ * ),
605
+ * Stream.concat(Stream.make(5, 6)), // Continue with more rapid values
606
+ * Stream.concat(
607
+ * Stream.fromEffect(Effect.sleep("150 millis").pipe(Effect.as(7))) // Emit 7 after 150 ms
608
+ * ),
609
+ * Stream.concat(Stream.make(8)),
610
+ * Stream.tap((n) => log(`Received ${n}`)),
611
+ * Stream.debounce("100 millis"), // Only emit values after a pause of at least 100 milliseconds,
612
+ * Stream.tap((n) => log(`> Emitted ${n}`))
613
+ * )
614
+ *
615
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
616
+ * // Received 1 after 5ms
617
+ * // Received 2 after 2ms
618
+ * // Received 3 after 0ms
619
+ * // > Emitted 3 after 104ms
620
+ * // Received 4 after 99ms
621
+ * // Received 5 after 1ms
622
+ * // Received 6 after 0ms
623
+ * // > Emitted 6 after 101ms
624
+ * // Received 7 after 50ms
625
+ * // Received 8 after 1ms
626
+ * // > Emitted 8 after 101ms
627
+ * // { _id: 'Chunk', values: [ 3, 6, 8 ] }
628
+ *
383
629
  * @since 2.0.0
384
630
  * @category utils
385
631
  */
@@ -430,6 +676,15 @@ export const distributedWithDynamic = internal.distributedWithDynamic;
430
676
  * Converts this stream to a stream that executes its effects but emits no
431
677
  * elements. Useful for sequencing effects using streams:
432
678
  *
679
+ * @example
680
+ * import { Effect, Stream } from "effect"
681
+ *
682
+ * // We create a stream and immediately drain it.
683
+ * const stream = Stream.range(1, 6).pipe(Stream.drain)
684
+ *
685
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
686
+ * // { _id: 'Chunk', values: [] }
687
+ *
433
688
  * @since 2.0.0
434
689
  * @category utils
435
690
  */
@@ -505,6 +760,14 @@ export const either = internal.either;
505
760
  /**
506
761
  * The empty stream.
507
762
  *
763
+ * @example
764
+ * import { Effect, Stream } from "effect"
765
+ *
766
+ * const stream = Stream.empty
767
+ *
768
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
769
+ * // { _id: 'Chunk', values: [] }
770
+ *
508
771
  * @since 2.0.0
509
772
  * @category constructors
510
773
  */
@@ -512,6 +775,22 @@ export const empty = internal.empty;
512
775
  /**
513
776
  * Executes the provided finalizer after this stream's finalizers run.
514
777
  *
778
+ * @example
779
+ * import { Console, Effect, Stream } from "effect"
780
+ *
781
+ * const program = Stream.fromEffect(Console.log("Application Logic.")).pipe(
782
+ * Stream.concat(Stream.finalizer(Console.log("Finalizing the stream"))),
783
+ * Stream.ensuring(
784
+ * Console.log("Doing some other works after stream's finalization")
785
+ * )
786
+ * )
787
+ *
788
+ * // Effect.runPromise(Stream.runCollect(program)).then(console.log)
789
+ * // Application Logic.
790
+ * // Finalizing the stream
791
+ * // Doing some other works after stream's finalization
792
+ * // { _id: 'Chunk', values: [ undefined, undefined ] }
793
+ *
515
794
  * @since 2.0.0
516
795
  * @category utils
517
796
  */
@@ -561,6 +840,18 @@ export const execute = internal.execute;
561
840
  /**
562
841
  * Terminates with the specified error.
563
842
  *
843
+ * @example
844
+ * import { Effect, Stream } from "effect"
845
+ *
846
+ * const stream = Stream.fail("Uh oh!")
847
+ *
848
+ * Effect.runPromiseExit(Stream.runCollect(stream)).then(console.log)
849
+ * // {
850
+ * // _id: 'Exit',
851
+ * // _tag: 'Failure',
852
+ * // cause: { _id: 'Cause', _tag: 'Fail', failure: 'Uh oh!' }
853
+ * // }
854
+ *
564
855
  * @since 2.0.0
565
856
  * @category constructors
566
857
  */
@@ -589,6 +880,14 @@ export const failCauseSync = internal.failCauseSync;
589
880
  /**
590
881
  * Filters the elements emitted by this stream using the provided function.
591
882
  *
883
+ * @example
884
+ * import { Effect, Stream } from "effect"
885
+ *
886
+ * const stream = Stream.range(1, 11).pipe(Stream.filter((n) => n % 2 === 0))
887
+ *
888
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
889
+ * // { _id: 'Chunk', values: [ 2, 4, 6, 8, 10 ] }
890
+ *
592
891
  * @since 2.0.0
593
892
  * @category filtering
594
893
  */
@@ -634,6 +933,29 @@ export const filterMapWhileEffect = internal.filterMapWhileEffect;
634
933
  * Creates a one-element stream that never fails and executes the finalizer
635
934
  * when it ends.
636
935
  *
936
+ * @example
937
+ * import { Console, Effect, Stream } from "effect"
938
+ *
939
+ * const application = Stream.fromEffect(Console.log("Application Logic."))
940
+ *
941
+ * const deleteDir = (dir: string) => Console.log(`Deleting dir: ${dir}`)
942
+ *
943
+ * const program = application.pipe(
944
+ * Stream.concat(
945
+ * Stream.finalizer(
946
+ * deleteDir("tmp").pipe(
947
+ * Effect.andThen(Console.log("Temporary directory was deleted."))
948
+ * )
949
+ * )
950
+ * )
951
+ * )
952
+ *
953
+ * // Effect.runPromise(Stream.runCollect(program)).then(console.log)
954
+ * // Application Logic.
955
+ * // Deleting dir: tmp
956
+ * // Temporary directory was deleted.
957
+ * // { _id: 'Chunk', values: [ undefined, undefined ] }
958
+ *
637
959
  * @since 2.0.0
638
960
  * @category constructors
639
961
  */
@@ -725,6 +1047,22 @@ export const forever = internal.forever;
725
1047
  /**
726
1048
  * Creates a stream from an `AsyncIterable`.
727
1049
  *
1050
+ * @example
1051
+ * import { Effect, Stream } from "effect"
1052
+ *
1053
+ * const myAsyncIterable = async function*() {
1054
+ * yield 1
1055
+ * yield 2
1056
+ * }
1057
+ *
1058
+ * const stream = Stream.fromAsyncIterable(
1059
+ * myAsyncIterable(),
1060
+ * (e) => new Error(String(e)) // Error Handling
1061
+ * )
1062
+ *
1063
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1064
+ * // { _id: 'Chunk', values: [ 1, 2 ] }
1065
+ *
728
1066
  * @since 2.0.0
729
1067
  * @category constructors
730
1068
  */
@@ -746,6 +1084,15 @@ export const toChannel = internal.toChannel;
746
1084
  /**
747
1085
  * Creates a stream from a `Chunk` of values.
748
1086
  *
1087
+ * @example
1088
+ * import { Chunk, Effect, Stream } from "effect"
1089
+ *
1090
+ * // Creating a stream with values from a single Chunk
1091
+ * const stream = Stream.fromChunk(Chunk.make(1, 2, 3))
1092
+ *
1093
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1094
+ * // { _id: 'Chunk', values: [ 1, 2, 3 ] }
1095
+ *
749
1096
  * @since 2.0.0
750
1097
  * @category constructors
751
1098
  */
@@ -769,6 +1116,15 @@ export const fromChunkQueue = internal.fromChunkQueue;
769
1116
  /**
770
1117
  * Creates a stream from an arbitrary number of chunks.
771
1118
  *
1119
+ * @example
1120
+ * import { Chunk, Effect, Stream } from "effect"
1121
+ *
1122
+ * // Creating a stream with values from multiple Chunks
1123
+ * const stream = Stream.fromChunks(Chunk.make(1, 2, 3), Chunk.make(4, 5, 6))
1124
+ *
1125
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1126
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5, 6 ] }
1127
+ *
772
1128
  * @since 2.0.0
773
1129
  * @category constructors
774
1130
  */
@@ -777,6 +1133,14 @@ export const fromChunks = internal.fromChunks;
777
1133
  * Either emits the success value of this effect or terminates the stream
778
1134
  * with the failure value of this effect.
779
1135
  *
1136
+ * @example
1137
+ * import { Effect, Random, Stream } from "effect"
1138
+ *
1139
+ * const stream = Stream.fromEffect(Random.nextInt)
1140
+ *
1141
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1142
+ * // Example Output: { _id: 'Chunk', values: [ 922694024 ] }
1143
+ *
780
1144
  * @since 2.0.0
781
1145
  * @category constructors
782
1146
  */
@@ -800,6 +1164,16 @@ export const fromPubSub = internal.fromPubSub;
800
1164
  /**
801
1165
  * Creates a new `Stream` from an iterable collection of values.
802
1166
  *
1167
+ * @example
1168
+ * import { Effect, Stream } from "effect"
1169
+ *
1170
+ * const numbers = [1, 2, 3]
1171
+ *
1172
+ * const stream = Stream.fromIterable(numbers)
1173
+ *
1174
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1175
+ * // { _id: 'Chunk', values: [ 1, 2, 3 ] }
1176
+ *
803
1177
  * @since 2.0.0
804
1178
  * @category constructors
805
1179
  */
@@ -807,6 +1181,23 @@ export const fromIterable = internal.fromIterable;
807
1181
  /**
808
1182
  * Creates a stream from an effect producing a value of type `Iterable<A>`.
809
1183
  *
1184
+ * @example
1185
+ * import { Context, Effect, Stream } from "effect"
1186
+ *
1187
+ * class Database extends Context.Tag("Database")<
1188
+ * Database,
1189
+ * { readonly getUsers: Effect.Effect<Array<string>> }
1190
+ * >() {}
1191
+ *
1192
+ * const getUsers = Database.pipe(Effect.andThen((_) => _.getUsers))
1193
+ *
1194
+ * const stream = Stream.fromIterableEffect(getUsers)
1195
+ *
1196
+ * // Effect.runPromise(
1197
+ * // Stream.runCollect(stream.pipe(Stream.provideService(Database, { getUsers: Effect.succeed(["user1", "user2"]) })))
1198
+ * // ).then(console.log)
1199
+ * // { _id: 'Chunk', values: [ 'user1', 'user2' ] }
1200
+ *
810
1201
  * @since 2.0.0
811
1202
  * @category constructors
812
1203
  */
@@ -860,6 +1251,19 @@ export const fromReadableStreamByob = internal.fromReadableStreamByob;
860
1251
  * input. The stream will emit an element for each value output from the
861
1252
  * schedule, continuing for as long as the schedule continues.
862
1253
  *
1254
+ * @example
1255
+ * import { Effect, Schedule, Stream } from "effect"
1256
+ *
1257
+ * // Emits values every 1 second for a total of 5 emissions
1258
+ * const schedule = Schedule.spaced("1 second").pipe(
1259
+ * Schedule.compose(Schedule.recurs(5))
1260
+ * )
1261
+ *
1262
+ * const stream = Stream.fromSchedule(schedule)
1263
+ *
1264
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1265
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
1266
+ *
863
1267
  * @since 2.0.0
864
1268
  * @category constructors
865
1269
  */
@@ -875,6 +1279,35 @@ export const groupAdjacentBy = internal.groupAdjacentBy;
875
1279
  /**
876
1280
  * More powerful version of `Stream.groupByKey`.
877
1281
  *
1282
+ * @example
1283
+ * import { Chunk, Effect, GroupBy, Stream } from "effect"
1284
+ *
1285
+ * const groupByKeyResult = Stream.fromIterable([
1286
+ * "Mary",
1287
+ * "James",
1288
+ * "Robert",
1289
+ * "Patricia",
1290
+ * "John",
1291
+ * "Jennifer",
1292
+ * "Rebecca",
1293
+ * "Peter"
1294
+ * ]).pipe(
1295
+ * Stream.groupBy((name) => Effect.succeed([name.substring(0, 1), name]))
1296
+ * )
1297
+ *
1298
+ * const stream = GroupBy.evaluate(groupByKeyResult, (key, stream) =>
1299
+ * Stream.fromEffect(
1300
+ * Stream.runCollect(stream).pipe(
1301
+ * Effect.andThen((chunk) => [key, Chunk.size(chunk)] as const)
1302
+ * )
1303
+ * ))
1304
+ *
1305
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1306
+ * // {
1307
+ * // _id: 'Chunk',
1308
+ * // values: [ [ 'M', 1 ], [ 'J', 3 ], [ 'R', 2 ], [ 'P', 2 ] ]
1309
+ * // }
1310
+ *
878
1311
  * @since 2.0.0
879
1312
  * @category grouping
880
1313
  */
@@ -920,6 +1353,22 @@ export const groupByKey = _groupBy.groupByKey;
920
1353
  /**
921
1354
  * Partitions the stream with specified `chunkSize`.
922
1355
  *
1356
+ * @example
1357
+ * import { Effect, Stream } from "effect"
1358
+ *
1359
+ * const stream = Stream.range(0, 8).pipe(Stream.grouped(3))
1360
+ *
1361
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunks) => console.log("%o", chunks))
1362
+ * // {
1363
+ * // _id: 'Chunk',
1364
+ * // values: [
1365
+ * // { _id: 'Chunk', values: [ 0, 1, 2, [length]: 3 ] },
1366
+ * // { _id: 'Chunk', values: [ 3, 4, 5, [length]: 3 ] },
1367
+ * // { _id: 'Chunk', values: [ 6, 7, 8, [length]: 3 ] },
1368
+ * // [length]: 3
1369
+ * // ]
1370
+ * // }
1371
+ *
923
1372
  * @since 2.0.0
924
1373
  * @category utils
925
1374
  */
@@ -928,6 +1377,43 @@ export const grouped = internal.grouped;
928
1377
  * Partitions the stream with the specified `chunkSize` or until the specified
929
1378
  * `duration` has passed, whichever is satisfied first.
930
1379
  *
1380
+ * @example
1381
+ * import { Chunk, Effect, Schedule, Stream } from "effect"
1382
+ *
1383
+ * const stream = Stream.range(0, 9).pipe(
1384
+ * Stream.repeat(Schedule.spaced("1 second")),
1385
+ * Stream.groupedWithin(18, "1.5 seconds"),
1386
+ * Stream.take(3)
1387
+ * )
1388
+ *
1389
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunks) => console.log(Chunk.toArray(chunks)))
1390
+ * // [
1391
+ * // {
1392
+ * // _id: 'Chunk',
1393
+ * // values: [
1394
+ * // 0, 1, 2, 3, 4, 5, 6,
1395
+ * // 7, 8, 9, 0, 1, 2, 3,
1396
+ * // 4, 5, 6, 7
1397
+ * // ]
1398
+ * // },
1399
+ * // {
1400
+ * // _id: 'Chunk',
1401
+ * // values: [
1402
+ * // 8, 9, 0, 1, 2,
1403
+ * // 3, 4, 5, 6, 7,
1404
+ * // 8, 9
1405
+ * // ]
1406
+ * // },
1407
+ * // {
1408
+ * // _id: 'Chunk',
1409
+ * // values: [
1410
+ * // 0, 1, 2, 3, 4, 5, 6,
1411
+ * // 7, 8, 9, 0, 1, 2, 3,
1412
+ * // 4, 5, 6, 7
1413
+ * // ]
1414
+ * // }
1415
+ * // ]
1416
+ *
931
1417
  * @since 2.0.0
932
1418
  * @category utils
933
1419
  */
@@ -979,6 +1465,16 @@ export const identity = internal.identityStream;
979
1465
  * one stream is exhausted all remaining values in the other stream will be
980
1466
  * pulled.
981
1467
  *
1468
+ * @example
1469
+ * import { Effect, Stream } from "effect"
1470
+ *
1471
+ * const s1 = Stream.make(1, 2, 3)
1472
+ * const s2 = Stream.make(4, 5, 6)
1473
+ *
1474
+ * const stream = Stream.interleave(s1, s2)
1475
+ *
1476
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1477
+ * // { _id: 'Chunk', values: [ 1, 4, 2, 5, 3, 6 ] }
982
1478
  * @since 2.0.0
983
1479
  * @category utils
984
1480
  */
@@ -992,6 +1488,25 @@ export const interleave = internal.interleave;
992
1488
  * stream are exhausted further requests for values from that stream will be
993
1489
  * ignored.
994
1490
  *
1491
+ * @example
1492
+ * import { Effect, Stream } from "effect"
1493
+ *
1494
+ * const s1 = Stream.make(1, 3, 5, 7, 9)
1495
+ * const s2 = Stream.make(2, 4, 6, 8, 10)
1496
+ *
1497
+ * const booleanStream = Stream.make(true, false, false).pipe(Stream.forever)
1498
+ *
1499
+ * const stream = Stream.interleaveWith(s1, s2, booleanStream)
1500
+ *
1501
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1502
+ * // {
1503
+ * // _id: 'Chunk',
1504
+ * // values: [
1505
+ * // 1, 2, 4, 3, 6,
1506
+ * // 8, 5, 10, 7, 9
1507
+ * // ]
1508
+ * // }
1509
+ *
995
1510
  * @since 2.0.0
996
1511
  * @category utils
997
1512
  */
@@ -999,6 +1514,20 @@ export const interleaveWith = internal.interleaveWith;
999
1514
  /**
1000
1515
  * Intersperse stream with provided `element`.
1001
1516
  *
1517
+ * @example
1518
+ * import { Effect, Stream } from "effect"
1519
+ *
1520
+ * const stream = Stream.make(1, 2, 3, 4, 5).pipe(Stream.intersperse(0))
1521
+ *
1522
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1523
+ * // {
1524
+ * // _id: 'Chunk',
1525
+ * // values: [
1526
+ * // 1, 0, 2, 0, 3,
1527
+ * // 0, 4, 0, 5
1528
+ * // ]
1529
+ * // }
1530
+ *
1002
1531
  * @since 2.0.0
1003
1532
  * @category utils
1004
1533
  */
@@ -1006,6 +1535,27 @@ export const intersperse = internal.intersperse;
1006
1535
  /**
1007
1536
  * Intersperse the specified element, also adding a prefix and a suffix.
1008
1537
  *
1538
+ * @example
1539
+ * import { Effect, Stream } from "effect"
1540
+ *
1541
+ * const stream = Stream.make(1, 2, 3, 4, 5).pipe(
1542
+ * Stream.intersperseAffixes({
1543
+ * start: "[",
1544
+ * middle: "-",
1545
+ * end: "]"
1546
+ * })
1547
+ * )
1548
+ *
1549
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1550
+ * // {
1551
+ * // _id: 'Chunk',
1552
+ * // values: [
1553
+ * // '[', 1, '-', 2, '-',
1554
+ * // 3, '-', 4, '-', 5,
1555
+ * // ']'
1556
+ * // ]
1557
+ * // }
1558
+ *
1009
1559
  * @since 2.0.0
1010
1560
  * @category utils
1011
1561
  */
@@ -1046,6 +1596,15 @@ export const interruptWhenDeferred = internal.interruptWhenDeferred;
1046
1596
  * The infinite stream of iterative function application: a, f(a), f(f(a)),
1047
1597
  * f(f(f(a))), ...
1048
1598
  *
1599
+ * @example
1600
+ * import { Effect, Stream } from "effect"
1601
+ *
1602
+ * // An infinite Stream of numbers starting from 1 and incrementing
1603
+ * const stream = Stream.iterate(1, (n) => n + 1)
1604
+ *
1605
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(10)))).then(console.log)
1606
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] }
1607
+ *
1049
1608
  * @since 2.0.0
1050
1609
  * @category constructors
1051
1610
  */
@@ -1053,6 +1612,14 @@ export const iterate = internal.iterate;
1053
1612
  /**
1054
1613
  * Creates a stream from an sequence of values.
1055
1614
  *
1615
+ * @example
1616
+ * import { Effect, Stream } from "effect"
1617
+ *
1618
+ * const stream = Stream.make(1, 2, 3)
1619
+ *
1620
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1621
+ * // { _id: 'Chunk', values: [ 1, 2, 3 ] }
1622
+ *
1056
1623
  * @since 2.0.0
1057
1624
  * @category constructors
1058
1625
  */
@@ -1060,6 +1627,14 @@ export const make = internal.make;
1060
1627
  /**
1061
1628
  * Transforms the elements of this stream using the supplied function.
1062
1629
  *
1630
+ * @example
1631
+ * import { Effect, Stream } from "effect"
1632
+ *
1633
+ * const stream = Stream.make(1, 2, 3).pipe(Stream.map((n) => n + 1))
1634
+ *
1635
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1636
+ * // { _id: 'Chunk', values: [ 2, 3, 4 ] }
1637
+ *
1063
1638
  * @since 2.0.0
1064
1639
  * @category mapping
1065
1640
  */
@@ -1067,6 +1642,18 @@ export const map = internal.map;
1067
1642
  /**
1068
1643
  * Statefully maps over the elements of this stream to produce new elements.
1069
1644
  *
1645
+ * @example
1646
+ * import { Effect, Stream } from "effect"
1647
+ *
1648
+ * const runningTotal = (stream: Stream.Stream<number>): Stream.Stream<number> =>
1649
+ * stream.pipe(Stream.mapAccum(0, (s, a) => [s + a, s + a]))
1650
+ *
1651
+ * // input: 0, 1, 2, 3, 4, 5, 6
1652
+ * // Effect.runPromise(Stream.runCollect(runningTotal(Stream.range(0, 6)))).then(
1653
+ * // console.log
1654
+ * // )
1655
+ * // { _id: "Chunk", values: [ 0, 1, 3, 6, 10, 15, 21 ] }
1656
+ *
1070
1657
  * @since 2.0.0
1071
1658
  * @category mapping
1072
1659
  */
@@ -1105,6 +1692,17 @@ export const mapChunksEffect = internal.mapChunksEffect;
1105
1692
  * Maps each element to an iterable, and flattens the iterables into the
1106
1693
  * output of this stream.
1107
1694
  *
1695
+ * @example
1696
+ * import { Effect, Stream } from "effect"
1697
+ *
1698
+ * const numbers = Stream.make("1-2-3", "4-5", "6").pipe(
1699
+ * Stream.mapConcat((s) => s.split("-")),
1700
+ * Stream.map((s) => parseInt(s))
1701
+ * )
1702
+ *
1703
+ * // Effect.runPromise(Stream.runCollect(numbers)).then(console.log)
1704
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5, 6 ] }
1705
+ *
1108
1706
  * @since 2.0.0
1109
1707
  * @category mapping
1110
1708
  */
@@ -1136,6 +1734,16 @@ export const mapConcatEffect = internal.mapConcatEffect;
1136
1734
  /**
1137
1735
  * Maps over elements of the stream with the specified effectful function.
1138
1736
  *
1737
+ * @example
1738
+ * import { Effect, Random, Stream } from "effect"
1739
+ *
1740
+ * const stream = Stream.make(10, 20, 30).pipe(
1741
+ * Stream.mapEffect((n) => Random.nextIntBetween(0, n))
1742
+ * )
1743
+ *
1744
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1745
+ * // Example Output: { _id: 'Chunk', values: [ 7, 19, 8 ] }
1746
+ *
1139
1747
  * @since 2.0.0
1140
1748
  * @category mapping
1141
1749
  */
@@ -1160,6 +1768,21 @@ export const mapErrorCause = internal.mapErrorCause;
1160
1768
  * New produced stream will terminate when both specified stream terminate if
1161
1769
  * no termination strategy is specified.
1162
1770
  *
1771
+ * @example
1772
+ * import { Effect, Schedule, Stream } from "effect"
1773
+ *
1774
+ * const s1 = Stream.make(1, 2, 3).pipe(
1775
+ * Stream.schedule(Schedule.spaced("100 millis"))
1776
+ * )
1777
+ * const s2 = Stream.make(4, 5, 6).pipe(
1778
+ * Stream.schedule(Schedule.spaced("200 millis"))
1779
+ * )
1780
+ *
1781
+ * const stream = Stream.merge(s1, s2)
1782
+ *
1783
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1784
+ * // { _id: 'Chunk', values: [ 1, 4, 2, 3, 5, 6 ] }
1785
+ *
1163
1786
  * @since 2.0.0
1164
1787
  * @category utils
1165
1788
  */
@@ -1180,6 +1803,24 @@ export const mergeAll = internal.mergeAll;
1180
1803
  * New produced stream will terminate when both specified stream terminate if
1181
1804
  * no termination strategy is specified.
1182
1805
  *
1806
+ * @example
1807
+ * import { Effect, Schedule, Stream } from "effect"
1808
+ *
1809
+ * const s1 = Stream.make("1", "2", "3").pipe(
1810
+ * Stream.schedule(Schedule.spaced("100 millis"))
1811
+ * )
1812
+ * const s2 = Stream.make(4.1, 5.3, 6.2).pipe(
1813
+ * Stream.schedule(Schedule.spaced("200 millis"))
1814
+ * )
1815
+ *
1816
+ * const stream = Stream.mergeWith(s1, s2, {
1817
+ * onSelf: (s) => parseInt(s),
1818
+ * onOther: (n) => Math.floor(n)
1819
+ * })
1820
+ *
1821
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1822
+ * // { _id: 'Chunk', values: [ 1, 4, 2, 3, 5, 6 ] }
1823
+ *
1183
1824
  * @since 2.0.0
1184
1825
  * @category utils
1185
1826
  */
@@ -1317,6 +1958,17 @@ export const orElseSucceed = internal.orElseSucceed;
1317
1958
  * than the unfolding of the state. This is useful for embedding paginated
1318
1959
  * APIs, hence the name.
1319
1960
  *
1961
+ * @example
1962
+ * import { Effect, Option, Stream } from "effect"
1963
+ *
1964
+ * const stream = Stream.paginate(0, (n) => [
1965
+ * n,
1966
+ * n < 3 ? Option.some(n + 1) : Option.none()
1967
+ * ])
1968
+ *
1969
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
1970
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3 ] }
1971
+ *
1320
1972
  * @since 2.0.0
1321
1973
  * @category constructors
1322
1974
  */
@@ -1354,6 +2006,25 @@ export const paginateEffect = internal.paginateEffect;
1354
2006
  * evaluated to false. The faster stream may advance by up to buffer elements
1355
2007
  * further than the slower one.
1356
2008
  *
2009
+ * @example
2010
+ * import { Effect, Stream } from "effect"
2011
+ *
2012
+ * const partition = Stream.range(1, 10).pipe(
2013
+ * Stream.partition((n) => n % 2 === 0, { bufferSize: 5 })
2014
+ * )
2015
+ *
2016
+ * const program = Effect.scoped(
2017
+ * Effect.gen(function*() {
2018
+ * const [evens, odds] = yield* partition
2019
+ * console.log(yield* Stream.runCollect(evens))
2020
+ * console.log(yield* Stream.runCollect(odds))
2021
+ * })
2022
+ * )
2023
+ *
2024
+ * // Effect.runPromise(program)
2025
+ * // { _id: 'Chunk', values: [ 2, 4, 6, 8, 10 ] }
2026
+ * // { _id: 'Chunk', values: [ 1, 3, 5, 7, 9 ] }
2027
+ *
1357
2028
  * @since 2.0.0
1358
2029
  * @category utils
1359
2030
  */
@@ -1362,6 +2033,28 @@ export const partition = internal.partition;
1362
2033
  * Split a stream by an effectful predicate. The faster stream may advance by
1363
2034
  * up to buffer elements further than the slower one.
1364
2035
  *
2036
+ * @example
2037
+ * import { Effect, Either, Stream } from "effect"
2038
+ *
2039
+ * const partition = Stream.range(1, 9).pipe(
2040
+ * Stream.partitionEither(
2041
+ * (n) => Effect.succeed(n % 2 === 0 ? Either.left(n) : Either.right(n)),
2042
+ * { bufferSize: 5 }
2043
+ * )
2044
+ * )
2045
+ *
2046
+ * const program = Effect.scoped(
2047
+ * Effect.gen(function*() {
2048
+ * const [evens, odds] = yield* partition
2049
+ * console.log(yield* Stream.runCollect(evens))
2050
+ * console.log(yield* Stream.runCollect(odds))
2051
+ * })
2052
+ * )
2053
+ *
2054
+ * // Effect.runPromise(program)
2055
+ * // { _id: 'Chunk', values: [ 2, 4, 6, 8 ] }
2056
+ * // { _id: 'Chunk', values: [ 1, 3, 5, 7, 9 ] }
2057
+ *
1365
2058
  * @since 2.0.0
1366
2059
  * @category utils
1367
2060
  */
@@ -1465,6 +2158,15 @@ export const provideSomeLayer = internal.provideSomeLayer;
1465
2158
  /**
1466
2159
  * Constructs a stream from a range of integers, including both endpoints.
1467
2160
  *
2161
+ * @example
2162
+ * import { Effect, Stream } from "effect"
2163
+ *
2164
+ * // A Stream with a range of numbers from 1 to 5
2165
+ * const stream = Stream.range(1, 5)
2166
+ *
2167
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2168
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
2169
+ *
1468
2170
  * @since 2.0.0
1469
2171
  * @category constructors
1470
2172
  */
@@ -1496,6 +2198,14 @@ export const refineOrDieWith = internal.refineOrDieWith;
1496
2198
  * Repeats the entire stream using the specified schedule. The stream will
1497
2199
  * execute normally, and then repeat again according to the provided schedule.
1498
2200
  *
2201
+ * @example
2202
+ * import { Effect, Schedule, Stream } from "effect"
2203
+ *
2204
+ * const stream = Stream.repeat(Stream.succeed(1), Schedule.forever)
2205
+ *
2206
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
2207
+ * // { _id: 'Chunk', values: [ 1, 1, 1, 1, 1 ] }
2208
+ *
1499
2209
  * @since 2.0.0
1500
2210
  * @category utils
1501
2211
  */
@@ -1504,6 +2214,14 @@ export const repeat = internal.repeat;
1504
2214
  * Creates a stream from an effect producing a value of type `A` which repeats
1505
2215
  * forever.
1506
2216
  *
2217
+ * @example
2218
+ * import { Effect, Random, Stream } from "effect"
2219
+ *
2220
+ * const stream = Stream.repeatEffect(Random.nextInt)
2221
+ *
2222
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
2223
+ * // Example Output: { _id: 'Chunk', values: [ 3891571149, 4239494205, 2352981603, 2339111046, 1488052210 ] }
2224
+ *
1507
2225
  * @since 2.0.0
1508
2226
  * @category constructors
1509
2227
  */
@@ -1528,6 +2246,22 @@ export const repeatEffectChunkOption = internal.repeatEffectChunkOption;
1528
2246
  * Creates a stream from an effect producing values of type `A` until it fails
1529
2247
  * with `None`.
1530
2248
  *
2249
+ * @example
2250
+ * // In this example, we're draining an Iterator to create a stream from it
2251
+ * import { Stream, Effect, Option } from "effect"
2252
+ *
2253
+ * const drainIterator = <A>(it: Iterator<A>): Stream.Stream<A> =>
2254
+ * Stream.repeatEffectOption(
2255
+ * Effect.sync(() => it.next()).pipe(
2256
+ * Effect.andThen((res) => {
2257
+ * if (res.done) {
2258
+ * return Effect.fail(Option.none())
2259
+ * }
2260
+ * return Effect.succeed(res.value)
2261
+ * })
2262
+ * )
2263
+ * )
2264
+ *
1531
2265
  * @since 2.0.0
1532
2266
  * @category constructors
1533
2267
  */
@@ -1579,6 +2313,14 @@ export const repeatElementsWith = internal.repeatElementsWith;
1579
2313
  /**
1580
2314
  * Repeats the provided value infinitely.
1581
2315
  *
2316
+ * @example
2317
+ * import { Effect, Stream } from "effect"
2318
+ *
2319
+ * const stream = Stream.repeatValue(0)
2320
+ *
2321
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
2322
+ * // { _id: 'Chunk', values: [ 0, 0, 0, 0, 0 ] }
2323
+ *
1582
2324
  * @since 2.0.0
1583
2325
  * @category constructors
1584
2326
  */
@@ -1820,6 +2562,14 @@ export const runSum = internal.runSum;
1820
2562
  * Statefully maps over the elements of this stream to produce all
1821
2563
  * intermediate results of type `S` given an initial S.
1822
2564
  *
2565
+ * @example
2566
+ * import { Effect, Stream } from "effect"
2567
+ *
2568
+ * const stream = Stream.range(1, 6).pipe(Stream.scan(0, (a, b) => a + b))
2569
+ *
2570
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2571
+ * // { _id: 'Chunk', values: [ 0, 1, 3, 6, 10, 15, 21 ] }
2572
+ *
1823
2573
  * @since 2.0.0
1824
2574
  * @category utils
1825
2575
  */
@@ -1871,6 +2621,24 @@ export const scheduleWith = internal.scheduleWith;
1871
2621
  /**
1872
2622
  * Creates a single-valued stream from a scoped resource.
1873
2623
  *
2624
+ * @example
2625
+ * import { Console, Effect, Stream } from "effect"
2626
+ *
2627
+ * // Creating a single-valued stream from a scoped resource
2628
+ * const stream = Stream.scoped(
2629
+ * Effect.acquireUseRelease(
2630
+ * Console.log("acquire"),
2631
+ * () => Console.log("use"),
2632
+ * () => Console.log("release")
2633
+ * )
2634
+ * )
2635
+ *
2636
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2637
+ * // acquire
2638
+ * // use
2639
+ * // release
2640
+ * // { _id: 'Chunk', values: [ undefined ] }
2641
+ *
1874
2642
  * @since 2.0.0
1875
2643
  * @category constructors
1876
2644
  */
@@ -1959,6 +2727,15 @@ export const splitLines = internal.splitLines;
1959
2727
  /**
1960
2728
  * Creates a single-valued pure stream.
1961
2729
  *
2730
+ * @example
2731
+ * import { Effect, Stream } from "effect"
2732
+ *
2733
+ * // A Stream with a single number
2734
+ * const stream = Stream.succeed(3)
2735
+ *
2736
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2737
+ * // { _id: 'Chunk', values: [ 3 ] }
2738
+ *
1962
2739
  * @since 2.0.0
1963
2740
  * @category constructors
1964
2741
  */
@@ -1980,6 +2757,14 @@ export const suspend = internal.suspend;
1980
2757
  /**
1981
2758
  * Takes the specified number of elements from this stream.
1982
2759
  *
2760
+ * @example
2761
+ * import { Effect, Stream } from "effect"
2762
+ *
2763
+ * const stream = Stream.take(Stream.iterate(0, (n) => n + 1), 5)
2764
+ *
2765
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2766
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
2767
+ *
1983
2768
  * @since 2.0.0
1984
2769
  * @category utils
1985
2770
  */
@@ -1987,6 +2772,14 @@ export const take = internal.take;
1987
2772
  /**
1988
2773
  * Takes the last specified number of elements from this stream.
1989
2774
  *
2775
+ * @example
2776
+ * import { Effect, Stream } from "effect"
2777
+ *
2778
+ * const stream = Stream.takeRight(Stream.make(1, 2, 3, 4, 5, 6), 3)
2779
+ *
2780
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2781
+ * // { _id: 'Chunk', values: [ 4, 5, 6 ] }
2782
+ *
1990
2783
  * @since 2.0.0
1991
2784
  * @category utils
1992
2785
  */
@@ -1995,6 +2788,14 @@ export const takeRight = internal.takeRight;
1995
2788
  * Takes all elements of the stream until the specified predicate evaluates to
1996
2789
  * `true`.
1997
2790
  *
2791
+ * @example
2792
+ * import { Effect, Stream } from "effect"
2793
+ *
2794
+ * const stream = Stream.takeUntil(Stream.iterate(0, (n) => n + 1), (n) => n === 4)
2795
+ *
2796
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2797
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
2798
+ *
1998
2799
  * @since 2.0.0
1999
2800
  * @category utils
2000
2801
  */
@@ -2011,6 +2812,14 @@ export const takeUntilEffect = internal.takeUntilEffect;
2011
2812
  * Takes all elements of the stream for as long as the specified predicate
2012
2813
  * evaluates to `true`.
2013
2814
  *
2815
+ * @example
2816
+ * import { Effect, Stream } from "effect"
2817
+ *
2818
+ * const stream = Stream.takeWhile(Stream.iterate(0, (n) => n + 1), (n) => n < 5)
2819
+ *
2820
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2821
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
2822
+ *
2014
2823
  * @since 2.0.0
2015
2824
  * @category utils
2016
2825
  */
@@ -2018,6 +2827,24 @@ export const takeWhile = internal.takeWhile;
2018
2827
  /**
2019
2828
  * Adds an effect to consumption of every element of the stream.
2020
2829
  *
2830
+ * @example
2831
+ * import { Console, Effect, Stream } from "effect"
2832
+ *
2833
+ * const stream = Stream.make(1, 2, 3).pipe(
2834
+ * Stream.tap((n) => Console.log(`before mapping: ${n}`)),
2835
+ * Stream.map((n) => n * 2),
2836
+ * Stream.tap((n) => Console.log(`after mapping: ${n}`))
2837
+ * )
2838
+ *
2839
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2840
+ * // before mapping: 1
2841
+ * // after mapping: 2
2842
+ * // before mapping: 2
2843
+ * // after mapping: 4
2844
+ * // before mapping: 3
2845
+ * // after mapping: 6
2846
+ * // { _id: 'Chunk', values: [ 2, 4, 6 ] }
2847
+ *
2021
2848
  * @since 2.0.0
2022
2849
  * @category sequencing
2023
2850
  */
@@ -2058,7 +2885,7 @@ export const tapSink = internal.tapSink;
2058
2885
  * parameters using the token bucket algorithm. Allows for burst in the
2059
2886
  * processing of elements by allowing the token bucket to accumulate tokens up
2060
2887
  * to a `units + burst` threshold. The weight of each chunk is determined by
2061
- * the `costFn` function.
2888
+ * the `cost` function.
2062
2889
  *
2063
2890
  * If using the "enforce" strategy, chunks that do not meet the bandwidth
2064
2891
  * constraints are dropped. If using the "shape" strategy, chunks are delayed
@@ -2066,6 +2893,43 @@ export const tapSink = internal.tapSink;
2066
2893
  *
2067
2894
  * Defaults to the "shape" strategy.
2068
2895
  *
2896
+ * @example
2897
+ * import { Chunk, Effect, Schedule, Stream } from "effect"
2898
+ *
2899
+ * let last = Date.now()
2900
+ * const log = (message: string) =>
2901
+ * Effect.sync(() => {
2902
+ * const end = Date.now()
2903
+ * console.log(`${message} after ${end - last}ms`)
2904
+ * last = end
2905
+ * })
2906
+ *
2907
+ * const stream = Stream.fromSchedule(Schedule.spaced("50 millis")).pipe(
2908
+ * Stream.take(6),
2909
+ * Stream.tap((n) => log(`Received ${n}`)),
2910
+ * Stream.throttle({
2911
+ * cost: Chunk.size,
2912
+ * duration: "100 millis",
2913
+ * units: 1
2914
+ * }),
2915
+ * Stream.tap((n) => log(`> Emitted ${n}`))
2916
+ * )
2917
+ *
2918
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2919
+ * // Received 0 after 56ms
2920
+ * // > Emitted 0 after 0ms
2921
+ * // Received 1 after 52ms
2922
+ * // > Emitted 1 after 48ms
2923
+ * // Received 2 after 52ms
2924
+ * // > Emitted 2 after 49ms
2925
+ * // Received 3 after 52ms
2926
+ * // > Emitted 3 after 48ms
2927
+ * // Received 4 after 52ms
2928
+ * // > Emitted 4 after 47ms
2929
+ * // Received 5 after 52ms
2930
+ * // > Emitted 5 after 49ms
2931
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4, 5 ] }
2932
+ *
2069
2933
  * @since 2.0.0
2070
2934
  * @category utils
2071
2935
  */
@@ -2090,6 +2954,27 @@ export const throttleEffect = internal.throttleEffect;
2090
2954
  /**
2091
2955
  * A stream that emits void values spaced by the specified duration.
2092
2956
  *
2957
+ * @example
2958
+ * import { Effect, Stream } from "effect"
2959
+ *
2960
+ * let last = Date.now()
2961
+ * const log = (message: string) =>
2962
+ * Effect.sync(() => {
2963
+ * const end = Date.now()
2964
+ * console.log(`${message} after ${end - last}ms`)
2965
+ * last = end
2966
+ * })
2967
+ *
2968
+ * const stream = Stream.tick("1 seconds").pipe(Stream.tap(() => log("tick")))
2969
+ *
2970
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
2971
+ * // tick after 4ms
2972
+ * // tick after 1003ms
2973
+ * // tick after 1001ms
2974
+ * // tick after 1002ms
2975
+ * // tick after 1002ms
2976
+ * // { _id: 'Chunk', values: [ undefined, undefined, undefined, undefined, undefined ] }
2977
+ *
2093
2978
  * @since 2.0.0
2094
2979
  * @category constructors
2095
2980
  */
@@ -2139,6 +3024,32 @@ export const toPubSub = internal.toPubSub;
2139
3024
  * finished, or with Some error if it fails, otherwise it returns a chunk of
2140
3025
  * the stream's output.
2141
3026
  *
3027
+ * @example
3028
+ * import { Effect, Stream } from "effect"
3029
+ *
3030
+ * // Simulate a chunked stream
3031
+ * const stream = Stream.fromIterable([1, 2, 3, 4, 5]).pipe(Stream.rechunk(2))
3032
+ *
3033
+ * const program = Effect.gen(function*() {
3034
+ * // Create an effect to get data chunks from the stream
3035
+ * const getChunk = yield* Stream.toPull(stream)
3036
+ *
3037
+ * // Continuously fetch and process chunks
3038
+ * while (true) {
3039
+ * const chunk = yield* getChunk
3040
+ * console.log(chunk)
3041
+ * }
3042
+ * })
3043
+ *
3044
+ * // Effect.runPromise(Effect.scoped(program)).then(console.log, console.error)
3045
+ * // { _id: 'Chunk', values: [ 1, 2 ] }
3046
+ * // { _id: 'Chunk', values: [ 3, 4 ] }
3047
+ * // { _id: 'Chunk', values: [ 5 ] }
3048
+ * // (FiberFailure) Error: {
3049
+ * // "_id": "Option",
3050
+ * // "_tag": "None"
3051
+ * // }
3052
+ *
2142
3053
  * @since 2.0.0
2143
3054
  * @category destructors
2144
3055
  */
@@ -2200,6 +3111,14 @@ export const transduce = internal.transduce;
2200
3111
  /**
2201
3112
  * Creates a stream by peeling off the "layers" of a value of type `S`.
2202
3113
  *
3114
+ * @example
3115
+ * import { Effect, Option, Stream } from "effect"
3116
+ *
3117
+ * const stream = Stream.unfold(1, (n) => Option.some([n, n + 1]))
3118
+ *
3119
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
3120
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
3121
+ *
2203
3122
  * @since 2.0.0
2204
3123
  * @category constructors
2205
3124
  */
@@ -2223,6 +3142,17 @@ export const unfoldChunkEffect = internal.unfoldChunkEffect;
2223
3142
  * Creates a stream by effectfully peeling off the "layers" of a value of type
2224
3143
  * `S`.
2225
3144
  *
3145
+ * @example
3146
+ * import { Effect, Option, Random, Stream } from "effect"
3147
+ *
3148
+ * const stream = Stream.unfoldEffect(1, (n) =>
3149
+ * Random.nextBoolean.pipe(
3150
+ * Effect.map((b) => (b ? Option.some([n, -n]) : Option.some([n, n])))
3151
+ * ))
3152
+ *
3153
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
3154
+ * // { _id: 'Chunk', values: [ 1, -1, -1, -1, -1 ] }
3155
+ *
2226
3156
  * @since 2.0.0
2227
3157
  * @category constructors
2228
3158
  */
@@ -2232,6 +3162,14 @@ export {
2232
3162
  /**
2233
3163
  * A stream that contains a single `void` value.
2234
3164
  *
3165
+ * @example
3166
+ * import { Effect, Stream } from "effect"
3167
+ *
3168
+ * const stream = Stream.void
3169
+ *
3170
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3171
+ * // { _id: 'Chunk', values: [ undefined ] }
3172
+ *
2235
3173
  * @since 2.0.0
2236
3174
  * @category constructors
2237
3175
  */
@@ -2302,6 +3240,18 @@ export const withSpan = internal.withSpan;
2302
3240
  *
2303
3241
  * The new stream will end when one of the sides ends.
2304
3242
  *
3243
+ * @example
3244
+ * import { Effect, Stream } from "effect"
3245
+ *
3246
+ * // We create two streams and zip them together.
3247
+ * const stream = Stream.zip(
3248
+ * Stream.make(1, 2, 3, 4, 5, 6),
3249
+ * Stream.make("a", "b", "c")
3250
+ * )
3251
+ *
3252
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3253
+ * // { _id: 'Chunk', values: [ [ 1, 'a' ], [ 2, 'b' ], [ 3, 'c' ] ] }
3254
+ *
2305
3255
  * @since 2.0.0
2306
3256
  * @category zipping
2307
3257
  */
@@ -2323,6 +3273,18 @@ export const zipFlatten = internal.zipFlatten;
2323
3273
  * The defaults `defaultLeft` and `defaultRight` will be used if the streams
2324
3274
  * have different lengths and one of the streams has ended before the other.
2325
3275
  *
3276
+ * @example
3277
+ * import { Effect, Stream } from "effect"
3278
+ *
3279
+ * const stream = Stream.zipAll(Stream.make(1, 2, 3, 4, 5, 6), {
3280
+ * other: Stream.make("a", "b", "c"),
3281
+ * defaultSelf: 0,
3282
+ * defaultOther: "x"
3283
+ * })
3284
+ *
3285
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3286
+ * // { _id: "Chunk", values: [ [ 1, "a" ], [ 2, "b" ], [ 3, "c" ], [ 4, "x" ], [ 5, "x" ], [ 6, "x" ] ] }
3287
+ *
2326
3288
  * @since 2.0.0
2327
3289
  * @category zipping
2328
3290
  */
@@ -2414,6 +3376,19 @@ export const zipAllSortedByKeyWith = internal.zipAllSortedByKeyWith;
2414
3376
  * The functions `left` and `right` will be used if the streams have different
2415
3377
  * lengths and one of the streams has ended before the other.
2416
3378
  *
3379
+ * @example
3380
+ * import { Effect, Stream } from "effect"
3381
+ *
3382
+ * const stream = Stream.zipAllWith(Stream.make(1, 2, 3, 4, 5, 6), {
3383
+ * other: Stream.make("a", "b", "c"),
3384
+ * onSelf: (n) => [n, "x"],
3385
+ * onOther: (s) => [0, s],
3386
+ * onBoth: (n, s) => [n - s.length, s]
3387
+ * })
3388
+ *
3389
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3390
+ * // { _id: "Chunk", values: [ [ 0, "a" ], [ 1, "b" ], [ 2, "c" ], [ 4, "x" ], [ 5, "x" ], [ 6, "x" ] ] }
3391
+ *
2417
3392
  * @since 2.0.0
2418
3393
  * @category zipping
2419
3394
  */
@@ -2427,6 +3402,22 @@ export const zipAllWith = internal.zipAllWith;
2427
3402
  * that emitted elements that are not the last value in chunks will never be
2428
3403
  * used for zipping.
2429
3404
  *
3405
+ * @example
3406
+ * import { Effect, Schedule, Stream } from "effect"
3407
+ *
3408
+ * const s1 = Stream.make(1, 2, 3).pipe(
3409
+ * Stream.schedule(Schedule.spaced("1 second"))
3410
+ * )
3411
+ *
3412
+ * const s2 = Stream.make("a", "b", "c", "d").pipe(
3413
+ * Stream.schedule(Schedule.spaced("500 millis"))
3414
+ * )
3415
+ *
3416
+ * const stream = Stream.zipLatest(s1, s2)
3417
+ *
3418
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3419
+ * // { _id: "Chunk", values: [ [ 1, "a" ], [ 1, "b" ], [ 2, "b" ], [ 2, "c" ], [ 2, "d" ], [ 3, "d" ] ] }
3420
+ *
2430
3421
  * @since 2.0.0
2431
3422
  * @category zipping
2432
3423
  */
@@ -2448,7 +3439,7 @@ export const zipLatest = internal.zipLatest;
2448
3439
  * Stream.fromSchedule(Schedule.spaced('4 millis')),
2449
3440
  * ).pipe(Stream.take(6), Stream.tap(Console.log))
2450
3441
  *
2451
- * Effect.runPromise(Stream.runDrain(stream))
3442
+ * // Effect.runPromise(Stream.runDrain(stream))
2452
3443
  * // Output:
2453
3444
  * // [ 0, 0, 0 ]
2454
3445
  * // [ 1, 0, 0 ]
@@ -2501,6 +3492,19 @@ export const zipRight = internal.zipRight;
2501
3492
  *
2502
3493
  * The new stream will end when one of the sides ends.
2503
3494
  *
3495
+ * @example
3496
+ * import { Effect, Stream } from "effect"
3497
+ *
3498
+ * // We create two streams and zip them with custom logic.
3499
+ * const stream = Stream.zipWith(
3500
+ * Stream.make(1, 2, 3, 4, 5, 6),
3501
+ * Stream.make("a", "b", "c"),
3502
+ * (n, s) => [n - s.length, s]
3503
+ * )
3504
+ *
3505
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3506
+ * // { _id: 'Chunk', values: [ [ 0, 'a' ], [ 1, 'b' ], [ 2, 'c' ] ] }
3507
+ *
2504
3508
  * @since 2.0.0
2505
3509
  * @category zipping
2506
3510
  */
@@ -2518,6 +3522,19 @@ export const zipWithChunks = internal.zipWithChunks;
2518
3522
  /**
2519
3523
  * Zips each element with the next element if present.
2520
3524
  *
3525
+ * @example
3526
+ * import { Chunk, Effect, Stream } from "effect"
3527
+ *
3528
+ * const stream = Stream.zipWithNext(Stream.make(1, 2, 3, 4))
3529
+ *
3530
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
3531
+ * // [
3532
+ * // [ 1, { _id: 'Option', _tag: 'Some', value: 2 } ],
3533
+ * // [ 2, { _id: 'Option', _tag: 'Some', value: 3 } ],
3534
+ * // [ 3, { _id: 'Option', _tag: 'Some', value: 4 } ],
3535
+ * // [ 4, { _id: 'Option', _tag: 'None' } ]
3536
+ * // ]
3537
+ *
2521
3538
  * @since 2.0.0
2522
3539
  * @category zipping
2523
3540
  */
@@ -2526,6 +3543,19 @@ export const zipWithNext = internal.zipWithNext;
2526
3543
  * Zips each element with the previous element. Initially accompanied by
2527
3544
  * `None`.
2528
3545
  *
3546
+ * @example
3547
+ * import { Chunk, Effect, Stream } from "effect"
3548
+ *
3549
+ * const stream = Stream.zipWithPrevious(Stream.make(1, 2, 3, 4))
3550
+ *
3551
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
3552
+ * // [
3553
+ * // [ { _id: 'Option', _tag: 'None' }, 1 ],
3554
+ * // [ { _id: 'Option', _tag: 'Some', value: 1 }, 2 ],
3555
+ * // [ { _id: 'Option', _tag: 'Some', value: 2 }, 3 ],
3556
+ * // [ { _id: 'Option', _tag: 'Some', value: 3 }, 4 ]
3557
+ * // ]
3558
+ *
2529
3559
  * @since 2.0.0
2530
3560
  * @category zipping
2531
3561
  */
@@ -2533,6 +3563,35 @@ export const zipWithPrevious = internal.zipWithPrevious;
2533
3563
  /**
2534
3564
  * Zips each element with both the previous and next element.
2535
3565
  *
3566
+ * @example
3567
+ * import { Chunk, Effect, Stream } from "effect"
3568
+ *
3569
+ * const stream = Stream.zipWithPreviousAndNext(Stream.make(1, 2, 3, 4))
3570
+ *
3571
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
3572
+ * // [
3573
+ * // [
3574
+ * // { _id: 'Option', _tag: 'None' },
3575
+ * // 1,
3576
+ * // { _id: 'Option', _tag: 'Some', value: 2 }
3577
+ * // ],
3578
+ * // [
3579
+ * // { _id: 'Option', _tag: 'Some', value: 1 },
3580
+ * // 2,
3581
+ * // { _id: 'Option', _tag: 'Some', value: 3 }
3582
+ * // ],
3583
+ * // [
3584
+ * // { _id: 'Option', _tag: 'Some', value: 2 },
3585
+ * // 3,
3586
+ * // { _id: 'Option', _tag: 'Some', value: 4 }
3587
+ * // ],
3588
+ * // [
3589
+ * // { _id: 'Option', _tag: 'Some', value: 3 },
3590
+ * // 4,
3591
+ * // { _id: 'Option', _tag: 'None' }
3592
+ * // ]
3593
+ * // ]
3594
+ *
2536
3595
  * @since 2.0.0
2537
3596
  * @category zipping
2538
3597
  */
@@ -2540,6 +3599,19 @@ export const zipWithPreviousAndNext = internal.zipWithPreviousAndNext;
2540
3599
  /**
2541
3600
  * Zips this stream together with the index of elements.
2542
3601
  *
3602
+ * @example
3603
+ * import { Effect, Stream } from "effect"
3604
+ *
3605
+ * const stream = Stream.make("Mary", "James", "Robert", "Patricia")
3606
+ *
3607
+ * const indexedStream = Stream.zipWithIndex(stream)
3608
+ *
3609
+ * // Effect.runPromise(Stream.runCollect(indexedStream)).then(console.log)
3610
+ * // {
3611
+ * // _id: 'Chunk',
3612
+ * // values: [ [ 'Mary', 0 ], [ 'James', 1 ], [ 'Robert', 2 ], [ 'Patricia', 3 ] ]
3613
+ * // }
3614
+ *
2543
3615
  * @since 2.0.0
2544
3616
  * @category zipping
2545
3617
  */