effect 2.2.5 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RateLimiter/package.json +6 -0
- package/dist/cjs/Cause.js +14 -1
- package/dist/cjs/Cause.js.map +1 -1
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/Clock.js.map +1 -1
- package/dist/cjs/Console.js.map +1 -1
- package/dist/cjs/Context.js +23 -25
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Data.js +3 -3
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/Deferred.js +1 -1
- package/dist/cjs/Deferred.js.map +1 -1
- package/dist/cjs/Effect.js +9 -9
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Effectable.js.map +1 -1
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/Exit.js +2 -2
- package/dist/cjs/Exit.js.map +1 -1
- package/dist/cjs/Fiber.js.map +1 -1
- package/dist/cjs/FiberMap.js +3 -3
- package/dist/cjs/FiberRef.js.map +1 -1
- package/dist/cjs/FiberRefs.js.map +1 -1
- package/dist/cjs/FiberSet.js +3 -3
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/GroupBy.js.map +1 -1
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/LogLevel.js.map +1 -1
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/Metric.js.map +1 -1
- package/dist/cjs/Number.js +20 -1
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/Option.js.map +1 -1
- package/dist/cjs/Pool.js.map +1 -1
- package/dist/cjs/PubSub.js.map +1 -1
- package/dist/cjs/Queue.js.map +1 -1
- package/dist/cjs/Random.js.map +1 -1
- package/dist/cjs/RateLimiter.js +38 -0
- package/dist/cjs/RateLimiter.js.map +1 -0
- package/dist/cjs/ReadonlyRecord.js +45 -9
- package/dist/cjs/ReadonlyRecord.js.map +1 -1
- package/dist/cjs/Ref.js.map +1 -1
- package/dist/cjs/Request.js.map +1 -1
- package/dist/cjs/RequestResolver.js.map +1 -1
- package/dist/cjs/Resource.js.map +1 -1
- package/dist/cjs/Runtime.js +1 -4
- package/dist/cjs/Runtime.js.map +1 -1
- package/dist/cjs/RuntimeFlags.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/Scope.js.map +1 -1
- package/dist/cjs/ScopedRef.js.map +1 -1
- package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/SubscriptionRef.js.map +1 -1
- package/dist/cjs/Supervisor.js.map +1 -1
- package/dist/cjs/SynchronizedRef.js.map +1 -1
- package/dist/cjs/TArray.js.map +1 -1
- package/dist/cjs/TDeferred.js.map +1 -1
- package/dist/cjs/TMap.js.map +1 -1
- package/dist/cjs/TPriorityQueue.js.map +1 -1
- package/dist/cjs/TPubSub.js.map +1 -1
- package/dist/cjs/TQueue.js.map +1 -1
- package/dist/cjs/TRandom.js.map +1 -1
- package/dist/cjs/TReentrantLock.js.map +1 -1
- package/dist/cjs/TRef.js.map +1 -1
- package/dist/cjs/TSemaphore.js.map +1 -1
- package/dist/cjs/TSet.js.map +1 -1
- package/dist/cjs/Take.js +6 -6
- package/dist/cjs/Take.js.map +1 -1
- package/dist/cjs/TestAnnotation.js +10 -13
- package/dist/cjs/TestAnnotation.js.map +1 -1
- package/dist/cjs/TestAnnotations.js +1 -1
- package/dist/cjs/TestAnnotations.js.map +1 -1
- package/dist/cjs/TestClock.js +1 -1
- package/dist/cjs/TestClock.js.map +1 -1
- package/dist/cjs/TestConfig.js +1 -1
- package/dist/cjs/TestConfig.js.map +1 -1
- package/dist/cjs/TestContext.js.map +1 -1
- package/dist/cjs/TestLive.js +1 -1
- package/dist/cjs/TestLive.js.map +1 -1
- package/dist/cjs/TestServices.js.map +1 -1
- package/dist/cjs/TestSized.js +1 -1
- package/dist/cjs/TestSized.js.map +1 -1
- package/dist/cjs/Utils.js +0 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/cache.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel/mergeDecision.js +2 -6
- package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
- package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/internal/channel.js +1 -1
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/clock.js +1 -1
- package/dist/cjs/internal/clock.js.map +1 -1
- package/dist/cjs/internal/configProvider.js +2 -4
- package/dist/cjs/internal/configProvider.js.map +1 -1
- package/dist/cjs/internal/console.js.map +1 -1
- package/dist/cjs/internal/context.js +31 -22
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +13 -27
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core-stream.js.map +1 -1
- package/dist/cjs/internal/core.js +61 -130
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/data.js.map +1 -1
- package/dist/cjs/internal/defaultServices/console.js +1 -1
- package/dist/cjs/internal/defaultServices/console.js.map +1 -1
- package/dist/cjs/internal/defaultServices.js.map +1 -1
- package/dist/cjs/internal/deferred.js.map +1 -1
- package/dist/cjs/internal/differ/contextPatch.js +9 -9
- package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +7 -10
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/effectable.js +4 -4
- package/dist/cjs/internal/effectable.js.map +1 -1
- package/dist/cjs/internal/fiber.js +2 -6
- package/dist/cjs/internal/fiber.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +10 -19
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/keyedPool.js.map +1 -1
- package/dist/cjs/internal/layer/circular.js.map +1 -1
- package/dist/cjs/internal/layer.js +3 -3
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/logSpan.js +3 -5
- package/dist/cjs/internal/logSpan.js.map +1 -1
- package/dist/cjs/internal/metric.js.map +1 -1
- package/dist/cjs/internal/pool.js.map +1 -1
- package/dist/cjs/internal/pubsub.js +2 -6
- package/dist/cjs/internal/pubsub.js.map +1 -1
- package/dist/cjs/internal/query.js.map +1 -1
- package/dist/cjs/internal/queue.js.map +1 -1
- package/dist/cjs/internal/random.js +1 -1
- package/dist/cjs/internal/random.js.map +1 -1
- package/dist/cjs/internal/rateLimiter.js +44 -0
- package/dist/cjs/internal/rateLimiter.js.map +1 -0
- package/dist/cjs/internal/ref.js.map +1 -1
- package/dist/cjs/internal/reloadable.js +1 -9
- package/dist/cjs/internal/reloadable.js.map +1 -1
- package/dist/cjs/internal/runtime.js +0 -1
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/scopedCache.js.map +1 -1
- package/dist/cjs/internal/scopedRef.js.map +1 -1
- package/dist/cjs/internal/sink.js +7 -7
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stm/core.js.map +1 -1
- package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tExit.js +2 -2
- package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
- package/dist/cjs/internal/stm/stm.js.map +1 -1
- package/dist/cjs/internal/stm/tArray.js.map +1 -1
- package/dist/cjs/internal/stm/tDeferred.js +4 -2
- package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
- package/dist/cjs/internal/stm/tMap.js.map +1 -1
- package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
- package/dist/cjs/internal/stm/tQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tRandom.js +1 -1
- package/dist/cjs/internal/stm/tRandom.js.map +1 -1
- package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
- package/dist/cjs/internal/stm/tRef.js.map +1 -1
- package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
- package/dist/cjs/internal/stm/tSet.js.map +1 -1
- package/dist/cjs/internal/stream/debounceState.js.map +1 -1
- package/dist/cjs/internal/stream/handoff.js.map +1 -1
- package/dist/cjs/internal/stream/handoffSignal.js.map +1 -1
- package/dist/cjs/internal/stream/pull.js.map +1 -1
- package/dist/cjs/internal/stream.js +0 -2
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/subscriptionRef.js.map +1 -1
- package/dist/cjs/internal/supervisor.js.map +1 -1
- package/dist/cjs/internal/take.js +2 -2
- package/dist/cjs/internal/take.js.map +1 -1
- package/dist/cjs/internal/testing/sleep.js.map +1 -1
- package/dist/cjs/internal/tracer.js +2 -2
- package/dist/cjs/internal/tracer.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Cache.d.ts +20 -20
- package/dist/dts/Cache.d.ts.map +1 -1
- package/dist/dts/Cause.d.ts +33 -5
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +197 -194
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Clock.d.ts +7 -7
- package/dist/dts/Clock.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +1 -1
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/ConfigProvider.d.ts +6 -6
- package/dist/dts/ConfigProvider.d.ts.map +1 -1
- package/dist/dts/Console.d.ts +43 -43
- package/dist/dts/Console.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +44 -29
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Data.d.ts +38 -57
- package/dist/dts/Data.d.ts.map +1 -1
- package/dist/dts/Deferred.d.ts +36 -36
- package/dist/dts/Deferred.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +732 -729
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Effectable.d.ts +8 -8
- package/dist/dts/Effectable.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +2 -3
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/Exit.d.ts +74 -74
- package/dist/dts/Exit.d.ts.map +1 -1
- package/dist/dts/Fiber.d.ts +75 -75
- package/dist/dts/Fiber.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts +22 -22
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberRef.d.ts +28 -28
- package/dist/dts/FiberRef.d.ts.map +1 -1
- package/dist/dts/FiberRefs.d.ts +1 -1
- package/dist/dts/FiberRefs.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts +16 -16
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/GroupBy.d.ts +6 -6
- package/dist/dts/GroupBy.d.ts.map +1 -1
- package/dist/dts/KeyedPool.d.ts +22 -22
- package/dist/dts/KeyedPool.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +126 -126
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/LogLevel.d.ts +2 -2
- package/dist/dts/LogLevel.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +14 -14
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/MergeDecision.d.ts +7 -7
- package/dist/dts/MergeState.d.ts +13 -13
- package/dist/dts/MergeState.d.ts.map +1 -1
- package/dist/dts/Metric.d.ts +32 -32
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/MetricPolling.d.ts +6 -6
- package/dist/dts/MetricPolling.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +15 -0
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +2 -3
- package/dist/dts/Option.d.ts.map +1 -1
- package/dist/dts/Pool.d.ts +15 -16
- package/dist/dts/Pool.d.ts.map +1 -1
- package/dist/dts/PubSub.d.ts +18 -18
- package/dist/dts/PubSub.d.ts.map +1 -1
- package/dist/dts/Queue.d.ts +40 -40
- package/dist/dts/Queue.d.ts.map +1 -1
- package/dist/dts/Random.d.ts +13 -13
- package/dist/dts/Random.d.ts.map +1 -1
- package/dist/dts/RateLimiter.d.ts +31 -0
- package/dist/dts/RateLimiter.d.ts.map +1 -0
- package/dist/dts/ReadonlyArray.d.ts +3 -3
- package/dist/dts/ReadonlyRecord.d.ts +37 -8
- package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
- package/dist/dts/Ref.d.ts +25 -25
- package/dist/dts/Ref.d.ts.map +1 -1
- package/dist/dts/Reloadable.d.ts +9 -9
- package/dist/dts/Reloadable.d.ts.map +1 -1
- package/dist/dts/Request.d.ts +27 -28
- package/dist/dts/Request.d.ts.map +1 -1
- package/dist/dts/RequestBlock.d.ts +3 -3
- package/dist/dts/RequestBlock.d.ts.map +1 -1
- package/dist/dts/RequestResolver.d.ts +16 -16
- package/dist/dts/RequestResolver.d.ts.map +1 -1
- package/dist/dts/Resource.d.ts +7 -7
- package/dist/dts/Resource.d.ts.map +1 -1
- package/dist/dts/Runtime.d.ts +13 -16
- package/dist/dts/Runtime.d.ts.map +1 -1
- package/dist/dts/RuntimeFlags.d.ts +10 -10
- package/dist/dts/RuntimeFlags.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +303 -303
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schedule.d.ts +47 -47
- package/dist/dts/Schedule.d.ts.map +1 -1
- package/dist/dts/Scope.d.ts +10 -10
- package/dist/dts/Scope.d.ts.map +1 -1
- package/dist/dts/ScopedCache.d.ts +14 -14
- package/dist/dts/ScopedCache.d.ts.map +1 -1
- package/dist/dts/ScopedRef.d.ts +5 -5
- package/dist/dts/ScopedRef.d.ts.map +1 -1
- package/dist/dts/SingleProducerAsyncInput.d.ts +8 -8
- package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +214 -205
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +595 -592
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/StreamEmit.d.ts +5 -5
- package/dist/dts/StreamEmit.d.ts.map +1 -1
- package/dist/dts/Streamable.d.ts +2 -2
- package/dist/dts/Streamable.d.ts.map +1 -1
- package/dist/dts/SubscriptionRef.d.ts +41 -41
- package/dist/dts/SubscriptionRef.d.ts.map +1 -1
- package/dist/dts/Supervisor.d.ts +17 -17
- package/dist/dts/Supervisor.d.ts.map +1 -1
- package/dist/dts/SynchronizedRef.d.ts +41 -41
- package/dist/dts/SynchronizedRef.d.ts.map +1 -1
- package/dist/dts/TArray.d.ts +72 -72
- package/dist/dts/TArray.d.ts.map +1 -1
- package/dist/dts/TDeferred.d.ts +12 -12
- package/dist/dts/TDeferred.d.ts.map +1 -1
- package/dist/dts/TMap.d.ts +67 -67
- package/dist/dts/TMap.d.ts.map +1 -1
- package/dist/dts/TPriorityQueue.d.ts +23 -23
- package/dist/dts/TPriorityQueue.d.ts.map +1 -1
- package/dist/dts/TPubSub.d.ts +15 -15
- package/dist/dts/TPubSub.d.ts.map +1 -1
- package/dist/dts/TQueue.d.ts +40 -40
- package/dist/dts/TQueue.d.ts.map +1 -1
- package/dist/dts/TRandom.d.ts +13 -13
- package/dist/dts/TRandom.d.ts.map +1 -1
- package/dist/dts/TReentrantLock.d.ts +21 -21
- package/dist/dts/TReentrantLock.d.ts.map +1 -1
- package/dist/dts/TRef.d.ts +25 -25
- package/dist/dts/TRef.d.ts.map +1 -1
- package/dist/dts/TSemaphore.d.ts +15 -15
- package/dist/dts/TSemaphore.d.ts.map +1 -1
- package/dist/dts/TSet.d.ts +49 -49
- package/dist/dts/TSet.d.ts.map +1 -1
- package/dist/dts/Take.d.ts +41 -41
- package/dist/dts/Take.d.ts.map +1 -1
- package/dist/dts/TestAnnotation.d.ts +1 -3
- package/dist/dts/TestAnnotation.d.ts.map +1 -1
- package/dist/dts/TestAnnotations.d.ts +3 -3
- package/dist/dts/TestAnnotations.d.ts.map +1 -1
- package/dist/dts/TestClock.d.ts +18 -18
- package/dist/dts/TestClock.d.ts.map +1 -1
- package/dist/dts/TestConfig.d.ts.map +1 -1
- package/dist/dts/TestContext.d.ts +2 -2
- package/dist/dts/TestContext.d.ts.map +1 -1
- package/dist/dts/TestLive.d.ts +1 -1
- package/dist/dts/TestLive.d.ts.map +1 -1
- package/dist/dts/TestServices.d.ts +31 -31
- package/dist/dts/TestServices.d.ts.map +1 -1
- package/dist/dts/TestSized.d.ts +2 -2
- package/dist/dts/TestSized.d.ts.map +1 -1
- package/dist/dts/Tracer.d.ts +1 -1
- package/dist/dts/Utils.d.ts.map +1 -1
- package/dist/dts/index.d.ts +12 -2
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/channel/channelExecutor.d.ts +1 -1
- package/dist/dts/internal/channel/channelExecutor.d.ts.map +1 -1
- package/dist/dts/internal/core-stream.d.ts +1 -1
- package/dist/dts/internal/core-stream.d.ts.map +1 -1
- package/dist/dts/internal/rateLimiter.d.ts +2 -0
- package/dist/dts/internal/rateLimiter.d.ts.map +1 -0
- package/dist/dts/internal/stm/stm.d.ts +6 -6
- package/dist/dts/internal/stm/stm.d.ts.map +1 -1
- package/dist/dts/internal/version.d.ts +1 -1
- package/dist/esm/Cause.js +13 -0
- package/dist/esm/Cause.js.map +1 -1
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Clock.js.map +1 -1
- package/dist/esm/Console.js.map +1 -1
- package/dist/esm/Context.js +22 -24
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Data.js +4 -5
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/Deferred.js +1 -1
- package/dist/esm/Deferred.js.map +1 -1
- package/dist/esm/Effect.js +9 -9
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Effectable.js.map +1 -1
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/Exit.js +2 -2
- package/dist/esm/Exit.js.map +1 -1
- package/dist/esm/Fiber.js.map +1 -1
- package/dist/esm/FiberMap.js +3 -3
- package/dist/esm/FiberRef.js.map +1 -1
- package/dist/esm/FiberRefs.js.map +1 -1
- package/dist/esm/FiberSet.js +3 -3
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/GroupBy.js.map +1 -1
- package/dist/esm/Layer.js.map +1 -1
- package/dist/esm/LogLevel.js.map +1 -1
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/Metric.js.map +1 -1
- package/dist/esm/Number.js +18 -0
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/Option.js.map +1 -1
- package/dist/esm/Pool.js.map +1 -1
- package/dist/esm/PubSub.js.map +1 -1
- package/dist/esm/Queue.js.map +1 -1
- package/dist/esm/Random.js.map +1 -1
- package/dist/esm/RateLimiter.js +7 -0
- package/dist/esm/RateLimiter.js.map +1 -0
- package/dist/esm/ReadonlyRecord.js +44 -8
- package/dist/esm/ReadonlyRecord.js.map +1 -1
- package/dist/esm/Ref.js.map +1 -1
- package/dist/esm/Request.js.map +1 -1
- package/dist/esm/RequestResolver.js.map +1 -1
- package/dist/esm/Resource.js.map +1 -1
- package/dist/esm/Runtime.js +1 -4
- package/dist/esm/Runtime.js.map +1 -1
- package/dist/esm/RuntimeFlags.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schedule.js.map +1 -1
- package/dist/esm/Scope.js.map +1 -1
- package/dist/esm/ScopedRef.js.map +1 -1
- package/dist/esm/SingleProducerAsyncInput.js.map +1 -1
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/SubscriptionRef.js.map +1 -1
- package/dist/esm/Supervisor.js.map +1 -1
- package/dist/esm/SynchronizedRef.js.map +1 -1
- package/dist/esm/TArray.js.map +1 -1
- package/dist/esm/TDeferred.js.map +1 -1
- package/dist/esm/TMap.js.map +1 -1
- package/dist/esm/TPriorityQueue.js.map +1 -1
- package/dist/esm/TPubSub.js.map +1 -1
- package/dist/esm/TQueue.js.map +1 -1
- package/dist/esm/TRandom.js.map +1 -1
- package/dist/esm/TReentrantLock.js.map +1 -1
- package/dist/esm/TRef.js.map +1 -1
- package/dist/esm/TSemaphore.js.map +1 -1
- package/dist/esm/TSet.js.map +1 -1
- package/dist/esm/Take.js +6 -6
- package/dist/esm/Take.js.map +1 -1
- package/dist/esm/TestAnnotation.js +10 -13
- package/dist/esm/TestAnnotation.js.map +1 -1
- package/dist/esm/TestAnnotations.js +1 -1
- package/dist/esm/TestAnnotations.js.map +1 -1
- package/dist/esm/TestClock.js +1 -1
- package/dist/esm/TestClock.js.map +1 -1
- package/dist/esm/TestConfig.js +1 -1
- package/dist/esm/TestConfig.js.map +1 -1
- package/dist/esm/TestContext.js.map +1 -1
- package/dist/esm/TestLive.js +1 -1
- package/dist/esm/TestLive.js.map +1 -1
- package/dist/esm/TestServices.js.map +1 -1
- package/dist/esm/TestSized.js +1 -1
- package/dist/esm/TestSized.js.map +1 -1
- package/dist/esm/Utils.js +1 -1
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/index.js +12 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/cache.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel/mergeDecision.js +2 -6
- package/dist/esm/internal/channel/mergeDecision.js.map +1 -1
- package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/esm/internal/channel.js +1 -1
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/clock.js +1 -1
- package/dist/esm/internal/clock.js.map +1 -1
- package/dist/esm/internal/configProvider.js +2 -4
- package/dist/esm/internal/configProvider.js.map +1 -1
- package/dist/esm/internal/console.js.map +1 -1
- package/dist/esm/internal/context.js +28 -20
- package/dist/esm/internal/context.js.map +1 -1
- package/dist/esm/internal/core-effect.js +12 -26
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core-stream.js.map +1 -1
- package/dist/esm/internal/core.js +57 -127
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/data.js.map +1 -1
- package/dist/esm/internal/defaultServices/console.js +1 -1
- package/dist/esm/internal/defaultServices/console.js.map +1 -1
- package/dist/esm/internal/defaultServices.js.map +1 -1
- package/dist/esm/internal/deferred.js.map +1 -1
- package/dist/esm/internal/differ/contextPatch.js +9 -9
- package/dist/esm/internal/differ/contextPatch.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +5 -8
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/effectable.js +4 -4
- package/dist/esm/internal/effectable.js.map +1 -1
- package/dist/esm/internal/fiber.js +2 -6
- package/dist/esm/internal/fiber.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +10 -19
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/keyedPool.js.map +1 -1
- package/dist/esm/internal/layer/circular.js.map +1 -1
- package/dist/esm/internal/layer.js +3 -3
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/logSpan.js +3 -5
- package/dist/esm/internal/logSpan.js.map +1 -1
- package/dist/esm/internal/metric.js.map +1 -1
- package/dist/esm/internal/pool.js.map +1 -1
- package/dist/esm/internal/pubsub.js +1 -5
- package/dist/esm/internal/pubsub.js.map +1 -1
- package/dist/esm/internal/query.js.map +1 -1
- package/dist/esm/internal/queue.js.map +1 -1
- package/dist/esm/internal/random.js +1 -1
- package/dist/esm/internal/random.js.map +1 -1
- package/dist/esm/internal/rateLimiter.js +12 -0
- package/dist/esm/internal/rateLimiter.js.map +1 -0
- package/dist/esm/internal/ref.js.map +1 -1
- package/dist/esm/internal/reloadable.js +1 -9
- package/dist/esm/internal/reloadable.js.map +1 -1
- package/dist/esm/internal/runtime.js +0 -1
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/scopedCache.js.map +1 -1
- package/dist/esm/internal/scopedRef.js.map +1 -1
- package/dist/esm/internal/sink.js +7 -7
- package/dist/esm/internal/sink.js.map +1 -1
- package/dist/esm/internal/stm/core.js.map +1 -1
- package/dist/esm/internal/stm/stm/stmState.js.map +1 -1
- package/dist/esm/internal/stm/stm/tExit.js +2 -2
- package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
- package/dist/esm/internal/stm/stm/tryCommit.js.map +1 -1
- package/dist/esm/internal/stm/stm.js.map +1 -1
- package/dist/esm/internal/stm/tArray.js.map +1 -1
- package/dist/esm/internal/stm/tDeferred.js +4 -2
- package/dist/esm/internal/stm/tDeferred.js.map +1 -1
- package/dist/esm/internal/stm/tMap.js.map +1 -1
- package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/esm/internal/stm/tPubSub.js.map +1 -1
- package/dist/esm/internal/stm/tQueue.js.map +1 -1
- package/dist/esm/internal/stm/tRandom.js +1 -1
- package/dist/esm/internal/stm/tRandom.js.map +1 -1
- package/dist/esm/internal/stm/tReentrantLock.js.map +1 -1
- package/dist/esm/internal/stm/tRef.js.map +1 -1
- package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
- package/dist/esm/internal/stm/tSet.js.map +1 -1
- package/dist/esm/internal/stream/debounceState.js.map +1 -1
- package/dist/esm/internal/stream/handoff.js.map +1 -1
- package/dist/esm/internal/stream/handoffSignal.js.map +1 -1
- package/dist/esm/internal/stream/pull.js.map +1 -1
- package/dist/esm/internal/stream.js +0 -2
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/subscriptionRef.js.map +1 -1
- package/dist/esm/internal/supervisor.js.map +1 -1
- package/dist/esm/internal/take.js +2 -2
- package/dist/esm/internal/take.js.map +1 -1
- package/dist/esm/internal/testing/sleep.js.map +1 -1
- package/dist/esm/internal/tracer.js +2 -2
- package/dist/esm/internal/tracer.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +9 -1
- package/src/Cache.ts +20 -20
- package/src/Cause.ts +37 -13
- package/src/Channel.ts +802 -794
- package/src/Clock.ts +7 -7
- package/src/Config.ts +1 -1
- package/src/ConfigProvider.ts +6 -6
- package/src/Console.ts +44 -48
- package/src/Context.ts +52 -30
- package/src/Data.ts +38 -61
- package/src/Deferred.ts +39 -41
- package/src/Effect.ts +1187 -1206
- package/src/Effectable.ts +8 -8
- package/src/Either.ts +2 -3
- package/src/Exit.ts +88 -105
- package/src/Fiber.ts +77 -83
- package/src/FiberMap.ts +77 -77
- package/src/FiberRef.ts +28 -28
- package/src/FiberRefs.ts +1 -1
- package/src/FiberSet.ts +61 -62
- package/src/GroupBy.ts +8 -12
- package/src/KeyedPool.ts +22 -22
- package/src/Layer.ts +187 -181
- package/src/LogLevel.ts +7 -6
- package/src/Logger.ts +18 -18
- package/src/MergeDecision.ts +7 -7
- package/src/MergeState.ts +16 -16
- package/src/Metric.ts +39 -39
- package/src/MetricPolling.ts +6 -6
- package/src/Number.ts +19 -0
- package/src/Option.ts +2 -3
- package/src/Pool.ts +15 -16
- package/src/PubSub.ts +18 -18
- package/src/Queue.ts +43 -46
- package/src/Random.ts +13 -15
- package/src/RateLimiter.ts +37 -0
- package/src/ReadonlyRecord.ts +49 -8
- package/src/Ref.ts +25 -25
- package/src/Reloadable.ts +10 -10
- package/src/Request.ts +31 -31
- package/src/RequestBlock.ts +3 -3
- package/src/RequestResolver.ts +21 -21
- package/src/Resource.ts +13 -13
- package/src/Runtime.ts +16 -19
- package/src/RuntimeFlags.ts +10 -10
- package/src/STM.ts +361 -362
- package/src/Schedule.ts +47 -47
- package/src/Scheduler.ts +2 -2
- package/src/Scope.ts +14 -15
- package/src/ScopedCache.ts +14 -14
- package/src/ScopedRef.ts +7 -7
- package/src/SingleProducerAsyncInput.ts +8 -9
- package/src/Sink.ts +357 -381
- package/src/Stream.ts +935 -1033
- package/src/StreamEmit.ts +5 -5
- package/src/Streamable.ts +2 -2
- package/src/SubscriptionRef.ts +51 -51
- package/src/Supervisor.ts +26 -26
- package/src/SynchronizedRef.ts +44 -44
- package/src/TArray.ts +74 -74
- package/src/TDeferred.ts +14 -14
- package/src/TMap.ts +72 -72
- package/src/TPriorityQueue.ts +23 -24
- package/src/TPubSub.ts +15 -15
- package/src/TQueue.ts +40 -40
- package/src/TRandom.ts +13 -13
- package/src/TReentrantLock.ts +21 -21
- package/src/TRef.ts +25 -25
- package/src/TSemaphore.ts +15 -15
- package/src/TSet.ts +49 -49
- package/src/Take.ts +51 -51
- package/src/TestAnnotation.ts +6 -17
- package/src/TestAnnotations.ts +7 -9
- package/src/TestClock.ts +39 -45
- package/src/TestConfig.ts +1 -3
- package/src/TestContext.ts +3 -3
- package/src/TestLive.ts +3 -5
- package/src/TestServices.ts +45 -47
- package/src/TestSized.ts +5 -5
- package/src/Tracer.ts +1 -1
- package/src/Utils.ts +8 -10
- package/src/index.ts +13 -2
- package/src/internal/blockedRequests.ts +2 -2
- package/src/internal/cache.ts +38 -38
- package/src/internal/channel/channelExecutor.ts +65 -73
- package/src/internal/channel/channelState.ts +11 -11
- package/src/internal/channel/continuation.ts +10 -10
- package/src/internal/channel/mergeDecision.ts +14 -16
- package/src/internal/channel/mergeState.ts +12 -12
- package/src/internal/channel/singleProducerAsyncInput.ts +15 -17
- package/src/internal/channel/subexecutor.ts +7 -7
- package/src/internal/channel.ts +901 -980
- package/src/internal/clock.ts +6 -6
- package/src/internal/concurrency.ts +9 -9
- package/src/internal/configProvider.ts +29 -36
- package/src/internal/console.ts +12 -12
- package/src/internal/context.ts +32 -23
- package/src/internal/core-effect.ts +655 -616
- package/src/internal/core-stream.ts +317 -325
- package/src/internal/core.ts +856 -790
- package/src/internal/data.ts +2 -3
- package/src/internal/dataSource.ts +14 -14
- package/src/internal/defaultServices/console.ts +3 -1
- package/src/internal/defaultServices.ts +21 -21
- package/src/internal/deferred.ts +9 -9
- package/src/internal/differ/contextPatch.ts +17 -17
- package/src/internal/effect/circular.ts +154 -159
- package/src/internal/effectable.ts +7 -7
- package/src/internal/fiber.ts +55 -59
- package/src/internal/fiberRefs.ts +1 -1
- package/src/internal/fiberRuntime.ts +426 -463
- package/src/internal/groupBy.ts +59 -62
- package/src/internal/keyedPool.ts +37 -37
- package/src/internal/layer/circular.ts +37 -37
- package/src/internal/layer.ts +235 -240
- package/src/internal/logSpan.ts +3 -5
- package/src/internal/metric/polling.ts +5 -5
- package/src/internal/metric.ts +54 -55
- package/src/internal/pool.ts +72 -72
- package/src/internal/pubsub.ts +75 -84
- package/src/internal/query.ts +25 -27
- package/src/internal/queue.ts +65 -70
- package/src/internal/random.ts +9 -9
- package/src/internal/rateLimiter.ts +30 -0
- package/src/internal/ref.ts +24 -24
- package/src/internal/reloadable.ts +11 -31
- package/src/internal/request.ts +14 -14
- package/src/internal/resource.ts +8 -8
- package/src/internal/runtime.ts +21 -22
- package/src/internal/schedule.ts +131 -134
- package/src/internal/scopedCache.ts +35 -32
- package/src/internal/scopedRef.ts +14 -14
- package/src/internal/sink.ts +507 -565
- package/src/internal/stm/core.ts +101 -102
- package/src/internal/stm/stm/stmState.ts +10 -10
- package/src/internal/stm/stm/tExit.ts +18 -18
- package/src/internal/stm/stm/tryCommit.ts +5 -5
- package/src/internal/stm/stm.ts +363 -374
- package/src/internal/stm/tArray.ts +92 -92
- package/src/internal/stm/tDeferred.ts +16 -14
- package/src/internal/stm/tMap.ts +83 -84
- package/src/internal/stm/tPriorityQueue.ts +24 -25
- package/src/internal/stm/tPubSub.ts +37 -38
- package/src/internal/stm/tQueue.ts +44 -48
- package/src/internal/stm/tRandom.ts +18 -18
- package/src/internal/stm/tReentrantLock.ts +28 -28
- package/src/internal/stm/tRef.ts +25 -25
- package/src/internal/stm/tSemaphore.ts +16 -16
- package/src/internal/stm/tSet.ts +51 -52
- package/src/internal/stream/debounceState.ts +7 -7
- package/src/internal/stream/emit.ts +4 -4
- package/src/internal/stream/handoff.ts +19 -19
- package/src/internal/stream/handoffSignal.ts +4 -4
- package/src/internal/stream/pull.ts +10 -11
- package/src/internal/stream.ts +1770 -1788
- package/src/internal/subscriptionRef.ts +17 -17
- package/src/internal/supervisor.ts +49 -56
- package/src/internal/synchronizedRef.ts +27 -27
- package/src/internal/take.ts +61 -61
- package/src/internal/testing/sleep.ts +2 -2
- package/src/internal/testing/suspendedWarningData.ts +2 -2
- package/src/internal/testing/warningData.ts +2 -2
- package/src/internal/tracer.ts +2 -6
- package/src/internal/version.ts +1 -1
|
@@ -38,7 +38,7 @@ import { currentScheduler, type Scheduler } from "../Scheduler.js"
|
|
|
38
38
|
import type * as Scope from "../Scope.js"
|
|
39
39
|
import type * as Supervisor from "../Supervisor.js"
|
|
40
40
|
import type * as Tracer from "../Tracer.js"
|
|
41
|
-
import type { Concurrency } from "../Types.js"
|
|
41
|
+
import type { Concurrency, NoInfer } from "../Types.js"
|
|
42
42
|
import * as _RequestBlock from "./blockedRequests.js"
|
|
43
43
|
import * as internalCause from "./cause.js"
|
|
44
44
|
import * as clock from "./clock.js"
|
|
@@ -254,7 +254,7 @@ export interface Snapshot {
|
|
|
254
254
|
}
|
|
255
255
|
|
|
256
256
|
/** @internal */
|
|
257
|
-
export class FiberRuntime<in out
|
|
257
|
+
export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFiber<A, E> {
|
|
258
258
|
readonly [internalFiber.FiberTypeId] = internalFiber.fiberVariance
|
|
259
259
|
readonly [internalFiber.RuntimeFiberTypeId] = runtimeFiberVariance
|
|
260
260
|
|
|
@@ -268,12 +268,12 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
268
268
|
|
|
269
269
|
private _queue = new Array<FiberMessage.FiberMessage>()
|
|
270
270
|
private _children: Set<FiberRuntime<any, any>> | null = null
|
|
271
|
-
private _observers = new Array<(exit: Exit.Exit<
|
|
271
|
+
private _observers = new Array<(exit: Exit.Exit<A, E>) => void>()
|
|
272
272
|
private _running = false
|
|
273
273
|
private _stack: Array<core.Continuation> = []
|
|
274
274
|
private _asyncInterruptor: ((effect: Effect.Effect<any, any, any>) => any) | null = null
|
|
275
275
|
private _asyncBlockingOn: FiberId.FiberId | null = null
|
|
276
|
-
private _exitValue: Exit.Exit<
|
|
276
|
+
private _exitValue: Exit.Exit<A, E> | null = null
|
|
277
277
|
private _steps: Array<Snapshot> = []
|
|
278
278
|
public _supervisor: Supervisor.Supervisor<any>
|
|
279
279
|
public _scheduler: Scheduler
|
|
@@ -311,21 +311,21 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
311
311
|
* background. This can be called to "kick off" execution of a fiber after
|
|
312
312
|
* it has been created.
|
|
313
313
|
*/
|
|
314
|
-
resume<
|
|
314
|
+
resume<A, E>(effect: Effect.Effect<A, E, any>): void {
|
|
315
315
|
this.tell(FiberMessage.resume(effect))
|
|
316
316
|
}
|
|
317
317
|
|
|
318
318
|
/**
|
|
319
319
|
* The status of the fiber.
|
|
320
320
|
*/
|
|
321
|
-
get status(): Effect.Effect<
|
|
321
|
+
get status(): Effect.Effect<FiberStatus.FiberStatus> {
|
|
322
322
|
return this.ask((_, status) => status)
|
|
323
323
|
}
|
|
324
324
|
|
|
325
325
|
/**
|
|
326
326
|
* Gets the fiber runtime flags.
|
|
327
327
|
*/
|
|
328
|
-
get runtimeFlags(): Effect.Effect<
|
|
328
|
+
get runtimeFlags(): Effect.Effect<RuntimeFlags.RuntimeFlags> {
|
|
329
329
|
return this.ask((state, status) => {
|
|
330
330
|
if (FiberStatus.isDone(status)) {
|
|
331
331
|
return state._runtimeFlags
|
|
@@ -344,7 +344,7 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
344
344
|
/**
|
|
345
345
|
* Retrieves the immediate children of the fiber.
|
|
346
346
|
*/
|
|
347
|
-
get children(): Effect.Effect<
|
|
347
|
+
get children(): Effect.Effect<Array<Fiber.RuntimeFiber<any, any>>> {
|
|
348
348
|
return this.ask((fiber) => Array.from(fiber.getChildren()))
|
|
349
349
|
}
|
|
350
350
|
|
|
@@ -373,7 +373,7 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
373
373
|
/**
|
|
374
374
|
* Retrieves the whole set of fiber refs.
|
|
375
375
|
*/
|
|
376
|
-
fiberRefs(): Effect.Effect<
|
|
376
|
+
fiberRefs(): Effect.Effect<FiberRefs.FiberRefs> {
|
|
377
377
|
return this.ask((fiber) => fiber.getFiberRefs())
|
|
378
378
|
}
|
|
379
379
|
|
|
@@ -386,9 +386,9 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
386
386
|
*/
|
|
387
387
|
ask<Z>(
|
|
388
388
|
f: (runtime: FiberRuntime<any, any>, status: FiberStatus.FiberStatus) => Z
|
|
389
|
-
): Effect.Effect<
|
|
389
|
+
): Effect.Effect<Z> {
|
|
390
390
|
return core.suspend(() => {
|
|
391
|
-
const deferred = core.deferredUnsafeMake<
|
|
391
|
+
const deferred = core.deferredUnsafeMake<Z>(this._fiberId)
|
|
392
392
|
this.tell(
|
|
393
393
|
FiberMessage.stateful((fiber, status) => {
|
|
394
394
|
core.deferredUnsafeDone(deferred, core.sync(() => f(fiber, status)))
|
|
@@ -409,9 +409,9 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
409
409
|
}
|
|
410
410
|
}
|
|
411
411
|
|
|
412
|
-
get await(): Effect.Effect<
|
|
413
|
-
return core.async
|
|
414
|
-
const cb = (exit: Exit.Exit<
|
|
412
|
+
get await(): Effect.Effect<Exit.Exit<A, E>> {
|
|
413
|
+
return core.async((resume) => {
|
|
414
|
+
const cb = (exit: Exit.Exit<A, E>) => resume(core.succeed(exit))
|
|
415
415
|
this.tell(
|
|
416
416
|
FiberMessage.stateful((fiber, _) => {
|
|
417
417
|
if (fiber._exitValue !== null) {
|
|
@@ -431,8 +431,8 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
431
431
|
}, this.id())
|
|
432
432
|
}
|
|
433
433
|
|
|
434
|
-
get inheritAll(): Effect.Effect<
|
|
435
|
-
return core.withFiberRuntime
|
|
434
|
+
get inheritAll(): Effect.Effect<void> {
|
|
435
|
+
return core.withFiberRuntime((parentFiber, parentStatus) => {
|
|
436
436
|
const parentFiberId = parentFiber.id()
|
|
437
437
|
const parentFiberRefs = parentFiber.getFiberRefs()
|
|
438
438
|
const parentRuntimeFlags = parentStatus.runtimeFlags
|
|
@@ -458,7 +458,7 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
458
458
|
* Tentatively observes the fiber, but returns immediately if it is not
|
|
459
459
|
* already done.
|
|
460
460
|
*/
|
|
461
|
-
get poll(): Effect.Effect<
|
|
461
|
+
get poll(): Effect.Effect<Option.Option<Exit.Exit<A, E>>> {
|
|
462
462
|
return core.sync(() => Option.fromNullable(this._exitValue))
|
|
463
463
|
}
|
|
464
464
|
|
|
@@ -466,14 +466,14 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
466
466
|
* Unsafely observes the fiber, but returns immediately if it is not
|
|
467
467
|
* already done.
|
|
468
468
|
*/
|
|
469
|
-
unsafePoll(): Exit.Exit<
|
|
469
|
+
unsafePoll(): Exit.Exit<A, E> | null {
|
|
470
470
|
return this._exitValue
|
|
471
471
|
}
|
|
472
472
|
|
|
473
473
|
/**
|
|
474
474
|
* In the background, interrupts the fiber as if interrupted from the specified fiber.
|
|
475
475
|
*/
|
|
476
|
-
interruptAsFork(fiberId: FiberId.FiberId): Effect.Effect<
|
|
476
|
+
interruptAsFork(fiberId: FiberId.FiberId): Effect.Effect<void> {
|
|
477
477
|
return core.sync(() => this.tell(FiberMessage.interruptSignal(internalCause.interrupt(fiberId))))
|
|
478
478
|
}
|
|
479
479
|
|
|
@@ -489,7 +489,7 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
489
489
|
*
|
|
490
490
|
* **NOTE**: This method must be invoked by the fiber itself.
|
|
491
491
|
*/
|
|
492
|
-
addObserver(observer: (exit: Exit.Exit<
|
|
492
|
+
addObserver(observer: (exit: Exit.Exit<A, E>) => void): void {
|
|
493
493
|
if (this._exitValue !== null) {
|
|
494
494
|
observer(this._exitValue!)
|
|
495
495
|
} else {
|
|
@@ -503,7 +503,7 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
503
503
|
*
|
|
504
504
|
* **NOTE**: This method must be invoked by the fiber itself.
|
|
505
505
|
*/
|
|
506
|
-
removeObserver(observer: (exit: Exit.Exit<
|
|
506
|
+
removeObserver(observer: (exit: Exit.Exit<A, E>) => void): void {
|
|
507
507
|
this._observers = this._observers.filter((o) => o !== observer)
|
|
508
508
|
}
|
|
509
509
|
/**
|
|
@@ -749,7 +749,7 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
749
749
|
return null
|
|
750
750
|
}
|
|
751
751
|
|
|
752
|
-
reportExitValue(exit: Exit.Exit<
|
|
752
|
+
reportExitValue(exit: Exit.Exit<A, E>) {
|
|
753
753
|
if (_runtimeFlags.runtimeMetrics(this._runtimeFlags)) {
|
|
754
754
|
const tags = this.getFiberRef(core.currentMetricLabels)
|
|
755
755
|
const startTimeMillis = this.id().startTimeMillis
|
|
@@ -775,7 +775,7 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
775
775
|
}
|
|
776
776
|
}
|
|
777
777
|
|
|
778
|
-
setExitValue(exit: Exit.Exit<
|
|
778
|
+
setExitValue(exit: Exit.Exit<A, E>) {
|
|
779
779
|
this._exitValue = exit
|
|
780
780
|
this.reportExitValue(exit)
|
|
781
781
|
for (let i = this._observers.length - 1; i >= 0; i--) {
|
|
@@ -924,7 +924,7 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
924
924
|
* This is not the normal way of starting a fiber, but it is useful when the
|
|
925
925
|
* express goal of executing the fiber is to synchronously produce its exit.
|
|
926
926
|
*/
|
|
927
|
-
start<R>(effect: Effect.Effect<
|
|
927
|
+
start<R>(effect: Effect.Effect<A, E, R>): void {
|
|
928
928
|
if (!this._running) {
|
|
929
929
|
this._running = true
|
|
930
930
|
const prev = (globalThis as any)[internalFiber.currentFiberURI]
|
|
@@ -953,7 +953,7 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
953
953
|
* off" execution of a fiber after it has been created, in hopes that the
|
|
954
954
|
* effect can be executed synchronously.
|
|
955
955
|
*/
|
|
956
|
-
startFork<R>(effect: Effect.Effect<
|
|
956
|
+
startFork<R>(effect: Effect.Effect<A, E, R>): void {
|
|
957
957
|
this.tell(FiberMessage.resume(effect))
|
|
958
958
|
}
|
|
959
959
|
|
|
@@ -1154,7 +1154,7 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
1154
1154
|
const patchFlags = _runtimeFlags.diff(snap.flags, flags)
|
|
1155
1155
|
return core.exitSucceed(core.blocked(
|
|
1156
1156
|
op.i0,
|
|
1157
|
-
core.withFiberRuntime((newFiber) => {
|
|
1157
|
+
core.withFiberRuntime<unknown, unknown>((newFiber) => {
|
|
1158
1158
|
while (frames.length > 0) {
|
|
1159
1159
|
newFiber.pushStack(frames.pop()!)
|
|
1160
1160
|
}
|
|
@@ -1312,7 +1312,7 @@ export class FiberRuntime<in out E, in out A> implements Fiber.RuntimeFiber<E, A
|
|
|
1312
1312
|
op._op === OpCodes.OP_SUCCESS ||
|
|
1313
1313
|
op._op === OpCodes.OP_FAILURE
|
|
1314
1314
|
) ?
|
|
1315
|
-
op as unknown as Exit.Exit<
|
|
1315
|
+
op as unknown as Exit.Exit<A, E> :
|
|
1316
1316
|
core.exitFailCause(internalCause.die(op))
|
|
1317
1317
|
}
|
|
1318
1318
|
} catch (e) {
|
|
@@ -1436,63 +1436,37 @@ export const currentLoggers: FiberRef.FiberRef<
|
|
|
1436
1436
|
|
|
1437
1437
|
/* @internal */
|
|
1438
1438
|
export const acquireRelease: {
|
|
1439
|
-
<A,
|
|
1440
|
-
release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<
|
|
1441
|
-
): <
|
|
1442
|
-
<
|
|
1443
|
-
acquire: Effect.Effect<
|
|
1444
|
-
release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<
|
|
1445
|
-
): Effect.Effect<
|
|
1446
|
-
} = dual
|
|
1447
|
-
|
|
1448
|
-
<A, R2, X>(
|
|
1449
|
-
release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<R2, never, X>
|
|
1450
|
-
): <R, E>(acquire: Effect.Effect<R, E, A>) => Effect.Effect<R | R2 | Scope.Scope, E, A>
|
|
1451
|
-
},
|
|
1452
|
-
{
|
|
1453
|
-
<R, E, A, R2, X>(
|
|
1454
|
-
acquire: Effect.Effect<R, E, A>,
|
|
1455
|
-
release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<R2, never, X>
|
|
1456
|
-
): Effect.Effect<R | R2 | Scope.Scope, E, A>
|
|
1457
|
-
}
|
|
1458
|
-
>((args) => core.isEffect(args[0]), (acquire, release) => {
|
|
1459
|
-
return core.uninterruptible(
|
|
1439
|
+
<A, X, R2>(
|
|
1440
|
+
release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<X, never, R2>
|
|
1441
|
+
): <E, R>(acquire: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R2 | R | Scope.Scope>
|
|
1442
|
+
<A, E, R, X, R2>(
|
|
1443
|
+
acquire: Effect.Effect<A, E, R>,
|
|
1444
|
+
release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<X, never, R2>
|
|
1445
|
+
): Effect.Effect<A, E, R2 | R | Scope.Scope>
|
|
1446
|
+
} = dual((args) => core.isEffect(args[0]), (acquire, release) =>
|
|
1447
|
+
core.uninterruptible(
|
|
1460
1448
|
core.tap(acquire, (a) => addFinalizer((exit) => release(a, exit)))
|
|
1461
|
-
)
|
|
1462
|
-
})
|
|
1449
|
+
))
|
|
1463
1450
|
|
|
1464
1451
|
/* @internal */
|
|
1465
1452
|
export const acquireReleaseInterruptible: {
|
|
1466
|
-
<
|
|
1467
|
-
release: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<
|
|
1468
|
-
): <
|
|
1469
|
-
<
|
|
1470
|
-
acquire: Effect.Effect<
|
|
1471
|
-
release: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<
|
|
1472
|
-
): Effect.Effect<Scope.Scope |
|
|
1473
|
-
} = dual
|
|
1474
|
-
|
|
1475
|
-
<A, R2, X>(
|
|
1476
|
-
release: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<R2, never, X>
|
|
1477
|
-
): <R, E>(acquire: Effect.Effect<R, E, A>) => Effect.Effect<R | R2 | Scope.Scope, E, A>
|
|
1478
|
-
},
|
|
1479
|
-
{
|
|
1480
|
-
<R, E, A, R2, X>(
|
|
1481
|
-
acquire: Effect.Effect<R, E, A>,
|
|
1482
|
-
release: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<R2, never, X>
|
|
1483
|
-
): Effect.Effect<R | R2 | Scope.Scope, E, A>
|
|
1484
|
-
}
|
|
1485
|
-
>((args) => core.isEffect(args[0]), (acquire, release) => {
|
|
1486
|
-
return ensuring(
|
|
1453
|
+
<X, R2>(
|
|
1454
|
+
release: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<X, never, R2>
|
|
1455
|
+
): <A, E, R>(acquire: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Scope.Scope | R2 | R>
|
|
1456
|
+
<A, E, R, X, R2>(
|
|
1457
|
+
acquire: Effect.Effect<A, E, R>,
|
|
1458
|
+
release: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<X, never, R2>
|
|
1459
|
+
): Effect.Effect<A, E, Scope.Scope | R2 | R>
|
|
1460
|
+
} = dual((args) => core.isEffect(args[0]), (acquire, release) =>
|
|
1461
|
+
ensuring(
|
|
1487
1462
|
acquire,
|
|
1488
1463
|
addFinalizer((exit) => release(exit))
|
|
1489
|
-
)
|
|
1490
|
-
})
|
|
1464
|
+
))
|
|
1491
1465
|
|
|
1492
1466
|
/* @internal */
|
|
1493
|
-
export const addFinalizer = <
|
|
1494
|
-
finalizer: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<
|
|
1495
|
-
): Effect.Effect<R | Scope.Scope
|
|
1467
|
+
export const addFinalizer = <X, R>(
|
|
1468
|
+
finalizer: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<X, never, R>
|
|
1469
|
+
): Effect.Effect<void, never, R | Scope.Scope> =>
|
|
1496
1470
|
core.withFiberRuntime(
|
|
1497
1471
|
(runtime) => {
|
|
1498
1472
|
const acquireRefs = runtime.getFiberRefs()
|
|
@@ -1510,7 +1484,7 @@ export const addFinalizer = <R, X>(
|
|
|
1510
1484
|
)
|
|
1511
1485
|
|
|
1512
1486
|
return ensuring(
|
|
1513
|
-
core.withRuntimeFlags(finalizer(exit) as Effect.Effect<
|
|
1487
|
+
core.withRuntimeFlags(finalizer(exit) as Effect.Effect<X>, patchFlags),
|
|
1514
1488
|
core.sync(() => {
|
|
1515
1489
|
runtimeFinalizer.setFiberRefs(
|
|
1516
1490
|
FiberRefsPatch.patch(inverseRefs, runtimeFinalizer.id(), runtimeFinalizer.getFiberRefs())
|
|
@@ -1522,7 +1496,7 @@ export const addFinalizer = <R, X>(
|
|
|
1522
1496
|
)
|
|
1523
1497
|
|
|
1524
1498
|
/* @internal */
|
|
1525
|
-
export const daemonChildren = <
|
|
1499
|
+
export const daemonChildren = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> => {
|
|
1526
1500
|
const forkScope = core.fiberRefLocally(core.currentForkScopeOverride, Option.some(fiberScope.globalScope))
|
|
1527
1501
|
return forkScope(self)
|
|
1528
1502
|
}
|
|
@@ -1531,38 +1505,44 @@ export const daemonChildren = <R, E, A>(self: Effect.Effect<R, E, A>): Effect.Ef
|
|
|
1531
1505
|
const _existsParFound = Symbol.for("effect/Effect/existsPar/found")
|
|
1532
1506
|
|
|
1533
1507
|
/* @internal */
|
|
1534
|
-
export const exists
|
|
1535
|
-
<
|
|
1508
|
+
export const exists: {
|
|
1509
|
+
<A, E, R>(f: (a: A, i: number) => Effect.Effect<boolean, E, R>, options?: {
|
|
1536
1510
|
readonly concurrency?: Concurrency | undefined
|
|
1537
1511
|
readonly batching?: boolean | "inherit" | undefined
|
|
1538
|
-
})
|
|
1539
|
-
<
|
|
1512
|
+
}): (elements: Iterable<A>) => Effect.Effect<boolean, E, R>
|
|
1513
|
+
<A, E, R>(elements: Iterable<A>, f: (a: A, i: number) => Effect.Effect<boolean, E, R>, options?: {
|
|
1540
1514
|
readonly concurrency?: Concurrency | undefined
|
|
1541
1515
|
readonly batching?: boolean | "inherit" | undefined
|
|
1542
|
-
})
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1516
|
+
}): Effect.Effect<boolean, E, R>
|
|
1517
|
+
} = dual(
|
|
1518
|
+
(args) => Predicate.isIterable(args[0]),
|
|
1519
|
+
<A, E, R>(elements: Iterable<A>, f: (a: A, i: number) => Effect.Effect<boolean, E, R>, options?: {
|
|
1520
|
+
readonly concurrency?: Concurrency | undefined
|
|
1521
|
+
readonly batching?: boolean | "inherit" | undefined
|
|
1522
|
+
}) =>
|
|
1523
|
+
concurrency.matchSimple(
|
|
1524
|
+
options?.concurrency,
|
|
1525
|
+
() => core.suspend(() => existsLoop(elements[Symbol.iterator](), 0, f)),
|
|
1526
|
+
() =>
|
|
1527
|
+
core.matchEffect(
|
|
1528
|
+
forEach(
|
|
1529
|
+
elements,
|
|
1530
|
+
(a, i) => core.if_(f(a, i), { onTrue: core.fail(_existsParFound), onFalse: core.unit }),
|
|
1531
|
+
options
|
|
1532
|
+
),
|
|
1533
|
+
{
|
|
1534
|
+
onFailure: (e) => e === _existsParFound ? core.succeed(true) : core.fail(e),
|
|
1535
|
+
onSuccess: () => core.succeed(false)
|
|
1536
|
+
}
|
|
1537
|
+
)
|
|
1538
|
+
)
|
|
1539
|
+
)
|
|
1560
1540
|
|
|
1561
|
-
const existsLoop = <
|
|
1541
|
+
const existsLoop = <A, E, R>(
|
|
1562
1542
|
iterator: Iterator<A>,
|
|
1563
1543
|
index: number,
|
|
1564
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
1565
|
-
): Effect.Effect<
|
|
1544
|
+
f: (a: A, i: number) => Effect.Effect<boolean, E, R>
|
|
1545
|
+
): Effect.Effect<boolean, E, R> => {
|
|
1566
1546
|
const next = iterator.next()
|
|
1567
1547
|
if (next.done) {
|
|
1568
1548
|
return core.succeed(false)
|
|
@@ -1575,22 +1555,22 @@ const existsLoop = <R, E, A>(
|
|
|
1575
1555
|
|
|
1576
1556
|
/* @internal */
|
|
1577
1557
|
export const filter = dual<
|
|
1578
|
-
<A,
|
|
1579
|
-
f: (a: A
|
|
1558
|
+
<A, E, R>(
|
|
1559
|
+
f: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>,
|
|
1580
1560
|
options?: {
|
|
1581
1561
|
readonly concurrency?: Concurrency | undefined
|
|
1582
1562
|
readonly batching?: boolean | "inherit" | undefined
|
|
1583
1563
|
readonly negate?: boolean | undefined
|
|
1584
1564
|
}
|
|
1585
|
-
) => (elements: Iterable<A>) => Effect.Effect<
|
|
1586
|
-
<A,
|
|
1565
|
+
) => (elements: Iterable<A>) => Effect.Effect<Array<A>, E, R>,
|
|
1566
|
+
<A, E, R>(elements: Iterable<A>, f: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>, options?: {
|
|
1587
1567
|
readonly concurrency?: Concurrency | undefined
|
|
1588
1568
|
readonly batching?: boolean | "inherit" | undefined
|
|
1589
1569
|
readonly negate?: boolean | undefined
|
|
1590
|
-
}) => Effect.Effect<
|
|
1570
|
+
}) => Effect.Effect<Array<A>, E, R>
|
|
1591
1571
|
>(
|
|
1592
1572
|
(args) => Predicate.isIterable(args[0]),
|
|
1593
|
-
<A,
|
|
1573
|
+
<A, E, R>(elements: Iterable<A>, f: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>, options?: {
|
|
1594
1574
|
readonly concurrency?: Concurrency | undefined
|
|
1595
1575
|
readonly batching?: boolean | "inherit" | undefined
|
|
1596
1576
|
readonly negate?: boolean | undefined
|
|
@@ -1607,7 +1587,7 @@ export const filter = dual<
|
|
|
1607
1587
|
core.suspend(() => predicate(a, i)),
|
|
1608
1588
|
(list, b) => b ? [a, ...list] : list
|
|
1609
1589
|
),
|
|
1610
|
-
core.sync(() => new Array<A>()) as Effect.Effect<
|
|
1590
|
+
core.sync(() => new Array<A>()) as Effect.Effect<Array<A>, E, R>
|
|
1611
1591
|
)
|
|
1612
1592
|
),
|
|
1613
1593
|
() =>
|
|
@@ -1772,13 +1752,13 @@ export const allWith = <
|
|
|
1772
1752
|
): Effect.All.Return<Arg, O> => all(arg, options)
|
|
1773
1753
|
|
|
1774
1754
|
/* @internal */
|
|
1775
|
-
export const allSuccesses = <
|
|
1776
|
-
elements: Iterable<Effect.Effect<
|
|
1755
|
+
export const allSuccesses = <A, E, R>(
|
|
1756
|
+
elements: Iterable<Effect.Effect<A, E, R>>,
|
|
1777
1757
|
options?: {
|
|
1778
1758
|
readonly concurrency?: Concurrency | undefined
|
|
1779
1759
|
readonly batching?: boolean | "inherit" | undefined
|
|
1780
1760
|
}
|
|
1781
|
-
): Effect.Effect<
|
|
1761
|
+
): Effect.Effect<Array<A>, never, R> =>
|
|
1782
1762
|
core.map(
|
|
1783
1763
|
all(RA.fromIterable(elements).map(core.exit), options),
|
|
1784
1764
|
RA.filterMap((exit) => core.exitIsSuccess(exit) ? Option.some(exit.i0) : Option.none())
|
|
@@ -1786,8 +1766,8 @@ export const allSuccesses = <R, E, A>(
|
|
|
1786
1766
|
|
|
1787
1767
|
/* @internal */
|
|
1788
1768
|
export const replicate = dual<
|
|
1789
|
-
(n: number) => <
|
|
1790
|
-
<
|
|
1769
|
+
(n: number) => <A, E, R>(self: Effect.Effect<A, E, R>) => Array<Effect.Effect<A, E, R>>,
|
|
1770
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, n: number) => Array<Effect.Effect<A, E, R>>
|
|
1791
1771
|
>(2, (self, n) => Array.from({ length: n }, () => self))
|
|
1792
1772
|
|
|
1793
1773
|
/* @internal */
|
|
@@ -1799,7 +1779,7 @@ export const replicateEffect: {
|
|
|
1799
1779
|
readonly batching?: boolean | "inherit" | undefined
|
|
1800
1780
|
readonly discard?: false | undefined
|
|
1801
1781
|
}
|
|
1802
|
-
): <
|
|
1782
|
+
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Array<A>, E, R>
|
|
1803
1783
|
(
|
|
1804
1784
|
n: number,
|
|
1805
1785
|
options: {
|
|
@@ -1807,25 +1787,25 @@ export const replicateEffect: {
|
|
|
1807
1787
|
readonly batching?: boolean | "inherit" | undefined
|
|
1808
1788
|
readonly discard: true
|
|
1809
1789
|
}
|
|
1810
|
-
): <
|
|
1811
|
-
<
|
|
1812
|
-
self: Effect.Effect<
|
|
1790
|
+
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<void, E, R>
|
|
1791
|
+
<A, E, R>(
|
|
1792
|
+
self: Effect.Effect<A, E, R>,
|
|
1813
1793
|
n: number,
|
|
1814
1794
|
options?: {
|
|
1815
1795
|
readonly concurrency?: Concurrency | undefined
|
|
1816
1796
|
readonly batching?: boolean | "inherit" | undefined
|
|
1817
1797
|
readonly discard?: false | undefined
|
|
1818
1798
|
}
|
|
1819
|
-
): Effect.Effect<
|
|
1820
|
-
<
|
|
1821
|
-
self: Effect.Effect<
|
|
1799
|
+
): Effect.Effect<Array<A>, E, R>
|
|
1800
|
+
<A, E, R>(
|
|
1801
|
+
self: Effect.Effect<A, E, R>,
|
|
1822
1802
|
n: number,
|
|
1823
1803
|
options: {
|
|
1824
1804
|
readonly concurrency?: Concurrency | undefined
|
|
1825
1805
|
readonly batching?: boolean | "inherit" | undefined
|
|
1826
1806
|
readonly discard: true
|
|
1827
1807
|
}
|
|
1828
|
-
): Effect.Effect<
|
|
1808
|
+
): Effect.Effect<void, E, R>
|
|
1829
1809
|
} = dual(
|
|
1830
1810
|
(args) => core.isEffect(args[0]),
|
|
1831
1811
|
(self, n, options) => all(replicate(self, n), options)
|
|
@@ -1833,50 +1813,50 @@ export const replicateEffect: {
|
|
|
1833
1813
|
|
|
1834
1814
|
/* @internal */
|
|
1835
1815
|
export const forEach: {
|
|
1836
|
-
<A,
|
|
1837
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
1816
|
+
<A, B, E, R>(
|
|
1817
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
1838
1818
|
options?: {
|
|
1839
1819
|
readonly concurrency?: Concurrency | undefined
|
|
1840
1820
|
readonly batching?: boolean | "inherit" | undefined
|
|
1841
1821
|
readonly discard?: false | undefined
|
|
1842
1822
|
}
|
|
1843
|
-
): (self: Iterable<A>) => Effect.Effect<
|
|
1844
|
-
<A,
|
|
1845
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
1823
|
+
): (self: Iterable<A>) => Effect.Effect<Array<B>, E, R>
|
|
1824
|
+
<A, B, E, R>(
|
|
1825
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
1846
1826
|
options: {
|
|
1847
1827
|
readonly concurrency?: Concurrency | undefined
|
|
1848
1828
|
readonly batching?: boolean | "inherit" | undefined
|
|
1849
1829
|
readonly discard: true
|
|
1850
1830
|
}
|
|
1851
|
-
): (self: Iterable<A>) => Effect.Effect<
|
|
1852
|
-
<A,
|
|
1831
|
+
): (self: Iterable<A>) => Effect.Effect<void, E, R>
|
|
1832
|
+
<A, B, E, R>(
|
|
1853
1833
|
self: Iterable<A>,
|
|
1854
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
1834
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
1855
1835
|
options?: {
|
|
1856
1836
|
readonly concurrency?: Concurrency | undefined
|
|
1857
1837
|
readonly batching?: boolean | "inherit" | undefined
|
|
1858
1838
|
readonly discard?: false | undefined
|
|
1859
1839
|
}
|
|
1860
|
-
): Effect.Effect<
|
|
1861
|
-
<A,
|
|
1840
|
+
): Effect.Effect<Array<B>, E, R>
|
|
1841
|
+
<A, B, E, R>(
|
|
1862
1842
|
self: Iterable<A>,
|
|
1863
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
1843
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
1864
1844
|
options: {
|
|
1865
1845
|
readonly concurrency?: Concurrency | undefined
|
|
1866
1846
|
readonly batching?: boolean | "inherit" | undefined
|
|
1867
1847
|
readonly discard: true
|
|
1868
1848
|
}
|
|
1869
|
-
): Effect.Effect<
|
|
1849
|
+
): Effect.Effect<void, E, R>
|
|
1870
1850
|
} = dual((args) => Predicate.isIterable(args[0]), <A, R, E, B>(
|
|
1871
1851
|
self: Iterable<A>,
|
|
1872
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
1852
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
1873
1853
|
options?: {
|
|
1874
1854
|
readonly concurrency?: Concurrency | undefined
|
|
1875
1855
|
readonly batching?: boolean | "inherit" | undefined
|
|
1876
1856
|
readonly discard?: boolean | undefined
|
|
1877
1857
|
}
|
|
1878
1858
|
) =>
|
|
1879
|
-
core.withFiberRuntime<
|
|
1859
|
+
core.withFiberRuntime<A | void, E, R>((r) => {
|
|
1880
1860
|
const isRequestBatchingEnabled = options?.batching === true ||
|
|
1881
1861
|
(options?.batching === "inherit" && r.getFiberRef(core.currentRequestBatching))
|
|
1882
1862
|
|
|
@@ -1920,11 +1900,11 @@ export const forEach: {
|
|
|
1920
1900
|
}))
|
|
1921
1901
|
|
|
1922
1902
|
/* @internal */
|
|
1923
|
-
export const forEachParUnbounded = <A,
|
|
1903
|
+
export const forEachParUnbounded = <A, B, E, R>(
|
|
1924
1904
|
self: Iterable<A>,
|
|
1925
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
1905
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
1926
1906
|
batching: boolean
|
|
1927
|
-
): Effect.Effect<
|
|
1907
|
+
): Effect.Effect<Array<B>, E, R> =>
|
|
1928
1908
|
core.suspend(() => {
|
|
1929
1909
|
const as = RA.fromIterable(self)
|
|
1930
1910
|
const array = new Array<B>(as.length)
|
|
@@ -1933,13 +1913,13 @@ export const forEachParUnbounded = <A, R, E, B>(
|
|
|
1933
1913
|
})
|
|
1934
1914
|
|
|
1935
1915
|
/** @internal */
|
|
1936
|
-
export const forEachConcurrentDiscard = <
|
|
1916
|
+
export const forEachConcurrentDiscard = <A, _, E, R>(
|
|
1937
1917
|
self: Iterable<A>,
|
|
1938
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
1918
|
+
f: (a: A, i: number) => Effect.Effect<_, E, R>,
|
|
1939
1919
|
batching: boolean,
|
|
1940
1920
|
processAll: boolean,
|
|
1941
1921
|
n?: number
|
|
1942
|
-
): Effect.Effect<
|
|
1922
|
+
): Effect.Effect<void, E, R> =>
|
|
1943
1923
|
core.uninterruptibleMask((restore) =>
|
|
1944
1924
|
core.transplant((graft) =>
|
|
1945
1925
|
core.withFiberRuntime((parent) => {
|
|
@@ -1951,7 +1931,7 @@ export const forEachConcurrentDiscard = <R, E, A, _>(
|
|
|
1951
1931
|
let counter = 0
|
|
1952
1932
|
let interrupted = false
|
|
1953
1933
|
const fibersCount = n ? Math.min(todos.length, n) : todos.length
|
|
1954
|
-
const fibers = new Set<FiberRuntime<
|
|
1934
|
+
const fibers = new Set<FiberRuntime<Exit.Exit<_, E> | Effect.Blocked<_, E>>>()
|
|
1955
1935
|
const results = new Array()
|
|
1956
1936
|
const interruptAll = () =>
|
|
1957
1937
|
fibers.forEach((fiber) => {
|
|
@@ -1959,11 +1939,11 @@ export const forEachConcurrentDiscard = <R, E, A, _>(
|
|
|
1959
1939
|
fiber.unsafeInterruptAsFork(parent.id())
|
|
1960
1940
|
}, 0)
|
|
1961
1941
|
})
|
|
1962
|
-
const startOrder = new Array<FiberRuntime<
|
|
1963
|
-
const joinOrder = new Array<FiberRuntime<
|
|
1942
|
+
const startOrder = new Array<FiberRuntime<Exit.Exit<_, E> | Effect.Blocked<_, E>>>()
|
|
1943
|
+
const joinOrder = new Array<FiberRuntime<Exit.Exit<_, E> | Effect.Blocked<_, E>>>()
|
|
1964
1944
|
const residual = new Array<core.Blocked>()
|
|
1965
1945
|
const collectExits = () => {
|
|
1966
|
-
const exits: Array<Exit.Exit<
|
|
1946
|
+
const exits: Array<Exit.Exit<any, E>> = results
|
|
1967
1947
|
.filter(({ exit }) => exit._tag === "Failure")
|
|
1968
1948
|
.sort((a, b) => a.index < b.index ? -1 : a.index === b.index ? 0 : 1)
|
|
1969
1949
|
.map(({ exit }) => exit)
|
|
@@ -1972,7 +1952,7 @@ export const forEachConcurrentDiscard = <R, E, A, _>(
|
|
|
1972
1952
|
}
|
|
1973
1953
|
return exits
|
|
1974
1954
|
}
|
|
1975
|
-
const runFiber = <
|
|
1955
|
+
const runFiber = <A, E, R>(eff: Effect.Effect<A, E, R>) => {
|
|
1976
1956
|
const runnable = core.uninterruptible(graft(eff))
|
|
1977
1957
|
const fiber = unsafeForkUnstarted(
|
|
1978
1958
|
runnable,
|
|
@@ -1996,7 +1976,7 @@ export const forEachConcurrentDiscard = <R, E, A, _>(
|
|
|
1996
1976
|
const stepOrExit = batching ? core.step : core.exit
|
|
1997
1977
|
const processingFiber = runFiber(
|
|
1998
1978
|
core.async<any, any, any>((resume) => {
|
|
1999
|
-
const pushResult = <
|
|
1979
|
+
const pushResult = <_, E>(res: Exit.Exit<_, E> | Effect.Blocked<_, E>, index: number) => {
|
|
2000
1980
|
if (res._op === "Blocked") {
|
|
2001
1981
|
residual.push(res as core.Blocked)
|
|
2002
1982
|
} else {
|
|
@@ -2020,8 +2000,8 @@ export const forEachConcurrentDiscard = <R, E, A, _>(
|
|
|
2020
2000
|
))
|
|
2021
2001
|
}
|
|
2022
2002
|
const onRes = (
|
|
2023
|
-
res: Exit.Exit<
|
|
2024
|
-
): Effect.Effect<
|
|
2003
|
+
res: Exit.Exit<_, E> | Effect.Blocked<_, E>
|
|
2004
|
+
): Effect.Effect<Exit.Exit<_, E> | Effect.Blocked<_, E>, never, R> => {
|
|
2025
2005
|
if (todos.length > 0) {
|
|
2026
2006
|
pushResult(res, index)
|
|
2027
2007
|
if (todos.length > 0) {
|
|
@@ -2101,12 +2081,12 @@ export const forEachConcurrentDiscard = <R, E, A, _>(
|
|
|
2101
2081
|
)
|
|
2102
2082
|
|
|
2103
2083
|
/* @internal */
|
|
2104
|
-
export const forEachParN = <A,
|
|
2084
|
+
export const forEachParN = <A, B, E, R>(
|
|
2105
2085
|
self: Iterable<A>,
|
|
2106
2086
|
n: number,
|
|
2107
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
2087
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
2108
2088
|
batching: boolean
|
|
2109
|
-
): Effect.Effect<
|
|
2089
|
+
): Effect.Effect<Array<B>, E, R> =>
|
|
2110
2090
|
core.suspend(() => {
|
|
2111
2091
|
const as = RA.fromIterable(self)
|
|
2112
2092
|
const array = new Array<B>(as.length)
|
|
@@ -2115,71 +2095,67 @@ export const forEachParN = <A, R, E, B>(
|
|
|
2115
2095
|
})
|
|
2116
2096
|
|
|
2117
2097
|
/* @internal */
|
|
2118
|
-
export const fork = <
|
|
2119
|
-
core.withFiberRuntime
|
|
2120
|
-
core.succeed(unsafeFork(self, state, status.runtimeFlags))
|
|
2121
|
-
)
|
|
2098
|
+
export const fork = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<Fiber.RuntimeFiber<A, E>, never, R> =>
|
|
2099
|
+
core.withFiberRuntime((state, status) => core.succeed(unsafeFork(self, state, status.runtimeFlags)))
|
|
2122
2100
|
|
|
2123
2101
|
/* @internal */
|
|
2124
|
-
export const forkDaemon = <
|
|
2102
|
+
export const forkDaemon = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<Fiber.RuntimeFiber<A, E>, never, R> =>
|
|
2125
2103
|
forkWithScopeOverride(self, fiberScope.globalScope)
|
|
2126
2104
|
|
|
2127
2105
|
/* @internal */
|
|
2128
2106
|
export const forkWithErrorHandler = dual<
|
|
2129
2107
|
<E, X>(
|
|
2130
|
-
handler: (e: E) => Effect.Effect<
|
|
2131
|
-
) => <
|
|
2132
|
-
<
|
|
2133
|
-
self: Effect.Effect<
|
|
2134
|
-
handler: (e: E) => Effect.Effect<
|
|
2135
|
-
) => Effect.Effect<
|
|
2108
|
+
handler: (e: E) => Effect.Effect<X>
|
|
2109
|
+
) => <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Fiber.RuntimeFiber<A, E>, never, R>,
|
|
2110
|
+
<A, E, R, X>(
|
|
2111
|
+
self: Effect.Effect<A, E, R>,
|
|
2112
|
+
handler: (e: E) => Effect.Effect<X>
|
|
2113
|
+
) => Effect.Effect<Fiber.RuntimeFiber<A, E>, never, R>
|
|
2136
2114
|
>(2, (self, handler) =>
|
|
2137
2115
|
fork(core.onError(self, (cause) => {
|
|
2138
2116
|
const either = internalCause.failureOrCause(cause)
|
|
2139
2117
|
switch (either._tag) {
|
|
2140
|
-
case "Left":
|
|
2118
|
+
case "Left":
|
|
2141
2119
|
return handler(either.left)
|
|
2142
|
-
|
|
2143
|
-
case "Right": {
|
|
2120
|
+
case "Right":
|
|
2144
2121
|
return core.failCause(either.right)
|
|
2145
|
-
}
|
|
2146
2122
|
}
|
|
2147
2123
|
})))
|
|
2148
2124
|
|
|
2149
2125
|
/** @internal */
|
|
2150
|
-
export const unsafeFork = <
|
|
2151
|
-
effect: Effect.Effect<
|
|
2152
|
-
parentFiber: FiberRuntime<
|
|
2126
|
+
export const unsafeFork = <A, E, R, E2, B>(
|
|
2127
|
+
effect: Effect.Effect<A, E, R>,
|
|
2128
|
+
parentFiber: FiberRuntime<B, E2>,
|
|
2153
2129
|
parentRuntimeFlags: RuntimeFlags.RuntimeFlags,
|
|
2154
2130
|
overrideScope: fiberScope.FiberScope | null = null
|
|
2155
|
-
): FiberRuntime<
|
|
2131
|
+
): FiberRuntime<A, E> => {
|
|
2156
2132
|
const childFiber = unsafeMakeChildFiber(effect, parentFiber, parentRuntimeFlags, overrideScope)
|
|
2157
2133
|
childFiber.resume(effect)
|
|
2158
2134
|
return childFiber
|
|
2159
2135
|
}
|
|
2160
2136
|
|
|
2161
2137
|
/** @internal */
|
|
2162
|
-
export const unsafeForkUnstarted = <
|
|
2163
|
-
effect: Effect.Effect<
|
|
2164
|
-
parentFiber: FiberRuntime<
|
|
2138
|
+
export const unsafeForkUnstarted = <A, E, R, E2, B>(
|
|
2139
|
+
effect: Effect.Effect<A, E, R>,
|
|
2140
|
+
parentFiber: FiberRuntime<B, E2>,
|
|
2165
2141
|
parentRuntimeFlags: RuntimeFlags.RuntimeFlags,
|
|
2166
2142
|
overrideScope: fiberScope.FiberScope | null = null
|
|
2167
|
-
): FiberRuntime<
|
|
2143
|
+
): FiberRuntime<A, E> => {
|
|
2168
2144
|
const childFiber = unsafeMakeChildFiber(effect, parentFiber, parentRuntimeFlags, overrideScope)
|
|
2169
2145
|
return childFiber
|
|
2170
2146
|
}
|
|
2171
2147
|
|
|
2172
2148
|
/** @internal */
|
|
2173
|
-
export const unsafeMakeChildFiber = <
|
|
2174
|
-
effect: Effect.Effect<
|
|
2175
|
-
parentFiber: FiberRuntime<
|
|
2149
|
+
export const unsafeMakeChildFiber = <A, E, R, E2, B>(
|
|
2150
|
+
effect: Effect.Effect<A, E, R>,
|
|
2151
|
+
parentFiber: FiberRuntime<B, E2>,
|
|
2176
2152
|
parentRuntimeFlags: RuntimeFlags.RuntimeFlags,
|
|
2177
2153
|
overrideScope: fiberScope.FiberScope | null = null
|
|
2178
|
-
): FiberRuntime<
|
|
2154
|
+
): FiberRuntime<A, E> => {
|
|
2179
2155
|
const childId = FiberId.unsafeMake()
|
|
2180
2156
|
const parentFiberRefs = parentFiber.getFiberRefs()
|
|
2181
2157
|
const childFiberRefs = fiberRefs.forkAs(parentFiberRefs, childId)
|
|
2182
|
-
const childFiber = new FiberRuntime<
|
|
2158
|
+
const childFiber = new FiberRuntime<A, E>(childId, childFiberRefs, parentRuntimeFlags)
|
|
2183
2159
|
const childContext = fiberRefs.getOrDefault(
|
|
2184
2160
|
childFiberRefs,
|
|
2185
2161
|
core.currentContext as unknown as FiberRef.FiberRef<Context.Context<R>>
|
|
@@ -2206,11 +2182,11 @@ export const unsafeMakeChildFiber = <R, E, A, E2, B>(
|
|
|
2206
2182
|
}
|
|
2207
2183
|
|
|
2208
2184
|
/* @internal */
|
|
2209
|
-
const forkWithScopeOverride = <
|
|
2210
|
-
self: Effect.Effect<
|
|
2185
|
+
const forkWithScopeOverride = <A, E, R>(
|
|
2186
|
+
self: Effect.Effect<A, E, R>,
|
|
2211
2187
|
scopeOverride: fiberScope.FiberScope
|
|
2212
|
-
): Effect.Effect<
|
|
2213
|
-
core.withFiberRuntime
|
|
2188
|
+
): Effect.Effect<Fiber.RuntimeFiber<A, E>, never, R> =>
|
|
2189
|
+
core.withFiberRuntime((parentFiber, parentStatus) =>
|
|
2214
2190
|
core.succeed(unsafeFork(self, parentFiber, parentStatus.runtimeFlags, scopeOverride))
|
|
2215
2191
|
)
|
|
2216
2192
|
|
|
@@ -2219,14 +2195,14 @@ export const mergeAll = dual<
|
|
|
2219
2195
|
<Z, A>(zero: Z, f: (z: Z, a: A, i: number) => Z, options?: {
|
|
2220
2196
|
readonly concurrency?: Concurrency | undefined
|
|
2221
2197
|
readonly batching?: boolean | "inherit" | undefined
|
|
2222
|
-
}) => <
|
|
2223
|
-
<
|
|
2198
|
+
}) => <E, R>(elements: Iterable<Effect.Effect<A, E, R>>) => Effect.Effect<Z, E, R>,
|
|
2199
|
+
<A, E, R, Z>(elements: Iterable<Effect.Effect<A, E, R>>, zero: Z, f: (z: Z, a: A, i: number) => Z, options?: {
|
|
2224
2200
|
readonly concurrency?: Concurrency | undefined
|
|
2225
2201
|
readonly batching?: boolean | "inherit" | undefined
|
|
2226
|
-
}) => Effect.Effect<
|
|
2202
|
+
}) => Effect.Effect<Z, E, R>
|
|
2227
2203
|
>(
|
|
2228
2204
|
(args) => Predicate.isFunction(args[2]),
|
|
2229
|
-
<
|
|
2205
|
+
<A, E, R, Z>(elements: Iterable<Effect.Effect<A, E, R>>, zero: Z, f: (z: Z, a: A, i: number) => Z, options?: {
|
|
2230
2206
|
readonly concurrency?: Concurrency | undefined
|
|
2231
2207
|
readonly batching?: boolean | "inherit" | undefined
|
|
2232
2208
|
}) =>
|
|
@@ -2235,7 +2211,7 @@ export const mergeAll = dual<
|
|
|
2235
2211
|
() =>
|
|
2236
2212
|
RA.fromIterable(elements).reduce(
|
|
2237
2213
|
(acc, a, i) => core.zipWith(acc, a, (acc, a) => f(acc, a, i)),
|
|
2238
|
-
core.succeed(zero) as Effect.Effect<
|
|
2214
|
+
core.succeed(zero) as Effect.Effect<Z, E, R>
|
|
2239
2215
|
),
|
|
2240
2216
|
() =>
|
|
2241
2217
|
core.flatMap(Ref.make(zero), (acc) =>
|
|
@@ -2252,21 +2228,21 @@ export const mergeAll = dual<
|
|
|
2252
2228
|
|
|
2253
2229
|
/* @internal */
|
|
2254
2230
|
export const partition = dual<
|
|
2255
|
-
<
|
|
2256
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
2231
|
+
<A, B, E, R>(
|
|
2232
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
2257
2233
|
options?: {
|
|
2258
2234
|
readonly concurrency?: Concurrency | undefined
|
|
2259
2235
|
readonly batching?: boolean | "inherit" | undefined
|
|
2260
2236
|
}
|
|
2261
|
-
) => (elements: Iterable<A>) => Effect.Effect<
|
|
2262
|
-
<
|
|
2237
|
+
) => (elements: Iterable<A>) => Effect.Effect<[excluded: Array<E>, satisfying: Array<B>], never, R>,
|
|
2238
|
+
<A, B, E, R>(
|
|
2263
2239
|
elements: Iterable<A>,
|
|
2264
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
2240
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
2265
2241
|
options?: {
|
|
2266
2242
|
readonly concurrency?: Concurrency | undefined
|
|
2267
2243
|
readonly batching?: boolean | "inherit" | undefined
|
|
2268
2244
|
}
|
|
2269
|
-
) => Effect.Effect<
|
|
2245
|
+
) => Effect.Effect<[excluded: Array<E>, satisfying: Array<B>], never, R>
|
|
2270
2246
|
>((args) => Predicate.isIterable(args[0]), (elements, f, options) =>
|
|
2271
2247
|
pipe(
|
|
2272
2248
|
forEach(elements, (a, i) => core.either(f(a, i)), options),
|
|
@@ -2276,50 +2252,50 @@ export const partition = dual<
|
|
|
2276
2252
|
/* @internal */
|
|
2277
2253
|
export const validateAll = dual<
|
|
2278
2254
|
{
|
|
2279
|
-
<
|
|
2280
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
2255
|
+
<A, B, E, R>(
|
|
2256
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
2281
2257
|
options?: {
|
|
2282
2258
|
readonly concurrency?: Concurrency | undefined
|
|
2283
2259
|
readonly batching?: boolean | "inherit" | undefined
|
|
2284
2260
|
readonly discard?: false | undefined
|
|
2285
2261
|
}
|
|
2286
|
-
): (elements: Iterable<A>) => Effect.Effect<
|
|
2287
|
-
<
|
|
2288
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
2262
|
+
): (elements: Iterable<A>) => Effect.Effect<Array<B>, Array<E>, R>
|
|
2263
|
+
<A, B, E, R>(
|
|
2264
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
2289
2265
|
options: {
|
|
2290
2266
|
readonly concurrency?: Concurrency | undefined
|
|
2291
2267
|
readonly batching?: boolean | "inherit" | undefined
|
|
2292
2268
|
readonly discard: true
|
|
2293
2269
|
}
|
|
2294
|
-
): (elements: Iterable<A>) => Effect.Effect<
|
|
2270
|
+
): (elements: Iterable<A>) => Effect.Effect<void, Array<E>, R>
|
|
2295
2271
|
},
|
|
2296
2272
|
{
|
|
2297
|
-
<
|
|
2273
|
+
<A, B, E, R>(
|
|
2298
2274
|
elements: Iterable<A>,
|
|
2299
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
2275
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
2300
2276
|
options?: {
|
|
2301
2277
|
readonly concurrency?: Concurrency | undefined
|
|
2302
2278
|
readonly batching?: boolean | "inherit" | undefined
|
|
2303
2279
|
readonly discard?: false | undefined
|
|
2304
2280
|
}
|
|
2305
|
-
): Effect.Effect<
|
|
2306
|
-
<
|
|
2281
|
+
): Effect.Effect<Array<B>, Array<E>, R>
|
|
2282
|
+
<A, B, E, R>(
|
|
2307
2283
|
elements: Iterable<A>,
|
|
2308
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
2284
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
2309
2285
|
options: {
|
|
2310
2286
|
readonly concurrency?: Concurrency | undefined
|
|
2311
2287
|
readonly batching?: boolean | "inherit" | undefined
|
|
2312
2288
|
readonly discard: true
|
|
2313
2289
|
}
|
|
2314
|
-
): Effect.Effect<
|
|
2290
|
+
): Effect.Effect<void, Array<E>, R>
|
|
2315
2291
|
}
|
|
2316
2292
|
>(
|
|
2317
2293
|
(args) => Predicate.isIterable(args[0]),
|
|
2318
|
-
<
|
|
2294
|
+
<A, B, E, R>(elements: Iterable<A>, f: (a: A, i: number) => Effect.Effect<B, E, R>, options?: {
|
|
2319
2295
|
readonly concurrency?: Concurrency | undefined
|
|
2320
2296
|
readonly batching?: boolean | "inherit" | undefined
|
|
2321
2297
|
readonly discard?: boolean | undefined
|
|
2322
|
-
}): Effect.Effect<
|
|
2298
|
+
}): Effect.Effect<any, Array<E>, R> =>
|
|
2323
2299
|
core.flatMap(
|
|
2324
2300
|
partition(elements, f, {
|
|
2325
2301
|
concurrency: options?.concurrency,
|
|
@@ -2333,33 +2309,33 @@ export const validateAll = dual<
|
|
|
2333
2309
|
)
|
|
2334
2310
|
|
|
2335
2311
|
/* @internal */
|
|
2336
|
-
export const raceAll = <
|
|
2312
|
+
export const raceAll = <A, E, R>(all: Iterable<Effect.Effect<A, E, R>>): Effect.Effect<A, E, R> => {
|
|
2337
2313
|
const list = Chunk.fromIterable(all)
|
|
2338
2314
|
if (!Chunk.isNonEmpty(list)) {
|
|
2339
2315
|
return core.dieSync(() => new core.IllegalArgumentException(`Received an empty collection of effects`))
|
|
2340
2316
|
}
|
|
2341
2317
|
const self = Chunk.headNonEmpty(list)
|
|
2342
2318
|
const effects = Chunk.tailNonEmpty(list)
|
|
2343
|
-
const inheritAll = (res: readonly [A, Fiber.Fiber<
|
|
2319
|
+
const inheritAll = (res: readonly [A, Fiber.Fiber<A, E>]) =>
|
|
2344
2320
|
pipe(
|
|
2345
2321
|
internalFiber.inheritAll(res[1]),
|
|
2346
2322
|
core.as(res[0])
|
|
2347
2323
|
)
|
|
2348
2324
|
return pipe(
|
|
2349
|
-
core.deferredMake<
|
|
2325
|
+
core.deferredMake<readonly [A, Fiber.Fiber<A, E>], E>(),
|
|
2350
2326
|
core.flatMap((done) =>
|
|
2351
2327
|
pipe(
|
|
2352
2328
|
Ref.make(effects.length),
|
|
2353
2329
|
core.flatMap((fails) =>
|
|
2354
|
-
core.uninterruptibleMask<
|
|
2330
|
+
core.uninterruptibleMask<A, E, R>((restore) =>
|
|
2355
2331
|
pipe(
|
|
2356
2332
|
fork(core.interruptible(self)),
|
|
2357
2333
|
core.flatMap((head) =>
|
|
2358
2334
|
pipe(
|
|
2359
2335
|
effects,
|
|
2360
2336
|
core.forEachSequential((effect) => fork(core.interruptible(effect))),
|
|
2361
|
-
core.map(Chunk.unsafeFromArray),
|
|
2362
|
-
core.map((tail) => pipe(tail, Chunk.prepend(head)) as Chunk.Chunk<Fiber.RuntimeFiber<
|
|
2337
|
+
core.map((fibers) => Chunk.unsafeFromArray(fibers)),
|
|
2338
|
+
core.map((tail) => pipe(tail, Chunk.prepend(head)) as Chunk.Chunk<Fiber.RuntimeFiber<A, E>>),
|
|
2363
2339
|
core.tap((fibers) =>
|
|
2364
2340
|
pipe(
|
|
2365
2341
|
fibers,
|
|
@@ -2401,14 +2377,13 @@ export const raceAll = <R, E, A>(all: Iterable<Effect.Effect<R, E, A>>) => {
|
|
|
2401
2377
|
)
|
|
2402
2378
|
}
|
|
2403
2379
|
|
|
2404
|
-
/* @internal */
|
|
2405
2380
|
const raceAllArbiter = <E, E1, A, A1>(
|
|
2406
|
-
fibers: Iterable<Fiber.Fiber<
|
|
2407
|
-
winner: Fiber.Fiber<
|
|
2408
|
-
deferred: Deferred.Deferred<
|
|
2381
|
+
fibers: Iterable<Fiber.Fiber<A | A1, E | E1>>,
|
|
2382
|
+
winner: Fiber.Fiber<A | A1, E | E1>,
|
|
2383
|
+
deferred: Deferred.Deferred<readonly [A | A1, Fiber.Fiber<A | A1, E | E1>], E | E1>,
|
|
2409
2384
|
fails: Ref.Ref<number>
|
|
2410
2385
|
) =>
|
|
2411
|
-
(exit: Exit.Exit<
|
|
2386
|
+
(exit: Exit.Exit<A | A1, E | E1>): Effect.Effect<void> =>
|
|
2412
2387
|
core.exitMatchEffect(exit, {
|
|
2413
2388
|
onFailure: (cause) =>
|
|
2414
2389
|
pipe(
|
|
@@ -2421,7 +2396,7 @@ const raceAllArbiter = <E, E1, A, A1>(
|
|
|
2421
2396
|
] as const),
|
|
2422
2397
|
core.flatten
|
|
2423
2398
|
),
|
|
2424
|
-
onSuccess: (value): Effect.Effect<
|
|
2399
|
+
onSuccess: (value): Effect.Effect<void> =>
|
|
2425
2400
|
pipe(
|
|
2426
2401
|
core.deferredSucceed(deferred, [value, winner] as const),
|
|
2427
2402
|
core.flatMap((set) =>
|
|
@@ -2443,27 +2418,27 @@ const raceAllArbiter = <E, E1, A, A1>(
|
|
|
2443
2418
|
|
|
2444
2419
|
/* @internal */
|
|
2445
2420
|
export const reduceEffect = dual<
|
|
2446
|
-
<
|
|
2447
|
-
zero: Effect.Effect<
|
|
2448
|
-
f: (acc: A
|
|
2421
|
+
<A, E, R>(
|
|
2422
|
+
zero: Effect.Effect<A, E, R>,
|
|
2423
|
+
f: (acc: NoInfer<A>, a: NoInfer<A>, i: number) => A,
|
|
2449
2424
|
options?: {
|
|
2450
2425
|
readonly concurrency?: Concurrency | undefined
|
|
2451
2426
|
readonly batching?: boolean | "inherit" | undefined
|
|
2452
2427
|
}
|
|
2453
|
-
) => (elements: Iterable<Effect.Effect<
|
|
2454
|
-
<
|
|
2455
|
-
elements: Iterable<Effect.Effect<
|
|
2456
|
-
zero: Effect.Effect<
|
|
2457
|
-
f: (acc: A
|
|
2428
|
+
) => (elements: Iterable<Effect.Effect<A, E, R>>) => Effect.Effect<A, E, R>,
|
|
2429
|
+
<A, E, R>(
|
|
2430
|
+
elements: Iterable<Effect.Effect<A, E, R>>,
|
|
2431
|
+
zero: Effect.Effect<A, E, R>,
|
|
2432
|
+
f: (acc: NoInfer<A>, a: NoInfer<A>, i: number) => A,
|
|
2458
2433
|
options?: {
|
|
2459
2434
|
readonly concurrency?: Concurrency | undefined
|
|
2460
2435
|
readonly batching?: boolean | "inherit" | undefined
|
|
2461
2436
|
}
|
|
2462
|
-
) => Effect.Effect<
|
|
2463
|
-
>((args) => Predicate.isIterable(args[0]), <
|
|
2464
|
-
elements: Iterable<Effect.Effect<
|
|
2465
|
-
zero: Effect.Effect<
|
|
2466
|
-
f: (acc: A
|
|
2437
|
+
) => Effect.Effect<A, E, R>
|
|
2438
|
+
>((args) => Predicate.isIterable(args[0]), <A, E, R>(
|
|
2439
|
+
elements: Iterable<Effect.Effect<A, E, R>>,
|
|
2440
|
+
zero: Effect.Effect<A, E, R>,
|
|
2441
|
+
f: (acc: NoInfer<A>, a: NoInfer<A>, i: number) => A,
|
|
2467
2442
|
options?: {
|
|
2468
2443
|
readonly concurrency?: Concurrency | undefined
|
|
2469
2444
|
readonly batching?: boolean | "inherit" | undefined
|
|
@@ -2507,7 +2482,7 @@ export const reduceEffect = dual<
|
|
|
2507
2482
|
))
|
|
2508
2483
|
|
|
2509
2484
|
/* @internal */
|
|
2510
|
-
export const parallelFinalizers = <
|
|
2485
|
+
export const parallelFinalizers = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
2511
2486
|
core.contextWithEffect((context) =>
|
|
2512
2487
|
Option.match(Context.getOption(context, scopeTag), {
|
|
2513
2488
|
onNone: () => self,
|
|
@@ -2528,7 +2503,7 @@ export const parallelFinalizers = <R, E, A>(self: Effect.Effect<R, E, A>): Effec
|
|
|
2528
2503
|
|
|
2529
2504
|
/* @internal */
|
|
2530
2505
|
export const parallelNFinalizers =
|
|
2531
|
-
(parallelism: number) => <
|
|
2506
|
+
(parallelism: number) => <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
2532
2507
|
core.contextWithEffect((context) =>
|
|
2533
2508
|
Option.match(Context.getOption(context, scopeTag), {
|
|
2534
2509
|
onNone: () => self,
|
|
@@ -2546,9 +2521,9 @@ export const parallelNFinalizers =
|
|
|
2546
2521
|
|
|
2547
2522
|
/* @internal */
|
|
2548
2523
|
export const finalizersMask = (strategy: ExecutionStrategy.ExecutionStrategy) =>
|
|
2549
|
-
<
|
|
2550
|
-
self: (restore: <
|
|
2551
|
-
): Effect.Effect<
|
|
2524
|
+
<A, E, R>(
|
|
2525
|
+
self: (restore: <A1, E1, R1>(self: Effect.Effect<A1, E1, R1>) => Effect.Effect<A1, E1, R1>) => Effect.Effect<A, E, R>
|
|
2526
|
+
): Effect.Effect<A, E, R> =>
|
|
2552
2527
|
core.contextWithEffect((context) =>
|
|
2553
2528
|
Option.match(Context.getOption(context, scopeTag), {
|
|
2554
2529
|
onNone: () => self(identity),
|
|
@@ -2571,16 +2546,16 @@ export const finalizersMask = (strategy: ExecutionStrategy.ExecutionStrategy) =>
|
|
|
2571
2546
|
)
|
|
2572
2547
|
|
|
2573
2548
|
/* @internal */
|
|
2574
|
-
export const scopeWith = <
|
|
2575
|
-
f: (scope: Scope.Scope) => Effect.Effect<
|
|
2576
|
-
): Effect.Effect<R | Scope.Scope
|
|
2549
|
+
export const scopeWith = <A, E, R>(
|
|
2550
|
+
f: (scope: Scope.Scope) => Effect.Effect<A, E, R>
|
|
2551
|
+
): Effect.Effect<A, E, R | Scope.Scope> => core.flatMap(scopeTag, f)
|
|
2577
2552
|
|
|
2578
2553
|
/* @internal */
|
|
2579
|
-
export const scopedEffect = <
|
|
2554
|
+
export const scopedEffect = <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, Exclude<R, Scope.Scope>> =>
|
|
2580
2555
|
core.flatMap(scopeMake(), (scope) => scopeUse(scope)(effect))
|
|
2581
2556
|
|
|
2582
2557
|
/* @internal */
|
|
2583
|
-
export const sequentialFinalizers = <
|
|
2558
|
+
export const sequentialFinalizers = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
2584
2559
|
core.contextWithEffect((context) =>
|
|
2585
2560
|
Option.match(Context.getOption(context, scopeTag), {
|
|
2586
2561
|
onNone: () => self,
|
|
@@ -2600,24 +2575,24 @@ export const sequentialFinalizers = <R, E, A>(self: Effect.Effect<R, E, A>): Eff
|
|
|
2600
2575
|
)
|
|
2601
2576
|
|
|
2602
2577
|
/* @internal */
|
|
2603
|
-
export const tagMetricsScoped = (key: string, value: string): Effect.Effect<
|
|
2578
|
+
export const tagMetricsScoped = (key: string, value: string): Effect.Effect<void, never, Scope.Scope> =>
|
|
2604
2579
|
labelMetricsScoped([metricLabel.make(key, value)])
|
|
2605
2580
|
|
|
2606
2581
|
/* @internal */
|
|
2607
2582
|
export const labelMetricsScoped = (
|
|
2608
2583
|
labels: Iterable<MetricLabel.MetricLabel>
|
|
2609
|
-
): Effect.Effect<
|
|
2584
|
+
): Effect.Effect<void, never, Scope.Scope> =>
|
|
2610
2585
|
fiberRefLocallyScopedWith(core.currentMetricLabels, (old) => RA.union(old, labels))
|
|
2611
2586
|
|
|
2612
2587
|
/* @internal */
|
|
2613
2588
|
export const using = dual<
|
|
2614
|
-
<A,
|
|
2615
|
-
use: (a: A) => Effect.Effect<
|
|
2616
|
-
) => <
|
|
2617
|
-
<
|
|
2618
|
-
self: Effect.Effect<
|
|
2619
|
-
use: (a: A) => Effect.Effect<
|
|
2620
|
-
) => Effect.Effect<Exclude<R, Scope.Scope> | R2
|
|
2589
|
+
<A, A2, E2, R2>(
|
|
2590
|
+
use: (a: A) => Effect.Effect<A2, E2, R2>
|
|
2591
|
+
) => <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2, E | E2, Exclude<R, Scope.Scope> | R2>,
|
|
2592
|
+
<A, E, R, A2, E2, R2>(
|
|
2593
|
+
self: Effect.Effect<A, E, R>,
|
|
2594
|
+
use: (a: A) => Effect.Effect<A2, E2, R2>
|
|
2595
|
+
) => Effect.Effect<A2, E | E2, Exclude<R, Scope.Scope> | R2>
|
|
2621
2596
|
>(2, (self, use) =>
|
|
2622
2597
|
core.acquireUseRelease(
|
|
2623
2598
|
scopeMake(),
|
|
@@ -2627,21 +2602,21 @@ export const using = dual<
|
|
|
2627
2602
|
|
|
2628
2603
|
/** @internal */
|
|
2629
2604
|
export const validate = dual<
|
|
2630
|
-
<
|
|
2631
|
-
that: Effect.Effect<
|
|
2605
|
+
<B, E1, R1>(
|
|
2606
|
+
that: Effect.Effect<B, E1, R1>,
|
|
2632
2607
|
options?: {
|
|
2633
2608
|
readonly concurrent?: boolean | undefined
|
|
2634
2609
|
readonly batching?: boolean | "inherit" | undefined
|
|
2635
2610
|
}
|
|
2636
|
-
) => <
|
|
2637
|
-
<
|
|
2638
|
-
self: Effect.Effect<
|
|
2639
|
-
that: Effect.Effect<
|
|
2611
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<[A, B], E | E1, R | R1>,
|
|
2612
|
+
<A, E, R, B, E1, R1>(
|
|
2613
|
+
self: Effect.Effect<A, E, R>,
|
|
2614
|
+
that: Effect.Effect<B, E1, R1>,
|
|
2640
2615
|
options?: {
|
|
2641
2616
|
readonly concurrent?: boolean | undefined
|
|
2642
2617
|
readonly batching?: boolean | "inherit" | undefined
|
|
2643
2618
|
}
|
|
2644
|
-
) => Effect.Effect<
|
|
2619
|
+
) => Effect.Effect<[A, B], E | E1, R | R1>
|
|
2645
2620
|
>(
|
|
2646
2621
|
(args) => core.isEffect(args[1]),
|
|
2647
2622
|
(self, that, options) => validateWith(self, that, (a, b) => [a, b], options)
|
|
@@ -2649,23 +2624,23 @@ export const validate = dual<
|
|
|
2649
2624
|
|
|
2650
2625
|
/** @internal */
|
|
2651
2626
|
export const validateWith = dual<
|
|
2652
|
-
<
|
|
2653
|
-
that: Effect.Effect<
|
|
2627
|
+
<B, E1, R1, A, C>(
|
|
2628
|
+
that: Effect.Effect<B, E1, R1>,
|
|
2654
2629
|
f: (a: A, b: B) => C,
|
|
2655
2630
|
options?: {
|
|
2656
2631
|
readonly concurrent?: boolean | undefined
|
|
2657
2632
|
readonly batching?: boolean | "inherit" | undefined
|
|
2658
2633
|
}
|
|
2659
|
-
) => <
|
|
2660
|
-
<
|
|
2661
|
-
self: Effect.Effect<
|
|
2662
|
-
that: Effect.Effect<
|
|
2634
|
+
) => <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<C, E | E1, R | R1>,
|
|
2635
|
+
<A, E, R, B, E1, R1, C>(
|
|
2636
|
+
self: Effect.Effect<A, E, R>,
|
|
2637
|
+
that: Effect.Effect<B, E1, R1>,
|
|
2663
2638
|
f: (a: A, b: B) => C,
|
|
2664
2639
|
options?: {
|
|
2665
2640
|
readonly concurrent?: boolean | undefined
|
|
2666
2641
|
readonly batching?: boolean | "inherit" | undefined
|
|
2667
2642
|
}
|
|
2668
|
-
) => Effect.Effect<
|
|
2643
|
+
) => Effect.Effect<C, E | E1, R | R1>
|
|
2669
2644
|
>((args) => core.isEffect(args[1]), (self, that, f, options) =>
|
|
2670
2645
|
core.flatten(zipWithOptions(
|
|
2671
2646
|
core.exit(self),
|
|
@@ -2680,13 +2655,13 @@ export const validateWith = dual<
|
|
|
2680
2655
|
|
|
2681
2656
|
/* @internal */
|
|
2682
2657
|
export const validateAllPar = dual<
|
|
2683
|
-
<
|
|
2684
|
-
f: (a: A) => Effect.Effect<
|
|
2685
|
-
) => (elements: Iterable<A>) => Effect.Effect<
|
|
2686
|
-
<
|
|
2658
|
+
<A, B, E, R>(
|
|
2659
|
+
f: (a: A) => Effect.Effect<B, E, R>
|
|
2660
|
+
) => (elements: Iterable<A>) => Effect.Effect<Array<B>, Array<E>, R>,
|
|
2661
|
+
<A, B, E, R>(
|
|
2687
2662
|
elements: Iterable<A>,
|
|
2688
|
-
f: (a: A) => Effect.Effect<
|
|
2689
|
-
) => Effect.Effect<
|
|
2663
|
+
f: (a: A) => Effect.Effect<B, E, R>
|
|
2664
|
+
) => Effect.Effect<Array<B>, Array<E>, R>
|
|
2690
2665
|
>(2, (elements, f) =>
|
|
2691
2666
|
core.flatMap(
|
|
2692
2667
|
partition(elements, f),
|
|
@@ -2698,10 +2673,10 @@ export const validateAllPar = dual<
|
|
|
2698
2673
|
|
|
2699
2674
|
/* @internal */
|
|
2700
2675
|
export const validateAllParDiscard = dual<
|
|
2701
|
-
<
|
|
2702
|
-
f: (a: A) => Effect.Effect<
|
|
2703
|
-
) => (elements: Iterable<A>) => Effect.Effect<
|
|
2704
|
-
<
|
|
2676
|
+
<A, B, E, R>(
|
|
2677
|
+
f: (a: A) => Effect.Effect<B, E, R>
|
|
2678
|
+
) => (elements: Iterable<A>) => Effect.Effect<void, Array<E>, R>,
|
|
2679
|
+
<A, B, E, R>(elements: Iterable<A>, f: (a: A) => Effect.Effect<B, E, R>) => Effect.Effect<void, Array<E>, R>
|
|
2705
2680
|
>(2, (elements, f) =>
|
|
2706
2681
|
core.flatMap(
|
|
2707
2682
|
partition(elements, f),
|
|
@@ -2713,14 +2688,14 @@ export const validateAllParDiscard = dual<
|
|
|
2713
2688
|
|
|
2714
2689
|
/* @internal */
|
|
2715
2690
|
export const validateFirst = dual<
|
|
2716
|
-
<
|
|
2691
|
+
<A, B, E, R>(f: (a: A, i: number) => Effect.Effect<B, E, R>, options?: {
|
|
2717
2692
|
readonly concurrency?: Concurrency | undefined
|
|
2718
2693
|
readonly batching?: boolean | "inherit" | undefined
|
|
2719
|
-
}) => (elements: Iterable<A>) => Effect.Effect<
|
|
2720
|
-
<
|
|
2694
|
+
}) => (elements: Iterable<A>) => Effect.Effect<B, Array<E>, R>,
|
|
2695
|
+
<A, B, E, R>(elements: Iterable<A>, f: (a: A, i: number) => Effect.Effect<B, E, R>, options?: {
|
|
2721
2696
|
readonly concurrency?: Concurrency | undefined
|
|
2722
2697
|
readonly batching?: boolean | "inherit" | undefined
|
|
2723
|
-
}) => Effect.Effect<
|
|
2698
|
+
}) => Effect.Effect<B, Array<E>, R>
|
|
2724
2699
|
>(
|
|
2725
2700
|
(args) => Predicate.isIterable(args[0]),
|
|
2726
2701
|
(elements, f, options) => core.flip(forEach(elements, (a, i) => core.flip(f(a, i)), options))
|
|
@@ -2735,9 +2710,9 @@ export const withConfigProviderScoped = (value: ConfigProvider) =>
|
|
|
2735
2710
|
fiberRefLocallyScopedWith(defaultServices.currentServices, Context.add(configProviderTag, value))
|
|
2736
2711
|
|
|
2737
2712
|
/* @internal */
|
|
2738
|
-
export const withEarlyRelease = <
|
|
2739
|
-
self: Effect.Effect<
|
|
2740
|
-
): Effect.Effect<
|
|
2713
|
+
export const withEarlyRelease = <A, E, R>(
|
|
2714
|
+
self: Effect.Effect<A, E, R>
|
|
2715
|
+
): Effect.Effect<[Effect.Effect<void>, A], E, R | Scope.Scope> =>
|
|
2741
2716
|
scopeWith((parent) =>
|
|
2742
2717
|
core.flatMap(core.scopeFork(parent, executionStrategy.sequential), (child) =>
|
|
2743
2718
|
pipe(
|
|
@@ -2752,23 +2727,23 @@ export const withEarlyRelease = <R, E, A>(
|
|
|
2752
2727
|
|
|
2753
2728
|
/** @internal */
|
|
2754
2729
|
export const zipOptions = dual<
|
|
2755
|
-
<
|
|
2756
|
-
that: Effect.Effect<
|
|
2730
|
+
<A2, E2, R2>(
|
|
2731
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
2757
2732
|
options?: {
|
|
2758
2733
|
readonly concurrent?: boolean | undefined
|
|
2759
2734
|
readonly batching?: boolean | "inherit" | undefined
|
|
2760
2735
|
}
|
|
2761
|
-
) => <
|
|
2762
|
-
self: Effect.Effect<
|
|
2763
|
-
) => Effect.Effect<
|
|
2764
|
-
<
|
|
2765
|
-
self: Effect.Effect<
|
|
2766
|
-
that: Effect.Effect<
|
|
2736
|
+
) => <A, E, R>(
|
|
2737
|
+
self: Effect.Effect<A, E, R>
|
|
2738
|
+
) => Effect.Effect<[A, A2], E | E2, R | R2>,
|
|
2739
|
+
<A, E, R, A2, E2, R2>(
|
|
2740
|
+
self: Effect.Effect<A, E, R>,
|
|
2741
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
2767
2742
|
options?: {
|
|
2768
2743
|
readonly concurrent?: boolean | undefined
|
|
2769
2744
|
readonly batching?: boolean | "inherit" | undefined
|
|
2770
2745
|
}
|
|
2771
|
-
) => Effect.Effect<
|
|
2746
|
+
) => Effect.Effect<[A, A2], E | E2, R | R2>
|
|
2772
2747
|
>((args) => core.isEffect(args[1]), (
|
|
2773
2748
|
self,
|
|
2774
2749
|
that,
|
|
@@ -2777,77 +2752,82 @@ export const zipOptions = dual<
|
|
|
2777
2752
|
|
|
2778
2753
|
/** @internal */
|
|
2779
2754
|
export const zipLeftOptions = dual<
|
|
2780
|
-
<
|
|
2781
|
-
that: Effect.Effect<
|
|
2755
|
+
<A2, E2, R2>(
|
|
2756
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
2782
2757
|
options?: {
|
|
2783
2758
|
readonly concurrent?: boolean | undefined
|
|
2784
2759
|
readonly batching?: boolean | "inherit" | undefined
|
|
2785
2760
|
}
|
|
2786
|
-
) => <
|
|
2787
|
-
self: Effect.Effect<
|
|
2788
|
-
) => Effect.Effect<
|
|
2789
|
-
<
|
|
2790
|
-
self: Effect.Effect<
|
|
2791
|
-
that: Effect.Effect<
|
|
2761
|
+
) => <A, E, R>(
|
|
2762
|
+
self: Effect.Effect<A, E, R>
|
|
2763
|
+
) => Effect.Effect<A, E | E2, R | R2>,
|
|
2764
|
+
<A, E, R, A2, E2, R2>(
|
|
2765
|
+
self: Effect.Effect<A, E, R>,
|
|
2766
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
2792
2767
|
options?: {
|
|
2793
2768
|
readonly concurrent?: boolean | undefined
|
|
2794
2769
|
readonly batching?: boolean | "inherit" | undefined
|
|
2795
2770
|
}
|
|
2796
|
-
) => Effect.Effect<
|
|
2771
|
+
) => Effect.Effect<A, E | E2, R | R2>
|
|
2797
2772
|
>(
|
|
2798
2773
|
(args) => core.isEffect(args[1]),
|
|
2799
2774
|
(self, that, options) => zipWithOptions(self, that, (a, _) => a, options)
|
|
2800
2775
|
)
|
|
2801
2776
|
|
|
2802
2777
|
/** @internal */
|
|
2803
|
-
export const zipRightOptions
|
|
2804
|
-
<
|
|
2805
|
-
that: Effect.Effect<
|
|
2778
|
+
export const zipRightOptions: {
|
|
2779
|
+
<A2, E2, R2>(
|
|
2780
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
2806
2781
|
options?: {
|
|
2807
2782
|
readonly concurrent?: boolean | undefined
|
|
2808
2783
|
readonly batching?: boolean | "inherit" | undefined
|
|
2809
2784
|
}
|
|
2810
|
-
)
|
|
2811
|
-
<
|
|
2812
|
-
self: Effect.Effect<
|
|
2813
|
-
that: Effect.Effect<
|
|
2785
|
+
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2, E2 | E, R2 | R>
|
|
2786
|
+
<A, E, R, A2, E2, R2>(
|
|
2787
|
+
self: Effect.Effect<A, E, R>,
|
|
2788
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
2814
2789
|
options?: {
|
|
2815
2790
|
readonly concurrent?: boolean | undefined
|
|
2816
2791
|
readonly batching?: boolean | "inherit" | undefined
|
|
2817
2792
|
}
|
|
2818
|
-
)
|
|
2819
|
-
|
|
2793
|
+
): Effect.Effect<A2, E2 | E, R2 | R>
|
|
2794
|
+
} = dual((args) => core.isEffect(args[1]), <A, E, R, A2, E2, R2>(
|
|
2795
|
+
self: Effect.Effect<A, E, R>,
|
|
2796
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
2797
|
+
options: {
|
|
2798
|
+
readonly concurrent?: boolean | undefined
|
|
2799
|
+
readonly batching?: boolean | "inherit" | undefined
|
|
2800
|
+
}
|
|
2801
|
+
): Effect.Effect<A2, E2 | E, R2 | R> => zipWithOptions(self, that, (_, b) => b, options))
|
|
2820
2802
|
|
|
2821
2803
|
/** @internal */
|
|
2822
|
-
export const zipWithOptions
|
|
2823
|
-
<
|
|
2824
|
-
that: Effect.Effect<
|
|
2804
|
+
export const zipWithOptions: {
|
|
2805
|
+
<A2, E2, R2, A, B>(
|
|
2806
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
2825
2807
|
f: (a: A, b: A2) => B,
|
|
2826
2808
|
options?: {
|
|
2827
2809
|
readonly concurrent?: boolean | undefined
|
|
2828
2810
|
readonly batching?: boolean | "inherit" | undefined
|
|
2829
2811
|
}
|
|
2830
|
-
) => <
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
self: Effect.Effect<R, E, A>,
|
|
2835
|
-
that: Effect.Effect<R2, E2, A2>,
|
|
2812
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E2 | E, R2 | R>
|
|
2813
|
+
<A, E, R, A2, E2, R2, B>(
|
|
2814
|
+
self: Effect.Effect<A, E, R>,
|
|
2815
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
2836
2816
|
f: (a: A, b: A2) => B,
|
|
2837
2817
|
options?: {
|
|
2838
2818
|
readonly concurrent?: boolean | undefined
|
|
2839
2819
|
readonly batching?: boolean | "inherit" | undefined
|
|
2840
2820
|
}
|
|
2841
|
-
)
|
|
2842
|
-
|
|
2843
|
-
self: Effect.Effect<
|
|
2844
|
-
that: Effect.Effect<
|
|
2821
|
+
): Effect.Effect<B, E2 | E, R2 | R>
|
|
2822
|
+
} = dual((args) => core.isEffect(args[1]), <A, E, R, A2, E2, R2, B>(
|
|
2823
|
+
self: Effect.Effect<A, E, R>,
|
|
2824
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
2845
2825
|
f: (a: A, b: A2) => B,
|
|
2846
2826
|
options?: {
|
|
2847
2827
|
readonly concurrent?: boolean | undefined
|
|
2848
2828
|
readonly batching?: boolean | "inherit" | undefined
|
|
2849
2829
|
}
|
|
2850
|
-
): Effect.Effect<
|
|
2830
|
+
): Effect.Effect<B, E2 | E, R2 | R> =>
|
|
2851
2831
|
core.map(
|
|
2852
2832
|
all([self, that], {
|
|
2853
2833
|
concurrency: options?.concurrent ? 2 : 1,
|
|
@@ -2859,7 +2839,7 @@ export const zipWithOptions = dual<
|
|
|
2859
2839
|
/* @internal */
|
|
2860
2840
|
export const withRuntimeFlagsScoped = (
|
|
2861
2841
|
update: RuntimeFlagsPatch.RuntimeFlagsPatch
|
|
2862
|
-
): Effect.Effect<
|
|
2842
|
+
): Effect.Effect<void, never, Scope.Scope> => {
|
|
2863
2843
|
if (update === RuntimeFlagsPatch.empty) {
|
|
2864
2844
|
return core.unit
|
|
2865
2845
|
}
|
|
@@ -2885,7 +2865,7 @@ export const releaseMapReleaseAll = (
|
|
|
2885
2865
|
strategy: ExecutionStrategy.ExecutionStrategy,
|
|
2886
2866
|
exit: Exit.Exit<unknown, unknown>
|
|
2887
2867
|
) =>
|
|
2888
|
-
(self: core.ReleaseMap): Effect.Effect<
|
|
2868
|
+
(self: core.ReleaseMap): Effect.Effect<void> =>
|
|
2889
2869
|
core.suspend(() => {
|
|
2890
2870
|
switch (self.state._tag) {
|
|
2891
2871
|
case "Exited": {
|
|
@@ -2936,7 +2916,7 @@ export const releaseMapReleaseAll = (
|
|
|
2936
2916
|
// circular with Scope
|
|
2937
2917
|
|
|
2938
2918
|
/** @internal */
|
|
2939
|
-
export const scopeTag = Context.
|
|
2919
|
+
export const scopeTag = Context.GenericTag<Scope.Scope>("effect/Scope")
|
|
2940
2920
|
|
|
2941
2921
|
/* @internal */
|
|
2942
2922
|
export const scope: Effect.Effect<Scope.Scope, never, Scope.Scope> = scopeTag
|
|
@@ -2944,7 +2924,7 @@ export const scope: Effect.Effect<Scope.Scope, never, Scope.Scope> = scopeTag
|
|
|
2944
2924
|
/* @internal */
|
|
2945
2925
|
export const scopeMake = (
|
|
2946
2926
|
strategy: ExecutionStrategy.ExecutionStrategy = executionStrategy.sequential
|
|
2947
|
-
): Effect.Effect<
|
|
2927
|
+
): Effect.Effect<Scope.Scope.Closeable> =>
|
|
2948
2928
|
core.map(core.releaseMapMake, (rm): Scope.Scope.Closeable => ({
|
|
2949
2929
|
[core.ScopeTypeId]: core.ScopeTypeId,
|
|
2950
2930
|
[core.CloseableScopeTypeId]: core.CloseableScopeTypeId,
|
|
@@ -2971,12 +2951,12 @@ export const scopeMake = (
|
|
|
2971
2951
|
|
|
2972
2952
|
/* @internal */
|
|
2973
2953
|
export const scopeExtend = dual<
|
|
2974
|
-
(scope: Scope.Scope) => <
|
|
2975
|
-
<
|
|
2954
|
+
(scope: Scope.Scope) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Scope.Scope>>,
|
|
2955
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, scope: Scope.Scope) => Effect.Effect<A, E, Exclude<R, Scope.Scope>>
|
|
2976
2956
|
>(
|
|
2977
2957
|
2,
|
|
2978
|
-
<
|
|
2979
|
-
core.mapInputContext<Exclude<R, Scope.Scope
|
|
2958
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, scope: Scope.Scope) =>
|
|
2959
|
+
core.mapInputContext<A, E, R, Exclude<R, Scope.Scope>>(
|
|
2980
2960
|
effect,
|
|
2981
2961
|
// @ts-expect-error
|
|
2982
2962
|
Context.merge(Context.make(scopeTag, scope))
|
|
@@ -2987,11 +2967,11 @@ export const scopeExtend = dual<
|
|
|
2987
2967
|
export const scopeUse = dual<
|
|
2988
2968
|
(
|
|
2989
2969
|
scope: Scope.Scope.Closeable
|
|
2990
|
-
) => <
|
|
2991
|
-
<
|
|
2992
|
-
effect: Effect.Effect<
|
|
2970
|
+
) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Scope.Scope>>,
|
|
2971
|
+
<A, E, R>(
|
|
2972
|
+
effect: Effect.Effect<A, E, R>,
|
|
2993
2973
|
scope: Scope.Scope.Closeable
|
|
2994
|
-
) => Effect.Effect<Exclude<R, Scope.Scope
|
|
2974
|
+
) => Effect.Effect<A, E, Exclude<R, Scope.Scope>>
|
|
2995
2975
|
>(2, (effect, scope) =>
|
|
2996
2976
|
pipe(
|
|
2997
2977
|
effect,
|
|
@@ -3014,8 +2994,8 @@ export const fiberRefUnsafeMakeSupervisor = (
|
|
|
3014
2994
|
|
|
3015
2995
|
/* @internal */
|
|
3016
2996
|
export const fiberRefLocallyScoped = dual<
|
|
3017
|
-
<A>(value: A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<
|
|
3018
|
-
<A>(self: FiberRef.FiberRef<A>, value: A) => Effect.Effect<
|
|
2997
|
+
<A>(value: A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<void, never, Scope.Scope>,
|
|
2998
|
+
<A>(self: FiberRef.FiberRef<A>, value: A) => Effect.Effect<void, never, Scope.Scope>
|
|
3019
2999
|
>(2, (self, value) =>
|
|
3020
3000
|
core.asUnit(
|
|
3021
3001
|
acquireRelease(
|
|
@@ -3029,8 +3009,8 @@ export const fiberRefLocallyScoped = dual<
|
|
|
3029
3009
|
|
|
3030
3010
|
/* @internal */
|
|
3031
3011
|
export const fiberRefLocallyScopedWith = dual<
|
|
3032
|
-
<A>(f: (a: A) => A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<
|
|
3033
|
-
<A>(self: FiberRef.FiberRef<A>, f: (a: A) => A) => Effect.Effect<
|
|
3012
|
+
<A>(f: (a: A) => A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<void, never, Scope.Scope>,
|
|
3013
|
+
<A>(self: FiberRef.FiberRef<A>, f: (a: A) => A) => Effect.Effect<void, never, Scope.Scope>
|
|
3034
3014
|
>(2, (self, f) => core.fiberRefGetWith(self, (a) => fiberRefLocallyScoped(self, f(a))))
|
|
3035
3015
|
|
|
3036
3016
|
/* @internal */
|
|
@@ -3040,13 +3020,13 @@ export const fiberRefMake = <A>(
|
|
|
3040
3020
|
readonly fork?: ((a: A) => A) | undefined
|
|
3041
3021
|
readonly join?: ((left: A, right: A) => A) | undefined
|
|
3042
3022
|
}
|
|
3043
|
-
): Effect.Effect<
|
|
3023
|
+
): Effect.Effect<FiberRef.FiberRef<A>, never, Scope.Scope> =>
|
|
3044
3024
|
fiberRefMakeWith(() => core.fiberRefUnsafeMake(initial, options))
|
|
3045
3025
|
|
|
3046
3026
|
/* @internal */
|
|
3047
3027
|
export const fiberRefMakeWith = <Value>(
|
|
3048
3028
|
ref: LazyArg<FiberRef.FiberRef<Value>>
|
|
3049
|
-
): Effect.Effect<
|
|
3029
|
+
): Effect.Effect<FiberRef.FiberRef<Value>, never, Scope.Scope> =>
|
|
3050
3030
|
acquireRelease(
|
|
3051
3031
|
core.tap(core.sync(ref), (ref) => core.fiberRefUpdate(ref, identity)),
|
|
3052
3032
|
(fiberRef) => core.fiberRefDelete(fiberRef)
|
|
@@ -3055,13 +3035,13 @@ export const fiberRefMakeWith = <Value>(
|
|
|
3055
3035
|
/* @internal */
|
|
3056
3036
|
export const fiberRefMakeContext = <A>(
|
|
3057
3037
|
initial: Context.Context<A>
|
|
3058
|
-
): Effect.Effect<
|
|
3038
|
+
): Effect.Effect<FiberRef.FiberRef<Context.Context<A>>, never, Scope.Scope> =>
|
|
3059
3039
|
fiberRefMakeWith(() => core.fiberRefUnsafeMakeContext(initial))
|
|
3060
3040
|
|
|
3061
3041
|
/* @internal */
|
|
3062
3042
|
export const fiberRefMakeRuntimeFlags = (
|
|
3063
3043
|
initial: RuntimeFlags.RuntimeFlags
|
|
3064
|
-
): Effect.Effect<
|
|
3044
|
+
): Effect.Effect<FiberRef.FiberRef<RuntimeFlags.RuntimeFlags>, never, Scope.Scope> =>
|
|
3065
3045
|
fiberRefMakeWith(() => core.fiberRefUnsafeMakeRuntimeFlags(initial))
|
|
3066
3046
|
|
|
3067
3047
|
/** @internal */
|
|
@@ -3077,11 +3057,11 @@ export const currentSupervisor: FiberRef.FiberRef<Supervisor.Supervisor<any>> =
|
|
|
3077
3057
|
// circular with Fiber
|
|
3078
3058
|
|
|
3079
3059
|
/* @internal */
|
|
3080
|
-
export const fiberAwaitAll = (fibers: Iterable<Fiber.Fiber<any, any>>): Effect.Effect<
|
|
3060
|
+
export const fiberAwaitAll = (fibers: Iterable<Fiber.Fiber<any, any>>): Effect.Effect<void> =>
|
|
3081
3061
|
core.asUnit(internalFiber._await(fiberAll(fibers)))
|
|
3082
3062
|
|
|
3083
3063
|
/** @internal */
|
|
3084
|
-
export const fiberAll = <
|
|
3064
|
+
export const fiberAll = <A, E>(fibers: Iterable<Fiber.Fiber<A, E>>): Fiber.Fiber<Array<A>, E> => ({
|
|
3085
3065
|
[internalFiber.FiberTypeId]: internalFiber.fiberVariance,
|
|
3086
3066
|
id: () => RA.fromIterable(fibers).reduce((id, fiber) => FiberId.combine(id, fiber.id()), FiberId.none),
|
|
3087
3067
|
await: core.exit(forEachParUnbounded(fibers, (fiber) => core.flatten(fiber.await), false)),
|
|
@@ -3090,7 +3070,7 @@ export const fiberAll = <E, A>(fibers: Iterable<Fiber.Fiber<E, A>>): Fiber.Fiber
|
|
|
3090
3070
|
poll: core.map(
|
|
3091
3071
|
core.forEachSequential(fibers, (fiber) => fiber.poll),
|
|
3092
3072
|
RA.reduceRight(
|
|
3093
|
-
Option.some<Exit.Exit<
|
|
3073
|
+
Option.some<Exit.Exit<Array<A>, E>>(core.exitSucceed(new Array())),
|
|
3094
3074
|
(optionB, optionA) => {
|
|
3095
3075
|
switch (optionA._tag) {
|
|
3096
3076
|
case "None": {
|
|
@@ -3122,15 +3102,15 @@ export const fiberAll = <E, A>(fibers: Iterable<Fiber.Fiber<E, A>>): Fiber.Fiber
|
|
|
3122
3102
|
})
|
|
3123
3103
|
|
|
3124
3104
|
/* @internal */
|
|
3125
|
-
export const fiberInterruptFork = <
|
|
3105
|
+
export const fiberInterruptFork = <A, E>(self: Fiber.Fiber<A, E>): Effect.Effect<void> =>
|
|
3126
3106
|
core.asUnit(forkDaemon(core.interruptFiber(self)))
|
|
3127
3107
|
|
|
3128
3108
|
/* @internal */
|
|
3129
|
-
export const fiberJoinAll = <
|
|
3109
|
+
export const fiberJoinAll = <A, E>(fibers: Iterable<Fiber.Fiber<A, E>>): Effect.Effect<void, E> =>
|
|
3130
3110
|
core.asUnit(internalFiber.join(fiberAll(fibers)))
|
|
3131
3111
|
|
|
3132
3112
|
/* @internal */
|
|
3133
|
-
export const fiberScoped = <
|
|
3113
|
+
export const fiberScoped = <A, E>(self: Fiber.Fiber<A, E>): Effect.Effect<Fiber.Fiber<A, E>, never, Scope.Scope> =>
|
|
3134
3114
|
acquireRelease(core.succeed(self), core.interruptFiber)
|
|
3135
3115
|
|
|
3136
3116
|
//
|
|
@@ -3139,29 +3119,22 @@ export const fiberScoped = <E, A>(self: Fiber.Fiber<E, A>): Effect.Effect<Scope.
|
|
|
3139
3119
|
|
|
3140
3120
|
/** @internal */
|
|
3141
3121
|
export const raceWith = dual<
|
|
3142
|
-
<
|
|
3143
|
-
other: Effect.Effect<
|
|
3122
|
+
<A1, E1, R1, E, A, A2, E2, R2, A3, E3, R3>(
|
|
3123
|
+
other: Effect.Effect<A1, E1, R1>,
|
|
3144
3124
|
options: {
|
|
3145
|
-
readonly onSelfDone: (exit: Exit.Exit<
|
|
3146
|
-
readonly onOtherDone: (exit: Exit.Exit<
|
|
3125
|
+
readonly onSelfDone: (exit: Exit.Exit<A, E>, fiber: Fiber.Fiber<A1, E1>) => Effect.Effect<A2, E2, R2>
|
|
3126
|
+
readonly onOtherDone: (exit: Exit.Exit<A1, E1>, fiber: Fiber.Fiber<A, E>) => Effect.Effect<A3, E3, R3>
|
|
3147
3127
|
}
|
|
3148
|
-
) => <R>(self: Effect.Effect<
|
|
3149
|
-
<
|
|
3150
|
-
self: Effect.Effect<
|
|
3151
|
-
other: Effect.Effect<
|
|
3128
|
+
) => <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A3, E2 | E3, R | R1 | R2 | R3>,
|
|
3129
|
+
<A, E, R, A1, E1, R1, A2, E2, R2, A3, E3, R3>(
|
|
3130
|
+
self: Effect.Effect<A, E, R>,
|
|
3131
|
+
other: Effect.Effect<A1, E1, R1>,
|
|
3152
3132
|
options: {
|
|
3153
|
-
readonly onSelfDone: (exit: Exit.Exit<
|
|
3154
|
-
readonly onOtherDone: (exit: Exit.Exit<
|
|
3133
|
+
readonly onSelfDone: (exit: Exit.Exit<A, E>, fiber: Fiber.Fiber<A1, E1>) => Effect.Effect<A2, E2, R2>
|
|
3134
|
+
readonly onOtherDone: (exit: Exit.Exit<A1, E1>, fiber: Fiber.Fiber<A, E>) => Effect.Effect<A3, E3, R3>
|
|
3155
3135
|
}
|
|
3156
|
-
) => Effect.Effect<
|
|
3157
|
-
>(3,
|
|
3158
|
-
self: Effect.Effect<R, E, A>,
|
|
3159
|
-
other: Effect.Effect<R1, E1, A1>,
|
|
3160
|
-
options: {
|
|
3161
|
-
readonly onSelfDone: (exit: Exit.Exit<E, A>, fiber: Fiber.Fiber<E1, A1>) => Effect.Effect<R2, E2, A2>
|
|
3162
|
-
readonly onOtherDone: (exit: Exit.Exit<E1, A1>, fiber: Fiber.Fiber<E, A>) => Effect.Effect<R3, E3, A3>
|
|
3163
|
-
}
|
|
3164
|
-
) =>
|
|
3136
|
+
) => Effect.Effect<A2 | A3, E2 | E3, R | R1 | R2 | R3>
|
|
3137
|
+
>(3, (self, other, options) =>
|
|
3165
3138
|
raceFibersWith(self, other, {
|
|
3166
3139
|
onSelfWin: (winner, loser) =>
|
|
3167
3140
|
core.flatMap(winner.await, (exit) => {
|
|
@@ -3194,7 +3167,7 @@ export const raceWith = dual<
|
|
|
3194
3167
|
}))
|
|
3195
3168
|
|
|
3196
3169
|
/** @internal */
|
|
3197
|
-
export const disconnect = <
|
|
3170
|
+
export const disconnect = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
3198
3171
|
core.uninterruptibleMask((restore) =>
|
|
3199
3172
|
core.fiberIdWith((fiberId) =>
|
|
3200
3173
|
core.flatMap(forkDaemon(restore(self)), (fiber) =>
|
|
@@ -3207,15 +3180,15 @@ export const disconnect = <R, E, A>(self: Effect.Effect<R, E, A>): Effect.Effect
|
|
|
3207
3180
|
|
|
3208
3181
|
/** @internal */
|
|
3209
3182
|
export const race = dual<
|
|
3210
|
-
<
|
|
3211
|
-
that: Effect.Effect<
|
|
3212
|
-
) => <
|
|
3213
|
-
self: Effect.Effect<
|
|
3214
|
-
) => Effect.Effect<
|
|
3215
|
-
<
|
|
3216
|
-
self: Effect.Effect<
|
|
3217
|
-
that: Effect.Effect<
|
|
3218
|
-
) => Effect.Effect<
|
|
3183
|
+
<A2, E2, R2>(
|
|
3184
|
+
that: Effect.Effect<A2, E2, R2>
|
|
3185
|
+
) => <A, E, R>(
|
|
3186
|
+
self: Effect.Effect<A, E, R>
|
|
3187
|
+
) => Effect.Effect<A | A2, E | E2, R | R2>,
|
|
3188
|
+
<A, E, R, A2, E2, R2>(
|
|
3189
|
+
self: Effect.Effect<A, E, R>,
|
|
3190
|
+
that: Effect.Effect<A2, E2, R2>
|
|
3191
|
+
) => Effect.Effect<A | A2, E | E2, R | R2>
|
|
3219
3192
|
>(
|
|
3220
3193
|
2,
|
|
3221
3194
|
(self, that) =>
|
|
@@ -3255,77 +3228,69 @@ export const race = dual<
|
|
|
3255
3228
|
|
|
3256
3229
|
/** @internal */
|
|
3257
3230
|
export const raceFibersWith = dual<
|
|
3258
|
-
<
|
|
3259
|
-
other: Effect.Effect<
|
|
3231
|
+
<A1, E1, R1, E, A, A2, E2, R2, A3, E3, R3>(
|
|
3232
|
+
other: Effect.Effect<A1, E1, R1>,
|
|
3260
3233
|
options: {
|
|
3261
3234
|
readonly onSelfWin: (
|
|
3262
|
-
winner: Fiber.RuntimeFiber<
|
|
3263
|
-
loser: Fiber.RuntimeFiber<
|
|
3264
|
-
) => Effect.Effect<
|
|
3235
|
+
winner: Fiber.RuntimeFiber<A, E>,
|
|
3236
|
+
loser: Fiber.RuntimeFiber<A1, E1>
|
|
3237
|
+
) => Effect.Effect<A2, E2, R2>
|
|
3265
3238
|
readonly onOtherWin: (
|
|
3266
|
-
winner: Fiber.RuntimeFiber<
|
|
3267
|
-
loser: Fiber.RuntimeFiber<
|
|
3268
|
-
) => Effect.Effect<
|
|
3239
|
+
winner: Fiber.RuntimeFiber<A1, E1>,
|
|
3240
|
+
loser: Fiber.RuntimeFiber<A, E>
|
|
3241
|
+
) => Effect.Effect<A3, E3, R3>
|
|
3269
3242
|
readonly selfScope?: fiberScope.FiberScope | undefined
|
|
3270
3243
|
readonly otherScope?: fiberScope.FiberScope | undefined
|
|
3271
3244
|
}
|
|
3272
|
-
) => <R>(self: Effect.Effect<
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
>,
|
|
3277
|
-
<R, E, A, R1, E1, A1, R2, E2, A2, R3, E3, A3>(
|
|
3278
|
-
self: Effect.Effect<R, E, A>,
|
|
3279
|
-
other: Effect.Effect<R1, E1, A1>,
|
|
3245
|
+
) => <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A3, E2 | E3, R | R1 | R2 | R3>,
|
|
3246
|
+
<A, E, R, A1, E1, R1, A2, E2, R2, A3, E3, R3>(
|
|
3247
|
+
self: Effect.Effect<A, E, R>,
|
|
3248
|
+
other: Effect.Effect<A1, E1, R1>,
|
|
3280
3249
|
options: {
|
|
3281
3250
|
readonly onSelfWin: (
|
|
3282
|
-
winner: Fiber.RuntimeFiber<
|
|
3283
|
-
loser: Fiber.RuntimeFiber<
|
|
3284
|
-
) => Effect.Effect<
|
|
3251
|
+
winner: Fiber.RuntimeFiber<A, E>,
|
|
3252
|
+
loser: Fiber.RuntimeFiber<A1, E1>
|
|
3253
|
+
) => Effect.Effect<A2, E2, R2>
|
|
3285
3254
|
readonly onOtherWin: (
|
|
3286
|
-
winner: Fiber.RuntimeFiber<
|
|
3287
|
-
loser: Fiber.RuntimeFiber<
|
|
3288
|
-
) => Effect.Effect<
|
|
3255
|
+
winner: Fiber.RuntimeFiber<A1, E1>,
|
|
3256
|
+
loser: Fiber.RuntimeFiber<A, E>
|
|
3257
|
+
) => Effect.Effect<A3, E3, R3>
|
|
3289
3258
|
readonly selfScope?: fiberScope.FiberScope | undefined
|
|
3290
3259
|
readonly otherScope?: fiberScope.FiberScope | undefined
|
|
3291
3260
|
}
|
|
3292
|
-
) => Effect.Effect<
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
>
|
|
3297
|
-
>(3, <R, E, A, R1, E1, A1, R2, E2, A2, R3, E3, A3>(
|
|
3298
|
-
self: Effect.Effect<R, E, A>,
|
|
3299
|
-
other: Effect.Effect<R1, E1, A1>,
|
|
3261
|
+
) => Effect.Effect<A2 | A3, E2 | E3, R | R1 | R2 | R3>
|
|
3262
|
+
>(3, <A, E, R, A1, E1, R1, A2, E2, R2, A3, E3, R3>(
|
|
3263
|
+
self: Effect.Effect<A, E, R>,
|
|
3264
|
+
other: Effect.Effect<A1, E1, R1>,
|
|
3300
3265
|
options: {
|
|
3301
3266
|
readonly onSelfWin: (
|
|
3302
|
-
winner: Fiber.RuntimeFiber<
|
|
3303
|
-
loser: Fiber.RuntimeFiber<
|
|
3304
|
-
) => Effect.Effect<
|
|
3267
|
+
winner: Fiber.RuntimeFiber<A, E>,
|
|
3268
|
+
loser: Fiber.RuntimeFiber<A1, E1>
|
|
3269
|
+
) => Effect.Effect<A2, E2, R2>
|
|
3305
3270
|
readonly onOtherWin: (
|
|
3306
|
-
winner: Fiber.RuntimeFiber<
|
|
3307
|
-
loser: Fiber.RuntimeFiber<
|
|
3308
|
-
) => Effect.Effect<
|
|
3271
|
+
winner: Fiber.RuntimeFiber<A1, E1>,
|
|
3272
|
+
loser: Fiber.RuntimeFiber<A, E>
|
|
3273
|
+
) => Effect.Effect<A3, E3, R3>
|
|
3309
3274
|
readonly selfScope?: fiberScope.FiberScope | undefined
|
|
3310
3275
|
readonly otherScope?: fiberScope.FiberScope | undefined
|
|
3311
3276
|
}
|
|
3312
3277
|
) =>
|
|
3313
|
-
core.withFiberRuntime
|
|
3278
|
+
core.withFiberRuntime((parentFiber, parentStatus) => {
|
|
3314
3279
|
const parentRuntimeFlags = parentStatus.runtimeFlags
|
|
3315
3280
|
const raceIndicator = MRef.make(true)
|
|
3316
|
-
const leftFiber: FiberRuntime<
|
|
3281
|
+
const leftFiber: FiberRuntime<A, E> = unsafeMakeChildFiber(
|
|
3317
3282
|
self,
|
|
3318
3283
|
parentFiber,
|
|
3319
3284
|
parentRuntimeFlags,
|
|
3320
3285
|
options.selfScope
|
|
3321
3286
|
)
|
|
3322
|
-
const rightFiber: FiberRuntime<
|
|
3287
|
+
const rightFiber: FiberRuntime<A1, E1> = unsafeMakeChildFiber(
|
|
3323
3288
|
other,
|
|
3324
3289
|
parentFiber,
|
|
3325
3290
|
parentRuntimeFlags,
|
|
3326
3291
|
options.otherScope
|
|
3327
3292
|
)
|
|
3328
|
-
return core.async
|
|
3293
|
+
return core.async((cb) => {
|
|
3329
3294
|
leftFiber.addObserver(() => completeRace(leftFiber, rightFiber, options.onSelfWin, raceIndicator, cb))
|
|
3330
3295
|
rightFiber.addObserver(() => completeRace(rightFiber, leftFiber, options.onOtherWin, raceIndicator, cb))
|
|
3331
3296
|
leftFiber.startFork(self)
|
|
@@ -3338,7 +3303,7 @@ const completeRace = <R, R1, R2, E2, A2, R3, E3, A3>(
|
|
|
3338
3303
|
loser: Fiber.RuntimeFiber<any, any>,
|
|
3339
3304
|
cont: (winner: Fiber.RuntimeFiber<any, any>, loser: Fiber.RuntimeFiber<any, any>) => Effect.Effect<any, any, any>,
|
|
3340
3305
|
ab: MRef.MutableRef<boolean>,
|
|
3341
|
-
cb: (_: Effect.Effect<
|
|
3306
|
+
cb: (_: Effect.Effect<A2 | A3, E2 | E3, R | R1 | R2 | R3>) => void
|
|
3342
3307
|
): void => {
|
|
3343
3308
|
if (MRef.compareAndSet(true, false)(ab)) {
|
|
3344
3309
|
cb(cont(winner, loser))
|
|
@@ -3346,40 +3311,38 @@ const completeRace = <R, R1, R2, E2, A2, R3, E3, A3>(
|
|
|
3346
3311
|
}
|
|
3347
3312
|
|
|
3348
3313
|
/** @internal */
|
|
3349
|
-
export const ensuring
|
|
3350
|
-
<
|
|
3351
|
-
finalizer: Effect.Effect<
|
|
3352
|
-
) => <
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
-
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
})
|
|
3369
|
-
))
|
|
3314
|
+
export const ensuring: {
|
|
3315
|
+
<X, R1>(
|
|
3316
|
+
finalizer: Effect.Effect<X, never, R1>
|
|
3317
|
+
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R1 | R>
|
|
3318
|
+
<A, E, R, X, R1>(self: Effect.Effect<A, E, R>, finalizer: Effect.Effect<X, never, R1>): Effect.Effect<A, E, R1 | R>
|
|
3319
|
+
} = dual(
|
|
3320
|
+
2,
|
|
3321
|
+
<A, E, R, X, R1>(self: Effect.Effect<A, E, R>, finalizer: Effect.Effect<X, never, R1>): Effect.Effect<A, E, R1 | R> =>
|
|
3322
|
+
core.uninterruptibleMask((restore) =>
|
|
3323
|
+
core.matchCauseEffect(restore(self), {
|
|
3324
|
+
onFailure: (cause1) =>
|
|
3325
|
+
core.matchCauseEffect(finalizer, {
|
|
3326
|
+
onFailure: (cause2) => core.failCause(internalCause.sequential(cause1, cause2)),
|
|
3327
|
+
onSuccess: () => core.failCause(cause1)
|
|
3328
|
+
}),
|
|
3329
|
+
onSuccess: (a) => core.as(finalizer, a)
|
|
3330
|
+
})
|
|
3331
|
+
)
|
|
3332
|
+
)
|
|
3370
3333
|
|
|
3371
3334
|
/** @internal */
|
|
3372
|
-
export const invokeWithInterrupt: <
|
|
3373
|
-
self: Effect.Effect<
|
|
3335
|
+
export const invokeWithInterrupt: <A, E, R>(
|
|
3336
|
+
self: Effect.Effect<A, E, R>,
|
|
3374
3337
|
entries: ReadonlyArray<Entry<unknown>>
|
|
3375
|
-
) => Effect.Effect<
|
|
3338
|
+
) => Effect.Effect<void, E, R> = <A, E, R>(self: Effect.Effect<A, E, R>, entries: ReadonlyArray<Entry<unknown>>) =>
|
|
3376
3339
|
core.fiberIdWith((id) =>
|
|
3377
3340
|
core.flatMap(
|
|
3378
3341
|
core.flatMap(
|
|
3379
|
-
forkDaemon(core.interruptible(
|
|
3342
|
+
forkDaemon(core.interruptible(self)),
|
|
3380
3343
|
(processing) =>
|
|
3381
|
-
core.async<
|
|
3382
|
-
const counts =
|
|
3344
|
+
core.async<void, E>((cb) => {
|
|
3345
|
+
const counts = entries.map((_) => _.listeners.count)
|
|
3383
3346
|
const checkDone = () => {
|
|
3384
3347
|
if (counts.every((count) => count === 0)) {
|
|
3385
3348
|
cleanup.forEach((f) => f())
|
|
@@ -3390,7 +3353,7 @@ export const invokeWithInterrupt: <R, E, A>(
|
|
|
3390
3353
|
cleanup.forEach((f) => f())
|
|
3391
3354
|
cb(exit)
|
|
3392
3355
|
})
|
|
3393
|
-
const cleanup =
|
|
3356
|
+
const cleanup = entries.map((r, i) => {
|
|
3394
3357
|
const observer = (count: number) => {
|
|
3395
3358
|
counts[i] = count
|
|
3396
3359
|
checkDone()
|
|
@@ -3406,7 +3369,7 @@ export const invokeWithInterrupt: <R, E, A>(
|
|
|
3406
3369
|
),
|
|
3407
3370
|
() =>
|
|
3408
3371
|
core.suspend(() => {
|
|
3409
|
-
const residual =
|
|
3372
|
+
const residual = entries.flatMap((entry) => {
|
|
3410
3373
|
if (!entry.state.completed) {
|
|
3411
3374
|
return [entry]
|
|
3412
3375
|
}
|
|
@@ -3422,13 +3385,13 @@ export const invokeWithInterrupt: <R, E, A>(
|
|
|
3422
3385
|
|
|
3423
3386
|
/** @internal */
|
|
3424
3387
|
export const interruptWhenPossible = dual<
|
|
3425
|
-
(all: Iterable<Request<any, any>>) => <
|
|
3426
|
-
self: Effect.Effect<
|
|
3427
|
-
) => Effect.Effect<
|
|
3428
|
-
<
|
|
3429
|
-
self: Effect.Effect<
|
|
3388
|
+
(all: Iterable<Request<any, any>>) => <A, E, R>(
|
|
3389
|
+
self: Effect.Effect<A, E, R>
|
|
3390
|
+
) => Effect.Effect<void, E, R>,
|
|
3391
|
+
<A, E, R>(
|
|
3392
|
+
self: Effect.Effect<A, E, R>,
|
|
3430
3393
|
all: Iterable<Request<any, any>>
|
|
3431
|
-
) => Effect.Effect<
|
|
3394
|
+
) => Effect.Effect<void, E, R>
|
|
3432
3395
|
>(2, (self, all) =>
|
|
3433
3396
|
core.fiberRefGetWith(
|
|
3434
3397
|
currentRequestMap,
|
|
@@ -3451,7 +3414,7 @@ export const makeSpanScoped = (
|
|
|
3451
3414
|
readonly root?: boolean | undefined
|
|
3452
3415
|
readonly context?: Context.Context<never> | undefined
|
|
3453
3416
|
}
|
|
3454
|
-
): Effect.Effect<
|
|
3417
|
+
): Effect.Effect<Tracer.Span, never, Scope.Scope> =>
|
|
3455
3418
|
acquireRelease(
|
|
3456
3419
|
internalEffect.makeSpan(name, options),
|
|
3457
3420
|
(span, exit) =>
|
|
@@ -3462,7 +3425,7 @@ export const makeSpanScoped = (
|
|
|
3462
3425
|
)
|
|
3463
3426
|
|
|
3464
3427
|
/* @internal */
|
|
3465
|
-
export const withTracerScoped = (value: Tracer.Tracer): Effect.Effect<
|
|
3428
|
+
export const withTracerScoped = (value: Tracer.Tracer): Effect.Effect<void, never, Scope.Scope> =>
|
|
3466
3429
|
fiberRefLocallyScopedWith(defaultServices.currentServices, Context.add(tracer.tracerTag, value))
|
|
3467
3430
|
|
|
3468
3431
|
/** @internal */
|
|
@@ -3473,14 +3436,14 @@ export const withSpanScoped = dual<
|
|
|
3473
3436
|
readonly parent?: Tracer.ParentSpan | undefined
|
|
3474
3437
|
readonly root?: boolean | undefined
|
|
3475
3438
|
readonly context?: Context.Context<never> | undefined
|
|
3476
|
-
}) => <
|
|
3477
|
-
<
|
|
3439
|
+
}) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan> | Scope.Scope>,
|
|
3440
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, name: string, options?: {
|
|
3478
3441
|
readonly attributes?: Record<string, unknown> | undefined
|
|
3479
3442
|
readonly links?: ReadonlyArray<Tracer.SpanLink> | undefined
|
|
3480
3443
|
readonly parent?: Tracer.ParentSpan | undefined
|
|
3481
3444
|
readonly root?: boolean | undefined
|
|
3482
3445
|
readonly context?: Context.Context<never> | undefined
|
|
3483
|
-
}) => Effect.Effect<Exclude<R, Tracer.ParentSpan> | Scope.Scope
|
|
3446
|
+
}) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan> | Scope.Scope>
|
|
3484
3447
|
>(
|
|
3485
3448
|
(args) => typeof args[0] !== "string",
|
|
3486
3449
|
(self, name, options) =>
|