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
@@ -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
  */
@@ -1462,9 +2155,45 @@ export const mapInputContext = internal.mapInputContext;
1462
2155
  * @category context
1463
2156
  */
1464
2157
  export const provideSomeLayer = internal.provideSomeLayer;
2158
+ /**
2159
+ * Returns a stream that mirrors the first upstream to emit an item.
2160
+ * As soon as one of the upstream emits a first value, all the others are interrupted.
2161
+ * The resulting stream will forward all items from the "winning" source stream.
2162
+ * Any upstream failures will cause the returned stream to fail.
2163
+ *
2164
+ * @example
2165
+ * import { Stream, Schedule, Console, Effect } from "effect"
2166
+ *
2167
+ * const stream = Stream.raceAll(
2168
+ * Stream.fromSchedule(Schedule.spaced('1 millis')),
2169
+ * Stream.fromSchedule(Schedule.spaced('2 millis')),
2170
+ * Stream.fromSchedule(Schedule.spaced('4 millis')),
2171
+ * ).pipe(Stream.take(6), Stream.tap(Console.log))
2172
+ *
2173
+ * Effect.runPromise(Stream.runDrain(stream))
2174
+ * // Output each millisecond from the first stream, the rest streams are interrupted
2175
+ * // 0
2176
+ * // 1
2177
+ * // 2
2178
+ * // 3
2179
+ * // 4
2180
+ * // 5
2181
+ * @since 3.5.0
2182
+ * @category racing
2183
+ */
2184
+ export const raceAll = internal.raceAll;
1465
2185
  /**
1466
2186
  * Constructs a stream from a range of integers, including both endpoints.
1467
2187
  *
2188
+ * @example
2189
+ * import { Effect, Stream } from "effect"
2190
+ *
2191
+ * // A Stream with a range of numbers from 1 to 5
2192
+ * const stream = Stream.range(1, 5)
2193
+ *
2194
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2195
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
2196
+ *
1468
2197
  * @since 2.0.0
1469
2198
  * @category constructors
1470
2199
  */
@@ -1496,6 +2225,14 @@ export const refineOrDieWith = internal.refineOrDieWith;
1496
2225
  * Repeats the entire stream using the specified schedule. The stream will
1497
2226
  * execute normally, and then repeat again according to the provided schedule.
1498
2227
  *
2228
+ * @example
2229
+ * import { Effect, Schedule, Stream } from "effect"
2230
+ *
2231
+ * const stream = Stream.repeat(Stream.succeed(1), Schedule.forever)
2232
+ *
2233
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
2234
+ * // { _id: 'Chunk', values: [ 1, 1, 1, 1, 1 ] }
2235
+ *
1499
2236
  * @since 2.0.0
1500
2237
  * @category utils
1501
2238
  */
@@ -1504,6 +2241,14 @@ export const repeat = internal.repeat;
1504
2241
  * Creates a stream from an effect producing a value of type `A` which repeats
1505
2242
  * forever.
1506
2243
  *
2244
+ * @example
2245
+ * import { Effect, Random, Stream } from "effect"
2246
+ *
2247
+ * const stream = Stream.repeatEffect(Random.nextInt)
2248
+ *
2249
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
2250
+ * // Example Output: { _id: 'Chunk', values: [ 3891571149, 4239494205, 2352981603, 2339111046, 1488052210 ] }
2251
+ *
1507
2252
  * @since 2.0.0
1508
2253
  * @category constructors
1509
2254
  */
@@ -1528,6 +2273,22 @@ export const repeatEffectChunkOption = internal.repeatEffectChunkOption;
1528
2273
  * Creates a stream from an effect producing values of type `A` until it fails
1529
2274
  * with `None`.
1530
2275
  *
