effect 2.2.5 → 2.3.1
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/RateLimiter/package.json +6 -0
- package/dist/cjs/Cause.js +14 -1
- package/dist/cjs/Cause.js.map +1 -1
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/Clock.js.map +1 -1
- package/dist/cjs/Console.js.map +1 -1
- package/dist/cjs/Context.js +23 -25
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Data.js +3 -3
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/Deferred.js +1 -1
- package/dist/cjs/Deferred.js.map +1 -1
- package/dist/cjs/Effect.js +9 -9
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Effectable.js.map +1 -1
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/Exit.js +2 -2
- package/dist/cjs/Exit.js.map +1 -1
- package/dist/cjs/Fiber.js.map +1 -1
- package/dist/cjs/FiberMap.js +3 -3
- package/dist/cjs/FiberRef.js.map +1 -1
- package/dist/cjs/FiberRefs.js.map +1 -1
- package/dist/cjs/FiberSet.js +3 -3
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/GroupBy.js.map +1 -1
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/LogLevel.js.map +1 -1
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/Metric.js.map +1 -1
- package/dist/cjs/Number.js +20 -1
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/Option.js.map +1 -1
- package/dist/cjs/Pool.js.map +1 -1
- package/dist/cjs/PubSub.js.map +1 -1
- package/dist/cjs/Queue.js.map +1 -1
- package/dist/cjs/Random.js.map +1 -1
- package/dist/cjs/RateLimiter.js +38 -0
- package/dist/cjs/RateLimiter.js.map +1 -0
- package/dist/cjs/ReadonlyRecord.js +45 -9
- package/dist/cjs/ReadonlyRecord.js.map +1 -1
- package/dist/cjs/Ref.js.map +1 -1
- package/dist/cjs/Request.js.map +1 -1
- package/dist/cjs/RequestResolver.js.map +1 -1
- package/dist/cjs/Resource.js.map +1 -1
- package/dist/cjs/Runtime.js +1 -4
- package/dist/cjs/Runtime.js.map +1 -1
- package/dist/cjs/RuntimeFlags.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/Scope.js.map +1 -1
- package/dist/cjs/ScopedRef.js.map +1 -1
- package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/SubscriptionRef.js.map +1 -1
- package/dist/cjs/Supervisor.js.map +1 -1
- package/dist/cjs/SynchronizedRef.js.map +1 -1
- package/dist/cjs/TArray.js.map +1 -1
- package/dist/cjs/TDeferred.js.map +1 -1
- package/dist/cjs/TMap.js.map +1 -1
- package/dist/cjs/TPriorityQueue.js.map +1 -1
- package/dist/cjs/TPubSub.js.map +1 -1
- package/dist/cjs/TQueue.js.map +1 -1
- package/dist/cjs/TRandom.js.map +1 -1
- package/dist/cjs/TReentrantLock.js.map +1 -1
- package/dist/cjs/TRef.js.map +1 -1
- package/dist/cjs/TSemaphore.js.map +1 -1
- package/dist/cjs/TSet.js.map +1 -1
- package/dist/cjs/Take.js +6 -6
- package/dist/cjs/Take.js.map +1 -1
- package/dist/cjs/TestAnnotation.js +10 -13
- package/dist/cjs/TestAnnotation.js.map +1 -1
- package/dist/cjs/TestAnnotations.js +1 -1
- package/dist/cjs/TestAnnotations.js.map +1 -1
- package/dist/cjs/TestClock.js +1 -1
- package/dist/cjs/TestClock.js.map +1 -1
- package/dist/cjs/TestConfig.js +1 -1
- package/dist/cjs/TestConfig.js.map +1 -1
- package/dist/cjs/TestContext.js.map +1 -1
- package/dist/cjs/TestLive.js +1 -1
- package/dist/cjs/TestLive.js.map +1 -1
- package/dist/cjs/TestServices.js.map +1 -1
- package/dist/cjs/TestSized.js +1 -1
- package/dist/cjs/TestSized.js.map +1 -1
- package/dist/cjs/Utils.js +0 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/cache.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel/mergeDecision.js +2 -6
- package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
- package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/internal/channel.js +1 -1
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/clock.js +1 -1
- package/dist/cjs/internal/clock.js.map +1 -1
- package/dist/cjs/internal/configProvider.js +2 -4
- package/dist/cjs/internal/configProvider.js.map +1 -1
- package/dist/cjs/internal/console.js.map +1 -1
- package/dist/cjs/internal/context.js +31 -22
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +13 -27
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core-stream.js.map +1 -1
- package/dist/cjs/internal/core.js +61 -130
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/data.js.map +1 -1
- package/dist/cjs/internal/defaultServices/console.js +1 -1
- package/dist/cjs/internal/defaultServices/console.js.map +1 -1
- package/dist/cjs/internal/defaultServices.js.map +1 -1
- package/dist/cjs/internal/deferred.js.map +1 -1
- package/dist/cjs/internal/differ/contextPatch.js +9 -9
- package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +7 -10
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/effectable.js +4 -4
- package/dist/cjs/internal/effectable.js.map +1 -1
- package/dist/cjs/internal/fiber.js +2 -6
- package/dist/cjs/internal/fiber.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +10 -19
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/keyedPool.js.map +1 -1
- package/dist/cjs/internal/layer/circular.js.map +1 -1
- package/dist/cjs/internal/layer.js +3 -3
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/logSpan.js +3 -5
- package/dist/cjs/internal/logSpan.js.map +1 -1
- package/dist/cjs/internal/metric.js.map +1 -1
- package/dist/cjs/internal/pool.js.map +1 -1
- package/dist/cjs/internal/pubsub.js +2 -6
- package/dist/cjs/internal/pubsub.js.map +1 -1
- package/dist/cjs/internal/query.js.map +1 -1
- package/dist/cjs/internal/queue.js.map +1 -1
- package/dist/cjs/internal/random.js +1 -1
- package/dist/cjs/internal/random.js.map +1 -1
- package/dist/cjs/internal/rateLimiter.js +44 -0
- package/dist/cjs/internal/rateLimiter.js.map +1 -0
- package/dist/cjs/internal/ref.js.map +1 -1
- package/dist/cjs/internal/reloadable.js +1 -9
- package/dist/cjs/internal/reloadable.js.map +1 -1
- package/dist/cjs/internal/runtime.js +0 -1
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/scopedCache.js.map +1 -1
- package/dist/cjs/internal/scopedRef.js.map +1 -1
- package/dist/cjs/internal/sink.js +7 -7
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stm/core.js.map +1 -1
- package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tExit.js +2 -2
- package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
- package/dist/cjs/internal/stm/stm.js.map +1 -1
- package/dist/cjs/internal/stm/tArray.js.map +1 -1
- package/dist/cjs/internal/stm/tDeferred.js +4 -2
- package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
- package/dist/cjs/internal/stm/tMap.js.map +1 -1
- package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
- package/dist/cjs/internal/stm/tQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tRandom.js +1 -1
- package/dist/cjs/internal/stm/tRandom.js.map +1 -1
- package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
- package/dist/cjs/internal/stm/tRef.js.map +1 -1
- package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
- package/dist/cjs/internal/stm/tSet.js.map +1 -1
- package/dist/cjs/internal/stream/debounceState.js.map +1 -1
- package/dist/cjs/internal/stream/handoff.js.map +1 -1
- package/dist/cjs/internal/stream/handoffSignal.js.map +1 -1
- package/dist/cjs/internal/stream/pull.js.map +1 -1
- package/dist/cjs/internal/stream.js +0 -2
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/subscriptionRef.js.map +1 -1
- package/dist/cjs/internal/supervisor.js.map +1 -1
- package/dist/cjs/internal/take.js +2 -2
- package/dist/cjs/internal/take.js.map +1 -1
- package/dist/cjs/internal/testing/sleep.js.map +1 -1
- package/dist/cjs/internal/tracer.js +2 -2
- package/dist/cjs/internal/tracer.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Cache.d.ts +20 -20
- package/dist/dts/Cache.d.ts.map +1 -1
- package/dist/dts/Cause.d.ts +33 -5
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +197 -194
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Clock.d.ts +7 -7
- package/dist/dts/Clock.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +1 -1
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/ConfigProvider.d.ts +6 -6
- package/dist/dts/ConfigProvider.d.ts.map +1 -1
- package/dist/dts/Console.d.ts +43 -43
- package/dist/dts/Console.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +44 -29
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Data.d.ts +38 -57
- package/dist/dts/Data.d.ts.map +1 -1
- package/dist/dts/Deferred.d.ts +36 -36
- package/dist/dts/Deferred.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +732 -729
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Effectable.d.ts +8 -8
- package/dist/dts/Effectable.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +2 -3
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/Exit.d.ts +74 -74
- package/dist/dts/Exit.d.ts.map +1 -1
- package/dist/dts/Fiber.d.ts +75 -75
- package/dist/dts/Fiber.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts +22 -22
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberRef.d.ts +28 -28
- package/dist/dts/FiberRef.d.ts.map +1 -1
- package/dist/dts/FiberRefs.d.ts +1 -1
- package/dist/dts/FiberRefs.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts +16 -16
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/GroupBy.d.ts +6 -6
- package/dist/dts/GroupBy.d.ts.map +1 -1
- package/dist/dts/KeyedPool.d.ts +22 -22
- package/dist/dts/KeyedPool.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +126 -126
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/LogLevel.d.ts +2 -2
- package/dist/dts/LogLevel.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +14 -14
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/MergeDecision.d.ts +7 -7
- package/dist/dts/MergeState.d.ts +13 -13
- package/dist/dts/MergeState.d.ts.map +1 -1
- package/dist/dts/Metric.d.ts +32 -32
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/MetricPolling.d.ts +6 -6
- package/dist/dts/MetricPolling.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +15 -0
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +2 -3
- package/dist/dts/Option.d.ts.map +1 -1
- package/dist/dts/Pool.d.ts +15 -16
- package/dist/dts/Pool.d.ts.map +1 -1
- package/dist/dts/PubSub.d.ts +18 -18
- package/dist/dts/PubSub.d.ts.map +1 -1
- package/dist/dts/Queue.d.ts +40 -40
- package/dist/dts/Queue.d.ts.map +1 -1
- package/dist/dts/Random.d.ts +13 -13
- package/dist/dts/Random.d.ts.map +1 -1
- package/dist/dts/RateLimiter.d.ts +31 -0
- package/dist/dts/RateLimiter.d.ts.map +1 -0
- package/dist/dts/ReadonlyArray.d.ts +3 -3
- package/dist/dts/ReadonlyRecord.d.ts +37 -8
- package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
- package/dist/dts/Ref.d.ts +25 -25
- package/dist/dts/Ref.d.ts.map +1 -1
- package/dist/dts/Reloadable.d.ts +9 -9
- package/dist/dts/Reloadable.d.ts.map +1 -1
- package/dist/dts/Request.d.ts +27 -28
- package/dist/dts/Request.d.ts.map +1 -1
- package/dist/dts/RequestBlock.d.ts +3 -3
- package/dist/dts/RequestBlock.d.ts.map +1 -1
- package/dist/dts/RequestResolver.d.ts +16 -16
- package/dist/dts/RequestResolver.d.ts.map +1 -1
- package/dist/dts/Resource.d.ts +7 -7
- package/dist/dts/Resource.d.ts.map +1 -1
- package/dist/dts/Runtime.d.ts +13 -16
- package/dist/dts/Runtime.d.ts.map +1 -1
- package/dist/dts/RuntimeFlags.d.ts +10 -10
- package/dist/dts/RuntimeFlags.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +303 -303
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schedule.d.ts +47 -47
- package/dist/dts/Schedule.d.ts.map +1 -1
- package/dist/dts/Scope.d.ts +10 -10
- package/dist/dts/Scope.d.ts.map +1 -1
- package/dist/dts/ScopedCache.d.ts +14 -14
- package/dist/dts/ScopedCache.d.ts.map +1 -1
- package/dist/dts/ScopedRef.d.ts +5 -5
- package/dist/dts/ScopedRef.d.ts.map +1 -1
- package/dist/dts/SingleProducerAsyncInput.d.ts +8 -8
- package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +214 -205
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +595 -592
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/StreamEmit.d.ts +5 -5
- package/dist/dts/StreamEmit.d.ts.map +1 -1
- package/dist/dts/Streamable.d.ts +2 -2
- package/dist/dts/Streamable.d.ts.map +1 -1
- package/dist/dts/SubscriptionRef.d.ts +41 -41
- package/dist/dts/SubscriptionRef.d.ts.map +1 -1
- package/dist/dts/Supervisor.d.ts +17 -17
- package/dist/dts/Supervisor.d.ts.map +1 -1
- package/dist/dts/SynchronizedRef.d.ts +41 -41
- package/dist/dts/SynchronizedRef.d.ts.map +1 -1
- package/dist/dts/TArray.d.ts +72 -72
- package/dist/dts/TArray.d.ts.map +1 -1
- package/dist/dts/TDeferred.d.ts +12 -12
- package/dist/dts/TDeferred.d.ts.map +1 -1
- package/dist/dts/TMap.d.ts +67 -67
- package/dist/dts/TMap.d.ts.map +1 -1
- package/dist/dts/TPriorityQueue.d.ts +23 -23
- package/dist/dts/TPriorityQueue.d.ts.map +1 -1
- package/dist/dts/TPubSub.d.ts +15 -15
- package/dist/dts/TPubSub.d.ts.map +1 -1
- package/dist/dts/TQueue.d.ts +40 -40
- package/dist/dts/TQueue.d.ts.map +1 -1
- package/dist/dts/TRandom.d.ts +13 -13
- package/dist/dts/TRandom.d.ts.map +1 -1
- package/dist/dts/TReentrantLock.d.ts +21 -21
- package/dist/dts/TReentrantLock.d.ts.map +1 -1
- package/dist/dts/TRef.d.ts +25 -25
- package/dist/dts/TRef.d.ts.map +1 -1
- package/dist/dts/TSemaphore.d.ts +15 -15
- package/dist/dts/TSemaphore.d.ts.map +1 -1
- package/dist/dts/TSet.d.ts +49 -49
- package/dist/dts/TSet.d.ts.map +1 -1
- package/dist/dts/Take.d.ts +41 -41
- package/dist/dts/Take.d.ts.map +1 -1
- package/dist/dts/TestAnnotation.d.ts +1 -3
- package/dist/dts/TestAnnotation.d.ts.map +1 -1
- package/dist/dts/TestAnnotations.d.ts +3 -3
- package/dist/dts/TestAnnotations.d.ts.map +1 -1
- package/dist/dts/TestClock.d.ts +18 -18
- package/dist/dts/TestClock.d.ts.map +1 -1
- package/dist/dts/TestConfig.d.ts.map +1 -1
- package/dist/dts/TestContext.d.ts +2 -2
- package/dist/dts/TestContext.d.ts.map +1 -1
- package/dist/dts/TestLive.d.ts +1 -1
- package/dist/dts/TestLive.d.ts.map +1 -1
- package/dist/dts/TestServices.d.ts +31 -31
- package/dist/dts/TestServices.d.ts.map +1 -1
- package/dist/dts/TestSized.d.ts +2 -2
- package/dist/dts/TestSized.d.ts.map +1 -1
- package/dist/dts/Tracer.d.ts +1 -1
- package/dist/dts/Utils.d.ts.map +1 -1
- package/dist/dts/index.d.ts +12 -2
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/channel/channelExecutor.d.ts +1 -1
- package/dist/dts/internal/channel/channelExecutor.d.ts.map +1 -1
- package/dist/dts/internal/core-stream.d.ts +1 -1
- package/dist/dts/internal/core-stream.d.ts.map +1 -1
- package/dist/dts/internal/rateLimiter.d.ts +2 -0
- package/dist/dts/internal/rateLimiter.d.ts.map +1 -0
- package/dist/dts/internal/stm/stm.d.ts +6 -6
- package/dist/dts/internal/stm/stm.d.ts.map +1 -1
- package/dist/dts/internal/version.d.ts +1 -1
- package/dist/esm/Cause.js +13 -0
- package/dist/esm/Cause.js.map +1 -1
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Clock.js.map +1 -1
- package/dist/esm/Console.js.map +1 -1
- package/dist/esm/Context.js +22 -24
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Data.js +4 -5
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/Deferred.js +1 -1
- package/dist/esm/Deferred.js.map +1 -1
- package/dist/esm/Effect.js +9 -9
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Effectable.js.map +1 -1
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/Exit.js +2 -2
- package/dist/esm/Exit.js.map +1 -1
- package/dist/esm/Fiber.js.map +1 -1
- package/dist/esm/FiberMap.js +3 -3
- package/dist/esm/FiberRef.js.map +1 -1
- package/dist/esm/FiberRefs.js.map +1 -1
- package/dist/esm/FiberSet.js +3 -3
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/GroupBy.js.map +1 -1
- package/dist/esm/Layer.js.map +1 -1
- package/dist/esm/LogLevel.js.map +1 -1
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/Metric.js.map +1 -1
- package/dist/esm/Number.js +18 -0
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/Option.js.map +1 -1
- package/dist/esm/Pool.js.map +1 -1
- package/dist/esm/PubSub.js.map +1 -1
- package/dist/esm/Queue.js.map +1 -1
- package/dist/esm/Random.js.map +1 -1
- package/dist/esm/RateLimiter.js +7 -0
- package/dist/esm/RateLimiter.js.map +1 -0
- package/dist/esm/ReadonlyRecord.js +44 -8
- package/dist/esm/ReadonlyRecord.js.map +1 -1
- package/dist/esm/Ref.js.map +1 -1
- package/dist/esm/Request.js.map +1 -1
- package/dist/esm/RequestResolver.js.map +1 -1
- package/dist/esm/Resource.js.map +1 -1
- package/dist/esm/Runtime.js +1 -4
- package/dist/esm/Runtime.js.map +1 -1
- package/dist/esm/RuntimeFlags.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schedule.js.map +1 -1
- package/dist/esm/Scope.js.map +1 -1
- package/dist/esm/ScopedRef.js.map +1 -1
- package/dist/esm/SingleProducerAsyncInput.js.map +1 -1
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/SubscriptionRef.js.map +1 -1
- package/dist/esm/Supervisor.js.map +1 -1
- package/dist/esm/SynchronizedRef.js.map +1 -1
- package/dist/esm/TArray.js.map +1 -1
- package/dist/esm/TDeferred.js.map +1 -1
- package/dist/esm/TMap.js.map +1 -1
- package/dist/esm/TPriorityQueue.js.map +1 -1
- package/dist/esm/TPubSub.js.map +1 -1
- package/dist/esm/TQueue.js.map +1 -1
- package/dist/esm/TRandom.js.map +1 -1
- package/dist/esm/TReentrantLock.js.map +1 -1
- package/dist/esm/TRef.js.map +1 -1
- package/dist/esm/TSemaphore.js.map +1 -1
- package/dist/esm/TSet.js.map +1 -1
- package/dist/esm/Take.js +6 -6
- package/dist/esm/Take.js.map +1 -1
- package/dist/esm/TestAnnotation.js +10 -13
- package/dist/esm/TestAnnotation.js.map +1 -1
- package/dist/esm/TestAnnotations.js +1 -1
- package/dist/esm/TestAnnotations.js.map +1 -1
- package/dist/esm/TestClock.js +1 -1
- package/dist/esm/TestClock.js.map +1 -1
- package/dist/esm/TestConfig.js +1 -1
- package/dist/esm/TestConfig.js.map +1 -1
- package/dist/esm/TestContext.js.map +1 -1
- package/dist/esm/TestLive.js +1 -1
- package/dist/esm/TestLive.js.map +1 -1
- package/dist/esm/TestServices.js.map +1 -1
- package/dist/esm/TestSized.js +1 -1
- package/dist/esm/TestSized.js.map +1 -1
- package/dist/esm/Utils.js +1 -1
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/index.js +12 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/cache.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel/mergeDecision.js +2 -6
- package/dist/esm/internal/channel/mergeDecision.js.map +1 -1
- package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/esm/internal/channel.js +1 -1
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/clock.js +1 -1
- package/dist/esm/internal/clock.js.map +1 -1
- package/dist/esm/internal/configProvider.js +2 -4
- package/dist/esm/internal/configProvider.js.map +1 -1
- package/dist/esm/internal/console.js.map +1 -1
- package/dist/esm/internal/context.js +28 -20
- package/dist/esm/internal/context.js.map +1 -1
- package/dist/esm/internal/core-effect.js +12 -26
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core-stream.js.map +1 -1
- package/dist/esm/internal/core.js +57 -127
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/data.js.map +1 -1
- package/dist/esm/internal/defaultServices/console.js +1 -1
- package/dist/esm/internal/defaultServices/console.js.map +1 -1
- package/dist/esm/internal/defaultServices.js.map +1 -1
- package/dist/esm/internal/deferred.js.map +1 -1
- package/dist/esm/internal/differ/contextPatch.js +9 -9
- package/dist/esm/internal/differ/contextPatch.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +5 -8
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/effectable.js +4 -4
- package/dist/esm/internal/effectable.js.map +1 -1
- package/dist/esm/internal/fiber.js +2 -6
- package/dist/esm/internal/fiber.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +10 -19
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/keyedPool.js.map +1 -1
- package/dist/esm/internal/layer/circular.js.map +1 -1
- package/dist/esm/internal/layer.js +3 -3
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/logSpan.js +3 -5
- package/dist/esm/internal/logSpan.js.map +1 -1
- package/dist/esm/internal/metric.js.map +1 -1
- package/dist/esm/internal/pool.js.map +1 -1
- package/dist/esm/internal/pubsub.js +1 -5
- package/dist/esm/internal/pubsub.js.map +1 -1
- package/dist/esm/internal/query.js.map +1 -1
- package/dist/esm/internal/queue.js.map +1 -1
- package/dist/esm/internal/random.js +1 -1
- package/dist/esm/internal/random.js.map +1 -1
- package/dist/esm/internal/rateLimiter.js +12 -0
- package/dist/esm/internal/rateLimiter.js.map +1 -0
- package/dist/esm/internal/ref.js.map +1 -1
- package/dist/esm/internal/reloadable.js +1 -9
- package/dist/esm/internal/reloadable.js.map +1 -1
- package/dist/esm/internal/runtime.js +0 -1
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/scopedCache.js.map +1 -1
- package/dist/esm/internal/scopedRef.js.map +1 -1
- package/dist/esm/internal/sink.js +7 -7
- package/dist/esm/internal/sink.js.map +1 -1
- package/dist/esm/internal/stm/core.js.map +1 -1
- package/dist/esm/internal/stm/stm/stmState.js.map +1 -1
- package/dist/esm/internal/stm/stm/tExit.js +2 -2
- package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
- package/dist/esm/internal/stm/stm/tryCommit.js.map +1 -1
- package/dist/esm/internal/stm/stm.js.map +1 -1
- package/dist/esm/internal/stm/tArray.js.map +1 -1
- package/dist/esm/internal/stm/tDeferred.js +4 -2
- package/dist/esm/internal/stm/tDeferred.js.map +1 -1
- package/dist/esm/internal/stm/tMap.js.map +1 -1
- package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/esm/internal/stm/tPubSub.js.map +1 -1
- package/dist/esm/internal/stm/tQueue.js.map +1 -1
- package/dist/esm/internal/stm/tRandom.js +1 -1
- package/dist/esm/internal/stm/tRandom.js.map +1 -1
- package/dist/esm/internal/stm/tReentrantLock.js.map +1 -1
- package/dist/esm/internal/stm/tRef.js.map +1 -1
- package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
- package/dist/esm/internal/stm/tSet.js.map +1 -1
- package/dist/esm/internal/stream/debounceState.js.map +1 -1
- package/dist/esm/internal/stream/handoff.js.map +1 -1
- package/dist/esm/internal/stream/handoffSignal.js.map +1 -1
- package/dist/esm/internal/stream/pull.js.map +1 -1
- package/dist/esm/internal/stream.js +0 -2
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/subscriptionRef.js.map +1 -1
- package/dist/esm/internal/supervisor.js.map +1 -1
- package/dist/esm/internal/take.js +2 -2
- package/dist/esm/internal/take.js.map +1 -1
- package/dist/esm/internal/testing/sleep.js.map +1 -1
- package/dist/esm/internal/tracer.js +2 -2
- package/dist/esm/internal/tracer.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +9 -1
- package/src/Cache.ts +20 -20
- package/src/Cause.ts +37 -13
- package/src/Channel.ts +802 -794
- package/src/Clock.ts +7 -7
- package/src/Config.ts +1 -1
- package/src/ConfigProvider.ts +6 -6
- package/src/Console.ts +44 -48
- package/src/Context.ts +52 -30
- package/src/Data.ts +38 -61
- package/src/Deferred.ts +39 -41
- package/src/Effect.ts +1187 -1206
- package/src/Effectable.ts +8 -8
- package/src/Either.ts +2 -3
- package/src/Exit.ts +88 -105
- package/src/Fiber.ts +77 -83
- package/src/FiberMap.ts +77 -77
- package/src/FiberRef.ts +28 -28
- package/src/FiberRefs.ts +1 -1
- package/src/FiberSet.ts +61 -62
- package/src/GroupBy.ts +8 -12
- package/src/KeyedPool.ts +22 -22
- package/src/Layer.ts +187 -181
- package/src/LogLevel.ts +7 -6
- package/src/Logger.ts +18 -18
- package/src/MergeDecision.ts +7 -7
- package/src/MergeState.ts +16 -16
- package/src/Metric.ts +39 -39
- package/src/MetricPolling.ts +6 -6
- package/src/Number.ts +19 -0
- package/src/Option.ts +2 -3
- package/src/Pool.ts +15 -16
- package/src/PubSub.ts +18 -18
- package/src/Queue.ts +43 -46
- package/src/Random.ts +13 -15
- package/src/RateLimiter.ts +37 -0
- package/src/ReadonlyRecord.ts +49 -8
- package/src/Ref.ts +25 -25
- package/src/Reloadable.ts +10 -10
- package/src/Request.ts +31 -31
- package/src/RequestBlock.ts +3 -3
- package/src/RequestResolver.ts +21 -21
- package/src/Resource.ts +13 -13
- package/src/Runtime.ts +16 -19
- package/src/RuntimeFlags.ts +10 -10
- package/src/STM.ts +361 -362
- package/src/Schedule.ts +47 -47
- package/src/Scheduler.ts +2 -2
- package/src/Scope.ts +14 -15
- package/src/ScopedCache.ts +14 -14
- package/src/ScopedRef.ts +7 -7
- package/src/SingleProducerAsyncInput.ts +8 -9
- package/src/Sink.ts +357 -381
- package/src/Stream.ts +935 -1033
- package/src/StreamEmit.ts +5 -5
- package/src/Streamable.ts +2 -2
- package/src/SubscriptionRef.ts +51 -51
- package/src/Supervisor.ts +26 -26
- package/src/SynchronizedRef.ts +44 -44
- package/src/TArray.ts +74 -74
- package/src/TDeferred.ts +14 -14
- package/src/TMap.ts +72 -72
- package/src/TPriorityQueue.ts +23 -24
- package/src/TPubSub.ts +15 -15
- package/src/TQueue.ts +40 -40
- package/src/TRandom.ts +13 -13
- package/src/TReentrantLock.ts +21 -21
- package/src/TRef.ts +25 -25
- package/src/TSemaphore.ts +15 -15
- package/src/TSet.ts +49 -49
- package/src/Take.ts +51 -51
- package/src/TestAnnotation.ts +6 -17
- package/src/TestAnnotations.ts +7 -9
- package/src/TestClock.ts +39 -45
- package/src/TestConfig.ts +1 -3
- package/src/TestContext.ts +3 -3
- package/src/TestLive.ts +3 -5
- package/src/TestServices.ts +45 -47
- package/src/TestSized.ts +5 -5
- package/src/Tracer.ts +1 -1
- package/src/Utils.ts +8 -10
- package/src/index.ts +13 -2
- package/src/internal/blockedRequests.ts +2 -2
- package/src/internal/cache.ts +38 -38
- package/src/internal/channel/channelExecutor.ts +65 -73
- package/src/internal/channel/channelState.ts +11 -11
- package/src/internal/channel/continuation.ts +10 -10
- package/src/internal/channel/mergeDecision.ts +14 -16
- package/src/internal/channel/mergeState.ts +12 -12
- package/src/internal/channel/singleProducerAsyncInput.ts +15 -17
- package/src/internal/channel/subexecutor.ts +7 -7
- package/src/internal/channel.ts +901 -980
- package/src/internal/clock.ts +6 -6
- package/src/internal/concurrency.ts +9 -9
- package/src/internal/configProvider.ts +29 -36
- package/src/internal/console.ts +12 -12
- package/src/internal/context.ts +32 -23
- package/src/internal/core-effect.ts +655 -616
- package/src/internal/core-stream.ts +317 -325
- package/src/internal/core.ts +856 -790
- package/src/internal/data.ts +2 -3
- package/src/internal/dataSource.ts +14 -14
- package/src/internal/defaultServices/console.ts +3 -1
- package/src/internal/defaultServices.ts +21 -21
- package/src/internal/deferred.ts +9 -9
- package/src/internal/differ/contextPatch.ts +17 -17
- package/src/internal/effect/circular.ts +154 -159
- package/src/internal/effectable.ts +7 -7
- package/src/internal/fiber.ts +55 -59
- package/src/internal/fiberRefs.ts +1 -1
- package/src/internal/fiberRuntime.ts +426 -463
- package/src/internal/groupBy.ts +59 -62
- package/src/internal/keyedPool.ts +37 -37
- package/src/internal/layer/circular.ts +37 -37
- package/src/internal/layer.ts +235 -240
- package/src/internal/logSpan.ts +3 -5
- package/src/internal/metric/polling.ts +5 -5
- package/src/internal/metric.ts +54 -55
- package/src/internal/pool.ts +72 -72
- package/src/internal/pubsub.ts +75 -84
- package/src/internal/query.ts +25 -27
- package/src/internal/queue.ts +65 -70
- package/src/internal/random.ts +9 -9
- package/src/internal/rateLimiter.ts +30 -0
- package/src/internal/ref.ts +24 -24
- package/src/internal/reloadable.ts +11 -31
- package/src/internal/request.ts +14 -14
- package/src/internal/resource.ts +8 -8
- package/src/internal/runtime.ts +21 -22
- package/src/internal/schedule.ts +131 -134
- package/src/internal/scopedCache.ts +35 -32
- package/src/internal/scopedRef.ts +14 -14
- package/src/internal/sink.ts +507 -565
- package/src/internal/stm/core.ts +101 -102
- package/src/internal/stm/stm/stmState.ts +10 -10
- package/src/internal/stm/stm/tExit.ts +18 -18
- package/src/internal/stm/stm/tryCommit.ts +5 -5
- package/src/internal/stm/stm.ts +363 -374
- package/src/internal/stm/tArray.ts +92 -92
- package/src/internal/stm/tDeferred.ts +16 -14
- package/src/internal/stm/tMap.ts +83 -84
- package/src/internal/stm/tPriorityQueue.ts +24 -25
- package/src/internal/stm/tPubSub.ts +37 -38
- package/src/internal/stm/tQueue.ts +44 -48
- package/src/internal/stm/tRandom.ts +18 -18
- package/src/internal/stm/tReentrantLock.ts +28 -28
- package/src/internal/stm/tRef.ts +25 -25
- package/src/internal/stm/tSemaphore.ts +16 -16
- package/src/internal/stm/tSet.ts +51 -52
- package/src/internal/stream/debounceState.ts +7 -7
- package/src/internal/stream/emit.ts +4 -4
- package/src/internal/stream/handoff.ts +19 -19
- package/src/internal/stream/handoffSignal.ts +4 -4
- package/src/internal/stream/pull.ts +10 -11
- package/src/internal/stream.ts +1770 -1788
- package/src/internal/subscriptionRef.ts +17 -17
- package/src/internal/supervisor.ts +49 -56
- package/src/internal/synchronizedRef.ts +27 -27
- package/src/internal/take.ts +61 -61
- package/src/internal/testing/sleep.ts +2 -2
- package/src/internal/testing/suspendedWarningData.ts +2 -2
- package/src/internal/testing/warningData.ts +2 -2
- package/src/internal/tracer.ts +2 -6
- package/src/internal/version.ts +1 -1
package/src/internal/sink.ts
CHANGED
|
@@ -30,22 +30,24 @@ export const SinkTypeId: Sink.SinkTypeId = Symbol.for("effect/Sink") as Sink.Sin
|
|
|
30
30
|
|
|
31
31
|
const sinkVariance = {
|
|
32
32
|
/* c8 ignore next */
|
|
33
|
-
|
|
34
|
-
/* c8 ignore next */
|
|
35
|
-
_E: (_: never) => _,
|
|
33
|
+
_A: (_: never) => _,
|
|
36
34
|
/* c8 ignore next */
|
|
37
35
|
_In: (_: unknown) => _,
|
|
38
36
|
/* c8 ignore next */
|
|
39
37
|
_L: (_: never) => _,
|
|
40
38
|
/* c8 ignore next */
|
|
41
|
-
|
|
39
|
+
_E: (_: never) => _,
|
|
40
|
+
/* c8 ignore next */
|
|
41
|
+
_R: (_: never) => _
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
/** @internal */
|
|
45
|
-
export class SinkImpl<out
|
|
45
|
+
export class SinkImpl<out A, in In = unknown, out L = never, out E = never, out R = never>
|
|
46
|
+
implements Sink.Sink<A, In, L, E, R>
|
|
47
|
+
{
|
|
46
48
|
readonly [SinkTypeId] = sinkVariance
|
|
47
49
|
constructor(
|
|
48
|
-
readonly channel: Channel.Channel<
|
|
50
|
+
readonly channel: Channel.Channel<Chunk.Chunk<L>, Chunk.Chunk<In>, E, never, A, unknown, R>
|
|
49
51
|
) {
|
|
50
52
|
}
|
|
51
53
|
pipe() {
|
|
@@ -58,26 +60,25 @@ export const isSink = (u: unknown): u is Sink.Sink<unknown, unknown, unknown, un
|
|
|
58
60
|
hasProperty(u, SinkTypeId)
|
|
59
61
|
|
|
60
62
|
/** @internal */
|
|
61
|
-
export const suspend = <
|
|
63
|
+
export const suspend = <A, In, L, E, R>(evaluate: LazyArg<Sink.Sink<A, In, L, E, R>>): Sink.Sink<A, In, L, E, R> =>
|
|
62
64
|
new SinkImpl(core.suspend(() => toChannel(evaluate())))
|
|
63
65
|
|
|
64
66
|
/** @internal */
|
|
65
67
|
export const as = dual<
|
|
66
|
-
<
|
|
67
|
-
<
|
|
68
|
+
<A2>(a: A2) => <A, In, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A2, In, L, E, R>,
|
|
69
|
+
<A, In, L, E, R, A2>(self: Sink.Sink<A, In, L, E, R>, a: A2) => Sink.Sink<A2, In, L, E, R>
|
|
68
70
|
>(
|
|
69
71
|
2,
|
|
70
|
-
|
|
72
|
+
(self, a) => pipe(self, map(() => a))
|
|
71
73
|
)
|
|
72
74
|
|
|
73
75
|
/** @internal */
|
|
74
|
-
export const collectAll = <In>(): Sink.Sink<
|
|
75
|
-
new SinkImpl(collectAllLoop(Chunk.empty()))
|
|
76
|
+
export const collectAll = <In>(): Sink.Sink<Chunk.Chunk<In>, In> => new SinkImpl(collectAllLoop(Chunk.empty()))
|
|
76
77
|
|
|
77
78
|
/** @internal */
|
|
78
79
|
const collectAllLoop = <In>(
|
|
79
80
|
acc: Chunk.Chunk<In>
|
|
80
|
-
): Channel.Channel<never,
|
|
81
|
+
): Channel.Channel<never, Chunk.Chunk<In>, never, never, Chunk.Chunk<In>, unknown> =>
|
|
81
82
|
core.readWithCause({
|
|
82
83
|
onInput: (chunk: Chunk.Chunk<In>) => collectAllLoop(pipe(acc, Chunk.appendAll(chunk))),
|
|
83
84
|
onFailure: core.failCause,
|
|
@@ -85,14 +86,14 @@ const collectAllLoop = <In>(
|
|
|
85
86
|
})
|
|
86
87
|
|
|
87
88
|
/** @internal */
|
|
88
|
-
export const collectAllN = <In>(n: number): Sink.Sink<
|
|
89
|
+
export const collectAllN = <In>(n: number): Sink.Sink<Chunk.Chunk<In>, In, In> =>
|
|
89
90
|
suspend(() => fromChannel(collectAllNLoop(n, Chunk.empty())))
|
|
90
91
|
|
|
91
92
|
/** @internal */
|
|
92
93
|
const collectAllNLoop = <In>(
|
|
93
94
|
n: number,
|
|
94
95
|
acc: Chunk.Chunk<In>
|
|
95
|
-
): Channel.Channel<
|
|
96
|
+
): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, never, never, Chunk.Chunk<In>, unknown> =>
|
|
96
97
|
core.readWithCause({
|
|
97
98
|
onInput: (chunk: Chunk.Chunk<In>) => {
|
|
98
99
|
const [collected, leftovers] = Chunk.splitAt(chunk, n)
|
|
@@ -109,20 +110,20 @@ const collectAllNLoop = <In>(
|
|
|
109
110
|
})
|
|
110
111
|
|
|
111
112
|
/** @internal */
|
|
112
|
-
export const collectAllFrom = <
|
|
113
|
-
self: Sink.Sink<
|
|
114
|
-
): Sink.Sink<
|
|
113
|
+
export const collectAllFrom = <A, In, L extends In, E, R>(
|
|
114
|
+
self: Sink.Sink<A, In, L, E, R>
|
|
115
|
+
): Sink.Sink<Chunk.Chunk<A>, In, L, E, R> =>
|
|
115
116
|
collectAllWhileWith(self, {
|
|
116
|
-
initial: Chunk.empty<
|
|
117
|
+
initial: Chunk.empty<A>(),
|
|
117
118
|
while: constTrue,
|
|
118
|
-
body: (chunk,
|
|
119
|
+
body: (chunk, a) => pipe(chunk, Chunk.append(a))
|
|
119
120
|
})
|
|
120
121
|
|
|
121
122
|
/** @internal */
|
|
122
123
|
export const collectAllToMap = <In, K>(
|
|
123
124
|
key: (input: In) => K,
|
|
124
125
|
merge: (x: In, y: In) => In
|
|
125
|
-
): Sink.Sink<
|
|
126
|
+
): Sink.Sink<HashMap.HashMap<K, In>, In> => {
|
|
126
127
|
return pipe(
|
|
127
128
|
foldLeftChunks(HashMap.empty<K, In>(), (map, chunk) =>
|
|
128
129
|
pipe(
|
|
@@ -143,7 +144,7 @@ export const collectAllToMapN = <In, K>(
|
|
|
143
144
|
n: number,
|
|
144
145
|
key: (input: In) => K,
|
|
145
146
|
merge: (x: In, y: In) => In
|
|
146
|
-
): Sink.Sink<
|
|
147
|
+
): Sink.Sink<HashMap.HashMap<K, In>, In, In> => {
|
|
147
148
|
return foldWeighted<HashMap.HashMap<K, In>, In>({
|
|
148
149
|
initial: HashMap.empty(),
|
|
149
150
|
maxCost: n,
|
|
@@ -159,14 +160,14 @@ export const collectAllToMapN = <In, K>(
|
|
|
159
160
|
}
|
|
160
161
|
|
|
161
162
|
/** @internal */
|
|
162
|
-
export const collectAllToSet = <In>(): Sink.Sink<
|
|
163
|
+
export const collectAllToSet = <In>(): Sink.Sink<HashSet.HashSet<In>, In> =>
|
|
163
164
|
foldLeftChunks<HashSet.HashSet<In>, In>(
|
|
164
165
|
HashSet.empty(),
|
|
165
166
|
(acc, chunk) => pipe(chunk, Chunk.reduce(acc, (acc, input) => pipe(acc, HashSet.add(input))))
|
|
166
167
|
)
|
|
167
168
|
|
|
168
169
|
/** @internal */
|
|
169
|
-
export const collectAllToSetN = <In>(n: number): Sink.Sink<
|
|
170
|
+
export const collectAllToSetN = <In>(n: number): Sink.Sink<HashSet.HashSet<In>, In, In> =>
|
|
170
171
|
foldWeighted<HashSet.HashSet<In>, In>({
|
|
171
172
|
initial: HashSet.empty(),
|
|
172
173
|
maxCost: n,
|
|
@@ -175,7 +176,7 @@ export const collectAllToSetN = <In>(n: number): Sink.Sink<never, never, In, In,
|
|
|
175
176
|
})
|
|
176
177
|
|
|
177
178
|
/** @internal */
|
|
178
|
-
export const collectAllUntil = <In>(p: Predicate<In>): Sink.Sink<
|
|
179
|
+
export const collectAllUntil = <In>(p: Predicate<In>): Sink.Sink<Chunk.Chunk<In>, In, In> => {
|
|
179
180
|
return pipe(
|
|
180
181
|
fold<[Chunk.Chunk<In>, boolean], In>(
|
|
181
182
|
[Chunk.empty(), true],
|
|
@@ -187,9 +188,9 @@ export const collectAllUntil = <In>(p: Predicate<In>): Sink.Sink<never, never, I
|
|
|
187
188
|
}
|
|
188
189
|
|
|
189
190
|
/** @internal */
|
|
190
|
-
export const collectAllUntilEffect = <In,
|
|
191
|
+
export const collectAllUntilEffect = <In, E, R>(p: (input: In) => Effect.Effect<boolean, E, R>) => {
|
|
191
192
|
return pipe(
|
|
192
|
-
foldEffect<[Chunk.Chunk<In>, boolean],
|
|
193
|
+
foldEffect<[Chunk.Chunk<In>, boolean], In, E, R>(
|
|
193
194
|
[Chunk.empty(), true],
|
|
194
195
|
(tuple) => tuple[1],
|
|
195
196
|
([chunk, _], input) => pipe(p(input), Effect.map((bool) => [pipe(chunk, Chunk.append(input)), !bool]))
|
|
@@ -200,16 +201,16 @@ export const collectAllUntilEffect = <In, R, E>(p: (input: In) => Effect.Effect<
|
|
|
200
201
|
|
|
201
202
|
/** @internal */
|
|
202
203
|
export const collectAllWhile: {
|
|
203
|
-
<In, Out extends In>(refinement: Refinement<In, Out>): Sink.Sink<
|
|
204
|
-
<In>(predicate: Predicate<In>): Sink.Sink<
|
|
205
|
-
} = <In>(predicate: Predicate<In>): Sink.Sink<
|
|
204
|
+
<In, Out extends In>(refinement: Refinement<In, Out>): Sink.Sink<Chunk.Chunk<Out>, In, In>
|
|
205
|
+
<In>(predicate: Predicate<In>): Sink.Sink<Chunk.Chunk<In>, In, In>
|
|
206
|
+
} = <In>(predicate: Predicate<In>): Sink.Sink<Chunk.Chunk<In>, In, In> =>
|
|
206
207
|
fromChannel(collectAllWhileReader(predicate, Chunk.empty()))
|
|
207
208
|
|
|
208
209
|
/** @internal */
|
|
209
210
|
const collectAllWhileReader = <In>(
|
|
210
211
|
predicate: Predicate<In>,
|
|
211
212
|
done: Chunk.Chunk<In>
|
|
212
|
-
): Channel.Channel<
|
|
213
|
+
): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, never, never, Chunk.Chunk<In>, unknown> =>
|
|
213
214
|
core.readWith({
|
|
214
215
|
onInput: (input: Chunk.Chunk<In>) => {
|
|
215
216
|
const [collected, leftovers] = pipe(Chunk.toReadonlyArray(input), ReadonlyArray.span(predicate))
|
|
@@ -229,15 +230,15 @@ const collectAllWhileReader = <In>(
|
|
|
229
230
|
})
|
|
230
231
|
|
|
231
232
|
/** @internal */
|
|
232
|
-
export const collectAllWhileEffect = <In,
|
|
233
|
-
predicate: (input: In) => Effect.Effect<
|
|
234
|
-
): Sink.Sink<
|
|
233
|
+
export const collectAllWhileEffect = <In, E, R>(
|
|
234
|
+
predicate: (input: In) => Effect.Effect<boolean, E, R>
|
|
235
|
+
): Sink.Sink<Chunk.Chunk<In>, In, In, E, R> => fromChannel(collectAllWhileEffectReader(predicate, Chunk.empty()))
|
|
235
236
|
|
|
236
237
|
/** @internal */
|
|
237
238
|
const collectAllWhileEffectReader = <In, R, E>(
|
|
238
|
-
predicate: (input: In) => Effect.Effect<
|
|
239
|
+
predicate: (input: In) => Effect.Effect<boolean, E, R>,
|
|
239
240
|
done: Chunk.Chunk<In>
|
|
240
|
-
): Channel.Channel<
|
|
241
|
+
): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, E, never, Chunk.Chunk<In>, unknown, R> =>
|
|
241
242
|
core.readWith({
|
|
242
243
|
onInput: (input: Chunk.Chunk<In>) =>
|
|
243
244
|
pipe(
|
|
@@ -255,32 +256,32 @@ const collectAllWhileEffectReader = <In, R, E>(
|
|
|
255
256
|
})
|
|
256
257
|
|
|
257
258
|
/** @internal */
|
|
258
|
-
export const collectAllWhileWith
|
|
259
|
-
<
|
|
259
|
+
export const collectAllWhileWith: {
|
|
260
|
+
<A, S>(
|
|
260
261
|
options: {
|
|
261
262
|
readonly initial: S
|
|
262
|
-
readonly while: Predicate<
|
|
263
|
-
readonly body: (s: S,
|
|
263
|
+
readonly while: Predicate<A>
|
|
264
|
+
readonly body: (s: S, a: A) => S
|
|
264
265
|
}
|
|
265
|
-
)
|
|
266
|
-
<
|
|
267
|
-
self: Sink.Sink<
|
|
266
|
+
): <In, L extends In, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<S, In, L, E, R>
|
|
267
|
+
<A, In, L extends In, E, R, S>(
|
|
268
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
268
269
|
options: {
|
|
269
270
|
readonly initial: S
|
|
270
|
-
readonly while: Predicate<
|
|
271
|
-
readonly body: (s: S,
|
|
271
|
+
readonly while: Predicate<A>
|
|
272
|
+
readonly body: (s: S, a: A) => S
|
|
272
273
|
}
|
|
273
|
-
)
|
|
274
|
-
|
|
274
|
+
): Sink.Sink<S, In, L, E, R>
|
|
275
|
+
} = dual(
|
|
275
276
|
2,
|
|
276
|
-
<
|
|
277
|
-
self: Sink.Sink<
|
|
277
|
+
<A, In, L extends In, E, R, S>(
|
|
278
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
278
279
|
options: {
|
|
279
280
|
readonly initial: S
|
|
280
|
-
readonly while: Predicate<
|
|
281
|
-
readonly body: (s: S,
|
|
281
|
+
readonly while: Predicate<A>
|
|
282
|
+
readonly body: (s: S, a: A) => S
|
|
282
283
|
}
|
|
283
|
-
): Sink.Sink<
|
|
284
|
+
): Sink.Sink<S, In, L, E, R> => {
|
|
284
285
|
const refs = pipe(
|
|
285
286
|
Ref.make(Chunk.empty<In>()),
|
|
286
287
|
Effect.zip(Ref.make(false))
|
|
@@ -288,8 +289,8 @@ export const collectAllWhileWith = dual<
|
|
|
288
289
|
const newChannel = pipe(
|
|
289
290
|
core.fromEffect(refs),
|
|
290
291
|
core.flatMap(([leftoversRef, upstreamDoneRef]) => {
|
|
291
|
-
const upstreamMarker: Channel.Channel<
|
|
292
|
-
|
|
292
|
+
const upstreamMarker: Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, never, never, unknown, unknown> = core
|
|
293
|
+
.readWith({
|
|
293
294
|
onInput: (input) => pipe(core.write(input), core.flatMap(() => upstreamMarker)),
|
|
294
295
|
onFailure: core.fail,
|
|
295
296
|
onDone: (done) => pipe(core.fromEffect(Ref.set(upstreamDoneRef, true)), channel.as(done))
|
|
@@ -309,13 +310,13 @@ export const collectAllWhileWith = dual<
|
|
|
309
310
|
|
|
310
311
|
/** @internal */
|
|
311
312
|
const collectAllWhileWithLoop = <R, E, In, L extends In, Z, S>(
|
|
312
|
-
self: Sink.Sink<
|
|
313
|
+
self: Sink.Sink<Z, In, L, E, R>,
|
|
313
314
|
leftoversRef: Ref.Ref<Chunk.Chunk<In>>,
|
|
314
315
|
upstreamDoneRef: Ref.Ref<boolean>,
|
|
315
316
|
currentResult: S,
|
|
316
317
|
p: Predicate<Z>,
|
|
317
318
|
f: (s: S, z: Z) => S
|
|
318
|
-
): Channel.Channel<
|
|
319
|
+
): Channel.Channel<Chunk.Chunk<L>, Chunk.Chunk<In>, E, never, S, unknown, R> => {
|
|
319
320
|
return pipe(
|
|
320
321
|
toChannel(self),
|
|
321
322
|
channel.doneCollect,
|
|
@@ -345,36 +346,36 @@ const collectAllWhileWithLoop = <R, E, In, L extends In, Z, S>(
|
|
|
345
346
|
}
|
|
346
347
|
|
|
347
348
|
/** @internal */
|
|
348
|
-
export const collectLeftover = <
|
|
349
|
-
self: Sink.Sink<
|
|
350
|
-
): Sink.Sink<
|
|
349
|
+
export const collectLeftover = <A, In, L, E, R>(
|
|
350
|
+
self: Sink.Sink<A, In, L, E, R>
|
|
351
|
+
): Sink.Sink<[A, Chunk.Chunk<L>], In, never, E, R> =>
|
|
351
352
|
new SinkImpl(pipe(core.collectElements(toChannel(self)), channel.map(([chunks, z]) => [z, Chunk.flatten(chunks)])))
|
|
352
353
|
|
|
353
354
|
/** @internal */
|
|
354
355
|
export const mapInput = dual<
|
|
355
|
-
<In0, In>(f: (input: In0) => In) => <
|
|
356
|
-
<
|
|
356
|
+
<In0, In>(f: (input: In0) => In) => <A, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In0, L, E, R>,
|
|
357
|
+
<A, In, L, E, R, In0>(self: Sink.Sink<A, In, L, E, R>, f: (input: In0) => In) => Sink.Sink<A, In0, L, E, R>
|
|
357
358
|
>(
|
|
358
359
|
2,
|
|
359
|
-
<
|
|
360
|
+
<A, In, L, E, R, In0>(self: Sink.Sink<A, In, L, E, R>, f: (input: In0) => In): Sink.Sink<A, In0, L, E, R> =>
|
|
360
361
|
pipe(self, mapInputChunks(Chunk.map(f)))
|
|
361
362
|
)
|
|
362
363
|
|
|
363
364
|
/** @internal */
|
|
364
365
|
export const mapInputEffect = dual<
|
|
365
|
-
<In0,
|
|
366
|
-
f: (input: In0) => Effect.Effect<
|
|
367
|
-
) => <
|
|
368
|
-
<
|
|
369
|
-
self: Sink.Sink<
|
|
370
|
-
f: (input: In0) => Effect.Effect<
|
|
371
|
-
) => Sink.Sink<
|
|
366
|
+
<In0, In, E2, R2>(
|
|
367
|
+
f: (input: In0) => Effect.Effect<In, E2, R2>
|
|
368
|
+
) => <A, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In0, L, E2 | E, R2 | R>,
|
|
369
|
+
<A, In, L, E, R, In0, E2, R2>(
|
|
370
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
371
|
+
f: (input: In0) => Effect.Effect<In, E2, R2>
|
|
372
|
+
) => Sink.Sink<A, In0, L, E2 | E, R2 | R>
|
|
372
373
|
>(
|
|
373
374
|
2,
|
|
374
|
-
<
|
|
375
|
-
self: Sink.Sink<
|
|
376
|
-
f: (input: In0) => Effect.Effect<
|
|
377
|
-
): Sink.Sink<
|
|
375
|
+
<A, In, L, E, R, In0, E2, R2>(
|
|
376
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
377
|
+
f: (input: In0) => Effect.Effect<In, E2, R2>
|
|
378
|
+
): Sink.Sink<A, In0, L, E | E2, R | R2> =>
|
|
378
379
|
mapInputChunksEffect(
|
|
379
380
|
self,
|
|
380
381
|
(chunk) =>
|
|
@@ -389,18 +390,18 @@ export const mapInputEffect = dual<
|
|
|
389
390
|
export const mapInputChunks = dual<
|
|
390
391
|
<In0, In>(
|
|
391
392
|
f: (chunk: Chunk.Chunk<In0>) => Chunk.Chunk<In>
|
|
392
|
-
) => <
|
|
393
|
-
<
|
|
394
|
-
self: Sink.Sink<
|
|
393
|
+
) => <A, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In0, L, E, R>,
|
|
394
|
+
<A, In, L, E, R, In0>(
|
|
395
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
395
396
|
f: (chunk: Chunk.Chunk<In0>) => Chunk.Chunk<In>
|
|
396
|
-
) => Sink.Sink<
|
|
397
|
+
) => Sink.Sink<A, In0, L, E, R>
|
|
397
398
|
>(
|
|
398
399
|
2,
|
|
399
|
-
<
|
|
400
|
-
self: Sink.Sink<
|
|
400
|
+
<A, In, L, E, R, In0>(
|
|
401
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
401
402
|
f: (chunk: Chunk.Chunk<In0>) => Chunk.Chunk<In>
|
|
402
|
-
): Sink.Sink<
|
|
403
|
-
const loop: Channel.Channel<
|
|
403
|
+
): Sink.Sink<A, In0, L, E, R> => {
|
|
404
|
+
const loop: Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In0>, never, never, unknown, unknown, R> = core.readWith({
|
|
404
405
|
onInput: (chunk) => pipe(core.write(f(chunk)), core.flatMap(() => loop)),
|
|
405
406
|
onFailure: core.fail,
|
|
406
407
|
onDone: core.succeed
|
|
@@ -411,20 +412,20 @@ export const mapInputChunks = dual<
|
|
|
411
412
|
|
|
412
413
|
/** @internal */
|
|
413
414
|
export const mapInputChunksEffect = dual<
|
|
414
|
-
<In0,
|
|
415
|
-
f: (chunk: Chunk.Chunk<In0>) => Effect.Effect<
|
|
416
|
-
) => <
|
|
417
|
-
<
|
|
418
|
-
self: Sink.Sink<
|
|
419
|
-
f: (chunk: Chunk.Chunk<In0>) => Effect.Effect<
|
|
420
|
-
) => Sink.Sink<
|
|
415
|
+
<In0, In, E2, R2>(
|
|
416
|
+
f: (chunk: Chunk.Chunk<In0>) => Effect.Effect<Chunk.Chunk<In>, E2, R2>
|
|
417
|
+
) => <A, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In0, L, E2 | E, R2 | R>,
|
|
418
|
+
<A, In, L, E, R, In0, E2, R2>(
|
|
419
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
420
|
+
f: (chunk: Chunk.Chunk<In0>) => Effect.Effect<Chunk.Chunk<In>, E2, R2>
|
|
421
|
+
) => Sink.Sink<A, In0, L, E2 | E, R2 | R>
|
|
421
422
|
>(
|
|
422
423
|
2,
|
|
423
|
-
<
|
|
424
|
-
self: Sink.Sink<
|
|
425
|
-
f: (chunk: Chunk.Chunk<In0>) => Effect.Effect<
|
|
426
|
-
): Sink.Sink<
|
|
427
|
-
const loop: Channel.Channel<
|
|
424
|
+
<A, In, L, E, R, In0, E2, R2>(
|
|
425
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
426
|
+
f: (chunk: Chunk.Chunk<In0>) => Effect.Effect<Chunk.Chunk<In>, E2, R2>
|
|
427
|
+
): Sink.Sink<A, In0, L, E | E2, R | R2> => {
|
|
428
|
+
const loop: Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In0>, E2, never, unknown, unknown, R | R2> = core
|
|
428
429
|
.readWith({
|
|
429
430
|
onInput: (chunk) => pipe(core.fromEffect(f(chunk)), core.flatMap(core.write), core.flatMap(() => loop)),
|
|
430
431
|
onFailure: core.fail,
|
|
@@ -435,66 +436,60 @@ export const mapInputChunksEffect = dual<
|
|
|
435
436
|
)
|
|
436
437
|
|
|
437
438
|
/** @internal */
|
|
438
|
-
export const die = (defect: unknown): Sink.Sink<never,
|
|
439
|
+
export const die = (defect: unknown): Sink.Sink<never, unknown> => failCause(Cause.die(defect))
|
|
439
440
|
|
|
440
441
|
/** @internal */
|
|
441
|
-
export const dieMessage = (message: string): Sink.Sink<never,
|
|
442
|
+
export const dieMessage = (message: string): Sink.Sink<never, unknown> =>
|
|
442
443
|
failCause(Cause.die(new Cause.RuntimeException(message)))
|
|
443
444
|
|
|
444
445
|
/** @internal */
|
|
445
|
-
export const dieSync = (evaluate: LazyArg<unknown>): Sink.Sink<never,
|
|
446
|
+
export const dieSync = (evaluate: LazyArg<unknown>): Sink.Sink<never, unknown> =>
|
|
446
447
|
failCauseSync(() => Cause.die(evaluate()))
|
|
447
448
|
|
|
448
449
|
/** @internal */
|
|
449
450
|
export const dimap = dual<
|
|
450
|
-
<In0, In,
|
|
451
|
+
<In0, In, A, A2>(
|
|
451
452
|
options: {
|
|
452
453
|
readonly onInput: (input: In0) => In
|
|
453
|
-
readonly onDone: (
|
|
454
|
+
readonly onDone: (a: A) => A2
|
|
454
455
|
}
|
|
455
|
-
) => <
|
|
456
|
-
<
|
|
457
|
-
self: Sink.Sink<
|
|
456
|
+
) => <L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A2, In0, L, E, R>,
|
|
457
|
+
<A, In, L, E, R, In0, A2>(
|
|
458
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
458
459
|
options: {
|
|
459
460
|
readonly onInput: (input: In0) => In
|
|
460
|
-
readonly onDone: (
|
|
461
|
+
readonly onDone: (a: A) => A2
|
|
461
462
|
}
|
|
462
|
-
) => Sink.Sink<
|
|
463
|
+
) => Sink.Sink<A2, In0, L, E, R>
|
|
463
464
|
>(
|
|
464
465
|
2,
|
|
465
|
-
<
|
|
466
|
-
self: Sink.Sink<
|
|
466
|
+
<A, In, L, E, R, In0, A2>(
|
|
467
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
467
468
|
options: {
|
|
468
469
|
readonly onInput: (input: In0) => In
|
|
469
|
-
readonly onDone: (
|
|
470
|
+
readonly onDone: (a: A) => A2
|
|
470
471
|
}
|
|
471
|
-
): Sink.Sink<
|
|
472
|
+
): Sink.Sink<A2, In0, L, E, R> => map(mapInput(self, options.onInput), options.onDone)
|
|
472
473
|
)
|
|
473
474
|
|
|
474
475
|
/** @internal */
|
|
475
476
|
export const dimapEffect = dual<
|
|
476
|
-
<In0, R2, E2, In,
|
|
477
|
+
<In0, R2, E2, In, A, R3, E3, A2>(
|
|
477
478
|
options: {
|
|
478
|
-
readonly onInput: (input: In0) => Effect.Effect<
|
|
479
|
-
readonly onDone: (
|
|
479
|
+
readonly onInput: (input: In0) => Effect.Effect<In, E2, R2>
|
|
480
|
+
readonly onDone: (a: A) => Effect.Effect<A2, E3, R3>
|
|
480
481
|
}
|
|
481
|
-
) => <R, E, L>(self: Sink.Sink<
|
|
482
|
-
<
|
|
483
|
-
self: Sink.Sink<
|
|
482
|
+
) => <R, E, L>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A2, In0, L, E2 | E3 | E, R2 | R3 | R>,
|
|
483
|
+
<A, In, L, E, R, In0, E2, R2, A2, E3, R3>(
|
|
484
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
484
485
|
options: {
|
|
485
|
-
readonly onInput: (input: In0) => Effect.Effect<
|
|
486
|
-
readonly onDone: (
|
|
486
|
+
readonly onInput: (input: In0) => Effect.Effect<In, E2, R2>
|
|
487
|
+
readonly onDone: (a: A) => Effect.Effect<A2, E3, R3>
|
|
487
488
|
}
|
|
488
|
-
) => Sink.Sink<
|
|
489
|
+
) => Sink.Sink<A2, In0, L, E2 | E3 | E, R2 | R3 | R>
|
|
489
490
|
>(
|
|
490
491
|
2,
|
|
491
|
-
|
|
492
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
493
|
-
options: {
|
|
494
|
-
readonly onInput: (input: In0) => Effect.Effect<R2, E2, In>
|
|
495
|
-
readonly onDone: (z: Z) => Effect.Effect<R3, E3, Z2>
|
|
496
|
-
}
|
|
497
|
-
): Sink.Sink<R | R2 | R3, E | E2 | E3, In0, L, Z2> =>
|
|
492
|
+
(self, options) =>
|
|
498
493
|
mapEffect(
|
|
499
494
|
mapInputEffect(self, options.onInput),
|
|
500
495
|
options.onDone
|
|
@@ -503,28 +498,22 @@ export const dimapEffect = dual<
|
|
|
503
498
|
|
|
504
499
|
/** @internal */
|
|
505
500
|
export const dimapChunks = dual<
|
|
506
|
-
<In0, In,
|
|
501
|
+
<In0, In, A, A2>(
|
|
507
502
|
options: {
|
|
508
503
|
readonly onInput: (chunk: Chunk.Chunk<In0>) => Chunk.Chunk<In>
|
|
509
|
-
readonly onDone: (
|
|
504
|
+
readonly onDone: (a: A) => A2
|
|
510
505
|
}
|
|
511
|
-
) => <
|
|
512
|
-
<
|
|
513
|
-
self: Sink.Sink<
|
|
506
|
+
) => <L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A2, In0, L, E, R>,
|
|
507
|
+
<A, In, L, E, R, In0, A2>(
|
|
508
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
514
509
|
options: {
|
|
515
510
|
readonly onInput: (chunk: Chunk.Chunk<In0>) => Chunk.Chunk<In>
|
|
516
|
-
readonly onDone: (
|
|
511
|
+
readonly onDone: (a: A) => A2
|
|
517
512
|
}
|
|
518
|
-
) => Sink.Sink<
|
|
513
|
+
) => Sink.Sink<A2, In0, L, E, R>
|
|
519
514
|
>(
|
|
520
515
|
2,
|
|
521
|
-
|
|
522
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
523
|
-
options: {
|
|
524
|
-
readonly onInput: (chunk: Chunk.Chunk<In0>) => Chunk.Chunk<In>
|
|
525
|
-
readonly onDone: (z: Z) => Z2
|
|
526
|
-
}
|
|
527
|
-
): Sink.Sink<R, E, In0, L, Z2> =>
|
|
516
|
+
(self, options) =>
|
|
528
517
|
map(
|
|
529
518
|
mapInputChunks(self, options.onInput),
|
|
530
519
|
options.onDone
|
|
@@ -533,44 +522,36 @@ export const dimapChunks = dual<
|
|
|
533
522
|
|
|
534
523
|
/** @internal */
|
|
535
524
|
export const dimapChunksEffect = dual<
|
|
536
|
-
<In0,
|
|
525
|
+
<In0, In, E2, R2, A, A2, E3, R3>(
|
|
537
526
|
options: {
|
|
538
|
-
readonly onInput: (chunk: Chunk.Chunk<In0>) => Effect.Effect<
|
|
539
|
-
readonly onDone: (
|
|
527
|
+
readonly onInput: (chunk: Chunk.Chunk<In0>) => Effect.Effect<Chunk.Chunk<In>, E2, R2>
|
|
528
|
+
readonly onDone: (a: A) => Effect.Effect<A2, E3, R3>
|
|
540
529
|
}
|
|
541
|
-
) => <R, E, L>(self: Sink.Sink<
|
|
542
|
-
<
|
|
543
|
-
self: Sink.Sink<
|
|
530
|
+
) => <R, E, L>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A2, In0, L, E2 | E3 | E, R2 | R3 | R>,
|
|
531
|
+
<A, In, L, E, R, In0, E2, R2, A2, E3, R3>(
|
|
532
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
544
533
|
options: {
|
|
545
|
-
readonly onInput: (chunk: Chunk.Chunk<In0>) => Effect.Effect<
|
|
546
|
-
readonly onDone: (
|
|
534
|
+
readonly onInput: (chunk: Chunk.Chunk<In0>) => Effect.Effect<Chunk.Chunk<In>, E2, R2>
|
|
535
|
+
readonly onDone: (a: A) => Effect.Effect<A2, E3, R3>
|
|
547
536
|
}
|
|
548
|
-
) => Sink.Sink<
|
|
537
|
+
) => Sink.Sink<A2, In0, L, E2 | E3 | E, R2 | R3 | R>
|
|
549
538
|
>(
|
|
550
539
|
2,
|
|
551
|
-
|
|
552
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
553
|
-
options: {
|
|
554
|
-
readonly onInput: (chunk: Chunk.Chunk<In0>) => Effect.Effect<R2, E2, Chunk.Chunk<In>>
|
|
555
|
-
readonly onDone: (z: Z) => Effect.Effect<R3, E3, Z2>
|
|
556
|
-
}
|
|
557
|
-
): Sink.Sink<R | R2 | R3, E | E2 | E3, In0, L, Z2> =>
|
|
558
|
-
mapEffect(mapInputChunksEffect(self, options.onInput), options.onDone)
|
|
540
|
+
(self, options) => mapEffect(mapInputChunksEffect(self, options.onInput), options.onDone)
|
|
559
541
|
)
|
|
560
542
|
|
|
561
543
|
/** @internal */
|
|
562
|
-
export const drain: Sink.Sink<
|
|
563
|
-
channel.drain(channel.identityChannel
|
|
544
|
+
export const drain: Sink.Sink<void, unknown> = new SinkImpl(
|
|
545
|
+
channel.drain(channel.identityChannel())
|
|
564
546
|
)
|
|
565
547
|
|
|
566
548
|
/** @internal */
|
|
567
|
-
export const drop = <In>(n: number): Sink.Sink<
|
|
568
|
-
suspend(() => new SinkImpl(dropLoop(n)))
|
|
549
|
+
export const drop = <In>(n: number): Sink.Sink<unknown, In, In> => suspend(() => new SinkImpl(dropLoop(n)))
|
|
569
550
|
|
|
570
551
|
/** @internal */
|
|
571
552
|
const dropLoop = <In>(
|
|
572
553
|
n: number
|
|
573
|
-
): Channel.Channel<
|
|
554
|
+
): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, never, never, unknown, unknown> =>
|
|
574
555
|
core.readWith({
|
|
575
556
|
onInput: (input: Chunk.Chunk<In>) => {
|
|
576
557
|
const dropped = pipe(input, Chunk.drop(n))
|
|
@@ -581,7 +562,7 @@ const dropLoop = <In>(
|
|
|
581
562
|
}
|
|
582
563
|
return pipe(
|
|
583
564
|
core.write(dropped),
|
|
584
|
-
channel.zipRight(channel.identityChannel<
|
|
565
|
+
channel.zipRight(channel.identityChannel<Chunk.Chunk<In>, never, unknown>())
|
|
585
566
|
)
|
|
586
567
|
},
|
|
587
568
|
onFailure: core.fail,
|
|
@@ -589,20 +570,20 @@ const dropLoop = <In>(
|
|
|
589
570
|
})
|
|
590
571
|
|
|
591
572
|
/** @internal */
|
|
592
|
-
export const dropUntil = <In>(predicate: Predicate<In>): Sink.Sink<
|
|
573
|
+
export const dropUntil = <In>(predicate: Predicate<In>): Sink.Sink<unknown, In, In> =>
|
|
593
574
|
new SinkImpl(
|
|
594
575
|
pipe(toChannel(dropWhile((input: In) => !predicate(input))), channel.pipeToOrFail(toChannel(drop<In>(1))))
|
|
595
576
|
)
|
|
596
577
|
|
|
597
578
|
/** @internal */
|
|
598
|
-
export const dropUntilEffect = <In,
|
|
599
|
-
predicate: (input: In) => Effect.Effect<
|
|
600
|
-
): Sink.Sink<
|
|
579
|
+
export const dropUntilEffect = <In, E, R>(
|
|
580
|
+
predicate: (input: In) => Effect.Effect<boolean, E, R>
|
|
581
|
+
): Sink.Sink<unknown, In, In, E, R> => suspend(() => new SinkImpl(dropUntilEffectReader(predicate)))
|
|
601
582
|
|
|
602
583
|
/** @internal */
|
|
603
584
|
const dropUntilEffectReader = <In, R, E>(
|
|
604
|
-
predicate: (input: In) => Effect.Effect<
|
|
605
|
-
): Channel.Channel<
|
|
585
|
+
predicate: (input: In) => Effect.Effect<boolean, E, R>
|
|
586
|
+
): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, E, E, unknown, unknown, R> =>
|
|
606
587
|
core.readWith({
|
|
607
588
|
onInput: (input: Chunk.Chunk<In>) =>
|
|
608
589
|
pipe(
|
|
@@ -614,7 +595,7 @@ const dropUntilEffectReader = <In, R, E>(
|
|
|
614
595
|
dropUntilEffectReader(predicate) :
|
|
615
596
|
pipe(
|
|
616
597
|
core.write(Chunk.unsafeFromArray(leftover)),
|
|
617
|
-
channel.zipRight(channel.identityChannel<
|
|
598
|
+
channel.zipRight(channel.identityChannel<Chunk.Chunk<In>, E, unknown>())
|
|
618
599
|
)
|
|
619
600
|
}),
|
|
620
601
|
channel.unwrap
|
|
@@ -624,34 +605,34 @@ const dropUntilEffectReader = <In, R, E>(
|
|
|
624
605
|
})
|
|
625
606
|
|
|
626
607
|
/** @internal */
|
|
627
|
-
export const dropWhile = <In>(predicate: Predicate<In>): Sink.Sink<
|
|
608
|
+
export const dropWhile = <In>(predicate: Predicate<In>): Sink.Sink<unknown, In, In> =>
|
|
628
609
|
new SinkImpl(dropWhileReader(predicate))
|
|
629
610
|
|
|
630
611
|
/** @internal */
|
|
631
612
|
const dropWhileReader = <In>(
|
|
632
613
|
predicate: Predicate<In>
|
|
633
|
-
): Channel.Channel<
|
|
614
|
+
): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, never, never, unknown, unknown> =>
|
|
634
615
|
core.readWith({
|
|
635
616
|
onInput: (input: Chunk.Chunk<In>) => {
|
|
636
617
|
const out = pipe(input, Chunk.dropWhile(predicate))
|
|
637
618
|
if (Chunk.isEmpty(out)) {
|
|
638
619
|
return dropWhileReader(predicate)
|
|
639
620
|
}
|
|
640
|
-
return pipe(core.write(out), channel.zipRight(channel.identityChannel<
|
|
621
|
+
return pipe(core.write(out), channel.zipRight(channel.identityChannel<Chunk.Chunk<In>, never, unknown>()))
|
|
641
622
|
},
|
|
642
623
|
onFailure: core.fail,
|
|
643
624
|
onDone: core.succeedNow
|
|
644
625
|
})
|
|
645
626
|
|
|
646
627
|
/** @internal */
|
|
647
|
-
export const dropWhileEffect = <In,
|
|
648
|
-
predicate: (input: In) => Effect.Effect<
|
|
649
|
-
): Sink.Sink<
|
|
628
|
+
export const dropWhileEffect = <In, E, R>(
|
|
629
|
+
predicate: (input: In) => Effect.Effect<boolean, E, R>
|
|
630
|
+
): Sink.Sink<unknown, In, In, E, R> => suspend(() => new SinkImpl(dropWhileEffectReader(predicate)))
|
|
650
631
|
|
|
651
632
|
/** @internal */
|
|
652
633
|
const dropWhileEffectReader = <In, R, E>(
|
|
653
|
-
predicate: (input: In) => Effect.Effect<
|
|
654
|
-
): Channel.Channel<
|
|
634
|
+
predicate: (input: In) => Effect.Effect<boolean, E, R>
|
|
635
|
+
): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, E, E, unknown, unknown, R> =>
|
|
655
636
|
core.readWith({
|
|
656
637
|
onInput: (input: Chunk.Chunk<In>) =>
|
|
657
638
|
pipe(
|
|
@@ -663,7 +644,7 @@ const dropWhileEffectReader = <In, R, E>(
|
|
|
663
644
|
dropWhileEffectReader(predicate) :
|
|
664
645
|
pipe(
|
|
665
646
|
core.write(Chunk.unsafeFromArray(leftover)),
|
|
666
|
-
channel.zipRight(channel.identityChannel<
|
|
647
|
+
channel.zipRight(channel.identityChannel<Chunk.Chunk<In>, E, unknown>())
|
|
667
648
|
)
|
|
668
649
|
}),
|
|
669
650
|
channel.unwrap
|
|
@@ -674,102 +655,93 @@ const dropWhileEffectReader = <In, R, E>(
|
|
|
674
655
|
|
|
675
656
|
/** @internal */
|
|
676
657
|
export const ensuring = dual<
|
|
677
|
-
<
|
|
678
|
-
finalizer: Effect.Effect<
|
|
679
|
-
) => <
|
|
680
|
-
<
|
|
681
|
-
self: Sink.Sink<
|
|
682
|
-
finalizer: Effect.Effect<
|
|
683
|
-
) => Sink.Sink<
|
|
658
|
+
<_, R2>(
|
|
659
|
+
finalizer: Effect.Effect<_, never, R2>
|
|
660
|
+
) => <A, In, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In, L, E, R2 | R>,
|
|
661
|
+
<A, In, L, E, R, _, R2>(
|
|
662
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
663
|
+
finalizer: Effect.Effect<_, never, R2>
|
|
664
|
+
) => Sink.Sink<A, In, L, E, R2 | R>
|
|
684
665
|
>(
|
|
685
666
|
2,
|
|
686
|
-
|
|
687
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
688
|
-
finalizer: Effect.Effect<R2, never, _>
|
|
689
|
-
): Sink.Sink<R | R2, E, In, L, Z> => new SinkImpl(pipe(self, toChannel, channel.ensuring(finalizer)))
|
|
667
|
+
(self, finalizer) => new SinkImpl(pipe(self, toChannel, channel.ensuring(finalizer)))
|
|
690
668
|
)
|
|
691
669
|
|
|
692
670
|
/** @internal */
|
|
693
671
|
export const ensuringWith = dual<
|
|
694
|
-
<E,
|
|
695
|
-
finalizer: (exit: Exit.Exit<
|
|
696
|
-
) => <
|
|
697
|
-
<
|
|
698
|
-
self: Sink.Sink<
|
|
699
|
-
finalizer: (exit: Exit.Exit<
|
|
700
|
-
) => Sink.Sink<
|
|
672
|
+
<A, E, _, R2>(
|
|
673
|
+
finalizer: (exit: Exit.Exit<A, E>) => Effect.Effect<_, never, R2>
|
|
674
|
+
) => <In, L, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In, L, E, R2 | R>,
|
|
675
|
+
<A, In, L, E, R, _, R2>(
|
|
676
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
677
|
+
finalizer: (exit: Exit.Exit<A, E>) => Effect.Effect<_, never, R2>
|
|
678
|
+
) => Sink.Sink<A, In, L, E, R2 | R>
|
|
701
679
|
>(
|
|
702
680
|
2,
|
|
703
|
-
|
|
704
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
705
|
-
finalizer: (exit: Exit.Exit<E, Z>) => Effect.Effect<R2, never, _>
|
|
706
|
-
): Sink.Sink<R | R2, E, In, L, Z> => new SinkImpl(pipe(self, toChannel, core.ensuringWith(finalizer)))
|
|
681
|
+
(self, finalizer) => new SinkImpl(pipe(self, toChannel, core.ensuringWith(finalizer)))
|
|
707
682
|
)
|
|
708
683
|
|
|
709
684
|
/** @internal */
|
|
710
|
-
export const context = <R>(): Sink.Sink<R, never,
|
|
685
|
+
export const context = <R>(): Sink.Sink<Context.Context<R>, unknown, never, never, R> => fromEffect(Effect.context<R>())
|
|
711
686
|
|
|
712
687
|
/** @internal */
|
|
713
688
|
export const contextWith = <R, Z>(
|
|
714
689
|
f: (context: Context.Context<R>) => Z
|
|
715
|
-
): Sink.Sink<
|
|
690
|
+
): Sink.Sink<Z, unknown, never, never, R> => pipe(context<R>(), map(f))
|
|
716
691
|
|
|
717
692
|
/** @internal */
|
|
718
|
-
export const contextWithEffect = <R0,
|
|
719
|
-
f: (context: Context.Context<R0>) => Effect.Effect<
|
|
720
|
-
): Sink.Sink<
|
|
693
|
+
export const contextWithEffect = <R0, A, E, R>(
|
|
694
|
+
f: (context: Context.Context<R0>) => Effect.Effect<A, E, R>
|
|
695
|
+
): Sink.Sink<A, unknown, never, E, R0 | R> => pipe(context<R0>(), mapEffect(f))
|
|
721
696
|
|
|
722
697
|
/** @internal */
|
|
723
|
-
export const contextWithSink = <R0,
|
|
724
|
-
f: (context: Context.Context<R0>) => Sink.Sink<
|
|
725
|
-
): Sink.Sink<
|
|
698
|
+
export const contextWithSink = <R0, A, In, L, E, R>(
|
|
699
|
+
f: (context: Context.Context<R0>) => Sink.Sink<A, In, L, E, R>
|
|
700
|
+
): Sink.Sink<A, In, L, E, R0 | R> =>
|
|
726
701
|
new SinkImpl(channel.unwrap(pipe(Effect.contextWith((context) => toChannel(f(context))))))
|
|
727
702
|
|
|
728
703
|
/** @internal */
|
|
729
|
-
export const every = <In>(predicate: Predicate<In>): Sink.Sink<
|
|
704
|
+
export const every = <In>(predicate: Predicate<In>): Sink.Sink<boolean, In, In> =>
|
|
730
705
|
fold(true, identity, (acc, input) => acc && predicate(input))
|
|
731
706
|
|
|
732
707
|
/** @internal */
|
|
733
|
-
export const fail = <E>(e: E): Sink.Sink<never,
|
|
708
|
+
export const fail = <E>(e: E): Sink.Sink<never, unknown, never, E> => new SinkImpl(core.fail(e))
|
|
734
709
|
|
|
735
710
|
/** @internal */
|
|
736
|
-
export const failSync = <E>(evaluate: LazyArg<E>): Sink.Sink<never,
|
|
711
|
+
export const failSync = <E>(evaluate: LazyArg<E>): Sink.Sink<never, unknown, never, E> =>
|
|
737
712
|
new SinkImpl(core.failSync(evaluate))
|
|
738
713
|
|
|
739
714
|
/** @internal */
|
|
740
|
-
export const failCause = <E>(cause: Cause.Cause<E>): Sink.Sink<never,
|
|
715
|
+
export const failCause = <E>(cause: Cause.Cause<E>): Sink.Sink<never, unknown, never, E> =>
|
|
741
716
|
new SinkImpl(core.failCause(cause))
|
|
742
717
|
|
|
743
718
|
/** @internal */
|
|
744
|
-
export const failCauseSync = <E>(evaluate: LazyArg<Cause.Cause<E>>): Sink.Sink<never,
|
|
719
|
+
export const failCauseSync = <E>(evaluate: LazyArg<Cause.Cause<E>>): Sink.Sink<never, unknown, never, E> =>
|
|
745
720
|
new SinkImpl(core.failCauseSync(evaluate))
|
|
746
721
|
|
|
747
722
|
/** @internal */
|
|
748
723
|
export const filterInput: {
|
|
749
724
|
<In, In1 extends In, In2 extends In1>(
|
|
750
725
|
f: Refinement<In1, In2>
|
|
751
|
-
): <
|
|
752
|
-
<In, In1 extends In>(f: Predicate<In1>): <
|
|
726
|
+
): <A, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In2, L, E, R>
|
|
727
|
+
<In, In1 extends In>(f: Predicate<In1>): <A, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In1, L, E, R>
|
|
753
728
|
} = <In, In1 extends In>(f: Predicate<In1>) => {
|
|
754
|
-
return <
|
|
729
|
+
return <A, L, E, R>(self: Sink.Sink<A, In, L, E, R>): Sink.Sink<A, In1, L, E, R> =>
|
|
755
730
|
pipe(self, mapInputChunks(Chunk.filter(f)))
|
|
756
731
|
}
|
|
757
732
|
|
|
758
733
|
/** @internal */
|
|
759
734
|
export const filterInputEffect = dual<
|
|
760
|
-
<
|
|
761
|
-
f: (input: In1) => Effect.Effect<
|
|
762
|
-
) => <
|
|
763
|
-
<
|
|
764
|
-
self: Sink.Sink<
|
|
765
|
-
f: (input: In1) => Effect.Effect<
|
|
766
|
-
) => Sink.Sink<
|
|
735
|
+
<In, In1 extends In, E2, R2>(
|
|
736
|
+
f: (input: In1) => Effect.Effect<boolean, E2, R2>
|
|
737
|
+
) => <A, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In1, L, E2 | E, R2 | R>,
|
|
738
|
+
<A, In, L, E, R, In1 extends In, E2, R2>(
|
|
739
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
740
|
+
f: (input: In1) => Effect.Effect<boolean, E2, R2>
|
|
741
|
+
) => Sink.Sink<A, In1, L, E2 | E, R2 | R>
|
|
767
742
|
>(
|
|
768
743
|
2,
|
|
769
|
-
|
|
770
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
771
|
-
f: (input: In1) => Effect.Effect<R2, E2, boolean>
|
|
772
|
-
): Sink.Sink<R | R2, E | E2, In1, L, Z> =>
|
|
744
|
+
(self, f) =>
|
|
773
745
|
mapInputChunksEffect(
|
|
774
746
|
self,
|
|
775
747
|
(chunk) => Effect.map(Effect.filter(chunk, f), Chunk.unsafeFromArray)
|
|
@@ -778,32 +750,32 @@ export const filterInputEffect = dual<
|
|
|
778
750
|
|
|
779
751
|
/** @internal */
|
|
780
752
|
export const findEffect = dual<
|
|
781
|
-
<
|
|
782
|
-
f: (
|
|
783
|
-
) => <
|
|
784
|
-
<
|
|
785
|
-
self: Sink.Sink<
|
|
786
|
-
f: (
|
|
787
|
-
) => Sink.Sink<
|
|
753
|
+
<A, E2, R2>(
|
|
754
|
+
f: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
755
|
+
) => <In, L extends In, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<Option.Option<A>, In, L, E2 | E, R2 | R>,
|
|
756
|
+
<A, In, L extends In, E, R, E2, R2>(
|
|
757
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
758
|
+
f: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
759
|
+
) => Sink.Sink<Option.Option<A>, In, L, E2 | E, R2 | R>
|
|
788
760
|
>(
|
|
789
761
|
2,
|
|
790
|
-
<
|
|
791
|
-
self: Sink.Sink<
|
|
792
|
-
f: (
|
|
793
|
-
): Sink.Sink<
|
|
762
|
+
<A, In, L extends In, E, R, E2, R2>(
|
|
763
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
764
|
+
f: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
765
|
+
): Sink.Sink<Option.Option<A>, In, L, E2 | E, R2 | R> => {
|
|
794
766
|
const newChannel = pipe(
|
|
795
767
|
core.fromEffect(pipe(
|
|
796
768
|
Ref.make(Chunk.empty<In>()),
|
|
797
769
|
Effect.zip(Ref.make(false))
|
|
798
770
|
)),
|
|
799
771
|
core.flatMap(([leftoversRef, upstreamDoneRef]) => {
|
|
800
|
-
const upstreamMarker: Channel.Channel<
|
|
801
|
-
|
|
772
|
+
const upstreamMarker: Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, never, never, unknown, unknown> = core
|
|
773
|
+
.readWith({
|
|
802
774
|
onInput: (input) => pipe(core.write(input), core.flatMap(() => upstreamMarker)),
|
|
803
775
|
onFailure: core.fail,
|
|
804
776
|
onDone: (done) => pipe(core.fromEffect(Ref.set(upstreamDoneRef, true)), channel.as(done))
|
|
805
777
|
})
|
|
806
|
-
const loop: Channel.Channel<
|
|
778
|
+
const loop: Channel.Channel<Chunk.Chunk<L>, Chunk.Chunk<In>, E | E2, never, Option.Option<A>, unknown, R | R2> =
|
|
807
779
|
channel.foldChannel(core.collectElements(toChannel(self)), {
|
|
808
780
|
onFailure: core.fail,
|
|
809
781
|
onSuccess: ([leftovers, doneValue]) =>
|
|
@@ -841,15 +813,15 @@ export const findEffect = dual<
|
|
|
841
813
|
export const fold = <S, In>(
|
|
842
814
|
s: S,
|
|
843
815
|
contFn: Predicate<S>,
|
|
844
|
-
f: (
|
|
845
|
-
): Sink.Sink<
|
|
816
|
+
f: (s: S, input: In) => S
|
|
817
|
+
): Sink.Sink<S, In, In> => suspend(() => new SinkImpl(foldReader(s, contFn, f)))
|
|
846
818
|
|
|
847
819
|
/** @internal */
|
|
848
820
|
const foldReader = <S, In>(
|
|
849
821
|
s: S,
|
|
850
822
|
contFn: Predicate<S>,
|
|
851
823
|
f: (z: S, input: In) => S
|
|
852
|
-
): Channel.Channel<
|
|
824
|
+
): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, never, never, S, unknown> => {
|
|
853
825
|
if (!contFn(s)) {
|
|
854
826
|
return core.succeedNow(s)
|
|
855
827
|
}
|
|
@@ -887,36 +859,36 @@ const foldChunkSplit = <S, In>(
|
|
|
887
859
|
|
|
888
860
|
/** @internal */
|
|
889
861
|
export const foldSink = dual<
|
|
890
|
-
<
|
|
862
|
+
<E, A1, In, In1 extends In, L1, E1, R1, A, A2, In2 extends In, L2, E2, R2>(
|
|
891
863
|
options: {
|
|
892
|
-
readonly onFailure: (err: E) => Sink.Sink<
|
|
893
|
-
readonly onSuccess: (
|
|
864
|
+
readonly onFailure: (err: E) => Sink.Sink<A1, In1, L1, E1, R1>
|
|
865
|
+
readonly onSuccess: (a: A) => Sink.Sink<A2, In2, L2, E2, R2>
|
|
894
866
|
}
|
|
895
|
-
) => <R>(self: Sink.Sink<
|
|
896
|
-
<
|
|
897
|
-
self: Sink.Sink<
|
|
867
|
+
) => <L, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A1 | A2, In1 & In2, L1 | L2, E1 | E2, R1 | R2 | R>,
|
|
868
|
+
<A, In, L, E, R, A1, In1 extends In, L1, E1, R1, A2, In2 extends In, L2, E2, R2>(
|
|
869
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
898
870
|
options: {
|
|
899
|
-
readonly onFailure: (err: E) => Sink.Sink<
|
|
900
|
-
readonly onSuccess: (
|
|
871
|
+
readonly onFailure: (err: E) => Sink.Sink<A1, In1, L1, E1, R1>
|
|
872
|
+
readonly onSuccess: (a: A) => Sink.Sink<A2, In2, L2, E2, R2>
|
|
901
873
|
}
|
|
902
|
-
) => Sink.Sink<
|
|
874
|
+
) => Sink.Sink<A1 | A2, In1 & In2, L1 | L2, E1 | E2, R1 | R2 | R>
|
|
903
875
|
>(
|
|
904
876
|
2,
|
|
905
|
-
<
|
|
906
|
-
self: Sink.Sink<
|
|
877
|
+
<A, In, L, E, R, A1, In1 extends In, L1, E1, R1, A2, In2 extends In, L2, E2, R2>(
|
|
878
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
907
879
|
options: {
|
|
908
|
-
readonly onFailure: (err: E) => Sink.Sink<
|
|
909
|
-
readonly onSuccess: (z:
|
|
880
|
+
readonly onFailure: (err: E) => Sink.Sink<A1, In1, L1, E1, R1>
|
|
881
|
+
readonly onSuccess: (z: A) => Sink.Sink<A2, In2, L2, E2, R2>
|
|
910
882
|
}
|
|
911
|
-
): Sink.Sink<
|
|
883
|
+
): Sink.Sink<A1 | A2, In1 & In2, L1 | L2, E1 | E2, R | R1 | R2> => {
|
|
912
884
|
const newChannel: Channel.Channel<
|
|
913
|
-
|
|
914
|
-
never,
|
|
885
|
+
Chunk.Chunk<L1 | L2>,
|
|
915
886
|
Chunk.Chunk<In1 & In2>,
|
|
916
|
-
unknown,
|
|
917
887
|
E1 | E2,
|
|
918
|
-
|
|
919
|
-
|
|
888
|
+
never,
|
|
889
|
+
A1 | A2,
|
|
890
|
+
unknown,
|
|
891
|
+
R | R1 | R2
|
|
920
892
|
> = pipe(
|
|
921
893
|
toChannel(self),
|
|
922
894
|
core.collectElements,
|
|
@@ -937,7 +909,7 @@ export const foldSink = dual<
|
|
|
937
909
|
// L <: In1 and therefore Chunk[L] can be safely cast to Chunk[In1].
|
|
938
910
|
core.flatMap((chunk) => channel.writeChunk(chunk as Chunk.Chunk<Chunk.Chunk<In1 & In2>>))
|
|
939
911
|
)
|
|
940
|
-
const passthrough = channel.identityChannel<
|
|
912
|
+
const passthrough = channel.identityChannel<Chunk.Chunk<In1 & In2>, never, unknown>()
|
|
941
913
|
const continuationSink = pipe(
|
|
942
914
|
refReader,
|
|
943
915
|
channel.zipRight(passthrough),
|
|
@@ -965,14 +937,14 @@ export const foldChunks = <S, In>(
|
|
|
965
937
|
s: S,
|
|
966
938
|
contFn: Predicate<S>,
|
|
967
939
|
f: (s: S, chunk: Chunk.Chunk<In>) => S
|
|
968
|
-
): Sink.Sink<
|
|
940
|
+
): Sink.Sink<S, In> => suspend(() => new SinkImpl(foldChunksReader(s, contFn, f)))
|
|
969
941
|
|
|
970
942
|
/** @internal */
|
|
971
943
|
const foldChunksReader = <S, In>(
|
|
972
944
|
s: S,
|
|
973
945
|
contFn: Predicate<S>,
|
|
974
946
|
f: (s: S, chunk: Chunk.Chunk<In>) => S
|
|
975
|
-
): Channel.Channel<never,
|
|
947
|
+
): Channel.Channel<never, Chunk.Chunk<In>, never, never, S, unknown> => {
|
|
976
948
|
if (!contFn(s)) {
|
|
977
949
|
return core.succeedNow(s)
|
|
978
950
|
}
|
|
@@ -984,18 +956,18 @@ const foldChunksReader = <S, In>(
|
|
|
984
956
|
}
|
|
985
957
|
|
|
986
958
|
/** @internal */
|
|
987
|
-
export const foldChunksEffect = <S,
|
|
959
|
+
export const foldChunksEffect = <S, In, E, R>(
|
|
988
960
|
s: S,
|
|
989
961
|
contFn: Predicate<S>,
|
|
990
|
-
f: (s: S, chunk: Chunk.Chunk<In>) => Effect.Effect<
|
|
991
|
-
): Sink.Sink<
|
|
962
|
+
f: (s: S, chunk: Chunk.Chunk<In>) => Effect.Effect<S, E, R>
|
|
963
|
+
): Sink.Sink<S, In, In, E, R> => suspend(() => new SinkImpl(foldChunksEffectReader(s, contFn, f)))
|
|
992
964
|
|
|
993
965
|
/** @internal */
|
|
994
966
|
const foldChunksEffectReader = <S, R, E, In>(
|
|
995
967
|
s: S,
|
|
996
968
|
contFn: Predicate<S>,
|
|
997
|
-
f: (s: S, chunk: Chunk.Chunk<In>) => Effect.Effect<
|
|
998
|
-
): Channel.Channel<
|
|
969
|
+
f: (s: S, chunk: Chunk.Chunk<In>) => Effect.Effect<S, E, R>
|
|
970
|
+
): Channel.Channel<never, Chunk.Chunk<In>, E, E, S, unknown, R> => {
|
|
999
971
|
if (!contFn(s)) {
|
|
1000
972
|
return core.succeedNow(s)
|
|
1001
973
|
}
|
|
@@ -1011,18 +983,18 @@ const foldChunksEffectReader = <S, R, E, In>(
|
|
|
1011
983
|
}
|
|
1012
984
|
|
|
1013
985
|
/** @internal */
|
|
1014
|
-
export const foldEffect = <S,
|
|
986
|
+
export const foldEffect = <S, In, E, R>(
|
|
1015
987
|
s: S,
|
|
1016
988
|
contFn: Predicate<S>,
|
|
1017
|
-
f: (s: S, input: In) => Effect.Effect<
|
|
1018
|
-
): Sink.Sink<
|
|
989
|
+
f: (s: S, input: In) => Effect.Effect<S, E, R>
|
|
990
|
+
): Sink.Sink<S, In, In, E, R> => suspend(() => new SinkImpl(foldEffectReader(s, contFn, f)))
|
|
1019
991
|
|
|
1020
992
|
/** @internal */
|
|
1021
993
|
const foldEffectReader = <S, In, R, E>(
|
|
1022
994
|
s: S,
|
|
1023
995
|
contFn: Predicate<S>,
|
|
1024
|
-
f: (s: S, input: In) => Effect.Effect<
|
|
1025
|
-
): Channel.Channel<
|
|
996
|
+
f: (s: S, input: In) => Effect.Effect<S, E, R>
|
|
997
|
+
): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, E, E, S, unknown, R> => {
|
|
1026
998
|
if (!contFn(s)) {
|
|
1027
999
|
return core.succeedNow(s)
|
|
1028
1000
|
}
|
|
@@ -1050,8 +1022,8 @@ const foldChunkSplitEffect = <S, R, E, In>(
|
|
|
1050
1022
|
s: S,
|
|
1051
1023
|
chunk: Chunk.Chunk<In>,
|
|
1052
1024
|
contFn: Predicate<S>,
|
|
1053
|
-
f: (s: S, input: In) => Effect.Effect<
|
|
1054
|
-
): Effect.Effect<
|
|
1025
|
+
f: (s: S, input: In) => Effect.Effect<S, E, R>
|
|
1026
|
+
): Effect.Effect<[S, Option.Option<Chunk.Chunk<In>>], E, R> =>
|
|
1055
1027
|
foldChunkSplitEffectInternal(s, chunk, 0, chunk.length, contFn, f)
|
|
1056
1028
|
|
|
1057
1029
|
/** @internal */
|
|
@@ -1061,8 +1033,8 @@ const foldChunkSplitEffectInternal = <S, R, E, In>(
|
|
|
1061
1033
|
index: number,
|
|
1062
1034
|
length: number,
|
|
1063
1035
|
contFn: Predicate<S>,
|
|
1064
|
-
f: (s: S, input: In) => Effect.Effect<
|
|
1065
|
-
): Effect.Effect<
|
|
1036
|
+
f: (s: S, input: In) => Effect.Effect<S, E, R>
|
|
1037
|
+
): Effect.Effect<[S, Option.Option<Chunk.Chunk<In>>], E, R> => {
|
|
1066
1038
|
if (index === length) {
|
|
1067
1039
|
return Effect.succeed([s, Option.none()])
|
|
1068
1040
|
}
|
|
@@ -1077,29 +1049,29 @@ const foldChunkSplitEffectInternal = <S, R, E, In>(
|
|
|
1077
1049
|
}
|
|
1078
1050
|
|
|
1079
1051
|
/** @internal */
|
|
1080
|
-
export const foldLeft = <S, In>(s: S, f: (s: S, input: In) => S): Sink.Sink<
|
|
1052
|
+
export const foldLeft = <S, In>(s: S, f: (s: S, input: In) => S): Sink.Sink<S, In> =>
|
|
1081
1053
|
ignoreLeftover(fold(s, constTrue, f))
|
|
1082
1054
|
|
|
1083
1055
|
/** @internal */
|
|
1084
1056
|
export const foldLeftChunks = <S, In>(
|
|
1085
1057
|
s: S,
|
|
1086
1058
|
f: (s: S, chunk: Chunk.Chunk<In>) => S
|
|
1087
|
-
): Sink.Sink<
|
|
1059
|
+
): Sink.Sink<S, In> => foldChunks(s, constTrue, f)
|
|
1088
1060
|
|
|
1089
1061
|
/** @internal */
|
|
1090
|
-
export const foldLeftChunksEffect = <S,
|
|
1062
|
+
export const foldLeftChunksEffect = <S, In, E, R>(
|
|
1091
1063
|
s: S,
|
|
1092
|
-
f: (s: S, chunk: Chunk.Chunk<In>) => Effect.Effect<
|
|
1093
|
-
): Sink.Sink<
|
|
1064
|
+
f: (s: S, chunk: Chunk.Chunk<In>) => Effect.Effect<S, E, R>
|
|
1065
|
+
): Sink.Sink<S, In, never, E, R> => ignoreLeftover(foldChunksEffect(s, constTrue, f))
|
|
1094
1066
|
|
|
1095
1067
|
/** @internal */
|
|
1096
|
-
export const foldLeftEffect = <S,
|
|
1068
|
+
export const foldLeftEffect = <S, In, E, R>(
|
|
1097
1069
|
s: S,
|
|
1098
|
-
f: (s: S, input: In) => Effect.Effect<
|
|
1099
|
-
): Sink.Sink<
|
|
1070
|
+
f: (s: S, input: In) => Effect.Effect<S, E, R>
|
|
1071
|
+
): Sink.Sink<S, In, In, E, R> => foldEffect(s, constTrue, f)
|
|
1100
1072
|
|
|
1101
1073
|
/** @internal */
|
|
1102
|
-
export const foldUntil = <S, In>(s: S, max: number, f: (
|
|
1074
|
+
export const foldUntil = <S, In>(s: S, max: number, f: (s: S, input: In) => S): Sink.Sink<S, In, In> =>
|
|
1103
1075
|
pipe(
|
|
1104
1076
|
fold<[S, number], In>(
|
|
1105
1077
|
[s, 0],
|
|
@@ -1110,11 +1082,11 @@ export const foldUntil = <S, In>(s: S, max: number, f: (z: S, input: In) => S):
|
|
|
1110
1082
|
)
|
|
1111
1083
|
|
|
1112
1084
|
/** @internal */
|
|
1113
|
-
export const foldUntilEffect = <S,
|
|
1085
|
+
export const foldUntilEffect = <S, In, E, R>(
|
|
1114
1086
|
s: S,
|
|
1115
1087
|
max: number,
|
|
1116
|
-
f: (s: S, input: In) => Effect.Effect<
|
|
1117
|
-
): Sink.Sink<
|
|
1088
|
+
f: (s: S, input: In) => Effect.Effect<S, E, R>
|
|
1089
|
+
): Sink.Sink<S, In, In, E, R> =>
|
|
1118
1090
|
pipe(
|
|
1119
1091
|
foldEffect(
|
|
1120
1092
|
[s, 0 as number] as const,
|
|
@@ -1132,7 +1104,7 @@ export const foldWeighted = <S, In>(
|
|
|
1132
1104
|
readonly cost: (s: S, input: In) => number
|
|
1133
1105
|
readonly body: (s: S, input: In) => S
|
|
1134
1106
|
}
|
|
1135
|
-
): Sink.Sink<
|
|
1107
|
+
): Sink.Sink<S, In, In> =>
|
|
1136
1108
|
foldWeightedDecompose({
|
|
1137
1109
|
...options,
|
|
1138
1110
|
decompose: Chunk.of
|
|
@@ -1147,7 +1119,7 @@ export const foldWeightedDecompose = <S, In>(
|
|
|
1147
1119
|
readonly decompose: (input: In) => Chunk.Chunk<In>
|
|
1148
1120
|
readonly body: (s: S, input: In) => S
|
|
1149
1121
|
}
|
|
1150
|
-
): Sink.Sink<
|
|
1122
|
+
): Sink.Sink<S, In, In> =>
|
|
1151
1123
|
suspend(() =>
|
|
1152
1124
|
new SinkImpl(
|
|
1153
1125
|
foldWeightedDecomposeLoop(
|
|
@@ -1171,7 +1143,7 @@ const foldWeightedDecomposeLoop = <S, In>(
|
|
|
1171
1143
|
costFn: (s: S, input: In) => number,
|
|
1172
1144
|
decompose: (input: In) => Chunk.Chunk<In>,
|
|
1173
1145
|
f: (s: S, input: In) => S
|
|
1174
|
-
): Channel.Channel<
|
|
1146
|
+
): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, never, never, S, unknown> =>
|
|
1175
1147
|
core.readWith({
|
|
1176
1148
|
onInput: (input: Chunk.Chunk<In>) => {
|
|
1177
1149
|
const [nextS, nextCost, nextDirty, leftovers] = foldWeightedDecomposeFold(
|
|
@@ -1236,15 +1208,15 @@ const foldWeightedDecomposeFold = <In, S>(
|
|
|
1236
1208
|
}
|
|
1237
1209
|
|
|
1238
1210
|
/** @internal */
|
|
1239
|
-
export const foldWeightedDecomposeEffect = <S, In, R,
|
|
1211
|
+
export const foldWeightedDecomposeEffect = <S, In, E, R, E2, R2, E3, R3>(
|
|
1240
1212
|
options: {
|
|
1241
1213
|
readonly initial: S
|
|
1242
1214
|
readonly maxCost: number
|
|
1243
|
-
readonly cost: (s: S, input: In) => Effect.Effect<
|
|
1244
|
-
readonly decompose: (input: In) => Effect.Effect<
|
|
1245
|
-
readonly body: (s: S, input: In) => Effect.Effect<
|
|
1215
|
+
readonly cost: (s: S, input: In) => Effect.Effect<number, E, R>
|
|
1216
|
+
readonly decompose: (input: In) => Effect.Effect<Chunk.Chunk<In>, E2, R2>
|
|
1217
|
+
readonly body: (s: S, input: In) => Effect.Effect<S, E3, R3>
|
|
1246
1218
|
}
|
|
1247
|
-
): Sink.Sink<
|
|
1219
|
+
): Sink.Sink<S, In, In, E | E2 | E3, R | R2 | R3> =>
|
|
1248
1220
|
suspend(() =>
|
|
1249
1221
|
new SinkImpl(
|
|
1250
1222
|
foldWeightedDecomposeEffectLoop(
|
|
@@ -1260,14 +1232,14 @@ export const foldWeightedDecomposeEffect = <S, In, R, E, R2, E2, R3, E3>(
|
|
|
1260
1232
|
)
|
|
1261
1233
|
|
|
1262
1234
|
/** @internal */
|
|
1263
|
-
export const foldWeightedEffect = <S, In, R,
|
|
1235
|
+
export const foldWeightedEffect = <S, In, E, R, E2, R2>(
|
|
1264
1236
|
options: {
|
|
1265
1237
|
readonly initial: S
|
|
1266
1238
|
readonly maxCost: number
|
|
1267
|
-
readonly cost: (s: S, input: In) => Effect.Effect<
|
|
1268
|
-
readonly body: (s: S, input: In) => Effect.Effect<
|
|
1239
|
+
readonly cost: (s: S, input: In) => Effect.Effect<number, E, R>
|
|
1240
|
+
readonly body: (s: S, input: In) => Effect.Effect<S, E2, R2>
|
|
1269
1241
|
}
|
|
1270
|
-
): Sink.Sink<
|
|
1242
|
+
): Sink.Sink<S, In, In, E | E2, R | R2> =>
|
|
1271
1243
|
foldWeightedDecomposeEffect({
|
|
1272
1244
|
...options,
|
|
1273
1245
|
decompose: (input) => Effect.succeed(Chunk.of(input))
|
|
@@ -1277,12 +1249,12 @@ export const foldWeightedEffect = <S, In, R, E, R2, E2>(
|
|
|
1277
1249
|
const foldWeightedDecomposeEffectLoop = <S, In, R, E, R2, E2, R3, E3>(
|
|
1278
1250
|
s: S,
|
|
1279
1251
|
max: number,
|
|
1280
|
-
costFn: (s: S, input: In) => Effect.Effect<
|
|
1281
|
-
decompose: (input: In) => Effect.Effect<
|
|
1282
|
-
f: (s: S, input: In) => Effect.Effect<
|
|
1252
|
+
costFn: (s: S, input: In) => Effect.Effect<number, E, R>,
|
|
1253
|
+
decompose: (input: In) => Effect.Effect<Chunk.Chunk<In>, E2, R2>,
|
|
1254
|
+
f: (s: S, input: In) => Effect.Effect<S, E3, R3>,
|
|
1283
1255
|
cost: number,
|
|
1284
1256
|
dirty: boolean
|
|
1285
|
-
): Channel.Channel<
|
|
1257
|
+
): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, E | E2 | E3, E | E2 | E3, S, unknown, R | R2 | R3> =>
|
|
1286
1258
|
core.readWith({
|
|
1287
1259
|
onInput: (input: Chunk.Chunk<In>) =>
|
|
1288
1260
|
pipe(
|
|
@@ -1305,14 +1277,14 @@ const foldWeightedDecomposeEffectLoop = <S, In, R, E, R2, E2, R3, E3>(
|
|
|
1305
1277
|
const foldWeightedDecomposeEffectFold = <S, In, R, E, R2, E2, R3, E3>(
|
|
1306
1278
|
s: S,
|
|
1307
1279
|
max: number,
|
|
1308
|
-
costFn: (s: S, input: In) => Effect.Effect<
|
|
1309
|
-
decompose: (input: In) => Effect.Effect<
|
|
1310
|
-
f: (s: S, input: In) => Effect.Effect<
|
|
1280
|
+
costFn: (s: S, input: In) => Effect.Effect<number, E, R>,
|
|
1281
|
+
decompose: (input: In) => Effect.Effect<Chunk.Chunk<In>, E2, R2>,
|
|
1282
|
+
f: (s: S, input: In) => Effect.Effect<S, E3, R3>,
|
|
1311
1283
|
input: Chunk.Chunk<In>,
|
|
1312
1284
|
dirty: boolean,
|
|
1313
1285
|
cost: number,
|
|
1314
1286
|
index: number
|
|
1315
|
-
): Effect.Effect<
|
|
1287
|
+
): Effect.Effect<[S, number, boolean, Chunk.Chunk<In>], E | E2 | E3, R | R2 | R3> => {
|
|
1316
1288
|
if (index === input.length) {
|
|
1317
1289
|
return Effect.succeed([s, cost, dirty, Chunk.empty<In>()])
|
|
1318
1290
|
}
|
|
@@ -1358,24 +1330,21 @@ const foldWeightedDecomposeEffectFold = <S, In, R, E, R2, E2, R3, E3>(
|
|
|
1358
1330
|
|
|
1359
1331
|
/** @internal */
|
|
1360
1332
|
export const flatMap = dual<
|
|
1361
|
-
<
|
|
1362
|
-
f: (
|
|
1363
|
-
) => <
|
|
1364
|
-
<
|
|
1365
|
-
self: Sink.Sink<
|
|
1366
|
-
f: (
|
|
1367
|
-
) => Sink.Sink<
|
|
1333
|
+
<A, A1, In, In1 extends In, L1, E1, R1>(
|
|
1334
|
+
f: (a: A) => Sink.Sink<A1, In1, L1, E1, R1>
|
|
1335
|
+
) => <L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A1, In & In1, L | L1, E1 | E, R1 | R>,
|
|
1336
|
+
<A, In, L, E, R, A1, In1 extends In, L1, E1, R1>(
|
|
1337
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1338
|
+
f: (a: A) => Sink.Sink<A1, In1, L1, E1, R1>
|
|
1339
|
+
) => Sink.Sink<A1, In & In1, L | L1, E1 | E, R1 | R>
|
|
1368
1340
|
>(
|
|
1369
1341
|
2,
|
|
1370
|
-
|
|
1371
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
1372
|
-
f: (z: Z) => Sink.Sink<R1, E1, In1, L1, Z1>
|
|
1373
|
-
): Sink.Sink<R | R1, E | E1, In & In1, L | L1, Z1> => foldSink(self, { onFailure: fail, onSuccess: f })
|
|
1342
|
+
(self, f) => foldSink(self, { onFailure: fail, onSuccess: f })
|
|
1374
1343
|
)
|
|
1375
1344
|
|
|
1376
1345
|
/** @internal */
|
|
1377
|
-
export const forEach = <In,
|
|
1378
|
-
const process: Channel.Channel<
|
|
1346
|
+
export const forEach = <In, _, E, R>(f: (input: In) => Effect.Effect<_, E, R>): Sink.Sink<void, In, never, E, R> => {
|
|
1347
|
+
const process: Channel.Channel<never, Chunk.Chunk<In>, E, E, void, unknown, R> = core.readWithCause({
|
|
1379
1348
|
onInput: (input: Chunk.Chunk<In>) =>
|
|
1380
1349
|
pipe(core.fromEffect(Effect.forEach(input, (v) => f(v), { discard: true })), core.flatMap(() => process)),
|
|
1381
1350
|
onFailure: core.failCause,
|
|
@@ -1385,10 +1354,10 @@ export const forEach = <In, R, E, _>(f: (input: In) => Effect.Effect<R, E, _>):
|
|
|
1385
1354
|
}
|
|
1386
1355
|
|
|
1387
1356
|
/** @internal */
|
|
1388
|
-
export const forEachChunk = <In,
|
|
1389
|
-
f: (input: Chunk.Chunk<In>) => Effect.Effect<
|
|
1390
|
-
): Sink.Sink<
|
|
1391
|
-
const process: Channel.Channel<
|
|
1357
|
+
export const forEachChunk = <In, _, E, R>(
|
|
1358
|
+
f: (input: Chunk.Chunk<In>) => Effect.Effect<_, E, R>
|
|
1359
|
+
): Sink.Sink<void, In, never, E, R> => {
|
|
1360
|
+
const process: Channel.Channel<never, Chunk.Chunk<In>, E, E, void, unknown, R> = core.readWithCause({
|
|
1392
1361
|
onInput: (input: Chunk.Chunk<In>) => pipe(core.fromEffect(f(input)), core.flatMap(() => process)),
|
|
1393
1362
|
onFailure: core.failCause,
|
|
1394
1363
|
onDone: () => core.unit
|
|
@@ -1397,10 +1366,10 @@ export const forEachChunk = <In, R, E, _>(
|
|
|
1397
1366
|
}
|
|
1398
1367
|
|
|
1399
1368
|
/** @internal */
|
|
1400
|
-
export const forEachWhile = <In,
|
|
1401
|
-
f: (input: In) => Effect.Effect<
|
|
1402
|
-
): Sink.Sink<
|
|
1403
|
-
const process: Channel.Channel<
|
|
1369
|
+
export const forEachWhile = <In, E, R>(
|
|
1370
|
+
f: (input: In) => Effect.Effect<boolean, E, R>
|
|
1371
|
+
): Sink.Sink<void, In, In, E, R> => {
|
|
1372
|
+
const process: Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, E, E, void, unknown, R> = core.readWithCause({
|
|
1404
1373
|
onInput: (input: Chunk.Chunk<In>) => forEachWhileReader(f, input, 0, input.length, process),
|
|
1405
1374
|
onFailure: core.failCause,
|
|
1406
1375
|
onDone: () => core.unit
|
|
@@ -1409,13 +1378,13 @@ export const forEachWhile = <In, R, E>(
|
|
|
1409
1378
|
}
|
|
1410
1379
|
|
|
1411
1380
|
/** @internal */
|
|
1412
|
-
const forEachWhileReader = <In,
|
|
1413
|
-
f: (input: In) => Effect.Effect<
|
|
1381
|
+
const forEachWhileReader = <In, E, R>(
|
|
1382
|
+
f: (input: In) => Effect.Effect<boolean, E, R>,
|
|
1414
1383
|
input: Chunk.Chunk<In>,
|
|
1415
1384
|
index: number,
|
|
1416
1385
|
length: number,
|
|
1417
|
-
cont: Channel.Channel<
|
|
1418
|
-
): Channel.Channel<
|
|
1386
|
+
cont: Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, E, E, void, unknown, R>
|
|
1387
|
+
): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, E, E, void, unknown, R> => {
|
|
1419
1388
|
if (index === length) {
|
|
1420
1389
|
return cont
|
|
1421
1390
|
}
|
|
@@ -1431,10 +1400,10 @@ const forEachWhileReader = <In, R, E>(
|
|
|
1431
1400
|
}
|
|
1432
1401
|
|
|
1433
1402
|
/** @internal */
|
|
1434
|
-
export const forEachChunkWhile = <In,
|
|
1435
|
-
f: (input: Chunk.Chunk<In>) => Effect.Effect<
|
|
1436
|
-
): Sink.Sink<
|
|
1437
|
-
const reader: Channel.Channel<
|
|
1403
|
+
export const forEachChunkWhile = <In, E, R>(
|
|
1404
|
+
f: (input: Chunk.Chunk<In>) => Effect.Effect<boolean, E, R>
|
|
1405
|
+
): Sink.Sink<void, In, In, E, R> => {
|
|
1406
|
+
const reader: Channel.Channel<never, Chunk.Chunk<In>, E, E, void, unknown, R> = core.readWith({
|
|
1438
1407
|
onInput: (input: Chunk.Chunk<In>) =>
|
|
1439
1408
|
pipe(
|
|
1440
1409
|
core.fromEffect(f(input)),
|
|
@@ -1447,12 +1416,12 @@ export const forEachChunkWhile = <In, R, E>(
|
|
|
1447
1416
|
}
|
|
1448
1417
|
|
|
1449
1418
|
/** @internal */
|
|
1450
|
-
export const fromChannel = <
|
|
1451
|
-
channel: Channel.Channel<
|
|
1452
|
-
): Sink.Sink<
|
|
1419
|
+
export const fromChannel = <L, In, E, A, R>(
|
|
1420
|
+
channel: Channel.Channel<Chunk.Chunk<L>, Chunk.Chunk<In>, E, never, A, unknown, R>
|
|
1421
|
+
): Sink.Sink<A, In, L, E, R> => new SinkImpl(channel)
|
|
1453
1422
|
|
|
1454
1423
|
/** @internal */
|
|
1455
|
-
export const fromEffect = <
|
|
1424
|
+
export const fromEffect = <A, E, R>(effect: Effect.Effect<A, E, R>): Sink.Sink<A, unknown, never, E, R> =>
|
|
1456
1425
|
new SinkImpl(core.fromEffect(effect))
|
|
1457
1426
|
|
|
1458
1427
|
/** @internal */
|
|
@@ -1461,23 +1430,23 @@ export const fromPubSub = <In>(
|
|
|
1461
1430
|
options?: {
|
|
1462
1431
|
readonly shutdown?: boolean | undefined
|
|
1463
1432
|
}
|
|
1464
|
-
): Sink.Sink<
|
|
1433
|
+
): Sink.Sink<void, In> => fromQueue(pubsub, options)
|
|
1465
1434
|
|
|
1466
1435
|
/** @internal */
|
|
1467
|
-
export const fromPush = <
|
|
1436
|
+
export const fromPush = <In, E, A, L, R>(
|
|
1468
1437
|
push: Effect.Effect<
|
|
1469
|
-
R
|
|
1438
|
+
(_: Option.Option<Chunk.Chunk<In>>) => Effect.Effect<void, readonly [Either.Either<E, A>, Chunk.Chunk<L>], R>,
|
|
1470
1439
|
never,
|
|
1471
|
-
|
|
1440
|
+
R
|
|
1472
1441
|
>
|
|
1473
|
-
): Sink.Sink<
|
|
1442
|
+
): Sink.Sink<A, In, L, E, Exclude<R, Scope.Scope>> =>
|
|
1474
1443
|
new SinkImpl(channel.unwrapScoped(pipe(push, Effect.map(fromPushPull))))
|
|
1475
1444
|
|
|
1476
1445
|
const fromPushPull = <R, E, In, L, Z>(
|
|
1477
1446
|
push: (
|
|
1478
1447
|
option: Option.Option<Chunk.Chunk<In>>
|
|
1479
|
-
) => Effect.Effect<
|
|
1480
|
-
): Channel.Channel<
|
|
1448
|
+
) => Effect.Effect<void, readonly [Either.Either<E, Z>, Chunk.Chunk<L>], R>
|
|
1449
|
+
): Channel.Channel<Chunk.Chunk<L>, Chunk.Chunk<In>, E, never, Z, unknown, R> =>
|
|
1481
1450
|
core.readWith({
|
|
1482
1451
|
onInput: (input: Chunk.Chunk<In>) =>
|
|
1483
1452
|
channel.foldChannel(core.fromEffect(push(Option.some(input))), {
|
|
@@ -1511,7 +1480,7 @@ export const fromQueue = <In>(
|
|
|
1511
1480
|
options?: {
|
|
1512
1481
|
readonly shutdown?: boolean | undefined
|
|
1513
1482
|
}
|
|
1514
|
-
): Sink.Sink<
|
|
1483
|
+
): Sink.Sink<void, In> =>
|
|
1515
1484
|
options?.shutdown ?
|
|
1516
1485
|
unwrapScoped(
|
|
1517
1486
|
Effect.map(
|
|
@@ -1522,7 +1491,7 @@ export const fromQueue = <In>(
|
|
|
1522
1491
|
forEachChunk((input: Chunk.Chunk<In>) => pipe(Queue.offerAll(queue, input)))
|
|
1523
1492
|
|
|
1524
1493
|
/** @internal */
|
|
1525
|
-
export const head = <In>(): Sink.Sink<
|
|
1494
|
+
export const head = <In>(): Sink.Sink<Option.Option<In>, In, In> =>
|
|
1526
1495
|
fold(
|
|
1527
1496
|
Option.none() as Option.Option<In>,
|
|
1528
1497
|
Option.isNone,
|
|
@@ -1534,138 +1503,123 @@ export const head = <In>(): Sink.Sink<never, never, In, In, Option.Option<In>> =
|
|
|
1534
1503
|
)
|
|
1535
1504
|
|
|
1536
1505
|
/** @internal */
|
|
1537
|
-
export const ignoreLeftover = <
|
|
1506
|
+
export const ignoreLeftover = <A, In, L, E, R>(self: Sink.Sink<A, In, L, E, R>): Sink.Sink<A, In, never, E, R> =>
|
|
1538
1507
|
new SinkImpl(channel.drain(toChannel(self)))
|
|
1539
1508
|
|
|
1540
1509
|
/** @internal */
|
|
1541
|
-
export const last = <In>(): Sink.Sink<
|
|
1510
|
+
export const last = <In>(): Sink.Sink<Option.Option<In>, In, In> =>
|
|
1542
1511
|
foldLeftChunks(Option.none<In>(), (s, input) => Option.orElse(Chunk.last(input), () => s))
|
|
1543
1512
|
|
|
1544
1513
|
/** @internal */
|
|
1545
|
-
export const leftover = <L>(chunk: Chunk.Chunk<L>): Sink.Sink<
|
|
1514
|
+
export const leftover = <L>(chunk: Chunk.Chunk<L>): Sink.Sink<void, unknown, L> =>
|
|
1546
1515
|
new SinkImpl(core.suspend(() => core.write(chunk)))
|
|
1547
1516
|
|
|
1548
1517
|
/** @internal */
|
|
1549
1518
|
export const map = dual<
|
|
1550
|
-
<
|
|
1551
|
-
<
|
|
1552
|
-
>(2,
|
|
1519
|
+
<A, A2>(f: (a: A) => A2) => <In, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A2, In, L, E, R>,
|
|
1520
|
+
<A, In, L, E, R, A2>(self: Sink.Sink<A, In, L, E, R>, f: (a: A) => A2) => Sink.Sink<A2, In, L, E, R>
|
|
1521
|
+
>(2, (self, f) => {
|
|
1553
1522
|
return new SinkImpl(pipe(toChannel(self), channel.map(f)))
|
|
1554
1523
|
})
|
|
1555
1524
|
|
|
1556
1525
|
/** @internal */
|
|
1557
1526
|
export const mapEffect = dual<
|
|
1558
|
-
<
|
|
1559
|
-
f: (
|
|
1560
|
-
) => <
|
|
1561
|
-
<
|
|
1562
|
-
self: Sink.Sink<
|
|
1563
|
-
f: (
|
|
1564
|
-
) => Sink.Sink<
|
|
1527
|
+
<A, A2, E2, R2>(
|
|
1528
|
+
f: (a: A) => Effect.Effect<A2, E2, R2>
|
|
1529
|
+
) => <In, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A2, In, L, E2 | E, R2 | R>,
|
|
1530
|
+
<A, In, L, E, R, A2, E2, R2>(
|
|
1531
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1532
|
+
f: (a: A) => Effect.Effect<A2, E2, R2>
|
|
1533
|
+
) => Sink.Sink<A2, In, L, E2 | E, R2 | R>
|
|
1565
1534
|
>(
|
|
1566
1535
|
2,
|
|
1567
|
-
|
|
1568
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
1569
|
-
f: (z: Z) => Effect.Effect<R2, E2, Z2>
|
|
1570
|
-
): Sink.Sink<R | R2, E | E2, In, L, Z2> => new SinkImpl(pipe(toChannel(self), channel.mapEffect(f)))
|
|
1536
|
+
(self, f) => new SinkImpl(pipe(toChannel(self), channel.mapEffect(f)))
|
|
1571
1537
|
)
|
|
1572
1538
|
|
|
1573
1539
|
/** @internal */
|
|
1574
1540
|
export const mapError = dual<
|
|
1575
|
-
<E, E2>(f: (error: E) => E2) => <
|
|
1576
|
-
<
|
|
1541
|
+
<E, E2>(f: (error: E) => E2) => <A, In, L, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In, L, E2, R>,
|
|
1542
|
+
<A, In, L, E, R, E2>(self: Sink.Sink<A, In, L, E, R>, f: (error: E) => E2) => Sink.Sink<A, In, L, E2, R>
|
|
1577
1543
|
>(
|
|
1578
1544
|
2,
|
|
1579
|
-
|
|
1580
|
-
new SinkImpl(pipe(toChannel(self), channel.mapError(f)))
|
|
1545
|
+
(self, f) => new SinkImpl(pipe(toChannel(self), channel.mapError(f)))
|
|
1581
1546
|
)
|
|
1582
1547
|
|
|
1583
1548
|
/** @internal */
|
|
1584
1549
|
export const mapLeftover = dual<
|
|
1585
|
-
<L, L2>(f: (leftover: L) => L2) => <
|
|
1586
|
-
<
|
|
1550
|
+
<L, L2>(f: (leftover: L) => L2) => <A, In, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In, L2, E, R>,
|
|
1551
|
+
<A, In, L, E, R, L2>(self: Sink.Sink<A, In, L, E, R>, f: (leftover: L) => L2) => Sink.Sink<A, In, L2, E, R>
|
|
1587
1552
|
>(
|
|
1588
1553
|
2,
|
|
1589
|
-
|
|
1590
|
-
new SinkImpl(pipe(toChannel(self), channel.mapOut(Chunk.map(f))))
|
|
1554
|
+
(self, f) => new SinkImpl(pipe(toChannel(self), channel.mapOut(Chunk.map(f))))
|
|
1591
1555
|
)
|
|
1592
1556
|
|
|
1593
1557
|
/** @internal */
|
|
1594
|
-
export const never: Sink.Sink<never,
|
|
1558
|
+
export const never: Sink.Sink<never, unknown> = fromEffect(Effect.never)
|
|
1595
1559
|
|
|
1596
1560
|
/** @internal */
|
|
1597
1561
|
export const orElse = dual<
|
|
1598
|
-
<
|
|
1599
|
-
that: LazyArg<Sink.Sink<
|
|
1600
|
-
) => <
|
|
1601
|
-
<
|
|
1602
|
-
self: Sink.Sink<
|
|
1603
|
-
that: LazyArg<Sink.Sink<
|
|
1604
|
-
) => Sink.Sink<
|
|
1562
|
+
<A2, In2, L2, E2, R2>(
|
|
1563
|
+
that: LazyArg<Sink.Sink<A2, In2, L2, E2, R2>>
|
|
1564
|
+
) => <A, In, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A2 | A, In & In2, L2 | L, E2 | E, R2 | R>,
|
|
1565
|
+
<A, In, L, E, R, A2, In2, L2, E2, R2>(
|
|
1566
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1567
|
+
that: LazyArg<Sink.Sink<A2, In2, L2, E2, R2>>
|
|
1568
|
+
) => Sink.Sink<A2 | A, In & In2, L2 | L, E2 | E, R2 | R>
|
|
1605
1569
|
>(
|
|
1606
1570
|
2,
|
|
1607
|
-
<
|
|
1608
|
-
self: Sink.Sink<
|
|
1609
|
-
that: LazyArg<Sink.Sink<
|
|
1610
|
-
): Sink.Sink<
|
|
1611
|
-
new SinkImpl<
|
|
1571
|
+
<A, In, L, E, R, A2, In2, L2, E2, R2>(
|
|
1572
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1573
|
+
that: LazyArg<Sink.Sink<A2, In2, L2, E2, R2>>
|
|
1574
|
+
): Sink.Sink<A | A2, In & In2, L | L2, E | E2, R | R2> =>
|
|
1575
|
+
new SinkImpl<A | A2, In & In2, L | L2, E | E2, R | R2>(
|
|
1612
1576
|
pipe(toChannel(self), channel.orElse(() => toChannel(that())))
|
|
1613
1577
|
)
|
|
1614
1578
|
)
|
|
1615
1579
|
|
|
1616
1580
|
/** @internal */
|
|
1617
1581
|
export const provideContext = dual<
|
|
1618
|
-
<R>(context: Context.Context<R>) => <
|
|
1619
|
-
<
|
|
1582
|
+
<R>(context: Context.Context<R>) => <A, In, L, E>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In, L, E>,
|
|
1583
|
+
<A, In, L, E, R>(self: Sink.Sink<A, In, L, E, R>, context: Context.Context<R>) => Sink.Sink<A, In, L, E>
|
|
1620
1584
|
>(
|
|
1621
1585
|
2,
|
|
1622
|
-
|
|
1623
|
-
new SinkImpl(pipe(toChannel(self), core.provideContext(context)))
|
|
1586
|
+
(self, context) => new SinkImpl(pipe(toChannel(self), core.provideContext(context)))
|
|
1624
1587
|
)
|
|
1625
1588
|
|
|
1626
1589
|
/** @internal */
|
|
1627
1590
|
export const race = dual<
|
|
1628
|
-
<R1, E1, In1, L1,
|
|
1629
|
-
that: Sink.Sink<
|
|
1630
|
-
) => <R, E, In, L,
|
|
1631
|
-
<
|
|
1632
|
-
self: Sink.Sink<
|
|
1633
|
-
that: Sink.Sink<
|
|
1634
|
-
) => Sink.Sink<
|
|
1591
|
+
<R1, E1, In1, L1, A1>(
|
|
1592
|
+
that: Sink.Sink<A1, In1, L1, E1, R1>
|
|
1593
|
+
) => <R, E, In, L, A>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A1 | A, In & In1, L1 | L, E1 | E, R1 | R>,
|
|
1594
|
+
<A, In, L, E, R, A1, In1, L1, E1, R1>(
|
|
1595
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1596
|
+
that: Sink.Sink<A1, In1, L1, E1, R1>
|
|
1597
|
+
) => Sink.Sink<A1 | A, In & In1, L1 | L, E1 | E, R1 | R>
|
|
1635
1598
|
>(
|
|
1636
1599
|
2,
|
|
1637
|
-
|
|
1638
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
1639
|
-
that: Sink.Sink<R1, E1, In1, L1, Z1>
|
|
1640
|
-
): Sink.Sink<R | R1, E | E1, In & In1, L | L1, Z | Z1> => pipe(self, raceBoth(that), map(Either.merge))
|
|
1600
|
+
(self, that) => pipe(self, raceBoth(that), map(Either.merge))
|
|
1641
1601
|
)
|
|
1642
1602
|
|
|
1643
1603
|
/** @internal */
|
|
1644
1604
|
export const raceBoth = dual<
|
|
1645
|
-
<
|
|
1646
|
-
that: Sink.Sink<
|
|
1605
|
+
<A1, In1, L1, E1, R1>(
|
|
1606
|
+
that: Sink.Sink<A1, In1, L1, E1, R1>,
|
|
1647
1607
|
options?: {
|
|
1648
1608
|
readonly capacity?: number | undefined
|
|
1649
1609
|
}
|
|
1650
|
-
) => <
|
|
1651
|
-
self: Sink.Sink<
|
|
1652
|
-
) => Sink.Sink<
|
|
1653
|
-
<
|
|
1654
|
-
self: Sink.Sink<
|
|
1655
|
-
that: Sink.Sink<
|
|
1610
|
+
) => <A, In, L, E, R>(
|
|
1611
|
+
self: Sink.Sink<A, In, L, E, R>
|
|
1612
|
+
) => Sink.Sink<Either.Either<A, A1>, In & In1, L1 | L, E1 | E, R1 | R>,
|
|
1613
|
+
<A, In, L, E, R, A1, In1, L1, E1, R1>(
|
|
1614
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1615
|
+
that: Sink.Sink<A1, In1, L1, E1, R1>,
|
|
1656
1616
|
options?: {
|
|
1657
1617
|
readonly capacity?: number | undefined
|
|
1658
1618
|
}
|
|
1659
|
-
) => Sink.Sink<
|
|
1619
|
+
) => Sink.Sink<Either.Either<A, A1>, In & In1, L1 | L, E1 | E, R1 | R>
|
|
1660
1620
|
>(
|
|
1661
1621
|
(args) => isSink(args[1]),
|
|
1662
|
-
|
|
1663
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
1664
|
-
that: Sink.Sink<R1, E1, In1, L1, Z1>,
|
|
1665
|
-
options?: {
|
|
1666
|
-
readonly capacity?: number | undefined
|
|
1667
|
-
}
|
|
1668
|
-
): Sink.Sink<R | R1, E | E1, In & In1, L | L1, Either.Either<Z, Z1>> =>
|
|
1622
|
+
(self, that, options) =>
|
|
1669
1623
|
raceWith(self, {
|
|
1670
1624
|
other: that,
|
|
1671
1625
|
onSelfDone: (selfDone) => mergeDecision.Done(Effect.map(selfDone, Either.left)),
|
|
@@ -1676,37 +1630,37 @@ export const raceBoth = dual<
|
|
|
1676
1630
|
|
|
1677
1631
|
/** @internal */
|
|
1678
1632
|
export const raceWith = dual<
|
|
1679
|
-
<
|
|
1633
|
+
<A2, In2, L2, E2, R2, A, E, A3, A4>(
|
|
1680
1634
|
options: {
|
|
1681
|
-
readonly other: Sink.Sink<
|
|
1682
|
-
readonly onSelfDone: (exit: Exit.Exit<
|
|
1683
|
-
readonly onOtherDone: (exit: Exit.Exit<
|
|
1635
|
+
readonly other: Sink.Sink<A2, In2, L2, E2, R2>
|
|
1636
|
+
readonly onSelfDone: (exit: Exit.Exit<A, E>) => MergeDecision.MergeDecision<R2, E2, A2, E2 | E, A3>
|
|
1637
|
+
readonly onOtherDone: (exit: Exit.Exit<A2, E2>) => MergeDecision.MergeDecision<R2, E, A, E2 | E, A4>
|
|
1684
1638
|
readonly capacity?: number | undefined
|
|
1685
1639
|
}
|
|
1686
|
-
) => <
|
|
1687
|
-
<
|
|
1688
|
-
self: Sink.Sink<
|
|
1640
|
+
) => <In, L, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A3 | A4, In & In2, L2 | L, E2 | E, R2 | R>,
|
|
1641
|
+
<A, In, L, E, R, A2, In2, L2, E2, R2, A3, A4>(
|
|
1642
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1689
1643
|
options: {
|
|
1690
|
-
readonly other: Sink.Sink<
|
|
1691
|
-
readonly onSelfDone: (exit: Exit.Exit<
|
|
1692
|
-
readonly onOtherDone: (exit: Exit.Exit<
|
|
1644
|
+
readonly other: Sink.Sink<A2, In2, L2, E2, R2>
|
|
1645
|
+
readonly onSelfDone: (exit: Exit.Exit<A, E>) => MergeDecision.MergeDecision<R2, E2, A2, E2 | E, A3>
|
|
1646
|
+
readonly onOtherDone: (exit: Exit.Exit<A2, E2>) => MergeDecision.MergeDecision<R2, E, A, E2 | E, A4>
|
|
1693
1647
|
readonly capacity?: number | undefined
|
|
1694
1648
|
}
|
|
1695
|
-
) => Sink.Sink<
|
|
1649
|
+
) => Sink.Sink<A3 | A4, In & In2, L2 | L, E2 | E, R2 | R>
|
|
1696
1650
|
>(
|
|
1697
1651
|
2,
|
|
1698
|
-
<
|
|
1699
|
-
self: Sink.Sink<
|
|
1652
|
+
<A, In, L, E, R, A2, In2, L2, E2, R2, A3, A4>(
|
|
1653
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1700
1654
|
options: {
|
|
1701
|
-
readonly other: Sink.Sink<
|
|
1702
|
-
readonly onSelfDone: (exit: Exit.Exit<
|
|
1703
|
-
readonly onOtherDone: (exit: Exit.Exit<
|
|
1655
|
+
readonly other: Sink.Sink<A2, In2, L2, E2, R2>
|
|
1656
|
+
readonly onSelfDone: (exit: Exit.Exit<A, E>) => MergeDecision.MergeDecision<R2, E2, A2, E2 | E, A3>
|
|
1657
|
+
readonly onOtherDone: (exit: Exit.Exit<A2, E2>) => MergeDecision.MergeDecision<R2, E, A, E2 | E, A4>
|
|
1704
1658
|
readonly capacity?: number | undefined
|
|
1705
1659
|
}
|
|
1706
|
-
): Sink.Sink<
|
|
1660
|
+
): Sink.Sink<A3 | A4, In & In2, L2 | L, E2 | E, R2 | R> => {
|
|
1707
1661
|
const scoped = Effect.gen(function*($) {
|
|
1708
1662
|
const pubsub = yield* $(
|
|
1709
|
-
PubSub.bounded<Either.Either<Exit.Exit<
|
|
1663
|
+
PubSub.bounded<Either.Either<Exit.Exit<unknown>, Chunk.Chunk<In & In2>>>(options?.capacity ?? 16)
|
|
1710
1664
|
)
|
|
1711
1665
|
const channel1 = yield* $(channel.fromPubSubScoped(pubsub))
|
|
1712
1666
|
const channel2 = yield* $(channel.fromPubSubScoped(pubsub))
|
|
@@ -1721,13 +1675,13 @@ export const raceWith = dual<
|
|
|
1721
1675
|
})
|
|
1722
1676
|
)
|
|
1723
1677
|
const racedChannel: Channel.Channel<
|
|
1724
|
-
|
|
1725
|
-
never,
|
|
1678
|
+
Chunk.Chunk<L | L2>,
|
|
1726
1679
|
Chunk.Chunk<In & In2>,
|
|
1727
|
-
unknown,
|
|
1728
1680
|
E | E2,
|
|
1729
|
-
|
|
1730
|
-
|
|
1681
|
+
never,
|
|
1682
|
+
A3 | A4,
|
|
1683
|
+
unknown,
|
|
1684
|
+
R | R2
|
|
1731
1685
|
> = channel.mergeWith(reader, {
|
|
1732
1686
|
other: writer,
|
|
1733
1687
|
onSelfDone: (_) => mergeDecision.Await((exit) => Effect.suspend(() => exit)),
|
|
@@ -1743,17 +1697,14 @@ export const raceWith = dual<
|
|
|
1743
1697
|
export const refineOrDie = dual<
|
|
1744
1698
|
<E, E2>(
|
|
1745
1699
|
pf: (error: E) => Option.Option<E2>
|
|
1746
|
-
) => <
|
|
1747
|
-
<
|
|
1748
|
-
self: Sink.Sink<
|
|
1700
|
+
) => <A, In, L, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In, L, E2, R>,
|
|
1701
|
+
<A, In, L, E, R, E2>(
|
|
1702
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1749
1703
|
pf: (error: E) => Option.Option<E2>
|
|
1750
|
-
) => Sink.Sink<
|
|
1704
|
+
) => Sink.Sink<A, In, L, E2, R>
|
|
1751
1705
|
>(
|
|
1752
1706
|
2,
|
|
1753
|
-
|
|
1754
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
1755
|
-
pf: (error: E) => Option.Option<E2>
|
|
1756
|
-
): Sink.Sink<R, E2, In, L, Z> => pipe(self, refineOrDieWith(pf, identity))
|
|
1707
|
+
(self, pf) => pipe(self, refineOrDieWith(pf, identity))
|
|
1757
1708
|
)
|
|
1758
1709
|
|
|
1759
1710
|
/** @internal */
|
|
@@ -1761,19 +1712,15 @@ export const refineOrDieWith = dual<
|
|
|
1761
1712
|
<E, E2>(
|
|
1762
1713
|
pf: (error: E) => Option.Option<E2>,
|
|
1763
1714
|
f: (error: E) => unknown
|
|
1764
|
-
) => <
|
|
1765
|
-
<
|
|
1766
|
-
self: Sink.Sink<
|
|
1715
|
+
) => <A, In, L, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In, L, E2, R>,
|
|
1716
|
+
<A, In, L, E, R, E2>(
|
|
1717
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1767
1718
|
pf: (error: E) => Option.Option<E2>,
|
|
1768
1719
|
f: (error: E) => unknown
|
|
1769
|
-
) => Sink.Sink<
|
|
1720
|
+
) => Sink.Sink<A, In, L, E2, R>
|
|
1770
1721
|
>(
|
|
1771
1722
|
3,
|
|
1772
|
-
|
|
1773
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
1774
|
-
pf: (error: E) => Option.Option<E2>,
|
|
1775
|
-
f: (error: E) => unknown
|
|
1776
|
-
): Sink.Sink<R, E2, In, L, Z> => {
|
|
1723
|
+
(self, pf, f) => {
|
|
1777
1724
|
const newChannel = pipe(
|
|
1778
1725
|
self,
|
|
1779
1726
|
toChannel,
|
|
@@ -1791,41 +1738,41 @@ export const refineOrDieWith = dual<
|
|
|
1791
1738
|
/** @internal */
|
|
1792
1739
|
export const service = <T extends Context.Tag<any, any>>(
|
|
1793
1740
|
tag: T
|
|
1794
|
-
): Sink.Sink<Context.Tag.
|
|
1741
|
+
): Sink.Sink<Context.Tag.Service<T>, unknown, never, never, Context.Tag.Identifier<T>> => serviceWith(tag, identity)
|
|
1795
1742
|
|
|
1796
1743
|
/** @internal */
|
|
1797
1744
|
export const serviceWith = <T extends Context.Tag<any, any>, Z>(
|
|
1798
1745
|
tag: T,
|
|
1799
1746
|
f: (service: Context.Tag.Service<T>) => Z
|
|
1800
|
-
): Sink.Sink<
|
|
1747
|
+
): Sink.Sink<Z, unknown, never, never, Context.Tag.Identifier<T>> => fromEffect(Effect.map(tag, f))
|
|
1801
1748
|
|
|
1802
1749
|
/** @internal */
|
|
1803
1750
|
export const serviceWithEffect = <T extends Context.Tag<any, any>, R, E, Z>(
|
|
1804
1751
|
tag: T,
|
|
1805
|
-
f: (service: Context.Tag.Service<T>) => Effect.Effect<
|
|
1806
|
-
): Sink.Sink<R | Context.Tag.Identifier<T
|
|
1752
|
+
f: (service: Context.Tag.Service<T>) => Effect.Effect<Z, E, R>
|
|
1753
|
+
): Sink.Sink<Z, unknown, never, E, R | Context.Tag.Identifier<T>> => fromEffect(Effect.flatMap(tag, f))
|
|
1807
1754
|
|
|
1808
1755
|
/** @internal */
|
|
1809
1756
|
export const serviceWithSink = <T extends Context.Tag<any, any>, R, E, In, L, Z>(
|
|
1810
1757
|
tag: T,
|
|
1811
|
-
f: (service: Context.Tag.Service<T>) => Sink.Sink<
|
|
1812
|
-
): Sink.Sink<R | Context.Tag.Identifier<T
|
|
1758
|
+
f: (service: Context.Tag.Service<T>) => Sink.Sink<Z, In, L, E, R>
|
|
1759
|
+
): Sink.Sink<Z, In, L, E, R | Context.Tag.Identifier<T>> =>
|
|
1813
1760
|
new SinkImpl(pipe(Effect.map(tag, (service) => toChannel(f(service))), channel.unwrap))
|
|
1814
1761
|
|
|
1815
1762
|
/** @internal */
|
|
1816
|
-
export const some = <In>(predicate: Predicate<In>): Sink.Sink<
|
|
1763
|
+
export const some = <In>(predicate: Predicate<In>): Sink.Sink<boolean, In, In> =>
|
|
1817
1764
|
fold(false, (bool) => !bool, (acc, input) => acc || predicate(input))
|
|
1818
1765
|
|
|
1819
1766
|
/** @internal */
|
|
1820
1767
|
export const splitWhere = dual<
|
|
1821
|
-
<In>(f: Predicate<In>) => <
|
|
1822
|
-
<
|
|
1823
|
-
>(2, <
|
|
1768
|
+
<In>(f: Predicate<In>) => <A, L extends In, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In, In, E, R>,
|
|
1769
|
+
<A, In, L extends In, E, R>(self: Sink.Sink<A, In, L, E, R>, f: Predicate<In>) => Sink.Sink<A, In, In, E, R>
|
|
1770
|
+
>(2, <A, In, L extends In, E, R>(self: Sink.Sink<A, In, L, E, R>, f: Predicate<In>): Sink.Sink<A, In, In, E, R> => {
|
|
1824
1771
|
const newChannel = pipe(
|
|
1825
1772
|
core.fromEffect(Ref.make(Chunk.empty<In>())),
|
|
1826
1773
|
core.flatMap((ref) =>
|
|
1827
1774
|
pipe(
|
|
1828
|
-
splitWhereSplitter<
|
|
1775
|
+
splitWhereSplitter<In, E>(false, ref, f),
|
|
1829
1776
|
channel.pipeToOrFail(toChannel(self)),
|
|
1830
1777
|
core.collectElements,
|
|
1831
1778
|
core.flatMap(([leftovers, z]) =>
|
|
@@ -1846,22 +1793,22 @@ export const splitWhere = dual<
|
|
|
1846
1793
|
})
|
|
1847
1794
|
|
|
1848
1795
|
/** @internal */
|
|
1849
|
-
const splitWhereSplitter = <
|
|
1796
|
+
const splitWhereSplitter = <A, E>(
|
|
1850
1797
|
written: boolean,
|
|
1851
1798
|
leftovers: Ref.Ref<Chunk.Chunk<A>>,
|
|
1852
1799
|
f: Predicate<A>
|
|
1853
|
-
): Channel.Channel<
|
|
1800
|
+
): Channel.Channel<Chunk.Chunk<A>, Chunk.Chunk<A>, E, never, unknown, unknown> =>
|
|
1854
1801
|
core.readWithCause({
|
|
1855
1802
|
onInput: (input) => {
|
|
1856
1803
|
if (Chunk.isEmpty(input)) {
|
|
1857
|
-
return splitWhereSplitter
|
|
1804
|
+
return splitWhereSplitter(written, leftovers, f)
|
|
1858
1805
|
}
|
|
1859
1806
|
if (written) {
|
|
1860
1807
|
const index = indexWhere(input, f)
|
|
1861
1808
|
if (index === -1) {
|
|
1862
1809
|
return channel.zipRight(
|
|
1863
1810
|
core.write(input),
|
|
1864
|
-
splitWhereSplitter<
|
|
1811
|
+
splitWhereSplitter<A, E>(true, leftovers, f)
|
|
1865
1812
|
)
|
|
1866
1813
|
}
|
|
1867
1814
|
const [left, right] = Chunk.splitAt(input, index)
|
|
@@ -1874,7 +1821,7 @@ const splitWhereSplitter = <E, A>(
|
|
|
1874
1821
|
if (index === -1) {
|
|
1875
1822
|
return channel.zipRight(
|
|
1876
1823
|
core.write(input),
|
|
1877
|
-
splitWhereSplitter<
|
|
1824
|
+
splitWhereSplitter<A, E>(true, leftovers, f)
|
|
1878
1825
|
)
|
|
1879
1826
|
}
|
|
1880
1827
|
const [left, right] = pipe(input, Chunk.splitAt(Math.max(index, 1)))
|
|
@@ -1901,32 +1848,28 @@ const indexWhere = <A>(self: Chunk.Chunk<A>, predicate: Predicate<A>, from = 0):
|
|
|
1901
1848
|
}
|
|
1902
1849
|
|
|
1903
1850
|
/** @internal */
|
|
1904
|
-
export const succeed = <
|
|
1851
|
+
export const succeed = <A>(a: A): Sink.Sink<A, unknown> => new SinkImpl(core.succeed(a))
|
|
1905
1852
|
|
|
1906
1853
|
/** @internal */
|
|
1907
|
-
export const sum: Sink.Sink<
|
|
1854
|
+
export const sum: Sink.Sink<number, number> = foldLeftChunks(
|
|
1908
1855
|
0,
|
|
1909
1856
|
(acc, chunk) => acc + Chunk.reduce(chunk, 0, (s, a) => s + a)
|
|
1910
1857
|
)
|
|
1911
1858
|
|
|
1912
1859
|
/** @internal */
|
|
1913
1860
|
export const summarized = dual<
|
|
1914
|
-
<
|
|
1915
|
-
summary: Effect.Effect<
|
|
1916
|
-
f: (start:
|
|
1917
|
-
) => <
|
|
1918
|
-
<
|
|
1919
|
-
self: Sink.Sink<
|
|
1920
|
-
summary: Effect.Effect<
|
|
1921
|
-
f: (start:
|
|
1922
|
-
) => Sink.Sink<
|
|
1861
|
+
<A2, E2, R2, A3>(
|
|
1862
|
+
summary: Effect.Effect<A2, E2, R2>,
|
|
1863
|
+
f: (start: A2, end: A2) => A3
|
|
1864
|
+
) => <A, In, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<[A, A3], In, L, E2 | E, R2 | R>,
|
|
1865
|
+
<A, In, L, E, R, A2, E2, R2, A3>(
|
|
1866
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1867
|
+
summary: Effect.Effect<A2, E2, R2>,
|
|
1868
|
+
f: (start: A2, end: A2) => A3
|
|
1869
|
+
) => Sink.Sink<[A, A3], In, L, E2 | E, R2 | R>
|
|
1923
1870
|
>(
|
|
1924
1871
|
3,
|
|
1925
|
-
|
|
1926
|
-
self: Sink.Sink<R, E, In, L, Z>,
|
|
1927
|
-
summary: Effect.Effect<R2, E2, Z2>,
|
|
1928
|
-
f: (start: Z2, end: Z2) => Z3
|
|
1929
|
-
): Sink.Sink<R | R2, E | E2, In, L, [Z, Z3]> => {
|
|
1872
|
+
(self, summary, f) => {
|
|
1930
1873
|
const newChannel = pipe(
|
|
1931
1874
|
core.fromEffect(summary),
|
|
1932
1875
|
core.flatMap((start) =>
|
|
@@ -1947,11 +1890,10 @@ export const summarized = dual<
|
|
|
1947
1890
|
)
|
|
1948
1891
|
|
|
1949
1892
|
/** @internal */
|
|
1950
|
-
export const sync = <
|
|
1951
|
-
new SinkImpl(core.sync(evaluate))
|
|
1893
|
+
export const sync = <A>(evaluate: LazyArg<A>): Sink.Sink<A, unknown> => new SinkImpl(core.sync(evaluate))
|
|
1952
1894
|
|
|
1953
1895
|
/** @internal */
|
|
1954
|
-
export const take = <In>(n: number): Sink.Sink<
|
|
1896
|
+
export const take = <In>(n: number): Sink.Sink<Chunk.Chunk<In>, In, In> =>
|
|
1955
1897
|
pipe(
|
|
1956
1898
|
foldChunks<Chunk.Chunk<In>, In>(
|
|
1957
1899
|
Chunk.empty(),
|
|
@@ -1965,146 +1907,146 @@ export const take = <In>(n: number): Sink.Sink<never, never, In, In, Chunk.Chunk
|
|
|
1965
1907
|
)
|
|
1966
1908
|
|
|
1967
1909
|
/** @internal */
|
|
1968
|
-
export const toChannel = <R, E, In, L,
|
|
1969
|
-
self: Sink.Sink<
|
|
1970
|
-
): Channel.Channel<
|
|
1910
|
+
export const toChannel = <R, E, In, L, A>(
|
|
1911
|
+
self: Sink.Sink<A, In, L, E, R>
|
|
1912
|
+
): Channel.Channel<Chunk.Chunk<L>, Chunk.Chunk<In>, E, never, A, unknown, R> =>
|
|
1971
1913
|
Effect.isEffect(self) ?
|
|
1972
|
-
toChannel(fromEffect(self as Effect.Effect<
|
|
1973
|
-
(self as SinkImpl<
|
|
1914
|
+
toChannel(fromEffect(self as Effect.Effect<A, E, R>)) :
|
|
1915
|
+
(self as SinkImpl<A, In, L, E, R>).channel
|
|
1974
1916
|
|
|
1975
1917
|
/** @internal */
|
|
1976
|
-
export const unwrap = <
|
|
1977
|
-
effect: Effect.Effect<
|
|
1978
|
-
): Sink.Sink<
|
|
1918
|
+
export const unwrap = <A, In, L, E2, R2, E, R>(
|
|
1919
|
+
effect: Effect.Effect<Sink.Sink<A, In, L, E2, R2>, E, R>
|
|
1920
|
+
): Sink.Sink<A, In, L, E | E2, R | R2> =>
|
|
1979
1921
|
new SinkImpl(
|
|
1980
1922
|
channel.unwrap(pipe(effect, Effect.map((sink) => toChannel(sink))))
|
|
1981
1923
|
)
|
|
1982
1924
|
|
|
1983
1925
|
/** @internal */
|
|
1984
|
-
export const unwrapScoped = <
|
|
1985
|
-
effect: Effect.Effect<
|
|
1986
|
-
): Sink.Sink<
|
|
1926
|
+
export const unwrapScoped = <A, In, L, E, R>(
|
|
1927
|
+
effect: Effect.Effect<Sink.Sink<A, In, L, E, R>, E, R>
|
|
1928
|
+
): Sink.Sink<A, In, L, E, Exclude<R, Scope.Scope>> => {
|
|
1987
1929
|
return new SinkImpl(channel.unwrapScoped(pipe(effect, Effect.map((sink) => toChannel(sink)))))
|
|
1988
1930
|
}
|
|
1989
1931
|
|
|
1990
1932
|
/** @internal */
|
|
1991
|
-
export const withDuration = <
|
|
1992
|
-
self: Sink.Sink<
|
|
1993
|
-
): Sink.Sink<
|
|
1933
|
+
export const withDuration = <A, In, L, E, R>(
|
|
1934
|
+
self: Sink.Sink<A, In, L, E, R>
|
|
1935
|
+
): Sink.Sink<[A, Duration.Duration], In, L, E, R> =>
|
|
1994
1936
|
pipe(self, summarized(Clock.currentTimeMillis, (start, end) => Duration.millis(end - start)))
|
|
1995
1937
|
|
|
1996
1938
|
/** @internal */
|
|
1997
1939
|
export const zip = dual<
|
|
1998
|
-
<
|
|
1999
|
-
that: Sink.Sink<
|
|
1940
|
+
<A2, In, In2 extends In, L2, E2, R2>(
|
|
1941
|
+
that: Sink.Sink<A2, In2, L2, E2, R2>,
|
|
2000
1942
|
options?: {
|
|
2001
1943
|
readonly concurrent?: boolean | undefined
|
|
2002
1944
|
}
|
|
2003
|
-
) => <
|
|
2004
|
-
<
|
|
2005
|
-
self: Sink.Sink<
|
|
2006
|
-
that: Sink.Sink<
|
|
1945
|
+
) => <A, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<[A, A2], In & In2, L | L2, E2 | E, R2 | R>,
|
|
1946
|
+
<A, In, L, E, R, A2, In2 extends In, L2, E2, R2>(
|
|
1947
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1948
|
+
that: Sink.Sink<A2, In2, L2, E2, R2>,
|
|
2007
1949
|
options?: {
|
|
2008
1950
|
readonly concurrent?: boolean | undefined
|
|
2009
1951
|
}
|
|
2010
|
-
) => Sink.Sink<
|
|
1952
|
+
) => Sink.Sink<[A, A2], In & In2, L | L2, E2 | E, R2 | R>
|
|
2011
1953
|
>(
|
|
2012
1954
|
(args) => isSink(args[1]),
|
|
2013
|
-
<
|
|
2014
|
-
self: Sink.Sink<
|
|
2015
|
-
that: Sink.Sink<
|
|
1955
|
+
<A, In, L, E, R, A2, In2 extends In, L2, E2, R2>(
|
|
1956
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1957
|
+
that: Sink.Sink<A2, In2, L2, E2, R2>,
|
|
2016
1958
|
options?: {
|
|
2017
1959
|
readonly concurrent?: boolean | undefined
|
|
2018
1960
|
}
|
|
2019
|
-
): Sink.Sink<
|
|
1961
|
+
): Sink.Sink<[A, A2], In & In2, L | L2, E2 | E, R2 | R> => zipWith(self, that, (z, z2) => [z, z2], options)
|
|
2020
1962
|
)
|
|
2021
1963
|
|
|
2022
1964
|
/** @internal */
|
|
2023
1965
|
export const zipLeft = dual<
|
|
2024
|
-
<
|
|
2025
|
-
that: Sink.Sink<
|
|
1966
|
+
<A2, In, In2 extends In, L2, E2, R2>(
|
|
1967
|
+
that: Sink.Sink<A2, In2, L2, E2, R2>,
|
|
2026
1968
|
options?: {
|
|
2027
1969
|
readonly concurrent?: boolean | undefined
|
|
2028
1970
|
}
|
|
2029
|
-
) => <
|
|
2030
|
-
<
|
|
2031
|
-
self: Sink.Sink<
|
|
2032
|
-
that: Sink.Sink<
|
|
1971
|
+
) => <A, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A, In & In2, L | L2, E2 | E, R2 | R>,
|
|
1972
|
+
<A, In, L, E, R, A2, In2 extends In, L2, E2, R2>(
|
|
1973
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1974
|
+
that: Sink.Sink<A2, In2, L2, E2, R2>,
|
|
2033
1975
|
options?: {
|
|
2034
1976
|
readonly concurrent?: boolean | undefined
|
|
2035
1977
|
}
|
|
2036
|
-
) => Sink.Sink<
|
|
1978
|
+
) => Sink.Sink<A, In & In2, L | L2, E2 | E, R2 | R>
|
|
2037
1979
|
>(
|
|
2038
1980
|
(args) => isSink(args[1]),
|
|
2039
|
-
<
|
|
2040
|
-
self: Sink.Sink<
|
|
2041
|
-
that: Sink.Sink<
|
|
1981
|
+
<A, In, L, E, R, A2, In2 extends In, L2, E2, R2>(
|
|
1982
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
1983
|
+
that: Sink.Sink<A2, In2, L2, E2, R2>,
|
|
2042
1984
|
options?: {
|
|
2043
1985
|
readonly concurrent?: boolean | undefined
|
|
2044
1986
|
}
|
|
2045
|
-
): Sink.Sink<
|
|
1987
|
+
): Sink.Sink<A, In & In2, L | L2, E2 | E, R2 | R> => zipWith(self, that, (z, _) => z, options)
|
|
2046
1988
|
)
|
|
2047
1989
|
|
|
2048
1990
|
/** @internal */
|
|
2049
1991
|
export const zipRight = dual<
|
|
2050
|
-
<
|
|
2051
|
-
that: Sink.Sink<
|
|
1992
|
+
<A2, In, In2 extends In, L2, E2, R2>(
|
|
1993
|
+
that: Sink.Sink<A2, In2, L2, E2, R2>,
|
|
2052
1994
|
options?: {
|
|
2053
1995
|
readonly concurrent?: boolean | undefined
|
|
2054
1996
|
}
|
|
2055
|
-
) => <
|
|
2056
|
-
<
|
|
2057
|
-
self: Sink.Sink<
|
|
2058
|
-
that: Sink.Sink<
|
|
1997
|
+
) => <A, L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A2, In & In2, L | L2, E2 | E, R2 | R>,
|
|
1998
|
+
<A, In, L, E, R, A2, In2 extends In, L2, E2, R2>(
|
|
1999
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
2000
|
+
that: Sink.Sink<A2, In2, L2, E2, R2>,
|
|
2059
2001
|
options?: {
|
|
2060
2002
|
readonly concurrent?: boolean | undefined
|
|
2061
2003
|
}
|
|
2062
|
-
) => Sink.Sink<
|
|
2004
|
+
) => Sink.Sink<A2, In & In2, L | L2, E2 | E, R2 | R>
|
|
2063
2005
|
>(
|
|
2064
2006
|
(args) => isSink(args[1]),
|
|
2065
|
-
<
|
|
2066
|
-
self: Sink.Sink<
|
|
2067
|
-
that: Sink.Sink<
|
|
2007
|
+
<A, In, L, E, R, A2, In2 extends In, L2, E2, R2>(
|
|
2008
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
2009
|
+
that: Sink.Sink<A2, In2, L2, E2, R2>,
|
|
2068
2010
|
options?: {
|
|
2069
2011
|
readonly concurrent?: boolean | undefined
|
|
2070
2012
|
}
|
|
2071
|
-
): Sink.Sink<
|
|
2013
|
+
): Sink.Sink<A2, In & In2, L | L2, E2 | E, R2 | R> => zipWith(self, that, (_, z2) => z2, options)
|
|
2072
2014
|
)
|
|
2073
2015
|
|
|
2074
2016
|
/** @internal */
|
|
2075
2017
|
export const zipWith = dual<
|
|
2076
|
-
<
|
|
2077
|
-
that: Sink.Sink<
|
|
2078
|
-
f: (
|
|
2018
|
+
<A2, In, In2 extends In, L2, E2, R2, A, A3>(
|
|
2019
|
+
that: Sink.Sink<A2, In2, L2, E2, R2>,
|
|
2020
|
+
f: (a: A, a2: A2) => A3,
|
|
2079
2021
|
options?: {
|
|
2080
2022
|
readonly concurrent?: boolean | undefined
|
|
2081
2023
|
}
|
|
2082
|
-
) => <
|
|
2083
|
-
<
|
|
2084
|
-
self: Sink.Sink<
|
|
2085
|
-
that: Sink.Sink<
|
|
2086
|
-
f: (
|
|
2024
|
+
) => <L, E, R>(self: Sink.Sink<A, In, L, E, R>) => Sink.Sink<A3, In & In2, L | L2, E2 | E, R2 | R>,
|
|
2025
|
+
<A, In, L, E, R, A2, In2 extends In, L2, E2, R2, A3>(
|
|
2026
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
2027
|
+
that: Sink.Sink<A2, In2, L2, E2, R2>,
|
|
2028
|
+
f: (a: A, a2: A2) => A3,
|
|
2087
2029
|
options?: {
|
|
2088
2030
|
readonly concurrent?: boolean | undefined
|
|
2089
2031
|
}
|
|
2090
|
-
) => Sink.Sink<
|
|
2032
|
+
) => Sink.Sink<A3, In & In2, L | L2, E2 | E, R2 | R>
|
|
2091
2033
|
>(
|
|
2092
2034
|
(args) => isSink(args[1]),
|
|
2093
|
-
<
|
|
2094
|
-
self: Sink.Sink<
|
|
2095
|
-
that: Sink.Sink<
|
|
2096
|
-
f: (
|
|
2035
|
+
<A, In, L, E, R, A2, In2 extends In, L2, E2, R2, A3>(
|
|
2036
|
+
self: Sink.Sink<A, In, L, E, R>,
|
|
2037
|
+
that: Sink.Sink<A2, In2, L2, E2, R2>,
|
|
2038
|
+
f: (a: A, a2: A2) => A3,
|
|
2097
2039
|
options?: {
|
|
2098
2040
|
readonly concurrent?: boolean | undefined
|
|
2099
2041
|
}
|
|
2100
|
-
): Sink.Sink<
|
|
2042
|
+
): Sink.Sink<A3, In & In2, L | L2, E2 | E, R2 | R> =>
|
|
2101
2043
|
options?.concurrent ?
|
|
2102
2044
|
raceWith(self, {
|
|
2103
2045
|
other: that,
|
|
2104
2046
|
onSelfDone: Exit.match({
|
|
2105
2047
|
onFailure: (cause) => mergeDecision.Done(Effect.failCause(cause)),
|
|
2106
2048
|
onSuccess: (leftZ) =>
|
|
2107
|
-
mergeDecision.Await<R | R2, E2,
|
|
2049
|
+
mergeDecision.Await<R | R2, E2, A2, E | E2, A3>(
|
|
2108
2050
|
Exit.match({
|
|
2109
2051
|
onFailure: Effect.failCause,
|
|
2110
2052
|
onSuccess: (rightZ) => Effect.succeed(f(leftZ, rightZ))
|
|
@@ -2114,7 +2056,7 @@ export const zipWith = dual<
|
|
|
2114
2056
|
onOtherDone: Exit.match({
|
|
2115
2057
|
onFailure: (cause) => mergeDecision.Done(Effect.failCause(cause)),
|
|
2116
2058
|
onSuccess: (rightZ) =>
|
|
2117
|
-
mergeDecision.Await<R | R2, E,
|
|
2059
|
+
mergeDecision.Await<R | R2, E, A, E | E2, A3>(
|
|
2118
2060
|
Exit.match({
|
|
2119
2061
|
onFailure: Effect.failCause,
|
|
2120
2062
|
onSuccess: (leftZ) => Effect.succeed(f(leftZ, rightZ))
|
|
@@ -2128,20 +2070,20 @@ export const zipWith = dual<
|
|
|
2128
2070
|
// Circular with Channel
|
|
2129
2071
|
|
|
2130
2072
|
/** @internal */
|
|
2131
|
-
export const channelToSink = <
|
|
2132
|
-
self: Channel.Channel<
|
|
2133
|
-
): Sink.Sink<
|
|
2073
|
+
export const channelToSink = <OutElem, InElem, OutErr, InErr, OutDone, Env>(
|
|
2074
|
+
self: Channel.Channel<Chunk.Chunk<OutElem>, Chunk.Chunk<InElem>, OutErr, InErr, OutDone, unknown, Env>
|
|
2075
|
+
): Sink.Sink<OutDone, InElem, OutElem, OutErr, Env> => new SinkImpl(self)
|
|
2134
2076
|
|
|
2135
2077
|
// Constants
|
|
2136
2078
|
|
|
2137
2079
|
/** @internal */
|
|
2138
|
-
export const count: Sink.Sink<
|
|
2080
|
+
export const count: Sink.Sink<number, unknown> = foldLeftChunks(
|
|
2139
2081
|
0,
|
|
2140
2082
|
(acc, chunk) => acc + chunk.length
|
|
2141
2083
|
)
|
|
2142
2084
|
|
|
2143
2085
|
/** @internal */
|
|
2144
|
-
export const mkString: Sink.Sink<
|
|
2086
|
+
export const mkString: Sink.Sink<string, unknown> = suspend(() => {
|
|
2145
2087
|
const strings: Array<string> = []
|
|
2146
2088
|
return pipe(
|
|
2147
2089
|
foldLeftChunks<void, unknown>(void 0, (_, elems) =>
|
|
@@ -2153,7 +2095,7 @@ export const mkString: Sink.Sink<never, never, unknown, never, string> = suspend
|
|
|
2153
2095
|
})
|
|
2154
2096
|
|
|
2155
2097
|
/** @internal */
|
|
2156
|
-
export const timed: Sink.Sink<
|
|
2098
|
+
export const timed: Sink.Sink<Duration.Duration, unknown> = pipe(
|
|
2157
2099
|
withDuration(drain),
|
|
2158
2100
|
map((tuple) => tuple[1])
|
|
2159
2101
|
)
|