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/logSpan.ts
CHANGED
|
@@ -7,9 +7,7 @@ export const make = (label: string, startTime: number): LogSpan.LogSpan => ({
|
|
|
7
7
|
})
|
|
8
8
|
|
|
9
9
|
/** @internal */
|
|
10
|
-
export const render = (now: number) => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return `${label}=${now - self.startTime}ms`
|
|
14
|
-
}
|
|
10
|
+
export const render = (now: number) => (self: LogSpan.LogSpan): string => {
|
|
11
|
+
const label = self.label.replace(/[\s="]/g, "_")
|
|
12
|
+
return `${label}=${now - self.startTime}ms`
|
|
15
13
|
}
|
|
@@ -22,7 +22,7 @@ export const MetricPollingTypeId: MetricPolling.MetricPollingTypeId = Symbol.for
|
|
|
22
22
|
/** @internal */
|
|
23
23
|
export const make = <Type, In, Out, R, E>(
|
|
24
24
|
metric: Metric.Metric<Type, In, Out>,
|
|
25
|
-
poll: Effect.Effect<
|
|
25
|
+
poll: Effect.Effect<In, E, R>
|
|
26
26
|
): MetricPolling.MetricPolling<Type, In, R, E, Out> => {
|
|
27
27
|
return {
|
|
28
28
|
[MetricPollingTypeId]: MetricPollingTypeId,
|
|
@@ -68,11 +68,11 @@ export const launch = dual<
|
|
|
68
68
|
schedule: Schedule.Schedule<R2, unknown, A2>
|
|
69
69
|
) => <Type, In, R, E, Out>(
|
|
70
70
|
self: MetricPolling.MetricPolling<Type, In, R, E, Out>
|
|
71
|
-
) => Effect.Effect<R | R2 | Scope.Scope
|
|
71
|
+
) => Effect.Effect<Fiber.Fiber<A2, E>, never, R | R2 | Scope.Scope>,
|
|
72
72
|
<Type, In, R, E, Out, R2, A2>(
|
|
73
73
|
self: MetricPolling.MetricPolling<Type, In, R, E, Out>,
|
|
74
74
|
schedule: Schedule.Schedule<R2, unknown, A2>
|
|
75
|
-
) => Effect.Effect<R | R2 | Scope.Scope
|
|
75
|
+
) => Effect.Effect<Fiber.Fiber<A2, E>, never, R | R2 | Scope.Scope>
|
|
76
76
|
>(2, (self, schedule) =>
|
|
77
77
|
pipe(
|
|
78
78
|
pollAndUpdate(self),
|
|
@@ -83,12 +83,12 @@ export const launch = dual<
|
|
|
83
83
|
/** @internal */
|
|
84
84
|
export const poll = <Type, In, R, E, Out>(
|
|
85
85
|
self: MetricPolling.MetricPolling<Type, In, R, E, Out>
|
|
86
|
-
): Effect.Effect<
|
|
86
|
+
): Effect.Effect<In, E, R> => self.poll
|
|
87
87
|
|
|
88
88
|
/** @internal */
|
|
89
89
|
export const pollAndUpdate = <Type, In, R, E, Out>(
|
|
90
90
|
self: MetricPolling.MetricPolling<Type, In, R, E, Out>
|
|
91
|
-
): Effect.Effect<
|
|
91
|
+
): Effect.Effect<void, E, R> => core.flatMap(self.poll, (value) => metric.update(self.metric, value))
|
|
92
92
|
|
|
93
93
|
/** @internal */
|
|
94
94
|
export const retry = dual<
|
package/src/internal/metric.ts
CHANGED
|
@@ -53,7 +53,7 @@ export const make: Metric.MetricApply = function<Type, In, Out>(
|
|
|
53
53
|
unsafeValue: (extraTags: ReadonlyArray<MetricLabel.MetricLabel>) => Out
|
|
54
54
|
): Metric.Metric<Type, In, Out> {
|
|
55
55
|
const metric: Metric.Metric<Type, In, Out> = Object.assign(
|
|
56
|
-
<
|
|
56
|
+
<A extends In, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
57
57
|
core.tap(
|
|
58
58
|
effect,
|
|
59
59
|
(a) => core.sync(() => unsafeUpdate(a, []))
|
|
@@ -173,18 +173,17 @@ export const histogram = (name: string, boundaries: MetricBoundaries.MetricBound
|
|
|
173
173
|
/* @internal */
|
|
174
174
|
export const increment = (
|
|
175
175
|
self: Metric.Metric.Counter<number> | Metric.Metric.Counter<bigint>
|
|
176
|
-
): Effect.Effect<
|
|
177
|
-
update(self as Metric.Metric.Counter<number>, self.keyType.bigint ? BigInt(1) as any : 1)
|
|
176
|
+
): Effect.Effect<void> => update(self as Metric.Metric.Counter<number>, self.keyType.bigint ? BigInt(1) as any : 1)
|
|
178
177
|
|
|
179
178
|
/* @internal */
|
|
180
179
|
export const incrementBy = dual<
|
|
181
180
|
{
|
|
182
|
-
(amount: number): (self: Metric.Metric.Counter<number>) => Effect.Effect<
|
|
183
|
-
(amount: bigint): (self: Metric.Metric.Counter<bigint>) => Effect.Effect<
|
|
181
|
+
(amount: number): (self: Metric.Metric.Counter<number>) => Effect.Effect<void>
|
|
182
|
+
(amount: bigint): (self: Metric.Metric.Counter<bigint>) => Effect.Effect<void>
|
|
184
183
|
},
|
|
185
184
|
{
|
|
186
|
-
(self: Metric.Metric.Counter<number>, amount: number): Effect.Effect<
|
|
187
|
-
(self: Metric.Metric.Counter<bigint>, amount: bigint): Effect.Effect<
|
|
185
|
+
(self: Metric.Metric.Counter<number>, amount: number): Effect.Effect<void>
|
|
186
|
+
(self: Metric.Metric.Counter<bigint>, amount: bigint): Effect.Effect<void>
|
|
188
187
|
}
|
|
189
188
|
>(2, (self, amount) => update(self as any, amount))
|
|
190
189
|
|
|
@@ -215,12 +214,12 @@ export const mapType = dual<
|
|
|
215
214
|
/* @internal */
|
|
216
215
|
export const set = dual<
|
|
217
216
|
{
|
|
218
|
-
(value: number): (self: Metric.Metric.Gauge<number>) => Effect.Effect<
|
|
219
|
-
(value: bigint): (self: Metric.Metric.Gauge<bigint>) => Effect.Effect<
|
|
217
|
+
(value: number): (self: Metric.Metric.Gauge<number>) => Effect.Effect<void>
|
|
218
|
+
(value: bigint): (self: Metric.Metric.Gauge<bigint>) => Effect.Effect<void>
|
|
220
219
|
},
|
|
221
220
|
{
|
|
222
|
-
(self: Metric.Metric.Gauge<number>, value: number): Effect.Effect<
|
|
223
|
-
(self: Metric.Metric.Gauge<bigint>, value: bigint): Effect.Effect<
|
|
221
|
+
(self: Metric.Metric.Gauge<number>, value: number): Effect.Effect<void>
|
|
222
|
+
(self: Metric.Metric.Gauge<bigint>, value: bigint): Effect.Effect<void>
|
|
224
223
|
}
|
|
225
224
|
>(2, (self, value) => update(self as any, value))
|
|
226
225
|
|
|
@@ -339,11 +338,11 @@ export const trackAll = dual<
|
|
|
339
338
|
input: In
|
|
340
339
|
) => <Type, Out>(
|
|
341
340
|
self: Metric.Metric<Type, In, Out>
|
|
342
|
-
) => <
|
|
341
|
+
) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
343
342
|
<Type, In, Out>(
|
|
344
343
|
self: Metric.Metric<Type, In, Out>,
|
|
345
344
|
input: In
|
|
346
|
-
) => <
|
|
345
|
+
) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
347
346
|
>(2, (self, input) => (effect) =>
|
|
348
347
|
core.matchCauseEffect(effect, {
|
|
349
348
|
onFailure: (cause) => {
|
|
@@ -360,11 +359,11 @@ export const trackAll = dual<
|
|
|
360
359
|
export const trackDefect = dual<
|
|
361
360
|
<Type, Out>(
|
|
362
361
|
metric: Metric.Metric<Type, unknown, Out>
|
|
363
|
-
) => <
|
|
364
|
-
<
|
|
365
|
-
self: Effect.Effect<
|
|
362
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
363
|
+
<A, E, R, Type, Out>(
|
|
364
|
+
self: Effect.Effect<A, E, R>,
|
|
366
365
|
metric: Metric.Metric<Type, unknown, Out>
|
|
367
|
-
) => Effect.Effect<
|
|
366
|
+
) => Effect.Effect<A, E, R>
|
|
368
367
|
>(2, (self, metric) => trackDefectWith(self, metric, identity))
|
|
369
368
|
|
|
370
369
|
/* @internal */
|
|
@@ -372,12 +371,12 @@ export const trackDefectWith = dual<
|
|
|
372
371
|
<Type, In, Out>(
|
|
373
372
|
metric: Metric.Metric<Type, In, Out>,
|
|
374
373
|
f: (defect: unknown) => In
|
|
375
|
-
) => <
|
|
376
|
-
<
|
|
377
|
-
self: Effect.Effect<
|
|
374
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
375
|
+
<A, E, R, Type, In, Out>(
|
|
376
|
+
self: Effect.Effect<A, E, R>,
|
|
378
377
|
metric: Metric.Metric<Type, In, Out>,
|
|
379
378
|
f: (defect: unknown) => In
|
|
380
|
-
) => Effect.Effect<
|
|
379
|
+
) => Effect.Effect<A, E, R>
|
|
381
380
|
>(3, (self, metric, f) => {
|
|
382
381
|
const updater = (defect: unknown): void => metric.unsafeUpdate(f(defect), [])
|
|
383
382
|
return _effect.tapDefect(self, (cause) =>
|
|
@@ -393,11 +392,11 @@ export const trackDefectWith = dual<
|
|
|
393
392
|
export const trackDuration = dual<
|
|
394
393
|
<Type, Out>(
|
|
395
394
|
metric: Metric.Metric<Type, Duration.Duration, Out>
|
|
396
|
-
) => <
|
|
397
|
-
<
|
|
398
|
-
self: Effect.Effect<
|
|
395
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
396
|
+
<A, E, R, Type, Out>(
|
|
397
|
+
self: Effect.Effect<A, E, R>,
|
|
399
398
|
metric: Metric.Metric<Type, Duration.Duration, Out>
|
|
400
|
-
) => Effect.Effect<
|
|
399
|
+
) => Effect.Effect<A, E, R>
|
|
401
400
|
>(2, (self, metric) => trackDurationWith(self, metric, identity))
|
|
402
401
|
|
|
403
402
|
/* @internal */
|
|
@@ -405,12 +404,12 @@ export const trackDurationWith = dual<
|
|
|
405
404
|
<Type, In, Out>(
|
|
406
405
|
metric: Metric.Metric<Type, In, Out>,
|
|
407
406
|
f: (duration: Duration.Duration) => In
|
|
408
|
-
) => <
|
|
409
|
-
<
|
|
410
|
-
self: Effect.Effect<
|
|
407
|
+
) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
408
|
+
<A, E, R, Type, In, Out>(
|
|
409
|
+
self: Effect.Effect<A, E, R>,
|
|
411
410
|
metric: Metric.Metric<Type, In, Out>,
|
|
412
411
|
f: (duration: Duration.Duration) => In
|
|
413
|
-
) => Effect.Effect<
|
|
412
|
+
) => Effect.Effect<A, E, R>
|
|
414
413
|
>(3, (self, metric, f) =>
|
|
415
414
|
Clock.clockWith((clock) => {
|
|
416
415
|
const startTime = clock.unsafeCurrentTimeNanos()
|
|
@@ -426,13 +425,13 @@ export const trackDurationWith = dual<
|
|
|
426
425
|
export const trackError = dual<
|
|
427
426
|
<Type, In, Out>(
|
|
428
427
|
metric: Metric.Metric<Type, In, Out>
|
|
429
|
-
) => <R, E extends In, A>(self: Effect.Effect<
|
|
428
|
+
) => <R, E extends In, A>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
430
429
|
<R, E extends In, A, Type, In, Out>(
|
|
431
|
-
self: Effect.Effect<
|
|
430
|
+
self: Effect.Effect<A, E, R>,
|
|
432
431
|
metric: Metric.Metric<Type, In, Out>
|
|
433
|
-
) => Effect.Effect<
|
|
432
|
+
) => Effect.Effect<A, E, R>
|
|
434
433
|
>(2, <R, E extends In, A, Type, In, Out>(
|
|
435
|
-
self: Effect.Effect<
|
|
434
|
+
self: Effect.Effect<A, E, R>,
|
|
436
435
|
metric: Metric.Metric<Type, In, Out>
|
|
437
436
|
) => trackErrorWith(self, metric, (a: In) => a))
|
|
438
437
|
|
|
@@ -441,18 +440,18 @@ export const trackErrorWith = dual<
|
|
|
441
440
|
<Type, In, Out, In2>(
|
|
442
441
|
metric: Metric.Metric<Type, In, Out>,
|
|
443
442
|
f: (error: In2) => In
|
|
444
|
-
) => <R, E extends In2, A>(effect: Effect.Effect<
|
|
443
|
+
) => <R, E extends In2, A>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
445
444
|
<R, E extends In2, A, Type, In, Out, In2>(
|
|
446
|
-
self: Effect.Effect<
|
|
445
|
+
self: Effect.Effect<A, E, R>,
|
|
447
446
|
metric: Metric.Metric<Type, In, Out>,
|
|
448
447
|
f: (error: In2) => In
|
|
449
|
-
) => Effect.Effect<
|
|
448
|
+
) => Effect.Effect<A, E, R>
|
|
450
449
|
>(3, <R, E extends In2, A, Type, In, Out, In2>(
|
|
451
|
-
self: Effect.Effect<
|
|
450
|
+
self: Effect.Effect<A, E, R>,
|
|
452
451
|
metric: Metric.Metric<Type, In, Out>,
|
|
453
452
|
f: (error: In2) => In
|
|
454
453
|
) => {
|
|
455
|
-
const updater = (error: E): Effect.Effect<
|
|
454
|
+
const updater = (error: E): Effect.Effect<void> => update(metric, f(error))
|
|
456
455
|
return _effect.tapError(self, updater)
|
|
457
456
|
})
|
|
458
457
|
|
|
@@ -460,13 +459,13 @@ export const trackErrorWith = dual<
|
|
|
460
459
|
export const trackSuccess = dual<
|
|
461
460
|
<Type, In, Out>(
|
|
462
461
|
metric: Metric.Metric<Type, In, Out>
|
|
463
|
-
) => <
|
|
464
|
-
<
|
|
465
|
-
self: Effect.Effect<
|
|
462
|
+
) => <A extends In, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
463
|
+
<A extends In, E, R, Type, In, Out>(
|
|
464
|
+
self: Effect.Effect<A, E, R>,
|
|
466
465
|
metric: Metric.Metric<Type, In, Out>
|
|
467
|
-
) => Effect.Effect<
|
|
468
|
-
>(2, <
|
|
469
|
-
self: Effect.Effect<
|
|
466
|
+
) => Effect.Effect<A, E, R>
|
|
467
|
+
>(2, <A extends In, E, R, Type, In, Out>(
|
|
468
|
+
self: Effect.Effect<A, E, R>,
|
|
470
469
|
metric: Metric.Metric<Type, In, Out>
|
|
471
470
|
) => trackSuccessWith(self, metric, (a: In) => a))
|
|
472
471
|
|
|
@@ -475,25 +474,25 @@ export const trackSuccessWith = dual<
|
|
|
475
474
|
<Type, In, Out, In2>(
|
|
476
475
|
metric: Metric.Metric<Type, In, Out>,
|
|
477
476
|
f: (value: In2) => In
|
|
478
|
-
) => <
|
|
479
|
-
<
|
|
480
|
-
self: Effect.Effect<
|
|
477
|
+
) => <A extends In2, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
478
|
+
<A extends In2, E, R, Type, In, Out, In2>(
|
|
479
|
+
self: Effect.Effect<A, E, R>,
|
|
481
480
|
metric: Metric.Metric<Type, In, Out>,
|
|
482
481
|
f: (value: In2) => In
|
|
483
|
-
) => Effect.Effect<
|
|
484
|
-
>(3, <
|
|
485
|
-
self: Effect.Effect<
|
|
482
|
+
) => Effect.Effect<A, E, R>
|
|
483
|
+
>(3, <A extends In2, E, R, Type, In, Out, In2>(
|
|
484
|
+
self: Effect.Effect<A, E, R>,
|
|
486
485
|
metric: Metric.Metric<Type, In, Out>,
|
|
487
486
|
f: (value: In2) => In
|
|
488
487
|
) => {
|
|
489
|
-
const updater = (value: A): Effect.Effect<
|
|
488
|
+
const updater = (value: A): Effect.Effect<void> => update(metric, f(value))
|
|
490
489
|
return core.tap(self, updater)
|
|
491
490
|
})
|
|
492
491
|
|
|
493
492
|
/* @internal */
|
|
494
493
|
export const update = dual<
|
|
495
|
-
<In>(input: In) => <Type, Out>(self: Metric.Metric<Type, In, Out>) => Effect.Effect<
|
|
496
|
-
<Type, In, Out>(self: Metric.Metric<Type, In, Out>, input: In) => Effect.Effect<
|
|
494
|
+
<In>(input: In) => <Type, Out>(self: Metric.Metric<Type, In, Out>) => Effect.Effect<void>,
|
|
495
|
+
<Type, In, Out>(self: Metric.Metric<Type, In, Out>, input: In) => Effect.Effect<void>
|
|
497
496
|
>(2, (self, input) =>
|
|
498
497
|
core.fiberRefGetWith(
|
|
499
498
|
core.currentMetricLabels,
|
|
@@ -503,7 +502,7 @@ export const update = dual<
|
|
|
503
502
|
/* @internal */
|
|
504
503
|
export const value = <Type, In, Out>(
|
|
505
504
|
self: Metric.Metric<Type, In, Out>
|
|
506
|
-
): Effect.Effect<
|
|
505
|
+
): Effect.Effect<Out> =>
|
|
507
506
|
core.fiberRefGetWith(
|
|
508
507
|
core.currentMetricLabels,
|
|
509
508
|
(tags) => core.sync(() => self.unsafeValue(tags))
|
|
@@ -543,6 +542,6 @@ export const zip = dual<
|
|
|
543
542
|
export const unsafeSnapshot = (): ReadonlyArray<MetricPair.MetricPair.Untyped> => globalMetricRegistry.snapshot()
|
|
544
543
|
|
|
545
544
|
/** @internal */
|
|
546
|
-
export const snapshot: Effect.Effect<
|
|
545
|
+
export const snapshot: Effect.Effect<ReadonlyArray<MetricPair.MetricPair.Untyped>> = core.sync(
|
|
547
546
|
unsafeSnapshot
|
|
548
547
|
)
|
package/src/internal/pool.ts
CHANGED
|
@@ -39,9 +39,9 @@ interface PoolState {
|
|
|
39
39
|
readonly free: number
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
interface Attempted<
|
|
43
|
-
readonly result: Exit.Exit<
|
|
44
|
-
readonly finalizer: Effect.Effect<
|
|
42
|
+
interface Attempted<A, E> {
|
|
43
|
+
readonly result: Exit.Exit<A, E>
|
|
44
|
+
readonly finalizer: Effect.Effect<unknown>
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
/**
|
|
@@ -52,20 +52,20 @@ interface Strategy<S, R, E, A> {
|
|
|
52
52
|
/**
|
|
53
53
|
* Describes how the initial state of the strategy should be allocated.
|
|
54
54
|
*/
|
|
55
|
-
initial(): Effect.Effect<
|
|
55
|
+
initial(): Effect.Effect<S, never, R>
|
|
56
56
|
/**
|
|
57
57
|
* Describes how the state of the strategy should be updated when an item is
|
|
58
58
|
* added to the pool or returned to the pool.
|
|
59
59
|
*/
|
|
60
|
-
track(state: S, attempted: Exit.Exit<
|
|
60
|
+
track(state: S, attempted: Exit.Exit<A, E>): Effect.Effect<void>
|
|
61
61
|
/**
|
|
62
62
|
* Describes how excess items that are not being used should shrink down.
|
|
63
63
|
*/
|
|
64
64
|
run(
|
|
65
65
|
state: S,
|
|
66
|
-
getExcess: Effect.Effect<
|
|
67
|
-
shrink: Effect.Effect<
|
|
68
|
-
): Effect.Effect<
|
|
66
|
+
getExcess: Effect.Effect<number>,
|
|
67
|
+
shrink: Effect.Effect<void>
|
|
68
|
+
): Effect.Effect<void>
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
/**
|
|
@@ -74,13 +74,13 @@ interface Strategy<S, R, E, A> {
|
|
|
74
74
|
* nothing to do.
|
|
75
75
|
*/
|
|
76
76
|
class NoneStrategy implements Strategy<unknown, never, never, never> {
|
|
77
|
-
initial(): Effect.Effect<
|
|
77
|
+
initial(): Effect.Effect<void> {
|
|
78
78
|
return core.unit
|
|
79
79
|
}
|
|
80
|
-
track(): Effect.Effect<
|
|
80
|
+
track(): Effect.Effect<void> {
|
|
81
81
|
return core.unit
|
|
82
82
|
}
|
|
83
|
-
run(): Effect.Effect<
|
|
83
|
+
run(): Effect.Effect<void> {
|
|
84
84
|
return core.unit
|
|
85
85
|
}
|
|
86
86
|
}
|
|
@@ -91,7 +91,7 @@ class NoneStrategy implements Strategy<unknown, never, never, never> {
|
|
|
91
91
|
*/
|
|
92
92
|
class TimeToLiveStrategy implements Strategy<readonly [Clock.Clock, Ref.Ref<number>], never, never, never> {
|
|
93
93
|
constructor(readonly timeToLive: Duration.Duration) {}
|
|
94
|
-
initial(): Effect.Effect<
|
|
94
|
+
initial(): Effect.Effect<readonly [Clock.Clock, Ref.Ref<number>]> {
|
|
95
95
|
return core.flatMap(effect.clock, (clock) =>
|
|
96
96
|
core.flatMap(clock.currentTimeMillis, (now) =>
|
|
97
97
|
core.map(
|
|
@@ -99,7 +99,7 @@ class TimeToLiveStrategy implements Strategy<readonly [Clock.Clock, Ref.Ref<numb
|
|
|
99
99
|
(ref) => [clock, ref] as const
|
|
100
100
|
)))
|
|
101
101
|
}
|
|
102
|
-
track(state: readonly [Clock.Clock, Ref.Ref<number>]): Effect.Effect<
|
|
102
|
+
track(state: readonly [Clock.Clock, Ref.Ref<number>]): Effect.Effect<void> {
|
|
103
103
|
return core.asUnit(core.flatMap(
|
|
104
104
|
state[0].currentTimeMillis,
|
|
105
105
|
(now) => ref.set(state[1], now)
|
|
@@ -107,9 +107,9 @@ class TimeToLiveStrategy implements Strategy<readonly [Clock.Clock, Ref.Ref<numb
|
|
|
107
107
|
}
|
|
108
108
|
run(
|
|
109
109
|
state: readonly [Clock.Clock, Ref.Ref<number>],
|
|
110
|
-
getExcess: Effect.Effect<
|
|
111
|
-
shrink: Effect.Effect<
|
|
112
|
-
): Effect.Effect<
|
|
110
|
+
getExcess: Effect.Effect<number>,
|
|
111
|
+
shrink: Effect.Effect<void>
|
|
112
|
+
): Effect.Effect<void> {
|
|
113
113
|
return core.flatMap(getExcess, (excess) =>
|
|
114
114
|
excess <= 0
|
|
115
115
|
? core.zipRight(
|
|
@@ -133,17 +133,17 @@ class TimeToLiveStrategy implements Strategy<readonly [Clock.Clock, Ref.Ref<numb
|
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
class PoolImpl<in out
|
|
136
|
+
class PoolImpl<in out A, in out E> implements Pool.Pool<A, E> {
|
|
137
137
|
readonly [PoolTypeId] = poolVariance
|
|
138
138
|
constructor(
|
|
139
|
-
readonly creator: Effect.Effect<
|
|
139
|
+
readonly creator: Effect.Effect<A, E, Scope.Scope>,
|
|
140
140
|
readonly min: number,
|
|
141
141
|
readonly max: number,
|
|
142
142
|
readonly isShuttingDown: Ref.Ref<boolean>,
|
|
143
143
|
readonly state: Ref.Ref<PoolState>,
|
|
144
|
-
readonly items: Queue.Queue<Attempted<
|
|
144
|
+
readonly items: Queue.Queue<Attempted<A, E>>,
|
|
145
145
|
readonly invalidated: Ref.Ref<HashSet.HashSet<A>>,
|
|
146
|
-
readonly track: (exit: Exit.Exit<
|
|
146
|
+
readonly track: (exit: Exit.Exit<A, E>) => Effect.Effect<unknown>
|
|
147
147
|
) {}
|
|
148
148
|
|
|
149
149
|
[Hash.symbol](): number {
|
|
@@ -161,24 +161,24 @@ class PoolImpl<in out E, in out A> implements Pool.Pool<E, A> {
|
|
|
161
161
|
|
|
162
162
|
[Equal.symbol](that: unknown): boolean {
|
|
163
163
|
return isPool(that) &&
|
|
164
|
-
Equal.equals(this.creator, (that as PoolImpl<
|
|
165
|
-
this.min === (that as PoolImpl<
|
|
166
|
-
this.max === (that as PoolImpl<
|
|
167
|
-
Equal.equals(this.isShuttingDown, (that as PoolImpl<
|
|
168
|
-
Equal.equals(this.state, (that as PoolImpl<
|
|
169
|
-
Equal.equals(this.items, (that as PoolImpl<
|
|
170
|
-
Equal.equals(this.invalidated, (that as PoolImpl<
|
|
171
|
-
Equal.equals(this.track, (that as PoolImpl<
|
|
164
|
+
Equal.equals(this.creator, (that as PoolImpl<A, E>).creator) &&
|
|
165
|
+
this.min === (that as PoolImpl<A, E>).min &&
|
|
166
|
+
this.max === (that as PoolImpl<A, E>).max &&
|
|
167
|
+
Equal.equals(this.isShuttingDown, (that as PoolImpl<A, E>).isShuttingDown) &&
|
|
168
|
+
Equal.equals(this.state, (that as PoolImpl<A, E>).state) &&
|
|
169
|
+
Equal.equals(this.items, (that as PoolImpl<A, E>).items) &&
|
|
170
|
+
Equal.equals(this.invalidated, (that as PoolImpl<A, E>).invalidated) &&
|
|
171
|
+
Equal.equals(this.track, (that as PoolImpl<A, E>).track)
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
pipe() {
|
|
175
175
|
return pipeArguments(this, arguments)
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
get get(): Effect.Effect<
|
|
178
|
+
get get(): Effect.Effect<A, E, Scope.Scope> {
|
|
179
179
|
const acquire = (
|
|
180
|
-
restore: <
|
|
181
|
-
): Effect.Effect<
|
|
180
|
+
restore: <AX, EX, RX>(effect: Effect.Effect<AX, EX, RX>) => Effect.Effect<AX, EX, RX>
|
|
181
|
+
): Effect.Effect<Attempted<A, E>> =>
|
|
182
182
|
core.flatMap(ref.get(this.isShuttingDown), (down) =>
|
|
183
183
|
down
|
|
184
184
|
? core.interrupt
|
|
@@ -214,7 +214,7 @@ class PoolImpl<in out E, in out A> implements Pool.Pool<E, A> {
|
|
|
214
214
|
return [core.interrupt, state] as const
|
|
215
215
|
})))
|
|
216
216
|
|
|
217
|
-
const release = (attempted: Attempted<
|
|
217
|
+
const release = (attempted: Attempted<A, E>): Effect.Effect<unknown> =>
|
|
218
218
|
core.exitMatch(attempted.result, {
|
|
219
219
|
onFailure: () =>
|
|
220
220
|
core.flatten(ref.modify(this.state, (state) => {
|
|
@@ -252,22 +252,22 @@ class PoolImpl<in out E, in out A> implements Pool.Pool<E, A> {
|
|
|
252
252
|
)
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
-
invalidate(item: A): Effect.Effect<
|
|
255
|
+
invalidate(item: A): Effect.Effect<void> {
|
|
256
256
|
return ref.update(this.invalidated, HashSet.add(item))
|
|
257
257
|
}
|
|
258
258
|
}
|
|
259
259
|
|
|
260
|
-
const allocate = <
|
|
261
|
-
self: PoolImpl<
|
|
262
|
-
restore: <
|
|
263
|
-
): Effect.Effect<
|
|
260
|
+
const allocate = <A, E>(
|
|
261
|
+
self: PoolImpl<A, E>,
|
|
262
|
+
restore: <AX, EX, RX>(effect: Effect.Effect<AX, EX, RX>) => Effect.Effect<AX, EX, RX>
|
|
263
|
+
): Effect.Effect<unknown> =>
|
|
264
264
|
core.flatMap(fiberRuntime.scopeMake(), (scope) =>
|
|
265
265
|
core.flatMap(
|
|
266
266
|
core.exit(restore(fiberRuntime.scopeExtend(self.creator, scope))),
|
|
267
267
|
(exit) =>
|
|
268
268
|
core.flatMap(
|
|
269
|
-
core.succeed<Attempted<
|
|
270
|
-
result: exit as Exit.Exit<
|
|
269
|
+
core.succeed<Attempted<A, E>>({
|
|
270
|
+
result: exit as Exit.Exit<A, E>,
|
|
271
271
|
finalizer: core.scopeClose(scope, core.exitSucceed(void 0))
|
|
272
272
|
}),
|
|
273
273
|
(attempted) =>
|
|
@@ -280,20 +280,20 @@ const allocate = <E, A>(
|
|
|
280
280
|
)
|
|
281
281
|
))
|
|
282
282
|
|
|
283
|
-
const allocateUinterruptible = <
|
|
284
|
-
self: PoolImpl<
|
|
285
|
-
): Effect.Effect<
|
|
283
|
+
const allocateUinterruptible = <A, E>(
|
|
284
|
+
self: PoolImpl<A, E>
|
|
285
|
+
): Effect.Effect<unknown> => core.uninterruptibleMask((restore) => allocate(self, restore))
|
|
286
286
|
|
|
287
287
|
/**
|
|
288
288
|
* Returns the number of items in the pool in excess of the minimum size.
|
|
289
289
|
*/
|
|
290
|
-
const excess = <
|
|
290
|
+
const excess = <A, E>(self: PoolImpl<A, E>): Effect.Effect<number> =>
|
|
291
291
|
core.map(ref.get(self.state), (state) => state.size - Math.min(self.min, state.free))
|
|
292
292
|
|
|
293
|
-
const finalizeInvalid = <
|
|
294
|
-
self: PoolImpl<
|
|
295
|
-
attempted: Attempted<
|
|
296
|
-
): Effect.Effect<
|
|
293
|
+
const finalizeInvalid = <A, E>(
|
|
294
|
+
self: PoolImpl<A, E>,
|
|
295
|
+
attempted: Attempted<A, E>
|
|
296
|
+
): Effect.Effect<unknown> =>
|
|
297
297
|
pipe(
|
|
298
298
|
forEach(attempted, (a) => ref.update(self.invalidated, HashSet.remove(a))),
|
|
299
299
|
core.zipRight(attempted.finalizer),
|
|
@@ -311,7 +311,7 @@ const finalizeInvalid = <E, A>(
|
|
|
311
311
|
* Gets items from the pool and shuts them down as long as there are items
|
|
312
312
|
* free, signalling shutdown of the pool if the pool is empty.
|
|
313
313
|
*/
|
|
314
|
-
const getAndShutdown = <
|
|
314
|
+
const getAndShutdown = <A, E>(self: PoolImpl<A, E>): Effect.Effect<void> =>
|
|
315
315
|
core.flatten(ref.modify(self.state, (state) => {
|
|
316
316
|
if (state.free > 0) {
|
|
317
317
|
return [
|
|
@@ -337,7 +337,7 @@ const getAndShutdown = <E, A>(self: PoolImpl<E, A>): Effect.Effect<never, never,
|
|
|
337
337
|
/**
|
|
338
338
|
* Begins pre-allocating pool entries based on minimum pool size.
|
|
339
339
|
*/
|
|
340
|
-
const initialize = <
|
|
340
|
+
const initialize = <A, E>(self: PoolImpl<A, E>): Effect.Effect<void> =>
|
|
341
341
|
fiberRuntime.replicateEffect(
|
|
342
342
|
core.uninterruptibleMask((restore) =>
|
|
343
343
|
core.flatten(ref.modify(self.state, (state) => {
|
|
@@ -357,7 +357,7 @@ const initialize = <E, A>(self: PoolImpl<E, A>): Effect.Effect<never, never, voi
|
|
|
357
357
|
/**
|
|
358
358
|
* Shrinks the pool down, but never to less than the minimum size.
|
|
359
359
|
*/
|
|
360
|
-
const shrink = <
|
|
360
|
+
const shrink = <A, E>(self: PoolImpl<A, E>): Effect.Effect<void> =>
|
|
361
361
|
core.uninterruptible(
|
|
362
362
|
core.flatten(ref.modify(self.state, (state) => {
|
|
363
363
|
if (state.size > self.min && state.free > 0) {
|
|
@@ -379,50 +379,50 @@ const shrink = <E, A>(self: PoolImpl<E, A>): Effect.Effect<never, never, void> =
|
|
|
379
379
|
}))
|
|
380
380
|
)
|
|
381
381
|
|
|
382
|
-
const shutdown = <
|
|
382
|
+
const shutdown = <A, E>(self: PoolImpl<A, E>): Effect.Effect<void> =>
|
|
383
383
|
core.flatten(ref.modify(self.isShuttingDown, (down) =>
|
|
384
384
|
down
|
|
385
385
|
? [queue.awaitShutdown(self.items), true] as const
|
|
386
386
|
: [core.zipRight(getAndShutdown(self), queue.awaitShutdown(self.items)), true]))
|
|
387
387
|
|
|
388
|
-
const isFailure = <
|
|
388
|
+
const isFailure = <A, E>(self: Attempted<A, E>): boolean => core.exitIsFailure(self.result)
|
|
389
389
|
|
|
390
|
-
const forEach = <E, A,
|
|
391
|
-
self: Attempted<
|
|
392
|
-
f: (a: A) => Effect.Effect<
|
|
393
|
-
): Effect.Effect<
|
|
390
|
+
const forEach = <E, A, E2, R>(
|
|
391
|
+
self: Attempted<A, E>,
|
|
392
|
+
f: (a: A) => Effect.Effect<unknown, E2, R>
|
|
393
|
+
): Effect.Effect<unknown, E2, R> =>
|
|
394
394
|
core.exitMatch(self.result, {
|
|
395
395
|
onFailure: () => core.unit,
|
|
396
396
|
onSuccess: f
|
|
397
397
|
})
|
|
398
398
|
|
|
399
|
-
const toEffect = <
|
|
399
|
+
const toEffect = <A, E>(self: Attempted<A, E>): Effect.Effect<A, E> => self.result
|
|
400
400
|
|
|
401
401
|
/**
|
|
402
402
|
* A more powerful variant of `make` that allows specifying a `Strategy` that
|
|
403
403
|
* describes how a pool whose excess items are not being used will be shrunk
|
|
404
404
|
* down to the minimum size.
|
|
405
405
|
*/
|
|
406
|
-
const makeWith = <
|
|
406
|
+
const makeWith = <A, E, R, S, R2>(
|
|
407
407
|
options: {
|
|
408
|
-
readonly acquire: Effect.Effect<
|
|
408
|
+
readonly acquire: Effect.Effect<A, E, R>
|
|
409
409
|
readonly min: number
|
|
410
410
|
readonly max: number
|
|
411
411
|
readonly strategy: Strategy<S, R2, E, A>
|
|
412
412
|
}
|
|
413
|
-
): Effect.Effect<R | R2 | Scope.Scope
|
|
413
|
+
): Effect.Effect<Pool.Pool<A, E>, never, R | R2 | Scope.Scope> =>
|
|
414
414
|
core.uninterruptibleMask((restore) =>
|
|
415
415
|
pipe(
|
|
416
416
|
fiberRuntime.all([
|
|
417
417
|
core.context<R>(),
|
|
418
418
|
ref.make(false),
|
|
419
419
|
ref.make<PoolState>({ size: 0, free: 0 }),
|
|
420
|
-
queue.bounded<Attempted<
|
|
420
|
+
queue.bounded<Attempted<A, E>>(options.max),
|
|
421
421
|
ref.make(HashSet.empty<A>()),
|
|
422
422
|
options.strategy.initial()
|
|
423
423
|
]),
|
|
424
424
|
core.flatMap(([context, down, state, items, inv, initial]) => {
|
|
425
|
-
const pool = new PoolImpl<
|
|
425
|
+
const pool = new PoolImpl<A, E>(
|
|
426
426
|
core.mapInputContext(options.acquire, (old) => Context.merge(old)(context)),
|
|
427
427
|
options.min,
|
|
428
428
|
options.max,
|
|
@@ -447,7 +447,7 @@ const makeWith = <R, E, A, S, R2>(
|
|
|
447
447
|
)
|
|
448
448
|
)
|
|
449
449
|
),
|
|
450
|
-
core.as<Pool.Pool<
|
|
450
|
+
core.as<Pool.Pool<A, E>>(pool)
|
|
451
451
|
)
|
|
452
452
|
})
|
|
453
453
|
)
|
|
@@ -457,12 +457,12 @@ const makeWith = <R, E, A, S, R2>(
|
|
|
457
457
|
export const isPool = (u: unknown): u is Pool.Pool<unknown, unknown> => hasProperty(u, PoolTypeId)
|
|
458
458
|
|
|
459
459
|
/** @internal */
|
|
460
|
-
export const make = <
|
|
460
|
+
export const make = <A, E, R>(
|
|
461
461
|
options: {
|
|
462
|
-
readonly acquire: Effect.Effect<
|
|
462
|
+
readonly acquire: Effect.Effect<A, E, R>
|
|
463
463
|
readonly size: number
|
|
464
464
|
}
|
|
465
|
-
): Effect.Effect<R | Scope.Scope
|
|
465
|
+
): Effect.Effect<Pool.Pool<A, E>, never, R | Scope.Scope> =>
|
|
466
466
|
makeWith({
|
|
467
467
|
acquire: options.acquire,
|
|
468
468
|
min: options.size,
|
|
@@ -471,14 +471,14 @@ export const make = <R, E, A>(
|
|
|
471
471
|
})
|
|
472
472
|
|
|
473
473
|
/** @internal */
|
|
474
|
-
export const makeWithTTL = <
|
|
474
|
+
export const makeWithTTL = <A, E, R>(
|
|
475
475
|
options: {
|
|
476
|
-
readonly acquire: Effect.Effect<
|
|
476
|
+
readonly acquire: Effect.Effect<A, E, R>
|
|
477
477
|
readonly min: number
|
|
478
478
|
readonly max: number
|
|
479
479
|
readonly timeToLive: Duration.DurationInput
|
|
480
480
|
}
|
|
481
|
-
): Effect.Effect<R | Scope.Scope
|
|
481
|
+
): Effect.Effect<Pool.Pool<A, E>, never, R | Scope.Scope> =>
|
|
482
482
|
makeWith({
|
|
483
483
|
acquire: options.acquire,
|
|
484
484
|
min: options.min,
|
|
@@ -487,10 +487,10 @@ export const makeWithTTL = <R, E, A>(
|
|
|
487
487
|
})
|
|
488
488
|
|
|
489
489
|
/** @internal */
|
|
490
|
-
export const get = <
|
|
490
|
+
export const get = <A, E>(self: Pool.Pool<A, E>): Effect.Effect<A, E, Scope.Scope> => self.get
|
|
491
491
|
|
|
492
492
|
/** @internal */
|
|
493
493
|
export const invalidate = dual<
|
|
494
|
-
<A>(value: A) => <E>(self: Pool.Pool<
|
|
495
|
-
<
|
|
494
|
+
<A>(value: A) => <E>(self: Pool.Pool<A, E>) => Effect.Effect<void, never, Scope.Scope>,
|
|
495
|
+
<A, E>(self: Pool.Pool<A, E>, value: A) => Effect.Effect<void, never, Scope.Scope>
|
|
496
496
|
>(2, (self, value) => self.invalidate(value))
|