2276
+ * @example
2277
+ * // In this example, we're draining an Iterator to create a stream from it
2278
+ * import { Stream, Effect, Option } from "effect"
2279
+ *
2280
+ * const drainIterator = <A>(it: Iterator<A>): Stream.Stream<A> =>
2281
+ * Stream.repeatEffectOption(
2282
+ * Effect.sync(() => it.next()).pipe(
2283
+ * Effect.andThen((res) => {
2284
+ * if (res.done) {
2285
+ * return Effect.fail(Option.none())
2286
+ * }
2287
+ * return Effect.succeed(res.value)
2288
+ * })
2289
+ * )
2290
+ * )
2291
+ *
1531
2292
  * @since 2.0.0
1532
2293
  * @category constructors
1533
2294
  */
@@ -1579,6 +2340,14 @@ export const repeatElementsWith = internal.repeatElementsWith;
1579
2340
  /**
1580
2341
  * Repeats the provided value infinitely.
1581
2342
  *
2343
+ * @example
2344
+ * import { Effect, Stream } from "effect"
2345
+ *
2346
+ * const stream = Stream.repeatValue(0)
2347
+ *
2348
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
2349
+ * // { _id: 'Chunk', values: [ 0, 0, 0, 0, 0 ] }
2350
+ *
1582
2351
  * @since 2.0.0
1583
2352
  * @category constructors
1584
2353
  */
@@ -1820,6 +2589,14 @@ export const runSum = internal.runSum;
1820
2589
  * Statefully maps over the elements of this stream to produce all
1821
2590
  * intermediate results of type `S` given an initial S.
1822
2591
  *
2592
+ * @example
2593
+ * import { Effect, Stream } from "effect"
2594
+ *
2595
+ * const stream = Stream.range(1, 6).pipe(Stream.scan(0, (a, b) => a + b))
2596
+ *
2597
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2598
+ * // { _id: 'Chunk', values: [ 0, 1, 3, 6, 10, 15, 21 ] }
2599
+ *
1823
2600
  * @since 2.0.0
1824
2601
  * @category utils
1825
2602
  */
@@ -1871,6 +2648,24 @@ export const scheduleWith = internal.scheduleWith;
1871
2648
  /**
1872
2649
  * Creates a single-valued stream from a scoped resource.
1873
2650
  *
2651
+ * @example
2652
+ * import { Console, Effect, Stream } from "effect"
2653
+ *
2654
+ * // Creating a single-valued stream from a scoped resource
2655
+ * const stream = Stream.scoped(
2656
+ * Effect.acquireUseRelease(
2657
+ * Console.log("acquire"),
2658
+ * () => Console.log("use"),
2659
+ * () => Console.log("release")
2660
+ * )
2661
+ * )
2662
+ *
2663
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2664
+ * // acquire
2665
+ * // use
2666
+ * // release
2667
+ * // { _id: 'Chunk', values: [ undefined ] }
2668
+ *
1874
2669
  * @since 2.0.0
1875
2670
  * @category constructors
1876
2671
  */
@@ -1959,6 +2754,15 @@ export const splitLines = internal.splitLines;
1959
2754
  /**
1960
2755
  * Creates a single-valued pure stream.
1961
2756
  *
2757
+ * @example
2758
+ * import { Effect, Stream } from "effect"
2759
+ *
2760
+ * // A Stream with a single number
2761
+ * const stream = Stream.succeed(3)
2762
+ *
2763
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2764
+ * // { _id: 'Chunk', values: [ 3 ] }
2765
+ *
1962
2766
  * @since 2.0.0
1963
2767
  * @category constructors
1964
2768
  */
@@ -1980,6 +2784,14 @@ export const suspend = internal.suspend;
1980
2784
  /**
1981
2785
  * Takes the specified number of elements from this stream.
1982
2786
  *
2787
+ * @example
2788
+ * import { Effect, Stream } from "effect"
2789
+ *
2790
+ * const stream = Stream.take(Stream.iterate(0, (n) => n + 1), 5)
2791
+ *
2792
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2793
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
2794
+ *
1983
2795
  * @since 2.0.0
1984
2796
  * @category utils
1985
2797
  */
