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