effect 2.2.5 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +19 -19
- 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 +19 -19
- 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/cache.ts
CHANGED
|
@@ -38,7 +38,7 @@ export type MapValue<Key, Error, Value> =
|
|
|
38
38
|
export interface Complete<out Key, out Error, out Value> {
|
|
39
39
|
readonly _tag: "Complete"
|
|
40
40
|
readonly key: MapKey<Key>
|
|
41
|
-
readonly exit: Exit.Exit<
|
|
41
|
+
readonly exit: Exit.Exit<Value, Error>
|
|
42
42
|
readonly entryStats: Cache.EntryStats
|
|
43
43
|
readonly timeToLiveMillis: number
|
|
44
44
|
}
|
|
@@ -47,25 +47,25 @@ export interface Complete<out Key, out Error, out Value> {
|
|
|
47
47
|
export interface Pending<out Key, in out Error, in out Value> {
|
|
48
48
|
readonly _tag: "Pending"
|
|
49
49
|
readonly key: MapKey<Key>
|
|
50
|
-
readonly deferred: Deferred.Deferred<
|
|
50
|
+
readonly deferred: Deferred.Deferred<Value, Error>
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
/** @internal */
|
|
54
54
|
export interface Refreshing<out Key, in out Error, in out Value> {
|
|
55
55
|
readonly _tag: "Refreshing"
|
|
56
|
-
readonly deferred: Deferred.Deferred<
|
|
56
|
+
readonly deferred: Deferred.Deferred<Value, Error>
|
|
57
57
|
readonly complete: Complete<Key, Error, Value>
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
/** @internal */
|
|
61
61
|
export const complete = <Key, Error, Value>(
|
|
62
62
|
key: MapKey<Key>,
|
|
63
|
-
exit: Exit.Exit<
|
|
63
|
+
exit: Exit.Exit<Value, Error>,
|
|
64
64
|
entryStats: Cache.EntryStats,
|
|
65
65
|
timeToLiveMillis: number
|
|
66
66
|
): MapValue<Key, Error, Value> =>
|
|
67
67
|
Data.struct({
|
|
68
|
-
_tag: "Complete",
|
|
68
|
+
_tag: "Complete" as const,
|
|
69
69
|
key,
|
|
70
70
|
exit,
|
|
71
71
|
entryStats,
|
|
@@ -75,21 +75,21 @@ export const complete = <Key, Error, Value>(
|
|
|
75
75
|
/** @internal */
|
|
76
76
|
export const pending = <Key, Error, Value>(
|
|
77
77
|
key: MapKey<Key>,
|
|
78
|
-
deferred: Deferred.Deferred<
|
|
78
|
+
deferred: Deferred.Deferred<Value, Error>
|
|
79
79
|
): MapValue<Key, Error, Value> =>
|
|
80
80
|
Data.struct({
|
|
81
|
-
_tag: "Pending",
|
|
81
|
+
_tag: "Pending" as const,
|
|
82
82
|
key,
|
|
83
83
|
deferred
|
|
84
84
|
})
|
|
85
85
|
|
|
86
86
|
/** @internal */
|
|
87
87
|
export const refreshing = <Key, Error, Value>(
|
|
88
|
-
deferred: Deferred.Deferred<
|
|
88
|
+
deferred: Deferred.Deferred<Value, Error>,
|
|
89
89
|
complete: Complete<Key, Error, Value>
|
|
90
90
|
): MapValue<Key, Error, Value> =>
|
|
91
91
|
Data.struct({
|
|
92
|
-
_tag: "Refreshing",
|
|
92
|
+
_tag: "Refreshing" as const,
|
|
93
93
|
deferred,
|
|
94
94
|
complete
|
|
95
95
|
})
|
|
@@ -299,16 +299,16 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
299
299
|
readonly context: Context.Context<any>,
|
|
300
300
|
readonly fiberId: FiberId.FiberId,
|
|
301
301
|
readonly lookup: Cache.Lookup<Key, any, Error, Value>,
|
|
302
|
-
readonly timeToLive: (exit: Exit.Exit<
|
|
302
|
+
readonly timeToLive: (exit: Exit.Exit<Value, Error>) => Duration.DurationInput
|
|
303
303
|
) {
|
|
304
304
|
this.cacheState = initialCacheState()
|
|
305
305
|
}
|
|
306
306
|
|
|
307
|
-
get(key: Key): Effect.Effect<
|
|
307
|
+
get(key: Key): Effect.Effect<Value, Error> {
|
|
308
308
|
return core.map(this.getEither(key), Either.merge)
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
get cacheStats(): Effect.Effect<
|
|
311
|
+
get cacheStats(): Effect.Effect<Cache.CacheStats> {
|
|
312
312
|
return core.sync(() =>
|
|
313
313
|
makeCacheStats({
|
|
314
314
|
hits: this.cacheState.hits,
|
|
@@ -318,7 +318,7 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
318
318
|
)
|
|
319
319
|
}
|
|
320
320
|
|
|
321
|
-
getOption(key: Key): Effect.Effect<
|
|
321
|
+
getOption(key: Key): Effect.Effect<Option.Option<Value>, Error> {
|
|
322
322
|
return core.suspend(() =>
|
|
323
323
|
Option.match(MutableHashMap.get(this.cacheState.map, key), {
|
|
324
324
|
onNone: () => {
|
|
@@ -332,7 +332,7 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
332
332
|
)
|
|
333
333
|
}
|
|
334
334
|
|
|
335
|
-
getOptionComplete(key: Key): Effect.Effect<
|
|
335
|
+
getOptionComplete(key: Key): Effect.Effect<Option.Option<Value>> {
|
|
336
336
|
return core.suspend(() =>
|
|
337
337
|
Option.match(MutableHashMap.get(this.cacheState.map, key), {
|
|
338
338
|
onNone: () => {
|
|
@@ -341,16 +341,16 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
341
341
|
this.trackMiss()
|
|
342
342
|
return core.succeed(Option.none<Value>())
|
|
343
343
|
},
|
|
344
|
-
onSome: (value) => this.resolveMapValue(value, true) as Effect.Effect<
|
|
344
|
+
onSome: (value) => this.resolveMapValue(value, true) as Effect.Effect<Option.Option<Value>>
|
|
345
345
|
})
|
|
346
346
|
)
|
|
347
347
|
}
|
|
348
348
|
|
|
349
|
-
contains(key: Key): Effect.Effect<
|
|
349
|
+
contains(key: Key): Effect.Effect<boolean> {
|
|
350
350
|
return core.sync(() => MutableHashMap.has(this.cacheState.map, key))
|
|
351
351
|
}
|
|
352
352
|
|
|
353
|
-
entryStats(key: Key): Effect.Effect<
|
|
353
|
+
entryStats(key: Key): Effect.Effect<Option.Option<Cache.EntryStats>> {
|
|
354
354
|
return core.sync(() => {
|
|
355
355
|
const option = MutableHashMap.get(this.cacheState.map, key)
|
|
356
356
|
if (Option.isSome(option)) {
|
|
@@ -372,14 +372,14 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
372
372
|
})
|
|
373
373
|
}
|
|
374
374
|
|
|
375
|
-
getEither(key: Key): Effect.Effect<
|
|
376
|
-
return core.suspend((): Effect.Effect<
|
|
375
|
+
getEither(key: Key): Effect.Effect<Either.Either<Value, Value>, Error> {
|
|
376
|
+
return core.suspend((): Effect.Effect<Either.Either<Value, Value>, Error> => {
|
|
377
377
|
const k = key
|
|
378
378
|
let mapKey: MapKey<Key> | undefined = undefined
|
|
379
|
-
let deferred: Deferred.Deferred<
|
|
379
|
+
let deferred: Deferred.Deferred<Value, Error> | undefined = undefined
|
|
380
380
|
let value = Option.getOrUndefined(MutableHashMap.get(this.cacheState.map, k))
|
|
381
381
|
if (value === undefined) {
|
|
382
|
-
deferred = Deferred.unsafeMake<
|
|
382
|
+
deferred = Deferred.unsafeMake<Value, Error>(this.fiberId)
|
|
383
383
|
mapKey = makeMapKey(k)
|
|
384
384
|
if (MutableHashMap.has(this.cacheState.map, k)) {
|
|
385
385
|
value = Option.getOrUndefined(MutableHashMap.get(this.cacheState.map, k))
|
|
@@ -403,13 +403,13 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
403
403
|
})
|
|
404
404
|
}
|
|
405
405
|
|
|
406
|
-
invalidate(key: Key): Effect.Effect<
|
|
406
|
+
invalidate(key: Key): Effect.Effect<void> {
|
|
407
407
|
return core.sync(() => {
|
|
408
408
|
MutableHashMap.remove(this.cacheState.map, key)
|
|
409
409
|
})
|
|
410
410
|
}
|
|
411
411
|
|
|
412
|
-
invalidateWhen(key: Key, when: (value: Value) => boolean): Effect.Effect<
|
|
412
|
+
invalidateWhen(key: Key, when: (value: Value) => boolean): Effect.Effect<void> {
|
|
413
413
|
return core.sync(() => {
|
|
414
414
|
const value = MutableHashMap.get(this.cacheState.map, key)
|
|
415
415
|
if (Option.isSome(value) && value.value._tag === "Complete") {
|
|
@@ -422,17 +422,17 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
422
422
|
})
|
|
423
423
|
}
|
|
424
424
|
|
|
425
|
-
get invalidateAll(): Effect.Effect<
|
|
425
|
+
get invalidateAll(): Effect.Effect<void> {
|
|
426
426
|
return core.sync(() => {
|
|
427
427
|
this.cacheState.map = MutableHashMap.empty()
|
|
428
428
|
})
|
|
429
429
|
}
|
|
430
430
|
|
|
431
|
-
refresh(key: Key): Effect.Effect<
|
|
431
|
+
refresh(key: Key): Effect.Effect<void, Error> {
|
|
432
432
|
return effect.clockWith((clock) =>
|
|
433
433
|
core.suspend(() => {
|
|
434
434
|
const k = key
|
|
435
|
-
const deferred: Deferred.Deferred<
|
|
435
|
+
const deferred: Deferred.Deferred<Value, Error> = Deferred.unsafeMake(this.fiberId)
|
|
436
436
|
let value = Option.getOrUndefined(MutableHashMap.get(this.cacheState.map, k))
|
|
437
437
|
if (value === undefined) {
|
|
438
438
|
if (MutableHashMap.has(this.cacheState.map, k)) {
|
|
@@ -480,7 +480,7 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
480
480
|
)
|
|
481
481
|
}
|
|
482
482
|
|
|
483
|
-
set(key: Key, value: Value): Effect.Effect<
|
|
483
|
+
set(key: Key, value: Value): Effect.Effect<void> {
|
|
484
484
|
return effect.clockWith((clock) =>
|
|
485
485
|
core.sync(() => {
|
|
486
486
|
const now = clock.unsafeCurrentTimeMillis()
|
|
@@ -501,13 +501,13 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
501
501
|
)
|
|
502
502
|
}
|
|
503
503
|
|
|
504
|
-
get size(): Effect.Effect<
|
|
504
|
+
get size(): Effect.Effect<number> {
|
|
505
505
|
return core.sync(() => {
|
|
506
506
|
return MutableHashMap.size(this.cacheState.map)
|
|
507
507
|
})
|
|
508
508
|
}
|
|
509
509
|
|
|
510
|
-
get values(): Effect.Effect<
|
|
510
|
+
get values(): Effect.Effect<Array<Value>> {
|
|
511
511
|
return core.sync(() => {
|
|
512
512
|
const values: Array<Value> = []
|
|
513
513
|
for (const entry of this.cacheState.map) {
|
|
@@ -519,7 +519,7 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
519
519
|
})
|
|
520
520
|
}
|
|
521
521
|
|
|
522
|
-
get entries(): Effect.Effect<
|
|
522
|
+
get entries(): Effect.Effect<Array<[Key, Value]>> {
|
|
523
523
|
return core.sync(() => {
|
|
524
524
|
const values: Array<[Key, Value]> = []
|
|
525
525
|
for (const entry of this.cacheState.map) {
|
|
@@ -531,7 +531,7 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
531
531
|
})
|
|
532
532
|
}
|
|
533
533
|
|
|
534
|
-
get keys(): Effect.Effect<
|
|
534
|
+
get keys(): Effect.Effect<Array<Key>> {
|
|
535
535
|
return core.sync(() => {
|
|
536
536
|
const keys: Array<Key> = []
|
|
537
537
|
for (const entry of this.cacheState.map) {
|
|
@@ -546,7 +546,7 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
546
546
|
resolveMapValue(
|
|
547
547
|
value: MapValue<Key, Error, Value>,
|
|
548
548
|
ignorePending = false
|
|
549
|
-
): Effect.Effect<
|
|
549
|
+
): Effect.Effect<Option.Option<Value>, Error> {
|
|
550
550
|
return effect.clockWith((clock) => {
|
|
551
551
|
switch (value._tag) {
|
|
552
552
|
case "Complete": {
|
|
@@ -625,8 +625,8 @@ class CacheImpl<in out Key, in out Error, in out Value> implements Cache.Cache<K
|
|
|
625
625
|
|
|
626
626
|
lookupValueOf(
|
|
627
627
|
input: Key,
|
|
628
|
-
deferred: Deferred.Deferred<
|
|
629
|
-
): Effect.Effect<
|
|
628
|
+
deferred: Deferred.Deferred<Value, Error>
|
|
629
|
+
): Effect.Effect<Value, Error> {
|
|
630
630
|
return effect.clockWith((clock) =>
|
|
631
631
|
core.suspend(() => {
|
|
632
632
|
const key = input
|
|
@@ -670,7 +670,7 @@ export const make = <Key, Environment, Error, Value>(
|
|
|
670
670
|
readonly timeToLive: Duration.DurationInput
|
|
671
671
|
readonly lookup: Cache.Lookup<Key, Environment, Error, Value>
|
|
672
672
|
}
|
|
673
|
-
): Effect.Effect<
|
|
673
|
+
): Effect.Effect<Cache.Cache<Key, Error, Value>, never, Environment> => {
|
|
674
674
|
const timeToLive = Duration.decode(options.timeToLive)
|
|
675
675
|
return makeWith({
|
|
676
676
|
capacity: options.capacity,
|
|
@@ -684,9 +684,9 @@ export const makeWith = <Key, Environment, Error, Value>(
|
|
|
684
684
|
options: {
|
|
685
685
|
readonly capacity: number
|
|
686
686
|
readonly lookup: Cache.Lookup<Key, Environment, Error, Value>
|
|
687
|
-
readonly timeToLive: (exit: Exit.Exit<
|
|
687
|
+
readonly timeToLive: (exit: Exit.Exit<Value, Error>) => Duration.DurationInput
|
|
688
688
|
}
|
|
689
|
-
): Effect.Effect<
|
|
689
|
+
): Effect.Effect<Cache.Cache<Key, Error, Value>, never, Environment> =>
|
|
690
690
|
core.map(
|
|
691
691
|
fiberRuntime.all([core.context<Environment>(), core.fiberId]),
|
|
692
692
|
([context, fiberId]) =>
|
|
@@ -703,7 +703,7 @@ export const makeWith = <Key, Environment, Error, Value>(
|
|
|
703
703
|
export const unsafeMakeWith = <Key, Error, Value>(
|
|
704
704
|
capacity: number,
|
|
705
705
|
lookup: Cache.Lookup<Key, never, Error, Value>,
|
|
706
|
-
timeToLive: (exit: Exit.Exit<
|
|
706
|
+
timeToLive: (exit: Exit.Exit<Value, Error>) => Duration.DurationInput
|
|
707
707
|
): Cache.Cache<Key, Error, Value> =>
|
|
708
708
|
new CacheImpl<Key, Error, Value>(
|
|
709
709
|
capacity,
|
|
@@ -22,26 +22,10 @@ import * as Continuation from "./continuation.js"
|
|
|
22
22
|
import * as Subexecutor from "./subexecutor.js"
|
|
23
23
|
import * as upstreamPullRequest from "./upstreamPullRequest.js"
|
|
24
24
|
|
|
25
|
-
export type ErasedChannel<R> = Channel.Channel<
|
|
26
|
-
R,
|
|
27
|
-
unknown,
|
|
28
|
-
unknown,
|
|
29
|
-
unknown,
|
|
30
|
-
unknown,
|
|
31
|
-
unknown,
|
|
32
|
-
unknown
|
|
33
|
-
>
|
|
25
|
+
export type ErasedChannel<R> = Channel.Channel<unknown, unknown, unknown, unknown, unknown, unknown, R>
|
|
34
26
|
|
|
35
27
|
/** @internal */
|
|
36
|
-
export type ErasedExecutor<R> = ChannelExecutor<
|
|
37
|
-
R,
|
|
38
|
-
unknown,
|
|
39
|
-
unknown,
|
|
40
|
-
unknown,
|
|
41
|
-
unknown,
|
|
42
|
-
unknown,
|
|
43
|
-
unknown
|
|
44
|
-
>
|
|
28
|
+
export type ErasedExecutor<R> = ChannelExecutor<unknown, unknown, unknown, unknown, unknown, unknown, R>
|
|
45
29
|
|
|
46
30
|
/** @internal */
|
|
47
31
|
export type ErasedContinuation<R> = Continuation.Continuation<
|
|
@@ -57,15 +41,23 @@ export type ErasedContinuation<R> = Continuation.Continuation<
|
|
|
57
41
|
>
|
|
58
42
|
|
|
59
43
|
/** @internal */
|
|
60
|
-
export type ErasedFinalizer<R> = (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<
|
|
44
|
+
export type ErasedFinalizer<R> = (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<unknown, never, R>
|
|
61
45
|
|
|
62
46
|
/** @internal */
|
|
63
|
-
export class ChannelExecutor<
|
|
47
|
+
export class ChannelExecutor<
|
|
48
|
+
out OutElem,
|
|
49
|
+
in InElem = unknown,
|
|
50
|
+
out OutErr = never,
|
|
51
|
+
in InErr = unknown,
|
|
52
|
+
out OutDone = void,
|
|
53
|
+
in InDone = unknown,
|
|
54
|
+
in out Env = never
|
|
55
|
+
> {
|
|
64
56
|
private _activeSubexecutor: Subexecutor.Subexecutor<Env> | undefined = undefined
|
|
65
57
|
|
|
66
58
|
private _cancelled: Exit.Exit<OutErr, OutDone> | undefined = undefined
|
|
67
59
|
|
|
68
|
-
private _closeLastSubstream: Effect.Effect<
|
|
60
|
+
private _closeLastSubstream: Effect.Effect<unknown, never, Env> | undefined = undefined
|
|
69
61
|
|
|
70
62
|
private _currentChannel: core.Primitive | undefined
|
|
71
63
|
|
|
@@ -76,19 +68,19 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
76
68
|
private _emitted: unknown | undefined = undefined
|
|
77
69
|
|
|
78
70
|
private _executeCloseLastSubstream: (
|
|
79
|
-
effect: Effect.Effect<
|
|
80
|
-
) => Effect.Effect<
|
|
71
|
+
effect: Effect.Effect<unknown, never, Env>
|
|
72
|
+
) => Effect.Effect<unknown, never, Env>
|
|
81
73
|
|
|
82
74
|
private _input: ErasedExecutor<Env> | undefined = undefined
|
|
83
75
|
|
|
84
|
-
private _inProgressFinalizer: Effect.Effect<
|
|
76
|
+
private _inProgressFinalizer: Effect.Effect<unknown, never, Env> | undefined = undefined
|
|
85
77
|
|
|
86
78
|
private _providedEnv: Context.Context<unknown> | undefined
|
|
87
79
|
|
|
88
80
|
constructor(
|
|
89
|
-
initialChannel: Channel.Channel<
|
|
81
|
+
initialChannel: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
|
|
90
82
|
providedEnv: Context.Context<unknown> | undefined,
|
|
91
|
-
executeCloseLastSubstream: (effect: Effect.Effect<
|
|
83
|
+
executeCloseLastSubstream: (effect: Effect.Effect<unknown, never, Env>) => Effect.Effect<unknown, never, Env>
|
|
92
84
|
) {
|
|
93
85
|
this._currentChannel = initialChannel as core.Primitive
|
|
94
86
|
this._executeCloseLastSubstream = executeCloseLastSubstream
|
|
@@ -128,7 +120,7 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
128
120
|
const inputExecutor = this._input
|
|
129
121
|
this._input = undefined
|
|
130
122
|
|
|
131
|
-
const drainer = (): Effect.Effect<
|
|
123
|
+
const drainer = (): Effect.Effect<unknown, never, Env> =>
|
|
132
124
|
Effect.flatMap(bridgeInput.awaitRead(), () =>
|
|
133
125
|
Effect.suspend(() => {
|
|
134
126
|
const state = inputExecutor.run() as ChannelState.Primitive
|
|
@@ -159,7 +151,7 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
159
151
|
)
|
|
160
152
|
}
|
|
161
153
|
}
|
|
162
|
-
})) as Effect.Effect<
|
|
154
|
+
})) as Effect.Effect<unknown, never, Env>
|
|
163
155
|
|
|
164
156
|
result = ChannelState.FromEffect(
|
|
165
157
|
Effect.flatMap(
|
|
@@ -184,13 +176,13 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
184
176
|
case ChannelOpCodes.OP_CONCAT_ALL: {
|
|
185
177
|
const executor: ErasedExecutor<Env> = new ChannelExecutor(
|
|
186
178
|
this._currentChannel.value() as Channel.Channel<
|
|
187
|
-
|
|
188
|
-
unknown,
|
|
189
|
-
unknown,
|
|
179
|
+
never,
|
|
190
180
|
unknown,
|
|
191
181
|
never,
|
|
182
|
+
unknown,
|
|
192
183
|
never,
|
|
193
|
-
|
|
184
|
+
unknown,
|
|
185
|
+
Env
|
|
194
186
|
>,
|
|
195
187
|
this._providedEnv,
|
|
196
188
|
(effect) =>
|
|
@@ -278,7 +270,7 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
278
270
|
const previousInput = this._input
|
|
279
271
|
|
|
280
272
|
const leftExec: ErasedExecutor<Env> = new ChannelExecutor(
|
|
281
|
-
this._currentChannel.left() as Channel.Channel<
|
|
273
|
+
this._currentChannel.left() as Channel.Channel<never, unknown, never, unknown, never, unknown, Env>,
|
|
282
274
|
this._providedEnv,
|
|
283
275
|
(effect) => this._executeCloseLastSubstream(effect)
|
|
284
276
|
)
|
|
@@ -361,8 +353,8 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
361
353
|
return result
|
|
362
354
|
}
|
|
363
355
|
|
|
364
|
-
getDone(): Exit.Exit<
|
|
365
|
-
return this._done as Exit.Exit<
|
|
356
|
+
getDone(): Exit.Exit<OutDone, OutErr> {
|
|
357
|
+
return this._done as Exit.Exit<OutDone, OutErr>
|
|
366
358
|
}
|
|
367
359
|
|
|
368
360
|
getEmit(): OutElem {
|
|
@@ -377,11 +369,11 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
377
369
|
this._inProgressFinalizer = undefined
|
|
378
370
|
}
|
|
379
371
|
|
|
380
|
-
storeInProgressFinalizer(finalizer: Effect.Effect<
|
|
372
|
+
storeInProgressFinalizer(finalizer: Effect.Effect<unknown, never, Env> | undefined): void {
|
|
381
373
|
this._inProgressFinalizer = finalizer
|
|
382
374
|
}
|
|
383
375
|
|
|
384
|
-
popAllFinalizers(exit: Exit.Exit<unknown, unknown>): Effect.Effect<
|
|
376
|
+
popAllFinalizers(exit: Exit.Exit<unknown, unknown>): Effect.Effect<unknown, never, Env> {
|
|
385
377
|
const finalizers: Array<ErasedFinalizer<Env>> = []
|
|
386
378
|
let next = this._doneStack.pop() as Continuation.Primitive | undefined
|
|
387
379
|
while (next) {
|
|
@@ -391,9 +383,9 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
391
383
|
next = this._doneStack.pop() as Continuation.Primitive | undefined
|
|
392
384
|
}
|
|
393
385
|
const effect = (finalizers.length === 0 ? Effect.unit : runFinalizers(finalizers, exit)) as Effect.Effect<
|
|
394
|
-
|
|
386
|
+
unknown,
|
|
395
387
|
never,
|
|
396
|
-
|
|
388
|
+
Env
|
|
397
389
|
>
|
|
398
390
|
this.storeInProgressFinalizer(effect)
|
|
399
391
|
return effect
|
|
@@ -415,7 +407,7 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
415
407
|
restorePipe(
|
|
416
408
|
exit: Exit.Exit<unknown, unknown>,
|
|
417
409
|
prev: ErasedExecutor<Env> | undefined
|
|
418
|
-
): Effect.Effect<
|
|
410
|
+
): Effect.Effect<unknown, never, Env> | undefined {
|
|
419
411
|
const currInput = this._input
|
|
420
412
|
this._input = prev
|
|
421
413
|
if (currInput !== undefined) {
|
|
@@ -425,8 +417,8 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
425
417
|
return Effect.unit
|
|
426
418
|
}
|
|
427
419
|
|
|
428
|
-
close(exit: Exit.Exit<unknown, unknown>): Effect.Effect<
|
|
429
|
-
let runInProgressFinalizers: Effect.Effect<
|
|
420
|
+
close(exit: Exit.Exit<unknown, unknown>): Effect.Effect<unknown, never, Env> | undefined {
|
|
421
|
+
let runInProgressFinalizers: Effect.Effect<unknown, never, Env> | undefined = undefined
|
|
430
422
|
const finalizer = this._inProgressFinalizer
|
|
431
423
|
if (finalizer !== undefined) {
|
|
432
424
|
runInProgressFinalizers = pipe(
|
|
@@ -435,7 +427,7 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
435
427
|
)
|
|
436
428
|
}
|
|
437
429
|
|
|
438
|
-
let closeSelf: Effect.Effect<
|
|
430
|
+
let closeSelf: Effect.Effect<unknown, never, Env> | undefined = undefined
|
|
439
431
|
const selfFinalizers = this.popAllFinalizers(exit)
|
|
440
432
|
if (selfFinalizers !== undefined) {
|
|
441
433
|
closeSelf = pipe(
|
|
@@ -546,7 +538,7 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
546
538
|
|
|
547
539
|
runBracketOut(bracketOut: core.BracketOut): ChannelState.ChannelState<Env, unknown> {
|
|
548
540
|
const effect = Effect.uninterruptible(
|
|
549
|
-
Effect.matchCauseEffect(this.provide(bracketOut.acquire() as Effect.Effect<
|
|
541
|
+
Effect.matchCauseEffect(this.provide(bracketOut.acquire() as Effect.Effect<OutDone, OutErr, Env>), {
|
|
550
542
|
onFailure: (cause) =>
|
|
551
543
|
Effect.sync(() => {
|
|
552
544
|
this._currentChannel = core.failCause(cause) as core.Primitive
|
|
@@ -554,7 +546,7 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
554
546
|
onSuccess: (out) =>
|
|
555
547
|
Effect.sync(() => {
|
|
556
548
|
this.addFinalizer((exit) =>
|
|
557
|
-
this.provide(bracketOut.finalizer(out, exit)) as Effect.Effect<
|
|
549
|
+
this.provide(bracketOut.finalizer(out, exit)) as Effect.Effect<unknown, never, Env>
|
|
558
550
|
)
|
|
559
551
|
this._currentChannel = core.write(out) as core.Primitive
|
|
560
552
|
})
|
|
@@ -609,7 +601,7 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
609
601
|
this._activeSubexecutor = nextSubExec
|
|
610
602
|
}
|
|
611
603
|
|
|
612
|
-
finishWithExit(exit: Exit.Exit<unknown, unknown>): Effect.Effect<
|
|
604
|
+
finishWithExit(exit: Exit.Exit<unknown, unknown>): Effect.Effect<unknown, unknown, Env> {
|
|
613
605
|
const state = Exit.match(exit, {
|
|
614
606
|
onFailure: (cause) => this.doneHalt(cause),
|
|
615
607
|
onSuccess: (value) => this.doneSucceed(value)
|
|
@@ -622,7 +614,7 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
622
614
|
|
|
623
615
|
finishSubexecutorWithCloseEffect(
|
|
624
616
|
subexecutorDone: Exit.Exit<unknown, unknown>,
|
|
625
|
-
...closeFuncs: Array<(exit: Exit.Exit<unknown, unknown>) => Effect.Effect<
|
|
617
|
+
...closeFuncs: Array<(exit: Exit.Exit<unknown, unknown>) => Effect.Effect<unknown, never, Env> | undefined>
|
|
626
618
|
): ChannelState.ChannelState<Env, unknown> | undefined {
|
|
627
619
|
this.addFinalizer(() =>
|
|
628
620
|
pipe(
|
|
@@ -695,7 +687,7 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
695
687
|
const state = this.handleSubexecutorFailure(childExecutor, parentSubexecutor, cause)
|
|
696
688
|
return state === undefined ?
|
|
697
689
|
undefined :
|
|
698
|
-
ChannelState.effectOrUndefinedIgnored(state) as Effect.Effect<
|
|
690
|
+
ChannelState.effectOrUndefinedIgnored(state) as Effect.Effect<void, never, Env>
|
|
699
691
|
},
|
|
700
692
|
onSuccess: (doneValue) => {
|
|
701
693
|
this.finishWithDoneValue(childExecutor, parentSubexecutor, doneValue)
|
|
@@ -1006,17 +998,17 @@ export class ChannelExecutor<in out Env, in InErr, in InElem, in InDone, out Out
|
|
|
1006
998
|
}
|
|
1007
999
|
}
|
|
1008
1000
|
|
|
1009
|
-
const ifNotNull = <Env>(effect: Effect.Effect<
|
|
1001
|
+
const ifNotNull = <Env>(effect: Effect.Effect<unknown, never, Env> | undefined): Effect.Effect<unknown, never, Env> =>
|
|
1010
1002
|
effect !== undefined ? effect : Effect.unit
|
|
1011
1003
|
|
|
1012
1004
|
const runFinalizers = <Env>(
|
|
1013
1005
|
finalizers: Array<ErasedFinalizer<Env>>,
|
|
1014
1006
|
exit: Exit.Exit<unknown, unknown>
|
|
1015
|
-
): Effect.Effect<
|
|
1007
|
+
): Effect.Effect<unknown, never, Env> => {
|
|
1016
1008
|
return pipe(
|
|
1017
1009
|
Effect.forEach(finalizers, (fin) => Effect.exit(fin(exit))),
|
|
1018
1010
|
Effect.map((exits) => pipe(Exit.all(exits), Option.getOrElse(() => Exit.unit))),
|
|
1019
|
-
Effect.flatMap((exit) => Effect.suspend(() => exit as Exit.Exit<
|
|
1011
|
+
Effect.flatMap((exit) => Effect.suspend(() => exit as Exit.Exit<unknown>))
|
|
1020
1012
|
)
|
|
1021
1013
|
}
|
|
1022
1014
|
|
|
@@ -1025,11 +1017,11 @@ const runFinalizers = <Env>(
|
|
|
1025
1017
|
*/
|
|
1026
1018
|
export const readUpstream = <R, E, E2, A>(
|
|
1027
1019
|
r: ChannelState.Read,
|
|
1028
|
-
onSuccess: () => Effect.Effect<
|
|
1029
|
-
onFailure: (cause: Cause.Cause<E>) => Effect.Effect<
|
|
1030
|
-
): Effect.Effect<
|
|
1020
|
+
onSuccess: () => Effect.Effect<A, E2, R>,
|
|
1021
|
+
onFailure: (cause: Cause.Cause<E>) => Effect.Effect<A, E2, R>
|
|
1022
|
+
): Effect.Effect<A, E2, R> => {
|
|
1031
1023
|
const readStack = [r as ChannelState.Read]
|
|
1032
|
-
const read = (): Effect.Effect<
|
|
1024
|
+
const read = (): Effect.Effect<A, E2, R> => {
|
|
1033
1025
|
const current = readStack.pop()
|
|
1034
1026
|
if (current === undefined || current.upstream === undefined) {
|
|
1035
1027
|
return Effect.dieMessage("Unexpected end of input for channel execution")
|
|
@@ -1043,7 +1035,7 @@ export const readUpstream = <R, E, E2, A>(
|
|
|
1043
1035
|
return Effect.suspend(onSuccess)
|
|
1044
1036
|
}
|
|
1045
1037
|
return pipe(
|
|
1046
|
-
emitEffect as Effect.Effect<
|
|
1038
|
+
emitEffect as Effect.Effect<void>,
|
|
1047
1039
|
Effect.matchCauseEffect({ onFailure, onSuccess })
|
|
1048
1040
|
)
|
|
1049
1041
|
}
|
|
@@ -1051,7 +1043,7 @@ export const readUpstream = <R, E, E2, A>(
|
|
|
1051
1043
|
return Effect.suspend(() => read())
|
|
1052
1044
|
}
|
|
1053
1045
|
return pipe(
|
|
1054
|
-
emitEffect as Effect.Effect<
|
|
1046
|
+
emitEffect as Effect.Effect<void>,
|
|
1055
1047
|
Effect.matchCauseEffect({ onFailure, onSuccess: () => read() })
|
|
1056
1048
|
)
|
|
1057
1049
|
}
|
|
@@ -1063,7 +1055,7 @@ export const readUpstream = <R, E, E2, A>(
|
|
|
1063
1055
|
return Effect.suspend(onSuccess)
|
|
1064
1056
|
}
|
|
1065
1057
|
return pipe(
|
|
1066
|
-
doneEffect as Effect.Effect<
|
|
1058
|
+
doneEffect as Effect.Effect<void>,
|
|
1067
1059
|
Effect.matchCauseEffect({ onFailure, onSuccess })
|
|
1068
1060
|
)
|
|
1069
1061
|
}
|
|
@@ -1071,7 +1063,7 @@ export const readUpstream = <R, E, E2, A>(
|
|
|
1071
1063
|
return Effect.suspend(() => read())
|
|
1072
1064
|
}
|
|
1073
1065
|
return pipe(
|
|
1074
|
-
doneEffect as Effect.Effect<
|
|
1066
|
+
doneEffect as Effect.Effect<void>,
|
|
1075
1067
|
Effect.matchCauseEffect({ onFailure, onSuccess: () => read() })
|
|
1076
1068
|
)
|
|
1077
1069
|
}
|
|
@@ -1079,10 +1071,10 @@ export const readUpstream = <R, E, E2, A>(
|
|
|
1079
1071
|
case ChannelStateOpCodes.OP_FROM_EFFECT: {
|
|
1080
1072
|
readStack.push(current)
|
|
1081
1073
|
return pipe(
|
|
1082
|
-
current.onEffect(state.effect as Effect.Effect<
|
|
1074
|
+
current.onEffect(state.effect as Effect.Effect<void>) as Effect.Effect<void>,
|
|
1083
1075
|
Effect.catchAllCause((cause) =>
|
|
1084
1076
|
Effect.suspend(() => {
|
|
1085
|
-
const doneEffect = current.onDone(Exit.failCause(cause)) as Effect.Effect<
|
|
1077
|
+
const doneEffect = current.onDone(Exit.failCause(cause)) as Effect.Effect<void>
|
|
1086
1078
|
return doneEffect === undefined ? Effect.unit : doneEffect
|
|
1087
1079
|
})
|
|
1088
1080
|
),
|
|
@@ -1102,16 +1094,16 @@ export const readUpstream = <R, E, E2, A>(
|
|
|
1102
1094
|
|
|
1103
1095
|
/** @internal */
|
|
1104
1096
|
export const run = <Env, InErr, InDone, OutErr, OutDone>(
|
|
1105
|
-
self: Channel.Channel<
|
|
1106
|
-
): Effect.Effect<
|
|
1097
|
+
self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>
|
|
1098
|
+
): Effect.Effect<OutDone, OutErr, Env> => pipe(runScoped(self), Effect.scoped)
|
|
1107
1099
|
|
|
1108
1100
|
/** @internal */
|
|
1109
1101
|
export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
|
|
1110
|
-
self: Channel.Channel<
|
|
1111
|
-
): Effect.Effect<Env | Scope.Scope
|
|
1102
|
+
self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>
|
|
1103
|
+
): Effect.Effect<OutDone, OutErr, Env | Scope.Scope> => {
|
|
1112
1104
|
const run = (
|
|
1113
|
-
channelDeferred: Deferred.Deferred<
|
|
1114
|
-
scopeDeferred: Deferred.Deferred<
|
|
1105
|
+
channelDeferred: Deferred.Deferred<OutDone, OutErr>,
|
|
1106
|
+
scopeDeferred: Deferred.Deferred<void>,
|
|
1115
1107
|
scope: Scope.Scope
|
|
1116
1108
|
) =>
|
|
1117
1109
|
Effect.acquireUseRelease(
|
|
@@ -1141,8 +1133,8 @@ export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
|
|
|
1141
1133
|
pipe(
|
|
1142
1134
|
Effect.all([
|
|
1143
1135
|
Scope.fork(parent, ExecutionStrategy.sequential),
|
|
1144
|
-
Deferred.make<
|
|
1145
|
-
Deferred.make<
|
|
1136
|
+
Deferred.make<OutDone, OutErr>(),
|
|
1137
|
+
Deferred.make<void>()
|
|
1146
1138
|
]),
|
|
1147
1139
|
Effect.flatMap(([child, channelDeferred, scopeDeferred]) =>
|
|
1148
1140
|
pipe(
|
|
@@ -1163,13 +1155,13 @@ export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
|
|
|
1163
1155
|
/** @internal */
|
|
1164
1156
|
const runScopedInterpret = <Env, InErr, InDone, OutErr, OutDone>(
|
|
1165
1157
|
channelState: ChannelState.ChannelState<Env, OutErr>,
|
|
1166
|
-
exec: ChannelExecutor<
|
|
1167
|
-
): Effect.Effect<
|
|
1158
|
+
exec: ChannelExecutor<never, unknown, OutErr, InErr, OutDone, InDone, Env>
|
|
1159
|
+
): Effect.Effect<OutDone, OutErr, Env> => {
|
|
1168
1160
|
const op = channelState as ChannelState.Primitive
|
|
1169
1161
|
switch (op._tag) {
|
|
1170
1162
|
case ChannelStateOpCodes.OP_FROM_EFFECT: {
|
|
1171
1163
|
return pipe(
|
|
1172
|
-
op.effect as Effect.Effect<
|
|
1164
|
+
op.effect as Effect.Effect<OutDone, OutErr, Env>,
|
|
1173
1165
|
Effect.flatMap(() => runScopedInterpret(exec.run() as ChannelState.ChannelState<Env, OutErr>, exec))
|
|
1174
1166
|
)
|
|
1175
1167
|
}
|
|
@@ -1188,7 +1180,7 @@ const runScopedInterpret = <Env, InErr, InDone, OutErr, OutDone>(
|
|
|
1188
1180
|
op,
|
|
1189
1181
|
() => runScopedInterpret(exec.run() as ChannelState.ChannelState<Env, OutErr>, exec),
|
|
1190
1182
|
Effect.failCause
|
|
1191
|
-
) as Effect.Effect<
|
|
1183
|
+
) as Effect.Effect<OutDone, OutErr, Env>
|
|
1192
1184
|
}
|
|
1193
1185
|
}
|
|
1194
1186
|
}
|