@@ -1987,6 +2799,14 @@ export const take = internal.take;
1987
2799
  /**
1988
2800
  * Takes the last specified number of elements from this stream.
1989
2801
  *
2802
+ * @example
2803
+ * import { Effect, Stream } from "effect"
2804
+ *
2805
+ * const stream = Stream.takeRight(Stream.make(1, 2, 3, 4, 5, 6), 3)
2806
+ *
2807
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2808
+ * // { _id: 'Chunk', values: [ 4, 5, 6 ] }
2809
+ *
1990
2810
  * @since 2.0.0
1991
2811
  * @category utils
1992
2812
  */
@@ -1995,6 +2815,14 @@ export const takeRight = internal.takeRight;
1995
2815
  * Takes all elements of the stream until the specified predicate evaluates to
1996
2816
  * `true`.
1997
2817
  *
2818
+ * @example
2819
+ * import { Effect, Stream } from "effect"
2820
+ *
2821
+ * const stream = Stream.takeUntil(Stream.iterate(0, (n) => n + 1), (n) => n === 4)
2822
+ *
2823
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2824
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
2825
+ *
1998
2826
  * @since 2.0.0
1999
2827
  * @category utils
2000
2828
  */
@@ -2011,6 +2839,14 @@ export const takeUntilEffect = internal.takeUntilEffect;
2011
2839
  * Takes all elements of the stream for as long as the specified predicate
2012
2840
  * evaluates to `true`.
2013
2841
  *
2842
+ * @example
2843
+ * import { Effect, Stream } from "effect"
2844
+ *
2845
+ * const stream = Stream.takeWhile(Stream.iterate(0, (n) => n + 1), (n) => n < 5)
2846
+ *
2847
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2848
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
2849
+ *
2014
2850
  * @since 2.0.0
2015
2851
  * @category utils
2016
2852
  */
@@ -2018,6 +2854,24 @@ export const takeWhile = internal.takeWhile;
2018
2854
  /**
2019
2855
  * Adds an effect to consumption of every element of the stream.
2020
2856
  *
2857
+ * @example
2858
+ * import { Console, Effect, Stream } from "effect"
2859
+ *
2860
+ * const stream = Stream.make(1, 2, 3).pipe(
2861
+ * Stream.tap((n) => Console.log(`before mapping: ${n}`)),
2862
+ * Stream.map((n) => n * 2),
2863
+ * Stream.tap((n) => Console.log(`after mapping: ${n}`))
2864
+ * )
2865
+ *
2866
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2867
+ * // before mapping: 1
2868
+ * // after mapping: 2
2869
+ * // before mapping: 2
2870
+ * // after mapping: 4
2871
+ * // before mapping: 3
2872
+ * // after mapping: 6
2873
+ * // { _id: 'Chunk', values: [ 2, 4, 6 ] }
2874
+ *
2021
2875
  * @since 2.0.0
2022
2876
  * @category sequencing
2023
2877
  */
@@ -2058,7 +2912,7 @@ export const tapSink = internal.tapSink;
2058
2912
  * parameters using the token bucket algorithm. Allows for burst in the
2059
2913
  * processing of elements by allowing the token bucket to accumulate tokens up
2060
2914
  * to a `units + burst` threshold. The weight of each chunk is determined by
2061
- * the `costFn` function.
2915
+ * the `cost` function.
2062
2916
  *
2063
2917
  * If using the "enforce" strategy, chunks that do not meet the bandwidth
2064
2918
  * constraints are dropped. If using the "shape" strategy, chunks are delayed
@@ -2066,6 +2920,43 @@ export const tapSink = internal.tapSink;
2066
2920
  *
2067
2921
  * Defaults to the "shape" strategy.
2068
2922
  *
