effect 2.2.5 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RateLimiter/package.json +6 -0
- package/dist/cjs/Cause.js +14 -1
- package/dist/cjs/Cause.js.map +1 -1
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/Clock.js.map +1 -1
- package/dist/cjs/Console.js.map +1 -1
- package/dist/cjs/Context.js +23 -25
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Data.js +3 -3
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/Deferred.js +1 -1
- package/dist/cjs/Deferred.js.map +1 -1
- package/dist/cjs/Effect.js +9 -9
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Effectable.js.map +1 -1
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/Exit.js +2 -2
- package/dist/cjs/Exit.js.map +1 -1
- package/dist/cjs/Fiber.js.map +1 -1
- package/dist/cjs/FiberMap.js +3 -3
- package/dist/cjs/FiberRef.js.map +1 -1
- package/dist/cjs/FiberRefs.js.map +1 -1
- package/dist/cjs/FiberSet.js +3 -3
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/GroupBy.js.map +1 -1
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/LogLevel.js.map +1 -1
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/Metric.js.map +1 -1
- package/dist/cjs/Number.js +20 -1
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/Option.js.map +1 -1
- package/dist/cjs/Pool.js.map +1 -1
- package/dist/cjs/PubSub.js.map +1 -1
- package/dist/cjs/Queue.js.map +1 -1
- package/dist/cjs/Random.js.map +1 -1
- package/dist/cjs/RateLimiter.js +38 -0
- package/dist/cjs/RateLimiter.js.map +1 -0
- package/dist/cjs/ReadonlyRecord.js +45 -9
- package/dist/cjs/ReadonlyRecord.js.map +1 -1
- package/dist/cjs/Ref.js.map +1 -1
- package/dist/cjs/Request.js.map +1 -1
- package/dist/cjs/RequestResolver.js.map +1 -1
- package/dist/cjs/Resource.js.map +1 -1
- package/dist/cjs/Runtime.js +1 -4
- package/dist/cjs/Runtime.js.map +1 -1
- package/dist/cjs/RuntimeFlags.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/Scope.js.map +1 -1
- package/dist/cjs/ScopedRef.js.map +1 -1
- package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/SubscriptionRef.js.map +1 -1
- package/dist/cjs/Supervisor.js.map +1 -1
- package/dist/cjs/SynchronizedRef.js.map +1 -1
- package/dist/cjs/TArray.js.map +1 -1
- package/dist/cjs/TDeferred.js.map +1 -1
- package/dist/cjs/TMap.js.map +1 -1
- package/dist/cjs/TPriorityQueue.js.map +1 -1
- package/dist/cjs/TPubSub.js.map +1 -1
- package/dist/cjs/TQueue.js.map +1 -1
- package/dist/cjs/TRandom.js.map +1 -1
- package/dist/cjs/TReentrantLock.js.map +1 -1
- package/dist/cjs/TRef.js.map +1 -1
- package/dist/cjs/TSemaphore.js.map +1 -1
- package/dist/cjs/TSet.js.map +1 -1
- package/dist/cjs/Take.js +6 -6
- package/dist/cjs/Take.js.map +1 -1
- package/dist/cjs/TestAnnotation.js +10 -13
- package/dist/cjs/TestAnnotation.js.map +1 -1
- package/dist/cjs/TestAnnotations.js +1 -1
- package/dist/cjs/TestAnnotations.js.map +1 -1
- package/dist/cjs/TestClock.js +1 -1
- package/dist/cjs/TestClock.js.map +1 -1
- package/dist/cjs/TestConfig.js +1 -1
- package/dist/cjs/TestConfig.js.map +1 -1
- package/dist/cjs/TestContext.js.map +1 -1
- package/dist/cjs/TestLive.js +1 -1
- package/dist/cjs/TestLive.js.map +1 -1
- package/dist/cjs/TestServices.js.map +1 -1
- package/dist/cjs/TestSized.js +1 -1
- package/dist/cjs/TestSized.js.map +1 -1
- package/dist/cjs/Utils.js +0 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/cache.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel/mergeDecision.js +2 -6
- package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
- package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/internal/channel.js +1 -1
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/clock.js +1 -1
- package/dist/cjs/internal/clock.js.map +1 -1
- package/dist/cjs/internal/configProvider.js +2 -4
- package/dist/cjs/internal/configProvider.js.map +1 -1
- package/dist/cjs/internal/console.js.map +1 -1
- package/dist/cjs/internal/context.js +31 -22
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +13 -27
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core-stream.js.map +1 -1
- package/dist/cjs/internal/core.js +61 -130
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/data.js.map +1 -1
- package/dist/cjs/internal/defaultServices/console.js +1 -1
- package/dist/cjs/internal/defaultServices/console.js.map +1 -1
- package/dist/cjs/internal/defaultServices.js.map +1 -1
- package/dist/cjs/internal/deferred.js.map +1 -1
- package/dist/cjs/internal/differ/contextPatch.js +9 -9
- package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +7 -10
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/effectable.js +4 -4
- package/dist/cjs/internal/effectable.js.map +1 -1
- package/dist/cjs/internal/fiber.js +2 -6
- package/dist/cjs/internal/fiber.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +10 -19
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/keyedPool.js.map +1 -1
- package/dist/cjs/internal/layer/circular.js.map +1 -1
- package/dist/cjs/internal/layer.js +3 -3
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/logSpan.js +3 -5
- package/dist/cjs/internal/logSpan.js.map +1 -1
- package/dist/cjs/internal/metric.js.map +1 -1
- package/dist/cjs/internal/pool.js.map +1 -1
- package/dist/cjs/internal/pubsub.js +2 -6
- package/dist/cjs/internal/pubsub.js.map +1 -1
- package/dist/cjs/internal/query.js.map +1 -1
- package/dist/cjs/internal/queue.js.map +1 -1
- package/dist/cjs/internal/random.js +1 -1
- package/dist/cjs/internal/random.js.map +1 -1
- package/dist/cjs/internal/rateLimiter.js +44 -0
- package/dist/cjs/internal/rateLimiter.js.map +1 -0
- package/dist/cjs/internal/ref.js.map +1 -1
- package/dist/cjs/internal/reloadable.js +1 -9
- package/dist/cjs/internal/reloadable.js.map +1 -1
- package/dist/cjs/internal/runtime.js +0 -1
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/scopedCache.js.map +1 -1
- package/dist/cjs/internal/scopedRef.js.map +1 -1
- package/dist/cjs/internal/sink.js +7 -7
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stm/core.js.map +1 -1
- package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tExit.js +2 -2
- package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
- package/dist/cjs/internal/stm/stm.js.map +1 -1
- package/dist/cjs/internal/stm/tArray.js.map +1 -1
- package/dist/cjs/internal/stm/tDeferred.js +4 -2
- package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
- package/dist/cjs/internal/stm/tMap.js.map +1 -1
- package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
- package/dist/cjs/internal/stm/tQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tRandom.js +1 -1
- package/dist/cjs/internal/stm/tRandom.js.map +1 -1
- package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
- package/dist/cjs/internal/stm/tRef.js.map +1 -1
- package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
- package/dist/cjs/internal/stm/tSet.js.map +1 -1
- package/dist/cjs/internal/stream/debounceState.js.map +1 -1
- package/dist/cjs/internal/stream/handoff.js.map +1 -1
- package/dist/cjs/internal/stream/handoffSignal.js.map +1 -1
- package/dist/cjs/internal/stream/pull.js.map +1 -1
- package/dist/cjs/internal/stream.js +0 -2
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/subscriptionRef.js.map +1 -1
- package/dist/cjs/internal/supervisor.js.map +1 -1
- package/dist/cjs/internal/take.js +2 -2
- package/dist/cjs/internal/take.js.map +1 -1
- package/dist/cjs/internal/testing/sleep.js.map +1 -1
- package/dist/cjs/internal/tracer.js +2 -2
- package/dist/cjs/internal/tracer.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Cache.d.ts +20 -20
- package/dist/dts/Cache.d.ts.map +1 -1
- package/dist/dts/Cause.d.ts +33 -5
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +197 -194
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Clock.d.ts +7 -7
- package/dist/dts/Clock.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +1 -1
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/ConfigProvider.d.ts +6 -6
- package/dist/dts/ConfigProvider.d.ts.map +1 -1
- package/dist/dts/Console.d.ts +43 -43
- package/dist/dts/Console.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +44 -29
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Data.d.ts +38 -57
- package/dist/dts/Data.d.ts.map +1 -1
- package/dist/dts/Deferred.d.ts +36 -36
- package/dist/dts/Deferred.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +732 -729
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Effectable.d.ts +8 -8
- package/dist/dts/Effectable.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +2 -3
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/Exit.d.ts +74 -74
- package/dist/dts/Exit.d.ts.map +1 -1
- package/dist/dts/Fiber.d.ts +75 -75
- package/dist/dts/Fiber.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts +22 -22
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberRef.d.ts +28 -28
- package/dist/dts/FiberRef.d.ts.map +1 -1
- package/dist/dts/FiberRefs.d.ts +1 -1
- package/dist/dts/FiberRefs.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts +16 -16
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/GroupBy.d.ts +6 -6
- package/dist/dts/GroupBy.d.ts.map +1 -1
- package/dist/dts/KeyedPool.d.ts +22 -22
- package/dist/dts/KeyedPool.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +126 -126
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/LogLevel.d.ts +2 -2
- package/dist/dts/LogLevel.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +14 -14
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/MergeDecision.d.ts +7 -7
- package/dist/dts/MergeState.d.ts +13 -13
- package/dist/dts/MergeState.d.ts.map +1 -1
- package/dist/dts/Metric.d.ts +32 -32
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/MetricPolling.d.ts +6 -6
- package/dist/dts/MetricPolling.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +15 -0
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +2 -3
- package/dist/dts/Option.d.ts.map +1 -1
- package/dist/dts/Pool.d.ts +15 -16
- package/dist/dts/Pool.d.ts.map +1 -1
- package/dist/dts/PubSub.d.ts +18 -18
- package/dist/dts/PubSub.d.ts.map +1 -1
- package/dist/dts/Queue.d.ts +40 -40
- package/dist/dts/Queue.d.ts.map +1 -1
- package/dist/dts/Random.d.ts +13 -13
- package/dist/dts/Random.d.ts.map +1 -1
- package/dist/dts/RateLimiter.d.ts +31 -0
- package/dist/dts/RateLimiter.d.ts.map +1 -0
- package/dist/dts/ReadonlyArray.d.ts +3 -3
- package/dist/dts/ReadonlyRecord.d.ts +37 -8
- package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
- package/dist/dts/Ref.d.ts +25 -25
- package/dist/dts/Ref.d.ts.map +1 -1
- package/dist/dts/Reloadable.d.ts +9 -9
- package/dist/dts/Reloadable.d.ts.map +1 -1
- package/dist/dts/Request.d.ts +27 -28
- package/dist/dts/Request.d.ts.map +1 -1
- package/dist/dts/RequestBlock.d.ts +3 -3
- package/dist/dts/RequestBlock.d.ts.map +1 -1
- package/dist/dts/RequestResolver.d.ts +16 -16
- package/dist/dts/RequestResolver.d.ts.map +1 -1
- package/dist/dts/Resource.d.ts +7 -7
- package/dist/dts/Resource.d.ts.map +1 -1
- package/dist/dts/Runtime.d.ts +13 -16
- package/dist/dts/Runtime.d.ts.map +1 -1
- package/dist/dts/RuntimeFlags.d.ts +10 -10
- package/dist/dts/RuntimeFlags.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +303 -303
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schedule.d.ts +47 -47
- package/dist/dts/Schedule.d.ts.map +1 -1
- package/dist/dts/Scope.d.ts +10 -10
- package/dist/dts/Scope.d.ts.map +1 -1
- package/dist/dts/ScopedCache.d.ts +14 -14
- package/dist/dts/ScopedCache.d.ts.map +1 -1
- package/dist/dts/ScopedRef.d.ts +5 -5
- package/dist/dts/ScopedRef.d.ts.map +1 -1
- package/dist/dts/SingleProducerAsyncInput.d.ts +8 -8
- package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +214 -205
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +595 -592
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/StreamEmit.d.ts +5 -5
- package/dist/dts/StreamEmit.d.ts.map +1 -1
- package/dist/dts/Streamable.d.ts +2 -2
- package/dist/dts/Streamable.d.ts.map +1 -1
- package/dist/dts/SubscriptionRef.d.ts +41 -41
- package/dist/dts/SubscriptionRef.d.ts.map +1 -1
- package/dist/dts/Supervisor.d.ts +17 -17
- package/dist/dts/Supervisor.d.ts.map +1 -1
- package/dist/dts/SynchronizedRef.d.ts +41 -41
- package/dist/dts/SynchronizedRef.d.ts.map +1 -1
- package/dist/dts/TArray.d.ts +72 -72
- package/dist/dts/TArray.d.ts.map +1 -1
- package/dist/dts/TDeferred.d.ts +12 -12
- package/dist/dts/TDeferred.d.ts.map +1 -1
- package/dist/dts/TMap.d.ts +67 -67
- package/dist/dts/TMap.d.ts.map +1 -1
- package/dist/dts/TPriorityQueue.d.ts +23 -23
- package/dist/dts/TPriorityQueue.d.ts.map +1 -1
- package/dist/dts/TPubSub.d.ts +15 -15
- package/dist/dts/TPubSub.d.ts.map +1 -1
- package/dist/dts/TQueue.d.ts +40 -40
- package/dist/dts/TQueue.d.ts.map +1 -1
- package/dist/dts/TRandom.d.ts +13 -13
- package/dist/dts/TRandom.d.ts.map +1 -1
- package/dist/dts/TReentrantLock.d.ts +21 -21
- package/dist/dts/TReentrantLock.d.ts.map +1 -1
- package/dist/dts/TRef.d.ts +25 -25
- package/dist/dts/TRef.d.ts.map +1 -1
- package/dist/dts/TSemaphore.d.ts +15 -15
- package/dist/dts/TSemaphore.d.ts.map +1 -1
- package/dist/dts/TSet.d.ts +49 -49
- package/dist/dts/TSet.d.ts.map +1 -1
- package/dist/dts/Take.d.ts +41 -41
- package/dist/dts/Take.d.ts.map +1 -1
- package/dist/dts/TestAnnotation.d.ts +1 -3
- package/dist/dts/TestAnnotation.d.ts.map +1 -1
- package/dist/dts/TestAnnotations.d.ts +3 -3
- package/dist/dts/TestAnnotations.d.ts.map +1 -1
- package/dist/dts/TestClock.d.ts +18 -18
- package/dist/dts/TestClock.d.ts.map +1 -1
- package/dist/dts/TestConfig.d.ts.map +1 -1
- package/dist/dts/TestContext.d.ts +2 -2
- package/dist/dts/TestContext.d.ts.map +1 -1
- package/dist/dts/TestLive.d.ts +1 -1
- package/dist/dts/TestLive.d.ts.map +1 -1
- package/dist/dts/TestServices.d.ts +31 -31
- package/dist/dts/TestServices.d.ts.map +1 -1
- package/dist/dts/TestSized.d.ts +2 -2
- package/dist/dts/TestSized.d.ts.map +1 -1
- package/dist/dts/Tracer.d.ts +1 -1
- package/dist/dts/Utils.d.ts.map +1 -1
- package/dist/dts/index.d.ts +12 -2
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/channel/channelExecutor.d.ts +1 -1
- package/dist/dts/internal/channel/channelExecutor.d.ts.map +1 -1
- package/dist/dts/internal/core-stream.d.ts +1 -1
- package/dist/dts/internal/core-stream.d.ts.map +1 -1
- package/dist/dts/internal/rateLimiter.d.ts +2 -0
- package/dist/dts/internal/rateLimiter.d.ts.map +1 -0
- package/dist/dts/internal/stm/stm.d.ts +6 -6
- package/dist/dts/internal/stm/stm.d.ts.map +1 -1
- package/dist/dts/internal/version.d.ts +1 -1
- package/dist/esm/Cause.js +13 -0
- package/dist/esm/Cause.js.map +1 -1
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Clock.js.map +1 -1
- package/dist/esm/Console.js.map +1 -1
- package/dist/esm/Context.js +22 -24
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Data.js +4 -5
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/Deferred.js +1 -1
- package/dist/esm/Deferred.js.map +1 -1
- package/dist/esm/Effect.js +9 -9
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Effectable.js.map +1 -1
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/Exit.js +2 -2
- package/dist/esm/Exit.js.map +1 -1
- package/dist/esm/Fiber.js.map +1 -1
- package/dist/esm/FiberMap.js +3 -3
- package/dist/esm/FiberRef.js.map +1 -1
- package/dist/esm/FiberRefs.js.map +1 -1
- package/dist/esm/FiberSet.js +3 -3
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/GroupBy.js.map +1 -1
- package/dist/esm/Layer.js.map +1 -1
- package/dist/esm/LogLevel.js.map +1 -1
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/Metric.js.map +1 -1
- package/dist/esm/Number.js +18 -0
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/Option.js.map +1 -1
- package/dist/esm/Pool.js.map +1 -1
- package/dist/esm/PubSub.js.map +1 -1
- package/dist/esm/Queue.js.map +1 -1
- package/dist/esm/Random.js.map +1 -1
- package/dist/esm/RateLimiter.js +7 -0
- package/dist/esm/RateLimiter.js.map +1 -0
- package/dist/esm/ReadonlyRecord.js +44 -8
- package/dist/esm/ReadonlyRecord.js.map +1 -1
- package/dist/esm/Ref.js.map +1 -1
- package/dist/esm/Request.js.map +1 -1
- package/dist/esm/RequestResolver.js.map +1 -1
- package/dist/esm/Resource.js.map +1 -1
- package/dist/esm/Runtime.js +1 -4
- package/dist/esm/Runtime.js.map +1 -1
- package/dist/esm/RuntimeFlags.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schedule.js.map +1 -1
- package/dist/esm/Scope.js.map +1 -1
- package/dist/esm/ScopedRef.js.map +1 -1
- package/dist/esm/SingleProducerAsyncInput.js.map +1 -1
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/SubscriptionRef.js.map +1 -1
- package/dist/esm/Supervisor.js.map +1 -1
- package/dist/esm/SynchronizedRef.js.map +1 -1
- package/dist/esm/TArray.js.map +1 -1
- package/dist/esm/TDeferred.js.map +1 -1
- package/dist/esm/TMap.js.map +1 -1
- package/dist/esm/TPriorityQueue.js.map +1 -1
- package/dist/esm/TPubSub.js.map +1 -1
- package/dist/esm/TQueue.js.map +1 -1
- package/dist/esm/TRandom.js.map +1 -1
- package/dist/esm/TReentrantLock.js.map +1 -1
- package/dist/esm/TRef.js.map +1 -1
- package/dist/esm/TSemaphore.js.map +1 -1
- package/dist/esm/TSet.js.map +1 -1
- package/dist/esm/Take.js +6 -6
- package/dist/esm/Take.js.map +1 -1
- package/dist/esm/TestAnnotation.js +10 -13
- package/dist/esm/TestAnnotation.js.map +1 -1
- package/dist/esm/TestAnnotations.js +1 -1
- package/dist/esm/TestAnnotations.js.map +1 -1
- package/dist/esm/TestClock.js +1 -1
- package/dist/esm/TestClock.js.map +1 -1
- package/dist/esm/TestConfig.js +1 -1
- package/dist/esm/TestConfig.js.map +1 -1
- package/dist/esm/TestContext.js.map +1 -1
- package/dist/esm/TestLive.js +1 -1
- package/dist/esm/TestLive.js.map +1 -1
- package/dist/esm/TestServices.js.map +1 -1
- package/dist/esm/TestSized.js +1 -1
- package/dist/esm/TestSized.js.map +1 -1
- package/dist/esm/Utils.js +1 -1
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/index.js +12 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/cache.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel/mergeDecision.js +2 -6
- package/dist/esm/internal/channel/mergeDecision.js.map +1 -1
- package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/esm/internal/channel.js +1 -1
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/clock.js +1 -1
- package/dist/esm/internal/clock.js.map +1 -1
- package/dist/esm/internal/configProvider.js +2 -4
- package/dist/esm/internal/configProvider.js.map +1 -1
- package/dist/esm/internal/console.js.map +1 -1
- package/dist/esm/internal/context.js +28 -20
- package/dist/esm/internal/context.js.map +1 -1
- package/dist/esm/internal/core-effect.js +12 -26
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core-stream.js.map +1 -1
- package/dist/esm/internal/core.js +57 -127
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/data.js.map +1 -1
- package/dist/esm/internal/defaultServices/console.js +1 -1
- package/dist/esm/internal/defaultServices/console.js.map +1 -1
- package/dist/esm/internal/defaultServices.js.map +1 -1
- package/dist/esm/internal/deferred.js.map +1 -1
- package/dist/esm/internal/differ/contextPatch.js +9 -9
- package/dist/esm/internal/differ/contextPatch.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +5 -8
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/effectable.js +4 -4
- package/dist/esm/internal/effectable.js.map +1 -1
- package/dist/esm/internal/fiber.js +2 -6
- package/dist/esm/internal/fiber.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +10 -19
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/keyedPool.js.map +1 -1
- package/dist/esm/internal/layer/circular.js.map +1 -1
- package/dist/esm/internal/layer.js +3 -3
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/logSpan.js +3 -5
- package/dist/esm/internal/logSpan.js.map +1 -1
- package/dist/esm/internal/metric.js.map +1 -1
- package/dist/esm/internal/pool.js.map +1 -1
- package/dist/esm/internal/pubsub.js +1 -5
- package/dist/esm/internal/pubsub.js.map +1 -1
- package/dist/esm/internal/query.js.map +1 -1
- package/dist/esm/internal/queue.js.map +1 -1
- package/dist/esm/internal/random.js +1 -1
- package/dist/esm/internal/random.js.map +1 -1
- package/dist/esm/internal/rateLimiter.js +12 -0
- package/dist/esm/internal/rateLimiter.js.map +1 -0
- package/dist/esm/internal/ref.js.map +1 -1
- package/dist/esm/internal/reloadable.js +1 -9
- package/dist/esm/internal/reloadable.js.map +1 -1
- package/dist/esm/internal/runtime.js +0 -1
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/scopedCache.js.map +1 -1
- package/dist/esm/internal/scopedRef.js.map +1 -1
- package/dist/esm/internal/sink.js +7 -7
- package/dist/esm/internal/sink.js.map +1 -1
- package/dist/esm/internal/stm/core.js.map +1 -1
- package/dist/esm/internal/stm/stm/stmState.js.map +1 -1
- package/dist/esm/internal/stm/stm/tExit.js +2 -2
- package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
- package/dist/esm/internal/stm/stm/tryCommit.js.map +1 -1
- package/dist/esm/internal/stm/stm.js.map +1 -1
- package/dist/esm/internal/stm/tArray.js.map +1 -1
- package/dist/esm/internal/stm/tDeferred.js +4 -2
- package/dist/esm/internal/stm/tDeferred.js.map +1 -1
- package/dist/esm/internal/stm/tMap.js.map +1 -1
- package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/esm/internal/stm/tPubSub.js.map +1 -1
- package/dist/esm/internal/stm/tQueue.js.map +1 -1
- package/dist/esm/internal/stm/tRandom.js +1 -1
- package/dist/esm/internal/stm/tRandom.js.map +1 -1
- package/dist/esm/internal/stm/tReentrantLock.js.map +1 -1
- package/dist/esm/internal/stm/tRef.js.map +1 -1
- package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
- package/dist/esm/internal/stm/tSet.js.map +1 -1
- package/dist/esm/internal/stream/debounceState.js.map +1 -1
- package/dist/esm/internal/stream/handoff.js.map +1 -1
- package/dist/esm/internal/stream/handoffSignal.js.map +1 -1
- package/dist/esm/internal/stream/pull.js.map +1 -1
- package/dist/esm/internal/stream.js +0 -2
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/subscriptionRef.js.map +1 -1
- package/dist/esm/internal/supervisor.js.map +1 -1
- package/dist/esm/internal/take.js +2 -2
- package/dist/esm/internal/take.js.map +1 -1
- package/dist/esm/internal/testing/sleep.js.map +1 -1
- package/dist/esm/internal/tracer.js +2 -2
- package/dist/esm/internal/tracer.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +9 -1
- package/src/Cache.ts +20 -20
- package/src/Cause.ts +37 -13
- package/src/Channel.ts +802 -794
- package/src/Clock.ts +7 -7
- package/src/Config.ts +1 -1
- package/src/ConfigProvider.ts +6 -6
- package/src/Console.ts +44 -48
- package/src/Context.ts +52 -30
- package/src/Data.ts +38 -61
- package/src/Deferred.ts +39 -41
- package/src/Effect.ts +1187 -1206
- package/src/Effectable.ts +8 -8
- package/src/Either.ts +2 -3
- package/src/Exit.ts +88 -105
- package/src/Fiber.ts +77 -83
- package/src/FiberMap.ts +77 -77
- package/src/FiberRef.ts +28 -28
- package/src/FiberRefs.ts +1 -1
- package/src/FiberSet.ts +61 -62
- package/src/GroupBy.ts +8 -12
- package/src/KeyedPool.ts +22 -22
- package/src/Layer.ts +187 -181
- package/src/LogLevel.ts +7 -6
- package/src/Logger.ts +18 -18
- package/src/MergeDecision.ts +7 -7
- package/src/MergeState.ts +16 -16
- package/src/Metric.ts +39 -39
- package/src/MetricPolling.ts +6 -6
- package/src/Number.ts +19 -0
- package/src/Option.ts +2 -3
- package/src/Pool.ts +15 -16
- package/src/PubSub.ts +18 -18
- package/src/Queue.ts +43 -46
- package/src/Random.ts +13 -15
- package/src/RateLimiter.ts +37 -0
- package/src/ReadonlyRecord.ts +49 -8
- package/src/Ref.ts +25 -25
- package/src/Reloadable.ts +10 -10
- package/src/Request.ts +31 -31
- package/src/RequestBlock.ts +3 -3
- package/src/RequestResolver.ts +21 -21
- package/src/Resource.ts +13 -13
- package/src/Runtime.ts +16 -19
- package/src/RuntimeFlags.ts +10 -10
- package/src/STM.ts +361 -362
- package/src/Schedule.ts +47 -47
- package/src/Scheduler.ts +2 -2
- package/src/Scope.ts +14 -15
- package/src/ScopedCache.ts +14 -14
- package/src/ScopedRef.ts +7 -7
- package/src/SingleProducerAsyncInput.ts +8 -9
- package/src/Sink.ts +357 -381
- package/src/Stream.ts +935 -1033
- package/src/StreamEmit.ts +5 -5
- package/src/Streamable.ts +2 -2
- package/src/SubscriptionRef.ts +51 -51
- package/src/Supervisor.ts +26 -26
- package/src/SynchronizedRef.ts +44 -44
- package/src/TArray.ts +74 -74
- package/src/TDeferred.ts +14 -14
- package/src/TMap.ts +72 -72
- package/src/TPriorityQueue.ts +23 -24
- package/src/TPubSub.ts +15 -15
- package/src/TQueue.ts +40 -40
- package/src/TRandom.ts +13 -13
- package/src/TReentrantLock.ts +21 -21
- package/src/TRef.ts +25 -25
- package/src/TSemaphore.ts +15 -15
- package/src/TSet.ts +49 -49
- package/src/Take.ts +51 -51
- package/src/TestAnnotation.ts +6 -17
- package/src/TestAnnotations.ts +7 -9
- package/src/TestClock.ts +39 -45
- package/src/TestConfig.ts +1 -3
- package/src/TestContext.ts +3 -3
- package/src/TestLive.ts +3 -5
- package/src/TestServices.ts +45 -47
- package/src/TestSized.ts +5 -5
- package/src/Tracer.ts +1 -1
- package/src/Utils.ts +8 -10
- package/src/index.ts +13 -2
- package/src/internal/blockedRequests.ts +2 -2
- package/src/internal/cache.ts +38 -38
- package/src/internal/channel/channelExecutor.ts +65 -73
- package/src/internal/channel/channelState.ts +11 -11
- package/src/internal/channel/continuation.ts +10 -10
- package/src/internal/channel/mergeDecision.ts +14 -16
- package/src/internal/channel/mergeState.ts +12 -12
- package/src/internal/channel/singleProducerAsyncInput.ts +15 -17
- package/src/internal/channel/subexecutor.ts +7 -7
- package/src/internal/channel.ts +901 -980
- package/src/internal/clock.ts +6 -6
- package/src/internal/concurrency.ts +9 -9
- package/src/internal/configProvider.ts +29 -36
- package/src/internal/console.ts +12 -12
- package/src/internal/context.ts +32 -23
- package/src/internal/core-effect.ts +655 -616
- package/src/internal/core-stream.ts +317 -325
- package/src/internal/core.ts +856 -790
- package/src/internal/data.ts +2 -3
- package/src/internal/dataSource.ts +14 -14
- package/src/internal/defaultServices/console.ts +3 -1
- package/src/internal/defaultServices.ts +21 -21
- package/src/internal/deferred.ts +9 -9
- package/src/internal/differ/contextPatch.ts +17 -17
- package/src/internal/effect/circular.ts +154 -159
- package/src/internal/effectable.ts +7 -7
- package/src/internal/fiber.ts +55 -59
- package/src/internal/fiberRefs.ts +1 -1
- package/src/internal/fiberRuntime.ts +426 -463
- package/src/internal/groupBy.ts +59 -62
- package/src/internal/keyedPool.ts +37 -37
- package/src/internal/layer/circular.ts +37 -37
- package/src/internal/layer.ts +235 -240
- package/src/internal/logSpan.ts +3 -5
- package/src/internal/metric/polling.ts +5 -5
- package/src/internal/metric.ts +54 -55
- package/src/internal/pool.ts +72 -72
- package/src/internal/pubsub.ts +75 -84
- package/src/internal/query.ts +25 -27
- package/src/internal/queue.ts +65 -70
- package/src/internal/random.ts +9 -9
- package/src/internal/rateLimiter.ts +30 -0
- package/src/internal/ref.ts +24 -24
- package/src/internal/reloadable.ts +11 -31
- package/src/internal/request.ts +14 -14
- package/src/internal/resource.ts +8 -8
- package/src/internal/runtime.ts +21 -22
- package/src/internal/schedule.ts +131 -134
- package/src/internal/scopedCache.ts +35 -32
- package/src/internal/scopedRef.ts +14 -14
- package/src/internal/sink.ts +507 -565
- package/src/internal/stm/core.ts +101 -102
- package/src/internal/stm/stm/stmState.ts +10 -10
- package/src/internal/stm/stm/tExit.ts +18 -18
- package/src/internal/stm/stm/tryCommit.ts +5 -5
- package/src/internal/stm/stm.ts +363 -374
- package/src/internal/stm/tArray.ts +92 -92
- package/src/internal/stm/tDeferred.ts +16 -14
- package/src/internal/stm/tMap.ts +83 -84
- package/src/internal/stm/tPriorityQueue.ts +24 -25
- package/src/internal/stm/tPubSub.ts +37 -38
- package/src/internal/stm/tQueue.ts +44 -48
- package/src/internal/stm/tRandom.ts +18 -18
- package/src/internal/stm/tReentrantLock.ts +28 -28
- package/src/internal/stm/tRef.ts +25 -25
- package/src/internal/stm/tSemaphore.ts +16 -16
- package/src/internal/stm/tSet.ts +51 -52
- package/src/internal/stream/debounceState.ts +7 -7
- package/src/internal/stream/emit.ts +4 -4
- package/src/internal/stream/handoff.ts +19 -19
- package/src/internal/stream/handoffSignal.ts +4 -4
- package/src/internal/stream/pull.ts +10 -11
- package/src/internal/stream.ts +1770 -1788
- package/src/internal/subscriptionRef.ts +17 -17
- package/src/internal/supervisor.ts +49 -56
- package/src/internal/synchronizedRef.ts +27 -27
- package/src/internal/take.ts +61 -61
- package/src/internal/testing/sleep.ts +2 -2
- package/src/internal/testing/suspendedWarningData.ts +2 -2
- package/src/internal/testing/warningData.ts +2 -2
- package/src/internal/tracer.ts +2 -6
- package/src/internal/version.ts +1 -1
package/src/internal/core.ts
CHANGED
|
@@ -82,10 +82,10 @@ export const makeEffectError = <E>(cause: Cause.Cause<E>): EffectError<E> => ({
|
|
|
82
82
|
/**
|
|
83
83
|
* @internal
|
|
84
84
|
*/
|
|
85
|
-
export const blocked = <
|
|
85
|
+
export const blocked = <A, E>(
|
|
86
86
|
blockedRequests: BlockedRequests.RequestBlock,
|
|
87
|
-
_continue: Effect.Effect<
|
|
88
|
-
): Effect.Blocked<
|
|
87
|
+
_continue: Effect.Effect<A, E>
|
|
88
|
+
): Effect.Blocked<A, E> => {
|
|
89
89
|
const effect = new EffectPrimitive("Blocked") as any
|
|
90
90
|
effect.i0 = blockedRequests
|
|
91
91
|
effect.i1 = _continue
|
|
@@ -97,7 +97,7 @@ export const blocked = <E, A>(
|
|
|
97
97
|
*/
|
|
98
98
|
export const runRequestBlock = (
|
|
99
99
|
blockedRequests: BlockedRequests.RequestBlock
|
|
100
|
-
): Effect.Effect<
|
|
100
|
+
): Effect.Effect<void> => {
|
|
101
101
|
const effect = new EffectPrimitive("RunBlocked") as any
|
|
102
102
|
effect.i0 = blockedRequests
|
|
103
103
|
return effect
|
|
@@ -257,7 +257,7 @@ class EffectPrimitiveSuccess {
|
|
|
257
257
|
}
|
|
258
258
|
|
|
259
259
|
/** @internal */
|
|
260
|
-
export type Op<Tag extends string, Body = {}> = Effect.Effect<never
|
|
260
|
+
export type Op<Tag extends string, Body = {}> = Effect.Effect<never> & Body & {
|
|
261
261
|
readonly _op: Tag
|
|
262
262
|
}
|
|
263
263
|
|
|
@@ -273,7 +273,7 @@ export interface Async extends
|
|
|
273
273
|
export interface Blocked<out E = any, out A = any> extends
|
|
274
274
|
Op<"Blocked", {
|
|
275
275
|
readonly i0: BlockedRequests.RequestBlock
|
|
276
|
-
readonly i1: Effect.Effect<
|
|
276
|
+
readonly i1: Effect.Effect<A, E>
|
|
277
277
|
}>
|
|
278
278
|
{}
|
|
279
279
|
|
|
@@ -374,9 +374,9 @@ export interface Yield extends Op<OpCodes.OP_YIELD> {}
|
|
|
374
374
|
export const isEffect = (u: unknown): u is Effect.Effect<unknown, unknown, unknown> => hasProperty(u, EffectTypeId)
|
|
375
375
|
|
|
376
376
|
/* @internal */
|
|
377
|
-
export const withFiberRuntime = <
|
|
378
|
-
withRuntime: (fiber: FiberRuntime.FiberRuntime<
|
|
379
|
-
): Effect.Effect<
|
|
377
|
+
export const withFiberRuntime = <A, E = never, R = never>(
|
|
378
|
+
withRuntime: (fiber: FiberRuntime.FiberRuntime<A, E>, status: FiberStatus.Running) => Effect.Effect<A, E, R>
|
|
379
|
+
): Effect.Effect<A, E, R> => {
|
|
380
380
|
internalize(withRuntime)
|
|
381
381
|
const effect = new EffectPrimitive(OpCodes.OP_WITH_RUNTIME) as any
|
|
382
382
|
effect.i0 = withRuntime
|
|
@@ -384,36 +384,34 @@ export const withFiberRuntime = <R, E, A>(
|
|
|
384
384
|
}
|
|
385
385
|
|
|
386
386
|
/* @internal */
|
|
387
|
-
export const acquireUseRelease
|
|
388
|
-
<
|
|
389
|
-
use: (a: A) => Effect.Effect<
|
|
390
|
-
release: (a: A, exit: Exit.Exit<
|
|
391
|
-
)
|
|
392
|
-
<
|
|
393
|
-
acquire: Effect.Effect<
|
|
394
|
-
use: (a: A) => Effect.Effect<
|
|
395
|
-
release: (a: A, exit: Exit.Exit<
|
|
396
|
-
)
|
|
397
|
-
|
|
398
|
-
acquire: Effect.Effect<
|
|
399
|
-
use: (a: A) => Effect.Effect<
|
|
400
|
-
release: (a: A, exit: Exit.Exit<
|
|
401
|
-
): Effect.Effect<
|
|
387
|
+
export const acquireUseRelease: {
|
|
388
|
+
<A2, E2, R2, A, X, R3>(
|
|
389
|
+
use: (a: A) => Effect.Effect<A2, E2, R2>,
|
|
390
|
+
release: (a: A, exit: Exit.Exit<A2, E2>) => Effect.Effect<X, never, R3>
|
|
391
|
+
): <E, R>(acquire: Effect.Effect<A, E, R>) => Effect.Effect<A2, E2 | E, R2 | R3 | R>
|
|
392
|
+
<A, E, R, A2, E2, R2, X, R3>(
|
|
393
|
+
acquire: Effect.Effect<A, E, R>,
|
|
394
|
+
use: (a: A) => Effect.Effect<A2, E2, R2>,
|
|
395
|
+
release: (a: A, exit: Exit.Exit<A2, E2>) => Effect.Effect<X, never, R3>
|
|
396
|
+
): Effect.Effect<A2, E | E2, R | R2 | R3>
|
|
397
|
+
} = dual(3, <A, E, R, A2, E2, R2, X, R3>(
|
|
398
|
+
acquire: Effect.Effect<A, E, R>,
|
|
399
|
+
use: (a: A) => Effect.Effect<A2, E2, R2>,
|
|
400
|
+
release: (a: A, exit: Exit.Exit<A2, E2>) => Effect.Effect<X, never, R3>
|
|
401
|
+
): Effect.Effect<A2, E | E2, R | R2 | R3> =>
|
|
402
402
|
uninterruptibleMask((restore) =>
|
|
403
403
|
flatMap(
|
|
404
404
|
acquire,
|
|
405
405
|
(a) =>
|
|
406
|
-
flatMap(exit(suspend(() => restore(use(a)))), (exit): Effect.Effect<
|
|
406
|
+
flatMap(exit(suspend(() => restore(use(a)))), (exit): Effect.Effect<A2, E | E2, R | R2 | R3> => {
|
|
407
407
|
return suspend(() => release(a, exit)).pipe(
|
|
408
408
|
matchCauseEffect({
|
|
409
409
|
onFailure: (cause) => {
|
|
410
410
|
switch (exit._tag) {
|
|
411
|
-
case OpCodes.OP_FAILURE:
|
|
411
|
+
case OpCodes.OP_FAILURE:
|
|
412
412
|
return failCause(internalCause.parallel(exit.i0, cause))
|
|
413
|
-
|
|
414
|
-
case OpCodes.OP_SUCCESS: {
|
|
413
|
+
case OpCodes.OP_SUCCESS:
|
|
415
414
|
return failCause(cause)
|
|
416
|
-
}
|
|
417
415
|
}
|
|
418
416
|
},
|
|
419
417
|
onSuccess: () => exit
|
|
@@ -424,27 +422,30 @@ export const acquireUseRelease = dual<
|
|
|
424
422
|
))
|
|
425
423
|
|
|
426
424
|
/* @internal */
|
|
427
|
-
export const as
|
|
428
|
-
<B>(value: B)
|
|
429
|
-
<
|
|
430
|
-
|
|
425
|
+
export const as: {
|
|
426
|
+
<B>(value: B): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E, R>
|
|
427
|
+
<A, E, R, B>(self: Effect.Effect<A, E, R>, value: B): Effect.Effect<B, E, R>
|
|
428
|
+
} = dual(
|
|
429
|
+
2,
|
|
430
|
+
<A, E, R, B>(self: Effect.Effect<A, E, R>, value: B): Effect.Effect<B, E, R> => flatMap(self, () => succeed(value))
|
|
431
|
+
)
|
|
431
432
|
|
|
432
433
|
/* @internal */
|
|
433
|
-
export const asUnit = <
|
|
434
|
+
export const asUnit = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<void, E, R> => as(self, void 0)
|
|
434
435
|
|
|
435
436
|
/* @internal */
|
|
436
|
-
export const async = <
|
|
437
|
+
export const async = <A, E = never, R = never>(
|
|
437
438
|
register: (
|
|
438
|
-
callback: (_: Effect.Effect<
|
|
439
|
+
callback: (_: Effect.Effect<A, E, R>) => void,
|
|
439
440
|
signal: AbortSignal
|
|
440
|
-
) => void | Effect.Effect<
|
|
441
|
+
) => void | Effect.Effect<void, never, R>,
|
|
441
442
|
blockingOn: FiberId.FiberId = FiberId.none
|
|
442
|
-
): Effect.Effect<
|
|
443
|
+
): Effect.Effect<A, E, R> =>
|
|
443
444
|
suspend(() => {
|
|
444
445
|
internalize(register)
|
|
445
|
-
let backingResume: ((_: Effect.Effect<
|
|
446
|
-
let pendingEffect: Effect.Effect<
|
|
447
|
-
function proxyResume(effect: Effect.Effect<
|
|
446
|
+
let backingResume: ((_: Effect.Effect<A, E, R>) => void) | undefined = undefined
|
|
447
|
+
let pendingEffect: Effect.Effect<A, E, R> | undefined = undefined
|
|
448
|
+
function proxyResume(effect: Effect.Effect<A, E, R>) {
|
|
448
449
|
if (backingResume) {
|
|
449
450
|
backingResume(effect)
|
|
450
451
|
} else if (pendingEffect === undefined) {
|
|
@@ -452,7 +453,7 @@ export const async = <R, E, A>(
|
|
|
452
453
|
}
|
|
453
454
|
}
|
|
454
455
|
const effect = new EffectPrimitive(OpCodes.OP_ASYNC) as any
|
|
455
|
-
effect.i0 = (resume: (_: Effect.Effect<
|
|
456
|
+
effect.i0 = (resume: (_: Effect.Effect<A, E, R>) => void) => {
|
|
456
457
|
backingResume = resume
|
|
457
458
|
if (pendingEffect) {
|
|
458
459
|
resume(pendingEffect)
|
|
@@ -460,7 +461,7 @@ export const async = <R, E, A>(
|
|
|
460
461
|
}
|
|
461
462
|
effect.i1 = blockingOn
|
|
462
463
|
|
|
463
|
-
let cancelerRef: Effect.Effect<
|
|
464
|
+
let cancelerRef: Effect.Effect<void, never, R> | void = undefined
|
|
464
465
|
let controllerRef: AbortController | void = undefined
|
|
465
466
|
if (register.length !== 1) {
|
|
466
467
|
controllerRef = new AbortController()
|
|
@@ -480,13 +481,13 @@ export const async = <R, E, A>(
|
|
|
480
481
|
})
|
|
481
482
|
|
|
482
483
|
/* @internal */
|
|
483
|
-
export const asyncEither = <
|
|
484
|
+
export const asyncEither = <A, E = never, R = never>(
|
|
484
485
|
register: (
|
|
485
|
-
|
|
486
|
-
) => Either.Either<Effect.Effect<
|
|
486
|
+
resume: (effect: Effect.Effect<A, E, R>) => void
|
|
487
|
+
) => Either.Either<Effect.Effect<void, never, R>, Effect.Effect<A, E, R>>,
|
|
487
488
|
blockingOn: FiberId.FiberId = FiberId.none
|
|
488
|
-
): Effect.Effect<
|
|
489
|
-
async<
|
|
489
|
+
): Effect.Effect<A, E, R> =>
|
|
490
|
+
async<A, E, R>((resume) => {
|
|
490
491
|
const result = register(resume)
|
|
491
492
|
if (Either.isRight(result)) {
|
|
492
493
|
resume(result.right)
|
|
@@ -497,13 +498,13 @@ export const asyncEither = <R, E, A>(
|
|
|
497
498
|
|
|
498
499
|
/* @internal */
|
|
499
500
|
export const catchAllCause = dual<
|
|
500
|
-
<E,
|
|
501
|
-
f: (cause: Cause.Cause<E>) => Effect.Effect<
|
|
502
|
-
) => <
|
|
503
|
-
<
|
|
504
|
-
self: Effect.Effect<
|
|
505
|
-
f: (cause: Cause.Cause<E>) => Effect.Effect<
|
|
506
|
-
) => Effect.Effect<
|
|
501
|
+
<E, A2, E2, R2>(
|
|
502
|
+
f: (cause: Cause.Cause<E>) => Effect.Effect<A2, E2, R2>
|
|
503
|
+
) => <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A, E2, R2 | R>,
|
|
504
|
+
<A, E, R, A2, E2, R2>(
|
|
505
|
+
self: Effect.Effect<A, E, R>,
|
|
506
|
+
f: (cause: Cause.Cause<E>) => Effect.Effect<A2, E2, R2>
|
|
507
|
+
) => Effect.Effect<A2 | A, E2, R2 | R>
|
|
507
508
|
>(2, (self, f) => {
|
|
508
509
|
const effect = new EffectPrimitive(OpCodes.OP_ON_FAILURE) as any
|
|
509
510
|
effect.i0 = self
|
|
@@ -513,15 +514,21 @@ export const catchAllCause = dual<
|
|
|
513
514
|
})
|
|
514
515
|
|
|
515
516
|
/* @internal */
|
|
516
|
-
export const catchAll
|
|
517
|
-
<E,
|
|
518
|
-
f: (e: E) => Effect.Effect<
|
|
519
|
-
)
|
|
520
|
-
<
|
|
521
|
-
self: Effect.Effect<
|
|
522
|
-
f: (e: E) => Effect.Effect<
|
|
523
|
-
)
|
|
524
|
-
|
|
517
|
+
export const catchAll: {
|
|
518
|
+
<E, A2, E2, R2>(
|
|
519
|
+
f: (e: E) => Effect.Effect<A2, E2, R2>
|
|
520
|
+
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A, E2, R2 | R>
|
|
521
|
+
<A, E, R, A2, E2, R2>(
|
|
522
|
+
self: Effect.Effect<A, E, R>,
|
|
523
|
+
f: (e: E) => Effect.Effect<A2, E2, R2>
|
|
524
|
+
): Effect.Effect<A2 | A, E2, R2 | R>
|
|
525
|
+
} = dual(
|
|
526
|
+
2,
|
|
527
|
+
<A, E, R, A2, E2, R2>(
|
|
528
|
+
self: Effect.Effect<A, E, R>,
|
|
529
|
+
f: (e: E) => Effect.Effect<A2, E2, R2>
|
|
530
|
+
): Effect.Effect<A2 | A, E2, R2 | R> => matchEffect(self, { onFailure: f, onSuccess: succeed })
|
|
531
|
+
)
|
|
525
532
|
|
|
526
533
|
/**
|
|
527
534
|
* @macro identity
|
|
@@ -534,71 +541,66 @@ export const unified = <Args extends ReadonlyArray<any>, Ret extends Effect.Effe
|
|
|
534
541
|
|
|
535
542
|
/* @internal */
|
|
536
543
|
export const catchIf: {
|
|
537
|
-
<E, EB extends E,
|
|
544
|
+
<E, EB extends E, A2, E2, R2>(
|
|
538
545
|
refinement: Refinement<NoInfer<E>, EB>,
|
|
539
|
-
f: (e: EB) => Effect.Effect<
|
|
540
|
-
): <
|
|
541
|
-
<E,
|
|
546
|
+
f: (e: EB) => Effect.Effect<A2, E2, R2>
|
|
547
|
+
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A, E2 | Exclude<E, EB>, R2 | R>
|
|
548
|
+
<E, A2, E2, R2>(
|
|
542
549
|
predicate: Predicate<NoInfer<E>>,
|
|
543
|
-
f: (e: NoInfer<E>) => Effect.Effect<
|
|
544
|
-
): <
|
|
545
|
-
<
|
|
546
|
-
self: Effect.Effect<
|
|
547
|
-
refinement: Refinement<
|
|
548
|
-
f: (e: EB) => Effect.Effect<
|
|
549
|
-
): Effect.Effect<
|
|
550
|
-
<
|
|
551
|
-
self: Effect.Effect<
|
|
550
|
+
f: (e: NoInfer<E>) => Effect.Effect<A2, E2, R2>
|
|
551
|
+
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A, E | E2, R2 | R>
|
|
552
|
+
<A, E, R, EB extends E, A2, E2, R2>(
|
|
553
|
+
self: Effect.Effect<A, E, R>,
|
|
554
|
+
refinement: Refinement<E, EB>,
|
|
555
|
+
f: (e: EB) => Effect.Effect<A2, E2, R2>
|
|
556
|
+
): Effect.Effect<A2 | A, E2 | Exclude<E, EB>, R2 | R>
|
|
557
|
+
<A, E, R, A2, E2, R2>(
|
|
558
|
+
self: Effect.Effect<A, E, R>,
|
|
552
559
|
predicate: Predicate<E>,
|
|
553
|
-
f: (e: E) => Effect.Effect<
|
|
554
|
-
): Effect.Effect<
|
|
555
|
-
} = dual(3, <
|
|
556
|
-
self: Effect.Effect<
|
|
560
|
+
f: (e: E) => Effect.Effect<A2, E2, R2>
|
|
561
|
+
): Effect.Effect<A | A2, E | E2, R | R2>
|
|
562
|
+
} = dual(3, <A, E, R, A2, E2, R2>(
|
|
563
|
+
self: Effect.Effect<A, E, R>,
|
|
557
564
|
predicate: Predicate<E>,
|
|
558
|
-
f: (e: E) => Effect.Effect<
|
|
559
|
-
): Effect.Effect<
|
|
560
|
-
catchAllCause(self, (cause): Effect.Effect<
|
|
565
|
+
f: (e: E) => Effect.Effect<A2, E2, R2>
|
|
566
|
+
): Effect.Effect<A | A2, E | E2, R | R2> =>
|
|
567
|
+
catchAllCause(self, (cause): Effect.Effect<A | A2, E | E2, R | R2> => {
|
|
561
568
|
const either = internalCause.failureOrCause(cause)
|
|
562
569
|
switch (either._tag) {
|
|
563
|
-
case "Left":
|
|
570
|
+
case "Left":
|
|
564
571
|
return predicate(either.left) ? f(either.left) : failCause(cause)
|
|
565
|
-
|
|
566
|
-
case "Right": {
|
|
572
|
+
case "Right":
|
|
567
573
|
return failCause(either.right)
|
|
568
|
-
}
|
|
569
574
|
}
|
|
570
575
|
}))
|
|
571
576
|
|
|
572
577
|
/* @internal */
|
|
573
578
|
export const catchSome = dual<
|
|
574
|
-
<E,
|
|
575
|
-
pf: (e: E) => Option.Option<Effect.Effect<
|
|
576
|
-
) => <
|
|
577
|
-
<
|
|
578
|
-
self: Effect.Effect<
|
|
579
|
-
pf: (e: E) => Option.Option<Effect.Effect<
|
|
580
|
-
) => Effect.Effect<
|
|
581
|
-
>(2, <
|
|
582
|
-
self: Effect.Effect<
|
|
583
|
-
pf: (e: E) => Option.Option<Effect.Effect<
|
|
579
|
+
<E, A2, E2, R2>(
|
|
580
|
+
pf: (e: NoInfer<E>) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
581
|
+
) => <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A, E | E2, R2 | R>,
|
|
582
|
+
<A, E, R, A2, E2, R2>(
|
|
583
|
+
self: Effect.Effect<A, E, R>,
|
|
584
|
+
pf: (e: NoInfer<E>) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
585
|
+
) => Effect.Effect<A2 | A, E | E2, R2 | R>
|
|
586
|
+
>(2, <A, E, R, A2, E2, R2>(
|
|
587
|
+
self: Effect.Effect<A, E, R>,
|
|
588
|
+
pf: (e: NoInfer<E>) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
584
589
|
) =>
|
|
585
|
-
catchAllCause(self, (cause): Effect.Effect<
|
|
590
|
+
catchAllCause(self, (cause): Effect.Effect<A2 | A, E | E2, R2 | R> => {
|
|
586
591
|
const either = internalCause.failureOrCause(cause)
|
|
587
592
|
switch (either._tag) {
|
|
588
|
-
case "Left":
|
|
593
|
+
case "Left":
|
|
589
594
|
return pipe(pf(either.left), Option.getOrElse(() => failCause(cause)))
|
|
590
|
-
|
|
591
|
-
case "Right": {
|
|
595
|
+
case "Right":
|
|
592
596
|
return failCause(either.right)
|
|
593
|
-
}
|
|
594
597
|
}
|
|
595
598
|
}))
|
|
596
599
|
|
|
597
600
|
/* @internal */
|
|
598
|
-
export const checkInterruptible = <
|
|
599
|
-
f: (isInterruptible: boolean) => Effect.Effect<
|
|
600
|
-
): Effect.Effect<
|
|
601
|
-
withFiberRuntime<R, E, A>((_, status) => f(_runtimeFlags.interruption(status.runtimeFlags)))
|
|
601
|
+
export const checkInterruptible = <A, E, R>(
|
|
602
|
+
f: (isInterruptible: boolean) => Effect.Effect<A, E, R>
|
|
603
|
+
): Effect.Effect<A, E, R> => withFiberRuntime((_, status) => f(_runtimeFlags.interruption(status.runtimeFlags)))
|
|
602
604
|
|
|
603
605
|
const spanSymbol = Symbol.for("effect/SpanAnnotation")
|
|
604
606
|
const originalSymbol = Symbol.for("effect/OriginalAnnotation")
|
|
@@ -635,43 +637,43 @@ const capture = <E>(obj: E & object, span: Option.Option<Tracer.Span>): E => {
|
|
|
635
637
|
}
|
|
636
638
|
|
|
637
639
|
/* @internal */
|
|
638
|
-
export const die = (defect: unknown): Effect.Effect<never
|
|
640
|
+
export const die = (defect: unknown): Effect.Effect<never> =>
|
|
639
641
|
isObject(defect) && !(spanSymbol in defect) ?
|
|
640
642
|
withFiberRuntime((fiber) => failCause(internalCause.die(capture(defect, currentSpanFromFiber(fiber)))))
|
|
641
643
|
: failCause(internalCause.die(defect))
|
|
642
644
|
|
|
643
645
|
/* @internal */
|
|
644
|
-
export const dieMessage = (message: string): Effect.Effect<never
|
|
646
|
+
export const dieMessage = (message: string): Effect.Effect<never> =>
|
|
645
647
|
failCauseSync(() => internalCause.die(new RuntimeException(message)))
|
|
646
648
|
|
|
647
649
|
/* @internal */
|
|
648
|
-
export const dieSync = (evaluate: LazyArg<unknown>): Effect.Effect<never
|
|
650
|
+
export const dieSync = (evaluate: LazyArg<unknown>): Effect.Effect<never> => flatMap(sync(evaluate), die)
|
|
649
651
|
|
|
650
652
|
/* @internal */
|
|
651
|
-
export const either = <
|
|
653
|
+
export const either = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<Either.Either<E, A>, never, R> =>
|
|
652
654
|
matchEffect(self, {
|
|
653
655
|
onFailure: (e) => succeed(Either.left(e)),
|
|
654
656
|
onSuccess: (a) => succeed(Either.right(a))
|
|
655
657
|
})
|
|
656
658
|
|
|
657
659
|
/* @internal */
|
|
658
|
-
export const exit = <
|
|
660
|
+
export const exit = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<Exit.Exit<A, E>, never, R> =>
|
|
659
661
|
matchCause(self, {
|
|
660
662
|
onFailure: exitFailCause,
|
|
661
663
|
onSuccess: exitSucceed
|
|
662
664
|
})
|
|
663
665
|
|
|
664
666
|
/* @internal */
|
|
665
|
-
export const fail = <E>(error: E): Effect.Effect<never, E
|
|
667
|
+
export const fail = <E>(error: E): Effect.Effect<never, E> =>
|
|
666
668
|
isObject(error) && !(spanSymbol in error) ?
|
|
667
669
|
withFiberRuntime((fiber) => failCause(internalCause.fail(capture(error, currentSpanFromFiber(fiber)))))
|
|
668
670
|
: failCause(internalCause.fail(error))
|
|
669
671
|
|
|
670
672
|
/* @internal */
|
|
671
|
-
export const failSync = <E>(evaluate: LazyArg<E>): Effect.Effect<never, E
|
|
673
|
+
export const failSync = <E>(evaluate: LazyArg<E>): Effect.Effect<never, E> => flatMap(sync(evaluate), fail)
|
|
672
674
|
|
|
673
675
|
/* @internal */
|
|
674
|
-
export const failCause = <E>(cause: Cause.Cause<E>): Effect.Effect<never, E
|
|
676
|
+
export const failCause = <E>(cause: Cause.Cause<E>): Effect.Effect<never, E> => {
|
|
675
677
|
const effect = new EffectPrimitiveFailure(OpCodes.OP_FAILURE) as any
|
|
676
678
|
effect.i0 = cause
|
|
677
679
|
return effect
|
|
@@ -680,74 +682,71 @@ export const failCause = <E>(cause: Cause.Cause<E>): Effect.Effect<never, E, nev
|
|
|
680
682
|
/* @internal */
|
|
681
683
|
export const failCauseSync = <E>(
|
|
682
684
|
evaluate: LazyArg<Cause.Cause<E>>
|
|
683
|
-
): Effect.Effect<never, E
|
|
685
|
+
): Effect.Effect<never, E> => flatMap(sync(evaluate), failCause)
|
|
684
686
|
|
|
685
687
|
/* @internal */
|
|
686
|
-
export const fiberId: Effect.Effect<
|
|
687
|
-
state
|
|
688
|
-
) => succeed(state.id()))
|
|
688
|
+
export const fiberId: Effect.Effect<FiberId.FiberId> = withFiberRuntime((state) => succeed(state.id()))
|
|
689
689
|
|
|
690
690
|
/* @internal */
|
|
691
|
-
export const fiberIdWith = <
|
|
692
|
-
f: (descriptor: FiberId.Runtime) => Effect.Effect<
|
|
693
|
-
): Effect.Effect<
|
|
691
|
+
export const fiberIdWith = <A, E, R>(
|
|
692
|
+
f: (descriptor: FiberId.Runtime) => Effect.Effect<A, E, R>
|
|
693
|
+
): Effect.Effect<A, E, R> => withFiberRuntime((state) => f(state.id()))
|
|
694
694
|
|
|
695
695
|
/* @internal */
|
|
696
696
|
export const flatMap = dual<
|
|
697
|
-
<A,
|
|
698
|
-
f: (a: A) => Effect.Effect<
|
|
699
|
-
) => <
|
|
700
|
-
<
|
|
701
|
-
self: Effect.Effect<
|
|
702
|
-
f: (a: A) => Effect.Effect<
|
|
703
|
-
) => Effect.Effect<
|
|
704
|
-
>(
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
697
|
+
<A, B, E1, R1>(
|
|
698
|
+
f: (a: A) => Effect.Effect<B, E1, R1>
|
|
699
|
+
) => <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E1 | E, R1 | R>,
|
|
700
|
+
<A, E, R, B, E1, R1>(
|
|
701
|
+
self: Effect.Effect<A, E, R>,
|
|
702
|
+
f: (a: A) => Effect.Effect<B, E1, R1>
|
|
703
|
+
) => Effect.Effect<B, E | E1, R | R1>
|
|
704
|
+
>(
|
|
705
|
+
2,
|
|
706
|
+
(self, f) => {
|
|
707
|
+
internalize(f)
|
|
708
|
+
const effect = new EffectPrimitive(OpCodes.OP_ON_SUCCESS) as any
|
|
709
|
+
effect.i0 = self
|
|
710
|
+
effect.i1 = f
|
|
711
|
+
return effect
|
|
712
|
+
}
|
|
713
|
+
)
|
|
711
714
|
|
|
712
715
|
/* @internal */
|
|
713
|
-
export const andThen
|
|
714
|
-
|
|
715
|
-
<A
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
: [X] extends [Promise<infer A1>] ? Effect.Effect<R, E | Cause.UnknownException, A1>
|
|
742
|
-
: Effect.Effect<R, E, X>
|
|
743
|
-
}
|
|
744
|
-
>(2, (self, f) =>
|
|
716
|
+
export const andThen: {
|
|
717
|
+
<A, X>(
|
|
718
|
+
f: (a: NoInfer<A>) => X
|
|
719
|
+
): <E, R>(
|
|
720
|
+
self: Effect.Effect<A, E, R>
|
|
721
|
+
) => [X] extends [Effect.Effect<infer A1, infer E1, infer R1>] ? Effect.Effect<A1, E | E1, R | R1>
|
|
722
|
+
: [X] extends [Promise<infer A1>] ? Effect.Effect<A1, E | Cause.UnknownException, R>
|
|
723
|
+
: Effect.Effect<X, E, R>
|
|
724
|
+
<X>(
|
|
725
|
+
f: X
|
|
726
|
+
): <A, E, R>(
|
|
727
|
+
self: Effect.Effect<A, E, R>
|
|
728
|
+
) => [X] extends [Effect.Effect<infer A1, infer E1, infer R1>] ? Effect.Effect<A1, E | E1, R | R1>
|
|
729
|
+
: [X] extends [Promise<infer A1>] ? Effect.Effect<A1, E | Cause.UnknownException, R>
|
|
730
|
+
: Effect.Effect<X, E, R>
|
|
731
|
+
<A, R, E, X>(
|
|
732
|
+
self: Effect.Effect<A, E, R>,
|
|
733
|
+
f: (a: NoInfer<A>) => X
|
|
734
|
+
): [X] extends [Effect.Effect<infer A1, infer E1, infer R1>] ? Effect.Effect<A1, E | E1, R | R1>
|
|
735
|
+
: [X] extends [Promise<infer A1>] ? Effect.Effect<A1, E | Cause.UnknownException, R>
|
|
736
|
+
: Effect.Effect<X, E, R>
|
|
737
|
+
<A, R, E, X>(
|
|
738
|
+
self: Effect.Effect<A, E, R>,
|
|
739
|
+
f: X
|
|
740
|
+
): [X] extends [Effect.Effect<infer A1, infer E1, infer R1>] ? Effect.Effect<A1, E | E1, R | R1>
|
|
741
|
+
: [X] extends [Promise<infer A1>] ? Effect.Effect<A1, E | Cause.UnknownException, R>
|
|
742
|
+
: Effect.Effect<X, E, R>
|
|
743
|
+
} = dual(2, (self, f) =>
|
|
745
744
|
flatMap(self, (a) => {
|
|
746
745
|
const b = typeof f === "function" ? (f as any)(a) : f
|
|
747
746
|
if (isEffect(b)) {
|
|
748
747
|
return b
|
|
749
748
|
} else if (isPromise(b)) {
|
|
750
|
-
return async<
|
|
749
|
+
return async<any, Cause.UnknownException>((resume) => {
|
|
751
750
|
b.then((a) => resume(succeed(a))).catch((e) => resume(fail(new UnknownException(e))))
|
|
752
751
|
})
|
|
753
752
|
}
|
|
@@ -755,161 +754,187 @@ export const andThen = dual<
|
|
|
755
754
|
}))
|
|
756
755
|
|
|
757
756
|
/* @internal */
|
|
758
|
-
export const step = <
|
|
759
|
-
self: Effect.Effect<
|
|
760
|
-
): Effect.Effect<
|
|
757
|
+
export const step = <A, E, R>(
|
|
758
|
+
self: Effect.Effect<A, E, R>
|
|
759
|
+
): Effect.Effect<Exit.Exit<A, E> | Effect.Blocked<A, E>, never, R> => {
|
|
761
760
|
const effect = new EffectPrimitive("OnStep") as any
|
|
762
761
|
effect.i0 = self
|
|
763
762
|
return effect
|
|
764
763
|
}
|
|
765
764
|
|
|
766
765
|
/* @internal */
|
|
767
|
-
export const flatten = <
|
|
766
|
+
export const flatten = <A, E1, R1, E, R>(
|
|
767
|
+
self: Effect.Effect<Effect.Effect<A, E1, R1>, E, R>
|
|
768
|
+
): Effect.Effect<A, E | E1, R | R1> => flatMap(self, identity)
|
|
768
769
|
|
|
769
770
|
/* @internal */
|
|
770
|
-
export const flip = <
|
|
771
|
+
export const flip = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<E, A, R> =>
|
|
771
772
|
matchEffect(self, { onFailure: succeed, onSuccess: fail })
|
|
772
773
|
|
|
773
774
|
/* @internal */
|
|
774
|
-
export const matchCause
|
|
775
|
+
export const matchCause: {
|
|
775
776
|
<E, A2, A, A3>(
|
|
776
777
|
options: {
|
|
777
778
|
readonly onFailure: (cause: Cause.Cause<E>) => A2
|
|
778
779
|
readonly onSuccess: (a: A) => A3
|
|
779
780
|
}
|
|
780
|
-
)
|
|
781
|
-
<
|
|
782
|
-
self: Effect.Effect<
|
|
781
|
+
): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A3, never, R>
|
|
782
|
+
<A, E, R, A2, A3>(
|
|
783
|
+
self: Effect.Effect<A, E, R>,
|
|
783
784
|
options: {
|
|
784
785
|
readonly onFailure: (cause: Cause.Cause<E>) => A2
|
|
785
786
|
readonly onSuccess: (a: A) => A3
|
|
786
787
|
}
|
|
787
|
-
)
|
|
788
|
-
|
|
788
|
+
): Effect.Effect<A2 | A3, never, R>
|
|
789
|
+
} = dual(2, <A, E, R, A2, A3>(
|
|
790
|
+
self: Effect.Effect<A, E, R>,
|
|
791
|
+
options: {
|
|
792
|
+
readonly onFailure: (cause: Cause.Cause<E>) => A2
|
|
793
|
+
readonly onSuccess: (a: A) => A3
|
|
794
|
+
}
|
|
795
|
+
): Effect.Effect<A2 | A3, never, R> =>
|
|
789
796
|
matchCauseEffect(self, {
|
|
790
|
-
onFailure: (cause) => succeed(onFailure(cause)),
|
|
791
|
-
onSuccess: (a) => succeed(onSuccess(a))
|
|
797
|
+
onFailure: (cause) => succeed(options.onFailure(cause)),
|
|
798
|
+
onSuccess: (a) => succeed(options.onSuccess(a))
|
|
792
799
|
}))
|
|
793
800
|
|
|
794
801
|
/* @internal */
|
|
795
|
-
export const matchCauseEffect
|
|
796
|
-
<E,
|
|
802
|
+
export const matchCauseEffect: {
|
|
803
|
+
<E, A2, E2, R2, A, A3, E3, R3>(
|
|
797
804
|
options: {
|
|
798
|
-
readonly onFailure: (cause: Cause.Cause<E>) => Effect.Effect<
|
|
799
|
-
readonly onSuccess: (a: A) => Effect.Effect<
|
|
805
|
+
readonly onFailure: (cause: Cause.Cause<E>) => Effect.Effect<A2, E2, R2>
|
|
806
|
+
readonly onSuccess: (a: A) => Effect.Effect<A3, E3, R3>
|
|
800
807
|
}
|
|
801
|
-
)
|
|
802
|
-
<
|
|
803
|
-
self: Effect.Effect<
|
|
808
|
+
): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A3, E2 | E3, R2 | R3 | R>
|
|
809
|
+
<A, E, R, A2, E2, R2, A3, E3, R3>(
|
|
810
|
+
self: Effect.Effect<A, E, R>,
|
|
804
811
|
options: {
|
|
805
|
-
readonly onFailure: (cause: Cause.Cause<E>) => Effect.Effect<
|
|
806
|
-
readonly onSuccess: (a: A) => Effect.Effect<
|
|
812
|
+
readonly onFailure: (cause: Cause.Cause<E>) => Effect.Effect<A2, E2, R2>
|
|
813
|
+
readonly onSuccess: (a: A) => Effect.Effect<A3, E3, R3>
|
|
807
814
|
}
|
|
808
|
-
)
|
|
809
|
-
|
|
815
|
+
): Effect.Effect<A2 | A3, E2 | E3, R2 | R3 | R>
|
|
816
|
+
} = dual(2, <A, E, R, A2, E2, R2, A3, E3, R3>(
|
|
817
|
+
self: Effect.Effect<A, E, R>,
|
|
818
|
+
options: {
|
|
819
|
+
readonly onFailure: (cause: Cause.Cause<E>) => Effect.Effect<A2, E2, R2>
|
|
820
|
+
readonly onSuccess: (a: A) => Effect.Effect<A3, E3, R3>
|
|
821
|
+
}
|
|
822
|
+
): Effect.Effect<A2 | A3, E2 | E3, R2 | R3 | R> => {
|
|
810
823
|
const effect = new EffectPrimitive(OpCodes.OP_ON_SUCCESS_AND_FAILURE) as any
|
|
811
824
|
effect.i0 = self
|
|
812
|
-
effect.i1 = onFailure
|
|
813
|
-
effect.i2 = onSuccess
|
|
814
|
-
internalize(onFailure)
|
|
815
|
-
internalize(onSuccess)
|
|
825
|
+
effect.i1 = options.onFailure
|
|
826
|
+
effect.i2 = options.onSuccess
|
|
827
|
+
internalize(options.onFailure)
|
|
828
|
+
internalize(options.onSuccess)
|
|
816
829
|
return effect
|
|
817
830
|
})
|
|
818
831
|
|
|
819
832
|
/* @internal */
|
|
820
|
-
export const matchEffect
|
|
821
|
-
<E,
|
|
833
|
+
export const matchEffect: {
|
|
834
|
+
<E, A2, E2, R2, A, A3, E3, R3>(
|
|
822
835
|
options: {
|
|
823
|
-
readonly onFailure: (e: E) => Effect.Effect<
|
|
824
|
-
readonly onSuccess: (a: A) => Effect.Effect<
|
|
836
|
+
readonly onFailure: (e: E) => Effect.Effect<A2, E2, R2>
|
|
837
|
+
readonly onSuccess: (a: A) => Effect.Effect<A3, E3, R3>
|
|
825
838
|
}
|
|
826
|
-
)
|
|
827
|
-
<
|
|
828
|
-
self: Effect.Effect<
|
|
839
|
+
): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A3, E2 | E3, R2 | R3 | R>
|
|
840
|
+
<A, E, R, A2, E2, R2, A3, E3, R3>(
|
|
841
|
+
self: Effect.Effect<A, E, R>,
|
|
829
842
|
options: {
|
|
830
|
-
readonly onFailure: (e: E) => Effect.Effect<
|
|
831
|
-
readonly onSuccess: (a: A) => Effect.Effect<
|
|
843
|
+
readonly onFailure: (e: E) => Effect.Effect<A2, E2, R2>
|
|
844
|
+
readonly onSuccess: (a: A) => Effect.Effect<A3, E3, R3>
|
|
832
845
|
}
|
|
833
|
-
)
|
|
834
|
-
|
|
846
|
+
): Effect.Effect<A2 | A3, E2 | E3, R2 | R3 | R>
|
|
847
|
+
} = dual(2, <A, E, R, A2, E2, R2, A3, E3, R3>(
|
|
848
|
+
self: Effect.Effect<A, E, R>,
|
|
849
|
+
options: {
|
|
850
|
+
readonly onFailure: (e: E) => Effect.Effect<A2, E2, R2>
|
|
851
|
+
readonly onSuccess: (a: A) => Effect.Effect<A3, E3, R3>
|
|
852
|
+
}
|
|
853
|
+
): Effect.Effect<A2 | A3, E2 | E3, R2 | R3 | R> =>
|
|
835
854
|
matchCauseEffect(self, {
|
|
836
855
|
onFailure: (cause) => {
|
|
837
|
-
const failures = internalCause.failures(cause)
|
|
838
856
|
const defects = internalCause.defects(cause)
|
|
839
857
|
if (defects.length > 0) {
|
|
840
858
|
return failCause(internalCause.electFailures(cause))
|
|
841
859
|
}
|
|
860
|
+
const failures = internalCause.failures(cause)
|
|
842
861
|
if (failures.length > 0) {
|
|
843
|
-
return onFailure(Chunk.unsafeHead(failures))
|
|
862
|
+
return options.onFailure(Chunk.unsafeHead(failures))
|
|
844
863
|
}
|
|
845
864
|
return failCause(cause as Cause.Cause<never>)
|
|
846
865
|
},
|
|
847
|
-
onSuccess
|
|
866
|
+
onSuccess: options.onSuccess
|
|
848
867
|
}))
|
|
849
868
|
|
|
850
869
|
/* @internal */
|
|
851
|
-
export const forEachSequential
|
|
852
|
-
<A,
|
|
853
|
-
<A,
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
870
|
+
export const forEachSequential: {
|
|
871
|
+
<A, B, E, R>(f: (a: A, i: number) => Effect.Effect<B, E, R>): (self: Iterable<A>) => Effect.Effect<Array<B>, E, R>
|
|
872
|
+
<A, B, E, R>(self: Iterable<A>, f: (a: A, i: number) => Effect.Effect<B, E, R>): Effect.Effect<Array<B>, E, R>
|
|
873
|
+
} = dual(
|
|
874
|
+
2,
|
|
875
|
+
<A, B, E, R>(self: Iterable<A>, f: (a: A, i: number) => Effect.Effect<B, E, R>): Effect.Effect<Array<B>, E, R> =>
|
|
876
|
+
suspend(() => {
|
|
877
|
+
const arr = ReadonlyArray.fromIterable(self)
|
|
878
|
+
const ret = new Array(arr.length)
|
|
879
|
+
let i = 0
|
|
880
|
+
return as(
|
|
881
|
+
whileLoop({
|
|
882
|
+
while: () => i < arr.length,
|
|
883
|
+
body: () => f(arr[i], i),
|
|
884
|
+
step: (b) => {
|
|
885
|
+
ret[i++] = b
|
|
886
|
+
}
|
|
887
|
+
}),
|
|
888
|
+
ret
|
|
889
|
+
)
|
|
890
|
+
})
|
|
891
|
+
)
|
|
892
|
+
|
|
893
|
+
/* @internal */
|
|
894
|
+
export const forEachSequentialDiscard: {
|
|
895
|
+
<A, B, E, R>(f: (a: A, i: number) => Effect.Effect<B, E, R>): (self: Iterable<A>) => Effect.Effect<void, E, R>
|
|
896
|
+
<A, B, E, R>(self: Iterable<A>, f: (a: A, i: number) => Effect.Effect<B, E, R>): Effect.Effect<void, E, R>
|
|
897
|
+
} = dual(
|
|
898
|
+
2,
|
|
899
|
+
<A, B, E, R>(self: Iterable<A>, f: (a: A, i: number) => Effect.Effect<B, E, R>): Effect.Effect<void, E, R> =>
|
|
900
|
+
suspend(() => {
|
|
901
|
+
const arr = ReadonlyArray.fromIterable(self)
|
|
902
|
+
let i = 0
|
|
903
|
+
return whileLoop({
|
|
861
904
|
while: () => i < arr.length,
|
|
862
905
|
body: () => f(arr[i], i),
|
|
863
|
-
step: (
|
|
864
|
-
|
|
906
|
+
step: () => {
|
|
907
|
+
i++
|
|
865
908
|
}
|
|
866
|
-
})
|
|
867
|
-
ret
|
|
868
|
-
)
|
|
869
|
-
}))
|
|
870
|
-
|
|
871
|
-
/* @internal */
|
|
872
|
-
export const forEachSequentialDiscard = dual<
|
|
873
|
-
<A, R, E, B>(f: (a: A, i: number) => Effect.Effect<R, E, B>) => (self: Iterable<A>) => Effect.Effect<R, E, void>,
|
|
874
|
-
<A, R, E, B>(self: Iterable<A>, f: (a: A, i: number) => Effect.Effect<R, E, B>) => Effect.Effect<R, E, void>
|
|
875
|
-
>(2, (self, f) =>
|
|
876
|
-
suspend(() => {
|
|
877
|
-
const arr = ReadonlyArray.fromIterable(self)
|
|
878
|
-
let i = 0
|
|
879
|
-
return whileLoop({
|
|
880
|
-
while: () => i < arr.length,
|
|
881
|
-
body: () => f(arr[i], i),
|
|
882
|
-
step: () => {
|
|
883
|
-
i++
|
|
884
|
-
}
|
|
909
|
+
})
|
|
885
910
|
})
|
|
886
|
-
|
|
911
|
+
)
|
|
887
912
|
|
|
888
913
|
/* @internal */
|
|
889
914
|
export const if_ = dual<
|
|
890
|
-
<
|
|
915
|
+
<A1, E1, R1, A2, E2, R2>(
|
|
891
916
|
options: {
|
|
892
|
-
readonly onTrue: Effect.Effect<
|
|
893
|
-
readonly onFalse: Effect.Effect<
|
|
917
|
+
readonly onTrue: Effect.Effect<A1, E1, R1>
|
|
918
|
+
readonly onFalse: Effect.Effect<A2, E2, R2>
|
|
894
919
|
}
|
|
895
|
-
) => <
|
|
896
|
-
self: Effect.Effect<
|
|
897
|
-
) => Effect.Effect<
|
|
920
|
+
) => <E = never, R = never>(
|
|
921
|
+
self: Effect.Effect<boolean, E, R> | boolean
|
|
922
|
+
) => Effect.Effect<A1 | A2, E | E1 | E2, R | R1 | R2>,
|
|
898
923
|
{
|
|
899
|
-
<
|
|
924
|
+
<A1, E1, R1, A2, E2, R2>(
|
|
900
925
|
self: boolean,
|
|
901
926
|
options: {
|
|
902
|
-
readonly onTrue: Effect.Effect<
|
|
903
|
-
readonly onFalse: Effect.Effect<
|
|
927
|
+
readonly onTrue: Effect.Effect<A1, E1, R1>
|
|
928
|
+
readonly onFalse: Effect.Effect<A2, E2, R2>
|
|
904
929
|
}
|
|
905
|
-
): Effect.Effect<
|
|
906
|
-
<R,
|
|
907
|
-
self: Effect.Effect<
|
|
930
|
+
): Effect.Effect<A1 | A2, E1 | E2, R1 | R2>
|
|
931
|
+
<E, R, A1, E1, R1, A2, E2, R2>(
|
|
932
|
+
self: Effect.Effect<boolean, E, R>,
|
|
908
933
|
options: {
|
|
909
|
-
readonly onTrue: Effect.Effect<
|
|
910
|
-
readonly onFalse: Effect.Effect<
|
|
934
|
+
readonly onTrue: Effect.Effect<A1, E1, R1>
|
|
935
|
+
readonly onFalse: Effect.Effect<A2, E2, R2>
|
|
911
936
|
}
|
|
912
|
-
): Effect.Effect<
|
|
937
|
+
): Effect.Effect<A1 | A2, E1 | E2 | E, R1 | R2 | R>
|
|
913
938
|
}
|
|
914
939
|
>(
|
|
915
940
|
(args) => typeof args[0] === "boolean" || isEffect(args[0]),
|
|
@@ -920,14 +945,14 @@ export const if_ = dual<
|
|
|
920
945
|
)
|
|
921
946
|
|
|
922
947
|
/* @internal */
|
|
923
|
-
export const interrupt: Effect.Effect<never
|
|
948
|
+
export const interrupt: Effect.Effect<never> = flatMap(fiberId, (fiberId) => interruptWith(fiberId))
|
|
924
949
|
|
|
925
950
|
/* @internal */
|
|
926
|
-
export const interruptWith = (fiberId: FiberId.FiberId): Effect.Effect<never
|
|
951
|
+
export const interruptWith = (fiberId: FiberId.FiberId): Effect.Effect<never> =>
|
|
927
952
|
failCause(internalCause.interrupt(fiberId))
|
|
928
953
|
|
|
929
954
|
/* @internal */
|
|
930
|
-
export const interruptible = <
|
|
955
|
+
export const interruptible = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> => {
|
|
931
956
|
const effect = new EffectPrimitive(OpCodes.OP_UPDATE_RUNTIME_FLAGS) as any
|
|
932
957
|
effect.i0 = RuntimeFlagsPatch.enable(_runtimeFlags.Interruption)
|
|
933
958
|
effect.i1 = () => self
|
|
@@ -935,9 +960,9 @@ export const interruptible = <R, E, A>(self: Effect.Effect<R, E, A>): Effect.Eff
|
|
|
935
960
|
}
|
|
936
961
|
|
|
937
962
|
/* @internal */
|
|
938
|
-
export const interruptibleMask = <
|
|
939
|
-
f: (restore: <
|
|
940
|
-
): Effect.Effect<
|
|
963
|
+
export const interruptibleMask = <A, E, R>(
|
|
964
|
+
f: (restore: <AX, EX, RX>(effect: Effect.Effect<AX, EX, RX>) => Effect.Effect<AX, EX, RX>) => Effect.Effect<A, E, R>
|
|
965
|
+
): Effect.Effect<A, E, R> => {
|
|
941
966
|
internalize(f)
|
|
942
967
|
const effect = new EffectPrimitive(OpCodes.OP_UPDATE_RUNTIME_FLAGS) as any
|
|
943
968
|
effect.i0 = RuntimeFlagsPatch.enable(_runtimeFlags.Interruption)
|
|
@@ -949,79 +974,98 @@ export const interruptibleMask = <R, E, A>(
|
|
|
949
974
|
}
|
|
950
975
|
|
|
951
976
|
/* @internal */
|
|
952
|
-
export const intoDeferred
|
|
953
|
-
<
|
|
954
|
-
<
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
(
|
|
977
|
+
export const intoDeferred: {
|
|
978
|
+
<A, E>(deferred: Deferred.Deferred<A, E>): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<boolean, never, R>
|
|
979
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, deferred: Deferred.Deferred<A, E>): Effect.Effect<boolean, never, R>
|
|
980
|
+
} = dual(
|
|
981
|
+
2,
|
|
982
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, deferred: Deferred.Deferred<A, E>): Effect.Effect<boolean, never, R> =>
|
|
983
|
+
uninterruptibleMask((restore) =>
|
|
984
|
+
flatMap(
|
|
985
|
+
exit(restore(self)),
|
|
986
|
+
(exit) => deferredDone(deferred, exit)
|
|
987
|
+
)
|
|
960
988
|
)
|
|
961
|
-
|
|
989
|
+
)
|
|
962
990
|
|
|
963
991
|
/* @internal */
|
|
964
|
-
export const map
|
|
965
|
-
<A, B>(f: (a: A) => B)
|
|
966
|
-
<
|
|
967
|
-
|
|
992
|
+
export const map: {
|
|
993
|
+
<A, B>(f: (a: A) => B): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E, R>
|
|
994
|
+
<A, E, R, B>(self: Effect.Effect<A, E, R>, f: (a: A) => B): Effect.Effect<B, E, R>
|
|
995
|
+
} = dual(
|
|
996
|
+
2,
|
|
997
|
+
<A, E, R, B>(self: Effect.Effect<A, E, R>, f: (a: A) => B): Effect.Effect<B, E, R> =>
|
|
998
|
+
flatMap(self, (a) => sync(() => f(a)))
|
|
999
|
+
)
|
|
968
1000
|
|
|
969
1001
|
/* @internal */
|
|
970
|
-
export const mapBoth
|
|
971
|
-
<E,
|
|
1002
|
+
export const mapBoth: {
|
|
1003
|
+
<E, E2, A, A2>(
|
|
972
1004
|
options: { readonly onFailure: (e: E) => E2; readonly onSuccess: (a: A) => A2 }
|
|
973
|
-
)
|
|
974
|
-
<
|
|
975
|
-
self: Effect.Effect<
|
|
1005
|
+
): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2, E2, R>
|
|
1006
|
+
<A, E, R, E2, A2>(
|
|
1007
|
+
self: Effect.Effect<A, E, R>,
|
|
976
1008
|
options: { readonly onFailure: (e: E) => E2; readonly onSuccess: (a: A) => A2 }
|
|
977
|
-
)
|
|
978
|
-
|
|
1009
|
+
): Effect.Effect<A2, E2, R>
|
|
1010
|
+
} = dual(2, <A, E, R, E2, A2>(
|
|
1011
|
+
self: Effect.Effect<A, E, R>,
|
|
1012
|
+
options: { readonly onFailure: (e: E) => E2; readonly onSuccess: (a: A) => A2 }
|
|
1013
|
+
): Effect.Effect<A2, E2, R> =>
|
|
979
1014
|
matchEffect(self, {
|
|
980
|
-
onFailure: (e) => failSync(() => onFailure(e)),
|
|
981
|
-
onSuccess: (a) => sync(() => onSuccess(a))
|
|
1015
|
+
onFailure: (e) => failSync(() => options.onFailure(e)),
|
|
1016
|
+
onSuccess: (a) => sync(() => options.onSuccess(a))
|
|
982
1017
|
}))
|
|
983
1018
|
|
|
984
1019
|
/* @internal */
|
|
985
|
-
export const mapError
|
|
986
|
-
<E, E2>(f: (e: E) => E2)
|
|
987
|
-
<
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
1020
|
+
export const mapError: {
|
|
1021
|
+
<E, E2>(f: (e: E) => E2): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E2, R>
|
|
1022
|
+
<A, E, R, E2>(self: Effect.Effect<A, E, R>, f: (e: E) => E2): Effect.Effect<A, E2, R>
|
|
1023
|
+
} = dual(
|
|
1024
|
+
2,
|
|
1025
|
+
<A, E, R, E2>(self: Effect.Effect<A, E, R>, f: (e: E) => E2): Effect.Effect<A, E2, R> =>
|
|
1026
|
+
matchCauseEffect(self, {
|
|
1027
|
+
onFailure: (cause) => {
|
|
1028
|
+
const either = internalCause.failureOrCause(cause)
|
|
1029
|
+
switch (either._tag) {
|
|
1030
|
+
case "Left": {
|
|
1031
|
+
return failSync(() => f(either.left))
|
|
1032
|
+
}
|
|
1033
|
+
case "Right": {
|
|
1034
|
+
return failCause(either.right)
|
|
1035
|
+
}
|
|
998
1036
|
}
|
|
999
|
-
}
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1037
|
+
},
|
|
1038
|
+
onSuccess: succeed
|
|
1039
|
+
})
|
|
1040
|
+
)
|
|
1003
1041
|
|
|
1004
1042
|
/* @internal */
|
|
1005
|
-
export const onError
|
|
1006
|
-
<E,
|
|
1007
|
-
cleanup: (cause: Cause.Cause<E>) => Effect.Effect<
|
|
1008
|
-
)
|
|
1009
|
-
<
|
|
1010
|
-
self: Effect.Effect<
|
|
1011
|
-
cleanup: (cause: Cause.Cause<E>) => Effect.Effect<
|
|
1012
|
-
)
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
<
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1043
|
+
export const onError: {
|
|
1044
|
+
<E, X, R2>(
|
|
1045
|
+
cleanup: (cause: Cause.Cause<E>) => Effect.Effect<X, never, R2>
|
|
1046
|
+
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R2 | R>
|
|
1047
|
+
<A, E, R, X, R2>(
|
|
1048
|
+
self: Effect.Effect<A, E, R>,
|
|
1049
|
+
cleanup: (cause: Cause.Cause<E>) => Effect.Effect<X, never, R2>
|
|
1050
|
+
): Effect.Effect<A, E, R2 | R>
|
|
1051
|
+
} = dual(2, <A, E, R, X, R2>(
|
|
1052
|
+
self: Effect.Effect<A, E, R>,
|
|
1053
|
+
cleanup: (cause: Cause.Cause<E>) => Effect.Effect<X, never, R2>
|
|
1054
|
+
): Effect.Effect<A, E, R2 | R> => onExit(self, unified((exit) => exitIsSuccess(exit) ? unit : cleanup(exit.i0))))
|
|
1055
|
+
|
|
1056
|
+
/* @internal */
|
|
1057
|
+
export const onExit: {
|
|
1058
|
+
<A, E, X, R2>(
|
|
1059
|
+
cleanup: (exit: Exit.Exit<A, E>) => Effect.Effect<X, never, R2>
|
|
1060
|
+
): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R2 | R>
|
|
1061
|
+
<A, E, R, X, R2>(
|
|
1062
|
+
self: Effect.Effect<A, E, R>,
|
|
1063
|
+
cleanup: (exit: Exit.Exit<A, E>) => Effect.Effect<X, never, R2>
|
|
1064
|
+
): Effect.Effect<A, E, R2 | R>
|
|
1065
|
+
} = dual(2, <A, E, R, X, R2>(
|
|
1066
|
+
self: Effect.Effect<A, E, R>,
|
|
1067
|
+
cleanup: (exit: Exit.Exit<A, E>) => Effect.Effect<X, never, R2>
|
|
1068
|
+
): Effect.Effect<A, E, R2 | R> =>
|
|
1025
1069
|
uninterruptibleMask((restore) =>
|
|
1026
1070
|
matchCauseEffect(restore(self), {
|
|
1027
1071
|
onFailure: (cause1) => {
|
|
@@ -1039,15 +1083,18 @@ export const onExit = dual<
|
|
|
1039
1083
|
))
|
|
1040
1084
|
|
|
1041
1085
|
/* @internal */
|
|
1042
|
-
export const onInterrupt
|
|
1043
|
-
<
|
|
1044
|
-
cleanup: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<
|
|
1045
|
-
)
|
|
1046
|
-
<
|
|
1047
|
-
self: Effect.Effect<
|
|
1048
|
-
cleanup: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<
|
|
1049
|
-
)
|
|
1050
|
-
|
|
1086
|
+
export const onInterrupt: {
|
|
1087
|
+
<X, R2>(
|
|
1088
|
+
cleanup: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<X, never, R2>
|
|
1089
|
+
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R2 | R>
|
|
1090
|
+
<A, E, R, X, R2>(
|
|
1091
|
+
self: Effect.Effect<A, E, R>,
|
|
1092
|
+
cleanup: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<X, never, R2>
|
|
1093
|
+
): Effect.Effect<A, E, R2 | R>
|
|
1094
|
+
} = dual(2, <A, E, R, X, R2>(
|
|
1095
|
+
self: Effect.Effect<A, E, R>,
|
|
1096
|
+
cleanup: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<X, never, R2>
|
|
1097
|
+
): Effect.Effect<A, E, R2 | R> =>
|
|
1051
1098
|
onExit(
|
|
1052
1099
|
self,
|
|
1053
1100
|
exitMatch({
|
|
@@ -1060,28 +1107,37 @@ export const onInterrupt = dual<
|
|
|
1060
1107
|
))
|
|
1061
1108
|
|
|
1062
1109
|
/* @internal */
|
|
1063
|
-
export const orElse
|
|
1064
|
-
<
|
|
1065
|
-
that: LazyArg<Effect.Effect<
|
|
1066
|
-
)
|
|
1067
|
-
<
|
|
1068
|
-
self: Effect.Effect<
|
|
1069
|
-
that: LazyArg<Effect.Effect<
|
|
1070
|
-
)
|
|
1071
|
-
|
|
1110
|
+
export const orElse: {
|
|
1111
|
+
<A2, E2, R2>(
|
|
1112
|
+
that: LazyArg<Effect.Effect<A2, E2, R2>>
|
|
1113
|
+
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A, E2, R2 | R>
|
|
1114
|
+
<A, E, R, A2, E2, R2>(
|
|
1115
|
+
self: Effect.Effect<A, E, R>,
|
|
1116
|
+
that: LazyArg<Effect.Effect<A2, E2, R2>>
|
|
1117
|
+
): Effect.Effect<A2 | A, E2, R2 | R>
|
|
1118
|
+
} = dual(
|
|
1119
|
+
2,
|
|
1120
|
+
<A, E, R, A2, E2, R2>(
|
|
1121
|
+
self: Effect.Effect<A, E, R>,
|
|
1122
|
+
that: LazyArg<Effect.Effect<A2, E2, R2>>
|
|
1123
|
+
): Effect.Effect<A2 | A, E2, R2 | R> => attemptOrElse(self, that, succeed)
|
|
1124
|
+
)
|
|
1072
1125
|
|
|
1073
1126
|
/* @internal */
|
|
1074
|
-
export const orDie = <
|
|
1127
|
+
export const orDie = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, never, R> => orDieWith(self, identity)
|
|
1075
1128
|
|
|
1076
1129
|
/* @internal */
|
|
1077
|
-
export const orDieWith
|
|
1078
|
-
<E>(f: (error: E) => unknown)
|
|
1079
|
-
<
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1130
|
+
export const orDieWith: {
|
|
1131
|
+
<E>(f: (error: E) => unknown): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, never, R>
|
|
1132
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, f: (error: E) => unknown): Effect.Effect<A, never, R>
|
|
1133
|
+
} = dual(
|
|
1134
|
+
2,
|
|
1135
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, f: (error: E) => unknown): Effect.Effect<A, never, R> =>
|
|
1136
|
+
matchEffect(self, {
|
|
1137
|
+
onFailure: (e) => die(f(e)),
|
|
1138
|
+
onSuccess: succeed
|
|
1139
|
+
})
|
|
1140
|
+
)
|
|
1085
1141
|
|
|
1086
1142
|
/* @internal */
|
|
1087
1143
|
export const partitionMap = <A, A1, A2>(
|
|
@@ -1104,25 +1160,23 @@ export const partitionMap = <A, A1, A2>(
|
|
|
1104
1160
|
)
|
|
1105
1161
|
|
|
1106
1162
|
/* @internal */
|
|
1107
|
-
export const runtimeFlags: Effect.Effect<
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
RuntimeFlags.RuntimeFlags
|
|
1111
|
-
>((_, status) => succeed(status.runtimeFlags))
|
|
1163
|
+
export const runtimeFlags: Effect.Effect<RuntimeFlags.RuntimeFlags> = withFiberRuntime((_, status) =>
|
|
1164
|
+
succeed(status.runtimeFlags)
|
|
1165
|
+
)
|
|
1112
1166
|
|
|
1113
1167
|
/* @internal */
|
|
1114
|
-
export const succeed = <A>(value: A): Effect.Effect<
|
|
1168
|
+
export const succeed = <A>(value: A): Effect.Effect<A> => {
|
|
1115
1169
|
const effect = new EffectPrimitiveSuccess(OpCodes.OP_SUCCESS) as any
|
|
1116
1170
|
effect.i0 = value
|
|
1117
1171
|
return effect
|
|
1118
1172
|
}
|
|
1119
1173
|
|
|
1120
1174
|
/* @internal */
|
|
1121
|
-
export const suspend = <
|
|
1175
|
+
export const suspend = <A, E, R>(effect: LazyArg<Effect.Effect<A, E, R>>): Effect.Effect<A, E, R> =>
|
|
1122
1176
|
flatMap(sync(effect), identity)
|
|
1123
1177
|
|
|
1124
1178
|
/* @internal */
|
|
1125
|
-
export const sync = <A>(evaluate: LazyArg<A>): Effect.Effect<
|
|
1179
|
+
export const sync = <A>(evaluate: LazyArg<A>): Effect.Effect<A> => {
|
|
1126
1180
|
internalize(evaluate)
|
|
1127
1181
|
const effect = new EffectPrimitive(OpCodes.OP_SYNC) as any
|
|
1128
1182
|
effect.i0 = evaluate
|
|
@@ -1134,32 +1188,32 @@ export const tap = dual<
|
|
|
1134
1188
|
{
|
|
1135
1189
|
<A, X>(
|
|
1136
1190
|
f: (a: NoInfer<A>) => X
|
|
1137
|
-
): <
|
|
1138
|
-
self: Effect.Effect<
|
|
1139
|
-
) => [X] extends [Effect.Effect<infer
|
|
1140
|
-
: [X] extends [Promise<infer _A1>] ? Effect.Effect<
|
|
1141
|
-
: Effect.Effect<
|
|
1191
|
+
): <E, R>(
|
|
1192
|
+
self: Effect.Effect<A, E, R>
|
|
1193
|
+
) => [X] extends [Effect.Effect<infer _A1, infer E1, infer R1>] ? Effect.Effect<A, E | E1, R | R1>
|
|
1194
|
+
: [X] extends [Promise<infer _A1>] ? Effect.Effect<A, E | Cause.UnknownException, R>
|
|
1195
|
+
: Effect.Effect<A, E, R>
|
|
1142
1196
|
<X>(
|
|
1143
1197
|
f: X
|
|
1144
|
-
): <
|
|
1145
|
-
self: Effect.Effect<
|
|
1146
|
-
) => [X] extends [Effect.Effect<infer
|
|
1147
|
-
: [X] extends [Promise<infer _A1>] ? Effect.Effect<
|
|
1148
|
-
: Effect.Effect<
|
|
1198
|
+
): <A, E, R>(
|
|
1199
|
+
self: Effect.Effect<A, E, R>
|
|
1200
|
+
) => [X] extends [Effect.Effect<infer _A1, infer E1, infer R1>] ? Effect.Effect<A, E | E1, R | R1>
|
|
1201
|
+
: [X] extends [Promise<infer _A1>] ? Effect.Effect<A, E | Cause.UnknownException, R>
|
|
1202
|
+
: Effect.Effect<A, E, R>
|
|
1149
1203
|
},
|
|
1150
1204
|
{
|
|
1151
|
-
<A,
|
|
1152
|
-
self: Effect.Effect<
|
|
1205
|
+
<A, E, R, X>(
|
|
1206
|
+
self: Effect.Effect<A, E, R>,
|
|
1153
1207
|
f: (a: NoInfer<A>) => X
|
|
1154
|
-
): [X] extends [Effect.Effect<infer
|
|
1155
|
-
: [X] extends [Promise<infer _A1>] ? Effect.Effect<
|
|
1156
|
-
: Effect.Effect<
|
|
1157
|
-
<A,
|
|
1158
|
-
self: Effect.Effect<
|
|
1208
|
+
): [X] extends [Effect.Effect<infer _A1, infer E1, infer R1>] ? Effect.Effect<A, E | E1, R | R1>
|
|
1209
|
+
: [X] extends [Promise<infer _A1>] ? Effect.Effect<A, E | Cause.UnknownException, R>
|
|
1210
|
+
: Effect.Effect<A, E, R>
|
|
1211
|
+
<A, E, R, X>(
|
|
1212
|
+
self: Effect.Effect<A, E, R>,
|
|
1159
1213
|
f: X
|
|
1160
|
-
): [X] extends [Effect.Effect<infer
|
|
1161
|
-
: [X] extends [Promise<infer _A1>] ? Effect.Effect<
|
|
1162
|
-
: Effect.Effect<
|
|
1214
|
+
): [X] extends [Effect.Effect<infer _A1, infer E1, infer R1>] ? Effect.Effect<A, E | E1, R | R1>
|
|
1215
|
+
: [X] extends [Promise<infer _A1>] ? Effect.Effect<A, E | Cause.UnknownException, R>
|
|
1216
|
+
: Effect.Effect<A, E, R>
|
|
1163
1217
|
}
|
|
1164
1218
|
>(2, (self, f) =>
|
|
1165
1219
|
flatMap(self, (a) => {
|
|
@@ -1167,7 +1221,7 @@ export const tap = dual<
|
|
|
1167
1221
|
if (isEffect(b)) {
|
|
1168
1222
|
return as(b, a)
|
|
1169
1223
|
} else if (isPromise(b)) {
|
|
1170
|
-
return async<
|
|
1224
|
+
return async<any, Cause.UnknownException>((resume) => {
|
|
1171
1225
|
b.then((_) => resume(succeed(a))).catch((e) => resume(fail(new UnknownException(e))))
|
|
1172
1226
|
})
|
|
1173
1227
|
}
|
|
@@ -1175,27 +1229,31 @@ export const tap = dual<
|
|
|
1175
1229
|
}))
|
|
1176
1230
|
|
|
1177
1231
|
/* @internal */
|
|
1178
|
-
export const transplant = <
|
|
1179
|
-
f: (grafter: <
|
|
1180
|
-
): Effect.Effect<
|
|
1181
|
-
withFiberRuntime<
|
|
1232
|
+
export const transplant = <A, E, R>(
|
|
1233
|
+
f: (grafter: <A2, E2, R2>(effect: Effect.Effect<A2, E2, R2>) => Effect.Effect<A2, E2, R2>) => Effect.Effect<A, E, R>
|
|
1234
|
+
): Effect.Effect<A, E, R> =>
|
|
1235
|
+
withFiberRuntime<A, E, R>((state) => {
|
|
1182
1236
|
const scopeOverride = state.getFiberRef(currentForkScopeOverride)
|
|
1183
1237
|
const scope = pipe(scopeOverride, Option.getOrElse(() => state.scope()))
|
|
1184
1238
|
return f(fiberRefLocally(currentForkScopeOverride, Option.some(scope)))
|
|
1185
1239
|
})
|
|
1186
1240
|
|
|
1187
1241
|
/* @internal */
|
|
1188
|
-
export const attemptOrElse
|
|
1189
|
-
<
|
|
1190
|
-
that: LazyArg<Effect.Effect<
|
|
1191
|
-
onSuccess: (a: A) => Effect.Effect<
|
|
1192
|
-
)
|
|
1193
|
-
<
|
|
1194
|
-
self: Effect.Effect<
|
|
1195
|
-
that: LazyArg<Effect.Effect<
|
|
1196
|
-
onSuccess: (a: A) => Effect.Effect<
|
|
1197
|
-
)
|
|
1198
|
-
|
|
1242
|
+
export const attemptOrElse: {
|
|
1243
|
+
<A2, E2, R2, A, A3, E3, R3>(
|
|
1244
|
+
that: LazyArg<Effect.Effect<A2, E2, R2>>,
|
|
1245
|
+
onSuccess: (a: A) => Effect.Effect<A3, E3, R3>
|
|
1246
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A3, E2 | E3, R | R2 | R3>
|
|
1247
|
+
<A, E, R, A2, E2, R2, A3, E3, R3>(
|
|
1248
|
+
self: Effect.Effect<A, E, R>,
|
|
1249
|
+
that: LazyArg<Effect.Effect<A2, E2, R2>>,
|
|
1250
|
+
onSuccess: (a: A) => Effect.Effect<A3, E3, R3>
|
|
1251
|
+
): Effect.Effect<A2 | A3, E2 | E3, R | R2 | R3>
|
|
1252
|
+
} = dual(3, <A, E, R, A2, E2, R2, A3, E3, R3>(
|
|
1253
|
+
self: Effect.Effect<A, E, R>,
|
|
1254
|
+
that: LazyArg<Effect.Effect<A2, E2, R2>>,
|
|
1255
|
+
onSuccess: (a: A) => Effect.Effect<A3, E3, R3>
|
|
1256
|
+
): Effect.Effect<A2 | A3, E2 | E3, R | R2 | R3> =>
|
|
1199
1257
|
matchCauseEffect(self, {
|
|
1200
1258
|
onFailure: (cause) => {
|
|
1201
1259
|
const defects = internalCause.defects(cause)
|
|
@@ -1208,9 +1266,9 @@ export const attemptOrElse = dual<
|
|
|
1208
1266
|
}))
|
|
1209
1267
|
|
|
1210
1268
|
/* @internal */
|
|
1211
|
-
export const uninterruptible: <
|
|
1212
|
-
self: Effect.Effect<
|
|
1213
|
-
): Effect.Effect<
|
|
1269
|
+
export const uninterruptible: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R> = <A, E, R>(
|
|
1270
|
+
self: Effect.Effect<A, E, R>
|
|
1271
|
+
): Effect.Effect<A, E, R> => {
|
|
1214
1272
|
const effect = new EffectPrimitive(OpCodes.OP_UPDATE_RUNTIME_FLAGS) as any
|
|
1215
1273
|
effect.i0 = RuntimeFlagsPatch.disable(_runtimeFlags.Interruption)
|
|
1216
1274
|
effect.i1 = () => self
|
|
@@ -1218,9 +1276,9 @@ export const uninterruptible: <R, E, A>(self: Effect.Effect<R, E, A>) => Effect.
|
|
|
1218
1276
|
}
|
|
1219
1277
|
|
|
1220
1278
|
/* @internal */
|
|
1221
|
-
export const uninterruptibleMask = <
|
|
1222
|
-
f: (restore: <
|
|
1223
|
-
): Effect.Effect<
|
|
1279
|
+
export const uninterruptibleMask = <A, E, R>(
|
|
1280
|
+
f: (restore: <AX, EX, RX>(effect: Effect.Effect<AX, EX, RX>) => Effect.Effect<AX, EX, RX>) => Effect.Effect<A, E, R>
|
|
1281
|
+
): Effect.Effect<A, E, R> => {
|
|
1224
1282
|
internalize(f)
|
|
1225
1283
|
const effect = new EffectPrimitive(OpCodes.OP_UPDATE_RUNTIME_FLAGS) as any
|
|
1226
1284
|
effect.i0 = RuntimeFlagsPatch.disable(_runtimeFlags.Interruption)
|
|
@@ -1232,10 +1290,10 @@ export const uninterruptibleMask = <R, E, A>(
|
|
|
1232
1290
|
}
|
|
1233
1291
|
|
|
1234
1292
|
/* @internal */
|
|
1235
|
-
export const unit: Effect.Effect<
|
|
1293
|
+
export const unit: Effect.Effect<void> = succeed(void 0)
|
|
1236
1294
|
|
|
1237
1295
|
/* @internal */
|
|
1238
|
-
export const updateRuntimeFlags = (patch: RuntimeFlagsPatch.RuntimeFlagsPatch): Effect.Effect<
|
|
1296
|
+
export const updateRuntimeFlags = (patch: RuntimeFlagsPatch.RuntimeFlagsPatch): Effect.Effect<void> => {
|
|
1239
1297
|
const effect = new EffectPrimitive(OpCodes.OP_UPDATE_RUNTIME_FLAGS) as any
|
|
1240
1298
|
effect.i0 = patch
|
|
1241
1299
|
effect.i1 = void 0
|
|
@@ -1243,17 +1301,20 @@ export const updateRuntimeFlags = (patch: RuntimeFlagsPatch.RuntimeFlagsPatch):
|
|
|
1243
1301
|
}
|
|
1244
1302
|
|
|
1245
1303
|
/* @internal */
|
|
1246
|
-
export const whenEffect
|
|
1247
|
-
<
|
|
1248
|
-
condition: Effect.Effect<
|
|
1249
|
-
)
|
|
1250
|
-
effect: Effect.Effect<
|
|
1251
|
-
) => Effect.Effect<
|
|
1252
|
-
<
|
|
1253
|
-
self: Effect.Effect<
|
|
1254
|
-
condition: Effect.Effect<
|
|
1255
|
-
)
|
|
1256
|
-
|
|
1304
|
+
export const whenEffect: {
|
|
1305
|
+
<E, R>(
|
|
1306
|
+
condition: Effect.Effect<boolean, E, R>
|
|
1307
|
+
): <A, E2, R2>(
|
|
1308
|
+
effect: Effect.Effect<A, E2, R2>
|
|
1309
|
+
) => Effect.Effect<Option.Option<A>, E | E2, R | R2>
|
|
1310
|
+
<A, E2, R2, E, R>(
|
|
1311
|
+
self: Effect.Effect<A, E2, R2>,
|
|
1312
|
+
condition: Effect.Effect<boolean, E, R>
|
|
1313
|
+
): Effect.Effect<Option.Option<A>, E | E2, R | R2>
|
|
1314
|
+
} = dual(2, <A, E2, R2, E, R>(
|
|
1315
|
+
self: Effect.Effect<A, E2, R2>,
|
|
1316
|
+
condition: Effect.Effect<boolean, E, R>
|
|
1317
|
+
): Effect.Effect<Option.Option<A>, E | E2, R | R2> =>
|
|
1257
1318
|
flatMap(condition, (b) => {
|
|
1258
1319
|
if (b) {
|
|
1259
1320
|
return pipe(self, map(Option.some))
|
|
@@ -1262,13 +1323,13 @@ export const whenEffect = dual<
|
|
|
1262
1323
|
}))
|
|
1263
1324
|
|
|
1264
1325
|
/* @internal */
|
|
1265
|
-
export const whileLoop = <
|
|
1326
|
+
export const whileLoop = <A, E, R>(
|
|
1266
1327
|
options: {
|
|
1267
1328
|
readonly while: LazyArg<boolean>
|
|
1268
|
-
readonly body: LazyArg<Effect.Effect<
|
|
1329
|
+
readonly body: LazyArg<Effect.Effect<A, E, R>>
|
|
1269
1330
|
readonly step: (a: A) => void
|
|
1270
1331
|
}
|
|
1271
|
-
): Effect.Effect<
|
|
1332
|
+
): Effect.Effect<void, E, R> => {
|
|
1272
1333
|
const effect = new EffectPrimitive(OpCodes.OP_WHILE) as any
|
|
1273
1334
|
effect.i0 = options.while
|
|
1274
1335
|
effect.i1 = options.body
|
|
@@ -1281,20 +1342,20 @@ export const whileLoop = <R, E, A>(
|
|
|
1281
1342
|
|
|
1282
1343
|
/* @internal */
|
|
1283
1344
|
export const withConcurrency = dual<
|
|
1284
|
-
(concurrency: number | "unbounded") => <
|
|
1285
|
-
<
|
|
1345
|
+
(concurrency: number | "unbounded") => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
1346
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, concurrency: number | "unbounded") => Effect.Effect<A, E, R>
|
|
1286
1347
|
>(2, (self, concurrency) => fiberRefLocally(self, currentConcurrency, concurrency))
|
|
1287
1348
|
|
|
1288
1349
|
/* @internal */
|
|
1289
1350
|
export const withRequestBatching = dual<
|
|
1290
|
-
(requestBatching: boolean) => <
|
|
1291
|
-
<
|
|
1351
|
+
(requestBatching: boolean) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
1352
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, requestBatching: boolean) => Effect.Effect<A, E, R>
|
|
1292
1353
|
>(2, (self, requestBatching) => fiberRefLocally(self, currentRequestBatching, requestBatching))
|
|
1293
1354
|
|
|
1294
1355
|
/* @internal */
|
|
1295
1356
|
export const withRuntimeFlags = dual<
|
|
1296
|
-
(update: RuntimeFlagsPatch.RuntimeFlagsPatch) => <
|
|
1297
|
-
<
|
|
1357
|
+
(update: RuntimeFlagsPatch.RuntimeFlagsPatch) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
1358
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, update: RuntimeFlagsPatch.RuntimeFlagsPatch) => Effect.Effect<A, E, R>
|
|
1298
1359
|
>(2, (self, update) => {
|
|
1299
1360
|
const effect = new EffectPrimitive(OpCodes.OP_UPDATE_RUNTIME_FLAGS) as any
|
|
1300
1361
|
effect.i0 = update
|
|
@@ -1304,8 +1365,8 @@ export const withRuntimeFlags = dual<
|
|
|
1304
1365
|
|
|
1305
1366
|
/** @internal */
|
|
1306
1367
|
export const withTracerTiming = dual<
|
|
1307
|
-
(enabled: boolean) => <
|
|
1308
|
-
<
|
|
1368
|
+
(enabled: boolean) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
1369
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, enabled: boolean) => Effect.Effect<A, E, R>
|
|
1309
1370
|
>(2, (effect, enabled) =>
|
|
1310
1371
|
fiberRefLocally(
|
|
1311
1372
|
effect,
|
|
@@ -1316,7 +1377,7 @@ export const withTracerTiming = dual<
|
|
|
1316
1377
|
/* @internal */
|
|
1317
1378
|
export const yieldNow = (options?: {
|
|
1318
1379
|
readonly priority?: number | undefined
|
|
1319
|
-
}): Effect.Effect<
|
|
1380
|
+
}): Effect.Effect<void> => {
|
|
1320
1381
|
const effect = new EffectPrimitive(OpCodes.OP_YIELD) as any
|
|
1321
1382
|
return typeof options?.priority !== "undefined" ?
|
|
1322
1383
|
withSchedulingPriority(effect, options.priority) :
|
|
@@ -1325,73 +1386,83 @@ export const yieldNow = (options?: {
|
|
|
1325
1386
|
|
|
1326
1387
|
/* @internal */
|
|
1327
1388
|
export const zip = dual<
|
|
1328
|
-
<
|
|
1329
|
-
that: Effect.Effect<
|
|
1330
|
-
) => <
|
|
1331
|
-
self: Effect.Effect<
|
|
1332
|
-
) => Effect.Effect<
|
|
1333
|
-
<
|
|
1334
|
-
self: Effect.Effect<
|
|
1335
|
-
that: Effect.Effect<
|
|
1336
|
-
) => Effect.Effect<
|
|
1337
|
-
>(2, <
|
|
1338
|
-
self: Effect.Effect<
|
|
1339
|
-
that: Effect.Effect<
|
|
1340
|
-
): Effect.Effect<
|
|
1341
|
-
|
|
1342
|
-
/* @internal */
|
|
1343
|
-
export const zipFlatten
|
|
1344
|
-
<
|
|
1345
|
-
that: Effect.Effect<
|
|
1346
|
-
)
|
|
1347
|
-
self: Effect.Effect<
|
|
1348
|
-
) => Effect.Effect<
|
|
1349
|
-
<
|
|
1350
|
-
self: Effect.Effect<
|
|
1351
|
-
that: Effect.Effect<
|
|
1352
|
-
)
|
|
1353
|
-
|
|
1354
|
-
self: Effect.Effect<
|
|
1355
|
-
that: Effect.Effect<
|
|
1356
|
-
): Effect.Effect<
|
|
1357
|
-
|
|
1358
|
-
/* @internal */
|
|
1359
|
-
export const zipLeft
|
|
1360
|
-
<
|
|
1361
|
-
that: Effect.Effect<
|
|
1362
|
-
)
|
|
1363
|
-
<
|
|
1364
|
-
self: Effect.Effect<
|
|
1365
|
-
that: Effect.Effect<
|
|
1366
|
-
)
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
<
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
<
|
|
1383
|
-
|
|
1389
|
+
<A2, E2, R2>(
|
|
1390
|
+
that: Effect.Effect<A2, E2, R2>
|
|
1391
|
+
) => <A, E, R>(
|
|
1392
|
+
self: Effect.Effect<A, E, R>
|
|
1393
|
+
) => Effect.Effect<[A, A2], E | E2, R | R2>,
|
|
1394
|
+
<A, E, R, A2, E2, R2>(
|
|
1395
|
+
self: Effect.Effect<A, E, R>,
|
|
1396
|
+
that: Effect.Effect<A2, E2, R2>
|
|
1397
|
+
) => Effect.Effect<[A, A2], E | E2, R | R2>
|
|
1398
|
+
>(2, <A, E, R, A2, E2, R2>(
|
|
1399
|
+
self: Effect.Effect<A, E, R>,
|
|
1400
|
+
that: Effect.Effect<A2, E2, R2>
|
|
1401
|
+
): Effect.Effect<[A, A2], E | E2, R | R2> => flatMap(self, (a) => map(that, (b) => [a, b])))
|
|
1402
|
+
|
|
1403
|
+
/* @internal */
|
|
1404
|
+
export const zipFlatten: {
|
|
1405
|
+
<A2, E2, R2>(
|
|
1406
|
+
that: Effect.Effect<A2, E2, R2>
|
|
1407
|
+
): <A extends ReadonlyArray<any>, E, R>(
|
|
1408
|
+
self: Effect.Effect<A, E, R>
|
|
1409
|
+
) => Effect.Effect<[...A, A2], E | E2, R | R2>
|
|
1410
|
+
<A extends ReadonlyArray<any>, E, R, A2, E2, R2>(
|
|
1411
|
+
self: Effect.Effect<A, E, R>,
|
|
1412
|
+
that: Effect.Effect<A2, E2, R2>
|
|
1413
|
+
): Effect.Effect<[...A, A2], E | E2, R | R2>
|
|
1414
|
+
} = dual(2, <A extends ReadonlyArray<any>, E, R, A2, E2, R2>(
|
|
1415
|
+
self: Effect.Effect<A, E, R>,
|
|
1416
|
+
that: Effect.Effect<A2, E2, R2>
|
|
1417
|
+
): Effect.Effect<[...A, A2], E | E2, R | R2> => flatMap(self, (a) => map(that, (b) => [...a, b])))
|
|
1418
|
+
|
|
1419
|
+
/* @internal */
|
|
1420
|
+
export const zipLeft: {
|
|
1421
|
+
<A2, E2, R2>(
|
|
1422
|
+
that: Effect.Effect<A2, E2, R2>
|
|
1423
|
+
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R | R2>
|
|
1424
|
+
<A, E, R, A2, E2, R2>(
|
|
1425
|
+
self: Effect.Effect<A, E, R>,
|
|
1426
|
+
that: Effect.Effect<A2, E2, R2>
|
|
1427
|
+
): Effect.Effect<A, E | E2, R | R2>
|
|
1428
|
+
} = dual(2, <A, E, R, A2, E2, R2>(
|
|
1429
|
+
self: Effect.Effect<A, E, R>,
|
|
1430
|
+
that: Effect.Effect<A2, E2, R2>
|
|
1431
|
+
): Effect.Effect<A, E | E2, R | R2> => flatMap(self, (a) => as(that, a)))
|
|
1432
|
+
|
|
1433
|
+
/* @internal */
|
|
1434
|
+
export const zipRight: {
|
|
1435
|
+
<A2, E2, R2>(
|
|
1436
|
+
that: Effect.Effect<A2, E2, R2>
|
|
1437
|
+
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2, E | E2, R | R2>
|
|
1438
|
+
<A, E, R, A2, E2, R2>(
|
|
1439
|
+
self: Effect.Effect<A, E, R>,
|
|
1440
|
+
that: Effect.Effect<A2, E2, R2>
|
|
1441
|
+
): Effect.Effect<A2, E | E2, R | R2>
|
|
1442
|
+
} = dual(2, <A, E, R, A2, E2, R2>(
|
|
1443
|
+
self: Effect.Effect<A, E, R>,
|
|
1444
|
+
that: Effect.Effect<A2, E2, R2>
|
|
1445
|
+
): Effect.Effect<A2, E | E2, R | R2> => flatMap(self, () => that))
|
|
1446
|
+
|
|
1447
|
+
/* @internal */
|
|
1448
|
+
export const zipWith: {
|
|
1449
|
+
<A2, E2, R2, A, B>(
|
|
1450
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
1384
1451
|
f: (a: A, b: A2) => B
|
|
1385
|
-
)
|
|
1386
|
-
<
|
|
1387
|
-
self: Effect.Effect<
|
|
1388
|
-
that: Effect.Effect<
|
|
1452
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E | E2, R | R2>
|
|
1453
|
+
<A, E, R, A2, E2, R2, B>(
|
|
1454
|
+
self: Effect.Effect<A, E, R>,
|
|
1455
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
1389
1456
|
f: (a: A, b: A2) => B
|
|
1390
|
-
)
|
|
1391
|
-
|
|
1457
|
+
): Effect.Effect<B, E | E2, R | R2>
|
|
1458
|
+
} = dual(3, <A, E, R, A2, E2, R2, B>(
|
|
1459
|
+
self: Effect.Effect<A, E, R>,
|
|
1460
|
+
that: Effect.Effect<A2, E2, R2>,
|
|
1461
|
+
f: (a: A, b: A2) => B
|
|
1462
|
+
): Effect.Effect<B, E | E2, R | R2> => flatMap(self, (a) => map(that, (b) => f(a, b))))
|
|
1392
1463
|
|
|
1393
1464
|
/* @internal */
|
|
1394
|
-
export const never: Effect.Effect<never
|
|
1465
|
+
export const never: Effect.Effect<never> = asyncEither<never>(() => {
|
|
1395
1466
|
const interval = setInterval(() => {
|
|
1396
1467
|
//
|
|
1397
1468
|
}, 2 ** 31 - 1)
|
|
@@ -1403,13 +1474,13 @@ export const never: Effect.Effect<never, never, never> = asyncEither<never, neve
|
|
|
1403
1474
|
// -----------------------------------------------------------------------------
|
|
1404
1475
|
|
|
1405
1476
|
/* @internal */
|
|
1406
|
-
export const interruptFiber = <
|
|
1477
|
+
export const interruptFiber = <A, E>(self: Fiber.Fiber<A, E>): Effect.Effect<Exit.Exit<A, E>> =>
|
|
1407
1478
|
flatMap(fiberId, (fiberId) => pipe(self, interruptAsFiber(fiberId)))
|
|
1408
1479
|
|
|
1409
1480
|
/* @internal */
|
|
1410
1481
|
export const interruptAsFiber = dual<
|
|
1411
|
-
(fiberId: FiberId.FiberId) => <
|
|
1412
|
-
<
|
|
1482
|
+
(fiberId: FiberId.FiberId) => <A, E>(self: Fiber.Fiber<A, E>) => Effect.Effect<Exit.Exit<A, E>>,
|
|
1483
|
+
<A, E>(self: Fiber.Fiber<A, E>, fiberId: FiberId.FiberId) => Effect.Effect<Exit.Exit<A, E>>
|
|
1413
1484
|
>(2, (self, fiberId) => flatMap(self.interruptAsFork(fiberId), () => self.await))
|
|
1414
1485
|
|
|
1415
1486
|
// -----------------------------------------------------------------------------
|
|
@@ -1534,64 +1605,63 @@ const fiberRefVariance = {
|
|
|
1534
1605
|
}
|
|
1535
1606
|
|
|
1536
1607
|
/* @internal */
|
|
1537
|
-
export const fiberRefGet = <A>(self: FiberRef.FiberRef<A>): Effect.Effect<
|
|
1608
|
+
export const fiberRefGet = <A>(self: FiberRef.FiberRef<A>): Effect.Effect<A> =>
|
|
1538
1609
|
fiberRefModify(self, (a) => [a, a] as const)
|
|
1539
1610
|
|
|
1540
1611
|
/* @internal */
|
|
1541
1612
|
export const fiberRefGetAndSet = dual<
|
|
1542
|
-
<A>(value: A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<
|
|
1543
|
-
<A>(self: FiberRef.FiberRef<A>, value: A) => Effect.Effect<
|
|
1613
|
+
<A>(value: A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<A>,
|
|
1614
|
+
<A>(self: FiberRef.FiberRef<A>, value: A) => Effect.Effect<A>
|
|
1544
1615
|
>(2, (self, value) => fiberRefModify(self, (v) => [v, value] as const))
|
|
1545
1616
|
|
|
1546
1617
|
/* @internal */
|
|
1547
1618
|
export const fiberRefGetAndUpdate = dual<
|
|
1548
|
-
<A>(f: (a: A) => A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<
|
|
1549
|
-
<A>(self: FiberRef.FiberRef<A>, f: (a: A) => A) => Effect.Effect<
|
|
1619
|
+
<A>(f: (a: A) => A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<A>,
|
|
1620
|
+
<A>(self: FiberRef.FiberRef<A>, f: (a: A) => A) => Effect.Effect<A>
|
|
1550
1621
|
>(2, (self, f) => fiberRefModify(self, (v) => [v, f(v)] as const))
|
|
1551
1622
|
|
|
1552
1623
|
/* @internal */
|
|
1553
1624
|
export const fiberRefGetAndUpdateSome = dual<
|
|
1554
1625
|
<A>(
|
|
1555
1626
|
pf: (a: A) => Option.Option<A>
|
|
1556
|
-
) => (self: FiberRef.FiberRef<A>) => Effect.Effect<
|
|
1627
|
+
) => (self: FiberRef.FiberRef<A>) => Effect.Effect<A>,
|
|
1557
1628
|
<A>(
|
|
1558
1629
|
self: FiberRef.FiberRef<A>,
|
|
1559
1630
|
pf: (a: A) => Option.Option<A>
|
|
1560
|
-
) => Effect.Effect<
|
|
1631
|
+
) => Effect.Effect<A>
|
|
1561
1632
|
>(2, (self, pf) => fiberRefModify(self, (v) => [v, Option.getOrElse(pf(v), () => v)] as const))
|
|
1562
1633
|
|
|
1563
1634
|
/* @internal */
|
|
1564
1635
|
export const fiberRefGetWith = dual<
|
|
1565
|
-
<
|
|
1566
|
-
<A,
|
|
1636
|
+
<B, E, R, A>(f: (a: A) => Effect.Effect<B, E, R>) => (self: FiberRef.FiberRef<A>) => Effect.Effect<B, E, R>,
|
|
1637
|
+
<A, B, E, R>(self: FiberRef.FiberRef<A>, f: (a: A) => Effect.Effect<B, E, R>) => Effect.Effect<B, E, R>
|
|
1567
1638
|
>(2, (self, f) => flatMap(fiberRefGet(self), f))
|
|
1568
1639
|
|
|
1569
1640
|
/* @internal */
|
|
1570
1641
|
export const fiberRefSet = dual<
|
|
1571
|
-
<A>(value: A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<
|
|
1572
|
-
<A>(self: FiberRef.FiberRef<A>, value: A) => Effect.Effect<
|
|
1642
|
+
<A>(value: A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<void>,
|
|
1643
|
+
<A>(self: FiberRef.FiberRef<A>, value: A) => Effect.Effect<void>
|
|
1573
1644
|
>(2, (self, value) => fiberRefModify(self, () => [void 0, value] as const))
|
|
1574
1645
|
|
|
1575
1646
|
/* @internal */
|
|
1576
|
-
export const fiberRefDelete = <A>(self: FiberRef.FiberRef<A>): Effect.Effect<
|
|
1577
|
-
withFiberRuntime
|
|
1647
|
+
export const fiberRefDelete = <A>(self: FiberRef.FiberRef<A>): Effect.Effect<void> =>
|
|
1648
|
+
withFiberRuntime((state) => {
|
|
1578
1649
|
state.unsafeDeleteFiberRef(self)
|
|
1579
1650
|
return unit
|
|
1580
1651
|
})
|
|
1581
1652
|
|
|
1582
1653
|
/* @internal */
|
|
1583
|
-
export const fiberRefReset = <A>(self: FiberRef.FiberRef<A>): Effect.Effect<
|
|
1584
|
-
fiberRefSet(self, self.initial)
|
|
1654
|
+
export const fiberRefReset = <A>(self: FiberRef.FiberRef<A>): Effect.Effect<void> => fiberRefSet(self, self.initial)
|
|
1585
1655
|
|
|
1586
1656
|
/* @internal */
|
|
1587
1657
|
export const fiberRefModify = dual<
|
|
1588
|
-
<A, B>(f: (a: A) => readonly [B, A]) => (self: FiberRef.FiberRef<A>) => Effect.Effect<
|
|
1589
|
-
<A, B>(self: FiberRef.FiberRef<A>, f: (a: A) => readonly [B, A]) => Effect.Effect<
|
|
1658
|
+
<A, B>(f: (a: A) => readonly [B, A]) => (self: FiberRef.FiberRef<A>) => Effect.Effect<B>,
|
|
1659
|
+
<A, B>(self: FiberRef.FiberRef<A>, f: (a: A) => readonly [B, A]) => Effect.Effect<B>
|
|
1590
1660
|
>(2, <A, B>(
|
|
1591
1661
|
self: FiberRef.FiberRef<A>,
|
|
1592
1662
|
f: (a: A) => readonly [B, A]
|
|
1593
|
-
): Effect.Effect<
|
|
1594
|
-
withFiberRuntime
|
|
1663
|
+
): Effect.Effect<B> =>
|
|
1664
|
+
withFiberRuntime((state) => {
|
|
1595
1665
|
const [b, a] = f(state.getFiberRef(self) as A)
|
|
1596
1666
|
state.setFiberRef(self, a)
|
|
1597
1667
|
return succeed(b)
|
|
@@ -1602,24 +1672,24 @@ export const fiberRefModifySome = <A, B>(
|
|
|
1602
1672
|
self: FiberRef.FiberRef<A>,
|
|
1603
1673
|
def: B,
|
|
1604
1674
|
f: (a: A) => Option.Option<readonly [B, A]>
|
|
1605
|
-
): Effect.Effect<
|
|
1675
|
+
): Effect.Effect<B> => fiberRefModify(self, (v) => Option.getOrElse(f(v), () => [def, v] as const))
|
|
1606
1676
|
|
|
1607
1677
|
/* @internal */
|
|
1608
1678
|
export const fiberRefUpdate = dual<
|
|
1609
|
-
<A>(f: (a: A) => A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<
|
|
1610
|
-
<A>(self: FiberRef.FiberRef<A>, f: (a: A) => A) => Effect.Effect<
|
|
1679
|
+
<A>(f: (a: A) => A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<void>,
|
|
1680
|
+
<A>(self: FiberRef.FiberRef<A>, f: (a: A) => A) => Effect.Effect<void>
|
|
1611
1681
|
>(2, (self, f) => fiberRefModify(self, (v) => [void 0, f(v)] as const))
|
|
1612
1682
|
|
|
1613
1683
|
/* @internal */
|
|
1614
1684
|
export const fiberRefUpdateSome = dual<
|
|
1615
|
-
<A>(pf: (a: A) => Option.Option<A>) => (self: FiberRef.FiberRef<A>) => Effect.Effect<
|
|
1616
|
-
<A>(self: FiberRef.FiberRef<A>, pf: (a: A) => Option.Option<A>) => Effect.Effect<
|
|
1685
|
+
<A>(pf: (a: A) => Option.Option<A>) => (self: FiberRef.FiberRef<A>) => Effect.Effect<void>,
|
|
1686
|
+
<A>(self: FiberRef.FiberRef<A>, pf: (a: A) => Option.Option<A>) => Effect.Effect<void>
|
|
1617
1687
|
>(2, (self, pf) => fiberRefModify(self, (v) => [void 0, Option.getOrElse(pf(v), () => v)] as const))
|
|
1618
1688
|
|
|
1619
1689
|
/* @internal */
|
|
1620
1690
|
export const fiberRefUpdateAndGet = dual<
|
|
1621
|
-
<A>(f: (a: A) => A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<
|
|
1622
|
-
<A>(self: FiberRef.FiberRef<A>, f: (a: A) => A) => Effect.Effect<
|
|
1691
|
+
<A>(f: (a: A) => A) => (self: FiberRef.FiberRef<A>) => Effect.Effect<A>,
|
|
1692
|
+
<A>(self: FiberRef.FiberRef<A>, f: (a: A) => A) => Effect.Effect<A>
|
|
1623
1693
|
>(2, (self, f) =>
|
|
1624
1694
|
fiberRefModify(self, (v) => {
|
|
1625
1695
|
const result = f(v)
|
|
@@ -1628,8 +1698,8 @@ export const fiberRefUpdateAndGet = dual<
|
|
|
1628
1698
|
|
|
1629
1699
|
/* @internal */
|
|
1630
1700
|
export const fiberRefUpdateSomeAndGet = dual<
|
|
1631
|
-
<A>(pf: (a: A) => Option.Option<A>) => (self: FiberRef.FiberRef<A>) => Effect.Effect<
|
|
1632
|
-
<A>(self: FiberRef.FiberRef<A>, pf: (a: A) => Option.Option<A>) => Effect.Effect<
|
|
1701
|
+
<A>(pf: (a: A) => Option.Option<A>) => (self: FiberRef.FiberRef<A>) => Effect.Effect<A>,
|
|
1702
|
+
<A>(self: FiberRef.FiberRef<A>, pf: (a: A) => Option.Option<A>) => Effect.Effect<A>
|
|
1633
1703
|
>(2, (self, pf) =>
|
|
1634
1704
|
fiberRefModify(self, (v) => {
|
|
1635
1705
|
const result = Option.getOrElse(pf(v), () => v)
|
|
@@ -1658,7 +1728,7 @@ export class RequestResolverImpl<out R, in A> implements RequestResolver.Request
|
|
|
1658
1728
|
constructor(
|
|
1659
1729
|
readonly runAll: (
|
|
1660
1730
|
requests: Array<Array<Request.Entry<A>>>
|
|
1661
|
-
) => Effect.Effect<
|
|
1731
|
+
) => Effect.Effect<void, never, R>,
|
|
1662
1732
|
readonly target?: unknown
|
|
1663
1733
|
) {
|
|
1664
1734
|
this.runAll = runAll as any
|
|
@@ -1736,22 +1806,22 @@ const LocallyReducer = <A>(
|
|
|
1736
1806
|
|
|
1737
1807
|
/* @internal */
|
|
1738
1808
|
export const fiberRefLocally: {
|
|
1739
|
-
<A>(self: FiberRef.FiberRef<A>, value: A): <
|
|
1740
|
-
<
|
|
1741
|
-
} = dual
|
|
1742
|
-
|
|
1743
|
-
<
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1809
|
+
<A>(self: FiberRef.FiberRef<A>, value: A): <B, E, R>(use: Effect.Effect<B, E, R>) => Effect.Effect<B, E, R>
|
|
1810
|
+
<B, E, R, A>(use: Effect.Effect<B, E, R>, self: FiberRef.FiberRef<A>, value: A): Effect.Effect<B, E, R>
|
|
1811
|
+
} = dual(
|
|
1812
|
+
3,
|
|
1813
|
+
<B, E, R, A>(use: Effect.Effect<B, E, R>, self: FiberRef.FiberRef<A>, value: A): Effect.Effect<B, E, R> =>
|
|
1814
|
+
acquireUseRelease(
|
|
1815
|
+
zipLeft(fiberRefGet(self), fiberRefSet(self, value)),
|
|
1816
|
+
() => use,
|
|
1817
|
+
(oldValue) => fiberRefSet(self, oldValue)
|
|
1818
|
+
)
|
|
1819
|
+
)
|
|
1750
1820
|
|
|
1751
1821
|
/* @internal */
|
|
1752
1822
|
export const fiberRefLocallyWith = dual<
|
|
1753
|
-
<A>(self: FiberRef.FiberRef<A>, f: (a: A) => A) => <
|
|
1754
|
-
<
|
|
1823
|
+
<A>(self: FiberRef.FiberRef<A>, f: (a: A) => A) => <B, E, R>(use: Effect.Effect<B, E, R>) => Effect.Effect<B, E, R>,
|
|
1824
|
+
<B, E, R, A>(use: Effect.Effect<B, E, R>, self: FiberRef.FiberRef<A>, f: (a: A) => A) => Effect.Effect<B, E, R>
|
|
1755
1825
|
>(3, (use, self, f) => fiberRefGetWith(self, (a) => fiberRefLocally(use, self, f(a))))
|
|
1756
1826
|
|
|
1757
1827
|
/** @internal */
|
|
@@ -1869,14 +1939,14 @@ export const currentLogSpan: FiberRef.FiberRef<List.List<LogSpan.LogSpan>> = glo
|
|
|
1869
1939
|
|
|
1870
1940
|
/** @internal */
|
|
1871
1941
|
export const withSchedulingPriority = dual<
|
|
1872
|
-
(priority: number) => <
|
|
1873
|
-
<
|
|
1942
|
+
(priority: number) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
1943
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, priority: number) => Effect.Effect<A, E, R>
|
|
1874
1944
|
>(2, (self, scheduler) => fiberRefLocally(self, currentSchedulingPriority, scheduler))
|
|
1875
1945
|
|
|
1876
1946
|
/** @internal */
|
|
1877
1947
|
export const withMaxOpsBeforeYield = dual<
|
|
1878
|
-
(priority: number) => <
|
|
1879
|
-
<
|
|
1948
|
+
(priority: number) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
1949
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, priority: number) => Effect.Effect<A, E, R>
|
|
1880
1950
|
>(2, (self, scheduler) => fiberRefLocally(self, currentMaxOpsBeforeYield, scheduler))
|
|
1881
1951
|
|
|
1882
1952
|
/** @internal */
|
|
@@ -1901,8 +1971,8 @@ export const currentUnhandledErrorLogLevel: FiberRef.FiberRef<Option.Option<LogL
|
|
|
1901
1971
|
|
|
1902
1972
|
/** @internal */
|
|
1903
1973
|
export const withUnhandledErrorLogLevel = dual<
|
|
1904
|
-
(level: Option.Option<LogLevel.LogLevel>) => <
|
|
1905
|
-
<
|
|
1974
|
+
(level: Option.Option<LogLevel.LogLevel>) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
1975
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, level: Option.Option<LogLevel.LogLevel>) => Effect.Effect<A, E, R>
|
|
1906
1976
|
>(2, (self, level) => fiberRefLocally(self, currentUnhandledErrorLogLevel, level))
|
|
1907
1977
|
|
|
1908
1978
|
/** @internal */
|
|
@@ -1912,7 +1982,7 @@ export const currentMetricLabels: FiberRef.FiberRef<ReadonlyArray<MetricLabel.Me
|
|
|
1912
1982
|
)
|
|
1913
1983
|
|
|
1914
1984
|
/* @internal */
|
|
1915
|
-
export const metricLabels: Effect.Effect<
|
|
1985
|
+
export const metricLabels: Effect.Effect<ReadonlyArray<MetricLabel.MetricLabel>> = fiberRefGet(
|
|
1916
1986
|
currentMetricLabels
|
|
1917
1987
|
)
|
|
1918
1988
|
|
|
@@ -1969,26 +2039,26 @@ export const CloseableScopeTypeId: Scope.CloseableScopeTypeId = Symbol.for(
|
|
|
1969
2039
|
/* @internal */
|
|
1970
2040
|
export const scopeAddFinalizer = (
|
|
1971
2041
|
self: Scope.Scope,
|
|
1972
|
-
finalizer: Effect.Effect<
|
|
1973
|
-
): Effect.Effect<
|
|
2042
|
+
finalizer: Effect.Effect<unknown>
|
|
2043
|
+
): Effect.Effect<void> => self.addFinalizer(() => asUnit(finalizer))
|
|
1974
2044
|
|
|
1975
2045
|
/* @internal */
|
|
1976
2046
|
export const scopeAddFinalizerExit = (
|
|
1977
2047
|
self: Scope.Scope,
|
|
1978
2048
|
finalizer: Scope.Scope.Finalizer
|
|
1979
|
-
): Effect.Effect<
|
|
2049
|
+
): Effect.Effect<void> => self.addFinalizer(finalizer)
|
|
1980
2050
|
|
|
1981
2051
|
/* @internal */
|
|
1982
2052
|
export const scopeClose = (
|
|
1983
2053
|
self: Scope.Scope.Closeable,
|
|
1984
2054
|
exit: Exit.Exit<unknown, unknown>
|
|
1985
|
-
): Effect.Effect<
|
|
2055
|
+
): Effect.Effect<void> => self.close(exit)
|
|
1986
2056
|
|
|
1987
2057
|
/* @internal */
|
|
1988
2058
|
export const scopeFork = (
|
|
1989
2059
|
self: Scope.Scope,
|
|
1990
2060
|
strategy: ExecutionStrategy.ExecutionStrategy
|
|
1991
|
-
): Effect.Effect<
|
|
2061
|
+
): Effect.Effect<Scope.Scope.Closeable> => self.fork(strategy)
|
|
1992
2062
|
|
|
1993
2063
|
// -----------------------------------------------------------------------------
|
|
1994
2064
|
// ReleaseMap
|
|
@@ -2014,8 +2084,8 @@ export interface ReleaseMap {
|
|
|
2014
2084
|
|
|
2015
2085
|
/* @internal */
|
|
2016
2086
|
export const releaseMapAdd = dual<
|
|
2017
|
-
(finalizer: Scope.Scope.Finalizer) => (self: ReleaseMap) => Effect.Effect<
|
|
2018
|
-
(self: ReleaseMap, finalizer: Scope.Scope.Finalizer) => Effect.Effect<
|
|
2087
|
+
(finalizer: Scope.Scope.Finalizer) => (self: ReleaseMap) => Effect.Effect<Scope.Scope.Finalizer>,
|
|
2088
|
+
(self: ReleaseMap, finalizer: Scope.Scope.Finalizer) => Effect.Effect<Scope.Scope.Finalizer>
|
|
2019
2089
|
>(2, (self, finalizer) =>
|
|
2020
2090
|
map(
|
|
2021
2091
|
releaseMapAddIfOpen(self, finalizer),
|
|
@@ -2027,8 +2097,8 @@ export const releaseMapAdd = dual<
|
|
|
2027
2097
|
|
|
2028
2098
|
/* @internal */
|
|
2029
2099
|
export const releaseMapRelease = dual<
|
|
2030
|
-
(key: number, exit: Exit.Exit<unknown, unknown>) => (self: ReleaseMap) => Effect.Effect<
|
|
2031
|
-
(self: ReleaseMap, key: number, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<
|
|
2100
|
+
(key: number, exit: Exit.Exit<unknown, unknown>) => (self: ReleaseMap) => Effect.Effect<void>,
|
|
2101
|
+
(self: ReleaseMap, key: number, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>
|
|
2032
2102
|
>(3, (self, key, exit) =>
|
|
2033
2103
|
suspend(() => {
|
|
2034
2104
|
switch (self.state._tag) {
|
|
@@ -2048,8 +2118,8 @@ export const releaseMapRelease = dual<
|
|
|
2048
2118
|
|
|
2049
2119
|
/* @internal */
|
|
2050
2120
|
export const releaseMapAddIfOpen = dual<
|
|
2051
|
-
(finalizer: Scope.Scope.Finalizer) => (self: ReleaseMap) => Effect.Effect<
|
|
2052
|
-
(self: ReleaseMap, finalizer: Scope.Scope.Finalizer) => Effect.Effect<
|
|
2121
|
+
(finalizer: Scope.Scope.Finalizer) => (self: ReleaseMap) => Effect.Effect<Option.Option<number>>,
|
|
2122
|
+
(self: ReleaseMap, finalizer: Scope.Scope.Finalizer) => Effect.Effect<Option.Option<number>>
|
|
2053
2123
|
>(2, (self, finalizer) =>
|
|
2054
2124
|
suspend(() => {
|
|
2055
2125
|
switch (self.state._tag) {
|
|
@@ -2068,8 +2138,8 @@ export const releaseMapAddIfOpen = dual<
|
|
|
2068
2138
|
|
|
2069
2139
|
/* @internal */
|
|
2070
2140
|
export const releaseMapGet = dual<
|
|
2071
|
-
(key: number) => (self: ReleaseMap) => Effect.Effect<
|
|
2072
|
-
(self: ReleaseMap, key: number) => Effect.Effect<
|
|
2141
|
+
(key: number) => (self: ReleaseMap) => Effect.Effect<Option.Option<Scope.Scope.Finalizer>>,
|
|
2142
|
+
(self: ReleaseMap, key: number) => Effect.Effect<Option.Option<Scope.Scope.Finalizer>>
|
|
2073
2143
|
>(
|
|
2074
2144
|
2,
|
|
2075
2145
|
(self, key) =>
|
|
@@ -2083,12 +2153,12 @@ export const releaseMapReplace = dual<
|
|
|
2083
2153
|
(
|
|
2084
2154
|
key: number,
|
|
2085
2155
|
finalizer: Scope.Scope.Finalizer
|
|
2086
|
-
) => (self: ReleaseMap) => Effect.Effect<
|
|
2156
|
+
) => (self: ReleaseMap) => Effect.Effect<Option.Option<Scope.Scope.Finalizer>>,
|
|
2087
2157
|
(
|
|
2088
2158
|
self: ReleaseMap,
|
|
2089
2159
|
key: number,
|
|
2090
2160
|
finalizer: Scope.Scope.Finalizer
|
|
2091
|
-
) => Effect.Effect<
|
|
2161
|
+
) => Effect.Effect<Option.Option<Scope.Scope.Finalizer>>
|
|
2092
2162
|
>(3, (self, key, finalizer) =>
|
|
2093
2163
|
suspend(() => {
|
|
2094
2164
|
switch (self.state._tag) {
|
|
@@ -2105,8 +2175,8 @@ export const releaseMapReplace = dual<
|
|
|
2105
2175
|
|
|
2106
2176
|
/* @internal */
|
|
2107
2177
|
export const releaseMapRemove = dual<
|
|
2108
|
-
(key: number) => (self: ReleaseMap) => Effect.Effect<
|
|
2109
|
-
(self: ReleaseMap, key: number) => Effect.Effect<
|
|
2178
|
+
(key: number) => (self: ReleaseMap) => Effect.Effect<Option.Option<Scope.Scope.Finalizer>>,
|
|
2179
|
+
(self: ReleaseMap, key: number) => Effect.Effect<Option.Option<Scope.Scope.Finalizer>>
|
|
2110
2180
|
>(2, (self, key) =>
|
|
2111
2181
|
sync(() => {
|
|
2112
2182
|
if (self.state._tag === "Exited") {
|
|
@@ -2118,7 +2188,7 @@ export const releaseMapRemove = dual<
|
|
|
2118
2188
|
}))
|
|
2119
2189
|
|
|
2120
2190
|
/* @internal */
|
|
2121
|
-
export const releaseMapMake: Effect.Effect<
|
|
2191
|
+
export const releaseMapMake: Effect.Effect<ReleaseMap> = sync((): ReleaseMap => ({
|
|
2122
2192
|
state: {
|
|
2123
2193
|
_tag: "Running",
|
|
2124
2194
|
nextKey: 0,
|
|
@@ -2273,6 +2343,19 @@ export const InvalidPubSubCapacityException = makeException<Cause.InvalidPubSubC
|
|
|
2273
2343
|
export const isInvalidCapacityError = (u: unknown): u is Cause.InvalidPubSubCapacityException =>
|
|
2274
2344
|
hasProperty(u, InvalidPubSubCapacityExceptionTypeId)
|
|
2275
2345
|
|
|
2346
|
+
/** @internal */
|
|
2347
|
+
export const TimeoutExceptionTypeId: Cause.TimeoutExceptionTypeId = Symbol.for(
|
|
2348
|
+
"effect/Cause/errors/Timeout"
|
|
2349
|
+
) as Cause.TimeoutExceptionTypeId
|
|
2350
|
+
|
|
2351
|
+
/** @internal */
|
|
2352
|
+
export const TimeoutException = makeException<Cause.TimeoutException>({
|
|
2353
|
+
[TimeoutExceptionTypeId]: TimeoutExceptionTypeId
|
|
2354
|
+
}, "TimeoutException")
|
|
2355
|
+
|
|
2356
|
+
/** @internal */
|
|
2357
|
+
export const isTimeoutException = (u: unknown): u is Cause.TimeoutException => hasProperty(u, TimeoutExceptionTypeId)
|
|
2358
|
+
|
|
2276
2359
|
/** @internal */
|
|
2277
2360
|
export const UnknownExceptionTypeId: Cause.UnknownExceptionTypeId = Symbol.for(
|
|
2278
2361
|
"effect/Cause/errors/UnknownException"
|
|
@@ -2306,90 +2389,83 @@ export const exitIsExit = (u: unknown): u is Exit.Exit<unknown, unknown> =>
|
|
|
2306
2389
|
isEffect(u) && "_tag" in u && (u._tag === "Success" || u._tag === "Failure")
|
|
2307
2390
|
|
|
2308
2391
|
/** @internal */
|
|
2309
|
-
export const exitIsFailure = <
|
|
2392
|
+
export const exitIsFailure = <A, E>(self: Exit.Exit<A, E>): self is Exit.Failure<A, E> => self._tag === "Failure"
|
|
2310
2393
|
|
|
2311
2394
|
/** @internal */
|
|
2312
|
-
export const exitIsSuccess = <
|
|
2395
|
+
export const exitIsSuccess = <A, E>(self: Exit.Exit<A, E>): self is Exit.Success<A, E> => self._tag === "Success"
|
|
2313
2396
|
|
|
2314
2397
|
/** @internal */
|
|
2315
|
-
export const exitIsInterrupted = <
|
|
2398
|
+
export const exitIsInterrupted = <A, E>(self: Exit.Exit<A, E>): boolean => {
|
|
2316
2399
|
switch (self._tag) {
|
|
2317
|
-
case OpCodes.OP_FAILURE:
|
|
2400
|
+
case OpCodes.OP_FAILURE:
|
|
2318
2401
|
return internalCause.isInterrupted(self.i0)
|
|
2319
|
-
|
|
2320
|
-
case OpCodes.OP_SUCCESS: {
|
|
2402
|
+
case OpCodes.OP_SUCCESS:
|
|
2321
2403
|
return false
|
|
2322
|
-
}
|
|
2323
2404
|
}
|
|
2324
2405
|
}
|
|
2325
2406
|
|
|
2326
2407
|
/** @internal */
|
|
2327
2408
|
export const exitAs = dual<
|
|
2328
|
-
<A2>(value: A2) => <
|
|
2329
|
-
<
|
|
2330
|
-
>(2, <
|
|
2409
|
+
<A2>(value: A2) => <A, E>(self: Exit.Exit<A, E>) => Exit.Exit<A2, E>,
|
|
2410
|
+
<A, E, A2>(self: Exit.Exit<A, E>, value: A2) => Exit.Exit<A2, E>
|
|
2411
|
+
>(2, <A, E, A2>(self: Exit.Exit<A, E>, value: A2): Exit.Exit<A2, E> => {
|
|
2331
2412
|
switch (self._tag) {
|
|
2332
2413
|
case OpCodes.OP_FAILURE: {
|
|
2333
2414
|
return exitFailCause(self.i0)
|
|
2334
2415
|
}
|
|
2335
2416
|
case OpCodes.OP_SUCCESS: {
|
|
2336
|
-
return exitSucceed(value) as Exit.Exit<
|
|
2417
|
+
return exitSucceed(value) as Exit.Exit<A2, E>
|
|
2337
2418
|
}
|
|
2338
2419
|
}
|
|
2339
2420
|
})
|
|
2340
2421
|
|
|
2341
2422
|
/** @internal */
|
|
2342
|
-
export const exitAsUnit = <
|
|
2343
|
-
exitAs(self, void 0) as Exit.Exit<E, void>
|
|
2423
|
+
export const exitAsUnit = <A, E>(self: Exit.Exit<A, E>): Exit.Exit<void, E> => exitAs(self, void 0)
|
|
2344
2424
|
|
|
2345
2425
|
/** @internal */
|
|
2346
|
-
export const exitCauseOption = <
|
|
2426
|
+
export const exitCauseOption = <A, E>(self: Exit.Exit<A, E>): Option.Option<Cause.Cause<E>> => {
|
|
2347
2427
|
switch (self._tag) {
|
|
2348
|
-
case OpCodes.OP_FAILURE:
|
|
2428
|
+
case OpCodes.OP_FAILURE:
|
|
2349
2429
|
return Option.some(self.i0)
|
|
2350
|
-
|
|
2351
|
-
case OpCodes.OP_SUCCESS: {
|
|
2430
|
+
case OpCodes.OP_SUCCESS:
|
|
2352
2431
|
return Option.none()
|
|
2353
|
-
}
|
|
2354
2432
|
}
|
|
2355
2433
|
}
|
|
2356
2434
|
|
|
2357
2435
|
/** @internal */
|
|
2358
|
-
export const exitCollectAll = <
|
|
2359
|
-
exits: Iterable<Exit.Exit<
|
|
2436
|
+
export const exitCollectAll = <A, E>(
|
|
2437
|
+
exits: Iterable<Exit.Exit<A, E>>,
|
|
2360
2438
|
options?: {
|
|
2361
2439
|
readonly parallel?: boolean | undefined
|
|
2362
2440
|
}
|
|
2363
|
-
): Option.Option<Exit.Exit<
|
|
2441
|
+
): Option.Option<Exit.Exit<Array<A>, E>> =>
|
|
2364
2442
|
exitCollectAllInternal(exits, options?.parallel ? internalCause.parallel : internalCause.sequential)
|
|
2365
2443
|
|
|
2366
2444
|
/** @internal */
|
|
2367
|
-
export const exitDie = (defect: unknown): Exit.Exit<never
|
|
2368
|
-
exitFailCause(internalCause.die(defect)) as Exit.Exit<never
|
|
2445
|
+
export const exitDie = (defect: unknown): Exit.Exit<never> =>
|
|
2446
|
+
exitFailCause(internalCause.die(defect)) as Exit.Exit<never>
|
|
2369
2447
|
|
|
2370
2448
|
/** @internal */
|
|
2371
2449
|
export const exitExists: {
|
|
2372
|
-
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <E>(self: Exit.Exit<
|
|
2373
|
-
<A>(predicate: Predicate<NoInfer<A>>): <E>(self: Exit.Exit<
|
|
2374
|
-
<
|
|
2375
|
-
<
|
|
2376
|
-
} = dual(2, <
|
|
2450
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <E>(self: Exit.Exit<A, E>) => self is Exit.Exit<B>
|
|
2451
|
+
<A>(predicate: Predicate<NoInfer<A>>): <E>(self: Exit.Exit<A, E>) => boolean
|
|
2452
|
+
<A, E, B extends A>(self: Exit.Exit<A, E>, refinement: Refinement<A, B>): self is Exit.Exit<B>
|
|
2453
|
+
<A, E>(self: Exit.Exit<A, E>, predicate: Predicate<A>): boolean
|
|
2454
|
+
} = dual(2, <A, E, B extends A>(self: Exit.Exit<A, E>, refinement: Refinement<A, B>): self is Exit.Exit<B> => {
|
|
2377
2455
|
switch (self._tag) {
|
|
2378
|
-
case OpCodes.OP_FAILURE:
|
|
2456
|
+
case OpCodes.OP_FAILURE:
|
|
2379
2457
|
return false
|
|
2380
|
-
|
|
2381
|
-
case OpCodes.OP_SUCCESS: {
|
|
2458
|
+
case OpCodes.OP_SUCCESS:
|
|
2382
2459
|
return refinement(self.i0)
|
|
2383
|
-
}
|
|
2384
2460
|
}
|
|
2385
2461
|
})
|
|
2386
2462
|
|
|
2387
2463
|
/** @internal */
|
|
2388
|
-
export const exitFail = <E>(error: E): Exit.Exit<
|
|
2389
|
-
exitFailCause(internalCause.fail(error)) as Exit.Exit<
|
|
2464
|
+
export const exitFail = <E>(error: E): Exit.Exit<never, E> =>
|
|
2465
|
+
exitFailCause(internalCause.fail(error)) as Exit.Exit<never, E>
|
|
2390
2466
|
|
|
2391
2467
|
/** @internal */
|
|
2392
|
-
export const exitFailCause = <E>(cause: Cause.Cause<E>): Exit.Exit<
|
|
2468
|
+
export const exitFailCause = <E>(cause: Cause.Cause<E>): Exit.Exit<never, E> => {
|
|
2393
2469
|
const effect = new EffectPrimitiveFailure(OpCodes.OP_FAILURE) as any
|
|
2394
2470
|
effect.i0 = cause
|
|
2395
2471
|
return effect
|
|
@@ -2397,29 +2473,32 @@ export const exitFailCause = <E>(cause: Cause.Cause<E>): Exit.Exit<E, never> =>
|
|
|
2397
2473
|
|
|
2398
2474
|
/** @internal */
|
|
2399
2475
|
export const exitFlatMap = dual<
|
|
2400
|
-
<A,
|
|
2401
|
-
<
|
|
2402
|
-
>(2, <
|
|
2476
|
+
<A, A2, E2>(f: (a: A) => Exit.Exit<A2, E2>) => <E>(self: Exit.Exit<A, E>) => Exit.Exit<A2, E | E2>,
|
|
2477
|
+
<A, E, E2, A2>(self: Exit.Exit<A, E>, f: (a: A) => Exit.Exit<A2, E2>) => Exit.Exit<A2, E | E2>
|
|
2478
|
+
>(2, <A, E, E2, A2>(self: Exit.Exit<A, E>, f: (a: A) => Exit.Exit<A2, E2>): Exit.Exit<A2, E | E2> => {
|
|
2403
2479
|
switch (self._tag) {
|
|
2404
2480
|
case OpCodes.OP_FAILURE: {
|
|
2405
|
-
return exitFailCause(self.i0)
|
|
2481
|
+
return exitFailCause(self.i0)
|
|
2406
2482
|
}
|
|
2407
2483
|
case OpCodes.OP_SUCCESS: {
|
|
2408
|
-
return f(self.i0)
|
|
2484
|
+
return f(self.i0)
|
|
2409
2485
|
}
|
|
2410
2486
|
}
|
|
2411
2487
|
})
|
|
2412
2488
|
|
|
2413
2489
|
/** @internal */
|
|
2414
|
-
export const exitFlatMapEffect
|
|
2415
|
-
<
|
|
2416
|
-
f: (a: A) => Effect.Effect<
|
|
2417
|
-
)
|
|
2418
|
-
<
|
|
2419
|
-
self: Exit.Exit<
|
|
2420
|
-
f: (a: A) => Effect.Effect<
|
|
2421
|
-
)
|
|
2422
|
-
|
|
2490
|
+
export const exitFlatMapEffect: {
|
|
2491
|
+
<A, E, A2, E2, R>(
|
|
2492
|
+
f: (a: A) => Effect.Effect<Exit.Exit<A2, E>, E2, R>
|
|
2493
|
+
): (self: Exit.Exit<A, E>) => Effect.Effect<Exit.Exit<A2, E>, E2, R>
|
|
2494
|
+
<A, E, A2, E2, R>(
|
|
2495
|
+
self: Exit.Exit<A, E>,
|
|
2496
|
+
f: (a: A) => Effect.Effect<Exit.Exit<A2, E>, E2, R>
|
|
2497
|
+
): Effect.Effect<Exit.Exit<A2, E>, E2, R>
|
|
2498
|
+
} = dual(2, <A, E, A2, E2, R>(
|
|
2499
|
+
self: Exit.Exit<A, E>,
|
|
2500
|
+
f: (a: A) => Effect.Effect<Exit.Exit<A2, E>, E2, R>
|
|
2501
|
+
): Effect.Effect<Exit.Exit<A2, E>, E2, R> => {
|
|
2423
2502
|
switch (self._tag) {
|
|
2424
2503
|
case OpCodes.OP_FAILURE: {
|
|
2425
2504
|
return succeed(exitFailCause(self.i0))
|
|
@@ -2431,20 +2510,23 @@ export const exitFlatMapEffect = dual<
|
|
|
2431
2510
|
})
|
|
2432
2511
|
|
|
2433
2512
|
/** @internal */
|
|
2434
|
-
export const exitFlatten = <
|
|
2435
|
-
self: Exit.Exit<
|
|
2436
|
-
): Exit.Exit<E |
|
|
2513
|
+
export const exitFlatten = <A, E, E2>(
|
|
2514
|
+
self: Exit.Exit<Exit.Exit<A, E>, E2>
|
|
2515
|
+
): Exit.Exit<A, E | E2> => pipe(self, exitFlatMap(identity))
|
|
2437
2516
|
|
|
2438
2517
|
/** @internal */
|
|
2439
|
-
export const exitForEachEffect
|
|
2440
|
-
<A,
|
|
2441
|
-
f: (a: A) => Effect.Effect<
|
|
2442
|
-
)
|
|
2443
|
-
<
|
|
2444
|
-
self: Exit.Exit<
|
|
2445
|
-
f: (a: A) => Effect.Effect<
|
|
2446
|
-
)
|
|
2447
|
-
|
|
2518
|
+
export const exitForEachEffect: {
|
|
2519
|
+
<A, B, E2, R>(
|
|
2520
|
+
f: (a: A) => Effect.Effect<B, E2, R>
|
|
2521
|
+
): <E>(self: Exit.Exit<A, E>) => Effect.Effect<Exit.Exit<B, E | E2>, never, R>
|
|
2522
|
+
<A, E, B, E2, R>(
|
|
2523
|
+
self: Exit.Exit<A, E>,
|
|
2524
|
+
f: (a: A) => Effect.Effect<B, E2, R>
|
|
2525
|
+
): Effect.Effect<Exit.Exit<B, E | E2>, never, R>
|
|
2526
|
+
} = dual(2, <A, E, B, E2, R>(
|
|
2527
|
+
self: Exit.Exit<A, E>,
|
|
2528
|
+
f: (a: A) => Effect.Effect<B, E2, R>
|
|
2529
|
+
): Effect.Effect<Exit.Exit<B, E | E2>, never, R> => {
|
|
2448
2530
|
switch (self._tag) {
|
|
2449
2531
|
case OpCodes.OP_FAILURE: {
|
|
2450
2532
|
return succeed(exitFailCause(self.i0))
|
|
@@ -2456,60 +2538,52 @@ export const exitForEachEffect = dual<
|
|
|
2456
2538
|
})
|
|
2457
2539
|
|
|
2458
2540
|
/** @internal */
|
|
2459
|
-
export const exitFromEither = <E, A>(either: Either.Either<E, A>): Exit.Exit<
|
|
2541
|
+
export const exitFromEither = <E, A>(either: Either.Either<E, A>): Exit.Exit<A, E> => {
|
|
2460
2542
|
switch (either._tag) {
|
|
2461
|
-
case "Left":
|
|
2462
|
-
return exitFail(either.left)
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
return exitSucceed(either.right) as Exit.Exit<E, A>
|
|
2466
|
-
}
|
|
2543
|
+
case "Left":
|
|
2544
|
+
return exitFail(either.left)
|
|
2545
|
+
case "Right":
|
|
2546
|
+
return exitSucceed(either.right)
|
|
2467
2547
|
}
|
|
2468
2548
|
}
|
|
2469
2549
|
|
|
2470
2550
|
/** @internal */
|
|
2471
|
-
export const exitFromOption = <A>(option: Option.Option<A>): Exit.Exit<
|
|
2551
|
+
export const exitFromOption = <A>(option: Option.Option<A>): Exit.Exit<A, void> => {
|
|
2472
2552
|
switch (option._tag) {
|
|
2473
|
-
case "None":
|
|
2474
|
-
return exitFail(void 0)
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
return exitSucceed(option.value) as Exit.Exit<void, A>
|
|
2478
|
-
}
|
|
2553
|
+
case "None":
|
|
2554
|
+
return exitFail(void 0)
|
|
2555
|
+
case "Some":
|
|
2556
|
+
return exitSucceed(option.value)
|
|
2479
2557
|
}
|
|
2480
2558
|
}
|
|
2481
2559
|
|
|
2482
2560
|
/** @internal */
|
|
2483
2561
|
export const exitGetOrElse = dual<
|
|
2484
|
-
<E, A2>(orElse: (cause: Cause.Cause<E>) => A2) => <
|
|
2485
|
-
<
|
|
2562
|
+
<E, A2>(orElse: (cause: Cause.Cause<E>) => A2) => <A>(self: Exit.Exit<A, E>) => A | A2,
|
|
2563
|
+
<A, E, A2>(self: Exit.Exit<A, E>, orElse: (cause: Cause.Cause<E>) => A2) => A | A2
|
|
2486
2564
|
>(2, (self, orElse) => {
|
|
2487
2565
|
switch (self._tag) {
|
|
2488
|
-
case OpCodes.OP_FAILURE:
|
|
2566
|
+
case OpCodes.OP_FAILURE:
|
|
2489
2567
|
return orElse(self.i0)
|
|
2490
|
-
|
|
2491
|
-
case OpCodes.OP_SUCCESS: {
|
|
2568
|
+
case OpCodes.OP_SUCCESS:
|
|
2492
2569
|
return self.i0
|
|
2493
|
-
}
|
|
2494
2570
|
}
|
|
2495
2571
|
})
|
|
2496
2572
|
|
|
2497
2573
|
/** @internal */
|
|
2498
|
-
export const exitInterrupt = (fiberId: FiberId.FiberId): Exit.Exit<never
|
|
2499
|
-
exitFailCause(internalCause.interrupt(fiberId))
|
|
2574
|
+
export const exitInterrupt = (fiberId: FiberId.FiberId): Exit.Exit<never> =>
|
|
2575
|
+
exitFailCause(internalCause.interrupt(fiberId))
|
|
2500
2576
|
|
|
2501
2577
|
/** @internal */
|
|
2502
2578
|
export const exitMap = dual<
|
|
2503
|
-
<A, B>(f: (a: A) => B) => <E>(self: Exit.Exit<
|
|
2504
|
-
<
|
|
2505
|
-
>(2,
|
|
2579
|
+
<A, B>(f: (a: A) => B) => <E>(self: Exit.Exit<A, E>) => Exit.Exit<B, E>,
|
|
2580
|
+
<A, E, B>(self: Exit.Exit<A, E>, f: (a: A) => B) => Exit.Exit<B, E>
|
|
2581
|
+
>(2, (self, f) => {
|
|
2506
2582
|
switch (self._tag) {
|
|
2507
|
-
case OpCodes.OP_FAILURE:
|
|
2508
|
-
return exitFailCause(self.i0)
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
return exitSucceed(f(self.i0)) as Exit.Exit<E, B>
|
|
2512
|
-
}
|
|
2583
|
+
case OpCodes.OP_FAILURE:
|
|
2584
|
+
return exitFailCause(self.i0)
|
|
2585
|
+
case OpCodes.OP_SUCCESS:
|
|
2586
|
+
return exitSucceed(f(self.i0))
|
|
2513
2587
|
}
|
|
2514
2588
|
})
|
|
2515
2589
|
|
|
@@ -2520,52 +2594,46 @@ export const exitMapBoth = dual<
|
|
|
2520
2594
|
readonly onFailure: (e: E) => E2
|
|
2521
2595
|
readonly onSuccess: (a: A) => A2
|
|
2522
2596
|
}
|
|
2523
|
-
) => (self: Exit.Exit<
|
|
2524
|
-
<
|
|
2525
|
-
self: Exit.Exit<
|
|
2597
|
+
) => (self: Exit.Exit<A, E>) => Exit.Exit<A2, E2>,
|
|
2598
|
+
<A, E, E2, A2>(
|
|
2599
|
+
self: Exit.Exit<A, E>,
|
|
2526
2600
|
options: {
|
|
2527
2601
|
readonly onFailure: (e: E) => E2
|
|
2528
2602
|
readonly onSuccess: (a: A) => A2
|
|
2529
2603
|
}
|
|
2530
|
-
) => Exit.Exit<
|
|
2604
|
+
) => Exit.Exit<A2, E2>
|
|
2531
2605
|
>(2, (self, { onFailure, onSuccess }) => {
|
|
2532
2606
|
switch (self._tag) {
|
|
2533
|
-
case OpCodes.OP_FAILURE:
|
|
2607
|
+
case OpCodes.OP_FAILURE:
|
|
2534
2608
|
return exitFailCause(pipe(self.i0, internalCause.map(onFailure)))
|
|
2535
|
-
|
|
2536
|
-
case OpCodes.OP_SUCCESS: {
|
|
2609
|
+
case OpCodes.OP_SUCCESS:
|
|
2537
2610
|
return exitSucceed(onSuccess(self.i0))
|
|
2538
|
-
}
|
|
2539
2611
|
}
|
|
2540
2612
|
})
|
|
2541
2613
|
|
|
2542
2614
|
/** @internal */
|
|
2543
2615
|
export const exitMapError = dual<
|
|
2544
|
-
<E, E2>(f: (e: E) => E2) => <A>(self: Exit.Exit<
|
|
2545
|
-
<
|
|
2546
|
-
>(2,
|
|
2616
|
+
<E, E2>(f: (e: E) => E2) => <A>(self: Exit.Exit<A, E>) => Exit.Exit<A, E2>,
|
|
2617
|
+
<A, E, E2>(self: Exit.Exit<A, E>, f: (e: E) => E2) => Exit.Exit<A, E2>
|
|
2618
|
+
>(2, (self, f) => {
|
|
2547
2619
|
switch (self._tag) {
|
|
2548
|
-
case OpCodes.OP_FAILURE:
|
|
2549
|
-
return exitFailCause(pipe(self.i0, internalCause.map(f)))
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
return exitSucceed(self.i0) as Exit.Exit<E2, A>
|
|
2553
|
-
}
|
|
2620
|
+
case OpCodes.OP_FAILURE:
|
|
2621
|
+
return exitFailCause(pipe(self.i0, internalCause.map(f)))
|
|
2622
|
+
case OpCodes.OP_SUCCESS:
|
|
2623
|
+
return exitSucceed(self.i0)
|
|
2554
2624
|
}
|
|
2555
2625
|
})
|
|
2556
2626
|
|
|
2557
2627
|
/** @internal */
|
|
2558
2628
|
export const exitMapErrorCause = dual<
|
|
2559
|
-
<E, E2>(f: (cause: Cause.Cause<E>) => Cause.Cause<E2>) => <A>(self: Exit.Exit<
|
|
2560
|
-
<E, A, E2>(self: Exit.Exit<
|
|
2561
|
-
>(2,
|
|
2629
|
+
<E, E2>(f: (cause: Cause.Cause<E>) => Cause.Cause<E2>) => <A>(self: Exit.Exit<A, E>) => Exit.Exit<A, E2>,
|
|
2630
|
+
<E, A, E2>(self: Exit.Exit<A, E>, f: (cause: Cause.Cause<E>) => Cause.Cause<E2>) => Exit.Exit<A, E2>
|
|
2631
|
+
>(2, (self, f) => {
|
|
2562
2632
|
switch (self._tag) {
|
|
2563
|
-
case OpCodes.OP_FAILURE:
|
|
2564
|
-
return exitFailCause(f(self.i0))
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
return exitSucceed(self.i0) as Exit.Exit<E2, A>
|
|
2568
|
-
}
|
|
2633
|
+
case OpCodes.OP_FAILURE:
|
|
2634
|
+
return exitFailCause(f(self.i0))
|
|
2635
|
+
case OpCodes.OP_SUCCESS:
|
|
2636
|
+
return exitSucceed(self.i0)
|
|
2569
2637
|
}
|
|
2570
2638
|
})
|
|
2571
2639
|
|
|
@@ -2574,62 +2642,58 @@ export const exitMatch = dual<
|
|
|
2574
2642
|
<E, A, Z1, Z2>(options: {
|
|
2575
2643
|
readonly onFailure: (cause: Cause.Cause<E>) => Z1
|
|
2576
2644
|
readonly onSuccess: (a: A) => Z2
|
|
2577
|
-
}) => (self: Exit.Exit<
|
|
2578
|
-
<
|
|
2645
|
+
}) => (self: Exit.Exit<A, E>) => Z1 | Z2,
|
|
2646
|
+
<A, E, Z1, Z2>(self: Exit.Exit<A, E>, options: {
|
|
2579
2647
|
readonly onFailure: (cause: Cause.Cause<E>) => Z1
|
|
2580
2648
|
readonly onSuccess: (a: A) => Z2
|
|
2581
2649
|
}) => Z1 | Z2
|
|
2582
2650
|
>(2, (self, { onFailure, onSuccess }) => {
|
|
2583
2651
|
switch (self._tag) {
|
|
2584
|
-
case OpCodes.OP_FAILURE:
|
|
2652
|
+
case OpCodes.OP_FAILURE:
|
|
2585
2653
|
return onFailure(self.i0)
|
|
2586
|
-
|
|
2587
|
-
case OpCodes.OP_SUCCESS: {
|
|
2654
|
+
case OpCodes.OP_SUCCESS:
|
|
2588
2655
|
return onSuccess(self.i0)
|
|
2589
|
-
}
|
|
2590
2656
|
}
|
|
2591
2657
|
})
|
|
2592
2658
|
|
|
2593
2659
|
/** @internal */
|
|
2594
2660
|
export const exitMatchEffect = dual<
|
|
2595
|
-
<E,
|
|
2661
|
+
<E, A2, E2, R, A, A3, E3, R2>(
|
|
2596
2662
|
options: {
|
|
2597
|
-
readonly onFailure: (cause: Cause.Cause<E>) => Effect.Effect<
|
|
2598
|
-
readonly onSuccess: (a: A) => Effect.Effect<
|
|
2663
|
+
readonly onFailure: (cause: Cause.Cause<E>) => Effect.Effect<A2, E2, R>
|
|
2664
|
+
readonly onSuccess: (a: A) => Effect.Effect<A3, E3, R2>
|
|
2599
2665
|
}
|
|
2600
|
-
) => (self: Exit.Exit<
|
|
2601
|
-
<
|
|
2602
|
-
self: Exit.Exit<
|
|
2666
|
+
) => (self: Exit.Exit<A, E>) => Effect.Effect<A2 | A3, E2 | E3, R | R2>,
|
|
2667
|
+
<A, E, A2, E2, R, A3, E3, R2>(
|
|
2668
|
+
self: Exit.Exit<A, E>,
|
|
2603
2669
|
options: {
|
|
2604
|
-
readonly onFailure: (cause: Cause.Cause<E>) => Effect.Effect<
|
|
2605
|
-
readonly onSuccess: (a: A) => Effect.Effect<
|
|
2670
|
+
readonly onFailure: (cause: Cause.Cause<E>) => Effect.Effect<A2, E2, R>
|
|
2671
|
+
readonly onSuccess: (a: A) => Effect.Effect<A3, E3, R2>
|
|
2606
2672
|
}
|
|
2607
|
-
) => Effect.Effect<
|
|
2673
|
+
) => Effect.Effect<A2 | A3, E2 | E3, R | R2>
|
|
2608
2674
|
>(2, (self, { onFailure, onSuccess }) => {
|
|
2609
2675
|
switch (self._tag) {
|
|
2610
|
-
case OpCodes.OP_FAILURE:
|
|
2676
|
+
case OpCodes.OP_FAILURE:
|
|
2611
2677
|
return onFailure(self.i0)
|
|
2612
|
-
|
|
2613
|
-
case OpCodes.OP_SUCCESS: {
|
|
2678
|
+
case OpCodes.OP_SUCCESS:
|
|
2614
2679
|
return onSuccess(self.i0)
|
|
2615
|
-
}
|
|
2616
2680
|
}
|
|
2617
2681
|
})
|
|
2618
2682
|
|
|
2619
2683
|
/** @internal */
|
|
2620
|
-
export const exitSucceed = <A>(value: A): Exit.Exit<
|
|
2684
|
+
export const exitSucceed = <A>(value: A): Exit.Exit<A> => {
|
|
2621
2685
|
const effect = new EffectPrimitiveSuccess(OpCodes.OP_SUCCESS) as any
|
|
2622
2686
|
effect.i0 = value
|
|
2623
2687
|
return effect
|
|
2624
2688
|
}
|
|
2625
2689
|
|
|
2626
2690
|
/** @internal */
|
|
2627
|
-
export const exitUnit: Exit.Exit<
|
|
2691
|
+
export const exitUnit: Exit.Exit<void> = exitSucceed(void 0)
|
|
2628
2692
|
|
|
2629
2693
|
/** @internal */
|
|
2630
2694
|
export const exitZip = dual<
|
|
2631
|
-
<
|
|
2632
|
-
<E,
|
|
2695
|
+
<A2, E2>(that: Exit.Exit<A2, E2>) => <A, E>(self: Exit.Exit<A, E>) => Exit.Exit<[A, A2], E | E2>,
|
|
2696
|
+
<A, E, A2, E2>(self: Exit.Exit<A, E>, that: Exit.Exit<A2, E2>) => Exit.Exit<[A, A2], E | E2>
|
|
2633
2697
|
>(2, (self, that) =>
|
|
2634
2698
|
exitZipWith(self, that, {
|
|
2635
2699
|
onSuccess: (a, a2) => [a, a2],
|
|
@@ -2638,8 +2702,8 @@ export const exitZip = dual<
|
|
|
2638
2702
|
|
|
2639
2703
|
/** @internal */
|
|
2640
2704
|
export const exitZipLeft = dual<
|
|
2641
|
-
<
|
|
2642
|
-
<E,
|
|
2705
|
+
<A2, E2>(that: Exit.Exit<A2, E2>) => <A, E>(self: Exit.Exit<A, E>) => Exit.Exit<A, E | E2>,
|
|
2706
|
+
<A, E, A2, E2>(self: Exit.Exit<A, E>, that: Exit.Exit<A2, E2>) => Exit.Exit<A, E | E2>
|
|
2643
2707
|
>(2, (self, that) =>
|
|
2644
2708
|
exitZipWith(self, that, {
|
|
2645
2709
|
onSuccess: (a, _) => a,
|
|
@@ -2648,8 +2712,8 @@ export const exitZipLeft = dual<
|
|
|
2648
2712
|
|
|
2649
2713
|
/** @internal */
|
|
2650
2714
|
export const exitZipRight = dual<
|
|
2651
|
-
<
|
|
2652
|
-
<E,
|
|
2715
|
+
<A2, E2>(that: Exit.Exit<A2, E2>) => <A, E>(self: Exit.Exit<A, E>) => Exit.Exit<A2, E | E2>,
|
|
2716
|
+
<A, E, A2, E2>(self: Exit.Exit<A, E>, that: Exit.Exit<A2, E2>) => Exit.Exit<A2, E | E2>
|
|
2653
2717
|
>(2, (self, that) =>
|
|
2654
2718
|
exitZipWith(self, that, {
|
|
2655
2719
|
onSuccess: (_, a2) => a2,
|
|
@@ -2658,8 +2722,8 @@ export const exitZipRight = dual<
|
|
|
2658
2722
|
|
|
2659
2723
|
/** @internal */
|
|
2660
2724
|
export const exitZipPar = dual<
|
|
2661
|
-
<
|
|
2662
|
-
<E,
|
|
2725
|
+
<A2, E2>(that: Exit.Exit<A2, E2>) => <A, E>(self: Exit.Exit<A, E>) => Exit.Exit<[A, A2], E | E2>,
|
|
2726
|
+
<A, E, A2, E2>(self: Exit.Exit<A, E>, that: Exit.Exit<A2, E2>) => Exit.Exit<[A, A2], E | E2>
|
|
2663
2727
|
>(2, (self, that) =>
|
|
2664
2728
|
exitZipWith(self, that, {
|
|
2665
2729
|
onSuccess: (a, a2) => [a, a2],
|
|
@@ -2668,8 +2732,8 @@ export const exitZipPar = dual<
|
|
|
2668
2732
|
|
|
2669
2733
|
/** @internal */
|
|
2670
2734
|
export const exitZipParLeft = dual<
|
|
2671
|
-
<
|
|
2672
|
-
<E,
|
|
2735
|
+
<A2, E2>(that: Exit.Exit<A2, E2>) => <A, E>(self: Exit.Exit<A, E>) => Exit.Exit<A, E | E2>,
|
|
2736
|
+
<A, E, A2, E2>(self: Exit.Exit<A, E>, that: Exit.Exit<A2, E2>) => Exit.Exit<A, E | E2>
|
|
2673
2737
|
>(2, (self, that) =>
|
|
2674
2738
|
exitZipWith(self, that, {
|
|
2675
2739
|
onSuccess: (a, _) => a,
|
|
@@ -2678,8 +2742,8 @@ export const exitZipParLeft = dual<
|
|
|
2678
2742
|
|
|
2679
2743
|
/** @internal */
|
|
2680
2744
|
export const exitZipParRight = dual<
|
|
2681
|
-
<
|
|
2682
|
-
<E,
|
|
2745
|
+
<A2, E2>(that: Exit.Exit<A2, E2>) => <A, E>(self: Exit.Exit<A, E>) => Exit.Exit<A2, E | E2>,
|
|
2746
|
+
<A, E, A2, E2>(self: Exit.Exit<A, E>, that: Exit.Exit<A2, E2>) => Exit.Exit<A2, E | E2>
|
|
2683
2747
|
>(2, (self, that) =>
|
|
2684
2748
|
exitZipWith(self, that, {
|
|
2685
2749
|
onSuccess: (_, a2) => a2,
|
|
@@ -2688,21 +2752,21 @@ export const exitZipParRight = dual<
|
|
|
2688
2752
|
|
|
2689
2753
|
/** @internal */
|
|
2690
2754
|
export const exitZipWith = dual<
|
|
2691
|
-
<
|
|
2692
|
-
that: Exit.Exit<
|
|
2755
|
+
<B, E2, A, C, E>(
|
|
2756
|
+
that: Exit.Exit<B, E2>,
|
|
2693
2757
|
options: {
|
|
2694
2758
|
readonly onSuccess: (a: A, b: B) => C
|
|
2695
2759
|
readonly onFailure: (cause: Cause.Cause<E>, cause2: Cause.Cause<E2>) => Cause.Cause<E | E2>
|
|
2696
2760
|
}
|
|
2697
|
-
) => (self: Exit.Exit<
|
|
2698
|
-
<
|
|
2699
|
-
self: Exit.Exit<
|
|
2700
|
-
that: Exit.Exit<
|
|
2761
|
+
) => (self: Exit.Exit<A, E>) => Exit.Exit<C, E | E2>,
|
|
2762
|
+
<A, E, B, E2, C>(
|
|
2763
|
+
self: Exit.Exit<A, E>,
|
|
2764
|
+
that: Exit.Exit<B, E2>,
|
|
2701
2765
|
options: {
|
|
2702
2766
|
readonly onSuccess: (a: A, b: B) => C
|
|
2703
2767
|
readonly onFailure: (cause: Cause.Cause<E>, cause2: Cause.Cause<E2>) => Cause.Cause<E | E2>
|
|
2704
2768
|
}
|
|
2705
|
-
) => Exit.Exit<E | E2
|
|
2769
|
+
) => Exit.Exit<C, E | E2>
|
|
2706
2770
|
>(3, (
|
|
2707
2771
|
self,
|
|
2708
2772
|
that,
|
|
@@ -2711,9 +2775,8 @@ export const exitZipWith = dual<
|
|
|
2711
2775
|
switch (self._tag) {
|
|
2712
2776
|
case OpCodes.OP_FAILURE: {
|
|
2713
2777
|
switch (that._tag) {
|
|
2714
|
-
case OpCodes.OP_SUCCESS:
|
|
2778
|
+
case OpCodes.OP_SUCCESS:
|
|
2715
2779
|
return exitFailCause(self.i0)
|
|
2716
|
-
}
|
|
2717
2780
|
case OpCodes.OP_FAILURE: {
|
|
2718
2781
|
return exitFailCause(onFailure(self.i0, that.i0))
|
|
2719
2782
|
}
|
|
@@ -2721,21 +2784,19 @@ export const exitZipWith = dual<
|
|
|
2721
2784
|
}
|
|
2722
2785
|
case OpCodes.OP_SUCCESS: {
|
|
2723
2786
|
switch (that._tag) {
|
|
2724
|
-
case OpCodes.OP_SUCCESS:
|
|
2787
|
+
case OpCodes.OP_SUCCESS:
|
|
2725
2788
|
return exitSucceed(onSuccess(self.i0, that.i0))
|
|
2726
|
-
|
|
2727
|
-
case OpCodes.OP_FAILURE: {
|
|
2789
|
+
case OpCodes.OP_FAILURE:
|
|
2728
2790
|
return exitFailCause(that.i0)
|
|
2729
|
-
}
|
|
2730
2791
|
}
|
|
2731
2792
|
}
|
|
2732
2793
|
}
|
|
2733
2794
|
})
|
|
2734
2795
|
|
|
2735
|
-
const exitCollectAllInternal = <
|
|
2736
|
-
exits: Iterable<Exit.Exit<
|
|
2796
|
+
const exitCollectAllInternal = <A, E>(
|
|
2797
|
+
exits: Iterable<Exit.Exit<A, E>>,
|
|
2737
2798
|
combineCauses: (causeA: Cause.Cause<E>, causeB: Cause.Cause<E>) => Cause.Cause<E>
|
|
2738
|
-
): Option.Option<Exit.Exit<
|
|
2799
|
+
): Option.Option<Exit.Exit<Array<A>, E>> => {
|
|
2739
2800
|
const list = Chunk.fromIterable(exits)
|
|
2740
2801
|
if (!Chunk.isNonEmpty(list)) {
|
|
2741
2802
|
return Option.none()
|
|
@@ -2764,7 +2825,7 @@ const exitCollectAllInternal = <E, A>(
|
|
|
2764
2825
|
// -----------------------------------------------------------------------------
|
|
2765
2826
|
|
|
2766
2827
|
/** @internal */
|
|
2767
|
-
export const deferredUnsafeMake = <
|
|
2828
|
+
export const deferredUnsafeMake = <A, E = never>(fiberId: FiberId.FiberId): Deferred.Deferred<A, E> => ({
|
|
2768
2829
|
[deferred.DeferredTypeId]: deferred.deferredVariance,
|
|
2769
2830
|
state: MutableRef.make(deferred.pending([])),
|
|
2770
2831
|
blockingOn: fiberId,
|
|
@@ -2774,16 +2835,16 @@ export const deferredUnsafeMake = <E, A>(fiberId: FiberId.FiberId): Deferred.Def
|
|
|
2774
2835
|
})
|
|
2775
2836
|
|
|
2776
2837
|
/* @internal */
|
|
2777
|
-
export const deferredMake = <
|
|
2778
|
-
flatMap(fiberId, (id) => deferredMakeAs<
|
|
2838
|
+
export const deferredMake = <A, E = never>(): Effect.Effect<Deferred.Deferred<A, E>> =>
|
|
2839
|
+
flatMap(fiberId, (id) => deferredMakeAs<A, E>(id))
|
|
2779
2840
|
|
|
2780
2841
|
/* @internal */
|
|
2781
|
-
export const deferredMakeAs = <
|
|
2782
|
-
sync(() => deferredUnsafeMake<
|
|
2842
|
+
export const deferredMakeAs = <A, E = never>(fiberId: FiberId.FiberId): Effect.Effect<Deferred.Deferred<A, E>> =>
|
|
2843
|
+
sync(() => deferredUnsafeMake<A, E>(fiberId))
|
|
2783
2844
|
|
|
2784
2845
|
/* @internal */
|
|
2785
|
-
export const deferredAwait = <
|
|
2786
|
-
asyncEither<
|
|
2846
|
+
export const deferredAwait = <A, E>(self: Deferred.Deferred<A, E>): Effect.Effect<A, E> =>
|
|
2847
|
+
asyncEither<A, E>((k) => {
|
|
2787
2848
|
const state = MutableRef.get(self.state)
|
|
2788
2849
|
switch (state._tag) {
|
|
2789
2850
|
case DeferredOpCodes.OP_STATE_DONE: {
|
|
@@ -2800,15 +2861,19 @@ export const deferredAwait = <E, A>(self: Deferred.Deferred<E, A>): Effect.Effec
|
|
|
2800
2861
|
}, self.blockingOn)
|
|
2801
2862
|
|
|
2802
2863
|
/* @internal */
|
|
2803
|
-
export const deferredComplete
|
|
2804
|
-
<
|
|
2805
|
-
<
|
|
2806
|
-
|
|
2864
|
+
export const deferredComplete: {
|
|
2865
|
+
<A, E>(effect: Effect.Effect<A, E>): (self: Deferred.Deferred<A, E>) => Effect.Effect<boolean>
|
|
2866
|
+
<A, E>(self: Deferred.Deferred<A, E>, effect: Effect.Effect<A, E>): Effect.Effect<boolean>
|
|
2867
|
+
} = dual(
|
|
2868
|
+
2,
|
|
2869
|
+
<A, E>(self: Deferred.Deferred<A, E>, effect: Effect.Effect<A, E>): Effect.Effect<boolean> =>
|
|
2870
|
+
intoDeferred(effect, self)
|
|
2871
|
+
)
|
|
2807
2872
|
|
|
2808
2873
|
/* @internal */
|
|
2809
2874
|
export const deferredCompleteWith = dual<
|
|
2810
|
-
<
|
|
2811
|
-
<
|
|
2875
|
+
<A, E>(effect: Effect.Effect<A, E>) => (self: Deferred.Deferred<A, E>) => Effect.Effect<boolean>,
|
|
2876
|
+
<A, E>(self: Deferred.Deferred<A, E>, effect: Effect.Effect<A, E>) => Effect.Effect<boolean>
|
|
2812
2877
|
>(2, (self, effect) =>
|
|
2813
2878
|
sync(() => {
|
|
2814
2879
|
const state = MutableRef.get(self.state)
|
|
@@ -2828,64 +2893,64 @@ export const deferredCompleteWith = dual<
|
|
|
2828
2893
|
|
|
2829
2894
|
/* @internal */
|
|
2830
2895
|
export const deferredDone = dual<
|
|
2831
|
-
<
|
|
2832
|
-
<
|
|
2896
|
+
<A, E>(exit: Exit.Exit<A, E>) => (self: Deferred.Deferred<A, E>) => Effect.Effect<boolean>,
|
|
2897
|
+
<A, E>(self: Deferred.Deferred<A, E>, exit: Exit.Exit<A, E>) => Effect.Effect<boolean>
|
|
2833
2898
|
>(2, (self, exit) => deferredCompleteWith(self, exit))
|
|
2834
2899
|
|
|
2835
2900
|
/* @internal */
|
|
2836
2901
|
export const deferredFail = dual<
|
|
2837
|
-
<E>(error: E) => <A>(self: Deferred.Deferred<
|
|
2838
|
-
<
|
|
2902
|
+
<E>(error: E) => <A>(self: Deferred.Deferred<A, E>) => Effect.Effect<boolean>,
|
|
2903
|
+
<A, E>(self: Deferred.Deferred<A, E>, error: E) => Effect.Effect<boolean>
|
|
2839
2904
|
>(2, (self, error) => deferredCompleteWith(self, fail(error)))
|
|
2840
2905
|
|
|
2841
2906
|
/* @internal */
|
|
2842
2907
|
export const deferredFailSync = dual<
|
|
2843
|
-
<E>(evaluate: LazyArg<E>) => <A>(self: Deferred.Deferred<
|
|
2844
|
-
<
|
|
2908
|
+
<E>(evaluate: LazyArg<E>) => <A>(self: Deferred.Deferred<A, E>) => Effect.Effect<boolean>,
|
|
2909
|
+
<A, E>(self: Deferred.Deferred<A, E>, evaluate: LazyArg<E>) => Effect.Effect<boolean>
|
|
2845
2910
|
>(2, (self, evaluate) => deferredCompleteWith(self, failSync(evaluate)))
|
|
2846
2911
|
|
|
2847
2912
|
/* @internal */
|
|
2848
2913
|
export const deferredFailCause = dual<
|
|
2849
|
-
<E>(cause: Cause.Cause<E>) => <A>(self: Deferred.Deferred<
|
|
2850
|
-
<
|
|
2914
|
+
<E>(cause: Cause.Cause<E>) => <A>(self: Deferred.Deferred<A, E>) => Effect.Effect<boolean>,
|
|
2915
|
+
<A, E>(self: Deferred.Deferred<A, E>, cause: Cause.Cause<E>) => Effect.Effect<boolean>
|
|
2851
2916
|
>(2, (self, cause) => deferredCompleteWith(self, failCause(cause)))
|
|
2852
2917
|
|
|
2853
2918
|
/* @internal */
|
|
2854
2919
|
export const deferredFailCauseSync = dual<
|
|
2855
|
-
<E>(evaluate: LazyArg<Cause.Cause<E>>) => <A>(self: Deferred.Deferred<
|
|
2856
|
-
<
|
|
2920
|
+
<E>(evaluate: LazyArg<Cause.Cause<E>>) => <A>(self: Deferred.Deferred<A, E>) => Effect.Effect<boolean>,
|
|
2921
|
+
<A, E>(self: Deferred.Deferred<A, E>, evaluate: LazyArg<Cause.Cause<E>>) => Effect.Effect<boolean>
|
|
2857
2922
|
>(2, (self, evaluate) => deferredCompleteWith(self, failCauseSync(evaluate)))
|
|
2858
2923
|
|
|
2859
2924
|
/* @internal */
|
|
2860
2925
|
export const deferredDie = dual<
|
|
2861
|
-
(defect: unknown) => <
|
|
2862
|
-
<
|
|
2926
|
+
(defect: unknown) => <A, E>(self: Deferred.Deferred<A, E>) => Effect.Effect<boolean>,
|
|
2927
|
+
<A, E>(self: Deferred.Deferred<A, E>, defect: unknown) => Effect.Effect<boolean>
|
|
2863
2928
|
>(2, (self, defect) => deferredCompleteWith(self, die(defect)))
|
|
2864
2929
|
|
|
2865
2930
|
/* @internal */
|
|
2866
2931
|
export const deferredDieSync = dual<
|
|
2867
|
-
(evaluate: LazyArg<unknown>) => <
|
|
2868
|
-
<
|
|
2932
|
+
(evaluate: LazyArg<unknown>) => <A, E>(self: Deferred.Deferred<A, E>) => Effect.Effect<boolean>,
|
|
2933
|
+
<A, E>(self: Deferred.Deferred<A, E>, evaluate: LazyArg<unknown>) => Effect.Effect<boolean>
|
|
2869
2934
|
>(2, (self, evaluate) => deferredCompleteWith(self, dieSync(evaluate)))
|
|
2870
2935
|
|
|
2871
2936
|
/* @internal */
|
|
2872
|
-
export const deferredInterrupt = <
|
|
2937
|
+
export const deferredInterrupt = <A, E>(self: Deferred.Deferred<A, E>): Effect.Effect<boolean> =>
|
|
2873
2938
|
flatMap(fiberId, (fiberId) => deferredCompleteWith(self, interruptWith(fiberId)))
|
|
2874
2939
|
|
|
2875
2940
|
/* @internal */
|
|
2876
2941
|
export const deferredInterruptWith = dual<
|
|
2877
|
-
(fiberId: FiberId.FiberId) => <
|
|
2878
|
-
<
|
|
2942
|
+
(fiberId: FiberId.FiberId) => <A, E>(self: Deferred.Deferred<A, E>) => Effect.Effect<boolean>,
|
|
2943
|
+
<A, E>(self: Deferred.Deferred<A, E>, fiberId: FiberId.FiberId) => Effect.Effect<boolean>
|
|
2879
2944
|
>(2, (self, fiberId) => deferredCompleteWith(self, interruptWith(fiberId)))
|
|
2880
2945
|
|
|
2881
2946
|
/* @internal */
|
|
2882
|
-
export const deferredIsDone = <
|
|
2947
|
+
export const deferredIsDone = <A, E>(self: Deferred.Deferred<A, E>): Effect.Effect<boolean> =>
|
|
2883
2948
|
sync(() => MutableRef.get(self.state)._tag === DeferredOpCodes.OP_STATE_DONE)
|
|
2884
2949
|
|
|
2885
2950
|
/* @internal */
|
|
2886
|
-
export const deferredPoll = <
|
|
2887
|
-
self: Deferred.Deferred<
|
|
2888
|
-
): Effect.Effect<
|
|
2951
|
+
export const deferredPoll = <A, E>(
|
|
2952
|
+
self: Deferred.Deferred<A, E>
|
|
2953
|
+
): Effect.Effect<Option.Option<Effect.Effect<A, E>>> =>
|
|
2889
2954
|
sync(() => {
|
|
2890
2955
|
const state = MutableRef.get(self.state)
|
|
2891
2956
|
switch (state._tag) {
|
|
@@ -2900,18 +2965,18 @@ export const deferredPoll = <E, A>(
|
|
|
2900
2965
|
|
|
2901
2966
|
/* @internal */
|
|
2902
2967
|
export const deferredSucceed = dual<
|
|
2903
|
-
<A>(value: A) => <E>(self: Deferred.Deferred<
|
|
2904
|
-
<
|
|
2968
|
+
<A>(value: A) => <E>(self: Deferred.Deferred<A, E>) => Effect.Effect<boolean>,
|
|
2969
|
+
<A, E>(self: Deferred.Deferred<A, E>, value: A) => Effect.Effect<boolean>
|
|
2905
2970
|
>(2, (self, value) => deferredCompleteWith(self, succeed(value)))
|
|
2906
2971
|
|
|
2907
2972
|
/* @internal */
|
|
2908
2973
|
export const deferredSync = dual<
|
|
2909
|
-
<A>(evaluate: LazyArg<A>) => <E>(self: Deferred.Deferred<
|
|
2910
|
-
<
|
|
2974
|
+
<A>(evaluate: LazyArg<A>) => <E>(self: Deferred.Deferred<A, E>) => Effect.Effect<boolean>,
|
|
2975
|
+
<A, E>(self: Deferred.Deferred<A, E>, evaluate: LazyArg<A>) => Effect.Effect<boolean>
|
|
2911
2976
|
>(2, (self, evaluate) => deferredCompleteWith(self, sync(evaluate)))
|
|
2912
2977
|
|
|
2913
2978
|
/** @internal */
|
|
2914
|
-
export const deferredUnsafeDone = <
|
|
2979
|
+
export const deferredUnsafeDone = <A, E>(self: Deferred.Deferred<A, E>, effect: Effect.Effect<A, E>): void => {
|
|
2915
2980
|
const state = MutableRef.get(self.state)
|
|
2916
2981
|
if (state._tag === DeferredOpCodes.OP_STATE_PENDING) {
|
|
2917
2982
|
pipe(self.state, MutableRef.set(deferred.done(effect)))
|
|
@@ -2921,10 +2986,10 @@ export const deferredUnsafeDone = <E, A>(self: Deferred.Deferred<E, A>, effect:
|
|
|
2921
2986
|
}
|
|
2922
2987
|
}
|
|
2923
2988
|
|
|
2924
|
-
const deferredInterruptJoiner = <
|
|
2925
|
-
self: Deferred.Deferred<
|
|
2926
|
-
joiner: (effect: Effect.Effect<
|
|
2927
|
-
): Effect.Effect<
|
|
2989
|
+
const deferredInterruptJoiner = <A, E>(
|
|
2990
|
+
self: Deferred.Deferred<A, E>,
|
|
2991
|
+
joiner: (effect: Effect.Effect<A, E>) => void
|
|
2992
|
+
): Effect.Effect<void> =>
|
|
2928
2993
|
sync(() => {
|
|
2929
2994
|
const state = MutableRef.get(self.state)
|
|
2930
2995
|
if (state._tag === DeferredOpCodes.OP_STATE_PENDING) {
|
|
@@ -2942,50 +3007,49 @@ const deferredInterruptJoiner = <E, A>(
|
|
|
2942
3007
|
const constContext = fiberRefGet(currentContext)
|
|
2943
3008
|
|
|
2944
3009
|
/* @internal */
|
|
2945
|
-
export const context = <R>(): Effect.Effect<R
|
|
2946
|
-
constContext as Effect.Effect<never, never, Context.Context<R>>
|
|
3010
|
+
export const context = <R>(): Effect.Effect<Context.Context<R>, never, R> => constContext as any
|
|
2947
3011
|
|
|
2948
3012
|
/* @internal */
|
|
2949
3013
|
export const contextWith = <R0, A>(
|
|
2950
3014
|
f: (context: Context.Context<R0>) => A
|
|
2951
|
-
): Effect.Effect<
|
|
3015
|
+
): Effect.Effect<A, never, R0> => map(context<R0>(), f)
|
|
2952
3016
|
|
|
2953
3017
|
/* @internal */
|
|
2954
|
-
export const contextWithEffect = <
|
|
2955
|
-
f: (context: Context.Context<R0>) => Effect.Effect<
|
|
2956
|
-
): Effect.Effect<R | R0
|
|
3018
|
+
export const contextWithEffect = <R0, A, E, R>(
|
|
3019
|
+
f: (context: Context.Context<R0>) => Effect.Effect<A, E, R>
|
|
3020
|
+
): Effect.Effect<A, E, R | R0> => flatMap(context<R0>(), f)
|
|
2957
3021
|
|
|
2958
3022
|
/* @internal */
|
|
2959
3023
|
export const provideContext = dual<
|
|
2960
|
-
<R>(context: Context.Context<R>) => <
|
|
2961
|
-
<
|
|
2962
|
-
>(2, <
|
|
3024
|
+
<R>(context: Context.Context<R>) => <A, E>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E>,
|
|
3025
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, context: Context.Context<R>) => Effect.Effect<A, E>
|
|
3026
|
+
>(2, <A, E, R>(self: Effect.Effect<A, E, R>, context: Context.Context<R>) =>
|
|
2963
3027
|
fiberRefLocally(
|
|
2964
3028
|
currentContext,
|
|
2965
3029
|
context
|
|
2966
|
-
)(self as Effect.Effect<
|
|
3030
|
+
)(self as Effect.Effect<A, E>))
|
|
2967
3031
|
|
|
2968
3032
|
/* @internal */
|
|
2969
3033
|
export const provideSomeContext = dual<
|
|
2970
|
-
<R>(context: Context.Context<R>) => <
|
|
2971
|
-
<
|
|
2972
|
-
>(2, <
|
|
3034
|
+
<R>(context: Context.Context<R>) => <A, E, R1>(self: Effect.Effect<A, E, R1>) => Effect.Effect<A, E, Exclude<R1, R>>,
|
|
3035
|
+
<A, E, R1, R>(self: Effect.Effect<A, E, R1>, context: Context.Context<R>) => Effect.Effect<A, E, Exclude<R1, R>>
|
|
3036
|
+
>(2, <A, E, R1, R>(self: Effect.Effect<A, E, R1>, context: Context.Context<R>) =>
|
|
2973
3037
|
fiberRefLocallyWith(
|
|
2974
3038
|
currentContext,
|
|
2975
3039
|
(parent) => Context.merge(parent, context)
|
|
2976
|
-
)(self as Effect.Effect<
|
|
3040
|
+
)(self as Effect.Effect<A, E>))
|
|
2977
3041
|
|
|
2978
3042
|
/* @internal */
|
|
2979
3043
|
export const mapInputContext = dual<
|
|
2980
3044
|
<R0, R>(
|
|
2981
3045
|
f: (context: Context.Context<R0>) => Context.Context<R>
|
|
2982
|
-
) => <
|
|
2983
|
-
<
|
|
2984
|
-
self: Effect.Effect<
|
|
3046
|
+
) => <A, E>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R0>,
|
|
3047
|
+
<A, E, R, R0>(
|
|
3048
|
+
self: Effect.Effect<A, E, R>,
|
|
2985
3049
|
f: (context: Context.Context<R0>) => Context.Context<R>
|
|
2986
|
-
) => Effect.Effect<
|
|
2987
|
-
>(2, <
|
|
2988
|
-
self: Effect.Effect<
|
|
3050
|
+
) => Effect.Effect<A, E, R0>
|
|
3051
|
+
>(2, <A, E, R, R0>(
|
|
3052
|
+
self: Effect.Effect<A, E, R>,
|
|
2989
3053
|
f: (context: Context.Context<R0>) => Context.Context<R>
|
|
2990
3054
|
) => contextWithEffect((context: Context.Context<R0>) => provideContext(self, f(context))))
|
|
2991
3055
|
|
|
@@ -2994,7 +3058,9 @@ export const mapInputContext = dual<
|
|
|
2994
3058
|
// -----------------------------------------------------------------------------
|
|
2995
3059
|
|
|
2996
3060
|
/** @internal */
|
|
2997
|
-
export const currentSpanFromFiber = <
|
|
2998
|
-
const span = fiber.getFiberRef(currentContext).unsafeMap.get(internalTracer.spanTag) as
|
|
3061
|
+
export const currentSpanFromFiber = <A, E>(fiber: Fiber.RuntimeFiber<A, E>): Option.Option<Tracer.Span> => {
|
|
3062
|
+
const span = fiber.getFiberRef(currentContext).unsafeMap.get(internalTracer.spanTag.key) as
|
|
3063
|
+
| Tracer.ParentSpan
|
|
3064
|
+
| undefined
|
|
2999
3065
|
return span !== undefined && span._tag === "Span" ? Option.some(span) : Option.none()
|
|
3000
3066
|
}
|