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/dts/Stream.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ import type * as Emit from "./StreamEmit.js";
|
|
|
28
28
|
import type * as HaltStrategy from "./StreamHaltStrategy.js";
|
|
29
29
|
import type * as Take from "./Take.js";
|
|
30
30
|
import type * as Tracer from "./Tracer.js";
|
|
31
|
-
import type { Covariant, NoInfer } from "./Types.js";
|
|
31
|
+
import type { Covariant, NoInfer, TupleOf } from "./Types.js";
|
|
32
32
|
import type * as Unify from "./Unify.js";
|
|
33
33
|
/**
|
|
34
34
|
* @since 2.0.0
|
|
@@ -134,11 +134,13 @@ export declare namespace Stream {
|
|
|
134
134
|
/**
|
|
135
135
|
* @since 2.0.0
|
|
136
136
|
* @category models
|
|
137
|
+
* @deprecated use Types.TupleOf instead
|
|
137
138
|
*/
|
|
138
139
|
type DynamicTuple<T, N extends number> = N extends N ? number extends N ? Array<T> : DynamicTupleOf<T, N, []> : never;
|
|
139
140
|
/**
|
|
140
141
|
* @since 2.0.0
|
|
141
142
|
* @category models
|
|
143
|
+
* @deprecated use Types.TupleOf instead
|
|
142
144
|
*/
|
|
143
145
|
type DynamicTupleOf<T, N extends number, R extends Array<unknown>> = R["length"] extends N ? R : DynamicTupleOf<T, N, [T, ...R]>;
|
|
144
146
|
}
|
|
@@ -169,6 +171,29 @@ export declare const accumulateChunks: <A, E, R>(self: Stream<A, E, R>) => Strea
|
|
|
169
171
|
* Creates a stream from a single value that will get cleaned up after the
|
|
170
172
|
* stream is consumed.
|
|
171
173
|
*
|
|
174
|
+
* @example
|
|
175
|
+
* import { Console, Effect, Stream } from "effect"
|
|
176
|
+
*
|
|
177
|
+
* // Simulating File operations
|
|
178
|
+
* const open = (filename: string) =>
|
|
179
|
+
* Effect.gen(function*() {
|
|
180
|
+
* yield* Console.log(`Opening ${filename}`)
|
|
181
|
+
* return {
|
|
182
|
+
* getLines: Effect.succeed(["Line 1", "Line 2", "Line 3"]),
|
|
183
|
+
* close: Console.log(`Closing ${filename}`)
|
|
184
|
+
* }
|
|
185
|
+
* })
|
|
186
|
+
*
|
|
187
|
+
* const stream = Stream.acquireRelease(
|
|
188
|
+
* open("file.txt"),
|
|
189
|
+
* (file) => file.close
|
|
190
|
+
* ).pipe(Stream.flatMap((file) => file.getLines))
|
|
191
|
+
*
|
|
192
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
193
|
+
* // Opening file.txt
|
|
194
|
+
* // Closing file.txt
|
|
195
|
+
* // { _id: 'Chunk', values: [ [ 'Line 1', 'Line 2', 'Line 3' ] ] }
|
|
196
|
+
*
|
|
172
197
|
* @since 2.0.0
|
|
173
198
|
* @category constructors
|
|
174
199
|
*/
|
|
@@ -229,6 +254,14 @@ export declare const aggregateWithinEither: {
|
|
|
229
254
|
/**
|
|
230
255
|
* Maps the success values of this stream to the specified constant value.
|
|
231
256
|
*
|
|
257
|
+
* @example
|
|
258
|
+
* import { Effect, Stream } from "effect"
|
|
259
|
+
*
|
|
260
|
+
* const stream = Stream.range(1, 5).pipe(Stream.as(null))
|
|
261
|
+
*
|
|
262
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
263
|
+
* // { _id: 'Chunk', values: [ null, null, null, null, null ] }
|
|
264
|
+
*
|
|
232
265
|
* @since 2.0.0
|
|
233
266
|
* @category mapping
|
|
234
267
|
*/
|
|
@@ -236,7 +269,10 @@ export declare const as: {
|
|
|
236
269
|
<B>(value: B): <A, E, R>(self: Stream<A, E, R>) => Stream<B, E, R>;
|
|
237
270
|
<A, E, R, B>(self: Stream<A, E, R>, value: B): Stream<B, E, R>;
|
|
238
271
|
};
|
|
239
|
-
declare const _async: <A, E = never, R = never>(register: (emit: Emit.Emit<R, E, A, void>) => Effect.Effect<void, never, R> | void,
|
|
272
|
+
declare const _async: <A, E = never, R = never>(register: (emit: Emit.Emit<R, E, A, void>) => Effect.Effect<void, never, R> | void, bufferSize?: number | "unbounded" | {
|
|
273
|
+
readonly bufferSize?: number | undefined;
|
|
274
|
+
readonly strategy?: "dropping" | "sliding" | "suspend" | undefined;
|
|
275
|
+
} | undefined) => Stream<A, E, R>;
|
|
240
276
|
export {
|
|
241
277
|
/**
|
|
242
278
|
* Creates a stream from an asynchronous callback that can be called multiple
|
|
@@ -246,6 +282,29 @@ export {
|
|
|
246
282
|
* The registration function can optionally return an `Effect`, which will be
|
|
247
283
|
* executed if the `Fiber` executing this Effect is interrupted.
|
|
248
284
|
*
|
|
285
|
+
* @example
|
|
286
|
+
* import type { StreamEmit } from "effect"
|
|
287
|
+
* import { Chunk, Effect, Option, Stream } from "effect"
|
|
288
|
+
*
|
|
289
|
+
* const events = [1, 2, 3, 4]
|
|
290
|
+
*
|
|
291
|
+
* const stream = Stream.async(
|
|
292
|
+
* (emit: StreamEmit.Emit<never, never, number, void>) => {
|
|
293
|
+
* events.forEach((n) => {
|
|
294
|
+
* setTimeout(() => {
|
|
295
|
+
* if (n === 3) {
|
|
296
|
+
* emit(Effect.fail(Option.none())) // Terminate the stream
|
|
297
|
+
* } else {
|
|
298
|
+
* emit(Effect.succeed(Chunk.of(n))) // Add the current item to the stream
|
|
299
|
+
* }
|
|
300
|
+
* }, 100 * n)
|
|
301
|
+
* })
|
|
302
|
+
* }
|
|
303
|
+
* )
|
|
304
|
+
*
|
|
305
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
306
|
+
* // { _id: 'Chunk', values: [ 1, 2 ] }
|
|
307
|
+
*
|
|
249
308
|
* @since 2.0.0
|
|
250
309
|
* @category constructors
|
|
251
310
|
*/
|
|
@@ -259,7 +318,10 @@ _async as async };
|
|
|
259
318
|
* @since 2.0.0
|
|
260
319
|
* @category constructors
|
|
261
320
|
*/
|
|
262
|
-
export declare const asyncEffect: <A, E = never, R = never>(register: (emit: Emit.Emit<R, E, A, void>) => Effect.Effect<unknown, E, R>,
|
|
321
|
+
export declare const asyncEffect: <A, E = never, R = never>(register: (emit: Emit.Emit<R, E, A, void>) => Effect.Effect<unknown, E, R>, bufferSize?: number | "unbounded" | {
|
|
322
|
+
readonly bufferSize?: number | undefined;
|
|
323
|
+
readonly strategy?: "dropping" | "sliding" | "suspend" | undefined;
|
|
324
|
+
} | undefined) => Stream<A, E, R>;
|
|
263
325
|
/**
|
|
264
326
|
* Creates a stream from an asynchronous callback that can be called multiple
|
|
265
327
|
* times. The registration of the callback itself returns an a scoped
|
|
@@ -269,7 +331,10 @@ export declare const asyncEffect: <A, E = never, R = never>(register: (emit: Emi
|
|
|
269
331
|
* @since 2.0.0
|
|
270
332
|
* @category constructors
|
|
271
333
|
*/
|
|
272
|
-
export declare const asyncScoped: <A, E = never, R = never>(register: (emit: Emit.Emit<R, E, A, void>) => Effect.Effect<unknown, E, R | Scope.Scope>,
|
|
334
|
+
export declare const asyncScoped: <A, E = never, R = never>(register: (emit: Emit.Emit<R, E, A, void>) => Effect.Effect<unknown, E, R | Scope.Scope>, bufferSize?: number | "unbounded" | {
|
|
335
|
+
readonly bufferSize?: number | undefined;
|
|
336
|
+
readonly strategy?: "dropping" | "sliding" | "suspend" | undefined;
|
|
337
|
+
} | undefined) => Stream<A, E, Exclude<R, Scope.Scope>>;
|
|
273
338
|
/**
|
|
274
339
|
* Returns a `Stream` that first collects `n` elements from the input `Stream`,
|
|
275
340
|
* and then creates a new `Stream` using the specified function, and sends all
|
|
@@ -287,12 +352,83 @@ export declare const branchAfter: {
|
|
|
287
352
|
* as this stream. The driver stream will only ever advance the `maximumLag`
|
|
288
353
|
* chunks before the slowest downstream stream.
|
|
289
354
|
*
|
|
355
|
+
* @example
|
|
356
|
+
* import { Console, Effect, Fiber, Schedule, Stream } from "effect"
|
|
357
|
+
*
|
|
358
|
+
* const numbers = Effect.scoped(
|
|
359
|
+
* Stream.range(1, 20).pipe(
|
|
360
|
+
* Stream.tap((n) => Console.log(`Emit ${n} element before broadcasting`)),
|
|
361
|
+
* Stream.broadcast(2, 5),
|
|
362
|
+
* Stream.flatMap(([first, second]) =>
|
|
363
|
+
* Effect.gen(function*() {
|
|
364
|
+
* const fiber1 = yield* Stream.runFold(first, 0, (acc, e) => Math.max(acc, e)).pipe(
|
|
365
|
+
* Effect.andThen((max) => Console.log(`Maximum: ${max}`)),
|
|
366
|
+
* Effect.fork
|
|
367
|
+
* )
|
|
368
|
+
* const fiber2 = yield* second.pipe(
|
|
369
|
+
* Stream.schedule(Schedule.spaced("1 second")),
|
|
370
|
+
* Stream.runForEach((n) => Console.log(`Logging to the Console: ${n}`)),
|
|
371
|
+
* Effect.fork
|
|
372
|
+
* )
|
|
373
|
+
* yield* Fiber.join(fiber1).pipe(
|
|
374
|
+
* Effect.zip(Fiber.join(fiber2), { concurrent: true })
|
|
375
|
+
* )
|
|
376
|
+
* })
|
|
377
|
+
* ),
|
|
378
|
+
* Stream.runCollect
|
|
379
|
+
* )
|
|
380
|
+
* )
|
|
381
|
+
*
|
|
382
|
+
* // Effect.runPromise(numbers).then(console.log)
|
|
383
|
+
* // Emit 1 element before broadcasting
|
|
384
|
+
* // Emit 2 element before broadcasting
|
|
385
|
+
* // Emit 3 element before broadcasting
|
|
386
|
+
* // Emit 4 element before broadcasting
|
|
387
|
+
* // Emit 5 element before broadcasting
|
|
388
|
+
* // Emit 6 element before broadcasting
|
|
389
|
+
* // Emit 7 element before broadcasting
|
|
390
|
+
* // Emit 8 element before broadcasting
|
|
391
|
+
* // Emit 9 element before broadcasting
|
|
392
|
+
* // Emit 10 element before broadcasting
|
|
393
|
+
* // Emit 11 element before broadcasting
|
|
394
|
+
* // Logging to the Console: 1
|
|
395
|
+
* // Logging to the Console: 2
|
|
396
|
+
* // Logging to the Console: 3
|
|
397
|
+
* // Logging to the Console: 4
|
|
398
|
+
* // Logging to the Console: 5
|
|
399
|
+
* // Emit 12 element before broadcasting
|
|
400
|
+
* // Emit 13 element before broadcasting
|
|
401
|
+
* // Emit 14 element before broadcasting
|
|
402
|
+
* // Emit 15 element before broadcasting
|
|
403
|
+
* // Emit 16 element before broadcasting
|
|
404
|
+
* // Logging to the Console: 6
|
|
405
|
+
* // Logging to the Console: 7
|
|
406
|
+
* // Logging to the Console: 8
|
|
407
|
+
* // Logging to the Console: 9
|
|
408
|
+
* // Logging to the Console: 10
|
|
409
|
+
* // Emit 17 element before broadcasting
|
|
410
|
+
* // Emit 18 element before broadcasting
|
|
411
|
+
* // Emit 19 element before broadcasting
|
|
412
|
+
* // Emit 20 element before broadcasting
|
|
413
|
+
* // Logging to the Console: 11
|
|
414
|
+
* // Logging to the Console: 12
|
|
415
|
+
* // Logging to the Console: 13
|
|
416
|
+
* // Logging to the Console: 14
|
|
417
|
+
* // Logging to the Console: 15
|
|
418
|
+
* // Maximum: 20
|
|
419
|
+
* // Logging to the Console: 16
|
|
420
|
+
* // Logging to the Console: 17
|
|
421
|
+
* // Logging to the Console: 18
|
|
422
|
+
* // Logging to the Console: 19
|
|
423
|
+
* // Logging to the Console: 20
|
|
424
|
+
* // { _id: 'Chunk', values: [ undefined ] }
|
|
425
|
+
*
|
|
290
426
|
* @since 2.0.0
|
|
291
427
|
* @category utils
|
|
292
428
|
*/
|
|
293
429
|
export declare const broadcast: {
|
|
294
|
-
<N extends number>(n: N, maximumLag: number): <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<
|
|
295
|
-
<A, E, R, N extends number>(self: Stream<A, E, R>, n: N, maximumLag: number): Effect.Effect<
|
|
430
|
+
<N extends number>(n: N, maximumLag: number): <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<TupleOf<N, Stream<A, E>>, never, Scope.Scope | R>;
|
|
431
|
+
<A, E, R, N extends number>(self: Stream<A, E, R>, n: N, maximumLag: number): Effect.Effect<TupleOf<N, Stream<A, E>>, never, Scope.Scope | R>;
|
|
296
432
|
};
|
|
297
433
|
/**
|
|
298
434
|
* Fan out the stream, producing a dynamic number of streams that have the
|
|
@@ -317,8 +453,8 @@ export declare const broadcastDynamic: {
|
|
|
317
453
|
* @category utils
|
|
318
454
|
*/
|
|
319
455
|
export declare const broadcastedQueues: {
|
|
320
|
-
<N extends number>(n: N, maximumLag: number): <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<
|
|
321
|
-
<A, E, R, N extends number>(self: Stream<A, E, R>, n: N, maximumLag: number): Effect.Effect<
|
|
456
|
+
<N extends number>(n: N, maximumLag: number): <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<TupleOf<N, Queue.Dequeue<Take.Take<A, E>>>, never, R | Scope.Scope>;
|
|
457
|
+
<A, E, R, N extends number>(self: Stream<A, E, R>, n: N, maximumLag: number): Effect.Effect<TupleOf<N, Queue.Dequeue<Take.Take<A, E>>>, never, Scope.Scope | R>;
|
|
322
458
|
};
|
|
323
459
|
/**
|
|
324
460
|
* Converts the stream to a scoped dynamic amount of queues. Every chunk will
|
|
@@ -338,9 +474,38 @@ export declare const broadcastedQueuesDynamic: {
|
|
|
338
474
|
* Allows a faster producer to progress independently of a slower consumer by
|
|
339
475
|
* buffering up to `capacity` elements in a queue.
|
|
340
476
|
*
|
|
341
|
-
*
|
|
477
|
+
* Note: This combinator destroys the chunking structure. It's recommended to
|
|
342
478
|
* use rechunk afterwards. Additionally, prefer capacities that are powers
|
|
343
479
|
* of 2 for better performance.
|
|
480
|
+
*
|
|
481
|
+
* @example
|
|
482
|
+
* import { Console, Effect, Schedule, Stream } from "effect"
|
|
483
|
+
*
|
|
484
|
+
* const stream = Stream.range(1, 10).pipe(
|
|
485
|
+
* Stream.tap((n) => Console.log(`before buffering: ${n}`)),
|
|
486
|
+
* Stream.buffer({ capacity: 4 }),
|
|
487
|
+
* Stream.tap((n) => Console.log(`after buffering: ${n}`)),
|
|
488
|
+
* Stream.schedule(Schedule.spaced("5 seconds"))
|
|
489
|
+
* )
|
|
490
|
+
*
|
|
491
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
492
|
+
* // before buffering: 1
|
|
493
|
+
* // before buffering: 2
|
|
494
|
+
* // before buffering: 3
|
|
495
|
+
* // before buffering: 4
|
|
496
|
+
* // before buffering: 5
|
|
497
|
+
* // before buffering: 6
|
|
498
|
+
* // after buffering: 1
|
|
499
|
+
* // after buffering: 2
|
|
500
|
+
* // before buffering: 7
|
|
501
|
+
* // after buffering: 3
|
|
502
|
+
* // before buffering: 8
|
|
503
|
+
* // after buffering: 4
|
|
504
|
+
* // before buffering: 9
|
|
505
|
+
* // after buffering: 5
|
|
506
|
+
* // before buffering: 10
|
|
507
|
+
* // ...
|
|
508
|
+
*
|
|
344
509
|
* @since 2.0.0
|
|
345
510
|
* @category utils
|
|
346
511
|
*/
|
|
@@ -489,6 +654,14 @@ export declare const catchSomeCause: {
|
|
|
489
654
|
* previous element emitted, using natural equality to determine whether two
|
|
490
655
|
* elements are equal.
|
|
491
656
|
*
|
|
657
|
+
* @example
|
|
658
|
+
* import { Effect, Stream } from "effect"
|
|
659
|
+
*
|
|
660
|
+
* const stream = Stream.make(1, 1, 1, 2, 2, 3, 4).pipe(Stream.changes)
|
|
661
|
+
*
|
|
662
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
663
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4 ] }
|
|
664
|
+
*
|
|
492
665
|
* @since 2.0.0
|
|
493
666
|
* @category utils
|
|
494
667
|
*/
|
|
@@ -572,6 +745,17 @@ export declare const combineChunks: {
|
|
|
572
745
|
* that emits the elements from this stream and then the elements from the
|
|
573
746
|
* specified stream.
|
|
574
747
|
*
|
|
748
|
+
* @example
|
|
749
|
+
* import { Effect, Stream } from "effect"
|
|
750
|
+
*
|
|
751
|
+
* const s1 = Stream.make(1, 2, 3)
|
|
752
|
+
* const s2 = Stream.make(4, 5)
|
|
753
|
+
*
|
|
754
|
+
* const stream = Stream.concat(s1, s2)
|
|
755
|
+
*
|
|
756
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
757
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
|
|
758
|
+
*
|
|
575
759
|
* @since 2.0.0
|
|
576
760
|
* @category utils
|
|
577
761
|
*/
|
|
@@ -582,6 +766,24 @@ export declare const concat: {
|
|
|
582
766
|
/**
|
|
583
767
|
* Concatenates all of the streams in the chunk to one stream.
|
|
584
768
|
*
|
|
769
|
+
* @example
|
|
770
|
+
* import { Chunk, Effect, Stream } from "effect"
|
|
771
|
+
*
|
|
772
|
+
* const s1 = Stream.make(1, 2, 3)
|
|
773
|
+
* const s2 = Stream.make(4, 5)
|
|
774
|
+
* const s3 = Stream.make(6, 7, 8)
|
|
775
|
+
*
|
|
776
|
+
* const stream = Stream.concatAll(Chunk.make(s1, s2, s3))
|
|
777
|
+
*
|
|
778
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
779
|
+
* // {
|
|
780
|
+
* // _id: 'Chunk',
|
|
781
|
+
* // values: [
|
|
782
|
+
* // 1, 2, 3, 4,
|
|
783
|
+
* // 5, 6, 7, 8
|
|
784
|
+
* // ]
|
|
785
|
+
* // }
|
|
786
|
+
*
|
|
585
787
|
* @since 2.0.0
|
|
586
788
|
* @category constructors
|
|
587
789
|
*/
|
|
@@ -593,6 +795,22 @@ export declare const concatAll: <A, E, R>(streams: Chunk.Chunk<Stream<A, E, R>>)
|
|
|
593
795
|
*
|
|
594
796
|
* See also `Stream.zip` for the more common point-wise variant.
|
|
595
797
|
*
|
|
798
|
+
* @example
|
|
799
|
+
* import { Effect, Stream } from "effect"
|
|
800
|
+
*
|
|
801
|
+
* const s1 = Stream.make(1, 2, 3)
|
|
802
|
+
* const s2 = Stream.make("a", "b")
|
|
803
|
+
*
|
|
804
|
+
* const product = Stream.cross(s1, s2)
|
|
805
|
+
*
|
|
806
|
+
* // Effect.runPromise(Stream.runCollect(product)).then(console.log)
|
|
807
|
+
* // {
|
|
808
|
+
* // _id: "Chunk",
|
|
809
|
+
* // values: [
|
|
810
|
+
* // [ 1, "a" ], [ 1, "b" ], [ 2, "a" ], [ 2, "b" ], [ 3, "a" ], [ 3, "b" ]
|
|
811
|
+
* // ]
|
|
812
|
+
* // }
|
|
813
|
+
*
|
|
596
814
|
* @since 2.0.0
|
|
597
815
|
* @category utils
|
|
598
816
|
*/
|
|
@@ -654,6 +872,45 @@ export declare const crossWith: {
|
|
|
654
872
|
* example, a search engine may only want to initiate a search after a user
|
|
655
873
|
* has paused typing so as to not prematurely recommend results.
|
|
656
874
|
*
|
|
875
|
+
* @example
|
|
876
|
+
* import { Effect, Stream } from "effect"
|
|
877
|
+
*
|
|
878
|
+
* let last = Date.now()
|
|
879
|
+
* const log = (message: string) =>
|
|
880
|
+
* Effect.sync(() => {
|
|
881
|
+
* const end = Date.now()
|
|
882
|
+
* console.log(`${message} after ${end - last}ms`)
|
|
883
|
+
* last = end
|
|
884
|
+
* })
|
|
885
|
+
*
|
|
886
|
+
* const stream = Stream.make(1, 2, 3).pipe(
|
|
887
|
+
* Stream.concat(
|
|
888
|
+
* Stream.fromEffect(Effect.sleep("200 millis").pipe(Effect.as(4))) // Emit 4 after 200 ms
|
|
889
|
+
* ),
|
|
890
|
+
* Stream.concat(Stream.make(5, 6)), // Continue with more rapid values
|
|
891
|
+
* Stream.concat(
|
|
892
|
+
* Stream.fromEffect(Effect.sleep("150 millis").pipe(Effect.as(7))) // Emit 7 after 150 ms
|
|
893
|
+
* ),
|
|
894
|
+
* Stream.concat(Stream.make(8)),
|
|
895
|
+
* Stream.tap((n) => log(`Received ${n}`)),
|
|
896
|
+
* Stream.debounce("100 millis"), // Only emit values after a pause of at least 100 milliseconds,
|
|
897
|
+
* Stream.tap((n) => log(`> Emitted ${n}`))
|
|
898
|
+
* )
|
|
899
|
+
*
|
|
900
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
901
|
+
* // Received 1 after 5ms
|
|
902
|
+
* // Received 2 after 2ms
|
|
903
|
+
* // Received 3 after 0ms
|
|
904
|
+
* // > Emitted 3 after 104ms
|
|
905
|
+
* // Received 4 after 99ms
|
|
906
|
+
* // Received 5 after 1ms
|
|
907
|
+
* // Received 6 after 0ms
|
|
908
|
+
* // > Emitted 6 after 101ms
|
|
909
|
+
* // Received 7 after 50ms
|
|
910
|
+
* // Received 8 after 1ms
|
|
911
|
+
* // > Emitted 8 after 101ms
|
|
912
|
+
* // { _id: 'Chunk', values: [ 3, 6, 8 ] }
|
|
913
|
+
*
|
|
657
914
|
* @since 2.0.0
|
|
658
915
|
* @category utils
|
|
659
916
|
*/
|
|
@@ -695,12 +952,12 @@ export declare const distributedWith: {
|
|
|
695
952
|
readonly size: N;
|
|
696
953
|
readonly maximumLag: number;
|
|
697
954
|
readonly decide: (a: A) => Effect.Effect<Predicate<number>>;
|
|
698
|
-
}): <E, R>(self: Stream<A, E, R>) => Effect.Effect<
|
|
955
|
+
}): <E, R>(self: Stream<A, E, R>) => Effect.Effect<TupleOf<N, Queue.Dequeue<Exit.Exit<A, Option.Option<E>>>>, never, Scope.Scope | R>;
|
|
699
956
|
<A, E, R, N extends number>(self: Stream<A, E, R>, options: {
|
|
700
957
|
readonly size: N;
|
|
701
958
|
readonly maximumLag: number;
|
|
702
959
|
readonly decide: (a: A) => Effect.Effect<Predicate<number>>;
|
|
703
|
-
}): Effect.Effect<
|
|
960
|
+
}): Effect.Effect<TupleOf<N, Queue.Dequeue<Exit.Exit<A, Option.Option<E>>>>, never, Scope.Scope | R>;
|
|
704
961
|
};
|
|
705
962
|
/**
|
|
706
963
|
* More powerful version of `Stream.distributedWith`. This returns a function
|
|
@@ -727,6 +984,15 @@ export declare const distributedWithDynamic: {
|
|
|
727
984
|
* Converts this stream to a stream that executes its effects but emits no
|
|
728
985
|
* elements. Useful for sequencing effects using streams:
|
|
729
986
|
*
|
|
987
|
+
* @example
|
|
988
|
+
* import { Effect, Stream } from "effect"
|
|
989
|
+
*
|
|
990
|
+
* // We create a stream and immediately drain it.
|
|
991
|
+
* const stream = Stream.range(1, 6).pipe(Stream.drain)
|
|
992
|
+
*
|
|
993
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
994
|
+
* // { _id: 'Chunk', values: [] }
|
|
995
|
+
*
|
|
730
996
|
* @since 2.0.0
|
|
731
997
|
* @category utils
|
|
732
998
|
*/
|
|
@@ -823,6 +1089,14 @@ export declare const either: <A, E, R>(self: Stream<A, E, R>) => Stream<Either.E
|
|
|
823
1089
|
/**
|
|
824
1090
|
* The empty stream.
|
|
825
1091
|
*
|
|
1092
|
+
* @example
|
|
1093
|
+
* import { Effect, Stream } from "effect"
|
|
1094
|
+
*
|
|
1095
|
+
* const stream = Stream.empty
|
|
1096
|
+
*
|
|
1097
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1098
|
+
* // { _id: 'Chunk', values: [] }
|
|
1099
|
+
*
|
|
826
1100
|
* @since 2.0.0
|
|
827
1101
|
* @category constructors
|
|
828
1102
|
*/
|
|
@@ -830,6 +1104,22 @@ export declare const empty: Stream<never>;
|
|
|
830
1104
|
/**
|
|
831
1105
|
* Executes the provided finalizer after this stream's finalizers run.
|
|
832
1106
|
*
|
|
1107
|
+
* @example
|
|
1108
|
+
* import { Console, Effect, Stream } from "effect"
|
|
1109
|
+
*
|
|
1110
|
+
* const program = Stream.fromEffect(Console.log("Application Logic.")).pipe(
|
|
1111
|
+
* Stream.concat(Stream.finalizer(Console.log("Finalizing the stream"))),
|
|
1112
|
+
* Stream.ensuring(
|
|
1113
|
+
* Console.log("Doing some other works after stream's finalization")
|
|
1114
|
+
* )
|
|
1115
|
+
* )
|
|
1116
|
+
*
|
|
1117
|
+
* // Effect.runPromise(Stream.runCollect(program)).then(console.log)
|
|
1118
|
+
* // Application Logic.
|
|
1119
|
+
* // Finalizing the stream
|
|
1120
|
+
* // Doing some other works after stream's finalization
|
|
1121
|
+
* // { _id: 'Chunk', values: [ undefined, undefined ] }
|
|
1122
|
+
*
|
|
833
1123
|
* @since 2.0.0
|
|
834
1124
|
* @category utils
|
|
835
1125
|
*/
|
|
@@ -885,6 +1175,18 @@ export declare const execute: <X, E, R>(effect: Effect.Effect<X, E, R>) => Strea
|
|
|
885
1175
|
/**
|
|
886
1176
|
* Terminates with the specified error.
|
|
887
1177
|
*
|
|
1178
|
+
* @example
|
|
1179
|
+
* import { Effect, Stream } from "effect"
|
|
1180
|
+
*
|
|
1181
|
+
* const stream = Stream.fail("Uh oh!")
|
|
1182
|
+
*
|
|
1183
|
+
* Effect.runPromiseExit(Stream.runCollect(stream)).then(console.log)
|
|
1184
|
+
* // {
|
|
1185
|
+
* // _id: 'Exit',
|
|
1186
|
+
* // _tag: 'Failure',
|
|
1187
|
+
* // cause: { _id: 'Cause', _tag: 'Fail', failure: 'Uh oh!' }
|
|
1188
|
+
* // }
|
|
1189
|
+
*
|
|
888
1190
|
* @since 2.0.0
|
|
889
1191
|
* @category constructors
|
|
890
1192
|
*/
|
|
@@ -913,6 +1215,14 @@ export declare const failCauseSync: <E>(evaluate: LazyArg<Cause.Cause<E>>) => St
|
|
|
913
1215
|
/**
|
|
914
1216
|
* Filters the elements emitted by this stream using the provided function.
|
|
915
1217
|
*
|
|
1218
|
+
* @example
|
|
1219
|
+
* import { Effect, Stream } from "effect"
|
|
1220
|
+
*
|
|
1221
|
+
* const stream = Stream.range(1, 11).pipe(Stream.filter((n) => n % 2 === 0))
|
|
1222
|
+
*
|
|
1223
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1224
|
+
* // { _id: 'Chunk', values: [ 2, 4, 6, 8, 10 ] }
|
|
1225
|
+
*
|
|
916
1226
|
* @since 2.0.0
|
|
917
1227
|
* @category filtering
|
|
918
1228
|
*/
|
|
@@ -978,6 +1288,29 @@ export declare const filterMapWhileEffect: {
|
|
|
978
1288
|
* Creates a one-element stream that never fails and executes the finalizer
|
|
979
1289
|
* when it ends.
|
|
980
1290
|
*
|
|
1291
|
+
* @example
|
|
1292
|
+
* import { Console, Effect, Stream } from "effect"
|
|
1293
|
+
*
|
|
1294
|
+
* const application = Stream.fromEffect(Console.log("Application Logic."))
|
|
1295
|
+
*
|
|
1296
|
+
* const deleteDir = (dir: string) => Console.log(`Deleting dir: ${dir}`)
|
|
1297
|
+
*
|
|
1298
|
+
* const program = application.pipe(
|
|
1299
|
+
* Stream.concat(
|
|
1300
|
+
* Stream.finalizer(
|
|
1301
|
+
* deleteDir("tmp").pipe(
|
|
1302
|
+
* Effect.andThen(Console.log("Temporary directory was deleted."))
|
|
1303
|
+
* )
|
|
1304
|
+
* )
|
|
1305
|
+
* )
|
|
1306
|
+
* )
|
|
1307
|
+
*
|
|
1308
|
+
* // Effect.runPromise(Stream.runCollect(program)).then(console.log)
|
|
1309
|
+
* // Application Logic.
|
|
1310
|
+
* // Deleting dir: tmp
|
|
1311
|
+
* // Temporary directory was deleted.
|
|
1312
|
+
* // { _id: 'Chunk', values: [ undefined, undefined ] }
|
|
1313
|
+
*
|
|
981
1314
|
* @since 2.0.0
|
|
982
1315
|
* @category constructors
|
|
983
1316
|
*/
|
|
@@ -1106,6 +1439,22 @@ export declare const forever: <A, E, R>(self: Stream<A, E, R>) => Stream<A, E, R
|
|
|
1106
1439
|
/**
|
|
1107
1440
|
* Creates a stream from an `AsyncIterable`.
|
|
1108
1441
|
*
|
|
1442
|
+
* @example
|
|
1443
|
+
* import { Effect, Stream } from "effect"
|
|
1444
|
+
*
|
|
1445
|
+
* const myAsyncIterable = async function*() {
|
|
1446
|
+
* yield 1
|
|
1447
|
+
* yield 2
|
|
1448
|
+
* }
|
|
1449
|
+
*
|
|
1450
|
+
* const stream = Stream.fromAsyncIterable(
|
|
1451
|
+
* myAsyncIterable(),
|
|
1452
|
+
* (e) => new Error(String(e)) // Error Handling
|
|
1453
|
+
* )
|
|
1454
|
+
*
|
|
1455
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1456
|
+
* // { _id: 'Chunk', values: [ 1, 2 ] }
|
|
1457
|
+
*
|
|
1109
1458
|
* @since 2.0.0
|
|
1110
1459
|
* @category constructors
|
|
1111
1460
|
*/
|
|
@@ -1127,6 +1476,15 @@ export declare const toChannel: <A, E, R>(stream: Stream<A, E, R>) => Channel.Ch
|
|
|
1127
1476
|
/**
|
|
1128
1477
|
* Creates a stream from a `Chunk` of values.
|
|
1129
1478
|
*
|
|
1479
|
+
* @example
|
|
1480
|
+
* import { Chunk, Effect, Stream } from "effect"
|
|
1481
|
+
*
|
|
1482
|
+
* // Creating a stream with values from a single Chunk
|
|
1483
|
+
* const stream = Stream.fromChunk(Chunk.make(1, 2, 3))
|
|
1484
|
+
*
|
|
1485
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1486
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3 ] }
|
|
1487
|
+
*
|
|
1130
1488
|
* @since 2.0.0
|
|
1131
1489
|
* @category constructors
|
|
1132
1490
|
*/
|
|
@@ -1161,6 +1519,15 @@ export declare const fromChunkQueue: <A>(queue: Queue.Dequeue<Chunk.Chunk<A>>, o
|
|
|
1161
1519
|
/**
|
|
1162
1520
|
* Creates a stream from an arbitrary number of chunks.
|
|
1163
1521
|
*
|
|
1522
|
+
* @example
|
|
1523
|
+
* import { Chunk, Effect, Stream } from "effect"
|
|
1524
|
+
*
|
|
1525
|
+
* // Creating a stream with values from multiple Chunks
|
|
1526
|
+
* const stream = Stream.fromChunks(Chunk.make(1, 2, 3), Chunk.make(4, 5, 6))
|
|
1527
|
+
*
|
|
1528
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1529
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5, 6 ] }
|
|
1530
|
+
*
|
|
1164
1531
|
* @since 2.0.0
|
|
1165
1532
|
* @category constructors
|
|
1166
1533
|
*/
|
|
@@ -1169,6 +1536,14 @@ export declare const fromChunks: <A>(...chunks: Array<Chunk.Chunk<A>>) => Stream
|
|
|
1169
1536
|
* Either emits the success value of this effect or terminates the stream
|
|
1170
1537
|
* with the failure value of this effect.
|
|
1171
1538
|
*
|
|
1539
|
+
* @example
|
|
1540
|
+
* import { Effect, Random, Stream } from "effect"
|
|
1541
|
+
*
|
|
1542
|
+
* const stream = Stream.fromEffect(Random.nextInt)
|
|
1543
|
+
*
|
|
1544
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1545
|
+
* // Example Output: { _id: 'Chunk', values: [ 922694024 ] }
|
|
1546
|
+
*
|
|
1172
1547
|
* @since 2.0.0
|
|
1173
1548
|
* @category constructors
|
|
1174
1549
|
*/
|
|
@@ -1203,6 +1578,16 @@ export declare const fromPubSub: {
|
|
|
1203
1578
|
/**
|
|
1204
1579
|
* Creates a new `Stream` from an iterable collection of values.
|
|
1205
1580
|
*
|
|
1581
|
+
* @example
|
|
1582
|
+
* import { Effect, Stream } from "effect"
|
|
1583
|
+
*
|
|
1584
|
+
* const numbers = [1, 2, 3]
|
|
1585
|
+
*
|
|
1586
|
+
* const stream = Stream.fromIterable(numbers)
|
|
1587
|
+
*
|
|
1588
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1589
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3 ] }
|
|
1590
|
+
*
|
|
1206
1591
|
* @since 2.0.0
|
|
1207
1592
|
* @category constructors
|
|
1208
1593
|
*/
|
|
@@ -1210,6 +1595,23 @@ export declare const fromIterable: <A>(iterable: Iterable<A>) => Stream<A>;
|
|
|
1210
1595
|
/**
|
|
1211
1596
|
* Creates a stream from an effect producing a value of type `Iterable<A>`.
|
|
1212
1597
|
*
|
|
1598
|
+
* @example
|
|
1599
|
+
* import { Context, Effect, Stream } from "effect"
|
|
1600
|
+
*
|
|
1601
|
+
* class Database extends Context.Tag("Database")<
|
|
1602
|
+
* Database,
|
|
1603
|
+
* { readonly getUsers: Effect.Effect<Array<string>> }
|
|
1604
|
+
* >() {}
|
|
1605
|
+
*
|
|
1606
|
+
* const getUsers = Database.pipe(Effect.andThen((_) => _.getUsers))
|
|
1607
|
+
*
|
|
1608
|
+
* const stream = Stream.fromIterableEffect(getUsers)
|
|
1609
|
+
*
|
|
1610
|
+
* // Effect.runPromise(
|
|
1611
|
+
* // Stream.runCollect(stream.pipe(Stream.provideService(Database, { getUsers: Effect.succeed(["user1", "user2"]) })))
|
|
1612
|
+
* // ).then(console.log)
|
|
1613
|
+
* // { _id: 'Chunk', values: [ 'user1', 'user2' ] }
|
|
1614
|
+
*
|
|
1213
1615
|
* @since 2.0.0
|
|
1214
1616
|
* @category constructors
|
|
1215
1617
|
*/
|
|
@@ -1266,6 +1668,19 @@ export declare const fromReadableStreamByob: <E>(evaluate: LazyArg<ReadableStrea
|
|
|
1266
1668
|
* input. The stream will emit an element for each value output from the
|
|
1267
1669
|
* schedule, continuing for as long as the schedule continues.
|
|
1268
1670
|
*
|
|
1671
|
+
* @example
|
|
1672
|
+
* import { Effect, Schedule, Stream } from "effect"
|
|
1673
|
+
*
|
|
1674
|
+
* // Emits values every 1 second for a total of 5 emissions
|
|
1675
|
+
* const schedule = Schedule.spaced("1 second").pipe(
|
|
1676
|
+
* Schedule.compose(Schedule.recurs(5))
|
|
1677
|
+
* )
|
|
1678
|
+
*
|
|
1679
|
+
* const stream = Stream.fromSchedule(schedule)
|
|
1680
|
+
*
|
|
1681
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1682
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
|
|
1683
|
+
*
|
|
1269
1684
|
* @since 2.0.0
|
|
1270
1685
|
* @category constructors
|
|
1271
1686
|
*/
|
|
@@ -1284,6 +1699,35 @@ export declare const groupAdjacentBy: {
|
|
|
1284
1699
|
/**
|
|
1285
1700
|
* More powerful version of `Stream.groupByKey`.
|
|
1286
1701
|
*
|
|
1702
|
+
* @example
|
|
1703
|
+
* import { Chunk, Effect, GroupBy, Stream } from "effect"
|
|
1704
|
+
*
|
|
1705
|
+
* const groupByKeyResult = Stream.fromIterable([
|
|
1706
|
+
* "Mary",
|
|
1707
|
+
* "James",
|
|
1708
|
+
* "Robert",
|
|
1709
|
+
* "Patricia",
|
|
1710
|
+
* "John",
|
|
1711
|
+
* "Jennifer",
|
|
1712
|
+
* "Rebecca",
|
|
1713
|
+
* "Peter"
|
|
1714
|
+
* ]).pipe(
|
|
1715
|
+
* Stream.groupBy((name) => Effect.succeed([name.substring(0, 1), name]))
|
|
1716
|
+
* )
|
|
1717
|
+
*
|
|
1718
|
+
* const stream = GroupBy.evaluate(groupByKeyResult, (key, stream) =>
|
|
1719
|
+
* Stream.fromEffect(
|
|
1720
|
+
* Stream.runCollect(stream).pipe(
|
|
1721
|
+
* Effect.andThen((chunk) => [key, Chunk.size(chunk)] as const)
|
|
1722
|
+
* )
|
|
1723
|
+
* ))
|
|
1724
|
+
*
|
|
1725
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1726
|
+
* // {
|
|
1727
|
+
* // _id: 'Chunk',
|
|
1728
|
+
* // values: [ [ 'M', 1 ], [ 'J', 3 ], [ 'R', 2 ], [ 'P', 2 ] ]
|
|
1729
|
+
* // }
|
|
1730
|
+
*
|
|
1287
1731
|
* @since 2.0.0
|
|
1288
1732
|
* @category grouping
|
|
1289
1733
|
*/
|
|
@@ -1343,6 +1787,22 @@ export declare const groupByKey: {
|
|
|
1343
1787
|
/**
|
|
1344
1788
|
* Partitions the stream with specified `chunkSize`.
|
|
1345
1789
|
*
|
|
1790
|
+
* @example
|
|
1791
|
+
* import { Effect, Stream } from "effect"
|
|
1792
|
+
*
|
|
1793
|
+
* const stream = Stream.range(0, 8).pipe(Stream.grouped(3))
|
|
1794
|
+
*
|
|
1795
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then((chunks) => console.log("%o", chunks))
|
|
1796
|
+
* // {
|
|
1797
|
+
* // _id: 'Chunk',
|
|
1798
|
+
* // values: [
|
|
1799
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, [length]: 3 ] },
|
|
1800
|
+
* // { _id: 'Chunk', values: [ 3, 4, 5, [length]: 3 ] },
|
|
1801
|
+
* // { _id: 'Chunk', values: [ 6, 7, 8, [length]: 3 ] },
|
|
1802
|
+
* // [length]: 3
|
|
1803
|
+
* // ]
|
|
1804
|
+
* // }
|
|
1805
|
+
*
|
|
1346
1806
|
* @since 2.0.0
|
|
1347
1807
|
* @category utils
|
|
1348
1808
|
*/
|
|
@@ -1354,6 +1814,43 @@ export declare const grouped: {
|
|
|
1354
1814
|
* Partitions the stream with the specified `chunkSize` or until the specified
|
|
1355
1815
|
* `duration` has passed, whichever is satisfied first.
|
|
1356
1816
|
*
|
|
1817
|
+
* @example
|
|
1818
|
+
* import { Chunk, Effect, Schedule, Stream } from "effect"
|
|
1819
|
+
*
|
|
1820
|
+
* const stream = Stream.range(0, 9).pipe(
|
|
1821
|
+
* Stream.repeat(Schedule.spaced("1 second")),
|
|
1822
|
+
* Stream.groupedWithin(18, "1.5 seconds"),
|
|
1823
|
+
* Stream.take(3)
|
|
1824
|
+
* )
|
|
1825
|
+
*
|
|
1826
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then((chunks) => console.log(Chunk.toArray(chunks)))
|
|
1827
|
+
* // [
|
|
1828
|
+
* // {
|
|
1829
|
+
* // _id: 'Chunk',
|
|
1830
|
+
* // values: [
|
|
1831
|
+
* // 0, 1, 2, 3, 4, 5, 6,
|
|
1832
|
+
* // 7, 8, 9, 0, 1, 2, 3,
|
|
1833
|
+
* // 4, 5, 6, 7
|
|
1834
|
+
* // ]
|
|
1835
|
+
* // },
|
|
1836
|
+
* // {
|
|
1837
|
+
* // _id: 'Chunk',
|
|
1838
|
+
* // values: [
|
|
1839
|
+
* // 8, 9, 0, 1, 2,
|
|
1840
|
+
* // 3, 4, 5, 6, 7,
|
|
1841
|
+
* // 8, 9
|
|
1842
|
+
* // ]
|
|
1843
|
+
* // },
|
|
1844
|
+
* // {
|
|
1845
|
+
* // _id: 'Chunk',
|
|
1846
|
+
* // values: [
|
|
1847
|
+
* // 0, 1, 2, 3, 4, 5, 6,
|
|
1848
|
+
* // 7, 8, 9, 0, 1, 2, 3,
|
|
1849
|
+
* // 4, 5, 6, 7
|
|
1850
|
+
* // ]
|
|
1851
|
+
* // }
|
|
1852
|
+
* // ]
|
|
1853
|
+
*
|
|
1357
1854
|
* @since 2.0.0
|
|
1358
1855
|
* @category utils
|
|
1359
1856
|
*/
|
|
@@ -1417,6 +1914,16 @@ export declare const identity: <A, E = never, R = never>() => Stream<A, E, R>;
|
|
|
1417
1914
|
* one stream is exhausted all remaining values in the other stream will be
|
|
1418
1915
|
* pulled.
|
|
1419
1916
|
*
|
|
1917
|
+
* @example
|
|
1918
|
+
* import { Effect, Stream } from "effect"
|
|
1919
|
+
*
|
|
1920
|
+
* const s1 = Stream.make(1, 2, 3)
|
|
1921
|
+
* const s2 = Stream.make(4, 5, 6)
|
|
1922
|
+
*
|
|
1923
|
+
* const stream = Stream.interleave(s1, s2)
|
|
1924
|
+
*
|
|
1925
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1926
|
+
* // { _id: 'Chunk', values: [ 1, 4, 2, 5, 3, 6 ] }
|
|
1420
1927
|
* @since 2.0.0
|
|
1421
1928
|
* @category utils
|
|
1422
1929
|
*/
|
|
@@ -1433,6 +1940,25 @@ export declare const interleave: {
|
|
|
1433
1940
|
* stream are exhausted further requests for values from that stream will be
|
|
1434
1941
|
* ignored.
|
|
1435
1942
|
*
|
|
1943
|
+
* @example
|
|
1944
|
+
* import { Effect, Stream } from "effect"
|
|
1945
|
+
*
|
|
1946
|
+
* const s1 = Stream.make(1, 3, 5, 7, 9)
|
|
1947
|
+
* const s2 = Stream.make(2, 4, 6, 8, 10)
|
|
1948
|
+
*
|
|
1949
|
+
* const booleanStream = Stream.make(true, false, false).pipe(Stream.forever)
|
|
1950
|
+
*
|
|
1951
|
+
* const stream = Stream.interleaveWith(s1, s2, booleanStream)
|
|
1952
|
+
*
|
|
1953
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1954
|
+
* // {
|
|
1955
|
+
* // _id: 'Chunk',
|
|
1956
|
+
* // values: [
|
|
1957
|
+
* // 1, 2, 4, 3, 6,
|
|
1958
|
+
* // 8, 5, 10, 7, 9
|
|
1959
|
+
* // ]
|
|
1960
|
+
* // }
|
|
1961
|
+
*
|
|
1436
1962
|
* @since 2.0.0
|
|
1437
1963
|
* @category utils
|
|
1438
1964
|
*/
|
|
@@ -1443,6 +1969,20 @@ export declare const interleaveWith: {
|
|
|
1443
1969
|
/**
|
|
1444
1970
|
* Intersperse stream with provided `element`.
|
|
1445
1971
|
*
|
|
1972
|
+
* @example
|
|
1973
|
+
* import { Effect, Stream } from "effect"
|
|
1974
|
+
*
|
|
1975
|
+
* const stream = Stream.make(1, 2, 3, 4, 5).pipe(Stream.intersperse(0))
|
|
1976
|
+
*
|
|
1977
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1978
|
+
* // {
|
|
1979
|
+
* // _id: 'Chunk',
|
|
1980
|
+
* // values: [
|
|
1981
|
+
* // 1, 0, 2, 0, 3,
|
|
1982
|
+
* // 0, 4, 0, 5
|
|
1983
|
+
* // ]
|
|
1984
|
+
* // }
|
|
1985
|
+
*
|
|
1446
1986
|
* @since 2.0.0
|
|
1447
1987
|
* @category utils
|
|
1448
1988
|
*/
|
|
@@ -1453,6 +1993,27 @@ export declare const intersperse: {
|
|
|
1453
1993
|
/**
|
|
1454
1994
|
* Intersperse the specified element, also adding a prefix and a suffix.
|
|
1455
1995
|
*
|
|
1996
|
+
* @example
|
|
1997
|
+
* import { Effect, Stream } from "effect"
|
|
1998
|
+
*
|
|
1999
|
+
* const stream = Stream.make(1, 2, 3, 4, 5).pipe(
|
|
2000
|
+
* Stream.intersperseAffixes({
|
|
2001
|
+
* start: "[",
|
|
2002
|
+
* middle: "-",
|
|
2003
|
+
* end: "]"
|
|
2004
|
+
* })
|
|
2005
|
+
* )
|
|
2006
|
+
*
|
|
2007
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2008
|
+
* // {
|
|
2009
|
+
* // _id: 'Chunk',
|
|
2010
|
+
* // values: [
|
|
2011
|
+
* // '[', 1, '-', 2, '-',
|
|
2012
|
+
* // 3, '-', 4, '-', 5,
|
|
2013
|
+
* // ']'
|
|
2014
|
+
* // ]
|
|
2015
|
+
* // }
|
|
2016
|
+
*
|
|
1456
2017
|
* @since 2.0.0
|
|
1457
2018
|
* @category utils
|
|
1458
2019
|
*/
|
|
@@ -1513,6 +2074,15 @@ export declare const interruptWhenDeferred: {
|
|
|
1513
2074
|
* The infinite stream of iterative function application: a, f(a), f(f(a)),
|
|
1514
2075
|
* f(f(f(a))), ...
|
|
1515
2076
|
*
|
|
2077
|
+
* @example
|
|
2078
|
+
* import { Effect, Stream } from "effect"
|
|
2079
|
+
*
|
|
2080
|
+
* // An infinite Stream of numbers starting from 1 and incrementing
|
|
2081
|
+
* const stream = Stream.iterate(1, (n) => n + 1)
|
|
2082
|
+
*
|
|
2083
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(10)))).then(console.log)
|
|
2084
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] }
|
|
2085
|
+
*
|
|
1516
2086
|
* @since 2.0.0
|
|
1517
2087
|
* @category constructors
|
|
1518
2088
|
*/
|
|
@@ -1520,6 +2090,14 @@ export declare const iterate: <A>(value: A, next: (value: A) => A) => Stream<A>;
|
|
|
1520
2090
|
/**
|
|
1521
2091
|
* Creates a stream from an sequence of values.
|
|
1522
2092
|
*
|
|
2093
|
+
* @example
|
|
2094
|
+
* import { Effect, Stream } from "effect"
|
|
2095
|
+
*
|
|
2096
|
+
* const stream = Stream.make(1, 2, 3)
|
|
2097
|
+
*
|
|
2098
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2099
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3 ] }
|
|
2100
|
+
*
|
|
1523
2101
|
* @since 2.0.0
|
|
1524
2102
|
* @category constructors
|
|
1525
2103
|
*/
|
|
@@ -1527,6 +2105,14 @@ export declare const make: <As extends Array<any>>(...as: As) => Stream<As[numbe
|
|
|
1527
2105
|
/**
|
|
1528
2106
|
* Transforms the elements of this stream using the supplied function.
|
|
1529
2107
|
*
|
|
2108
|
+
* @example
|
|
2109
|
+
* import { Effect, Stream } from "effect"
|
|
2110
|
+
*
|
|
2111
|
+
* const stream = Stream.make(1, 2, 3).pipe(Stream.map((n) => n + 1))
|
|
2112
|
+
*
|
|
2113
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2114
|
+
* // { _id: 'Chunk', values: [ 2, 3, 4 ] }
|
|
2115
|
+
*
|
|
1530
2116
|
* @since 2.0.0
|
|
1531
2117
|
* @category mapping
|
|
1532
2118
|
*/
|
|
@@ -1537,6 +2123,18 @@ export declare const map: {
|
|
|
1537
2123
|
/**
|
|
1538
2124
|
* Statefully maps over the elements of this stream to produce new elements.
|
|
1539
2125
|
*
|
|
2126
|
+
* @example
|
|
2127
|
+
* import { Effect, Stream } from "effect"
|
|
2128
|
+
*
|
|
2129
|
+
* const runningTotal = (stream: Stream.Stream<number>): Stream.Stream<number> =>
|
|
2130
|
+
* stream.pipe(Stream.mapAccum(0, (s, a) => [s + a, s + a]))
|
|
2131
|
+
*
|
|
2132
|
+
* // input: 0, 1, 2, 3, 4, 5, 6
|
|
2133
|
+
* // Effect.runPromise(Stream.runCollect(runningTotal(Stream.range(0, 6)))).then(
|
|
2134
|
+
* // console.log
|
|
2135
|
+
* // )
|
|
2136
|
+
* // { _id: "Chunk", values: [ 0, 1, 3, 6, 10, 15, 21 ] }
|
|
2137
|
+
*
|
|
1540
2138
|
* @since 2.0.0
|
|
1541
2139
|
* @category mapping
|
|
1542
2140
|
*/
|
|
@@ -1596,6 +2194,17 @@ export declare const mapChunksEffect: {
|
|
|
1596
2194
|
* Maps each element to an iterable, and flattens the iterables into the
|
|
1597
2195
|
* output of this stream.
|
|
1598
2196
|
*
|
|
2197
|
+
* @example
|
|
2198
|
+
* import { Effect, Stream } from "effect"
|
|
2199
|
+
*
|
|
2200
|
+
* const numbers = Stream.make("1-2-3", "4-5", "6").pipe(
|
|
2201
|
+
* Stream.mapConcat((s) => s.split("-")),
|
|
2202
|
+
* Stream.map((s) => parseInt(s))
|
|
2203
|
+
* )
|
|
2204
|
+
*
|
|
2205
|
+
* // Effect.runPromise(Stream.runCollect(numbers)).then(console.log)
|
|
2206
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5, 6 ] }
|
|
2207
|
+
*
|
|
1599
2208
|
* @since 2.0.0
|
|
1600
2209
|
* @category mapping
|
|
1601
2210
|
*/
|
|
@@ -1639,6 +2248,16 @@ export declare const mapConcatEffect: {
|
|
|
1639
2248
|
/**
|
|
1640
2249
|
* Maps over elements of the stream with the specified effectful function.
|
|
1641
2250
|
*
|
|
2251
|
+
* @example
|
|
2252
|
+
* import { Effect, Random, Stream } from "effect"
|
|
2253
|
+
*
|
|
2254
|
+
* const stream = Stream.make(10, 20, 30).pipe(
|
|
2255
|
+
* Stream.mapEffect((n) => Random.nextIntBetween(0, n))
|
|
2256
|
+
* )
|
|
2257
|
+
*
|
|
2258
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2259
|
+
* // Example Output: { _id: 'Chunk', values: [ 7, 19, 8 ] }
|
|
2260
|
+
*
|
|
1642
2261
|
* @since 2.0.0
|
|
1643
2262
|
* @category mapping
|
|
1644
2263
|
*/
|
|
@@ -1686,6 +2305,21 @@ export declare const mapErrorCause: {
|
|
|
1686
2305
|
* New produced stream will terminate when both specified stream terminate if
|
|
1687
2306
|
* no termination strategy is specified.
|
|
1688
2307
|
*
|
|
2308
|
+
* @example
|
|
2309
|
+
* import { Effect, Schedule, Stream } from "effect"
|
|
2310
|
+
*
|
|
2311
|
+
* const s1 = Stream.make(1, 2, 3).pipe(
|
|
2312
|
+
* Stream.schedule(Schedule.spaced("100 millis"))
|
|
2313
|
+
* )
|
|
2314
|
+
* const s2 = Stream.make(4, 5, 6).pipe(
|
|
2315
|
+
* Stream.schedule(Schedule.spaced("200 millis"))
|
|
2316
|
+
* )
|
|
2317
|
+
*
|
|
2318
|
+
* const stream = Stream.merge(s1, s2)
|
|
2319
|
+
*
|
|
2320
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2321
|
+
* // { _id: 'Chunk', values: [ 1, 4, 2, 3, 5, 6 ] }
|
|
2322
|
+
*
|
|
1689
2323
|
* @since 2.0.0
|
|
1690
2324
|
* @category utils
|
|
1691
2325
|
*/
|
|
@@ -1722,6 +2356,24 @@ export declare const mergeAll: {
|
|
|
1722
2356
|
* New produced stream will terminate when both specified stream terminate if
|
|
1723
2357
|
* no termination strategy is specified.
|
|
1724
2358
|
*
|
|
2359
|
+
* @example
|
|
2360
|
+
* import { Effect, Schedule, Stream } from "effect"
|
|
2361
|
+
*
|
|
2362
|
+
* const s1 = Stream.make("1", "2", "3").pipe(
|
|
2363
|
+
* Stream.schedule(Schedule.spaced("100 millis"))
|
|
2364
|
+
* )
|
|
2365
|
+
* const s2 = Stream.make(4.1, 5.3, 6.2).pipe(
|
|
2366
|
+
* Stream.schedule(Schedule.spaced("200 millis"))
|
|
2367
|
+
* )
|
|
2368
|
+
*
|
|
2369
|
+
* const stream = Stream.mergeWith(s1, s2, {
|
|
2370
|
+
* onSelf: (s) => parseInt(s),
|
|
2371
|
+
* onOther: (n) => Math.floor(n)
|
|
2372
|
+
* })
|
|
2373
|
+
*
|
|
2374
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2375
|
+
* // { _id: 'Chunk', values: [ 1, 4, 2, 3, 5, 6 ] }
|
|
2376
|
+
*
|
|
1725
2377
|
* @since 2.0.0
|
|
1726
2378
|
* @category utils
|
|
1727
2379
|
*/
|
|
@@ -1756,8 +2408,8 @@ export declare const mergeEither: {
|
|
|
1756
2408
|
* @category utils
|
|
1757
2409
|
*/
|
|
1758
2410
|
export declare const mergeLeft: {
|
|
1759
|
-
<
|
|
1760
|
-
<
|
|
2411
|
+
<AR, ER, RR>(right: Stream<AR, ER, RR>): <AL, EL, RL>(left: Stream<AL, EL, RL>) => Stream<AL, ER | EL, RR | RL>;
|
|
2412
|
+
<AL, EL, RL, AR, ER, RR>(left: Stream<AL, EL, RL>, right: Stream<AR, ER, RR>): Stream<AL, EL | ER, RL | RR>;
|
|
1761
2413
|
};
|
|
1762
2414
|
/**
|
|
1763
2415
|
* Merges this stream and the specified stream together, discarding the values
|
|
@@ -1767,8 +2419,8 @@ export declare const mergeLeft: {
|
|
|
1767
2419
|
* @category utils
|
|
1768
2420
|
*/
|
|
1769
2421
|
export declare const mergeRight: {
|
|
1770
|
-
<
|
|
1771
|
-
<
|
|
2422
|
+
<AR, ER, RR>(right: Stream<AR, ER, RR>): <AL, EL, RL>(left: Stream<AL, EL, RL>) => Stream<AR, ER | EL, RR | RL>;
|
|
2423
|
+
<AL, EL, RL, AR, ER, RR>(left: Stream<AL, EL, RL>, right: Stream<AR, ER, RR>): Stream<AR, EL | ER, RL | RR>;
|
|
1772
2424
|
};
|
|
1773
2425
|
/**
|
|
1774
2426
|
* Returns a combined string resulting from concatenating each of the values
|
|
@@ -1909,6 +2561,17 @@ export declare const orElseSucceed: {
|
|
|
1909
2561
|
* than the unfolding of the state. This is useful for embedding paginated
|
|
1910
2562
|
* APIs, hence the name.
|
|
1911
2563
|
*
|
|
2564
|
+
* @example
|
|
2565
|
+
* import { Effect, Option, Stream } from "effect"
|
|
2566
|
+
*
|
|
2567
|
+
* const stream = Stream.paginate(0, (n) => [
|
|
2568
|
+
* n,
|
|
2569
|
+
* n < 3 ? Option.some(n + 1) : Option.none()
|
|
2570
|
+
* ])
|
|
2571
|
+
*
|
|
2572
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2573
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, 3 ] }
|
|
2574
|
+
*
|
|
1912
2575
|
* @since 2.0.0
|
|
1913
2576
|
* @category constructors
|
|
1914
2577
|
*/
|
|
@@ -1946,6 +2609,25 @@ export declare const paginateEffect: <S, A, E, R>(s: S, f: (s: S) => Effect.Effe
|
|
|
1946
2609
|
* evaluated to false. The faster stream may advance by up to buffer elements
|
|
1947
2610
|
* further than the slower one.
|
|
1948
2611
|
*
|
|
2612
|
+
* @example
|
|
2613
|
+
* import { Effect, Stream } from "effect"
|
|
2614
|
+
*
|
|
2615
|
+
* const partition = Stream.range(1, 10).pipe(
|
|
2616
|
+
* Stream.partition((n) => n % 2 === 0, { bufferSize: 5 })
|
|
2617
|
+
* )
|
|
2618
|
+
*
|
|
2619
|
+
* const program = Effect.scoped(
|
|
2620
|
+
* Effect.gen(function*() {
|
|
2621
|
+
* const [evens, odds] = yield* partition
|
|
2622
|
+
* console.log(yield* Stream.runCollect(evens))
|
|
2623
|
+
* console.log(yield* Stream.runCollect(odds))
|
|
2624
|
+
* })
|
|
2625
|
+
* )
|
|
2626
|
+
*
|
|
2627
|
+
* // Effect.runPromise(program)
|
|
2628
|
+
* // { _id: 'Chunk', values: [ 2, 4, 6, 8, 10 ] }
|
|
2629
|
+
* // { _id: 'Chunk', values: [ 1, 3, 5, 7, 9 ] }
|
|
2630
|
+
*
|
|
1949
2631
|
* @since 2.0.0
|
|
1950
2632
|
* @category utils
|
|
1951
2633
|
*/
|
|
@@ -1967,6 +2649,28 @@ export declare const partition: {
|
|
|
1967
2649
|
* Split a stream by an effectful predicate. The faster stream may advance by
|
|
1968
2650
|
* up to buffer elements further than the slower one.
|
|
1969
2651
|
*
|
|
2652
|
+
* @example
|
|
2653
|
+
* import { Effect, Either, Stream } from "effect"
|
|
2654
|
+
*
|
|
2655
|
+
* const partition = Stream.range(1, 9).pipe(
|
|
2656
|
+
* Stream.partitionEither(
|
|
2657
|
+
* (n) => Effect.succeed(n % 2 === 0 ? Either.left(n) : Either.right(n)),
|
|
2658
|
+
* { bufferSize: 5 }
|
|
2659
|
+
* )
|
|
2660
|
+
* )
|
|
2661
|
+
*
|
|
2662
|
+
* const program = Effect.scoped(
|
|
2663
|
+
* Effect.gen(function*() {
|
|
2664
|
+
* const [evens, odds] = yield* partition
|
|
2665
|
+
* console.log(yield* Stream.runCollect(evens))
|
|
2666
|
+
* console.log(yield* Stream.runCollect(odds))
|
|
2667
|
+
* })
|
|
2668
|
+
* )
|
|
2669
|
+
*
|
|
2670
|
+
* // Effect.runPromise(program)
|
|
2671
|
+
* // { _id: 'Chunk', values: [ 2, 4, 6, 8 ] }
|
|
2672
|
+
* // { _id: 'Chunk', values: [ 1, 3, 5, 7, 9 ] }
|
|
2673
|
+
*
|
|
1970
2674
|
* @since 2.0.0
|
|
1971
2675
|
* @category utils
|
|
1972
2676
|
*/
|
|
@@ -2110,9 +2814,45 @@ export declare const provideSomeLayer: {
|
|
|
2110
2814
|
<RIn, E2, ROut>(layer: Layer.Layer<ROut, E2, RIn>): <A, E, R>(self: Stream<A, E, R>) => Stream<A, E2 | E, RIn | Exclude<R, ROut>>;
|
|
2111
2815
|
<A, E, R, RIn, E2, ROut>(self: Stream<A, E, R>, layer: Layer.Layer<ROut, E2, RIn>): Stream<A, E | E2, RIn | Exclude<R, ROut>>;
|
|
2112
2816
|
};
|
|
2817
|
+
/**
|
|
2818
|
+
* Returns a stream that mirrors the first upstream to emit an item.
|
|
2819
|
+
* As soon as one of the upstream emits a first value, all the others are interrupted.
|
|
2820
|
+
* The resulting stream will forward all items from the "winning" source stream.
|
|
2821
|
+
* Any upstream failures will cause the returned stream to fail.
|
|
2822
|
+
*
|
|
2823
|
+
* @example
|
|
2824
|
+
* import { Stream, Schedule, Console, Effect } from "effect"
|
|
2825
|
+
*
|
|
2826
|
+
* const stream = Stream.raceAll(
|
|
2827
|
+
* Stream.fromSchedule(Schedule.spaced('1 millis')),
|
|
2828
|
+
* Stream.fromSchedule(Schedule.spaced('2 millis')),
|
|
2829
|
+
* Stream.fromSchedule(Schedule.spaced('4 millis')),
|
|
2830
|
+
* ).pipe(Stream.take(6), Stream.tap(Console.log))
|
|
2831
|
+
*
|
|
2832
|
+
* Effect.runPromise(Stream.runDrain(stream))
|
|
2833
|
+
* // Output each millisecond from the first stream, the rest streams are interrupted
|
|
2834
|
+
* // 0
|
|
2835
|
+
* // 1
|
|
2836
|
+
* // 2
|
|
2837
|
+
* // 3
|
|
2838
|
+
* // 4
|
|
2839
|
+
* // 5
|
|
2840
|
+
* @since 3.5.0
|
|
2841
|
+
* @category racing
|
|
2842
|
+
*/
|
|
2843
|
+
export declare const raceAll: <S extends ReadonlyArray<Stream<any, any, any>>>(...streams: S) => Stream<Stream.Success<S[number]>, Stream.Error<S[number]>, Stream.Context<S[number]>>;
|
|
2113
2844
|
/**
|
|
2114
2845
|
* Constructs a stream from a range of integers, including both endpoints.
|
|
2115
2846
|
*
|
|
2847
|
+
* @example
|
|
2848
|
+
* import { Effect, Stream } from "effect"
|
|
2849
|
+
*
|
|
2850
|
+
* // A Stream with a range of numbers from 1 to 5
|
|
2851
|
+
* const stream = Stream.range(1, 5)
|
|
2852
|
+
*
|
|
2853
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2854
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
|
|
2855
|
+
*
|
|
2116
2856
|
* @since 2.0.0
|
|
2117
2857
|
* @category constructors
|
|
2118
2858
|
*/
|
|
@@ -2153,6 +2893,14 @@ export declare const refineOrDieWith: {
|
|
|
2153
2893
|
* Repeats the entire stream using the specified schedule. The stream will
|
|
2154
2894
|
* execute normally, and then repeat again according to the provided schedule.
|
|
2155
2895
|
*
|
|
2896
|
+
* @example
|
|
2897
|
+
* import { Effect, Schedule, Stream } from "effect"
|
|
2898
|
+
*
|
|
2899
|
+
* const stream = Stream.repeat(Stream.succeed(1), Schedule.forever)
|
|
2900
|
+
*
|
|
2901
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
|
|
2902
|
+
* // { _id: 'Chunk', values: [ 1, 1, 1, 1, 1 ] }
|
|
2903
|
+
*
|
|
2156
2904
|
* @since 2.0.0
|
|
2157
2905
|
* @category utils
|
|
2158
2906
|
*/
|
|
@@ -2164,6 +2912,14 @@ export declare const repeat: {
|
|
|
2164
2912
|
* Creates a stream from an effect producing a value of type `A` which repeats
|
|
2165
2913
|
* forever.
|
|
2166
2914
|
*
|
|
2915
|
+
* @example
|
|
2916
|
+
* import { Effect, Random, Stream } from "effect"
|
|
2917
|
+
*
|
|
2918
|
+
* const stream = Stream.repeatEffect(Random.nextInt)
|
|
2919
|
+
*
|
|
2920
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
|
|
2921
|
+
* // Example Output: { _id: 'Chunk', values: [ 3891571149, 4239494205, 2352981603, 2339111046, 1488052210 ] }
|
|
2922
|
+
*
|
|
2167
2923
|
* @since 2.0.0
|
|
2168
2924
|
* @category constructors
|
|
2169
2925
|
*/
|
|
@@ -2188,6 +2944,22 @@ export declare const repeatEffectChunkOption: <A, E, R>(effect: Effect.Effect<Ch
|
|
|
2188
2944
|
* Creates a stream from an effect producing values of type `A` until it fails
|
|
2189
2945
|
* with `None`.
|
|
2190
2946
|
*
|
|
2947
|
+
* @example
|
|
2948
|
+
* // In this example, we're draining an Iterator to create a stream from it
|
|
2949
|
+
* import { Stream, Effect, Option } from "effect"
|
|
2950
|
+
*
|
|
2951
|
+
* const drainIterator = <A>(it: Iterator<A>): Stream.Stream<A> =>
|
|
2952
|
+
* Stream.repeatEffectOption(
|
|
2953
|
+
* Effect.sync(() => it.next()).pipe(
|
|
2954
|
+
* Effect.andThen((res) => {
|
|
2955
|
+
* if (res.done) {
|
|
2956
|
+
* return Effect.fail(Option.none())
|
|
2957
|
+
* }
|
|
2958
|
+
* return Effect.succeed(res.value)
|
|
2959
|
+
* })
|
|
2960
|
+
* )
|
|
2961
|
+
* )
|
|
2962
|
+
*
|
|
2191
2963
|
* @since 2.0.0
|
|
2192
2964
|
* @category constructors
|
|
2193
2965
|
*/
|
|
@@ -2254,6 +3026,14 @@ export declare const repeatElementsWith: {
|
|
|
2254
3026
|
/**
|
|
2255
3027
|
* Repeats the provided value infinitely.
|
|
2256
3028
|
*
|
|
3029
|
+
* @example
|
|
3030
|
+
* import { Effect, Stream } from "effect"
|
|
3031
|
+
*
|
|
3032
|
+
* const stream = Stream.repeatValue(0)
|
|
3033
|
+
*
|
|
3034
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
|
|
3035
|
+
* // { _id: 'Chunk', values: [ 0, 0, 0, 0, 0 ] }
|
|
3036
|
+
*
|
|
2257
3037
|
* @since 2.0.0
|
|
2258
3038
|
* @category constructors
|
|
2259
3039
|
*/
|
|
@@ -2302,7 +3082,7 @@ export declare const retry: {
|
|
|
2302
3082
|
*/
|
|
2303
3083
|
export declare const run: {
|
|
2304
3084
|
<A2, A, E2, R2>(sink: Sink.Sink<A2, A, unknown, E2, R2>): <E, R>(self: Stream<A, E, R>) => Effect.Effect<A2, E2 | E, R2 | R>;
|
|
2305
|
-
<A, E, R, A2, E2, R2>(self: Stream<A, E, R>, sink: Sink.Sink<A2, A, unknown, E2, R2>): Effect.Effect<A2, E | E2, R | R2
|
|
3085
|
+
<A, E, R, A2, E2, R2>(self: Stream<A, E, R>, sink: Sink.Sink<A2, A, unknown, E2, R2>): Effect.Effect<A2, E | E2, Exclude<R | R2, Scope.Scope>>;
|
|
2306
3086
|
};
|
|
2307
3087
|
/**
|
|
2308
3088
|
* Runs the stream and collects all of its elements to a chunk.
|
|
@@ -2310,21 +3090,21 @@ export declare const run: {
|
|
|
2310
3090
|
* @since 2.0.0
|
|
2311
3091
|
* @category destructors
|
|
2312
3092
|
*/
|
|
2313
|
-
export declare const runCollect: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<Chunk.Chunk<A>, E, R
|
|
3093
|
+
export declare const runCollect: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<Chunk.Chunk<A>, E, Exclude<R, Scope.Scope>>;
|
|
2314
3094
|
/**
|
|
2315
3095
|
* Runs the stream and emits the number of elements processed
|
|
2316
3096
|
*
|
|
2317
3097
|
* @since 2.0.0
|
|
2318
3098
|
* @category destructors
|
|
2319
3099
|
*/
|
|
2320
|
-
export declare const runCount: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<number, E, R
|
|
3100
|
+
export declare const runCount: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<number, E, Exclude<R, Scope.Scope>>;
|
|
2321
3101
|
/**
|
|
2322
3102
|
* Runs the stream only for its effects. The emitted elements are discarded.
|
|
2323
3103
|
*
|
|
2324
3104
|
* @since 2.0.0
|
|
2325
3105
|
* @category destructors
|
|
2326
3106
|
*/
|
|
2327
|
-
export declare const runDrain: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<void, E, R
|
|
3107
|
+
export declare const runDrain: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect<void, E, Exclude<R, Scope.Scope>>;
|
|
2328
3108
|
/**
|
|
2329
3109
|
* Executes a pure fold over the stream of values - reduces all elements in
|
|
2330
3110
|
* the stream to a value of type `S`.
|
|
@@ -2333,8 +3113,8 @@ export declare const runDrain: <A, E, R>(self: Stream<A, E, R>) => Effect.Effect
|
|
|
2333
3113
|
* @category destructors
|
|
2334
3114
|
*/
|
|
2335
3115
|
export declare const runFold: {
|
|
2336
|
-
<S, A>(s: S, f: (s: S, a: A) => S): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E, R
|
|
2337
|
-
<A, E, R, S>(self: Stream<A, E, R>, s: S, f: (s: S, a: A) => S): Effect.Effect<S, E, R
|
|
3116
|
+
<S, A>(s: S, f: (s: S, a: A) => S): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E, Exclude<R, Scope.Scope>>;
|
|
3117
|
+
<A, E, R, S>(self: Stream<A, E, R>, s: S, f: (s: S, a: A) => S): Effect.Effect<S, E, Exclude<R, Scope.Scope>>;
|
|
2338
3118
|
};
|
|
2339
3119
|
/**
|
|
2340
3120
|
* Executes an effectful fold over the stream of values.
|
|
@@ -2343,8 +3123,8 @@ export declare const runFold: {
|
|
|
2343
3123
|
* @category destructors
|
|
2344
3124
|
*/
|
|
2345
3125
|
export declare const runFoldEffect: {
|
|
2346
|
-
<S, A, E2, R2>(s: S, f: (s: S, a: A) => Effect.Effect<S, E2, R2>): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E2 | E,
|
|
2347
|
-
<A, E, R, S, E2, R2>(self: Stream<A, E, R>, s: S, f: (s: S, a: A) => Effect.Effect<S, E2, R2>): Effect.Effect<S, E | E2, R | R2
|
|
3126
|
+
<S, A, E2, R2>(s: S, f: (s: S, a: A) => Effect.Effect<S, E2, R2>): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E2 | E, Exclude<R | R2, Scope.Scope>>;
|
|
3127
|
+
<A, E, R, S, E2, R2>(self: Stream<A, E, R>, s: S, f: (s: S, a: A) => Effect.Effect<S, E2, R2>): Effect.Effect<S, E | E2, Exclude<R | R2, Scope.Scope>>;
|
|
2348
3128
|
};
|
|
2349
3129
|
/**
|
|
2350
3130
|
* Executes a pure fold over the stream of values. Returns a scoped value that
|
|
@@ -2376,8 +3156,8 @@ export declare const runFoldScopedEffect: {
|
|
|
2376
3156
|
* @category destructors
|
|
2377
3157
|
*/
|
|
2378
3158
|
export declare const runFoldWhile: {
|
|
2379
|
-
<S, A>(s: S, cont: Predicate<S>, f: (s: S, a: A) => S): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E, R
|
|
2380
|
-
<A, E, R, S>(self: Stream<A, E, R>, s: S, cont: Predicate<S>, f: (s: S, a: A) => S): Effect.Effect<S, E, R
|
|
3159
|
+
<S, A>(s: S, cont: Predicate<S>, f: (s: S, a: A) => S): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E, Exclude<R, Scope.Scope>>;
|
|
3160
|
+
<A, E, R, S>(self: Stream<A, E, R>, s: S, cont: Predicate<S>, f: (s: S, a: A) => S): Effect.Effect<S, E, Exclude<R, Scope.Scope>>;
|
|
2381
3161
|
};
|
|
2382
3162
|
/**
|
|
2383
3163
|
* Executes an effectful fold over the stream of values. Stops the fold early
|
|
@@ -2387,8 +3167,8 @@ export declare const runFoldWhile: {
|
|
|
2387
3167
|
* @category destructors
|
|
2388
3168
|
*/
|
|
2389
3169
|
export declare const runFoldWhileEffect: {
|
|
2390
|
-
<S, A, E2, R2>(s: S, cont: Predicate<S>, f: (s: S, a: A) => Effect.Effect<S, E2, R2>): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E2 | E,
|
|
2391
|
-
<A, E, R, S, E2, R2>(self: Stream<A, E, R>, s: S, cont: Predicate<S>, f: (s: S, a: A) => Effect.Effect<S, E2, R2>): Effect.Effect<S, E | E2, R | R2
|
|
3170
|
+
<S, A, E2, R2>(s: S, cont: Predicate<S>, f: (s: S, a: A) => Effect.Effect<S, E2, R2>): <E, R>(self: Stream<A, E, R>) => Effect.Effect<S, E2 | E, Exclude<R | R2, Scope.Scope>>;
|
|
3171
|
+
<A, E, R, S, E2, R2>(self: Stream<A, E, R>, s: S, cont: Predicate<S>, f: (s: S, a: A) => Effect.Effect<S, E2, R2>): Effect.Effect<S, E | E2, Exclude<R | R2, Scope.Scope>>;
|
|
2392
3172
|
};
|
|
2393
3173
|
/**
|
|
2394
3174
|
* Executes a pure fold over the stream of values. Returns a scoped value that
|
|
@@ -2570,6 +3350,14 @@ export declare const runSum: <E, R>(self: Stream<number, E, R>) => Effect.Effect
|
|
|
2570
3350
|
* Statefully maps over the elements of this stream to produce all
|
|
2571
3351
|
* intermediate results of type `S` given an initial S.
|
|
2572
3352
|
*
|
|
3353
|
+
* @example
|
|
3354
|
+
* import { Effect, Stream } from "effect"
|
|
3355
|
+
*
|
|
3356
|
+
* const stream = Stream.range(1, 6).pipe(Stream.scan(0, (a, b) => a + b))
|
|
3357
|
+
*
|
|
3358
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
3359
|
+
* // { _id: 'Chunk', values: [ 0, 1, 3, 6, 10, 15, 21 ] }
|
|
3360
|
+
*
|
|
2573
3361
|
* @since 2.0.0
|
|
2574
3362
|
* @category utils
|
|
2575
3363
|
*/
|
|
@@ -2645,6 +3433,24 @@ export declare const scheduleWith: {
|
|
|
2645
3433
|
/**
|
|
2646
3434
|
* Creates a single-valued stream from a scoped resource.
|
|
2647
3435
|
*
|
|
3436
|
+
* @example
|
|
3437
|
+
* import { Console, Effect, Stream } from "effect"
|
|
3438
|
+
*
|
|
3439
|
+
* // Creating a single-valued stream from a scoped resource
|
|
3440
|
+
* const stream = Stream.scoped(
|
|
3441
|
+
* Effect.acquireUseRelease(
|
|
3442
|
+
* Console.log("acquire"),
|
|
3443
|
+
* () => Console.log("use"),
|
|
3444
|
+
* () => Console.log("release")
|
|
3445
|
+
* )
|
|
3446
|
+
* )
|
|
3447
|
+
*
|
|
3448
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
3449
|
+
* // acquire
|
|
3450
|
+
* // use
|
|
3451
|
+
* // release
|
|
3452
|
+
* // { _id: 'Chunk', values: [ undefined ] }
|
|
3453
|
+
*
|
|
2648
3454
|
* @since 2.0.0
|
|
2649
3455
|
* @category constructors
|
|
2650
3456
|
*/
|
|
@@ -2751,6 +3557,15 @@ export declare const splitLines: <E, R>(self: Stream<string, E, R>) => Stream<st
|
|
|
2751
3557
|
/**
|
|
2752
3558
|
* Creates a single-valued pure stream.
|
|
2753
3559
|
*
|
|
3560
|
+
* @example
|
|
3561
|
+
* import { Effect, Stream } from "effect"
|
|
3562
|
+
*
|
|
3563
|
+
* // A Stream with a single number
|
|
3564
|
+
* const stream = Stream.succeed(3)
|
|
3565
|
+
*
|
|
3566
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
3567
|
+
* // { _id: 'Chunk', values: [ 3 ] }
|
|
3568
|
+
*
|
|
2754
3569
|
* @since 2.0.0
|
|
2755
3570
|
* @category constructors
|
|
2756
3571
|
*/
|
|
@@ -2772,6 +3587,14 @@ export declare const suspend: <A, E, R>(stream: LazyArg<Stream<A, E, R>>) => Str
|
|
|
2772
3587
|
/**
|
|
2773
3588
|
* Takes the specified number of elements from this stream.
|
|
2774
3589
|
*
|
|
3590
|
+
* @example
|
|
3591
|
+
* import { Effect, Stream } from "effect"
|
|
3592
|
+
*
|
|
3593
|
+
* const stream = Stream.take(Stream.iterate(0, (n) => n + 1), 5)
|
|
3594
|
+
*
|
|
3595
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
3596
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
|
|
3597
|
+
*
|
|
2775
3598
|
* @since 2.0.0
|
|
2776
3599
|
* @category utils
|
|
2777
3600
|
*/
|
|
@@ -2782,6 +3605,14 @@ export declare const take: {
|
|
|
2782
3605
|
/**
|
|
2783
3606
|
* Takes the last specified number of elements from this stream.
|
|
2784
3607
|
*
|
|
3608
|
+
* @example
|
|
3609
|
+
* import { Effect, Stream } from "effect"
|
|
3610
|
+
*
|
|
3611
|
+
* const stream = Stream.takeRight(Stream.make(1, 2, 3, 4, 5, 6), 3)
|
|
3612
|
+
*
|
|
3613
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
3614
|
+
* // { _id: 'Chunk', values: [ 4, 5, 6 ] }
|
|
3615
|
+
*
|
|
2785
3616
|
* @since 2.0.0
|
|
2786
3617
|
* @category utils
|
|
2787
3618
|
*/
|
|
@@ -2793,6 +3624,14 @@ export declare const takeRight: {
|
|
|
2793
3624
|
* Takes all elements of the stream until the specified predicate evaluates to
|
|
2794
3625
|
* `true`.
|
|
2795
3626
|
*
|
|
3627
|
+
* @example
|
|
3628
|
+
* import { Effect, Stream } from "effect"
|
|
3629
|
+
*
|
|
3630
|
+
* const stream = Stream.takeUntil(Stream.iterate(0, (n) => n + 1), (n) => n === 4)
|
|
3631
|
+
*
|
|
3632
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
3633
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
|
|
3634
|
+
*
|
|
2796
3635
|
* @since 2.0.0
|
|
2797
3636
|
* @category utils
|
|
2798
3637
|
*/
|
|
@@ -2815,6 +3654,14 @@ export declare const takeUntilEffect: {
|
|
|
2815
3654
|
* Takes all elements of the stream for as long as the specified predicate
|
|
2816
3655
|
* evaluates to `true`.
|
|
2817
3656
|
*
|
|
3657
|
+
* @example
|
|
3658
|
+
* import { Effect, Stream } from "effect"
|
|
3659
|
+
*
|
|
3660
|
+
* const stream = Stream.takeWhile(Stream.iterate(0, (n) => n + 1), (n) => n < 5)
|
|
3661
|
+
*
|
|
3662
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
3663
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
|
|
3664
|
+
*
|
|
2818
3665
|
* @since 2.0.0
|
|
2819
3666
|
* @category utils
|
|
2820
3667
|
*/
|
|
@@ -2827,6 +3674,24 @@ export declare const takeWhile: {
|
|
|
2827
3674
|
/**
|
|
2828
3675
|
* Adds an effect to consumption of every element of the stream.
|
|
2829
3676
|
*
|
|
3677
|
+
* @example
|
|
3678
|
+
* import { Console, Effect, Stream } from "effect"
|
|
3679
|
+
*
|
|
3680
|
+
* const stream = Stream.make(1, 2, 3).pipe(
|
|
3681
|
+
* Stream.tap((n) => Console.log(`before mapping: ${n}`)),
|
|
3682
|
+
* Stream.map((n) => n * 2),
|
|
3683
|
+
* Stream.tap((n) => Console.log(`after mapping: ${n}`))
|
|
3684
|
+
* )
|
|
3685
|
+
*
|
|
3686
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
3687
|
+
* // before mapping: 1
|
|
3688
|
+
* // after mapping: 2
|
|
3689
|
+
* // before mapping: 2
|
|
3690
|
+
* // after mapping: 4
|
|
3691
|
+
* // before mapping: 3
|
|
3692
|
+
* // after mapping: 6
|
|
3693
|
+
* // { _id: 'Chunk', values: [ 2, 4, 6 ] }
|
|
3694
|
+
*
|
|
2830
3695
|
* @since 2.0.0
|
|
2831
3696
|
* @category sequencing
|
|
2832
3697
|
*/
|
|
@@ -2888,7 +3753,7 @@ export declare const tapSink: {
|
|
|
2888
3753
|
* parameters using the token bucket algorithm. Allows for burst in the
|
|
2889
3754
|
* processing of elements by allowing the token bucket to accumulate tokens up
|
|
2890
3755
|
* to a `units + burst` threshold. The weight of each chunk is determined by
|
|
2891
|
-
* the `
|
|
3756
|
+
* the `cost` function.
|
|
2892
3757
|
*
|
|
2893
3758
|
* If using the "enforce" strategy, chunks that do not meet the bandwidth
|
|
2894
3759
|
* constraints are dropped. If using the "shape" strategy, chunks are delayed
|
|
@@ -2896,6 +3761,43 @@ export declare const tapSink: {
|
|
|
2896
3761
|
*
|
|
2897
3762
|
* Defaults to the "shape" strategy.
|
|
2898
3763
|
*
|
|
3764
|
+
* @example
|
|
3765
|
+
* import { Chunk, Effect, Schedule, Stream } from "effect"
|
|
3766
|
+
*
|
|
3767
|
+
* let last = Date.now()
|
|
3768
|
+
* const log = (message: string) =>
|
|
3769
|
+
* Effect.sync(() => {
|
|
3770
|
+
* const end = Date.now()
|
|
3771
|
+
* console.log(`${message} after ${end - last}ms`)
|
|
3772
|
+
* last = end
|
|
3773
|
+
* })
|
|
3774
|
+
*
|
|
3775
|
+
* const stream = Stream.fromSchedule(Schedule.spaced("50 millis")).pipe(
|
|
3776
|
+
* Stream.take(6),
|
|
3777
|
+
* Stream.tap((n) => log(`Received ${n}`)),
|
|
3778
|
+
* Stream.throttle({
|
|
3779
|
+
* cost: Chunk.size,
|
|
3780
|
+
* duration: "100 millis",
|
|
3781
|
+
* units: 1
|
|
3782
|
+
* }),
|
|
3783
|
+
* Stream.tap((n) => log(`> Emitted ${n}`))
|
|
3784
|
+
* )
|
|
3785
|
+
*
|
|
3786
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
3787
|
+
* // Received 0 after 56ms
|
|
3788
|
+
* // > Emitted 0 after 0ms
|
|
3789
|
+
* // Received 1 after 52ms
|
|
3790
|
+
* // > Emitted 1 after 48ms
|
|
3791
|
+
* // Received 2 after 52ms
|
|
3792
|
+
* // > Emitted 2 after 49ms
|
|
3793
|
+
* // Received 3 after 52ms
|
|
3794
|
+
* // > Emitted 3 after 48ms
|
|
3795
|
+
* // Received 4 after 52ms
|
|
3796
|
+
* // > Emitted 4 after 47ms
|
|
3797
|
+
* // Received 5 after 52ms
|
|
3798
|
+
* // > Emitted 5 after 49ms
|
|
3799
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4, 5 ] }
|
|
3800
|
+
*
|
|
2899
3801
|
* @since 2.0.0
|
|
2900
3802
|
* @category utils
|
|
2901
3803
|
*/
|
|
@@ -2950,6 +3852,27 @@ export declare const throttleEffect: {
|
|
|
2950
3852
|
/**
|
|
2951
3853
|
* A stream that emits void values spaced by the specified duration.
|
|
2952
3854
|
*
|
|
3855
|
+
* @example
|
|
3856
|
+
* import { Effect, Stream } from "effect"
|
|
3857
|
+
*
|
|
3858
|
+
* let last = Date.now()
|
|
3859
|
+
* const log = (message: string) =>
|
|
3860
|
+
* Effect.sync(() => {
|
|
3861
|
+
* const end = Date.now()
|
|
3862
|
+
* console.log(`${message} after ${end - last}ms`)
|
|
3863
|
+
* last = end
|
|
3864
|
+
* })
|
|
3865
|
+
*
|
|
3866
|
+
* const stream = Stream.tick("1 seconds").pipe(Stream.tap(() => log("tick")))
|
|
3867
|
+
*
|
|
3868
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
|
|
3869
|
+
* // tick after 4ms
|
|
3870
|
+
* // tick after 1003ms
|
|
3871
|
+
* // tick after 1001ms
|
|
3872
|
+
* // tick after 1002ms
|
|
3873
|
+
* // tick after 1002ms
|
|
3874
|
+
* // { _id: 'Chunk', values: [ undefined, undefined, undefined, undefined, undefined ] }
|
|
3875
|
+
*
|
|
2953
3876
|
* @since 2.0.0
|
|
2954
3877
|
* @category constructors
|
|
2955
3878
|
*/
|
|
@@ -3014,6 +3937,32 @@ export declare const toPubSub: {
|
|
|
3014
3937
|
* finished, or with Some error if it fails, otherwise it returns a chunk of
|
|
3015
3938
|
* the stream's output.
|
|
3016
3939
|
*
|
|
3940
|
+
* @example
|
|
3941
|
+
* import { Effect, Stream } from "effect"
|
|
3942
|
+
*
|
|
3943
|
+
* // Simulate a chunked stream
|
|
3944
|
+
* const stream = Stream.fromIterable([1, 2, 3, 4, 5]).pipe(Stream.rechunk(2))
|
|
3945
|
+
*
|
|
3946
|
+
* const program = Effect.gen(function*() {
|
|
3947
|
+
* // Create an effect to get data chunks from the stream
|
|
3948
|
+
* const getChunk = yield* Stream.toPull(stream)
|
|
3949
|
+
*
|
|
3950
|
+
* // Continuously fetch and process chunks
|
|
3951
|
+
* while (true) {
|
|
3952
|
+
* const chunk = yield* getChunk
|
|
3953
|
+
* console.log(chunk)
|
|
3954
|
+
* }
|
|
3955
|
+
* })
|
|
3956
|
+
*
|
|
3957
|
+
* // Effect.runPromise(Effect.scoped(program)).then(console.log, console.error)
|
|
3958
|
+
* // { _id: 'Chunk', values: [ 1, 2 ] }
|
|
3959
|
+
* // { _id: 'Chunk', values: [ 3, 4 ] }
|
|
3960
|
+
* // { _id: 'Chunk', values: [ 5 ] }
|
|
3961
|
+
* // (FiberFailure) Error: {
|
|
3962
|
+
* // "_id": "Option",
|
|
3963
|
+
* // "_tag": "None"
|
|
3964
|
+
* // }
|
|
3965
|
+
*
|
|
3017
3966
|
* @since 2.0.0
|
|
3018
3967
|
* @category destructors
|
|
3019
3968
|
*/
|
|
@@ -3119,6 +4068,14 @@ export declare const transduce: {
|
|
|
3119
4068
|
/**
|
|
3120
4069
|
* Creates a stream by peeling off the "layers" of a value of type `S`.
|
|
3121
4070
|
*
|
|
4071
|
+
* @example
|
|
4072
|
+
* import { Effect, Option, Stream } from "effect"
|
|
4073
|
+
*
|
|
4074
|
+
* const stream = Stream.unfold(1, (n) => Option.some([n, n + 1]))
|
|
4075
|
+
*
|
|
4076
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
|
|
4077
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
|
|
4078
|
+
*
|
|
3122
4079
|
* @since 2.0.0
|
|
3123
4080
|
* @category constructors
|
|
3124
4081
|
*/
|
|
@@ -3142,6 +4099,17 @@ export declare const unfoldChunkEffect: <S, A, E, R>(s: S, f: (s: S) => Effect.E
|
|
|
3142
4099
|
* Creates a stream by effectfully peeling off the "layers" of a value of type
|
|
3143
4100
|
* `S`.
|
|
3144
4101
|
*
|
|
4102
|
+
* @example
|
|
4103
|
+
* import { Effect, Option, Random, Stream } from "effect"
|
|
4104
|
+
*
|
|
4105
|
+
* const stream = Stream.unfoldEffect(1, (n) =>
|
|
4106
|
+
* Random.nextBoolean.pipe(
|
|
4107
|
+
* Effect.map((b) => (b ? Option.some([n, -n]) : Option.some([n, n])))
|
|
4108
|
+
* ))
|
|
4109
|
+
*
|
|
4110
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
|
|
4111
|
+
* // { _id: 'Chunk', values: [ 1, -1, -1, -1, -1 ] }
|
|
4112
|
+
*
|
|
3145
4113
|
* @since 2.0.0
|
|
3146
4114
|
* @category constructors
|
|
3147
4115
|
*/
|
|
@@ -3151,6 +4119,14 @@ export {
|
|
|
3151
4119
|
/**
|
|
3152
4120
|
* A stream that contains a single `void` value.
|
|
3153
4121
|
*
|
|
4122
|
+
* @example
|
|
4123
|
+
* import { Effect, Stream } from "effect"
|
|
4124
|
+
*
|
|
4125
|
+
* const stream = Stream.void
|
|
4126
|
+
*
|
|
4127
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4128
|
+
* // { _id: 'Chunk', values: [ undefined ] }
|
|
4129
|
+
*
|
|
3154
4130
|
* @since 2.0.0
|
|
3155
4131
|
* @category constructors
|
|
3156
4132
|
*/
|
|
@@ -3236,6 +4212,18 @@ export declare const withSpan: {
|
|
|
3236
4212
|
*
|
|
3237
4213
|
* The new stream will end when one of the sides ends.
|
|
3238
4214
|
*
|
|
4215
|
+
* @example
|
|
4216
|
+
* import { Effect, Stream } from "effect"
|
|
4217
|
+
*
|
|
4218
|
+
* // We create two streams and zip them together.
|
|
4219
|
+
* const stream = Stream.zip(
|
|
4220
|
+
* Stream.make(1, 2, 3, 4, 5, 6),
|
|
4221
|
+
* Stream.make("a", "b", "c")
|
|
4222
|
+
* )
|
|
4223
|
+
*
|
|
4224
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4225
|
+
* // { _id: 'Chunk', values: [ [ 1, 'a' ], [ 2, 'b' ], [ 3, 'c' ] ] }
|
|
4226
|
+
*
|
|
3239
4227
|
* @since 2.0.0
|
|
3240
4228
|
* @category zipping
|
|
3241
4229
|
*/
|
|
@@ -3263,6 +4251,18 @@ export declare const zipFlatten: {
|
|
|
3263
4251
|
* The defaults `defaultLeft` and `defaultRight` will be used if the streams
|
|
3264
4252
|
* have different lengths and one of the streams has ended before the other.
|
|
3265
4253
|
*
|
|
4254
|
+
* @example
|
|
4255
|
+
* import { Effect, Stream } from "effect"
|
|
4256
|
+
*
|
|
4257
|
+
* const stream = Stream.zipAll(Stream.make(1, 2, 3, 4, 5, 6), {
|
|
4258
|
+
* other: Stream.make("a", "b", "c"),
|
|
4259
|
+
* defaultSelf: 0,
|
|
4260
|
+
* defaultOther: "x"
|
|
4261
|
+
* })
|
|
4262
|
+
*
|
|
4263
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4264
|
+
* // { _id: "Chunk", values: [ [ 1, "a" ], [ 2, "b" ], [ 3, "c" ], [ 4, "x" ], [ 5, "x" ], [ 6, "x" ] ] }
|
|
4265
|
+
*
|
|
3266
4266
|
* @since 2.0.0
|
|
3267
4267
|
* @category zipping
|
|
3268
4268
|
*/
|
|
@@ -3421,6 +4421,19 @@ export declare const zipAllSortedByKeyWith: {
|
|
|
3421
4421
|
* The functions `left` and `right` will be used if the streams have different
|
|
3422
4422
|
* lengths and one of the streams has ended before the other.
|
|
3423
4423
|
*
|
|
4424
|
+
* @example
|
|
4425
|
+
* import { Effect, Stream } from "effect"
|
|
4426
|
+
*
|
|
4427
|
+
* const stream = Stream.zipAllWith(Stream.make(1, 2, 3, 4, 5, 6), {
|
|
4428
|
+
* other: Stream.make("a", "b", "c"),
|
|
4429
|
+
* onSelf: (n) => [n, "x"],
|
|
4430
|
+
* onOther: (s) => [0, s],
|
|
4431
|
+
* onBoth: (n, s) => [n - s.length, s]
|
|
4432
|
+
* })
|
|
4433
|
+
*
|
|
4434
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4435
|
+
* // { _id: "Chunk", values: [ [ 0, "a" ], [ 1, "b" ], [ 2, "c" ], [ 4, "x" ], [ 5, "x" ], [ 6, "x" ] ] }
|
|
4436
|
+
*
|
|
3424
4437
|
* @since 2.0.0
|
|
3425
4438
|
* @category zipping
|
|
3426
4439
|
*/
|
|
@@ -3447,6 +4460,22 @@ export declare const zipAllWith: {
|
|
|
3447
4460
|
* that emitted elements that are not the last value in chunks will never be
|
|
3448
4461
|
* used for zipping.
|
|
3449
4462
|
*
|
|
4463
|
+
* @example
|
|
4464
|
+
* import { Effect, Schedule, Stream } from "effect"
|
|
4465
|
+
*
|
|
4466
|
+
* const s1 = Stream.make(1, 2, 3).pipe(
|
|
4467
|
+
* Stream.schedule(Schedule.spaced("1 second"))
|
|
4468
|
+
* )
|
|
4469
|
+
*
|
|
4470
|
+
* const s2 = Stream.make("a", "b", "c", "d").pipe(
|
|
4471
|
+
* Stream.schedule(Schedule.spaced("500 millis"))
|
|
4472
|
+
* )
|
|
4473
|
+
*
|
|
4474
|
+
* const stream = Stream.zipLatest(s1, s2)
|
|
4475
|
+
*
|
|
4476
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4477
|
+
* // { _id: "Chunk", values: [ [ 1, "a" ], [ 1, "b" ], [ 2, "b" ], [ 2, "c" ], [ 2, "d" ], [ 3, "d" ] ] }
|
|
4478
|
+
*
|
|
3450
4479
|
* @since 2.0.0
|
|
3451
4480
|
* @category zipping
|
|
3452
4481
|
*/
|
|
@@ -3471,7 +4500,7 @@ export declare const zipLatest: {
|
|
|
3471
4500
|
* Stream.fromSchedule(Schedule.spaced('4 millis')),
|
|
3472
4501
|
* ).pipe(Stream.take(6), Stream.tap(Console.log))
|
|
3473
4502
|
*
|
|
3474
|
-
* Effect.runPromise(Stream.runDrain(stream))
|
|
4503
|
+
* // Effect.runPromise(Stream.runDrain(stream))
|
|
3475
4504
|
* // Output:
|
|
3476
4505
|
* // [ 0, 0, 0 ]
|
|
3477
4506
|
* // [ 1, 0, 0 ]
|
|
@@ -3541,6 +4570,19 @@ export declare const zipRight: {
|
|
|
3541
4570
|
*
|
|
3542
4571
|
* The new stream will end when one of the sides ends.
|
|
3543
4572
|
*
|
|
4573
|
+
* @example
|
|
4574
|
+
* import { Effect, Stream } from "effect"
|
|
4575
|
+
*
|
|
4576
|
+
* // We create two streams and zip them with custom logic.
|
|
4577
|
+
* const stream = Stream.zipWith(
|
|
4578
|
+
* Stream.make(1, 2, 3, 4, 5, 6),
|
|
4579
|
+
* Stream.make("a", "b", "c"),
|
|
4580
|
+
* (n, s) => [n - s.length, s]
|
|
4581
|
+
* )
|
|
4582
|
+
*
|
|
4583
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4584
|
+
* // { _id: 'Chunk', values: [ [ 0, 'a' ], [ 1, 'b' ], [ 2, 'c' ] ] }
|
|
4585
|
+
*
|
|
3544
4586
|
* @since 2.0.0
|
|
3545
4587
|
* @category zipping
|
|
3546
4588
|
*/
|
|
@@ -3564,6 +4606,19 @@ export declare const zipWithChunks: {
|
|
|
3564
4606
|
/**
|
|
3565
4607
|
* Zips each element with the next element if present.
|
|
3566
4608
|
*
|
|
4609
|
+
* @example
|
|
4610
|
+
* import { Chunk, Effect, Stream } from "effect"
|
|
4611
|
+
*
|
|
4612
|
+
* const stream = Stream.zipWithNext(Stream.make(1, 2, 3, 4))
|
|
4613
|
+
*
|
|
4614
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
|
|
4615
|
+
* // [
|
|
4616
|
+
* // [ 1, { _id: 'Option', _tag: 'Some', value: 2 } ],
|
|
4617
|
+
* // [ 2, { _id: 'Option', _tag: 'Some', value: 3 } ],
|
|
4618
|
+
* // [ 3, { _id: 'Option', _tag: 'Some', value: 4 } ],
|
|
4619
|
+
* // [ 4, { _id: 'Option', _tag: 'None' } ]
|
|
4620
|
+
* // ]
|
|
4621
|
+
*
|
|
3567
4622
|
* @since 2.0.0
|
|
3568
4623
|
* @category zipping
|
|
3569
4624
|
*/
|
|
@@ -3572,6 +4627,19 @@ export declare const zipWithNext: <A, E, R>(self: Stream<A, E, R>) => Stream<[A,
|
|
|
3572
4627
|
* Zips each element with the previous element. Initially accompanied by
|
|
3573
4628
|
* `None`.
|
|
3574
4629
|
*
|
|
4630
|
+
* @example
|
|
4631
|
+
* import { Chunk, Effect, Stream } from "effect"
|
|
4632
|
+
*
|
|
4633
|
+
* const stream = Stream.zipWithPrevious(Stream.make(1, 2, 3, 4))
|
|
4634
|
+
*
|
|
4635
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
|
|
4636
|
+
* // [
|
|
4637
|
+
* // [ { _id: 'Option', _tag: 'None' }, 1 ],
|
|
4638
|
+
* // [ { _id: 'Option', _tag: 'Some', value: 1 }, 2 ],
|
|
4639
|
+
* // [ { _id: 'Option', _tag: 'Some', value: 2 }, 3 ],
|
|
4640
|
+
* // [ { _id: 'Option', _tag: 'Some', value: 3 }, 4 ]
|
|
4641
|
+
* // ]
|
|
4642
|
+
*
|
|
3575
4643
|
* @since 2.0.0
|
|
3576
4644
|
* @category zipping
|
|
3577
4645
|
*/
|
|
@@ -3579,6 +4647,35 @@ export declare const zipWithPrevious: <A, E, R>(self: Stream<A, E, R>) => Stream
|
|
|
3579
4647
|
/**
|
|
3580
4648
|
* Zips each element with both the previous and next element.
|
|
3581
4649
|
*
|
|
4650
|
+
* @example
|
|
4651
|
+
* import { Chunk, Effect, Stream } from "effect"
|
|
4652
|
+
*
|
|
4653
|
+
* const stream = Stream.zipWithPreviousAndNext(Stream.make(1, 2, 3, 4))
|
|
4654
|
+
*
|
|
4655
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
|
|
4656
|
+
* // [
|
|
4657
|
+
* // [
|
|
4658
|
+
* // { _id: 'Option', _tag: 'None' },
|
|
4659
|
+
* // 1,
|
|
4660
|
+
* // { _id: 'Option', _tag: 'Some', value: 2 }
|
|
4661
|
+
* // ],
|
|
4662
|
+
* // [
|
|
4663
|
+
* // { _id: 'Option', _tag: 'Some', value: 1 },
|
|
4664
|
+
* // 2,
|
|
4665
|
+
* // { _id: 'Option', _tag: 'Some', value: 3 }
|
|
4666
|
+
* // ],
|
|
4667
|
+
* // [
|
|
4668
|
+
* // { _id: 'Option', _tag: 'Some', value: 2 },
|
|
4669
|
+
* // 3,
|
|
4670
|
+
* // { _id: 'Option', _tag: 'Some', value: 4 }
|
|
4671
|
+
* // ],
|
|
4672
|
+
* // [
|
|
4673
|
+
* // { _id: 'Option', _tag: 'Some', value: 3 },
|
|
4674
|
+
* // 4,
|
|
4675
|
+
* // { _id: 'Option', _tag: 'None' }
|
|
4676
|
+
* // ]
|
|
4677
|
+
* // ]
|
|
4678
|
+
*
|
|
3582
4679
|
* @since 2.0.0
|
|
3583
4680
|
* @category zipping
|
|
3584
4681
|
*/
|
|
@@ -3586,6 +4683,19 @@ export declare const zipWithPreviousAndNext: <A, E, R>(self: Stream<A, E, R>) =>
|
|
|
3586
4683
|
/**
|
|
3587
4684
|
* Zips this stream together with the index of elements.
|
|
3588
4685
|
*
|
|
4686
|
+
* @example
|
|
4687
|
+
* import { Effect, Stream } from "effect"
|
|
4688
|
+
*
|
|
4689
|
+
* const stream = Stream.make("Mary", "James", "Robert", "Patricia")
|
|
4690
|
+
*
|
|
4691
|
+
* const indexedStream = Stream.zipWithIndex(stream)
|
|
4692
|
+
*
|
|
4693
|
+
* // Effect.runPromise(Stream.runCollect(indexedStream)).then(console.log)
|
|
4694
|
+
* // {
|
|
4695
|
+
* // _id: 'Chunk',
|
|
4696
|
+
* // values: [ [ 'Mary', 0 ], [ 'James', 1 ], [ 'Robert', 2 ], [ 'Patricia', 3 ] ]
|
|
4697
|
+
* // }
|
|
4698
|
+
*
|
|
3589
4699
|
* @since 2.0.0
|
|
3590
4700
|
* @category zipping
|
|
3591
4701
|
*/
|