2923
+ * @example
2924
+ * import { Chunk, Effect, Schedule, Stream } from "effect"
2925
+ *
2926
+ * let last = Date.now()
2927
+ * const log = (message: string) =>
2928
+ * Effect.sync(() => {
2929
+ * const end = Date.now()
2930
+ * console.log(`${message} after ${end - last}ms`)
2931
+ * last = end
2932
+ * })
2933
+ *
2934
+ * const stream = Stream.fromSchedule(Schedule.spaced("50 millis")).pipe(
2935
+ * Stream.take(6),
2936
+ * Stream.tap((n) => log(`Received ${n}`)),
2937
+ * Stream.throttle({
2938
+ * cost: Chunk.size,
2939
+ * duration: "100 millis",
2940
+ * units: 1
2941
+ * }),
2942
+ * Stream.tap((n) => log(`> Emitted ${n}`))
2943
+ * )
2944
+ *
2945
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
2946
+ * // Received 0 after 56ms
2947
+ * // > Emitted 0 after 0ms
2948
+ * // Received 1 after 52ms
2949
+ * // > Emitted 1 after 48ms
2950
+ * // Received 2 after 52ms
2951
+ * // > Emitted 2 after 49ms
2952
+ * // Received 3 after 52ms
2953
+ * // > Emitted 3 after 48ms
2954
+ * // Received 4 after 52ms
2955
+ * // > Emitted 4 after 47ms
2956
+ * // Received 5 after 52ms
2957
+ * // > Emitted 5 after 49ms
2958
+ * // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4, 5 ] }
2959
+ *
2069
2960
  * @since 2.0.0
2070
2961
  * @category utils
2071
2962
  */
@@ -2090,6 +2981,27 @@ export const throttleEffect = internal.throttleEffect;
2090
2981
  /**
2091
2982
  * A stream that emits void values spaced by the specified duration.
2092
2983
  *
2984
+ * @example
2985
+ * import { Effect, Stream } from "effect"
2986
+ *
2987
+ * let last = Date.now()
2988
+ * const log = (message: string) =>
2989
+ * Effect.sync(() => {
2990
+ * const end = Date.now()
2991
+ * console.log(`${message} after ${end - last}ms`)
2992
+ * last = end
2993
+ * })
2994
+ *
2995
+ * const stream = Stream.tick("1 seconds").pipe(Stream.tap(() => log("tick")))
2996
+ *
2997
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
2998
+ * // tick after 4ms
2999
+ * // tick after 1003ms
3000
+ * // tick after 1001ms
3001
+ * // tick after 1002ms
3002
+ * // tick after 1002ms
3003
+ * // { _id: 'Chunk', values: [ undefined, undefined, undefined, undefined, undefined ] }
3004
+ *
2093
3005
  * @since 2.0.0
2094
3006
  * @category constructors
2095
3007
  */
@@ -2139,6 +3051,32 @@ export const toPubSub = internal.toPubSub;
2139
3051
  * finished, or with Some error if it fails, otherwise it returns a chunk of
2140
3052
  * the stream's output.
2141
3053
  *
3054
+ * @example
3055
+ * import { Effect, Stream } from "effect"
3056
+ *
3057
+ * // Simulate a chunked stream
3058
+ * const stream = Stream.fromIterable([1, 2, 3, 4, 5]).pipe(Stream.rechunk(2))
3059
+ *
3060
+ * const program = Effect.gen(function*() {
3061
+ * // Create an effect to get data chunks from the stream
3062
+ * const getChunk = yield* Stream.toPull(stream)
3063
+ *
3064
+ * // Continuously fetch and process chunks
3065
+ * while (true) {
3066
+ * const chunk = yield* getChunk
3067
+ * console.log(chunk)
3068
+ * }
3069
+ * })
3070
+ *
3071
+ * // Effect.runPromise(Effect.scoped(program)).then(console.log, console.error)
3072
+ * // { _id: 'Chunk', values: [ 1, 2 ] }
3073
+ * // { _id: 'Chunk', values: [ 3, 4 ] }
3074
+ * // { _id: 'Chunk', values: [ 5 ] }
3075
+ * // (FiberFailure) Error: {
3076
+ * // "_id": "Option",
3077
+ * // "_tag": "None"
3078
+ * // }
3079
+ *
2142
3080
  * @since 2.0.0
2143
3081
  * @category destructors
2144
3082
  */
