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.
- package/RcMap/package.json +6 -0
- package/RcRef/package.json +6 -0
- package/dist/cjs/Array.js +14 -37
- package/dist/cjs/Array.js.map +1 -1
- package/dist/cjs/BigDecimal.js +11 -34
- package/dist/cjs/BigDecimal.js.map +1 -1
- package/dist/cjs/BigInt.js +7 -30
- package/dist/cjs/BigInt.js.map +1 -1
- package/dist/cjs/Boolean.js +6 -29
- package/dist/cjs/Boolean.js.map +1 -1
- package/dist/cjs/Brand.js +6 -29
- package/dist/cjs/Brand.js.map +1 -1
- package/dist/cjs/Cache.js +3 -26
- package/dist/cjs/Cache.js.map +1 -1
- package/dist/cjs/Cause.js +26 -28
- package/dist/cjs/Cause.js.map +1 -1
- package/dist/cjs/Channel.js +6 -29
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/ChildExecutorDecision.js +3 -26
- package/dist/cjs/ChildExecutorDecision.js.map +1 -1
- package/dist/cjs/Chunk.js +12 -35
- package/dist/cjs/Chunk.js.map +1 -1
- package/dist/cjs/Clock.js +4 -27
- package/dist/cjs/Clock.js.map +1 -1
- package/dist/cjs/Config.js +3 -26
- package/dist/cjs/Config.js.map +1 -1
- package/dist/cjs/ConfigError.js +3 -26
- package/dist/cjs/ConfigError.js.map +1 -1
- package/dist/cjs/ConfigProvider.js +3 -26
- package/dist/cjs/ConfigProvider.js.map +1 -1
- package/dist/cjs/ConfigProviderPathPatch.js +3 -26
- package/dist/cjs/ConfigProviderPathPatch.js.map +1 -1
- package/dist/cjs/Console.js +4 -27
- package/dist/cjs/Console.js.map +1 -1
- package/dist/cjs/Context.js +3 -26
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Cron.js +13 -36
- package/dist/cjs/Cron.js.map +1 -1
- package/dist/cjs/Data.js +9 -30
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/DefaultServices.js +3 -26
- package/dist/cjs/DefaultServices.js.map +1 -1
- package/dist/cjs/Deferred.js +4 -27
- package/dist/cjs/Deferred.js.map +1 -1
- package/dist/cjs/Differ.js +10 -33
- package/dist/cjs/Differ.js.map +1 -1
- package/dist/cjs/Duration.js +33 -35
- package/dist/cjs/Duration.js.map +1 -1
- package/dist/cjs/Effect.js +16 -39
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Effectable.js +3 -26
- package/dist/cjs/Effectable.js.map +1 -1
- package/dist/cjs/Either.js +8 -31
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/Encoding.js +7 -30
- package/dist/cjs/Encoding.js.map +1 -1
- package/dist/cjs/Equal.js +5 -28
- package/dist/cjs/Equal.js.map +1 -1
- package/dist/cjs/Equivalence.js +1 -1
- package/dist/cjs/Equivalence.js.map +1 -1
- package/dist/cjs/ExecutionStrategy.js +3 -26
- package/dist/cjs/ExecutionStrategy.js.map +1 -1
- package/dist/cjs/Exit.js +3 -26
- package/dist/cjs/Exit.js.map +1 -1
- package/dist/cjs/Fiber.js +6 -29
- package/dist/cjs/Fiber.js.map +1 -1
- package/dist/cjs/FiberHandle.js +15 -38
- package/dist/cjs/FiberHandle.js.map +1 -1
- package/dist/cjs/FiberId.js +3 -26
- package/dist/cjs/FiberId.js.map +1 -1
- package/dist/cjs/FiberMap.js +17 -40
- package/dist/cjs/FiberMap.js.map +1 -1
- package/dist/cjs/FiberRef.js +6 -29
- package/dist/cjs/FiberRef.js.map +1 -1
- package/dist/cjs/FiberRefs.js +3 -26
- package/dist/cjs/FiberRefs.js.map +1 -1
- package/dist/cjs/FiberRefsPatch.js +3 -26
- package/dist/cjs/FiberRefsPatch.js.map +1 -1
- package/dist/cjs/FiberSet.js +16 -39
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/FiberStatus.js +3 -26
- package/dist/cjs/FiberStatus.js.map +1 -1
- package/dist/cjs/GlobalValue.js +3 -26
- package/dist/cjs/GlobalValue.js.map +1 -1
- package/dist/cjs/GroupBy.js +3 -26
- package/dist/cjs/GroupBy.js.map +1 -1
- package/dist/cjs/Hash.js +4 -4
- package/dist/cjs/Hash.js.map +1 -1
- package/dist/cjs/HashMap.js +4 -27
- package/dist/cjs/HashMap.js.map +1 -1
- package/dist/cjs/HashSet.js +3 -26
- package/dist/cjs/HashSet.js.map +1 -1
- package/dist/cjs/Inspectable.js +1 -1
- package/dist/cjs/Inspectable.js.map +1 -1
- package/dist/cjs/Iterable.js +8 -31
- package/dist/cjs/Iterable.js.map +1 -1
- package/dist/cjs/KeyedPool.js +3 -26
- package/dist/cjs/KeyedPool.js.map +1 -1
- package/dist/cjs/Layer.js +11 -34
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/List.js +13 -36
- package/dist/cjs/List.js.map +1 -1
- package/dist/cjs/LogLevel.js +6 -29
- package/dist/cjs/LogLevel.js.map +1 -1
- package/dist/cjs/LogSpan.js +3 -26
- package/dist/cjs/LogSpan.js.map +1 -1
- package/dist/cjs/Logger.js +17 -30
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/ManagedRuntime.js +3 -26
- package/dist/cjs/ManagedRuntime.js.map +1 -1
- package/dist/cjs/Match.js +4 -27
- package/dist/cjs/Match.js.map +1 -1
- package/dist/cjs/MergeDecision.js +3 -26
- package/dist/cjs/MergeDecision.js.map +1 -1
- package/dist/cjs/MergeState.js +3 -26
- package/dist/cjs/MergeState.js.map +1 -1
- package/dist/cjs/MergeStrategy.js +3 -26
- package/dist/cjs/MergeStrategy.js.map +1 -1
- package/dist/cjs/Metric.js +4 -27
- package/dist/cjs/Metric.js.map +1 -1
- package/dist/cjs/MetricBoundaries.js +3 -26
- package/dist/cjs/MetricBoundaries.js.map +1 -1
- package/dist/cjs/MetricHook.js +3 -26
- package/dist/cjs/MetricHook.js.map +1 -1
- package/dist/cjs/MetricKey.js +3 -26
- package/dist/cjs/MetricKey.js.map +1 -1
- package/dist/cjs/MetricKeyType.js +3 -26
- package/dist/cjs/MetricKeyType.js.map +1 -1
- package/dist/cjs/MetricLabel.js +3 -26
- package/dist/cjs/MetricLabel.js.map +1 -1
- package/dist/cjs/MetricPair.js +3 -26
- package/dist/cjs/MetricPair.js.map +1 -1
- package/dist/cjs/MetricPolling.js +3 -26
- package/dist/cjs/MetricPolling.js.map +1 -1
- package/dist/cjs/MetricRegistry.js +3 -26
- package/dist/cjs/MetricRegistry.js.map +1 -1
- package/dist/cjs/MetricState.js +3 -26
- package/dist/cjs/MetricState.js.map +1 -1
- package/dist/cjs/Micro.js +15 -38
- package/dist/cjs/Micro.js.map +1 -1
- package/dist/cjs/ModuleVersion.js +3 -26
- package/dist/cjs/ModuleVersion.js.map +1 -1
- package/dist/cjs/MutableHashMap.js +8 -31
- package/dist/cjs/MutableHashMap.js.map +1 -1
- package/dist/cjs/MutableHashSet.js +6 -29
- package/dist/cjs/MutableHashSet.js.map +1 -1
- package/dist/cjs/MutableList.js +5 -28
- package/dist/cjs/MutableList.js.map +1 -1
- package/dist/cjs/MutableQueue.js +7 -30
- package/dist/cjs/MutableQueue.js.map +1 -1
- package/dist/cjs/MutableRef.js +6 -29
- package/dist/cjs/MutableRef.js.map +1 -1
- package/dist/cjs/Number.js +7 -30
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/Option.js +10 -33
- package/dist/cjs/Option.js.map +1 -1
- package/dist/cjs/Order.js +1 -1
- package/dist/cjs/Order.js.map +1 -1
- package/dist/cjs/Ordering.js +1 -1
- package/dist/cjs/Ordering.js.map +1 -1
- package/dist/cjs/Pool.js +3 -26
- package/dist/cjs/Pool.js.map +1 -1
- package/dist/cjs/Predicate.js +1 -1
- package/dist/cjs/Predicate.js.map +1 -1
- package/dist/cjs/PubSub.js +3 -26
- package/dist/cjs/PubSub.js.map +1 -1
- package/dist/cjs/Queue.js +3 -26
- package/dist/cjs/Queue.js.map +1 -1
- package/dist/cjs/Random.js +13 -28
- package/dist/cjs/Random.js.map +1 -1
- package/dist/cjs/RateLimiter.js +3 -26
- package/dist/cjs/RateLimiter.js.map +1 -1
- package/dist/cjs/RcMap.js +52 -0
- package/dist/cjs/RcMap.js.map +1 -0
- package/dist/cjs/RcRef.js +51 -0
- package/dist/cjs/RcRef.js.map +1 -0
- package/dist/cjs/Readable.js +6 -29
- package/dist/cjs/Readable.js.map +1 -1
- package/dist/cjs/Record.js +6 -29
- package/dist/cjs/Record.js.map +1 -1
- package/dist/cjs/RedBlackTree.js +4 -27
- package/dist/cjs/RedBlackTree.js.map +1 -1
- package/dist/cjs/Redacted.js +4 -27
- package/dist/cjs/Redacted.js.map +1 -1
- package/dist/cjs/Ref.js +3 -26
- package/dist/cjs/Ref.js.map +1 -1
- package/dist/cjs/Reloadable.js +3 -26
- package/dist/cjs/Reloadable.js.map +1 -1
- package/dist/cjs/Request.js +7 -30
- package/dist/cjs/Request.js.map +1 -1
- package/dist/cjs/RequestBlock.js +3 -26
- package/dist/cjs/RequestBlock.js.map +1 -1
- package/dist/cjs/RequestResolver.js +6 -29
- package/dist/cjs/RequestResolver.js.map +1 -1
- package/dist/cjs/Resource.js +3 -26
- package/dist/cjs/Resource.js.map +1 -1
- package/dist/cjs/Runtime.js +3 -26
- package/dist/cjs/Runtime.js.map +1 -1
- package/dist/cjs/RuntimeFlags.js +4 -27
- package/dist/cjs/RuntimeFlags.js.map +1 -1
- package/dist/cjs/RuntimeFlagsPatch.js +4 -27
- package/dist/cjs/RuntimeFlagsPatch.js.map +1 -1
- package/dist/cjs/STM.js +6 -29
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schedule.js +3 -26
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/ScheduleDecision.js +3 -26
- package/dist/cjs/ScheduleDecision.js.map +1 -1
- package/dist/cjs/ScheduleInterval.js +3 -26
- package/dist/cjs/ScheduleInterval.js.map +1 -1
- package/dist/cjs/ScheduleIntervals.js +3 -26
- package/dist/cjs/ScheduleIntervals.js.map +1 -1
- package/dist/cjs/Scheduler.js +5 -28
- package/dist/cjs/Scheduler.js.map +1 -1
- package/dist/cjs/Scope.js +4 -27
- package/dist/cjs/Scope.js.map +1 -1
- package/dist/cjs/ScopedCache.js +3 -26
- package/dist/cjs/ScopedCache.js.map +1 -1
- package/dist/cjs/ScopedRef.js +3 -26
- package/dist/cjs/ScopedRef.js.map +1 -1
- package/dist/cjs/Secret.js +3 -26
- package/dist/cjs/Secret.js.map +1 -1
- package/dist/cjs/SingleProducerAsyncInput.js +3 -26
- package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/Sink.js +3 -26
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/SortedMap.js +10 -33
- package/dist/cjs/SortedMap.js.map +1 -1
- package/dist/cjs/SortedSet.js +9 -32
- package/dist/cjs/SortedSet.js.map +1 -1
- package/dist/cjs/Stream.js +1077 -32
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/StreamHaltStrategy.js +3 -26
- package/dist/cjs/StreamHaltStrategy.js.map +1 -1
- package/dist/cjs/Streamable.js +4 -27
- package/dist/cjs/Streamable.js.map +1 -1
- package/dist/cjs/String.js +9 -32
- package/dist/cjs/String.js.map +1 -1
- package/dist/cjs/Struct.js +6 -29
- package/dist/cjs/Struct.js.map +1 -1
- package/dist/cjs/Subscribable.js +8 -31
- package/dist/cjs/Subscribable.js.map +1 -1
- package/dist/cjs/SubscriptionRef.js +5 -28
- package/dist/cjs/SubscriptionRef.js.map +1 -1
- package/dist/cjs/Supervisor.js +5 -28
- package/dist/cjs/Supervisor.js.map +1 -1
- package/dist/cjs/Symbol.js +4 -27
- package/dist/cjs/Symbol.js.map +1 -1
- package/dist/cjs/SynchronizedRef.js +5 -28
- package/dist/cjs/SynchronizedRef.js.map +1 -1
- package/dist/cjs/TArray.js +3 -26
- package/dist/cjs/TArray.js.map +1 -1
- package/dist/cjs/TDeferred.js +3 -26
- package/dist/cjs/TDeferred.js.map +1 -1
- package/dist/cjs/TMap.js +3 -26
- package/dist/cjs/TMap.js.map +1 -1
- package/dist/cjs/TPriorityQueue.js +3 -26
- package/dist/cjs/TPriorityQueue.js.map +1 -1
- package/dist/cjs/TPubSub.js +3 -26
- package/dist/cjs/TPubSub.js.map +1 -1
- package/dist/cjs/TQueue.js +3 -26
- package/dist/cjs/TQueue.js.map +1 -1
- package/dist/cjs/TRandom.js +3 -26
- package/dist/cjs/TRandom.js.map +1 -1
- package/dist/cjs/TReentrantLock.js +3 -26
- package/dist/cjs/TReentrantLock.js.map +1 -1
- package/dist/cjs/TRef.js +3 -26
- package/dist/cjs/TRef.js.map +1 -1
- package/dist/cjs/TSemaphore.js +3 -26
- package/dist/cjs/TSemaphore.js.map +1 -1
- package/dist/cjs/TSet.js +3 -26
- package/dist/cjs/TSet.js.map +1 -1
- package/dist/cjs/Take.js +3 -26
- package/dist/cjs/Take.js.map +1 -1
- package/dist/cjs/TestAnnotation.js +10 -33
- package/dist/cjs/TestAnnotation.js.map +1 -1
- package/dist/cjs/TestAnnotationMap.js +5 -28
- package/dist/cjs/TestAnnotationMap.js.map +1 -1
- package/dist/cjs/TestAnnotations.js +15 -38
- package/dist/cjs/TestAnnotations.js.map +1 -1
- package/dist/cjs/TestClock.js +25 -48
- package/dist/cjs/TestClock.js.map +1 -1
- package/dist/cjs/TestConfig.js +3 -26
- package/dist/cjs/TestConfig.js.map +1 -1
- package/dist/cjs/TestContext.js +7 -30
- package/dist/cjs/TestContext.js.map +1 -1
- package/dist/cjs/TestLive.js +5 -28
- package/dist/cjs/TestLive.js.map +1 -1
- package/dist/cjs/TestServices.js +15 -38
- package/dist/cjs/TestServices.js.map +1 -1
- package/dist/cjs/TestSized.js +4 -27
- package/dist/cjs/TestSized.js.map +1 -1
- package/dist/cjs/Tracer.js +4 -27
- package/dist/cjs/Tracer.js.map +1 -1
- package/dist/cjs/Trie.js +3 -26
- package/dist/cjs/Trie.js.map +1 -1
- package/dist/cjs/Tuple.js +6 -29
- package/dist/cjs/Tuple.js.map +1 -1
- package/dist/cjs/Unify.js +1 -1
- package/dist/cjs/Unify.js.map +1 -1
- package/dist/cjs/UpstreamPullRequest.js +3 -26
- package/dist/cjs/UpstreamPullRequest.js.map +1 -1
- package/dist/cjs/UpstreamPullStrategy.js +3 -26
- package/dist/cjs/UpstreamPullStrategy.js.map +1 -1
- package/dist/cjs/Utils.js +4 -4
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/index.js +166 -185
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/blockedRequests.js +9 -32
- package/dist/cjs/internal/blockedRequests.js.map +1 -1
- package/dist/cjs/internal/cache.js +20 -43
- package/dist/cjs/internal/cache.js.map +1 -1
- package/dist/cjs/internal/cause.js +37 -44
- package/dist/cjs/internal/cause.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js +21 -44
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel/channelState.js +5 -28
- package/dist/cjs/internal/channel/channelState.js.map +1 -1
- package/dist/cjs/internal/channel/childExecutorDecision.js +5 -28
- package/dist/cjs/internal/channel/childExecutorDecision.js.map +1 -1
- package/dist/cjs/internal/channel/continuation.js +4 -27
- package/dist/cjs/internal/channel/continuation.js.map +1 -1
- package/dist/cjs/internal/channel/mergeDecision.js +5 -28
- package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
- package/dist/cjs/internal/channel/mergeState.js +5 -28
- package/dist/cjs/internal/channel/mergeState.js.map +1 -1
- package/dist/cjs/internal/channel/mergeStrategy.js +5 -28
- package/dist/cjs/internal/channel/mergeStrategy.js.map +1 -1
- package/dist/cjs/internal/channel/singleProducerAsyncInput.js +9 -32
- package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/internal/channel/subexecutor.js +5 -28
- package/dist/cjs/internal/channel/subexecutor.js.map +1 -1
- package/dist/cjs/internal/channel/upstreamPullRequest.js +5 -28
- package/dist/cjs/internal/channel/upstreamPullRequest.js.map +1 -1
- package/dist/cjs/internal/channel/upstreamPullStrategy.js +5 -28
- package/dist/cjs/internal/channel/upstreamPullStrategy.js.map +1 -1
- package/dist/cjs/internal/channel.js +31 -54
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/clock.js +6 -29
- package/dist/cjs/internal/clock.js.map +1 -1
- package/dist/cjs/internal/completedRequestMap.js +2 -2
- package/dist/cjs/internal/completedRequestMap.js.map +1 -1
- package/dist/cjs/internal/concurrency.js +3 -26
- package/dist/cjs/internal/concurrency.js.map +1 -1
- package/dist/cjs/internal/config.js +17 -40
- package/dist/cjs/internal/config.js.map +1 -1
- package/dist/cjs/internal/configError.js +7 -30
- package/dist/cjs/internal/configError.js.map +1 -1
- package/dist/cjs/internal/configProvider/pathPatch.js +8 -31
- package/dist/cjs/internal/configProvider/pathPatch.js.map +1 -1
- package/dist/cjs/internal/configProvider.js +17 -40
- package/dist/cjs/internal/configProvider.js.map +1 -1
- package/dist/cjs/internal/console.js +9 -32
- package/dist/cjs/internal/console.js.map +1 -1
- package/dist/cjs/internal/context.js +10 -33
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +29 -57
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core-stream.js +14 -37
- package/dist/cjs/internal/core-stream.js.map +1 -1
- package/dist/cjs/internal/core.js +47 -65
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/data.js +5 -28
- package/dist/cjs/internal/data.js.map +1 -1
- package/dist/cjs/internal/dataSource.js +10 -33
- package/dist/cjs/internal/dataSource.js.map +1 -1
- package/dist/cjs/internal/defaultServices/console.js +4 -27
- package/dist/cjs/internal/defaultServices/console.js.map +1 -1
- package/dist/cjs/internal/defaultServices.js +14 -37
- package/dist/cjs/internal/defaultServices.js.map +1 -1
- package/dist/cjs/internal/deferred.js +3 -26
- package/dist/cjs/internal/deferred.js.map +1 -1
- package/dist/cjs/internal/differ/chunkPatch.js +6 -29
- package/dist/cjs/internal/differ/chunkPatch.js.map +1 -1
- package/dist/cjs/internal/differ/contextPatch.js +7 -30
- package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
- package/dist/cjs/internal/differ/hashMapPatch.js +7 -30
- package/dist/cjs/internal/differ/hashMapPatch.js.map +1 -1
- package/dist/cjs/internal/differ/hashSetPatch.js +6 -29
- package/dist/cjs/internal/differ/hashSetPatch.js.map +1 -1
- package/dist/cjs/internal/differ/orPatch.js +7 -30
- package/dist/cjs/internal/differ/orPatch.js.map +1 -1
- package/dist/cjs/internal/differ/readonlyArrayPatch.js +6 -29
- package/dist/cjs/internal/differ/readonlyArrayPatch.js.map +1 -1
- package/dist/cjs/internal/differ.js +10 -33
- package/dist/cjs/internal/differ.js.map +1 -1
- package/dist/cjs/internal/doNotation.js +1 -1
- package/dist/cjs/internal/doNotation.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +24 -47
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/effectable.js +8 -31
- package/dist/cjs/internal/effectable.js.map +1 -1
- package/dist/cjs/internal/either.js +9 -32
- package/dist/cjs/internal/either.js.map +1 -1
- package/dist/cjs/internal/encoding/base64.js +4 -27
- package/dist/cjs/internal/encoding/base64.js.map +1 -1
- package/dist/cjs/internal/encoding/base64Url.js +5 -28
- package/dist/cjs/internal/encoding/base64Url.js.map +1 -1
- package/dist/cjs/internal/encoding/common.js +1 -1
- package/dist/cjs/internal/encoding/common.js.map +1 -1
- package/dist/cjs/internal/encoding/hex.js +4 -27
- package/dist/cjs/internal/encoding/hex.js.map +1 -1
- package/dist/cjs/internal/executionStrategy.js +1 -1
- package/dist/cjs/internal/executionStrategy.js.map +1 -1
- package/dist/cjs/internal/fiber.js +17 -40
- package/dist/cjs/internal/fiber.js.map +1 -1
- package/dist/cjs/internal/fiberId.js +11 -34
- package/dist/cjs/internal/fiberId.js.map +1 -1
- package/dist/cjs/internal/fiberRefs/patch.js +6 -29
- package/dist/cjs/internal/fiberRefs/patch.js.map +1 -1
- package/dist/cjs/internal/fiberRefs.js +9 -32
- package/dist/cjs/internal/fiberRefs.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +58 -79
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/fiberScope.js +5 -28
- package/dist/cjs/internal/fiberScope.js.map +1 -1
- package/dist/cjs/internal/fiberStatus.js +6 -29
- package/dist/cjs/internal/fiberStatus.js.map +1 -1
- package/dist/cjs/internal/groupBy.js +18 -41
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/hashMap/bitwise.js +1 -1
- package/dist/cjs/internal/hashMap/bitwise.js.map +1 -1
- package/dist/cjs/internal/hashMap/keySet.js +1 -1
- package/dist/cjs/internal/hashMap/keySet.js.map +1 -1
- package/dist/cjs/internal/hashMap/node.js +9 -32
- package/dist/cjs/internal/hashMap/node.js.map +1 -1
- package/dist/cjs/internal/hashMap.js +12 -35
- package/dist/cjs/internal/hashMap.js.map +1 -1
- package/dist/cjs/internal/hashSet.js +9 -32
- package/dist/cjs/internal/hashSet.js.map +1 -1
- package/dist/cjs/internal/keyedPool.js +14 -37
- package/dist/cjs/internal/keyedPool.js.map +1 -1
- package/dist/cjs/internal/layer/circular.js +12 -35
- package/dist/cjs/internal/layer/circular.js.map +1 -1
- package/dist/cjs/internal/layer.js +25 -48
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/logger-circular.js +9 -32
- package/dist/cjs/internal/logger-circular.js.map +1 -1
- package/dist/cjs/internal/logger.js +139 -61
- package/dist/cjs/internal/logger.js.map +1 -1
- package/dist/cjs/internal/managedRuntime.js +9 -32
- package/dist/cjs/internal/managedRuntime.js.map +1 -1
- package/dist/cjs/internal/matcher.js +6 -29
- package/dist/cjs/internal/matcher.js.map +1 -1
- package/dist/cjs/internal/metric/boundaries.js +9 -32
- package/dist/cjs/internal/metric/boundaries.js.map +1 -1
- package/dist/cjs/internal/metric/hook.js +9 -32
- package/dist/cjs/internal/metric/hook.js.map +1 -1
- package/dist/cjs/internal/metric/key.js +11 -34
- package/dist/cjs/internal/metric/key.js.map +1 -1
- package/dist/cjs/internal/metric/keyType.js +8 -31
- package/dist/cjs/internal/metric/keyType.js.map +1 -1
- package/dist/cjs/internal/metric/label.js +6 -29
- package/dist/cjs/internal/metric/label.js.map +1 -1
- package/dist/cjs/internal/metric/pair.js +1 -1
- package/dist/cjs/internal/metric/pair.js.map +1 -1
- package/dist/cjs/internal/metric/polling.js +8 -31
- package/dist/cjs/internal/metric/polling.js.map +1 -1
- package/dist/cjs/internal/metric/registry.js +8 -31
- package/dist/cjs/internal/metric/registry.js.map +1 -1
- package/dist/cjs/internal/metric/state.js +8 -31
- package/dist/cjs/internal/metric/state.js.map +1 -1
- package/dist/cjs/internal/metric.js +15 -38
- package/dist/cjs/internal/metric.js.map +1 -1
- package/dist/cjs/internal/option.js +7 -30
- package/dist/cjs/internal/option.js.map +1 -1
- package/dist/cjs/internal/pool.js +43 -42
- package/dist/cjs/internal/pool.js.map +1 -1
- package/dist/cjs/internal/pubsub.js +229 -72
- package/dist/cjs/internal/pubsub.js.map +1 -1
- package/dist/cjs/internal/query.js +10 -33
- package/dist/cjs/internal/query.js.map +1 -1
- package/dist/cjs/internal/queue.js +12 -35
- package/dist/cjs/internal/queue.js.map +1 -1
- package/dist/cjs/internal/random.js +9 -31
- package/dist/cjs/internal/random.js.map +1 -1
- package/dist/cjs/internal/rateLimiter.js +6 -29
- package/dist/cjs/internal/rateLimiter.js.map +1 -1
- package/dist/cjs/internal/rcMap.js +129 -0
- package/dist/cjs/internal/rcMap.js.map +1 -0
- package/dist/cjs/internal/rcRef.js +122 -0
- package/dist/cjs/internal/rcRef.js.map +1 -0
- package/dist/cjs/internal/redBlackTree/iterator.js +4 -27
- package/dist/cjs/internal/redBlackTree/iterator.js.map +1 -1
- package/dist/cjs/internal/redBlackTree.js +13 -36
- package/dist/cjs/internal/redBlackTree.js.map +1 -1
- package/dist/cjs/internal/redacted.js +8 -31
- package/dist/cjs/internal/redacted.js.map +1 -1
- package/dist/cjs/internal/ref.js +8 -31
- package/dist/cjs/internal/ref.js.map +1 -1
- package/dist/cjs/internal/reloadable.js +10 -33
- package/dist/cjs/internal/reloadable.js.map +1 -1
- package/dist/cjs/internal/request.js +7 -30
- package/dist/cjs/internal/request.js.map +1 -1
- package/dist/cjs/internal/resource.js +7 -30
- package/dist/cjs/internal/resource.js.map +1 -1
- package/dist/cjs/internal/ringBuffer.js +5 -28
- package/dist/cjs/internal/ringBuffer.js.map +1 -1
- package/dist/cjs/internal/runtime.js +23 -46
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/runtimeFlags.js +5 -28
- package/dist/cjs/internal/runtimeFlags.js.map +1 -1
- package/dist/cjs/internal/runtimeFlagsPatch.js +1 -1
- package/dist/cjs/internal/runtimeFlagsPatch.js.map +1 -1
- package/dist/cjs/internal/schedule/decision.js +4 -27
- package/dist/cjs/internal/schedule/decision.js.map +1 -1
- package/dist/cjs/internal/schedule/interval.js +5 -28
- package/dist/cjs/internal/schedule/interval.js.map +1 -1
- package/dist/cjs/internal/schedule/intervals.js +7 -30
- package/dist/cjs/internal/schedule/intervals.js.map +1 -1
- package/dist/cjs/internal/schedule.js +21 -44
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/scopedCache.js +19 -42
- package/dist/cjs/internal/scopedCache.js.map +1 -1
- package/dist/cjs/internal/scopedRef.js +10 -33
- package/dist/cjs/internal/scopedRef.js.map +1 -1
- package/dist/cjs/internal/secret.js +5 -28
- package/dist/cjs/internal/secret.js.map +1 -1
- package/dist/cjs/internal/singleShotGen.js.map +1 -1
- package/dist/cjs/internal/sink.js +22 -45
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stm/core.js +30 -53
- package/dist/cjs/internal/stm/core.js.map +1 -1
- package/dist/cjs/internal/stm/stm/entry.js +3 -26
- package/dist/cjs/internal/stm/stm/entry.js.map +1 -1
- package/dist/cjs/internal/stm/stm/journal.js +3 -26
- package/dist/cjs/internal/stm/stm/journal.js.map +1 -1
- package/dist/cjs/internal/stm/stm/stmState.js +9 -32
- package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tExit.js +7 -30
- package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tryCommit.js +3 -26
- package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
- package/dist/cjs/internal/stm/stm/versioned.js.map +1 -1
- package/dist/cjs/internal/stm/stm.js +17 -40
- package/dist/cjs/internal/stm/stm.js.map +1 -1
- package/dist/cjs/internal/stm/tArray.js +9 -32
- package/dist/cjs/internal/stm/tArray.js.map +1 -1
- package/dist/cjs/internal/stm/tDeferred.js +8 -31
- package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
- package/dist/cjs/internal/stm/tMap.js +15 -38
- package/dist/cjs/internal/stm/tMap.js.map +1 -1
- package/dist/cjs/internal/stm/tPriorityQueue.js +9 -32
- package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tPubSub.js +12 -35
- package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
- package/dist/cjs/internal/stm/tQueue.js +12 -35
- package/dist/cjs/internal/stm/tQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tRandom.js +10 -33
- package/dist/cjs/internal/stm/tRandom.js.map +1 -1
- package/dist/cjs/internal/stm/tReentrantLock.js +10 -33
- package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
- package/dist/cjs/internal/stm/tRef.js +7 -30
- package/dist/cjs/internal/stm/tRef.js.map +1 -1
- package/dist/cjs/internal/stm/tSemaphore.js +8 -31
- package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
- package/dist/cjs/internal/stm/tSet.js +10 -33
- package/dist/cjs/internal/stm/tSet.js.map +1 -1
- package/dist/cjs/internal/stream/emit.js +8 -31
- package/dist/cjs/internal/stream/emit.js.map +1 -1
- package/dist/cjs/internal/stream/haltStrategy.js +4 -27
- package/dist/cjs/internal/stream/haltStrategy.js.map +1 -1
- package/dist/cjs/internal/stream/handoff.js +7 -30
- package/dist/cjs/internal/stream/handoff.js.map +1 -1
- package/dist/cjs/internal/stream/pull.js +7 -30
- package/dist/cjs/internal/stream/pull.js.map +1 -1
- package/dist/cjs/internal/stream.js +103 -80
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/subscriptionRef.js +13 -36
- package/dist/cjs/internal/subscriptionRef.js.map +1 -1
- package/dist/cjs/internal/supervisor/patch.js +8 -31
- package/dist/cjs/internal/supervisor/patch.js.map +1 -1
- package/dist/cjs/internal/supervisor.js +8 -31
- package/dist/cjs/internal/supervisor.js.map +1 -1
- package/dist/cjs/internal/synchronizedRef.js +5 -28
- package/dist/cjs/internal/synchronizedRef.js.map +1 -1
- package/dist/cjs/internal/take.js +9 -32
- package/dist/cjs/internal/take.js.map +1 -1
- package/dist/cjs/internal/tracer.js +3 -26
- package/dist/cjs/internal/tracer.js.map +1 -1
- package/dist/cjs/internal/trie.js +9 -32
- package/dist/cjs/internal/trie.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Cause.d.ts +40 -1
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +3 -3
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +5 -0
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/Console.d.ts +2 -4
- package/dist/dts/Console.d.ts.map +1 -1
- package/dist/dts/Duration.d.ts +5 -0
- package/dist/dts/Duration.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +15 -0
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/PubSub.d.ts +15 -4
- package/dist/dts/PubSub.d.ts.map +1 -1
- package/dist/dts/Random.d.ts +8 -0
- package/dist/dts/Random.d.ts.map +1 -1
- package/dist/dts/RcMap.d.ts +93 -0
- package/dist/dts/RcMap.d.ts.map +1 -0
- package/dist/dts/RcRef.d.ts +83 -0
- package/dist/dts/RcRef.d.ts.map +1 -0
- package/dist/dts/Stream.d.ts +1139 -29
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/index.d.ts +8 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/core-effect.d.ts.map +1 -1
- package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
- package/dist/dts/internal/logger.d.ts.map +1 -1
- package/dist/dts/internal/random.d.ts +1 -1
- package/dist/dts/internal/random.d.ts.map +1 -1
- package/dist/dts/internal/rcMap.d.ts +2 -0
- package/dist/dts/internal/rcMap.d.ts.map +1 -0
- package/dist/dts/internal/rcRef.d.ts +2 -0
- package/dist/dts/internal/rcRef.d.ts.map +1 -0
- package/dist/dts/internal/stream.d.ts +1 -0
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Cause.js +21 -0
- package/dist/esm/Cause.js.map +1 -1
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Config.js.map +1 -1
- package/dist/esm/Console.js.map +1 -1
- package/dist/esm/Data.js +3 -1
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/Duration.js +20 -0
- package/dist/esm/Duration.js.map +1 -1
- package/dist/esm/Logger.js +10 -0
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/PubSub.js.map +1 -1
- package/dist/esm/Random.js +8 -0
- package/dist/esm/Random.js.map +1 -1
- package/dist/esm/RcMap.js +44 -0
- package/dist/esm/RcMap.js.map +1 -0
- package/dist/esm/RcRef.js +43 -0
- package/dist/esm/RcRef.js.map +1 -0
- package/dist/esm/Stream.js +1102 -3
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/index.js +8 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/cause.js +21 -5
- package/dist/esm/internal/cause.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/core-effect.js +0 -5
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +11 -7
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/defaultServices.js +1 -1
- package/dist/esm/internal/defaultServices.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +2 -0
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/logger.js +126 -26
- package/dist/esm/internal/logger.js.map +1 -1
- package/dist/esm/internal/pool.js +29 -5
- package/dist/esm/internal/pool.js.map +1 -1
- package/dist/esm/internal/pubsub.js +216 -36
- package/dist/esm/internal/pubsub.js.map +1 -1
- package/dist/esm/internal/random.js +2 -1
- package/dist/esm/internal/random.js.map +1 -1
- package/dist/esm/internal/rcMap.js +120 -0
- package/dist/esm/internal/rcMap.js.map +1 -0
- package/dist/esm/internal/rcRef.js +112 -0
- package/dist/esm/internal/rcRef.js.map +1 -0
- package/dist/esm/internal/stream.js +53 -8
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +17 -1
- package/src/Cause.ts +47 -1
- package/src/Channel.ts +3 -3
- package/src/Config.ts +6 -0
- package/src/Console.ts +2 -4
- package/src/Data.ts +1 -1
- package/src/Duration.ts +18 -0
- package/src/Logger.ts +19 -0
- package/src/PubSub.ts +11 -4
- package/src/Random.ts +9 -0
- package/src/RcMap.ts +103 -0
- package/src/RcRef.ts +91 -0
- package/src/Stream.ts +1158 -29
- package/src/index.ts +10 -0
- package/src/internal/cause.ts +26 -5
- package/src/internal/channel/channelExecutor.ts +1 -1
- package/src/internal/channel.ts +4 -3
- package/src/internal/core-effect.ts +0 -5
- package/src/internal/core.ts +19 -9
- package/src/internal/defaultServices.ts +1 -1
- package/src/internal/fiberRuntime.ts +6 -0
- package/src/internal/logger.ts +133 -27
- package/src/internal/pool.ts +36 -5
- package/src/internal/pubsub.ts +249 -58
- package/src/internal/random.ts +2 -1
- package/src/internal/rcMap.ts +213 -0
- package/src/internal/rcRef.ts +172 -0
- package/src/internal/stream.ts +325 -111
- package/src/internal/version.ts +1 -1
package/dist/esm/Stream.js
CHANGED
|
@@ -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
|
-
*
|
|
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 `
|
|
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
|
*/
|