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/pubsub.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type * as Effect from "../Effect.js"
|
|
|
4
4
|
import { dual, pipe } from "../Function.js"
|
|
5
5
|
import * as MutableQueue from "../MutableQueue.js"
|
|
6
6
|
import * as MutableRef from "../MutableRef.js"
|
|
7
|
+
import { nextPow2 } from "../Number.js"
|
|
7
8
|
import * as Option from "../Option.js"
|
|
8
9
|
import { pipeArguments } from "../Pipeable.js"
|
|
9
10
|
import type * as PubSub from "../PubSub.js"
|
|
@@ -41,12 +42,12 @@ interface Subscription<out A> {
|
|
|
41
42
|
/** @internal */
|
|
42
43
|
type Subscribers<A> = Map<
|
|
43
44
|
Subscription<A>,
|
|
44
|
-
Set<MutableQueue.MutableQueue<Deferred.Deferred<
|
|
45
|
+
Set<MutableQueue.MutableQueue<Deferred.Deferred<A>>>
|
|
45
46
|
>
|
|
46
47
|
|
|
47
48
|
const addSubscribers = <A>(
|
|
48
49
|
subscription: Subscription<A>,
|
|
49
|
-
pollers: MutableQueue.MutableQueue<Deferred.Deferred<
|
|
50
|
+
pollers: MutableQueue.MutableQueue<Deferred.Deferred<A>>
|
|
50
51
|
) =>
|
|
51
52
|
(subscribers: Subscribers<A>) => {
|
|
52
53
|
if (!subscribers.has(subscription)) {
|
|
@@ -58,7 +59,7 @@ const addSubscribers = <A>(
|
|
|
58
59
|
|
|
59
60
|
const removeSubscribers = <A>(
|
|
60
61
|
subscription: Subscription<A>,
|
|
61
|
-
pollers: MutableQueue.MutableQueue<Deferred.Deferred<
|
|
62
|
+
pollers: MutableQueue.MutableQueue<Deferred.Deferred<A>>
|
|
62
63
|
) =>
|
|
63
64
|
(subscribers: Subscribers<A>) => {
|
|
64
65
|
if (!subscribers.has(subscription)) {
|
|
@@ -72,28 +73,28 @@ const removeSubscribers = <A>(
|
|
|
72
73
|
}
|
|
73
74
|
|
|
74
75
|
/** @internal */
|
|
75
|
-
export const bounded = <A>(requestedCapacity: number): Effect.Effect<
|
|
76
|
+
export const bounded = <A>(requestedCapacity: number): Effect.Effect<PubSub.PubSub<A>> =>
|
|
76
77
|
pipe(
|
|
77
78
|
core.sync(() => makeBoundedPubSub<A>(requestedCapacity)),
|
|
78
79
|
core.flatMap((atomicPubSub) => makePubSub(atomicPubSub, new BackPressureStrategy()))
|
|
79
80
|
)
|
|
80
81
|
|
|
81
82
|
/** @internal */
|
|
82
|
-
export const dropping = <A>(requestedCapacity: number): Effect.Effect<
|
|
83
|
+
export const dropping = <A>(requestedCapacity: number): Effect.Effect<PubSub.PubSub<A>> =>
|
|
83
84
|
pipe(
|
|
84
85
|
core.sync(() => makeBoundedPubSub<A>(requestedCapacity)),
|
|
85
86
|
core.flatMap((atomicPubSub) => makePubSub(atomicPubSub, new DroppingStrategy()))
|
|
86
87
|
)
|
|
87
88
|
|
|
88
89
|
/** @internal */
|
|
89
|
-
export const sliding = <A>(requestedCapacity: number): Effect.Effect<
|
|
90
|
+
export const sliding = <A>(requestedCapacity: number): Effect.Effect<PubSub.PubSub<A>> =>
|
|
90
91
|
pipe(
|
|
91
92
|
core.sync(() => makeBoundedPubSub<A>(requestedCapacity)),
|
|
92
93
|
core.flatMap((atomicPubSub) => makePubSub(atomicPubSub, new SlidingStrategy()))
|
|
93
94
|
)
|
|
94
95
|
|
|
95
96
|
/** @internal */
|
|
96
|
-
export const unbounded = <A>(): Effect.Effect<
|
|
97
|
+
export const unbounded = <A>(): Effect.Effect<PubSub.PubSub<A>> =>
|
|
97
98
|
pipe(
|
|
98
99
|
core.sync(() => makeUnboundedPubSub<A>()),
|
|
99
100
|
core.flatMap((atomicPubSub) => makePubSub(atomicPubSub, new DroppingStrategy()))
|
|
@@ -103,37 +104,37 @@ export const unbounded = <A>(): Effect.Effect<never, never, PubSub.PubSub<A>> =>
|
|
|
103
104
|
export const capacity = <A>(self: PubSub.PubSub<A>): number => self.capacity()
|
|
104
105
|
|
|
105
106
|
/** @internal */
|
|
106
|
-
export const size = <A>(self: PubSub.PubSub<A>): Effect.Effect<
|
|
107
|
+
export const size = <A>(self: PubSub.PubSub<A>): Effect.Effect<number> => self.size
|
|
107
108
|
|
|
108
109
|
/** @internal */
|
|
109
|
-
export const isFull = <A>(self: PubSub.PubSub<A>): Effect.Effect<
|
|
110
|
+
export const isFull = <A>(self: PubSub.PubSub<A>): Effect.Effect<boolean> => self.isFull
|
|
110
111
|
|
|
111
112
|
/** @internal */
|
|
112
|
-
export const isEmpty = <A>(self: PubSub.PubSub<A>): Effect.Effect<
|
|
113
|
+
export const isEmpty = <A>(self: PubSub.PubSub<A>): Effect.Effect<boolean> => self.isEmpty
|
|
113
114
|
|
|
114
115
|
/** @internal */
|
|
115
|
-
export const shutdown = <A>(self: PubSub.PubSub<A>): Effect.Effect<
|
|
116
|
+
export const shutdown = <A>(self: PubSub.PubSub<A>): Effect.Effect<void> => self.shutdown
|
|
116
117
|
|
|
117
118
|
/** @internal */
|
|
118
|
-
export const isShutdown = <A>(self: PubSub.PubSub<A>): Effect.Effect<
|
|
119
|
+
export const isShutdown = <A>(self: PubSub.PubSub<A>): Effect.Effect<boolean> => self.isShutdown
|
|
119
120
|
|
|
120
121
|
/** @internal */
|
|
121
|
-
export const awaitShutdown = <A>(self: PubSub.PubSub<A>): Effect.Effect<
|
|
122
|
+
export const awaitShutdown = <A>(self: PubSub.PubSub<A>): Effect.Effect<void> => self.awaitShutdown
|
|
122
123
|
|
|
123
124
|
/** @internal */
|
|
124
125
|
export const publish = dual<
|
|
125
|
-
<A>(value: A) => (self: PubSub.PubSub<A>) => Effect.Effect<
|
|
126
|
-
<A>(self: PubSub.PubSub<A>, value: A) => Effect.Effect<
|
|
126
|
+
<A>(value: A) => (self: PubSub.PubSub<A>) => Effect.Effect<boolean>,
|
|
127
|
+
<A>(self: PubSub.PubSub<A>, value: A) => Effect.Effect<boolean>
|
|
127
128
|
>(2, (self, value) => self.publish(value))
|
|
128
129
|
|
|
129
130
|
/** @internal */
|
|
130
131
|
export const publishAll = dual<
|
|
131
|
-
<A>(elements: Iterable<A>) => (self: PubSub.PubSub<A>) => Effect.Effect<
|
|
132
|
-
<A>(self: PubSub.PubSub<A>, elements: Iterable<A>) => Effect.Effect<
|
|
132
|
+
<A>(elements: Iterable<A>) => (self: PubSub.PubSub<A>) => Effect.Effect<boolean>,
|
|
133
|
+
<A>(self: PubSub.PubSub<A>, elements: Iterable<A>) => Effect.Effect<boolean>
|
|
133
134
|
>(2, (self, elements) => self.publishAll(elements))
|
|
134
135
|
|
|
135
136
|
/** @internal */
|
|
136
|
-
export const subscribe = <A>(self: PubSub.PubSub<A>): Effect.Effect<
|
|
137
|
+
export const subscribe = <A>(self: PubSub.PubSub<A>): Effect.Effect<Queue.Dequeue<A>, never, Scope.Scope> =>
|
|
137
138
|
self.subscribe
|
|
138
139
|
|
|
139
140
|
/** @internal */
|
|
@@ -158,13 +159,13 @@ const makeSubscription = <A>(
|
|
|
158
159
|
pubsub: AtomicPubSub<A>,
|
|
159
160
|
subscribers: Subscribers<A>,
|
|
160
161
|
strategy: PubSubStrategy<A>
|
|
161
|
-
): Effect.Effect<
|
|
162
|
-
core.map(core.deferredMake<
|
|
162
|
+
): Effect.Effect<Queue.Dequeue<A>> =>
|
|
163
|
+
core.map(core.deferredMake<void>(), (deferred) =>
|
|
163
164
|
unsafeMakeSubscription(
|
|
164
165
|
pubsub,
|
|
165
166
|
subscribers,
|
|
166
167
|
pubsub.subscribe(),
|
|
167
|
-
MutableQueue.unbounded<Deferred.Deferred<
|
|
168
|
+
MutableQueue.unbounded<Deferred.Deferred<A>>(),
|
|
168
169
|
deferred,
|
|
169
170
|
MutableRef.make(false),
|
|
170
171
|
strategy
|
|
@@ -175,8 +176,8 @@ export const unsafeMakeSubscription = <A>(
|
|
|
175
176
|
pubsub: AtomicPubSub<A>,
|
|
176
177
|
subscribers: Subscribers<A>,
|
|
177
178
|
subscription: Subscription<A>,
|
|
178
|
-
pollers: MutableQueue.MutableQueue<Deferred.Deferred<
|
|
179
|
-
shutdownHook: Deferred.Deferred<
|
|
179
|
+
pollers: MutableQueue.MutableQueue<Deferred.Deferred<A>>,
|
|
180
|
+
shutdownHook: Deferred.Deferred<void>,
|
|
180
181
|
shutdownFlag: MutableRef.MutableRef<boolean>,
|
|
181
182
|
strategy: PubSubStrategy<A>
|
|
182
183
|
): Queue.Dequeue<A> => {
|
|
@@ -826,8 +827,8 @@ class SubscriptionImpl<in out A> implements Queue.Dequeue<A> {
|
|
|
826
827
|
readonly pubsub: AtomicPubSub<A>,
|
|
827
828
|
readonly subscribers: Subscribers<A>,
|
|
828
829
|
readonly subscription: Subscription<A>,
|
|
829
|
-
readonly pollers: MutableQueue.MutableQueue<Deferred.Deferred<
|
|
830
|
-
readonly shutdownHook: Deferred.Deferred<
|
|
830
|
+
readonly pollers: MutableQueue.MutableQueue<Deferred.Deferred<A>>,
|
|
831
|
+
readonly shutdownHook: Deferred.Deferred<void>,
|
|
831
832
|
readonly shutdownFlag: MutableRef.MutableRef<boolean>,
|
|
832
833
|
readonly strategy: PubSubStrategy<A>
|
|
833
834
|
) {
|
|
@@ -845,7 +846,7 @@ class SubscriptionImpl<in out A> implements Queue.Dequeue<A> {
|
|
|
845
846
|
return !MutableRef.get(this.shutdownFlag)
|
|
846
847
|
}
|
|
847
848
|
|
|
848
|
-
get size(): Effect.Effect<
|
|
849
|
+
get size(): Effect.Effect<number> {
|
|
849
850
|
return core.suspend(() =>
|
|
850
851
|
MutableRef.get(this.shutdownFlag)
|
|
851
852
|
? core.interrupt
|
|
@@ -860,17 +861,17 @@ class SubscriptionImpl<in out A> implements Queue.Dequeue<A> {
|
|
|
860
861
|
return Option.some(this.subscription.size())
|
|
861
862
|
}
|
|
862
863
|
|
|
863
|
-
get isFull(): Effect.Effect<
|
|
864
|
+
get isFull(): Effect.Effect<boolean> {
|
|
864
865
|
return core.map(this.size, (size) => size === this.capacity())
|
|
865
866
|
}
|
|
866
867
|
|
|
867
|
-
get isEmpty(): Effect.Effect<
|
|
868
|
+
get isEmpty(): Effect.Effect<boolean> {
|
|
868
869
|
return core.map(this.size, (size) => size === 0)
|
|
869
870
|
}
|
|
870
871
|
|
|
871
|
-
get shutdown(): Effect.Effect<
|
|
872
|
+
get shutdown(): Effect.Effect<void> {
|
|
872
873
|
return core.uninterruptible(
|
|
873
|
-
core.withFiberRuntime<
|
|
874
|
+
core.withFiberRuntime<void>((state) => {
|
|
874
875
|
MutableRef.set(this.shutdownFlag, true)
|
|
875
876
|
return pipe(
|
|
876
877
|
fiberRuntime.forEachParUnbounded(
|
|
@@ -890,16 +891,16 @@ class SubscriptionImpl<in out A> implements Queue.Dequeue<A> {
|
|
|
890
891
|
)
|
|
891
892
|
}
|
|
892
893
|
|
|
893
|
-
get isShutdown(): Effect.Effect<
|
|
894
|
+
get isShutdown(): Effect.Effect<boolean> {
|
|
894
895
|
return core.sync(() => MutableRef.get(this.shutdownFlag))
|
|
895
896
|
}
|
|
896
897
|
|
|
897
|
-
get awaitShutdown(): Effect.Effect<
|
|
898
|
+
get awaitShutdown(): Effect.Effect<void> {
|
|
898
899
|
return core.deferredAwait(this.shutdownHook)
|
|
899
900
|
}
|
|
900
901
|
|
|
901
|
-
get take(): Effect.Effect<
|
|
902
|
-
return core.withFiberRuntime
|
|
902
|
+
get take(): Effect.Effect<A> {
|
|
903
|
+
return core.withFiberRuntime((state) => {
|
|
903
904
|
if (MutableRef.get(this.shutdownFlag)) {
|
|
904
905
|
return core.interrupt
|
|
905
906
|
}
|
|
@@ -907,7 +908,7 @@ class SubscriptionImpl<in out A> implements Queue.Dequeue<A> {
|
|
|
907
908
|
? this.subscription.poll(MutableQueue.EmptyMutableQueue)
|
|
908
909
|
: MutableQueue.EmptyMutableQueue
|
|
909
910
|
if (message === MutableQueue.EmptyMutableQueue) {
|
|
910
|
-
const deferred = core.deferredUnsafeMake<
|
|
911
|
+
const deferred = core.deferredUnsafeMake<A>(state.id())
|
|
911
912
|
return pipe(
|
|
912
913
|
core.suspend(() => {
|
|
913
914
|
pipe(this.pollers, MutableQueue.offer(deferred))
|
|
@@ -929,7 +930,7 @@ class SubscriptionImpl<in out A> implements Queue.Dequeue<A> {
|
|
|
929
930
|
})
|
|
930
931
|
}
|
|
931
932
|
|
|
932
|
-
get takeAll(): Effect.Effect<
|
|
933
|
+
get takeAll(): Effect.Effect<Chunk.Chunk<A>> {
|
|
933
934
|
return core.suspend(() => {
|
|
934
935
|
if (MutableRef.get(this.shutdownFlag)) {
|
|
935
936
|
return core.interrupt
|
|
@@ -942,7 +943,7 @@ class SubscriptionImpl<in out A> implements Queue.Dequeue<A> {
|
|
|
942
943
|
})
|
|
943
944
|
}
|
|
944
945
|
|
|
945
|
-
takeUpTo(this: this, max: number): Effect.Effect<
|
|
946
|
+
takeUpTo(this: this, max: number): Effect.Effect<Chunk.Chunk<A>> {
|
|
946
947
|
return core.suspend(() => {
|
|
947
948
|
if (MutableRef.get(this.shutdownFlag)) {
|
|
948
949
|
return core.interrupt
|
|
@@ -955,7 +956,7 @@ class SubscriptionImpl<in out A> implements Queue.Dequeue<A> {
|
|
|
955
956
|
})
|
|
956
957
|
}
|
|
957
958
|
|
|
958
|
-
takeBetween(min: number, max: number): Effect.Effect<
|
|
959
|
+
takeBetween(min: number, max: number): Effect.Effect<Chunk.Chunk<A>> {
|
|
959
960
|
return core.suspend(() => takeRemainderLoop(this, min, max, Chunk.empty()))
|
|
960
961
|
}
|
|
961
962
|
}
|
|
@@ -966,7 +967,7 @@ const takeRemainderLoop = <A>(
|
|
|
966
967
|
min: number,
|
|
967
968
|
max: number,
|
|
968
969
|
acc: Chunk.Chunk<A>
|
|
969
|
-
): Effect.Effect<
|
|
970
|
+
): Effect.Effect<Chunk.Chunk<A>> => {
|
|
970
971
|
if (max < min) {
|
|
971
972
|
return core.succeed(acc)
|
|
972
973
|
}
|
|
@@ -1004,7 +1005,7 @@ class PubSubImpl<in out A> implements PubSub.PubSub<A> {
|
|
|
1004
1005
|
readonly pubsub: AtomicPubSub<A>,
|
|
1005
1006
|
readonly subscribers: Subscribers<A>,
|
|
1006
1007
|
readonly scope: Scope.Scope.Closeable,
|
|
1007
|
-
readonly shutdownHook: Deferred.Deferred<
|
|
1008
|
+
readonly shutdownHook: Deferred.Deferred<void>,
|
|
1008
1009
|
readonly shutdownFlag: MutableRef.MutableRef<boolean>,
|
|
1009
1010
|
readonly strategy: PubSubStrategy<A>
|
|
1010
1011
|
) {
|
|
@@ -1014,7 +1015,7 @@ class PubSubImpl<in out A> implements PubSub.PubSub<A> {
|
|
|
1014
1015
|
return this.pubsub.capacity
|
|
1015
1016
|
}
|
|
1016
1017
|
|
|
1017
|
-
get size(): Effect.Effect<
|
|
1018
|
+
get size(): Effect.Effect<number> {
|
|
1018
1019
|
return core.suspend(() =>
|
|
1019
1020
|
MutableRef.get(this.shutdownFlag) ?
|
|
1020
1021
|
core.interrupt :
|
|
@@ -1029,24 +1030,24 @@ class PubSubImpl<in out A> implements PubSub.PubSub<A> {
|
|
|
1029
1030
|
return Option.some(this.pubsub.size())
|
|
1030
1031
|
}
|
|
1031
1032
|
|
|
1032
|
-
get isFull(): Effect.Effect<
|
|
1033
|
+
get isFull(): Effect.Effect<boolean> {
|
|
1033
1034
|
return core.map(this.size, (size) => size === this.capacity())
|
|
1034
1035
|
}
|
|
1035
1036
|
|
|
1036
|
-
get isEmpty(): Effect.Effect<
|
|
1037
|
+
get isEmpty(): Effect.Effect<boolean> {
|
|
1037
1038
|
return core.map(this.size, (size) => size === 0)
|
|
1038
1039
|
}
|
|
1039
1040
|
|
|
1040
|
-
get awaitShutdown(): Effect.Effect<
|
|
1041
|
+
get awaitShutdown(): Effect.Effect<void> {
|
|
1041
1042
|
return core.deferredAwait(this.shutdownHook)
|
|
1042
1043
|
}
|
|
1043
1044
|
|
|
1044
|
-
get isShutdown(): Effect.Effect<
|
|
1045
|
+
get isShutdown(): Effect.Effect<boolean> {
|
|
1045
1046
|
return core.sync(() => MutableRef.get(this.shutdownFlag))
|
|
1046
1047
|
}
|
|
1047
1048
|
|
|
1048
|
-
get shutdown(): Effect.Effect<
|
|
1049
|
-
return core.uninterruptible(core.withFiberRuntime
|
|
1049
|
+
get shutdown(): Effect.Effect<void> {
|
|
1050
|
+
return core.uninterruptible(core.withFiberRuntime((state) => {
|
|
1050
1051
|
pipe(this.shutdownFlag, MutableRef.set(true))
|
|
1051
1052
|
return pipe(
|
|
1052
1053
|
this.scope.close(core.exitInterrupt(state.id())),
|
|
@@ -1057,7 +1058,7 @@ class PubSubImpl<in out A> implements PubSub.PubSub<A> {
|
|
|
1057
1058
|
}))
|
|
1058
1059
|
}
|
|
1059
1060
|
|
|
1060
|
-
publish(value: A): Effect.Effect<
|
|
1061
|
+
publish(value: A): Effect.Effect<boolean> {
|
|
1061
1062
|
return core.suspend(() => {
|
|
1062
1063
|
if (MutableRef.get(this.shutdownFlag)) {
|
|
1063
1064
|
return core.interrupt
|
|
@@ -1094,7 +1095,7 @@ class PubSubImpl<in out A> implements PubSub.PubSub<A> {
|
|
|
1094
1095
|
return false
|
|
1095
1096
|
}
|
|
1096
1097
|
|
|
1097
|
-
publishAll(elements: Iterable<A>): Effect.Effect<
|
|
1098
|
+
publishAll(elements: Iterable<A>): Effect.Effect<boolean> {
|
|
1098
1099
|
return core.suspend(() => {
|
|
1099
1100
|
if (MutableRef.get(this.shutdownFlag)) {
|
|
1100
1101
|
return core.interrupt
|
|
@@ -1113,7 +1114,7 @@ class PubSubImpl<in out A> implements PubSub.PubSub<A> {
|
|
|
1113
1114
|
})
|
|
1114
1115
|
}
|
|
1115
1116
|
|
|
1116
|
-
get subscribe(): Effect.Effect<
|
|
1117
|
+
get subscribe(): Effect.Effect<Queue.Dequeue<A>, never, Scope.Scope> {
|
|
1117
1118
|
const acquire = core.tap(
|
|
1118
1119
|
fiberRuntime.all([
|
|
1119
1120
|
this.scope.fork(executionStrategy.sequential),
|
|
@@ -1127,11 +1128,11 @@ class PubSubImpl<in out A> implements PubSub.PubSub<A> {
|
|
|
1127
1128
|
)
|
|
1128
1129
|
}
|
|
1129
1130
|
|
|
1130
|
-
offer(value: A): Effect.Effect<
|
|
1131
|
+
offer(value: A): Effect.Effect<boolean> {
|
|
1131
1132
|
return this.publish(value)
|
|
1132
1133
|
}
|
|
1133
1134
|
|
|
1134
|
-
offerAll(elements: Iterable<A>): Effect.Effect<
|
|
1135
|
+
offerAll(elements: Iterable<A>): Effect.Effect<boolean> {
|
|
1135
1136
|
return this.publishAll(elements)
|
|
1136
1137
|
}
|
|
1137
1138
|
|
|
@@ -1144,11 +1145,11 @@ class PubSubImpl<in out A> implements PubSub.PubSub<A> {
|
|
|
1144
1145
|
export const makePubSub = <A>(
|
|
1145
1146
|
pubsub: AtomicPubSub<A>,
|
|
1146
1147
|
strategy: PubSubStrategy<A>
|
|
1147
|
-
): Effect.Effect<
|
|
1148
|
+
): Effect.Effect<PubSub.PubSub<A>> =>
|
|
1148
1149
|
core.flatMap(
|
|
1149
1150
|
fiberRuntime.scopeMake(),
|
|
1150
1151
|
(scope) =>
|
|
1151
|
-
core.map(core.deferredMake<
|
|
1152
|
+
core.map(core.deferredMake<void>(), (deferred) =>
|
|
1152
1153
|
unsafeMakePubSub(
|
|
1153
1154
|
pubsub,
|
|
1154
1155
|
new Map(),
|
|
@@ -1164,19 +1165,13 @@ export const unsafeMakePubSub = <A>(
|
|
|
1164
1165
|
pubsub: AtomicPubSub<A>,
|
|
1165
1166
|
subscribers: Subscribers<A>,
|
|
1166
1167
|
scope: Scope.Scope.Closeable,
|
|
1167
|
-
shutdownHook: Deferred.Deferred<
|
|
1168
|
+
shutdownHook: Deferred.Deferred<void>,
|
|
1168
1169
|
shutdownFlag: MutableRef.MutableRef<boolean>,
|
|
1169
1170
|
strategy: PubSubStrategy<A>
|
|
1170
1171
|
): PubSub.PubSub<A> => {
|
|
1171
1172
|
return new PubSubImpl(pubsub, subscribers, scope, shutdownHook, shutdownFlag, strategy)
|
|
1172
1173
|
}
|
|
1173
1174
|
|
|
1174
|
-
/** @internal */
|
|
1175
|
-
const nextPow2 = (n: number): number => {
|
|
1176
|
-
const nextPow = Math.ceil(Math.log(n) / Math.log(2.0))
|
|
1177
|
-
return Math.max(Math.pow(2, nextPow), 2)
|
|
1178
|
-
}
|
|
1179
|
-
|
|
1180
1175
|
/** @internal */
|
|
1181
1176
|
const ensureCapacity = (capacity: number): void => {
|
|
1182
1177
|
if (capacity <= 0) {
|
|
@@ -1185,7 +1180,7 @@ const ensureCapacity = (capacity: number): void => {
|
|
|
1185
1180
|
}
|
|
1186
1181
|
|
|
1187
1182
|
/** @internal */
|
|
1188
|
-
const unsafeCompleteDeferred = <A>(deferred: Deferred.Deferred<
|
|
1183
|
+
const unsafeCompleteDeferred = <A>(deferred: Deferred.Deferred<A>, a: A): void => {
|
|
1189
1184
|
core.deferredUnsafeDone(deferred, core.succeed(a))
|
|
1190
1185
|
}
|
|
1191
1186
|
|
|
@@ -1236,7 +1231,7 @@ export interface PubSubStrategy<in out A> {
|
|
|
1236
1231
|
/**
|
|
1237
1232
|
* Describes any finalization logic associated with this strategy.
|
|
1238
1233
|
*/
|
|
1239
|
-
readonly shutdown: Effect.Effect<
|
|
1234
|
+
readonly shutdown: Effect.Effect<void>
|
|
1240
1235
|
|
|
1241
1236
|
/**
|
|
1242
1237
|
* Describes how publishers should signal to subscribers that they are
|
|
@@ -1247,7 +1242,7 @@ export interface PubSubStrategy<in out A> {
|
|
|
1247
1242
|
subscribers: Subscribers<A>,
|
|
1248
1243
|
elements: Iterable<A>,
|
|
1249
1244
|
isShutdown: MutableRef.MutableRef<boolean>
|
|
1250
|
-
): Effect.Effect<
|
|
1245
|
+
): Effect.Effect<boolean>
|
|
1251
1246
|
|
|
1252
1247
|
/**
|
|
1253
1248
|
* Describes how subscribers should signal to publishers waiting for space
|
|
@@ -1267,7 +1262,7 @@ export interface PubSubStrategy<in out A> {
|
|
|
1267
1262
|
pubsub: AtomicPubSub<A>,
|
|
1268
1263
|
subscribers: Subscribers<A>,
|
|
1269
1264
|
subscription: Subscription<A>,
|
|
1270
|
-
pollers: MutableQueue.MutableQueue<Deferred.Deferred<
|
|
1265
|
+
pollers: MutableQueue.MutableQueue<Deferred.Deferred<A>>
|
|
1271
1266
|
): void
|
|
1272
1267
|
|
|
1273
1268
|
/**
|
|
@@ -1291,14 +1286,10 @@ export interface PubSubStrategy<in out A> {
|
|
|
1291
1286
|
*/
|
|
1292
1287
|
class BackPressureStrategy<in out A> implements PubSubStrategy<A> {
|
|
1293
1288
|
publishers: MutableQueue.MutableQueue<
|
|
1294
|
-
readonly [
|
|
1295
|
-
A,
|
|
1296
|
-
Deferred.Deferred<never, boolean>,
|
|
1297
|
-
boolean
|
|
1298
|
-
]
|
|
1289
|
+
readonly [A, Deferred.Deferred<boolean>, boolean]
|
|
1299
1290
|
> = MutableQueue.unbounded()
|
|
1300
1291
|
|
|
1301
|
-
get shutdown(): Effect.Effect<
|
|
1292
|
+
get shutdown(): Effect.Effect<void> {
|
|
1302
1293
|
return core.flatMap(core.fiberId, (fiberId) =>
|
|
1303
1294
|
core.flatMap(
|
|
1304
1295
|
core.sync(() => unsafePollAllQueue(this.publishers)),
|
|
@@ -1320,9 +1311,9 @@ class BackPressureStrategy<in out A> implements PubSubStrategy<A> {
|
|
|
1320
1311
|
subscribers: Subscribers<A>,
|
|
1321
1312
|
elements: Iterable<A>,
|
|
1322
1313
|
isShutdown: MutableRef.MutableRef<boolean>
|
|
1323
|
-
): Effect.Effect<
|
|
1324
|
-
return core.withFiberRuntime
|
|
1325
|
-
const deferred = core.deferredUnsafeMake<
|
|
1314
|
+
): Effect.Effect<boolean> {
|
|
1315
|
+
return core.withFiberRuntime((state) => {
|
|
1316
|
+
const deferred = core.deferredUnsafeMake<boolean>(state.id())
|
|
1326
1317
|
return pipe(
|
|
1327
1318
|
core.suspend(() => {
|
|
1328
1319
|
this.unsafeOffer(elements, deferred)
|
|
@@ -1365,7 +1356,7 @@ class BackPressureStrategy<in out A> implements PubSubStrategy<A> {
|
|
|
1365
1356
|
pubsub: AtomicPubSub<A>,
|
|
1366
1357
|
subscribers: Subscribers<A>,
|
|
1367
1358
|
subscription: Subscription<A>,
|
|
1368
|
-
pollers: MutableQueue.MutableQueue<Deferred.Deferred<
|
|
1359
|
+
pollers: MutableQueue.MutableQueue<Deferred.Deferred<A>>
|
|
1369
1360
|
): void {
|
|
1370
1361
|
return unsafeStrategyCompletePollers(this, pubsub, subscribers, subscription, pollers)
|
|
1371
1362
|
}
|
|
@@ -1374,7 +1365,7 @@ class BackPressureStrategy<in out A> implements PubSubStrategy<A> {
|
|
|
1374
1365
|
return unsafeStrategyCompleteSubscribers(this, pubsub, subscribers)
|
|
1375
1366
|
}
|
|
1376
1367
|
|
|
1377
|
-
private unsafeOffer(elements: Iterable<A>, deferred: Deferred.Deferred<
|
|
1368
|
+
private unsafeOffer(elements: Iterable<A>, deferred: Deferred.Deferred<boolean>): void {
|
|
1378
1369
|
const iterator = elements[Symbol.iterator]()
|
|
1379
1370
|
let next: IteratorResult<A> = iterator.next()
|
|
1380
1371
|
if (!next.done) {
|
|
@@ -1397,7 +1388,7 @@ class BackPressureStrategy<in out A> implements PubSubStrategy<A> {
|
|
|
1397
1388
|
}
|
|
1398
1389
|
}
|
|
1399
1390
|
|
|
1400
|
-
unsafeRemove(deferred: Deferred.Deferred<
|
|
1391
|
+
unsafeRemove(deferred: Deferred.Deferred<boolean>): void {
|
|
1401
1392
|
unsafeOfferAll(
|
|
1402
1393
|
this.publishers,
|
|
1403
1394
|
pipe(unsafePollAllQueue(this.publishers), Chunk.filter(([_, a]) => a !== deferred))
|
|
@@ -1416,7 +1407,7 @@ class BackPressureStrategy<in out A> implements PubSubStrategy<A> {
|
|
|
1416
1407
|
* @internal
|
|
1417
1408
|
*/
|
|
1418
1409
|
export class DroppingStrategy<in out A> implements PubSubStrategy<A> {
|
|
1419
|
-
get shutdown(): Effect.Effect<
|
|
1410
|
+
get shutdown(): Effect.Effect<void> {
|
|
1420
1411
|
return core.unit
|
|
1421
1412
|
}
|
|
1422
1413
|
|
|
@@ -1425,7 +1416,7 @@ export class DroppingStrategy<in out A> implements PubSubStrategy<A> {
|
|
|
1425
1416
|
_subscribers: Subscribers<A>,
|
|
1426
1417
|
_elements: Iterable<A>,
|
|
1427
1418
|
_isShutdown: MutableRef.MutableRef<boolean>
|
|
1428
|
-
): Effect.Effect<
|
|
1419
|
+
): Effect.Effect<boolean> {
|
|
1429
1420
|
return core.succeed(false)
|
|
1430
1421
|
}
|
|
1431
1422
|
|
|
@@ -1440,7 +1431,7 @@ export class DroppingStrategy<in out A> implements PubSubStrategy<A> {
|
|
|
1440
1431
|
pubsub: AtomicPubSub<A>,
|
|
1441
1432
|
subscribers: Subscribers<A>,
|
|
1442
1433
|
subscription: Subscription<A>,
|
|
1443
|
-
pollers: MutableQueue.MutableQueue<Deferred.Deferred<
|
|
1434
|
+
pollers: MutableQueue.MutableQueue<Deferred.Deferred<A>>
|
|
1444
1435
|
): void {
|
|
1445
1436
|
return unsafeStrategyCompletePollers(this, pubsub, subscribers, subscription, pollers)
|
|
1446
1437
|
}
|
|
@@ -1460,7 +1451,7 @@ export class DroppingStrategy<in out A> implements PubSubStrategy<A> {
|
|
|
1460
1451
|
* @internal
|
|
1461
1452
|
*/
|
|
1462
1453
|
export class SlidingStrategy<in out A> implements PubSubStrategy<A> {
|
|
1463
|
-
get shutdown(): Effect.Effect<
|
|
1454
|
+
get shutdown(): Effect.Effect<void> {
|
|
1464
1455
|
return core.unit
|
|
1465
1456
|
}
|
|
1466
1457
|
|
|
@@ -1469,7 +1460,7 @@ export class SlidingStrategy<in out A> implements PubSubStrategy<A> {
|
|
|
1469
1460
|
subscribers: Subscribers<A>,
|
|
1470
1461
|
elements: Iterable<A>,
|
|
1471
1462
|
_isShutdown: MutableRef.MutableRef<boolean>
|
|
1472
|
-
): Effect.Effect<
|
|
1463
|
+
): Effect.Effect<boolean> {
|
|
1473
1464
|
return core.sync(() => {
|
|
1474
1465
|
this.unsafeSlidingPublish(pubsub, elements)
|
|
1475
1466
|
this.unsafeCompleteSubscribers(pubsub, subscribers)
|
|
@@ -1488,7 +1479,7 @@ export class SlidingStrategy<in out A> implements PubSubStrategy<A> {
|
|
|
1488
1479
|
pubsub: AtomicPubSub<A>,
|
|
1489
1480
|
subscribers: Subscribers<A>,
|
|
1490
1481
|
subscription: Subscription<A>,
|
|
1491
|
-
pollers: MutableQueue.MutableQueue<Deferred.Deferred<
|
|
1482
|
+
pollers: MutableQueue.MutableQueue<Deferred.Deferred<A>>
|
|
1492
1483
|
): void {
|
|
1493
1484
|
return unsafeStrategyCompletePollers(this, pubsub, subscribers, subscription, pollers)
|
|
1494
1485
|
}
|
|
@@ -1522,7 +1513,7 @@ const unsafeStrategyCompletePollers = <A>(
|
|
|
1522
1513
|
pubsub: AtomicPubSub<A>,
|
|
1523
1514
|
subscribers: Subscribers<A>,
|
|
1524
1515
|
subscription: Subscription<A>,
|
|
1525
|
-
pollers: MutableQueue.MutableQueue<Deferred.Deferred<
|
|
1516
|
+
pollers: MutableQueue.MutableQueue<Deferred.Deferred<A>>
|
|
1526
1517
|
): void => {
|
|
1527
1518
|
let keepPolling = true
|
|
1528
1519
|
while (keepPolling && !subscription.isEmpty()) {
|
package/src/internal/query.ts
CHANGED
|
@@ -42,21 +42,19 @@ export const currentCacheEnabled = globalValue(
|
|
|
42
42
|
export const fromRequest = <
|
|
43
43
|
A extends Request.Request<any, any>,
|
|
44
44
|
Ds extends
|
|
45
|
-
| RequestResolver.RequestResolver<A
|
|
46
|
-
| Effect.Effect<
|
|
45
|
+
| RequestResolver.RequestResolver<A>
|
|
46
|
+
| Effect.Effect<RequestResolver.RequestResolver<A>, any, any>
|
|
47
47
|
>(
|
|
48
48
|
request: A,
|
|
49
49
|
dataSource: Ds
|
|
50
50
|
): Effect.Effect<
|
|
51
|
-
|
|
51
|
+
Request.Request.Success<A>,
|
|
52
52
|
Request.Request.Error<A>,
|
|
53
|
-
|
|
53
|
+
[Ds] extends [Effect.Effect<any, any, any>] ? Effect.Effect.Context<Ds> : never
|
|
54
54
|
> =>
|
|
55
55
|
core.flatMap(
|
|
56
56
|
(core.isEffect(dataSource) ? dataSource : core.succeed(dataSource)) as Effect.Effect<
|
|
57
|
-
|
|
58
|
-
never,
|
|
59
|
-
RequestResolver.RequestResolver<A, never>
|
|
57
|
+
RequestResolver.RequestResolver<A>
|
|
60
58
|
>,
|
|
61
59
|
(ds) =>
|
|
62
60
|
core.fiberIdWith((id) => {
|
|
@@ -92,7 +90,7 @@ export const fromRequest = <
|
|
|
92
90
|
orNew.right.listeners.increment()
|
|
93
91
|
return core.blocked(
|
|
94
92
|
BlockedRequests.single(
|
|
95
|
-
ds as RequestResolver.RequestResolver<A
|
|
93
|
+
ds as RequestResolver.RequestResolver<A>,
|
|
96
94
|
BlockedRequests.makeEntry({
|
|
97
95
|
request: proxy,
|
|
98
96
|
result: orNew.right.handle,
|
|
@@ -118,11 +116,11 @@ export const fromRequest = <
|
|
|
118
116
|
const listeners = new Listeners()
|
|
119
117
|
listeners.increment()
|
|
120
118
|
return core.flatMap(
|
|
121
|
-
core.deferredMake<Request.Request.
|
|
119
|
+
core.deferredMake<Request.Request.Success<A>, Request.Request.Error<A>>(),
|
|
122
120
|
(ref) =>
|
|
123
121
|
core.blocked(
|
|
124
122
|
BlockedRequests.single(
|
|
125
|
-
ds as RequestResolver.RequestResolver<A
|
|
123
|
+
ds as RequestResolver.RequestResolver<A>,
|
|
126
124
|
BlockedRequests.makeEntry({
|
|
127
125
|
request: proxy,
|
|
128
126
|
result: ref,
|
|
@@ -145,7 +143,7 @@ export const fromRequest = <
|
|
|
145
143
|
export const cacheRequest = <A extends Request.Request<any, any>>(
|
|
146
144
|
request: A,
|
|
147
145
|
result: Request.Request.Result<A>
|
|
148
|
-
): Effect.Effect<
|
|
146
|
+
): Effect.Effect<void> => {
|
|
149
147
|
return core.fiberRefGetWith(currentCacheEnabled, (cacheEnabled) => {
|
|
150
148
|
if (cacheEnabled) {
|
|
151
149
|
return core.fiberRefGetWith(currentCache, (cache) =>
|
|
@@ -166,36 +164,36 @@ export const cacheRequest = <A extends Request.Request<any, any>>(
|
|
|
166
164
|
|
|
167
165
|
/** @internal */
|
|
168
166
|
export const withRequestCaching: {
|
|
169
|
-
(strategy: boolean): <
|
|
170
|
-
<
|
|
171
|
-
self: Effect.Effect<
|
|
167
|
+
(strategy: boolean): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
168
|
+
<A, E, R>(
|
|
169
|
+
self: Effect.Effect<A, E, R>,
|
|
172
170
|
strategy: boolean
|
|
173
|
-
): Effect.Effect<
|
|
171
|
+
): Effect.Effect<A, E, R>
|
|
174
172
|
} = dual<
|
|
175
173
|
(
|
|
176
174
|
strategy: boolean
|
|
177
|
-
) => <
|
|
178
|
-
<
|
|
179
|
-
self: Effect.Effect<
|
|
175
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
176
|
+
<A, E, R>(
|
|
177
|
+
self: Effect.Effect<A, E, R>,
|
|
180
178
|
strategy: boolean
|
|
181
|
-
) => Effect.Effect<
|
|
179
|
+
) => Effect.Effect<A, E, R>
|
|
182
180
|
>(2, (self, strategy) => core.fiberRefLocally(self, currentCacheEnabled, strategy))
|
|
183
181
|
|
|
184
182
|
/** @internal */
|
|
185
183
|
export const withRequestCache: {
|
|
186
|
-
(cache: Request.Cache): <
|
|
187
|
-
<
|
|
188
|
-
self: Effect.Effect<
|
|
184
|
+
(cache: Request.Cache): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
185
|
+
<A, E, R>(
|
|
186
|
+
self: Effect.Effect<A, E, R>,
|
|
189
187
|
cache: Request.Cache
|
|
190
|
-
): Effect.Effect<
|
|
188
|
+
): Effect.Effect<A, E, R>
|
|
191
189
|
} = dual<
|
|
192
190
|
(
|
|
193
191
|
cache: Request.Cache
|
|
194
|
-
) => <
|
|
195
|
-
<
|
|
196
|
-
self: Effect.Effect<
|
|
192
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
193
|
+
<A, E, R>(
|
|
194
|
+
self: Effect.Effect<A, E, R>,
|
|
197
195
|
cache: Request.Cache
|
|
198
|
-
) => Effect.Effect<
|
|
196
|
+
) => Effect.Effect<A, E, R>
|
|
199
197
|
>(
|
|
200
198
|
2,
|
|
201
199
|
// @ts-expect-error
|