@@ -2200,6 +3138,14 @@ export const transduce = internal.transduce;
2200
3138
  /**
2201
3139
  * Creates a stream by peeling off the "layers" of a value of type `S`.
2202
3140
  *
3141
+ * @example
3142
+ * import { Effect, Option, Stream } from "effect"
3143
+ *
3144
+ * const stream = Stream.unfold(1, (n) => Option.some([n, n + 1]))
3145
+ *
3146
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
3147
+ * // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
3148
+ *
2203
3149
  * @since 2.0.0
2204
3150
  * @category constructors
2205
3151
  */
@@ -2223,6 +3169,17 @@ export const unfoldChunkEffect = internal.unfoldChunkEffect;
2223
3169
  * Creates a stream by effectfully peeling off the "layers" of a value of type
2224
3170
  * `S`.
2225
3171
  *
3172
+ * @example
3173
+ * import { Effect, Option, Random, Stream } from "effect"
3174
+ *
3175
+ * const stream = Stream.unfoldEffect(1, (n) =>
3176
+ * Random.nextBoolean.pipe(
3177
+ * Effect.map((b) => (b ? Option.some([n, -n]) : Option.some([n, n])))
3178
+ * ))
3179
+ *
3180
+ * // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
3181
+ * // { _id: 'Chunk', values: [ 1, -1, -1, -1, -1 ] }
3182
+ *
2226
3183
  * @since 2.0.0
2227
3184
  * @category constructors
2228
3185
  */
@@ -2232,6 +3189,14 @@ export {
2232
3189
  /**
2233
3190
  * A stream that contains a single `void` value.
2234
3191
  *
3192
+ * @example
3193
+ * import { Effect, Stream } from "effect"
3194
+ *
3195
+ * const stream = Stream.void
3196
+ *
3197
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3198
+ * // { _id: 'Chunk', values: [ undefined ] }
3199
+ *
2235
3200
  * @since 2.0.0
2236
3201
  * @category constructors
2237
3202
  */
@@ -2302,6 +3267,18 @@ export const withSpan = internal.withSpan;
2302
3267
  *
2303
3268
  * The new stream will end when one of the sides ends.
2304
3269
  *
3270
+ * @example
3271
+ * import { Effect, Stream } from "effect"
3272
+ *
3273
+ * // We create two streams and zip them together.
3274
+ * const stream = Stream.zip(
3275
+ * Stream.make(1, 2, 3, 4, 5, 6),
3276
+ * Stream.make("a", "b", "c")
3277
+ * )
3278
+ *
3279
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3280
+ * // { _id: 'Chunk', values: [ [ 1, 'a' ], [ 2, 'b' ], [ 3, 'c' ] ] }
3281
+ *
2305
3282
  * @since 2.0.0
2306
3283
  * @category zipping
2307
3284
  */
@@ -2323,6 +3300,18 @@ export const zipFlatten = internal.zipFlatten;
2323
3300
  * The defaults `defaultLeft` and `defaultRight` will be used if the streams
2324
3301
  * have different lengths and one of the streams has ended before the other.
2325
3302
  *
3303
+ * @example
3304
+ * import { Effect, Stream } from "effect"
3305
+ *
3306
+ * const stream = Stream.zipAll(Stream.make(1, 2, 3, 4, 5, 6), {
3307
+ * other: Stream.make("a", "b", "c"),
3308
+ * defaultSelf: 0,
3309
+ * defaultOther: "x"
3310
+ * })
3311
+ *
3312
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3313
+ * // { _id: "Chunk", values: [ [ 1, "a" ], [ 2, "b" ], [ 3, "c" ], [ 4, "x" ], [ 5, "x" ], [ 6, "x" ] ] }
3314
+ *
2326
3315
  * @since 2.0.0
2327
3316
  * @category zipping
2328
3317
  */
@@ -2414,6 +3403,19 @@ export const zipAllSortedByKeyWith = internal.zipAllSortedByKeyWith;
2414
3403
  * The functions `left` and `right` will be used if the streams have different
2415
3404
  * lengths and one of the streams has ended before the other.
2416
3405
  *
3406
+ * @example
3407
+ * import { Effect, Stream } from "effect"
3408
+ *
3409
+ * const stream = Stream.zipAllWith(Stream.make(1, 2, 3, 4, 5, 6), {
3410
+ * other: Stream.make("a", "b", "c"),
3411
+ * onSelf: (n) => [n, "x"],
3412
+ * onOther: (s) => [0, s],
3413
+ * onBoth: (n, s) => [n - s.length, s]
3414
+ * })
3415
+ *
3416
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3417
+ * // { _id: "Chunk", values: [ [ 0, "a" ], [ 1, "b" ], [ 2, "c" ], [ 4, "x" ], [ 5, "x" ], [ 6, "x" ] ] }
3418
+ *
2417
3419
  * @since 2.0.0
2418
3420
  * @category zipping
2419
3421
  */
@@ -2427,6 +3429,22 @@ export const zipAllWith = internal.zipAllWith;
2427
3429
  * that emitted elements that are not the last value in chunks will never be
2428
3430
  * used for zipping.
2429
3431
  *
3432
+ * @example
3433
+ * import { Effect, Schedule, Stream } from "effect"
3434
+ *
3435
+ * const s1 = Stream.make(1, 2, 3).pipe(
3436
+ * Stream.schedule(Schedule.spaced("1 second"))
3437
+ * )
3438
+ *
3439
+ * const s2 = Stream.make("a", "b", "c", "d").pipe(
3440
+ * Stream.schedule(Schedule.spaced("500 millis"))
3441
+ * )
3442
+ *
3443
+ * const stream = Stream.zipLatest(s1, s2)
3444
+ *
3445
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3446
+ * // { _id: "Chunk", values: [ [ 1, "a" ], [ 1, "b" ], [ 2, "b" ], [ 2, "c" ], [ 2, "d" ], [ 3, "d" ] ] }
3447
+ *
2430
3448
  * @since 2.0.0
2431
3449
  * @category zipping
2432
3450
  */
@@ -2448,7 +3466,7 @@ export const zipLatest = internal.zipLatest;
2448
3466
  * Stream.fromSchedule(Schedule.spaced('4 millis')),
2449
3467
  * ).pipe(Stream.take(6), Stream.tap(Console.log))
