effect 3.4.7 → 3.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +4 -27
- 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 +6 -29
- 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 +10 -33
- 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 +6 -29
- 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 +4 -27
- 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/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 +1048 -30
- 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 +160 -183
- 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 +16 -39
- package/dist/cjs/internal/cause.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js +22 -45
- 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 +33 -56
- 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 -52
- 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 +32 -55
- 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 +12 -35
- 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 +55 -78
- 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 +11 -34
- 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 +13 -36
- 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 +7 -30
- 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/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 +46 -69
- 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/Stream.d.ts +1075 -3
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/String.d.ts +2 -2
- package/dist/dts/String.d.ts.map +1 -1
- package/dist/esm/Stream.js +1075 -3
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/String.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js +1 -1
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel.js +2 -2
- package/dist/esm/internal/channel.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/version.js +1 -1
- package/package.json +1 -1
- package/src/Stream.ts +1075 -3
- package/src/String.ts +2 -10
- package/src/internal/channel/channelExecutor.ts +6 -1
- package/src/internal/channel.ts +7 -6
- package/src/internal/pool.ts +36 -5
- package/src/internal/version.ts +1 -1
package/src/Stream.ts
CHANGED
|
@@ -188,6 +188,29 @@ export const accumulateChunks: <A, E, R>(self: Stream<A, E, R>) => Stream<A, E,
|
|
|
188
188
|
* Creates a stream from a single value that will get cleaned up after the
|
|
189
189
|
* stream is consumed.
|
|
190
190
|
*
|
|
191
|
+
* @example
|
|
192
|
+
* import { Console, Effect, Stream } from "effect"
|
|
193
|
+
*
|
|
194
|
+
* // Simulating File operations
|
|
195
|
+
* const open = (filename: string) =>
|
|
196
|
+
* Effect.gen(function*() {
|
|
197
|
+
* yield* Console.log(`Opening ${filename}`)
|
|
198
|
+
* return {
|
|
199
|
+
* getLines: Effect.succeed(["Line 1", "Line 2", "Line 3"]),
|
|
200
|
+
* close: Console.log(`Closing ${filename}`)
|
|
201
|
+
* }
|
|
202
|
+
* })
|
|
203
|
+
*
|
|
204
|
+
* const stream = Stream.acquireRelease(
|
|
205
|
+
* open("file.txt"),
|
|
206
|
+
* (file) => file.close
|
|
207
|
+
* ).pipe(Stream.flatMap((file) => file.getLines))
|
|
208
|
+
*
|
|
209
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
210
|
+
* // Opening file.txt
|
|
211
|
+
* // Closing file.txt
|
|
212
|
+
* // { _id: 'Chunk', values: [ [ 'Line 1', 'Line 2', 'Line 3' ] ] }
|
|
213
|
+
*
|
|
191
214
|
* @since 2.0.0
|
|
192
215
|
* @category constructors
|
|
193
216
|
*/
|
|
@@ -269,6 +292,14 @@ export const aggregateWithinEither: {
|
|
|
269
292
|
/**
|
|
270
293
|
* Maps the success values of this stream to the specified constant value.
|
|
271
294
|
*
|
|
295
|
+
* @example
|
|
296
|
+
* import { Effect, Stream } from "effect"
|
|
297
|
+
*
|
|
298
|
+
* const stream = Stream.range(1, 5).pipe(Stream.as(null))
|
|
299
|
+
*
|
|
300
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
301
|
+
* // { _id: 'Chunk', values: [ null, null, null, null, null ] }
|
|
302
|
+
*
|
|
272
303
|
* @since 2.0.0
|
|
273
304
|
* @category mapping
|
|
274
305
|
*/
|
|
@@ -291,6 +322,29 @@ export {
|
|
|
291
322
|
* The registration function can optionally return an `Effect`, which will be
|
|
292
323
|
* executed if the `Fiber` executing this Effect is interrupted.
|
|
293
324
|
*
|
|
325
|
+
* @example
|
|
326
|
+
* import type { StreamEmit } from "effect"
|
|
327
|
+
* import { Chunk, Effect, Option, Stream } from "effect"
|
|
328
|
+
*
|
|
329
|
+
* const events = [1, 2, 3, 4]
|
|
330
|
+
*
|
|
331
|
+
* const stream = Stream.async(
|
|
332
|
+
* (emit: StreamEmit.Emit<never, never, number, void>) => {
|
|
333
|
+
* events.forEach((n) => {
|
|
334
|
+
* setTimeout(() => {
|
|
335
|
+
* if (n === 3) {
|
|
336
|
+
* emit(Effect.fail(Option.none())) // Terminate the stream
|
|
337
|
+
* } else {
|
|
338
|
+
* emit(Effect.succeed(Chunk.of(n))) // Add the current item to the stream
|
|
339
|
+
* }
|
|
340
|
+
* }, 100 * n)
|
|
341
|
+
* })
|
|
342
|
+
* }
|
|
343
|
+
* )
|
|
344
|
+
*
|
|
345
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
346
|
+
* // { _id: 'Chunk', values: [ 1, 2 ] }
|
|
347
|
+
*
|
|
294
348
|
* @since 2.0.0
|
|
295
349
|
* @category constructors
|
|
296
350
|
*/
|
|
@@ -350,6 +404,77 @@ export const branchAfter: {
|
|
|
350
404
|
* as this stream. The driver stream will only ever advance the `maximumLag`
|
|
351
405
|
* chunks before the slowest downstream stream.
|
|
352
406
|
*
|
|
407
|
+
* @example
|
|
408
|
+
* import { Console, Effect, Fiber, Schedule, Stream } from "effect"
|
|
409
|
+
*
|
|
410
|
+
* const numbers = Effect.scoped(
|
|
411
|
+
* Stream.range(1, 20).pipe(
|
|
412
|
+
* Stream.tap((n) => Console.log(`Emit ${n} element before broadcasting`)),
|
|
413
|
+
* Stream.broadcast(2, 5),
|
|
414
|
+
* Stream.flatMap(([first, second]) =>
|
|
415
|
+
* Effect.gen(function*() {
|
|
416
|
+
* const fiber1 = yield* Stream.runFold(first, 0, (acc, e) => Math.max(acc, e)).pipe(
|
|
417
|
+
* Effect.andThen((max) => Console.log(`Maximum: ${max}`)),
|
|
418
|
+
* Effect.fork
|
|
419
|
+
* )
|
|
420
|
+
* const fiber2 = yield* second.pipe(
|
|
421
|
+
* Stream.schedule(Schedule.spaced("1 second")),
|
|
422
|
+
* Stream.runForEach((n) => Console.log(`Logging to the Console: ${n}`)),
|
|
423
|
+
* Effect.fork
|
|
424
|
+
* )
|
|
425
|
+
* yield* Fiber.join(fiber1).pipe(
|
|
426
|
+
* Effect.zip(Fiber.join(fiber2), { concurrent: true })
|
|
427
|
+
* )
|
|
428
|
+
* })
|
|
429
|
+
* ),
|
|
430
|
+
* Stream.runCollect
|
|
431
|
+
* )
|
|
432
|
+
* )
|
|
433
|
+
*
|
|
434
|
+
* // Effect.runPromise(numbers).then(console.log)
|
|
435
|
+
* // Emit 1 element before broadcasting
|
|
436
|
+
* // Emit 2 element before broadcasting
|
|
437
|
+
* // Emit 3 element before broadcasting
|
|
438
|
+
* // Emit 4 element before broadcasting
|
|
439
|
+
* // Emit 5 element before broadcasting
|
|
440
|
+
* // Emit 6 element before broadcasting
|
|
441
|
+
* // Emit 7 element before broadcasting
|
|
442
|
+
* // Emit 8 element before broadcasting
|
|
443
|
+
* // Emit 9 element before broadcasting
|
|
444
|
+
* // Emit 10 element before broadcasting
|
|
445
|
+
* // Emit 11 element before broadcasting
|
|
446
|
+
* // Logging to the Console: 1
|
|
447
|
+
* // Logging to the Console: 2
|
|
448
|
+
* // Logging to the Console: 3
|
|
449
|
+
* // Logging to the Console: 4
|
|
450
|
+
* // Logging to the Console: 5
|
|
451
|
+
* // Emit 12 element before broadcasting
|
|
452
|
+
* // Emit 13 element before broadcasting
|
|
453
|
+
* // Emit 14 element before broadcasting
|
|
454
|
+
* // Emit 15 element before broadcasting
|
|
455
|
+
* // Emit 16 element before broadcasting
|
|
456
|
+
* // Logging to the Console: 6
|
|
457
|
+
* // Logging to the Console: 7
|
|
458
|
+
* // Logging to the Console: 8
|
|
459
|
+
* // Logging to the Console: 9
|
|
460
|
+
* // Logging to the Console: 10
|
|
461
|
+
* // Emit 17 element before broadcasting
|
|
462
|
+
* // Emit 18 element before broadcasting
|
|
463
|
+
* // Emit 19 element before broadcasting
|
|
464
|
+
* // Emit 20 element before broadcasting
|
|
465
|
+
* // Logging to the Console: 11
|
|
466
|
+
* // Logging to the Console: 12
|
|
467
|
+
* // Logging to the Console: 13
|
|
468
|
+
* // Logging to the Console: 14
|
|
469
|
+
* // Logging to the Console: 15
|
|
470
|
+
* // Maximum: 20
|
|
471
|
+
* // Logging to the Console: 16
|
|
472
|
+
* // Logging to the Console: 17
|
|
473
|
+
* // Logging to the Console: 18
|
|
474
|
+
* // Logging to the Console: 19
|
|
475
|
+
* // Logging to the Console: 20
|
|
476
|
+
* // { _id: 'Chunk', values: [ undefined ] }
|
|
477
|
+
*
|
|
353
478
|
* @since 2.0.0
|
|
354
479
|
* @category utils
|
|
355
480
|
*/
|
|
@@ -430,9 +555,38 @@ export const broadcastedQueuesDynamic: {
|
|
|
430
555
|
* Allows a faster producer to progress independently of a slower consumer by
|
|
431
556
|
* buffering up to `capacity` elements in a queue.
|
|
432
557
|
*
|
|
433
|
-
*
|
|
558
|
+
* Note: This combinator destroys the chunking structure. It's recommended to
|
|
434
559
|
* use rechunk afterwards. Additionally, prefer capacities that are powers
|
|
435
560
|
* of 2 for better performance.
|
|
561
|
+
*
|
|
562
|
+
* @example
|
|
563
|
+
* import { Console, Effect, Schedule, Stream } from "effect"
|
|
564
|
+
*
|
|
565
|
+
* const stream = Stream.range(1, 10).pipe(
|
|
566
|
+
* Stream.tap((n) => Console.log(`before buffering: ${n}`)),
|
|
567
|
+
* Stream.buffer({ capacity: 4 }),
|
|
568
|
+
* Stream.tap((n) => Console.log(`after buffering: ${n}`)),
|
|
569
|
+
* Stream.schedule(Schedule.spaced("5 seconds"))
|
|
570
|
+
* )
|
|
571
|
+
*
|
|
572
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
573
|
+
* // before buffering: 1
|
|
574
|
+
* // before buffering: 2
|
|
575
|
+
* // before buffering: 3
|
|
576
|
+
* // before buffering: 4
|
|
577
|
+
* // before buffering: 5
|
|
578
|
+
* // before buffering: 6
|
|
579
|
+
* // after buffering: 1
|
|
580
|
+
* // after buffering: 2
|
|
581
|
+
* // before buffering: 7
|
|
582
|
+
* // after buffering: 3
|
|
583
|
+
* // before buffering: 8
|
|
584
|
+
* // after buffering: 4
|
|
585
|
+
* // before buffering: 9
|
|
586
|
+
* // after buffering: 5
|
|
587
|
+
* // before buffering: 10
|
|
588
|
+
* // ...
|
|
589
|
+
*
|
|
436
590
|
* @since 2.0.0
|
|
437
591
|
* @category utils
|
|
438
592
|
*/
|
|
@@ -618,6 +772,14 @@ export const catchSomeCause: {
|
|
|
618
772
|
* previous element emitted, using natural equality to determine whether two
|
|
619
773
|
* elements are equal.
|
|
620
774
|
*
|
|
775
|
+
* @example
|
|
776
|
+
* import { Effect, Stream } from "effect"
|
|
777
|
+
*
|
|
778
|
+
* const stream = Stream.make(1, 1, 1, 2, 2, 3, 4).pipe(Stream.changes)
|
|
779
|
+
*
|
|
780
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
781
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4 ] }
|
|
782
|
+
*
|
|
621
783
|
* @since 2.0.0
|
|
622
784
|
* @category utils
|
|
623
785
|
*/
|
|
@@ -749,6 +911,17 @@ export const combineChunks: {
|
|
|
749
911
|
* that emits the elements from this stream and then the elements from the
|
|
750
912
|
* specified stream.
|
|
751
913
|
*
|
|
914
|
+
* @example
|
|
915
|
+
* import { Effect, Stream } from "effect"
|
|
916
|
+
*
|
|
917
|
+
* const s1 = Stream.make(1, 2, 3)
|
|
918
|
+
* const s2 = Stream.make(4, 5)
|
|
919
|
+
*
|
|
920
|
+
* const stream = Stream.concat(s1, s2)
|
|
921
|
+
*
|
|
922
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
923
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
|
|
924
|
+
*
|
|
752
925
|
* @since 2.0.0
|
|
753
926
|
* @category utils
|
|
754
927
|
*/
|
|
@@ -760,6 +933,24 @@ export const concat: {
|
|
|
760
933
|
/**
|
|
761
934
|
* Concatenates all of the streams in the chunk to one stream.
|
|
762
935
|
*
|
|
936
|
+
* @example
|
|
937
|
+
* import { Chunk, Effect, Stream } from "effect"
|
|
938
|
+
*
|
|
939
|
+
* const s1 = Stream.make(1, 2, 3)
|
|
940
|
+
* const s2 = Stream.make(4, 5)
|
|
941
|
+
* const s3 = Stream.make(6, 7, 8)
|
|
942
|
+
*
|
|
943
|
+
* const stream = Stream.concatAll(Chunk.make(s1, s2, s3))
|
|
944
|
+
*
|
|
945
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
946
|
+
* // {
|
|
947
|
+
* // _id: 'Chunk',
|
|
948
|
+
* // values: [
|
|
949
|
+
* // 1, 2, 3, 4,
|
|
950
|
+
* // 5, 6, 7, 8
|
|
951
|
+
* // ]
|
|
952
|
+
* // }
|
|
953
|
+
*
|
|
763
954
|
* @since 2.0.0
|
|
764
955
|
* @category constructors
|
|
765
956
|
*/
|
|
@@ -772,6 +963,22 @@ export const concatAll: <A, E, R>(streams: Chunk.Chunk<Stream<A, E, R>>) => Stre
|
|
|
772
963
|
*
|
|
773
964
|
* See also `Stream.zip` for the more common point-wise variant.
|
|
774
965
|
*
|
|
966
|
+
* @example
|
|
967
|
+
* import { Effect, Stream } from "effect"
|
|
968
|
+
*
|
|
969
|
+
* const s1 = Stream.make(1, 2, 3)
|
|
970
|
+
* const s2 = Stream.make("a", "b")
|
|
971
|
+
*
|
|
972
|
+
* const product = Stream.cross(s1, s2)
|
|
973
|
+
*
|
|
974
|
+
* // Effect.runPromise(Stream.runCollect(product)).then(console.log)
|
|
975
|
+
* // {
|
|
976
|
+
* // _id: "Chunk",
|
|
977
|
+
* // values: [
|
|
978
|
+
* // [ 1, "a" ], [ 1, "b" ], [ 2, "a" ], [ 2, "b" ], [ 3, "a" ], [ 3, "b" ]
|
|
979
|
+
* // ]
|
|
980
|
+
* // }
|
|
981
|
+
*
|
|
775
982
|
* @since 2.0.0
|
|
776
983
|
* @category utils
|
|
777
984
|
*/
|
|
@@ -844,6 +1051,45 @@ export const crossWith: {
|
|
|
844
1051
|
* example, a search engine may only want to initiate a search after a user
|
|
845
1052
|
* has paused typing so as to not prematurely recommend results.
|
|
846
1053
|
*
|
|
1054
|
+
* @example
|
|
1055
|
+
* import { Effect, Stream } from "effect"
|
|
1056
|
+
*
|
|
1057
|
+
* let last = Date.now()
|
|
1058
|
+
* const log = (message: string) =>
|
|
1059
|
+
* Effect.sync(() => {
|
|
1060
|
+
* const end = Date.now()
|
|
1061
|
+
* console.log(`${message} after ${end - last}ms`)
|
|
1062
|
+
* last = end
|
|
1063
|
+
* })
|
|
1064
|
+
*
|
|
1065
|
+
* const stream = Stream.make(1, 2, 3).pipe(
|
|
1066
|
+
* Stream.concat(
|
|
1067
|
+
* Stream.fromEffect(Effect.sleep("200 millis").pipe(Effect.as(4))) // Emit 4 after 200 ms
|
|
1068
|
+
* ),
|
|
1069
|
+
* Stream.concat(Stream.make(5, 6)), // Continue with more rapid values
|
|
1070
|
+
* Stream.concat(
|
|
1071
|
+
* Stream.fromEffect(Effect.sleep("150 millis").pipe(Effect.as(7))) // Emit 7 after 150 ms
|
|
1072
|
+
* ),
|
|
1073
|
+
* Stream.concat(Stream.make(8)),
|
|
1074
|
+
* Stream.tap((n) => log(`Received ${n}`)),
|
|
1075
|
+
* Stream.debounce("100 millis"), // Only emit values after a pause of at least 100 milliseconds,
|
|
1076
|
+
* Stream.tap((n) => log(`> Emitted ${n}`))
|
|
1077
|
+
* )
|
|
1078
|
+
*
|
|
1079
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1080
|
+
* // Received 1 after 5ms
|
|
1081
|
+
* // Received 2 after 2ms
|
|
1082
|
+
* // Received 3 after 0ms
|
|
1083
|
+
* // > Emitted 3 after 104ms
|
|
1084
|
+
* // Received 4 after 99ms
|
|
1085
|
+
* // Received 5 after 1ms
|
|
1086
|
+
* // Received 6 after 0ms
|
|
1087
|
+
* // > Emitted 6 after 101ms
|
|
1088
|
+
* // Received 7 after 50ms
|
|
1089
|
+
* // Received 8 after 1ms
|
|
1090
|
+
* // > Emitted 8 after 101ms
|
|
1091
|
+
* // { _id: 'Chunk', values: [ 3, 6, 8 ] }
|
|
1092
|
+
*
|
|
847
1093
|
* @since 2.0.0
|
|
848
1094
|
* @category utils
|
|
849
1095
|
*/
|
|
@@ -939,6 +1185,15 @@ export const distributedWithDynamic: {
|
|
|
939
1185
|
* Converts this stream to a stream that executes its effects but emits no
|
|
940
1186
|
* elements. Useful for sequencing effects using streams:
|
|
941
1187
|
*
|
|
1188
|
+
* @example
|
|
1189
|
+
* import { Effect, Stream } from "effect"
|
|
1190
|
+
*
|
|
1191
|
+
* // We create a stream and immediately drain it.
|
|
1192
|
+
* const stream = Stream.range(1, 6).pipe(Stream.drain)
|
|
1193
|
+
*
|
|
1194
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1195
|
+
* // { _id: 'Chunk', values: [] }
|
|
1196
|
+
*
|
|
942
1197
|
* @since 2.0.0
|
|
943
1198
|
* @category utils
|
|
944
1199
|
*/
|
|
@@ -1054,6 +1309,14 @@ export const either: <A, E, R>(self: Stream<A, E, R>) => Stream<Either.Either<A,
|
|
|
1054
1309
|
/**
|
|
1055
1310
|
* The empty stream.
|
|
1056
1311
|
*
|
|
1312
|
+
* @example
|
|
1313
|
+
* import { Effect, Stream } from "effect"
|
|
1314
|
+
*
|
|
1315
|
+
* const stream = Stream.empty
|
|
1316
|
+
*
|
|
1317
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1318
|
+
* // { _id: 'Chunk', values: [] }
|
|
1319
|
+
*
|
|
1057
1320
|
* @since 2.0.0
|
|
1058
1321
|
* @category constructors
|
|
1059
1322
|
*/
|
|
@@ -1062,6 +1325,22 @@ export const empty: Stream<never> = internal.empty
|
|
|
1062
1325
|
/**
|
|
1063
1326
|
* Executes the provided finalizer after this stream's finalizers run.
|
|
1064
1327
|
*
|
|
1328
|
+
* @example
|
|
1329
|
+
* import { Console, Effect, Stream } from "effect"
|
|
1330
|
+
*
|
|
1331
|
+
* const program = Stream.fromEffect(Console.log("Application Logic.")).pipe(
|
|
1332
|
+
* Stream.concat(Stream.finalizer(Console.log("Finalizing the stream"))),
|
|
1333
|
+
* Stream.ensuring(
|
|
1334
|
+
* Console.log("Doing some other works after stream's finalization")
|
|
1335
|
+
* )
|
|
1336
|
+
* )
|
|
1337
|
+
*
|
|
1338
|
+
* // Effect.runPromise(Stream.runCollect(program)).then(console.log)
|
|
1339
|
+
* // Application Logic.
|
|
1340
|
+
* // Finalizing the stream
|
|
1341
|
+
* // Doing some other works after stream's finalization
|
|
1342
|
+
* // { _id: 'Chunk', values: [ undefined, undefined ] }
|
|
1343
|
+
*
|
|
1065
1344
|
* @since 2.0.0
|
|
1066
1345
|
* @category utils
|
|
1067
1346
|
*/
|
|
@@ -1133,6 +1412,18 @@ export const execute: <X, E, R>(effect: Effect.Effect<X, E, R>) => Stream<never,
|
|
|
1133
1412
|
/**
|
|
1134
1413
|
* Terminates with the specified error.
|
|
1135
1414
|
*
|
|
1415
|
+
* @example
|
|
1416
|
+
* import { Effect, Stream } from "effect"
|
|
1417
|
+
*
|
|
1418
|
+
* const stream = Stream.fail("Uh oh!")
|
|
1419
|
+
*
|
|
1420
|
+
* Effect.runPromiseExit(Stream.runCollect(stream)).then(console.log)
|
|
1421
|
+
* // {
|
|
1422
|
+
* // _id: 'Exit',
|
|
1423
|
+
* // _tag: 'Failure',
|
|
1424
|
+
* // cause: { _id: 'Cause', _tag: 'Fail', failure: 'Uh oh!' }
|
|
1425
|
+
* // }
|
|
1426
|
+
*
|
|
1136
1427
|
* @since 2.0.0
|
|
1137
1428
|
* @category constructors
|
|
1138
1429
|
*/
|
|
@@ -1165,6 +1456,14 @@ export const failCauseSync: <E>(evaluate: LazyArg<Cause.Cause<E>>) => Stream<nev
|
|
|
1165
1456
|
/**
|
|
1166
1457
|
* Filters the elements emitted by this stream using the provided function.
|
|
1167
1458
|
*
|
|
1459
|
+
* @example
|
|
1460
|
+
* import { Effect, Stream } from "effect"
|
|
1461
|
+
*
|
|
1462
|
+
* const stream = Stream.range(1, 11).pipe(Stream.filter((n) => n % 2 === 0))
|
|
1463
|
+
*
|
|
1464
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1465
|
+
* // { _id: 'Chunk', values: [ 2, 4, 6, 8, 10 ] }
|
|
1466
|
+
*
|
|
1168
1467
|
* @since 2.0.0
|
|
1169
1468
|
* @category filtering
|
|
1170
1469
|
*/
|
|
@@ -1248,6 +1547,29 @@ export const filterMapWhileEffect: {
|
|
|
1248
1547
|
* Creates a one-element stream that never fails and executes the finalizer
|
|
1249
1548
|
* when it ends.
|
|
1250
1549
|
*
|
|
1550
|
+
* @example
|
|
1551
|
+
* import { Console, Effect, Stream } from "effect"
|
|
1552
|
+
*
|
|
1553
|
+
* const application = Stream.fromEffect(Console.log("Application Logic."))
|
|
1554
|
+
*
|
|
1555
|
+
* const deleteDir = (dir: string) => Console.log(`Deleting dir: ${dir}`)
|
|
1556
|
+
*
|
|
1557
|
+
* const program = application.pipe(
|
|
1558
|
+
* Stream.concat(
|
|
1559
|
+
* Stream.finalizer(
|
|
1560
|
+
* deleteDir("tmp").pipe(
|
|
1561
|
+
* Effect.andThen(Console.log("Temporary directory was deleted."))
|
|
1562
|
+
* )
|
|
1563
|
+
* )
|
|
1564
|
+
* )
|
|
1565
|
+
* )
|
|
1566
|
+
*
|
|
1567
|
+
* // Effect.runPromise(Stream.runCollect(program)).then(console.log)
|
|
1568
|
+
* // Application Logic.
|
|
1569
|
+
* // Deleting dir: tmp
|
|
1570
|
+
* // Temporary directory was deleted.
|
|
1571
|
+
* // { _id: 'Chunk', values: [ undefined, undefined ] }
|
|
1572
|
+
*
|
|
1251
1573
|
* @since 2.0.0
|
|
1252
1574
|
* @category constructors
|
|
1253
1575
|
*/
|
|
@@ -1408,6 +1730,22 @@ export const forever: <A, E, R>(self: Stream<A, E, R>) => Stream<A, E, R> = inte
|
|
|
1408
1730
|
/**
|
|
1409
1731
|
* Creates a stream from an `AsyncIterable`.
|
|
1410
1732
|
*
|
|
1733
|
+
* @example
|
|
1734
|
+
* import { Effect, Stream } from "effect"
|
|
1735
|
+
*
|
|
1736
|
+
* const myAsyncIterable = async function*() {
|
|
1737
|
+
* yield 1
|
|
1738
|
+
* yield 2
|
|
1739
|
+
* }
|
|
1740
|
+
*
|
|
1741
|
+
* const stream = Stream.fromAsyncIterable(
|
|
1742
|
+
* myAsyncIterable(),
|
|
1743
|
+
* (e) => new Error(String(e)) // Error Handling
|
|
1744
|
+
* )
|
|
1745
|
+
*
|
|
1746
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1747
|
+
* // { _id: 'Chunk', values: [ 1, 2 ] }
|
|
1748
|
+
*
|
|
1411
1749
|
* @since 2.0.0
|
|
1412
1750
|
* @category constructors
|
|
1413
1751
|
*/
|
|
@@ -1437,6 +1775,15 @@ export const toChannel: <A, E, R>(
|
|
|
1437
1775
|
/**
|
|
1438
1776
|
* Creates a stream from a `Chunk` of values.
|
|
1439
1777
|
*
|
|
1778
|
+
* @example
|
|
1779
|
+
* import { Chunk, Effect, Stream } from "effect"
|
|
1780
|
+
*
|
|
1781
|
+
* // Creating a stream with values from a single Chunk
|
|
1782
|
+
* const stream = Stream.fromChunk(Chunk.make(1, 2, 3))
|
|
1783
|
+
*
|
|
1784
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1785
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3 ] }
|
|
1786
|
+
*
|
|
1440
1787
|
* @since 2.0.0
|
|
1441
1788
|
* @category constructors
|
|
1442
1789
|
*/
|
|
@@ -1477,6 +1824,15 @@ export const fromChunkQueue: <A>(
|
|
|
1477
1824
|
/**
|
|
1478
1825
|
* Creates a stream from an arbitrary number of chunks.
|
|
1479
1826
|
*
|
|
1827
|
+
* @example
|
|
1828
|
+
* import { Chunk, Effect, Stream } from "effect"
|
|
1829
|
+
*
|
|
1830
|
+
* // Creating a stream with values from multiple Chunks
|
|
1831
|
+
* const stream = Stream.fromChunks(Chunk.make(1, 2, 3), Chunk.make(4, 5, 6))
|
|
1832
|
+
*
|
|
1833
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1834
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5, 6 ] }
|
|
1835
|
+
*
|
|
1480
1836
|
* @since 2.0.0
|
|
1481
1837
|
* @category constructors
|
|
1482
1838
|
*/
|
|
@@ -1486,6 +1842,14 @@ export const fromChunks: <A>(...chunks: Array<Chunk.Chunk<A>>) => Stream<A> = in
|
|
|
1486
1842
|
* Either emits the success value of this effect or terminates the stream
|
|
1487
1843
|
* with the failure value of this effect.
|
|
1488
1844
|
*
|
|
1845
|
+
* @example
|
|
1846
|
+
* import { Effect, Random, Stream } from "effect"
|
|
1847
|
+
*
|
|
1848
|
+
* const stream = Stream.fromEffect(Random.nextInt)
|
|
1849
|
+
*
|
|
1850
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1851
|
+
* // Example Output: { _id: 'Chunk', values: [ 922694024 ] }
|
|
1852
|
+
*
|
|
1489
1853
|
* @since 2.0.0
|
|
1490
1854
|
* @category constructors
|
|
1491
1855
|
*/
|
|
@@ -1530,6 +1894,16 @@ export const fromPubSub: {
|
|
|
1530
1894
|
/**
|
|
1531
1895
|
* Creates a new `Stream` from an iterable collection of values.
|
|
1532
1896
|
*
|
|
1897
|
+
* @example
|
|
1898
|
+
* import { Effect, Stream } from "effect"
|
|
1899
|
+
*
|
|
1900
|
+
* const numbers = [1, 2, 3]
|
|
1901
|
+
*
|
|
1902
|
+
* const stream = Stream.fromIterable(numbers)
|
|
1903
|
+
*
|
|
1904
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
1905
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3 ] }
|
|
1906
|
+
*
|
|
1533
1907
|
* @since 2.0.0
|
|
1534
1908
|
* @category constructors
|
|
1535
1909
|
*/
|
|
@@ -1538,6 +1912,23 @@ export const fromIterable: <A>(iterable: Iterable<A>) => Stream<A> = internal.fr
|
|
|
1538
1912
|
/**
|
|
1539
1913
|
* Creates a stream from an effect producing a value of type `Iterable<A>`.
|
|
1540
1914
|
*
|
|
1915
|
+
* @example
|
|
1916
|
+
* import { Context, Effect, Stream } from "effect"
|
|
1917
|
+
*
|
|
1918
|
+
* class Database extends Context.Tag("Database")<
|
|
1919
|
+
* Database,
|
|
1920
|
+
* { readonly getUsers: Effect.Effect<Array<string>> }
|
|
1921
|
+
* >() {}
|
|
1922
|
+
*
|
|
1923
|
+
* const getUsers = Database.pipe(Effect.andThen((_) => _.getUsers))
|
|
1924
|
+
*
|
|
1925
|
+
* const stream = Stream.fromIterableEffect(getUsers)
|
|
1926
|
+
*
|
|
1927
|
+
* // Effect.runPromise(
|
|
1928
|
+
* // Stream.runCollect(stream.pipe(Stream.provideService(Database, { getUsers: Effect.succeed(["user1", "user2"]) })))
|
|
1929
|
+
* // ).then(console.log)
|
|
1930
|
+
* // { _id: 'Chunk', values: [ 'user1', 'user2' ] }
|
|
1931
|
+
*
|
|
1541
1932
|
* @since 2.0.0
|
|
1542
1933
|
* @category constructors
|
|
1543
1934
|
*/
|
|
@@ -1614,6 +2005,19 @@ export const fromReadableStreamByob: <E>(
|
|
|
1614
2005
|
* input. The stream will emit an element for each value output from the
|
|
1615
2006
|
* schedule, continuing for as long as the schedule continues.
|
|
1616
2007
|
*
|
|
2008
|
+
* @example
|
|
2009
|
+
* import { Effect, Schedule, Stream } from "effect"
|
|
2010
|
+
*
|
|
2011
|
+
* // Emits values every 1 second for a total of 5 emissions
|
|
2012
|
+
* const schedule = Schedule.spaced("1 second").pipe(
|
|
2013
|
+
* Schedule.compose(Schedule.recurs(5))
|
|
2014
|
+
* )
|
|
2015
|
+
*
|
|
2016
|
+
* const stream = Stream.fromSchedule(schedule)
|
|
2017
|
+
*
|
|
2018
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2019
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
|
|
2020
|
+
*
|
|
1617
2021
|
* @since 2.0.0
|
|
1618
2022
|
* @category constructors
|
|
1619
2023
|
*/
|
|
@@ -1635,6 +2039,35 @@ export const groupAdjacentBy: {
|
|
|
1635
2039
|
/**
|
|
1636
2040
|
* More powerful version of `Stream.groupByKey`.
|
|
1637
2041
|
*
|
|
2042
|
+
* @example
|
|
2043
|
+
* import { Chunk, Effect, GroupBy, Stream } from "effect"
|
|
2044
|
+
*
|
|
2045
|
+
* const groupByKeyResult = Stream.fromIterable([
|
|
2046
|
+
* "Mary",
|
|
2047
|
+
* "James",
|
|
2048
|
+
* "Robert",
|
|
2049
|
+
* "Patricia",
|
|
2050
|
+
* "John",
|
|
2051
|
+
* "Jennifer",
|
|
2052
|
+
* "Rebecca",
|
|
2053
|
+
* "Peter"
|
|
2054
|
+
* ]).pipe(
|
|
2055
|
+
* Stream.groupBy((name) => Effect.succeed([name.substring(0, 1), name]))
|
|
2056
|
+
* )
|
|
2057
|
+
*
|
|
2058
|
+
* const stream = GroupBy.evaluate(groupByKeyResult, (key, stream) =>
|
|
2059
|
+
* Stream.fromEffect(
|
|
2060
|
+
* Stream.runCollect(stream).pipe(
|
|
2061
|
+
* Effect.andThen((chunk) => [key, Chunk.size(chunk)] as const)
|
|
2062
|
+
* )
|
|
2063
|
+
* ))
|
|
2064
|
+
*
|
|
2065
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2066
|
+
* // {
|
|
2067
|
+
* // _id: 'Chunk',
|
|
2068
|
+
* // values: [ [ 'M', 1 ], [ 'J', 3 ], [ 'R', 2 ], [ 'P', 2 ] ]
|
|
2069
|
+
* // }
|
|
2070
|
+
*
|
|
1638
2071
|
* @since 2.0.0
|
|
1639
2072
|
* @category grouping
|
|
1640
2073
|
*/
|
|
@@ -1706,6 +2139,22 @@ export const groupByKey: {
|
|
|
1706
2139
|
/**
|
|
1707
2140
|
* Partitions the stream with specified `chunkSize`.
|
|
1708
2141
|
*
|
|
2142
|
+
* @example
|
|
2143
|
+
* import { Effect, Stream } from "effect"
|
|
2144
|
+
*
|
|
2145
|
+
* const stream = Stream.range(0, 8).pipe(Stream.grouped(3))
|
|
2146
|
+
*
|
|
2147
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then((chunks) => console.log("%o", chunks))
|
|
2148
|
+
* // {
|
|
2149
|
+
* // _id: 'Chunk',
|
|
2150
|
+
* // values: [
|
|
2151
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, [length]: 3 ] },
|
|
2152
|
+
* // { _id: 'Chunk', values: [ 3, 4, 5, [length]: 3 ] },
|
|
2153
|
+
* // { _id: 'Chunk', values: [ 6, 7, 8, [length]: 3 ] },
|
|
2154
|
+
* // [length]: 3
|
|
2155
|
+
* // ]
|
|
2156
|
+
* // }
|
|
2157
|
+
*
|
|
1709
2158
|
* @since 2.0.0
|
|
1710
2159
|
* @category utils
|
|
1711
2160
|
*/
|
|
@@ -1718,6 +2167,43 @@ export const grouped: {
|
|
|
1718
2167
|
* Partitions the stream with the specified `chunkSize` or until the specified
|
|
1719
2168
|
* `duration` has passed, whichever is satisfied first.
|
|
1720
2169
|
*
|
|
2170
|
+
* @example
|
|
2171
|
+
* import { Chunk, Effect, Schedule, Stream } from "effect"
|
|
2172
|
+
*
|
|
2173
|
+
* const stream = Stream.range(0, 9).pipe(
|
|
2174
|
+
* Stream.repeat(Schedule.spaced("1 second")),
|
|
2175
|
+
* Stream.groupedWithin(18, "1.5 seconds"),
|
|
2176
|
+
* Stream.take(3)
|
|
2177
|
+
* )
|
|
2178
|
+
*
|
|
2179
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then((chunks) => console.log(Chunk.toArray(chunks)))
|
|
2180
|
+
* // [
|
|
2181
|
+
* // {
|
|
2182
|
+
* // _id: 'Chunk',
|
|
2183
|
+
* // values: [
|
|
2184
|
+
* // 0, 1, 2, 3, 4, 5, 6,
|
|
2185
|
+
* // 7, 8, 9, 0, 1, 2, 3,
|
|
2186
|
+
* // 4, 5, 6, 7
|
|
2187
|
+
* // ]
|
|
2188
|
+
* // },
|
|
2189
|
+
* // {
|
|
2190
|
+
* // _id: 'Chunk',
|
|
2191
|
+
* // values: [
|
|
2192
|
+
* // 8, 9, 0, 1, 2,
|
|
2193
|
+
* // 3, 4, 5, 6, 7,
|
|
2194
|
+
* // 8, 9
|
|
2195
|
+
* // ]
|
|
2196
|
+
* // },
|
|
2197
|
+
* // {
|
|
2198
|
+
* // _id: 'Chunk',
|
|
2199
|
+
* // values: [
|
|
2200
|
+
* // 0, 1, 2, 3, 4, 5, 6,
|
|
2201
|
+
* // 7, 8, 9, 0, 1, 2, 3,
|
|
2202
|
+
* // 4, 5, 6, 7
|
|
2203
|
+
* // ]
|
|
2204
|
+
* // }
|
|
2205
|
+
* // ]
|
|
2206
|
+
*
|
|
1721
2207
|
* @since 2.0.0
|
|
1722
2208
|
* @category utils
|
|
1723
2209
|
*/
|
|
@@ -1789,6 +2275,16 @@ export const identity: <A, E = never, R = never>() => Stream<A, E, R> = internal
|
|
|
1789
2275
|
* one stream is exhausted all remaining values in the other stream will be
|
|
1790
2276
|
* pulled.
|
|
1791
2277
|
*
|
|
2278
|
+
* @example
|
|
2279
|
+
* import { Effect, Stream } from "effect"
|
|
2280
|
+
*
|
|
2281
|
+
* const s1 = Stream.make(1, 2, 3)
|
|
2282
|
+
* const s2 = Stream.make(4, 5, 6)
|
|
2283
|
+
*
|
|
2284
|
+
* const stream = Stream.interleave(s1, s2)
|
|
2285
|
+
*
|
|
2286
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2287
|
+
* // { _id: 'Chunk', values: [ 1, 4, 2, 5, 3, 6 ] }
|
|
1792
2288
|
* @since 2.0.0
|
|
1793
2289
|
* @category utils
|
|
1794
2290
|
*/
|
|
@@ -1806,6 +2302,25 @@ export const interleave: {
|
|
|
1806
2302
|
* stream are exhausted further requests for values from that stream will be
|
|
1807
2303
|
* ignored.
|
|
1808
2304
|
*
|
|
2305
|
+
* @example
|
|
2306
|
+
* import { Effect, Stream } from "effect"
|
|
2307
|
+
*
|
|
2308
|
+
* const s1 = Stream.make(1, 3, 5, 7, 9)
|
|
2309
|
+
* const s2 = Stream.make(2, 4, 6, 8, 10)
|
|
2310
|
+
*
|
|
2311
|
+
* const booleanStream = Stream.make(true, false, false).pipe(Stream.forever)
|
|
2312
|
+
*
|
|
2313
|
+
* const stream = Stream.interleaveWith(s1, s2, booleanStream)
|
|
2314
|
+
*
|
|
2315
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2316
|
+
* // {
|
|
2317
|
+
* // _id: 'Chunk',
|
|
2318
|
+
* // values: [
|
|
2319
|
+
* // 1, 2, 4, 3, 6,
|
|
2320
|
+
* // 8, 5, 10, 7, 9
|
|
2321
|
+
* // ]
|
|
2322
|
+
* // }
|
|
2323
|
+
*
|
|
1809
2324
|
* @since 2.0.0
|
|
1810
2325
|
* @category utils
|
|
1811
2326
|
*/
|
|
@@ -1824,6 +2339,20 @@ export const interleaveWith: {
|
|
|
1824
2339
|
/**
|
|
1825
2340
|
* Intersperse stream with provided `element`.
|
|
1826
2341
|
*
|
|
2342
|
+
* @example
|
|
2343
|
+
* import { Effect, Stream } from "effect"
|
|
2344
|
+
*
|
|
2345
|
+
* const stream = Stream.make(1, 2, 3, 4, 5).pipe(Stream.intersperse(0))
|
|
2346
|
+
*
|
|
2347
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2348
|
+
* // {
|
|
2349
|
+
* // _id: 'Chunk',
|
|
2350
|
+
* // values: [
|
|
2351
|
+
* // 1, 0, 2, 0, 3,
|
|
2352
|
+
* // 0, 4, 0, 5
|
|
2353
|
+
* // ]
|
|
2354
|
+
* // }
|
|
2355
|
+
*
|
|
1827
2356
|
* @since 2.0.0
|
|
1828
2357
|
* @category utils
|
|
1829
2358
|
*/
|
|
@@ -1835,6 +2364,27 @@ export const intersperse: {
|
|
|
1835
2364
|
/**
|
|
1836
2365
|
* Intersperse the specified element, also adding a prefix and a suffix.
|
|
1837
2366
|
*
|
|
2367
|
+
* @example
|
|
2368
|
+
* import { Effect, Stream } from "effect"
|
|
2369
|
+
*
|
|
2370
|
+
* const stream = Stream.make(1, 2, 3, 4, 5).pipe(
|
|
2371
|
+
* Stream.intersperseAffixes({
|
|
2372
|
+
* start: "[",
|
|
2373
|
+
* middle: "-",
|
|
2374
|
+
* end: "]"
|
|
2375
|
+
* })
|
|
2376
|
+
* )
|
|
2377
|
+
*
|
|
2378
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2379
|
+
* // {
|
|
2380
|
+
* // _id: 'Chunk',
|
|
2381
|
+
* // values: [
|
|
2382
|
+
* // '[', 1, '-', 2, '-',
|
|
2383
|
+
* // 3, '-', 4, '-', 5,
|
|
2384
|
+
* // ']'
|
|
2385
|
+
* // ]
|
|
2386
|
+
* // }
|
|
2387
|
+
*
|
|
1838
2388
|
* @since 2.0.0
|
|
1839
2389
|
* @category utils
|
|
1840
2390
|
*/
|
|
@@ -1896,6 +2446,15 @@ export const interruptWhenDeferred: {
|
|
|
1896
2446
|
* The infinite stream of iterative function application: a, f(a), f(f(a)),
|
|
1897
2447
|
* f(f(f(a))), ...
|
|
1898
2448
|
*
|
|
2449
|
+
* @example
|
|
2450
|
+
* import { Effect, Stream } from "effect"
|
|
2451
|
+
*
|
|
2452
|
+
* // An infinite Stream of numbers starting from 1 and incrementing
|
|
2453
|
+
* const stream = Stream.iterate(1, (n) => n + 1)
|
|
2454
|
+
*
|
|
2455
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(10)))).then(console.log)
|
|
2456
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] }
|
|
2457
|
+
*
|
|
1899
2458
|
* @since 2.0.0
|
|
1900
2459
|
* @category constructors
|
|
1901
2460
|
*/
|
|
@@ -1904,6 +2463,14 @@ export const iterate: <A>(value: A, next: (value: A) => A) => Stream<A> = intern
|
|
|
1904
2463
|
/**
|
|
1905
2464
|
* Creates a stream from an sequence of values.
|
|
1906
2465
|
*
|
|
2466
|
+
* @example
|
|
2467
|
+
* import { Effect, Stream } from "effect"
|
|
2468
|
+
*
|
|
2469
|
+
* const stream = Stream.make(1, 2, 3)
|
|
2470
|
+
*
|
|
2471
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2472
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3 ] }
|
|
2473
|
+
*
|
|
1907
2474
|
* @since 2.0.0
|
|
1908
2475
|
* @category constructors
|
|
1909
2476
|
*/
|
|
@@ -1912,6 +2479,14 @@ export const make: <As extends Array<any>>(...as: As) => Stream<As[number]> = in
|
|
|
1912
2479
|
/**
|
|
1913
2480
|
* Transforms the elements of this stream using the supplied function.
|
|
1914
2481
|
*
|
|
2482
|
+
* @example
|
|
2483
|
+
* import { Effect, Stream } from "effect"
|
|
2484
|
+
*
|
|
2485
|
+
* const stream = Stream.make(1, 2, 3).pipe(Stream.map((n) => n + 1))
|
|
2486
|
+
*
|
|
2487
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2488
|
+
* // { _id: 'Chunk', values: [ 2, 3, 4 ] }
|
|
2489
|
+
*
|
|
1915
2490
|
* @since 2.0.0
|
|
1916
2491
|
* @category mapping
|
|
1917
2492
|
*/
|
|
@@ -1923,6 +2498,18 @@ export const map: {
|
|
|
1923
2498
|
/**
|
|
1924
2499
|
* Statefully maps over the elements of this stream to produce new elements.
|
|
1925
2500
|
*
|
|
2501
|
+
* @example
|
|
2502
|
+
* import { Effect, Stream } from "effect"
|
|
2503
|
+
*
|
|
2504
|
+
* const runningTotal = (stream: Stream.Stream<number>): Stream.Stream<number> =>
|
|
2505
|
+
* stream.pipe(Stream.mapAccum(0, (s, a) => [s + a, s + a]))
|
|
2506
|
+
*
|
|
2507
|
+
* // input: 0, 1, 2, 3, 4, 5, 6
|
|
2508
|
+
* // Effect.runPromise(Stream.runCollect(runningTotal(Stream.range(0, 6)))).then(
|
|
2509
|
+
* // console.log
|
|
2510
|
+
* // )
|
|
2511
|
+
* // { _id: "Chunk", values: [ 0, 1, 3, 6, 10, 15, 21 ] }
|
|
2512
|
+
*
|
|
1926
2513
|
* @since 2.0.0
|
|
1927
2514
|
* @category mapping
|
|
1928
2515
|
*/
|
|
@@ -1998,6 +2585,17 @@ export const mapChunksEffect: {
|
|
|
1998
2585
|
* Maps each element to an iterable, and flattens the iterables into the
|
|
1999
2586
|
* output of this stream.
|
|
2000
2587
|
*
|
|
2588
|
+
* @example
|
|
2589
|
+
* import { Effect, Stream } from "effect"
|
|
2590
|
+
*
|
|
2591
|
+
* const numbers = Stream.make("1-2-3", "4-5", "6").pipe(
|
|
2592
|
+
* Stream.mapConcat((s) => s.split("-")),
|
|
2593
|
+
* Stream.map((s) => parseInt(s))
|
|
2594
|
+
* )
|
|
2595
|
+
*
|
|
2596
|
+
* // Effect.runPromise(Stream.runCollect(numbers)).then(console.log)
|
|
2597
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5, 6 ] }
|
|
2598
|
+
*
|
|
2001
2599
|
* @since 2.0.0
|
|
2002
2600
|
* @category mapping
|
|
2003
2601
|
*/
|
|
@@ -2055,6 +2653,16 @@ export const mapConcatEffect: {
|
|
|
2055
2653
|
/**
|
|
2056
2654
|
* Maps over elements of the stream with the specified effectful function.
|
|
2057
2655
|
*
|
|
2656
|
+
* @example
|
|
2657
|
+
* import { Effect, Random, Stream } from "effect"
|
|
2658
|
+
*
|
|
2659
|
+
* const stream = Stream.make(10, 20, 30).pipe(
|
|
2660
|
+
* Stream.mapEffect((n) => Random.nextIntBetween(0, n))
|
|
2661
|
+
* )
|
|
2662
|
+
*
|
|
2663
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2664
|
+
* // Example Output: { _id: 'Chunk', values: [ 7, 19, 8 ] }
|
|
2665
|
+
*
|
|
2058
2666
|
* @since 2.0.0
|
|
2059
2667
|
* @category mapping
|
|
2060
2668
|
*/
|
|
@@ -2111,6 +2719,21 @@ export const mapErrorCause: {
|
|
|
2111
2719
|
* New produced stream will terminate when both specified stream terminate if
|
|
2112
2720
|
* no termination strategy is specified.
|
|
2113
2721
|
*
|
|
2722
|
+
* @example
|
|
2723
|
+
* import { Effect, Schedule, Stream } from "effect"
|
|
2724
|
+
*
|
|
2725
|
+
* const s1 = Stream.make(1, 2, 3).pipe(
|
|
2726
|
+
* Stream.schedule(Schedule.spaced("100 millis"))
|
|
2727
|
+
* )
|
|
2728
|
+
* const s2 = Stream.make(4, 5, 6).pipe(
|
|
2729
|
+
* Stream.schedule(Schedule.spaced("200 millis"))
|
|
2730
|
+
* )
|
|
2731
|
+
*
|
|
2732
|
+
* const stream = Stream.merge(s1, s2)
|
|
2733
|
+
*
|
|
2734
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2735
|
+
* // { _id: 'Chunk', values: [ 1, 4, 2, 3, 5, 6 ] }
|
|
2736
|
+
*
|
|
2114
2737
|
* @since 2.0.0
|
|
2115
2738
|
* @category utils
|
|
2116
2739
|
*/
|
|
@@ -2157,6 +2780,24 @@ export const mergeAll: {
|
|
|
2157
2780
|
* New produced stream will terminate when both specified stream terminate if
|
|
2158
2781
|
* no termination strategy is specified.
|
|
2159
2782
|
*
|
|
2783
|
+
* @example
|
|
2784
|
+
* import { Effect, Schedule, Stream } from "effect"
|
|
2785
|
+
*
|
|
2786
|
+
* const s1 = Stream.make("1", "2", "3").pipe(
|
|
2787
|
+
* Stream.schedule(Schedule.spaced("100 millis"))
|
|
2788
|
+
* )
|
|
2789
|
+
* const s2 = Stream.make(4.1, 5.3, 6.2).pipe(
|
|
2790
|
+
* Stream.schedule(Schedule.spaced("200 millis"))
|
|
2791
|
+
* )
|
|
2792
|
+
*
|
|
2793
|
+
* const stream = Stream.mergeWith(s1, s2, {
|
|
2794
|
+
* onSelf: (s) => parseInt(s),
|
|
2795
|
+
* onOther: (n) => Math.floor(n)
|
|
2796
|
+
* })
|
|
2797
|
+
*
|
|
2798
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
2799
|
+
* // { _id: 'Chunk', values: [ 1, 4, 2, 3, 5, 6 ] }
|
|
2800
|
+
*
|
|
2160
2801
|
* @since 2.0.0
|
|
2161
2802
|
* @category utils
|
|
2162
2803
|
*/
|
|
@@ -2380,6 +3021,17 @@ export const orElseSucceed: {
|
|
|
2380
3021
|
* than the unfolding of the state. This is useful for embedding paginated
|
|
2381
3022
|
* APIs, hence the name.
|
|
2382
3023
|
*
|
|
3024
|
+
* @example
|
|
3025
|
+
* import { Effect, Option, Stream } from "effect"
|
|
3026
|
+
*
|
|
3027
|
+
* const stream = Stream.paginate(0, (n) => [
|
|
3028
|
+
* n,
|
|
3029
|
+
* n < 3 ? Option.some(n + 1) : Option.none()
|
|
3030
|
+
* ])
|
|
3031
|
+
*
|
|
3032
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
3033
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, 3 ] }
|
|
3034
|
+
*
|
|
2383
3035
|
* @since 2.0.0
|
|
2384
3036
|
* @category constructors
|
|
2385
3037
|
*/
|
|
@@ -2430,6 +3082,25 @@ export const paginateEffect: <S, A, E, R>(
|
|
|
2430
3082
|
* evaluated to false. The faster stream may advance by up to buffer elements
|
|
2431
3083
|
* further than the slower one.
|
|
2432
3084
|
*
|
|
3085
|
+
* @example
|
|
3086
|
+
* import { Effect, Stream } from "effect"
|
|
3087
|
+
*
|
|
3088
|
+
* const partition = Stream.range(1, 10).pipe(
|
|
3089
|
+
* Stream.partition((n) => n % 2 === 0, { bufferSize: 5 })
|
|
3090
|
+
* )
|
|
3091
|
+
*
|
|
3092
|
+
* const program = Effect.scoped(
|
|
3093
|
+
* Effect.gen(function*() {
|
|
3094
|
+
* const [evens, odds] = yield* partition
|
|
3095
|
+
* console.log(yield* Stream.runCollect(evens))
|
|
3096
|
+
* console.log(yield* Stream.runCollect(odds))
|
|
3097
|
+
* })
|
|
3098
|
+
* )
|
|
3099
|
+
*
|
|
3100
|
+
* // Effect.runPromise(program)
|
|
3101
|
+
* // { _id: 'Chunk', values: [ 2, 4, 6, 8, 10 ] }
|
|
3102
|
+
* // { _id: 'Chunk', values: [ 1, 3, 5, 7, 9 ] }
|
|
3103
|
+
*
|
|
2433
3104
|
* @since 2.0.0
|
|
2434
3105
|
* @category utils
|
|
2435
3106
|
*/
|
|
@@ -2462,6 +3133,28 @@ export const partition: {
|
|
|
2462
3133
|
* Split a stream by an effectful predicate. The faster stream may advance by
|
|
2463
3134
|
* up to buffer elements further than the slower one.
|
|
2464
3135
|
*
|
|
3136
|
+
* @example
|
|
3137
|
+
* import { Effect, Either, Stream } from "effect"
|
|
3138
|
+
*
|
|
3139
|
+
* const partition = Stream.range(1, 9).pipe(
|
|
3140
|
+
* Stream.partitionEither(
|
|
3141
|
+
* (n) => Effect.succeed(n % 2 === 0 ? Either.left(n) : Either.right(n)),
|
|
3142
|
+
* { bufferSize: 5 }
|
|
3143
|
+
* )
|
|
3144
|
+
* )
|
|
3145
|
+
*
|
|
3146
|
+
* const program = Effect.scoped(
|
|
3147
|
+
* Effect.gen(function*() {
|
|
3148
|
+
* const [evens, odds] = yield* partition
|
|
3149
|
+
* console.log(yield* Stream.runCollect(evens))
|
|
3150
|
+
* console.log(yield* Stream.runCollect(odds))
|
|
3151
|
+
* })
|
|
3152
|
+
* )
|
|
3153
|
+
*
|
|
3154
|
+
* // Effect.runPromise(program)
|
|
3155
|
+
* // { _id: 'Chunk', values: [ 2, 4, 6, 8 ] }
|
|
3156
|
+
* // { _id: 'Chunk', values: [ 1, 3, 5, 7, 9 ] }
|
|
3157
|
+
*
|
|
2465
3158
|
* @since 2.0.0
|
|
2466
3159
|
* @category utils
|
|
2467
3160
|
*/
|
|
@@ -2667,6 +3360,15 @@ export const provideSomeLayer: {
|
|
|
2667
3360
|
/**
|
|
2668
3361
|
* Constructs a stream from a range of integers, including both endpoints.
|
|
2669
3362
|
*
|
|
3363
|
+
* @example
|
|
3364
|
+
* import { Effect, Stream } from "effect"
|
|
3365
|
+
*
|
|
3366
|
+
* // A Stream with a range of numbers from 1 to 5
|
|
3367
|
+
* const stream = Stream.range(1, 5)
|
|
3368
|
+
*
|
|
3369
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
3370
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
|
|
3371
|
+
*
|
|
2670
3372
|
* @since 2.0.0
|
|
2671
3373
|
* @category constructors
|
|
2672
3374
|
*/
|
|
@@ -2714,6 +3416,14 @@ export const refineOrDieWith: {
|
|
|
2714
3416
|
* Repeats the entire stream using the specified schedule. The stream will
|
|
2715
3417
|
* execute normally, and then repeat again according to the provided schedule.
|
|
2716
3418
|
*
|
|
3419
|
+
* @example
|
|
3420
|
+
* import { Effect, Schedule, Stream } from "effect"
|
|
3421
|
+
*
|
|
3422
|
+
* const stream = Stream.repeat(Stream.succeed(1), Schedule.forever)
|
|
3423
|
+
*
|
|
3424
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
|
|
3425
|
+
* // { _id: 'Chunk', values: [ 1, 1, 1, 1, 1 ] }
|
|
3426
|
+
*
|
|
2717
3427
|
* @since 2.0.0
|
|
2718
3428
|
* @category utils
|
|
2719
3429
|
*/
|
|
@@ -2726,6 +3436,14 @@ export const repeat: {
|
|
|
2726
3436
|
* Creates a stream from an effect producing a value of type `A` which repeats
|
|
2727
3437
|
* forever.
|
|
2728
3438
|
*
|
|
3439
|
+
* @example
|
|
3440
|
+
* import { Effect, Random, Stream } from "effect"
|
|
3441
|
+
*
|
|
3442
|
+
* const stream = Stream.repeatEffect(Random.nextInt)
|
|
3443
|
+
*
|
|
3444
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
|
|
3445
|
+
* // Example Output: { _id: 'Chunk', values: [ 3891571149, 4239494205, 2352981603, 2339111046, 1488052210 ] }
|
|
3446
|
+
*
|
|
2729
3447
|
* @since 2.0.0
|
|
2730
3448
|
* @category constructors
|
|
2731
3449
|
*/
|
|
@@ -2756,6 +3474,22 @@ export const repeatEffectChunkOption: <A, E, R>(
|
|
|
2756
3474
|
* Creates a stream from an effect producing values of type `A` until it fails
|
|
2757
3475
|
* with `None`.
|
|
2758
3476
|
*
|
|
3477
|
+
* @example
|
|
3478
|
+
* // In this example, we're draining an Iterator to create a stream from it
|
|
3479
|
+
* import { Stream, Effect, Option } from "effect"
|
|
3480
|
+
*
|
|
3481
|
+
* const drainIterator = <A>(it: Iterator<A>): Stream.Stream<A> =>
|
|
3482
|
+
* Stream.repeatEffectOption(
|
|
3483
|
+
* Effect.sync(() => it.next()).pipe(
|
|
3484
|
+
* Effect.andThen((res) => {
|
|
3485
|
+
* if (res.done) {
|
|
3486
|
+
* return Effect.fail(Option.none())
|
|
3487
|
+
* }
|
|
3488
|
+
* return Effect.succeed(res.value)
|
|
3489
|
+
* })
|
|
3490
|
+
* )
|
|
3491
|
+
* )
|
|
3492
|
+
*
|
|
2759
3493
|
* @since 2.0.0
|
|
2760
3494
|
* @category constructors
|
|
2761
3495
|
*/
|
|
@@ -2837,6 +3571,14 @@ export const repeatElementsWith: {
|
|
|
2837
3571
|
/**
|
|
2838
3572
|
* Repeats the provided value infinitely.
|
|
2839
3573
|
*
|
|
3574
|
+
* @example
|
|
3575
|
+
* import { Effect, Stream } from "effect"
|
|
3576
|
+
*
|
|
3577
|
+
* const stream = Stream.repeatValue(0)
|
|
3578
|
+
*
|
|
3579
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
|
|
3580
|
+
* // { _id: 'Chunk', values: [ 0, 0, 0, 0, 0 ] }
|
|
3581
|
+
*
|
|
2840
3582
|
* @since 2.0.0
|
|
2841
3583
|
* @category constructors
|
|
2842
3584
|
*/
|
|
@@ -3276,6 +4018,14 @@ export const runSum: <E, R>(self: Stream<number, E, R>) => Effect.Effect<number,
|
|
|
3276
4018
|
* Statefully maps over the elements of this stream to produce all
|
|
3277
4019
|
* intermediate results of type `S` given an initial S.
|
|
3278
4020
|
*
|
|
4021
|
+
* @example
|
|
4022
|
+
* import { Effect, Stream } from "effect"
|
|
4023
|
+
*
|
|
4024
|
+
* const stream = Stream.range(1, 6).pipe(Stream.scan(0, (a, b) => a + b))
|
|
4025
|
+
*
|
|
4026
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4027
|
+
* // { _id: 'Chunk', values: [ 0, 1, 3, 6, 10, 15, 21 ] }
|
|
4028
|
+
*
|
|
3279
4029
|
* @since 2.0.0
|
|
3280
4030
|
* @category utils
|
|
3281
4031
|
*/
|
|
@@ -3372,6 +4122,24 @@ export const scheduleWith: {
|
|
|
3372
4122
|
/**
|
|
3373
4123
|
* Creates a single-valued stream from a scoped resource.
|
|
3374
4124
|
*
|
|
4125
|
+
* @example
|
|
4126
|
+
* import { Console, Effect, Stream } from "effect"
|
|
4127
|
+
*
|
|
4128
|
+
* // Creating a single-valued stream from a scoped resource
|
|
4129
|
+
* const stream = Stream.scoped(
|
|
4130
|
+
* Effect.acquireUseRelease(
|
|
4131
|
+
* Console.log("acquire"),
|
|
4132
|
+
* () => Console.log("use"),
|
|
4133
|
+
* () => Console.log("release")
|
|
4134
|
+
* )
|
|
4135
|
+
* )
|
|
4136
|
+
*
|
|
4137
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4138
|
+
* // acquire
|
|
4139
|
+
* // use
|
|
4140
|
+
* // release
|
|
4141
|
+
* // { _id: 'Chunk', values: [ undefined ] }
|
|
4142
|
+
*
|
|
3375
4143
|
* @since 2.0.0
|
|
3376
4144
|
* @category constructors
|
|
3377
4145
|
*/
|
|
@@ -3488,6 +4256,15 @@ export const splitLines: <E, R>(self: Stream<string, E, R>) => Stream<string, E,
|
|
|
3488
4256
|
/**
|
|
3489
4257
|
* Creates a single-valued pure stream.
|
|
3490
4258
|
*
|
|
4259
|
+
* @example
|
|
4260
|
+
* import { Effect, Stream } from "effect"
|
|
4261
|
+
*
|
|
4262
|
+
* // A Stream with a single number
|
|
4263
|
+
* const stream = Stream.succeed(3)
|
|
4264
|
+
*
|
|
4265
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4266
|
+
* // { _id: 'Chunk', values: [ 3 ] }
|
|
4267
|
+
*
|
|
3491
4268
|
* @since 2.0.0
|
|
3492
4269
|
* @category constructors
|
|
3493
4270
|
*/
|
|
@@ -3512,6 +4289,14 @@ export const suspend: <A, E, R>(stream: LazyArg<Stream<A, E, R>>) => Stream<A, E
|
|
|
3512
4289
|
/**
|
|
3513
4290
|
* Takes the specified number of elements from this stream.
|
|
3514
4291
|
*
|
|
4292
|
+
* @example
|
|
4293
|
+
* import { Effect, Stream } from "effect"
|
|
4294
|
+
*
|
|
4295
|
+
* const stream = Stream.take(Stream.iterate(0, (n) => n + 1), 5)
|
|
4296
|
+
*
|
|
4297
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4298
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
|
|
4299
|
+
*
|
|
3515
4300
|
* @since 2.0.0
|
|
3516
4301
|
* @category utils
|
|
3517
4302
|
*/
|
|
@@ -3523,6 +4308,14 @@ export const take: {
|
|
|
3523
4308
|
/**
|
|
3524
4309
|
* Takes the last specified number of elements from this stream.
|
|
3525
4310
|
*
|
|
4311
|
+
* @example
|
|
4312
|
+
* import { Effect, Stream } from "effect"
|
|
4313
|
+
*
|
|
4314
|
+
* const stream = Stream.takeRight(Stream.make(1, 2, 3, 4, 5, 6), 3)
|
|
4315
|
+
*
|
|
4316
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4317
|
+
* // { _id: 'Chunk', values: [ 4, 5, 6 ] }
|
|
4318
|
+
*
|
|
3526
4319
|
* @since 2.0.0
|
|
3527
4320
|
* @category utils
|
|
3528
4321
|
*/
|
|
@@ -3535,6 +4328,14 @@ export const takeRight: {
|
|
|
3535
4328
|
* Takes all elements of the stream until the specified predicate evaluates to
|
|
3536
4329
|
* `true`.
|
|
3537
4330
|
*
|
|
4331
|
+
* @example
|
|
4332
|
+
* import { Effect, Stream } from "effect"
|
|
4333
|
+
*
|
|
4334
|
+
* const stream = Stream.takeUntil(Stream.iterate(0, (n) => n + 1), (n) => n === 4)
|
|
4335
|
+
*
|
|
4336
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4337
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
|
|
4338
|
+
*
|
|
3538
4339
|
* @since 2.0.0
|
|
3539
4340
|
* @category utils
|
|
3540
4341
|
*/
|
|
@@ -3564,6 +4365,14 @@ export const takeUntilEffect: {
|
|
|
3564
4365
|
* Takes all elements of the stream for as long as the specified predicate
|
|
3565
4366
|
* evaluates to `true`.
|
|
3566
4367
|
*
|
|
4368
|
+
* @example
|
|
4369
|
+
* import { Effect, Stream } from "effect"
|
|
4370
|
+
*
|
|
4371
|
+
* const stream = Stream.takeWhile(Stream.iterate(0, (n) => n + 1), (n) => n < 5)
|
|
4372
|
+
*
|
|
4373
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4374
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4 ] }
|
|
4375
|
+
*
|
|
3567
4376
|
* @since 2.0.0
|
|
3568
4377
|
* @category utils
|
|
3569
4378
|
*/
|
|
@@ -3577,6 +4386,24 @@ export const takeWhile: {
|
|
|
3577
4386
|
/**
|
|
3578
4387
|
* Adds an effect to consumption of every element of the stream.
|
|
3579
4388
|
*
|
|
4389
|
+
* @example
|
|
4390
|
+
* import { Console, Effect, Stream } from "effect"
|
|
4391
|
+
*
|
|
4392
|
+
* const stream = Stream.make(1, 2, 3).pipe(
|
|
4393
|
+
* Stream.tap((n) => Console.log(`before mapping: ${n}`)),
|
|
4394
|
+
* Stream.map((n) => n * 2),
|
|
4395
|
+
* Stream.tap((n) => Console.log(`after mapping: ${n}`))
|
|
4396
|
+
* )
|
|
4397
|
+
*
|
|
4398
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4399
|
+
* // before mapping: 1
|
|
4400
|
+
* // after mapping: 2
|
|
4401
|
+
* // before mapping: 2
|
|
4402
|
+
* // after mapping: 4
|
|
4403
|
+
* // before mapping: 3
|
|
4404
|
+
* // after mapping: 6
|
|
4405
|
+
* // { _id: 'Chunk', values: [ 2, 4, 6 ] }
|
|
4406
|
+
*
|
|
3580
4407
|
* @since 2.0.0
|
|
3581
4408
|
* @category sequencing
|
|
3582
4409
|
*/
|
|
@@ -3657,7 +4484,7 @@ export const tapSink: {
|
|
|
3657
4484
|
* parameters using the token bucket algorithm. Allows for burst in the
|
|
3658
4485
|
* processing of elements by allowing the token bucket to accumulate tokens up
|
|
3659
4486
|
* to a `units + burst` threshold. The weight of each chunk is determined by
|
|
3660
|
-
* the `
|
|
4487
|
+
* the `cost` function.
|
|
3661
4488
|
*
|
|
3662
4489
|
* If using the "enforce" strategy, chunks that do not meet the bandwidth
|
|
3663
4490
|
* constraints are dropped. If using the "shape" strategy, chunks are delayed
|
|
@@ -3665,6 +4492,43 @@ export const tapSink: {
|
|
|
3665
4492
|
*
|
|
3666
4493
|
* Defaults to the "shape" strategy.
|
|
3667
4494
|
*
|
|
4495
|
+
* @example
|
|
4496
|
+
* import { Chunk, Effect, Schedule, Stream } from "effect"
|
|
4497
|
+
*
|
|
4498
|
+
* let last = Date.now()
|
|
4499
|
+
* const log = (message: string) =>
|
|
4500
|
+
* Effect.sync(() => {
|
|
4501
|
+
* const end = Date.now()
|
|
4502
|
+
* console.log(`${message} after ${end - last}ms`)
|
|
4503
|
+
* last = end
|
|
4504
|
+
* })
|
|
4505
|
+
*
|
|
4506
|
+
* const stream = Stream.fromSchedule(Schedule.spaced("50 millis")).pipe(
|
|
4507
|
+
* Stream.take(6),
|
|
4508
|
+
* Stream.tap((n) => log(`Received ${n}`)),
|
|
4509
|
+
* Stream.throttle({
|
|
4510
|
+
* cost: Chunk.size,
|
|
4511
|
+
* duration: "100 millis",
|
|
4512
|
+
* units: 1
|
|
4513
|
+
* }),
|
|
4514
|
+
* Stream.tap((n) => log(`> Emitted ${n}`))
|
|
4515
|
+
* )
|
|
4516
|
+
*
|
|
4517
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4518
|
+
* // Received 0 after 56ms
|
|
4519
|
+
* // > Emitted 0 after 0ms
|
|
4520
|
+
* // Received 1 after 52ms
|
|
4521
|
+
* // > Emitted 1 after 48ms
|
|
4522
|
+
* // Received 2 after 52ms
|
|
4523
|
+
* // > Emitted 2 after 49ms
|
|
4524
|
+
* // Received 3 after 52ms
|
|
4525
|
+
* // > Emitted 3 after 48ms
|
|
4526
|
+
* // Received 4 after 52ms
|
|
4527
|
+
* // > Emitted 4 after 47ms
|
|
4528
|
+
* // Received 5 after 52ms
|
|
4529
|
+
* // > Emitted 5 after 49ms
|
|
4530
|
+
* // { _id: 'Chunk', values: [ 0, 1, 2, 3, 4, 5 ] }
|
|
4531
|
+
*
|
|
3668
4532
|
* @since 2.0.0
|
|
3669
4533
|
* @category utils
|
|
3670
4534
|
*/
|
|
@@ -3731,6 +4595,27 @@ export const throttleEffect: {
|
|
|
3731
4595
|
/**
|
|
3732
4596
|
* A stream that emits void values spaced by the specified duration.
|
|
3733
4597
|
*
|
|
4598
|
+
* @example
|
|
4599
|
+
* import { Effect, Stream } from "effect"
|
|
4600
|
+
*
|
|
4601
|
+
* let last = Date.now()
|
|
4602
|
+
* const log = (message: string) =>
|
|
4603
|
+
* Effect.sync(() => {
|
|
4604
|
+
* const end = Date.now()
|
|
4605
|
+
* console.log(`${message} after ${end - last}ms`)
|
|
4606
|
+
* last = end
|
|
4607
|
+
* })
|
|
4608
|
+
*
|
|
4609
|
+
* const stream = Stream.tick("1 seconds").pipe(Stream.tap(() => log("tick")))
|
|
4610
|
+
*
|
|
4611
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
|
|
4612
|
+
* // tick after 4ms
|
|
4613
|
+
* // tick after 1003ms
|
|
4614
|
+
* // tick after 1001ms
|
|
4615
|
+
* // tick after 1002ms
|
|
4616
|
+
* // tick after 1002ms
|
|
4617
|
+
* // { _id: 'Chunk', values: [ undefined, undefined, undefined, undefined, undefined ] }
|
|
4618
|
+
*
|
|
3734
4619
|
* @since 2.0.0
|
|
3735
4620
|
* @category constructors
|
|
3736
4621
|
*/
|
|
@@ -3820,6 +4705,32 @@ export const toPubSub: {
|
|
|
3820
4705
|
* finished, or with Some error if it fails, otherwise it returns a chunk of
|
|
3821
4706
|
* the stream's output.
|
|
3822
4707
|
*
|
|
4708
|
+
* @example
|
|
4709
|
+
* import { Effect, Stream } from "effect"
|
|
4710
|
+
*
|
|
4711
|
+
* // Simulate a chunked stream
|
|
4712
|
+
* const stream = Stream.fromIterable([1, 2, 3, 4, 5]).pipe(Stream.rechunk(2))
|
|
4713
|
+
*
|
|
4714
|
+
* const program = Effect.gen(function*() {
|
|
4715
|
+
* // Create an effect to get data chunks from the stream
|
|
4716
|
+
* const getChunk = yield* Stream.toPull(stream)
|
|
4717
|
+
*
|
|
4718
|
+
* // Continuously fetch and process chunks
|
|
4719
|
+
* while (true) {
|
|
4720
|
+
* const chunk = yield* getChunk
|
|
4721
|
+
* console.log(chunk)
|
|
4722
|
+
* }
|
|
4723
|
+
* })
|
|
4724
|
+
*
|
|
4725
|
+
* // Effect.runPromise(Effect.scoped(program)).then(console.log, console.error)
|
|
4726
|
+
* // { _id: 'Chunk', values: [ 1, 2 ] }
|
|
4727
|
+
* // { _id: 'Chunk', values: [ 3, 4 ] }
|
|
4728
|
+
* // { _id: 'Chunk', values: [ 5 ] }
|
|
4729
|
+
* // (FiberFailure) Error: {
|
|
4730
|
+
* // "_id": "Option",
|
|
4731
|
+
* // "_tag": "None"
|
|
4732
|
+
* // }
|
|
4733
|
+
*
|
|
3823
4734
|
* @since 2.0.0
|
|
3824
4735
|
* @category destructors
|
|
3825
4736
|
*/
|
|
@@ -3947,6 +4858,14 @@ export const transduce: {
|
|
|
3947
4858
|
/**
|
|
3948
4859
|
* Creates a stream by peeling off the "layers" of a value of type `S`.
|
|
3949
4860
|
*
|
|
4861
|
+
* @example
|
|
4862
|
+
* import { Effect, Option, Stream } from "effect"
|
|
4863
|
+
*
|
|
4864
|
+
* const stream = Stream.unfold(1, (n) => Option.some([n, n + 1]))
|
|
4865
|
+
*
|
|
4866
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
|
|
4867
|
+
* // { _id: 'Chunk', values: [ 1, 2, 3, 4, 5 ] }
|
|
4868
|
+
*
|
|
3950
4869
|
* @since 2.0.0
|
|
3951
4870
|
* @category constructors
|
|
3952
4871
|
*/
|
|
@@ -3979,6 +4898,17 @@ export const unfoldChunkEffect: <S, A, E, R>(
|
|
|
3979
4898
|
* Creates a stream by effectfully peeling off the "layers" of a value of type
|
|
3980
4899
|
* `S`.
|
|
3981
4900
|
*
|
|
4901
|
+
* @example
|
|
4902
|
+
* import { Effect, Option, Random, Stream } from "effect"
|
|
4903
|
+
*
|
|
4904
|
+
* const stream = Stream.unfoldEffect(1, (n) =>
|
|
4905
|
+
* Random.nextBoolean.pipe(
|
|
4906
|
+
* Effect.map((b) => (b ? Option.some([n, -n]) : Option.some([n, n])))
|
|
4907
|
+
* ))
|
|
4908
|
+
*
|
|
4909
|
+
* // Effect.runPromise(Stream.runCollect(stream.pipe(Stream.take(5)))).then(console.log)
|
|
4910
|
+
* // { _id: 'Chunk', values: [ 1, -1, -1, -1, -1 ] }
|
|
4911
|
+
*
|
|
3982
4912
|
* @since 2.0.0
|
|
3983
4913
|
* @category constructors
|
|
3984
4914
|
*/
|
|
@@ -3992,6 +4922,14 @@ export {
|
|
|
3992
4922
|
/**
|
|
3993
4923
|
* A stream that contains a single `void` value.
|
|
3994
4924
|
*
|
|
4925
|
+
* @example
|
|
4926
|
+
* import { Effect, Stream } from "effect"
|
|
4927
|
+
*
|
|
4928
|
+
* const stream = Stream.void
|
|
4929
|
+
*
|
|
4930
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
4931
|
+
* // { _id: 'Chunk', values: [ undefined ] }
|
|
4932
|
+
*
|
|
3995
4933
|
* @since 2.0.0
|
|
3996
4934
|
* @category constructors
|
|
3997
4935
|
*/
|
|
@@ -4112,6 +5050,18 @@ export const withSpan: {
|
|
|
4112
5050
|
*
|
|
4113
5051
|
* The new stream will end when one of the sides ends.
|
|
4114
5052
|
*
|
|
5053
|
+
* @example
|
|
5054
|
+
* import { Effect, Stream } from "effect"
|
|
5055
|
+
*
|
|
5056
|
+
* // We create two streams and zip them together.
|
|
5057
|
+
* const stream = Stream.zip(
|
|
5058
|
+
* Stream.make(1, 2, 3, 4, 5, 6),
|
|
5059
|
+
* Stream.make("a", "b", "c")
|
|
5060
|
+
* )
|
|
5061
|
+
*
|
|
5062
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
5063
|
+
* // { _id: 'Chunk', values: [ [ 1, 'a' ], [ 2, 'b' ], [ 3, 'c' ] ] }
|
|
5064
|
+
*
|
|
4115
5065
|
* @since 2.0.0
|
|
4116
5066
|
* @category zipping
|
|
4117
5067
|
*/
|
|
@@ -4146,6 +5096,18 @@ export const zipFlatten: {
|
|
|
4146
5096
|
* The defaults `defaultLeft` and `defaultRight` will be used if the streams
|
|
4147
5097
|
* have different lengths and one of the streams has ended before the other.
|
|
4148
5098
|
*
|
|
5099
|
+
* @example
|
|
5100
|
+
* import { Effect, Stream } from "effect"
|
|
5101
|
+
*
|
|
5102
|
+
* const stream = Stream.zipAll(Stream.make(1, 2, 3, 4, 5, 6), {
|
|
5103
|
+
* other: Stream.make("a", "b", "c"),
|
|
5104
|
+
* defaultSelf: 0,
|
|
5105
|
+
* defaultOther: "x"
|
|
5106
|
+
* })
|
|
5107
|
+
*
|
|
5108
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
5109
|
+
* // { _id: "Chunk", values: [ [ 1, "a" ], [ 2, "b" ], [ 3, "c" ], [ 4, "x" ], [ 5, "x" ], [ 6, "x" ] ] }
|
|
5110
|
+
*
|
|
4149
5111
|
* @since 2.0.0
|
|
4150
5112
|
* @category zipping
|
|
4151
5113
|
*/
|
|
@@ -4331,6 +5293,19 @@ export const zipAllSortedByKeyWith: {
|
|
|
4331
5293
|
* The functions `left` and `right` will be used if the streams have different
|
|
4332
5294
|
* lengths and one of the streams has ended before the other.
|
|
4333
5295
|
*
|
|
5296
|
+
* @example
|
|
5297
|
+
* import { Effect, Stream } from "effect"
|
|
5298
|
+
*
|
|
5299
|
+
* const stream = Stream.zipAllWith(Stream.make(1, 2, 3, 4, 5, 6), {
|
|
5300
|
+
* other: Stream.make("a", "b", "c"),
|
|
5301
|
+
* onSelf: (n) => [n, "x"],
|
|
5302
|
+
* onOther: (s) => [0, s],
|
|
5303
|
+
* onBoth: (n, s) => [n - s.length, s]
|
|
5304
|
+
* })
|
|
5305
|
+
*
|
|
5306
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
5307
|
+
* // { _id: "Chunk", values: [ [ 0, "a" ], [ 1, "b" ], [ 2, "c" ], [ 4, "x" ], [ 5, "x" ], [ 6, "x" ] ] }
|
|
5308
|
+
*
|
|
4334
5309
|
* @since 2.0.0
|
|
4335
5310
|
* @category zipping
|
|
4336
5311
|
*/
|
|
@@ -4363,6 +5338,22 @@ export const zipAllWith: {
|
|
|
4363
5338
|
* that emitted elements that are not the last value in chunks will never be
|
|
4364
5339
|
* used for zipping.
|
|
4365
5340
|
*
|
|
5341
|
+
* @example
|
|
5342
|
+
* import { Effect, Schedule, Stream } from "effect"
|
|
5343
|
+
*
|
|
5344
|
+
* const s1 = Stream.make(1, 2, 3).pipe(
|
|
5345
|
+
* Stream.schedule(Schedule.spaced("1 second"))
|
|
5346
|
+
* )
|
|
5347
|
+
*
|
|
5348
|
+
* const s2 = Stream.make("a", "b", "c", "d").pipe(
|
|
5349
|
+
* Stream.schedule(Schedule.spaced("500 millis"))
|
|
5350
|
+
* )
|
|
5351
|
+
*
|
|
5352
|
+
* const stream = Stream.zipLatest(s1, s2)
|
|
5353
|
+
*
|
|
5354
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
5355
|
+
* // { _id: "Chunk", values: [ [ 1, "a" ], [ 1, "b" ], [ 2, "b" ], [ 2, "c" ], [ 2, "d" ], [ 3, "d" ] ] }
|
|
5356
|
+
*
|
|
4366
5357
|
* @since 2.0.0
|
|
4367
5358
|
* @category zipping
|
|
4368
5359
|
*/
|
|
@@ -4388,7 +5379,7 @@ export const zipLatest: {
|
|
|
4388
5379
|
* Stream.fromSchedule(Schedule.spaced('4 millis')),
|
|
4389
5380
|
* ).pipe(Stream.take(6), Stream.tap(Console.log))
|
|
4390
5381
|
*
|
|
4391
|
-
* Effect.runPromise(Stream.runDrain(stream))
|
|
5382
|
+
* // Effect.runPromise(Stream.runDrain(stream))
|
|
4392
5383
|
* // Output:
|
|
4393
5384
|
* // [ 0, 0, 0 ]
|
|
4394
5385
|
* // [ 1, 0, 0 ]
|
|
@@ -4468,6 +5459,19 @@ export const zipRight: {
|
|
|
4468
5459
|
*
|
|
4469
5460
|
* The new stream will end when one of the sides ends.
|
|
4470
5461
|
*
|
|
5462
|
+
* @example
|
|
5463
|
+
* import { Effect, Stream } from "effect"
|
|
5464
|
+
*
|
|
5465
|
+
* // We create two streams and zip them with custom logic.
|
|
5466
|
+
* const stream = Stream.zipWith(
|
|
5467
|
+
* Stream.make(1, 2, 3, 4, 5, 6),
|
|
5468
|
+
* Stream.make("a", "b", "c"),
|
|
5469
|
+
* (n, s) => [n - s.length, s]
|
|
5470
|
+
* )
|
|
5471
|
+
*
|
|
5472
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then(console.log)
|
|
5473
|
+
* // { _id: 'Chunk', values: [ [ 0, 'a' ], [ 1, 'b' ], [ 2, 'c' ] ] }
|
|
5474
|
+
*
|
|
4471
5475
|
* @since 2.0.0
|
|
4472
5476
|
* @category zipping
|
|
4473
5477
|
*/
|
|
@@ -4513,6 +5517,19 @@ export const zipWithChunks: {
|
|
|
4513
5517
|
/**
|
|
4514
5518
|
* Zips each element with the next element if present.
|
|
4515
5519
|
*
|
|
5520
|
+
* @example
|
|
5521
|
+
* import { Chunk, Effect, Stream } from "effect"
|
|
5522
|
+
*
|
|
5523
|
+
* const stream = Stream.zipWithNext(Stream.make(1, 2, 3, 4))
|
|
5524
|
+
*
|
|
5525
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
|
|
5526
|
+
* // [
|
|
5527
|
+
* // [ 1, { _id: 'Option', _tag: 'Some', value: 2 } ],
|
|
5528
|
+
* // [ 2, { _id: 'Option', _tag: 'Some', value: 3 } ],
|
|
5529
|
+
* // [ 3, { _id: 'Option', _tag: 'Some', value: 4 } ],
|
|
5530
|
+
* // [ 4, { _id: 'Option', _tag: 'None' } ]
|
|
5531
|
+
* // ]
|
|
5532
|
+
*
|
|
4516
5533
|
* @since 2.0.0
|
|
4517
5534
|
* @category zipping
|
|
4518
5535
|
*/
|
|
@@ -4522,6 +5539,19 @@ export const zipWithNext: <A, E, R>(self: Stream<A, E, R>) => Stream<[A, Option.
|
|
|
4522
5539
|
* Zips each element with the previous element. Initially accompanied by
|
|
4523
5540
|
* `None`.
|
|
4524
5541
|
*
|
|
5542
|
+
* @example
|
|
5543
|
+
* import { Chunk, Effect, Stream } from "effect"
|
|
5544
|
+
*
|
|
5545
|
+
* const stream = Stream.zipWithPrevious(Stream.make(1, 2, 3, 4))
|
|
5546
|
+
*
|
|
5547
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
|
|
5548
|
+
* // [
|
|
5549
|
+
* // [ { _id: 'Option', _tag: 'None' }, 1 ],
|
|
5550
|
+
* // [ { _id: 'Option', _tag: 'Some', value: 1 }, 2 ],
|
|
5551
|
+
* // [ { _id: 'Option', _tag: 'Some', value: 2 }, 3 ],
|
|
5552
|
+
* // [ { _id: 'Option', _tag: 'Some', value: 3 }, 4 ]
|
|
5553
|
+
* // ]
|
|
5554
|
+
*
|
|
4525
5555
|
* @since 2.0.0
|
|
4526
5556
|
* @category zipping
|
|
4527
5557
|
*/
|
|
@@ -4531,6 +5561,35 @@ export const zipWithPrevious: <A, E, R>(self: Stream<A, E, R>) => Stream<[Option
|
|
|
4531
5561
|
/**
|
|
4532
5562
|
* Zips each element with both the previous and next element.
|
|
4533
5563
|
*
|
|
5564
|
+
* @example
|
|
5565
|
+
* import { Chunk, Effect, Stream } from "effect"
|
|
5566
|
+
*
|
|
5567
|
+
* const stream = Stream.zipWithPreviousAndNext(Stream.make(1, 2, 3, 4))
|
|
5568
|
+
*
|
|
5569
|
+
* // Effect.runPromise(Stream.runCollect(stream)).then((chunk) => console.log(Chunk.toArray(chunk)))
|
|
5570
|
+
* // [
|
|
5571
|
+
* // [
|
|
5572
|
+
* // { _id: 'Option', _tag: 'None' },
|
|
5573
|
+
* // 1,
|
|
5574
|
+
* // { _id: 'Option', _tag: 'Some', value: 2 }
|
|
5575
|
+
* // ],
|
|
5576
|
+
* // [
|
|
5577
|
+
* // { _id: 'Option', _tag: 'Some', value: 1 },
|
|
5578
|
+
* // 2,
|
|
5579
|
+
* // { _id: 'Option', _tag: 'Some', value: 3 }
|
|
5580
|
+
* // ],
|
|
5581
|
+
* // [
|
|
5582
|
+
* // { _id: 'Option', _tag: 'Some', value: 2 },
|
|
5583
|
+
* // 3,
|
|
5584
|
+
* // { _id: 'Option', _tag: 'Some', value: 4 }
|
|
5585
|
+
* // ],
|
|
5586
|
+
* // [
|
|
5587
|
+
* // { _id: 'Option', _tag: 'Some', value: 3 },
|
|
5588
|
+
* // 4,
|
|
5589
|
+
* // { _id: 'Option', _tag: 'None' }
|
|
5590
|
+
* // ]
|
|
5591
|
+
* // ]
|
|
5592
|
+
*
|
|
4534
5593
|
* @since 2.0.0
|
|
4535
5594
|
* @category zipping
|
|
4536
5595
|
*/
|
|
@@ -4541,6 +5600,19 @@ export const zipWithPreviousAndNext: <A, E, R>(
|
|
|
4541
5600
|
/**
|
|
4542
5601
|
* Zips this stream together with the index of elements.
|
|
4543
5602
|
*
|
|
5603
|
+
* @example
|
|
5604
|
+
* import { Effect, Stream } from "effect"
|
|
5605
|
+
*
|
|
5606
|
+
* const stream = Stream.make("Mary", "James", "Robert", "Patricia")
|
|
5607
|
+
*
|
|
5608
|
+
* const indexedStream = Stream.zipWithIndex(stream)
|
|
5609
|
+
*
|
|
5610
|
+
* // Effect.runPromise(Stream.runCollect(indexedStream)).then(console.log)
|
|
5611
|
+
* // {
|
|
5612
|
+
* // _id: 'Chunk',
|
|
5613
|
+
* // values: [ [ 'Mary', 0 ], [ 'James', 1 ], [ 'Robert', 2 ], [ 'Patricia', 3 ] ]
|
|
5614
|
+
* // }
|
|
5615
|
+
*
|
|
4544
5616
|
* @since 2.0.0
|
|
4545
5617
|
* @category zipping
|
|
4546
5618
|
*/
|