2450
3468
  *
2451
- * Effect.runPromise(Stream.runDrain(stream))
3469
+ * // Effect.runPromise(Stream.runDrain(stream))
2452
3470
  * // Output:
2453
3471
  * // [ 0, 0, 0 ]
2454
3472
  * // [ 1, 0, 0 ]
@@ -2501,6 +3519,19 @@ export const zipRight = internal.zipRight;
2501
3519
  *
2502
3520
  * The new stream will end when one of the sides ends.
2503
3521
  *
3522
+ * @example
3523
+ * import { Effect, Stream } from "effect"
3524
+ *
3525
+ * // We create two streams and zip them with custom logic.
3526
+ * const stream = Stream.zipWith(
3527
+ * Stream.make(1, 2, 3, 4, 5, 6),
3528
+ * Stream.make("a", "b", "c"),
3529
+ * (n, s) => [n - s.length, s]
3530
+ * )
3531
+ *
3532
+ * // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
3533
+ * // { _id: 'Chunk', values: [ [ 0, 'a' ], [ 1, 'b' ], [ 2, 'c' ] ] }
3534
+ *
2504
3535
  * @since 2.0.0
2505
3536
  * @category zipping
2506
3537
  */
@@ -2518,6 +3549,19 @@ export const zipWithChunks = internal.zipWithChunks;
2518
3549
  /**
2519
3550
  * Zips each element with the next element if present.
2520
3551
  *
3552
+ * @example
3553
+ * import { Chunk, Effect, Stream } from "effect"
3554
+ *
3555
+ * const stream = Stream.zipWithNext(Stream.make(1, 2, 3, 4))
3556
+ *
3557
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
3558
+ * // [
3559
+ * // [ 1, { _id: 'Option', _tag: 'Some', value: 2 } ],
3560
+ * // [ 2, { _id: 'Option', _tag: 'Some', value: 3 } ],
3561
+ * // [ 3, { _id: 'Option', _tag: 'Some', value: 4 } ],
3562
+ * // [ 4, { _id: 'Option', _tag: 'None' } ]
3563
+ * // ]
3564
+ *
2521
3565
  * @since 2.0.0
2522
3566
  * @category zipping
2523
3567
  */
@@ -2526,6 +3570,19 @@ export const zipWithNext = internal.zipWithNext;
2526
3570
  * Zips each element with the previous element. Initially accompanied by
2527
3571
  * `None`.
2528
3572
  *
3573
+ * @example
3574
+ * import { Chunk, Effect, Stream } from "effect"
3575
+ *
3576
+ * const stream = Stream.zipWithPrevious(Stream.make(1, 2, 3, 4))
3577
+ *
3578
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
3579
+ * // [
3580
+ * // [ { _id: 'Option', _tag: 'None' }, 1 ],
3581
+ * // [ { _id: 'Option', _tag: 'Some', value: 1 }, 2 ],
3582
+ * // [ { _id: 'Option', _tag: 'Some', value: 2 }, 3 ],
3583
+ * // [ { _id: 'Option', _tag: 'Some', value: 3 }, 4 ]
3584
+ * // ]
3585
+ *
2529
3586
  * @since 2.0.0
2530
3587
  * @category zipping
2531
3588
  */
@@ -2533,6 +3590,35 @@ export const zipWithPrevious = internal.zipWithPrevious;
2533
3590
  /**
2534
3591
  * Zips each element with both the previous and next element.
2535
3592
  *
3593
+ * @example
3594
+ * import { Chunk, Effect, Stream } from "effect"
3595
+ *
3596
+ * const stream = Stream.zipWithPreviousAndNext(Stream.make(1, 2, 3, 4))
3597
+ *
3598
+ * // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
3599
+ * // [
3600
+ * // [
3601
+ * // { _id: 'Option', _tag: 'None' },
3602
+ * // 1,
3603
+ * // { _id: 'Option', _tag: 'Some', value: 2 }
3604
+ * // ],
3605
+ * // [
3606
+ * // { _id: 'Option', _tag: 'Some', value: 1 },
3607
+ * // 2,
3608
+ * // { _id: 'Option', _tag: 'Some', value: 3 }
3609
+ * // ],
3610
+ * // [
3611
+ * // { _id: 'Option', _tag: 'Some', value: 2 },
3612
+ * // 3,
3613
+ * // { _id: 'Option', _tag: 'Some', value: 4 }
3614
+ * // ],
3615
+ * // [
3616
+ * // { _id: 'Option', _tag: 'Some', value: 3 },
3617
+ * // 4,
3618
+ * // { _id: 'Option', _tag: 'None' }
3619
+ * // ]
3620
+ * // ]
3621
+ *
2536
3622
  * @since 2.0.0
2537
3623
  * @category zipping
2538
3624
  */
@@ -2540,6 +3626,19 @@ export const zipWithPreviousAndNext = internal.zipWithPreviousAndNext;
2540
3626
  /**
2541
3627
  * Zips this stream together with the index of elements.
2542
3628
  *
3629
+ * @example
3630
+ * import { Effect, Stream } from "effect"
3631
+ *
3632
+ * const stream = Stream.make("Mary", "James", "Robert", "Patricia")
3633
+ *
3634
+ * const indexedStream = Stream.zipWithIndex(stream)
3635
+ *
3636
+ * // Effect.runPromise(Stream.runCollect(indexedStream)).then(console.log)
3637
+ * // {
3638
+ * // _id: 'Chunk',
3639
+ * // values: [ [ 'Mary', 0 ], [ 'James', 1 ], [ 'Robert', 2 ], [ 'Patricia', 3 ] ]
3640
+ * // }
3641
+ *
2543
3642
  * @since 2.0.0
2544
3643
  * @category zipping
2545
3644
  */