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
|
@@ -40,21 +40,21 @@ import * as internalTracer from "./tracer.js"
|
|
|
40
40
|
/* @internal */
|
|
41
41
|
export const annotateLogs = dual<
|
|
42
42
|
{
|
|
43
|
-
(key: string, value: unknown): <
|
|
43
|
+
(key: string, value: unknown): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
44
44
|
(
|
|
45
45
|
values: Record<string, unknown>
|
|
46
|
-
): <
|
|
46
|
+
): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
|
-
<
|
|
50
|
-
<
|
|
49
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, key: string, value: unknown): Effect.Effect<A, E, R>
|
|
50
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, values: Record<string, unknown>): Effect.Effect<A, E, R>
|
|
51
51
|
}
|
|
52
52
|
>(
|
|
53
53
|
(args) => core.isEffect(args[0]),
|
|
54
|
-
function<
|
|
54
|
+
function<A, E, R>() {
|
|
55
55
|
const args = arguments
|
|
56
56
|
return core.fiberRefLocallyWith(
|
|
57
|
-
args[0] as Effect.Effect<
|
|
57
|
+
args[0] as Effect.Effect<A, E, R>,
|
|
58
58
|
core.currentLogAnnotations,
|
|
59
59
|
typeof args[1] === "string"
|
|
60
60
|
? HashMap.set(args[1], args[2])
|
|
@@ -68,19 +68,19 @@ export const annotateLogs = dual<
|
|
|
68
68
|
)
|
|
69
69
|
|
|
70
70
|
/* @internal */
|
|
71
|
-
export const asSome = <
|
|
71
|
+
export const asSome = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<Option.Option<A>, E, R> =>
|
|
72
72
|
core.map(self, Option.some)
|
|
73
73
|
|
|
74
74
|
/* @internal */
|
|
75
|
-
export const asSomeError = <
|
|
75
|
+
export const asSomeError = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, Option.Option<E>, R> =>
|
|
76
76
|
core.mapError(self, Option.some)
|
|
77
77
|
|
|
78
78
|
/* @internal */
|
|
79
|
-
export const asyncOption = <
|
|
80
|
-
register: (callback: (_: Effect.Effect<
|
|
79
|
+
export const asyncOption = <A, E = never, R = never>(
|
|
80
|
+
register: (callback: (_: Effect.Effect<A, E, R>) => void) => Option.Option<Effect.Effect<A, E, R>>,
|
|
81
81
|
blockingOn: FiberId.FiberId = FiberId.none
|
|
82
|
-
): Effect.Effect<
|
|
83
|
-
core.asyncEither
|
|
82
|
+
): Effect.Effect<A, E, R> =>
|
|
83
|
+
core.asyncEither(
|
|
84
84
|
(cb) => {
|
|
85
85
|
const option = register(cb)
|
|
86
86
|
switch (option._tag) {
|
|
@@ -100,8 +100,8 @@ export const try_: {
|
|
|
100
100
|
<A, E>(options: {
|
|
101
101
|
readonly try: LazyArg<A>
|
|
102
102
|
readonly catch: (error: unknown) => E
|
|
103
|
-
}): Effect.Effect<
|
|
104
|
-
<A>(evaluate: LazyArg<A>): Effect.Effect<
|
|
103
|
+
}): Effect.Effect<A, E>
|
|
104
|
+
<A>(evaluate: LazyArg<A>): Effect.Effect<A, Cause.UnknownException>
|
|
105
105
|
} = <A, E>(
|
|
106
106
|
arg: LazyArg<A> | {
|
|
107
107
|
readonly try: LazyArg<A>
|
|
@@ -128,47 +128,46 @@ export const try_: {
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
/* @internal */
|
|
131
|
-
export const _catch
|
|
132
|
-
<N extends keyof E, K extends E[N] & string, E,
|
|
131
|
+
export const _catch: {
|
|
132
|
+
<N extends keyof E, K extends E[N] & string, E, A1, E1, R1>(
|
|
133
133
|
discriminator: N,
|
|
134
134
|
options: {
|
|
135
135
|
readonly failure: K
|
|
136
|
-
readonly onFailure: (error: Extract<E, { [n in N]: K }>) => Effect.Effect<
|
|
136
|
+
readonly onFailure: (error: Extract<E, { [n in N]: K }>) => Effect.Effect<A1, E1, R1>
|
|
137
137
|
}
|
|
138
|
-
)
|
|
139
|
-
|
|
138
|
+
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<
|
|
139
|
+
A | A1,
|
|
140
140
|
Exclude<E, { [n in N]: K }> | E1,
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
<
|
|
144
|
-
self: Effect.Effect<
|
|
141
|
+
R | R1
|
|
142
|
+
>
|
|
143
|
+
<A, E, R, N extends keyof E, K extends E[N] & string, A1, E1, R1>(
|
|
144
|
+
self: Effect.Effect<A, E, R>,
|
|
145
145
|
discriminator: N,
|
|
146
146
|
options: {
|
|
147
147
|
readonly failure: K
|
|
148
|
-
readonly onFailure: (error: Extract<E, { [n in N]: K }>) => Effect.Effect<
|
|
148
|
+
readonly onFailure: (error: Extract<E, { [n in N]: K }>) => Effect.Effect<A1, E1, R1>
|
|
149
149
|
}
|
|
150
|
-
)
|
|
151
|
-
|
|
152
|
-
// @ts-expect-error
|
|
150
|
+
): Effect.Effect<A | A1, Exclude<E, { [n in N]: K }> | E1, R | R1>
|
|
151
|
+
} = dual(
|
|
153
152
|
3,
|
|
154
153
|
(self, tag, options) =>
|
|
155
154
|
core.catchAll(self, (e) => {
|
|
156
155
|
if (Predicate.hasProperty(e, tag) && e[tag] === options.failure) {
|
|
157
|
-
return options.onFailure(e
|
|
156
|
+
return options.onFailure(e)
|
|
158
157
|
}
|
|
159
|
-
return core.fail(e
|
|
158
|
+
return core.fail(e)
|
|
160
159
|
})
|
|
161
160
|
)
|
|
162
161
|
|
|
163
162
|
/* @internal */
|
|
164
163
|
export const catchAllDefect = dual<
|
|
165
|
-
<
|
|
166
|
-
f: (defect: unknown) => Effect.Effect<
|
|
167
|
-
) => <
|
|
168
|
-
<
|
|
169
|
-
self: Effect.Effect<
|
|
170
|
-
f: (defect: unknown) => Effect.Effect<
|
|
171
|
-
) => Effect.Effect<
|
|
164
|
+
<A2, E2, R2>(
|
|
165
|
+
f: (defect: unknown) => Effect.Effect<A2, E2, R2>
|
|
166
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A2, E | E2, R | R2>,
|
|
167
|
+
<A, E, R, A2, E2, R2>(
|
|
168
|
+
self: Effect.Effect<A, E, R>,
|
|
169
|
+
f: (defect: unknown) => Effect.Effect<A2, E2, R2>
|
|
170
|
+
) => Effect.Effect<A | A2, E | E2, R | R2>
|
|
172
171
|
>(2, (self, f) =>
|
|
173
172
|
core.catchAllCause(
|
|
174
173
|
self,
|
|
@@ -186,22 +185,22 @@ export const catchAllDefect = dual<
|
|
|
186
185
|
))
|
|
187
186
|
|
|
188
187
|
/* @internal */
|
|
189
|
-
export const catchSomeCause
|
|
190
|
-
<E,
|
|
191
|
-
f: (cause: Cause.Cause<E
|
|
192
|
-
)
|
|
193
|
-
<
|
|
194
|
-
self: Effect.Effect<
|
|
195
|
-
f: (cause: Cause.Cause<E
|
|
196
|
-
)
|
|
197
|
-
|
|
188
|
+
export const catchSomeCause: {
|
|
189
|
+
<E, A2, E2, R2>(
|
|
190
|
+
f: (cause: Cause.Cause<NoInfer<E>>) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
191
|
+
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A, E | E2, R2 | R>
|
|
192
|
+
<A, E, R, A2, E2, R2>(
|
|
193
|
+
self: Effect.Effect<A, E, R>,
|
|
194
|
+
f: (cause: Cause.Cause<NoInfer<E>>) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
195
|
+
): Effect.Effect<A2 | A, E | E2, R2 | R>
|
|
196
|
+
} = dual(
|
|
198
197
|
2,
|
|
199
|
-
<
|
|
200
|
-
self: Effect.Effect<
|
|
201
|
-
f: (cause: Cause.Cause<E
|
|
202
|
-
) =>
|
|
198
|
+
<A, E, R, A2, E2, R2>(
|
|
199
|
+
self: Effect.Effect<A, E, R>,
|
|
200
|
+
f: (cause: Cause.Cause<NoInfer<E>>) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
201
|
+
): Effect.Effect<A2 | A, E | E2, R2 | R> =>
|
|
203
202
|
core.matchCauseEffect(self, {
|
|
204
|
-
onFailure: (cause): Effect.Effect<
|
|
203
|
+
onFailure: (cause): Effect.Effect<A2, E | E2, R2> => {
|
|
205
204
|
const option = f(cause)
|
|
206
205
|
switch (option._tag) {
|
|
207
206
|
case "None": {
|
|
@@ -218,16 +217,16 @@ export const catchSomeCause = dual<
|
|
|
218
217
|
|
|
219
218
|
/* @internal */
|
|
220
219
|
export const catchSomeDefect = dual<
|
|
221
|
-
<
|
|
222
|
-
pf: (defect: unknown) => Option.Option<Effect.Effect<
|
|
223
|
-
) => <
|
|
224
|
-
<
|
|
225
|
-
self: Effect.Effect<
|
|
226
|
-
pf: (defect: unknown) => Option.Option<Effect.Effect<
|
|
227
|
-
) => Effect.Effect<
|
|
220
|
+
<A2, E2, R2>(
|
|
221
|
+
pf: (defect: unknown) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
222
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A2, E | E2, R | R2>,
|
|
223
|
+
<A, E, R, A2, E2, R2>(
|
|
224
|
+
self: Effect.Effect<A, E, R>,
|
|
225
|
+
pf: (defect: unknown) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
226
|
+
) => Effect.Effect<A | A2, E | E2, R | R2>
|
|
228
227
|
>(
|
|
229
228
|
2,
|
|
230
|
-
|
|
229
|
+
(self, pf) =>
|
|
231
230
|
core.catchAllCause(
|
|
232
231
|
self,
|
|
233
232
|
core.unified((cause) => {
|
|
@@ -247,20 +246,20 @@ export const catchSomeDefect = dual<
|
|
|
247
246
|
|
|
248
247
|
/* @internal */
|
|
249
248
|
export const catchTag = dual<
|
|
250
|
-
<K extends (E extends { _tag: string } ? E["_tag"] : never), E,
|
|
249
|
+
<K extends (E extends { _tag: string } ? E["_tag"] : never), E, A1, E1, R1>(
|
|
251
250
|
k: K,
|
|
252
|
-
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<
|
|
253
|
-
) => <
|
|
254
|
-
<
|
|
255
|
-
self: Effect.Effect<
|
|
251
|
+
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<A1, E1, R1>
|
|
252
|
+
) => <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A1, Exclude<E, { _tag: K }> | E1, R | R1>,
|
|
253
|
+
<A, E, R, K extends (E extends { _tag: string } ? E["_tag"] : never), R1, E1, A1>(
|
|
254
|
+
self: Effect.Effect<A, E, R>,
|
|
256
255
|
k: K,
|
|
257
|
-
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<
|
|
258
|
-
) => Effect.Effect<
|
|
259
|
-
>(3, <
|
|
260
|
-
self: Effect.Effect<
|
|
256
|
+
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<A1, E1, R1>
|
|
257
|
+
) => Effect.Effect<A | A1, Exclude<E, { _tag: K }> | E1, R | R1>
|
|
258
|
+
>(3, <A, E, R, K extends (E extends { _tag: string } ? E["_tag"] : never), R1, E1, A1>(
|
|
259
|
+
self: Effect.Effect<A, E, R>,
|
|
261
260
|
k: K,
|
|
262
|
-
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<
|
|
263
|
-
): Effect.Effect<
|
|
261
|
+
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<A1, E1, R1>
|
|
262
|
+
): Effect.Effect<A | A1, Exclude<E, { _tag: K }> | E1, R | R1> =>
|
|
264
263
|
core.catchIf(self, Predicate.isTagged(k) as Predicate.Refinement<E, Extract<E, { _tag: K }>>, f) as any)
|
|
265
264
|
|
|
266
265
|
/** @internal */
|
|
@@ -273,18 +272,18 @@ export const catchTags: {
|
|
|
273
272
|
{})
|
|
274
273
|
>(
|
|
275
274
|
cases: Cases
|
|
276
|
-
): <
|
|
277
|
-
|
|
|
275
|
+
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<
|
|
276
|
+
| A
|
|
278
277
|
| {
|
|
279
|
-
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<infer
|
|
278
|
+
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<infer A, any, any>) ? A : never
|
|
280
279
|
}[keyof Cases],
|
|
281
280
|
| Exclude<E, { _tag: keyof Cases }>
|
|
282
281
|
| {
|
|
283
282
|
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, infer E, any>) ? E : never
|
|
284
283
|
}[keyof Cases],
|
|
285
|
-
|
|
|
284
|
+
| R
|
|
286
285
|
| {
|
|
287
|
-
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, any, infer
|
|
286
|
+
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, any, infer R>) ? R : never
|
|
288
287
|
}[keyof Cases]
|
|
289
288
|
>
|
|
290
289
|
<
|
|
@@ -296,20 +295,20 @@ export const catchTags: {
|
|
|
296
295
|
} :
|
|
297
296
|
{})
|
|
298
297
|
>(
|
|
299
|
-
self: Effect.Effect<
|
|
298
|
+
self: Effect.Effect<A, E, R>,
|
|
300
299
|
cases: Cases
|
|
301
300
|
): Effect.Effect<
|
|
302
|
-
|
|
|
301
|
+
| A
|
|
303
302
|
| {
|
|
304
|
-
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<infer
|
|
303
|
+
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<infer A, any, any>) ? A : never
|
|
305
304
|
}[keyof Cases],
|
|
306
305
|
| Exclude<E, { _tag: keyof Cases }>
|
|
307
306
|
| {
|
|
308
307
|
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, infer E, any>) ? E : never
|
|
309
308
|
}[keyof Cases],
|
|
310
|
-
|
|
|
309
|
+
| R
|
|
311
310
|
| {
|
|
312
|
-
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, any, infer
|
|
311
|
+
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, any, infer R>) ? R : never
|
|
313
312
|
}[keyof Cases]
|
|
314
313
|
>
|
|
315
314
|
} = dual(2, (self, cases) => {
|
|
@@ -325,36 +324,36 @@ export const catchTags: {
|
|
|
325
324
|
})
|
|
326
325
|
|
|
327
326
|
/* @internal */
|
|
328
|
-
export const cause = <
|
|
327
|
+
export const cause = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<Cause.Cause<E>, never, R> =>
|
|
329
328
|
core.matchCause(self, { onFailure: identity, onSuccess: () => internalCause.empty })
|
|
330
329
|
|
|
331
330
|
/* @internal */
|
|
332
|
-
export const clockWith: <
|
|
331
|
+
export const clockWith: <A, E, R>(f: (clock: Clock.Clock) => Effect.Effect<A, E, R>) => Effect.Effect<A, E, R> =
|
|
333
332
|
Clock.clockWith
|
|
334
333
|
|
|
335
334
|
/* @internal */
|
|
336
|
-
export const clock: Effect.Effect<
|
|
335
|
+
export const clock: Effect.Effect<Clock.Clock> = clockWith(core.succeed)
|
|
337
336
|
|
|
338
337
|
/* @internal */
|
|
339
338
|
export const delay = dual<
|
|
340
|
-
(duration: Duration.DurationInput) => <
|
|
341
|
-
<
|
|
339
|
+
(duration: Duration.DurationInput) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
340
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, duration: Duration.DurationInput) => Effect.Effect<A, E, R>
|
|
342
341
|
>(2, (self, duration) => core.zipRight(Clock.sleep(duration), self))
|
|
343
342
|
|
|
344
343
|
/* @internal */
|
|
345
|
-
export const descriptorWith = <
|
|
346
|
-
f: (descriptor: Fiber.Fiber.Descriptor) => Effect.Effect<
|
|
347
|
-
): Effect.Effect<
|
|
344
|
+
export const descriptorWith = <A, E, R>(
|
|
345
|
+
f: (descriptor: Fiber.Fiber.Descriptor) => Effect.Effect<A, E, R>
|
|
346
|
+
): Effect.Effect<A, E, R> =>
|
|
348
347
|
core.withFiberRuntime((state, status) =>
|
|
349
348
|
f({
|
|
350
349
|
id: state.id(),
|
|
351
350
|
status,
|
|
352
351
|
interruptors: internalCause.interruptors(state.getFiberRef(core.currentInterruptedCause))
|
|
353
352
|
})
|
|
354
|
-
) as Effect.Effect<
|
|
353
|
+
) as Effect.Effect<A, E, R>
|
|
355
354
|
|
|
356
355
|
/* @internal */
|
|
357
|
-
export const allowInterrupt: Effect.Effect<
|
|
356
|
+
export const allowInterrupt: Effect.Effect<void> = descriptorWith(
|
|
358
357
|
(descriptor) =>
|
|
359
358
|
HashSet.size(descriptor.interruptors) > 0
|
|
360
359
|
? core.interrupt
|
|
@@ -362,17 +361,17 @@ export const allowInterrupt: Effect.Effect<never, never, void> = descriptorWith(
|
|
|
362
361
|
)
|
|
363
362
|
|
|
364
363
|
/* @internal */
|
|
365
|
-
export const descriptor: Effect.Effect<
|
|
364
|
+
export const descriptor: Effect.Effect<Fiber.Fiber.Descriptor> = descriptorWith(core.succeed)
|
|
366
365
|
|
|
367
366
|
/* @internal */
|
|
368
|
-
export const diffFiberRefs = <
|
|
369
|
-
self: Effect.Effect<
|
|
370
|
-
): Effect.Effect<
|
|
367
|
+
export const diffFiberRefs = <A, E, R>(
|
|
368
|
+
self: Effect.Effect<A, E, R>
|
|
369
|
+
): Effect.Effect<[FiberRefsPatch.FiberRefsPatch, A], E, R> => summarized(self, fiberRefs, fiberRefsPatch.diff)
|
|
371
370
|
|
|
372
371
|
/* @internal */
|
|
373
|
-
export const diffFiberRefsAndRuntimeFlags = <
|
|
374
|
-
self: Effect.Effect<
|
|
375
|
-
): Effect.Effect<
|
|
372
|
+
export const diffFiberRefsAndRuntimeFlags = <A, E, R>(
|
|
373
|
+
self: Effect.Effect<A, E, R>
|
|
374
|
+
): Effect.Effect<[[FiberRefsPatch.FiberRefsPatch, runtimeFlagsPatch.RuntimeFlagsPatch], A], E, R> =>
|
|
376
375
|
summarized(
|
|
377
376
|
self,
|
|
378
377
|
core.zip(fiberRefs, core.runtimeFlags),
|
|
@@ -380,32 +379,24 @@ export const diffFiberRefsAndRuntimeFlags = <R, E, A>(
|
|
|
380
379
|
)
|
|
381
380
|
|
|
382
381
|
/* @internal */
|
|
383
|
-
export const Do: Effect.Effect<
|
|
382
|
+
export const Do: Effect.Effect<{}> = core.succeed({})
|
|
384
383
|
|
|
385
384
|
/* @internal */
|
|
386
|
-
export const bind
|
|
387
|
-
<N extends string, K,
|
|
385
|
+
export const bind: {
|
|
386
|
+
<N extends string, K, A, E2, R2>(
|
|
388
387
|
tag: Exclude<N, keyof K>,
|
|
389
|
-
f: (_: K) => Effect.Effect<
|
|
390
|
-
)
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
Effect.MergeRecord<K, { [k in N]: A }>
|
|
394
|
-
>,
|
|
395
|
-
<R, E, N extends string, K, R2, E2, A>(
|
|
396
|
-
self: Effect.Effect<R, E, K>,
|
|
388
|
+
f: (_: K) => Effect.Effect<A, E2, R2>
|
|
389
|
+
): <E, R>(self: Effect.Effect<K, E, R>) => Effect.Effect<Effect.MergeRecord<K, { [k in N]: A }>, E2 | E, R2 | R>
|
|
390
|
+
<K, E, R, N extends string, A, E2, R2>(
|
|
391
|
+
self: Effect.Effect<K, E, R>,
|
|
397
392
|
tag: Exclude<N, keyof K>,
|
|
398
|
-
f: (_: K) => Effect.Effect<
|
|
399
|
-
)
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
Effect.MergeRecord<K, { [k in N]: A }>
|
|
403
|
-
>
|
|
404
|
-
>(3, <R, E, N extends string, K, R2, E2, A>(
|
|
405
|
-
self: Effect.Effect<R, E, K>,
|
|
393
|
+
f: (_: K) => Effect.Effect<A, E2, R2>
|
|
394
|
+
): Effect.Effect<Effect.MergeRecord<K, { [k in N]: A }>, E2 | E, R2 | R>
|
|
395
|
+
} = dual(3, <K, E, R, N extends string, A, E2, R2>(
|
|
396
|
+
self: Effect.Effect<K, E, R>,
|
|
406
397
|
tag: Exclude<N, keyof K>,
|
|
407
|
-
f: (_: K) => Effect.Effect<
|
|
408
|
-
) =>
|
|
398
|
+
f: (_: K) => Effect.Effect<A, E2, R2>
|
|
399
|
+
): Effect.Effect<Effect.MergeRecord<K, { [k in N]: A }>, E2 | E, R2 | R> =>
|
|
409
400
|
core.flatMap(self, (k) =>
|
|
410
401
|
core.map(
|
|
411
402
|
f(k),
|
|
@@ -413,46 +404,31 @@ export const bind = dual<
|
|
|
413
404
|
)))
|
|
414
405
|
|
|
415
406
|
/* @internal */
|
|
416
|
-
export const bindTo
|
|
417
|
-
<N extends string>(tag: N)
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
Record<N, A>
|
|
421
|
-
>,
|
|
422
|
-
<R, E, A, N extends string>(
|
|
423
|
-
self: Effect.Effect<R, E, A>,
|
|
424
|
-
tag: N
|
|
425
|
-
) => Effect.Effect<
|
|
426
|
-
R,
|
|
427
|
-
E,
|
|
428
|
-
Record<N, A>
|
|
429
|
-
>
|
|
430
|
-
>(
|
|
407
|
+
export const bindTo: {
|
|
408
|
+
<N extends string>(tag: N): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Record<N, A>, E, R>
|
|
409
|
+
<A, E, R, N extends string>(self: Effect.Effect<A, E, R>, tag: N): Effect.Effect<Record<N, A>, E, R>
|
|
410
|
+
} = dual(
|
|
431
411
|
2,
|
|
432
|
-
<
|
|
412
|
+
<A, E, R, N extends string>(self: Effect.Effect<A, E, R>, tag: N): Effect.Effect<Record<N, A>, E, R> =>
|
|
433
413
|
core.map(self, (a) => ({ [tag]: a } as Record<N, A>))
|
|
434
414
|
)
|
|
435
415
|
|
|
436
416
|
/* @internal */
|
|
437
|
-
export const
|
|
417
|
+
export const let_: {
|
|
438
418
|
<N extends string, K, A>(
|
|
439
419
|
tag: Exclude<N, keyof K>,
|
|
440
420
|
f: (_: K) => A
|
|
441
|
-
)
|
|
442
|
-
|
|
443
|
-
E,
|
|
444
|
-
Effect.MergeRecord<K, { [k in N]: A }>
|
|
445
|
-
>,
|
|
446
|
-
<R, E, K, N extends string, A>(
|
|
447
|
-
self: Effect.Effect<R, E, K>,
|
|
421
|
+
): <E, R>(self: Effect.Effect<K, E, R>) => Effect.Effect<Effect.MergeRecord<K, { [k in N]: A }>, E, R>
|
|
422
|
+
<K, E, R, N extends string, A>(
|
|
423
|
+
self: Effect.Effect<K, E, R>,
|
|
448
424
|
tag: Exclude<N, keyof K>,
|
|
449
425
|
f: (_: K) => A
|
|
450
|
-
)
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
426
|
+
): Effect.Effect<Effect.MergeRecord<K, { [k in N]: A }>, E, R>
|
|
427
|
+
} = dual(3, <K, E, R, N extends string, A>(
|
|
428
|
+
self: Effect.Effect<K, E, R>,
|
|
429
|
+
tag: Exclude<N, keyof K>,
|
|
430
|
+
f: (_: K) => A
|
|
431
|
+
): Effect.Effect<Effect.MergeRecord<K, { [k in N]: A }>, E, R> =>
|
|
456
432
|
core.map(
|
|
457
433
|
self,
|
|
458
434
|
(k): Effect.MergeRecord<K, { [k in N]: A }> => ({ ...k, [tag]: f(k) } as any)
|
|
@@ -460,24 +436,24 @@ export const bindValue = dual<
|
|
|
460
436
|
|
|
461
437
|
/* @internal */
|
|
462
438
|
export const dropUntil: {
|
|
463
|
-
<A,
|
|
464
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<
|
|
465
|
-
): (elements: Iterable<A>) => Effect.Effect<
|
|
466
|
-
<A,
|
|
439
|
+
<A, E, R>(
|
|
440
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
441
|
+
): (elements: Iterable<A>) => Effect.Effect<Array<A>, E, R>
|
|
442
|
+
<A, E, R>(
|
|
467
443
|
elements: Iterable<A>,
|
|
468
|
-
predicate: (a: A, i: number) => Effect.Effect<
|
|
469
|
-
): Effect.Effect<
|
|
444
|
+
predicate: (a: A, i: number) => Effect.Effect<boolean, E, R>
|
|
445
|
+
): Effect.Effect<Array<A>, E, R>
|
|
470
446
|
} = dual(
|
|
471
447
|
2,
|
|
472
|
-
<A,
|
|
448
|
+
<A, E, R>(
|
|
473
449
|
elements: Iterable<A>,
|
|
474
|
-
predicate: (a: A, i: number) => Effect.Effect<
|
|
475
|
-
): Effect.Effect<
|
|
450
|
+
predicate: (a: A, i: number) => Effect.Effect<boolean, E, R>
|
|
451
|
+
): Effect.Effect<Array<A>, E, R> =>
|
|
476
452
|
core.suspend(() => {
|
|
477
453
|
const iterator = elements[Symbol.iterator]()
|
|
478
454
|
const builder: Array<A> = []
|
|
479
455
|
let next: IteratorResult<A, any>
|
|
480
|
-
let dropping: Effect.Effect<
|
|
456
|
+
let dropping: Effect.Effect<boolean, E, R> = core.succeed(false)
|
|
481
457
|
let i = 0
|
|
482
458
|
while ((next = iterator.next()) && !next.done) {
|
|
483
459
|
const a = next.value
|
|
@@ -496,24 +472,24 @@ export const dropUntil: {
|
|
|
496
472
|
|
|
497
473
|
/* @internal */
|
|
498
474
|
export const dropWhile: {
|
|
499
|
-
<A,
|
|
500
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<
|
|
501
|
-
): (elements: Iterable<A>) => Effect.Effect<
|
|
502
|
-
<A,
|
|
475
|
+
<A, E, R>(
|
|
476
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
477
|
+
): (elements: Iterable<A>) => Effect.Effect<Array<A>, E, R>
|
|
478
|
+
<A, E, R>(
|
|
503
479
|
elements: Iterable<A>,
|
|
504
|
-
predicate: (a: A, i: number) => Effect.Effect<
|
|
505
|
-
): Effect.Effect<
|
|
480
|
+
predicate: (a: A, i: number) => Effect.Effect<boolean, E, R>
|
|
481
|
+
): Effect.Effect<Array<A>, E, R>
|
|
506
482
|
} = dual(
|
|
507
483
|
2,
|
|
508
|
-
<A,
|
|
484
|
+
<A, E, R>(
|
|
509
485
|
elements: Iterable<A>,
|
|
510
|
-
predicate: (a: A, i: number) => Effect.Effect<
|
|
511
|
-
): Effect.Effect<
|
|
486
|
+
predicate: (a: A, i: number) => Effect.Effect<boolean, E, R>
|
|
487
|
+
): Effect.Effect<Array<A>, E, R> =>
|
|
512
488
|
core.suspend(() => {
|
|
513
489
|
const iterator = elements[Symbol.iterator]()
|
|
514
490
|
const builder: Array<A> = []
|
|
515
491
|
let next
|
|
516
|
-
let dropping: Effect.Effect<
|
|
492
|
+
let dropping: Effect.Effect<boolean, E, R> = core.succeed(true)
|
|
517
493
|
let i = 0
|
|
518
494
|
while ((next = iterator.next()) && !next.done) {
|
|
519
495
|
const a = next.value
|
|
@@ -531,22 +507,22 @@ export const dropWhile: {
|
|
|
531
507
|
)
|
|
532
508
|
|
|
533
509
|
/* @internal */
|
|
534
|
-
export const contextWith = <R, A>(f: (context: Context.Context<R>) => A): Effect.Effect<
|
|
510
|
+
export const contextWith = <R, A>(f: (context: Context.Context<R>) => A): Effect.Effect<A, never, R> =>
|
|
535
511
|
core.map(core.context<R>(), f)
|
|
536
512
|
|
|
537
513
|
/* @internal */
|
|
538
|
-
export const eventually = <
|
|
514
|
+
export const eventually = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, never, R> =>
|
|
539
515
|
core.orElse(self, () => core.flatMap(core.yieldNow(), () => eventually(self)))
|
|
540
516
|
|
|
541
517
|
/* @internal */
|
|
542
518
|
export const filterMap = dual<
|
|
543
519
|
<A, B>(
|
|
544
520
|
pf: (a: A) => Option.Option<B>
|
|
545
|
-
) => <
|
|
546
|
-
<
|
|
547
|
-
elements: Iterable<Effect.Effect<
|
|
521
|
+
) => <E, R>(elements: Iterable<Effect.Effect<A, E, R>>) => Effect.Effect<Array<B>, E, R>,
|
|
522
|
+
<A, E, R, B>(
|
|
523
|
+
elements: Iterable<Effect.Effect<A, E, R>>,
|
|
548
524
|
pf: (a: A) => Option.Option<B>
|
|
549
|
-
) => Effect.Effect<
|
|
525
|
+
) => Effect.Effect<Array<B>, E, R>
|
|
550
526
|
>(2, (elements, pf) =>
|
|
551
527
|
core.map(
|
|
552
528
|
core.forEachSequential(elements, identity),
|
|
@@ -557,29 +533,29 @@ export const filterMap = dual<
|
|
|
557
533
|
export const filterOrDie: {
|
|
558
534
|
<A, B extends A>(
|
|
559
535
|
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
560
|
-
orDieWith: (a: A) => unknown
|
|
561
|
-
): <
|
|
536
|
+
orDieWith: (a: NoInfer<A>) => unknown
|
|
537
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E, R>
|
|
562
538
|
<A>(
|
|
563
539
|
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
564
|
-
orDieWith: (a: A) => unknown
|
|
565
|
-
): <
|
|
566
|
-
<
|
|
567
|
-
self: Effect.Effect<
|
|
540
|
+
orDieWith: (a: NoInfer<A>) => unknown
|
|
541
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
542
|
+
<A, E, R, B extends A>(
|
|
543
|
+
self: Effect.Effect<A, E, R>,
|
|
568
544
|
refinement: Predicate.Refinement<A, B>,
|
|
569
545
|
orDieWith: (a: A) => unknown
|
|
570
|
-
): Effect.Effect<
|
|
571
|
-
<
|
|
572
|
-
self: Effect.Effect<
|
|
573
|
-
|
|
546
|
+
): Effect.Effect<B, E, R>
|
|
547
|
+
<A, E, R>(
|
|
548
|
+
self: Effect.Effect<A, E, R>,
|
|
549
|
+
predicate: Predicate.Predicate<A>,
|
|
574
550
|
orDieWith: (a: A) => unknown
|
|
575
|
-
): Effect.Effect<
|
|
551
|
+
): Effect.Effect<A, E, R>
|
|
576
552
|
} = dual(
|
|
577
553
|
3,
|
|
578
|
-
<
|
|
579
|
-
self: Effect.Effect<
|
|
554
|
+
<A, E, R>(
|
|
555
|
+
self: Effect.Effect<A, E, R>,
|
|
580
556
|
predicate: Predicate.Predicate<A>,
|
|
581
557
|
orDieWith: (a: A) => unknown
|
|
582
|
-
): Effect.Effect<
|
|
558
|
+
): Effect.Effect<A, E, R> => filterOrElse(self, predicate, (a) => core.dieSync(() => orDieWith(a)))
|
|
583
559
|
)
|
|
584
560
|
|
|
585
561
|
/* @internal */
|
|
@@ -587,48 +563,48 @@ export const filterOrDieMessage: {
|
|
|
587
563
|
<A, B extends A>(
|
|
588
564
|
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
589
565
|
message: string
|
|
590
|
-
): <
|
|
566
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E, R>
|
|
591
567
|
<A>(
|
|
592
568
|
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
593
569
|
message: string
|
|
594
|
-
): <
|
|
595
|
-
<
|
|
596
|
-
self: Effect.Effect<
|
|
570
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
571
|
+
<A, E, R, B extends A>(
|
|
572
|
+
self: Effect.Effect<A, E, R>,
|
|
597
573
|
refinement: Predicate.Refinement<A, B>,
|
|
598
574
|
message: string
|
|
599
|
-
): Effect.Effect<
|
|
600
|
-
<
|
|
575
|
+
): Effect.Effect<B, E, R>
|
|
576
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, predicate: Predicate.Predicate<A>, message: string): Effect.Effect<A, E, R>
|
|
601
577
|
} = dual(
|
|
602
578
|
3,
|
|
603
|
-
<
|
|
579
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, predicate: Predicate.Predicate<A>, message: string): Effect.Effect<A, E, R> =>
|
|
604
580
|
filterOrElse(self, predicate, () => core.dieMessage(message))
|
|
605
581
|
)
|
|
606
582
|
|
|
607
583
|
/* @internal */
|
|
608
584
|
export const filterOrElse: {
|
|
609
|
-
<A, B extends A,
|
|
585
|
+
<A, B extends A, C, E2, R2>(
|
|
610
586
|
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
611
|
-
orElse: (a: NoInfer<A>) => Effect.Effect<
|
|
612
|
-
): <
|
|
613
|
-
<A,
|
|
587
|
+
orElse: (a: NoInfer<A>) => Effect.Effect<C, E2, R2>
|
|
588
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B | C, E2 | E, R2 | R>
|
|
589
|
+
<A, B, E2, R2>(
|
|
614
590
|
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
615
|
-
orElse: (a: NoInfer<A>) => Effect.Effect<
|
|
616
|
-
): <
|
|
617
|
-
<
|
|
618
|
-
self: Effect.Effect<
|
|
591
|
+
orElse: (a: NoInfer<A>) => Effect.Effect<B, E2, R2>
|
|
592
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | B, E2 | E, R2 | R>
|
|
593
|
+
<A, E, R, B extends A, C, E2, R2>(
|
|
594
|
+
self: Effect.Effect<A, E, R>,
|
|
619
595
|
refinement: Predicate.Refinement<A, B>,
|
|
620
|
-
orElse: (a: A) => Effect.Effect<
|
|
621
|
-
): Effect.Effect<
|
|
622
|
-
<
|
|
623
|
-
self: Effect.Effect<
|
|
596
|
+
orElse: (a: A) => Effect.Effect<C, E2, R2>
|
|
597
|
+
): Effect.Effect<B | C, E | E2, R | R2>
|
|
598
|
+
<A, E, R, B, E2, R2>(
|
|
599
|
+
self: Effect.Effect<A, E, R>,
|
|
624
600
|
predicate: Predicate.Predicate<A>,
|
|
625
|
-
orElse: (a: A) => Effect.Effect<
|
|
626
|
-
): Effect.Effect<
|
|
627
|
-
} = dual(3, <
|
|
628
|
-
self: Effect.Effect<
|
|
601
|
+
orElse: (a: A) => Effect.Effect<B, E2, R2>
|
|
602
|
+
): Effect.Effect<A | B, E | E2, R | R2>
|
|
603
|
+
} = dual(3, <A, E, R, B, E2, R2>(
|
|
604
|
+
self: Effect.Effect<A, E, R>,
|
|
629
605
|
predicate: Predicate.Predicate<A>,
|
|
630
|
-
orElse: (a: A) => Effect.Effect<
|
|
631
|
-
): Effect.Effect<
|
|
606
|
+
orElse: (a: A) => Effect.Effect<B, E2, R2>
|
|
607
|
+
): Effect.Effect<A | B, E | E2, R | R2> =>
|
|
632
608
|
core.flatMap(
|
|
633
609
|
self,
|
|
634
610
|
(a) => predicate(a) ? core.succeed<A | B>(a) : orElse(a)
|
|
@@ -639,52 +615,58 @@ export const filterOrFail: {
|
|
|
639
615
|
<A, B extends A, E2>(
|
|
640
616
|
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
641
617
|
orFailWith: (a: NoInfer<A>) => E2
|
|
642
|
-
): <
|
|
618
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E2 | E, R>
|
|
643
619
|
<A, E2>(
|
|
644
620
|
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
645
621
|
orFailWith: (a: NoInfer<A>) => E2
|
|
646
|
-
): <
|
|
647
|
-
<
|
|
648
|
-
self: Effect.Effect<
|
|
622
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E2 | E, R>
|
|
623
|
+
<A, E, R, B extends A, E2>(
|
|
624
|
+
self: Effect.Effect<A, E, R>,
|
|
649
625
|
refinement: Predicate.Refinement<A, B>,
|
|
650
626
|
orFailWith: (a: A) => E2
|
|
651
|
-
): Effect.Effect<
|
|
652
|
-
<
|
|
653
|
-
self: Effect.Effect<
|
|
627
|
+
): Effect.Effect<B, E | E2, R>
|
|
628
|
+
<A, E, R, E2>(
|
|
629
|
+
self: Effect.Effect<A, E, R>,
|
|
654
630
|
predicate: Predicate.Predicate<A>,
|
|
655
631
|
orFailWith: (a: A) => E2
|
|
656
|
-
): Effect.Effect<
|
|
657
|
-
} = dual(3, <
|
|
658
|
-
self: Effect.Effect<
|
|
632
|
+
): Effect.Effect<A, E | E2, R>
|
|
633
|
+
} = dual(3, <A, E, R, E2>(
|
|
634
|
+
self: Effect.Effect<A, E, R>,
|
|
659
635
|
predicate: Predicate.Predicate<A>,
|
|
660
636
|
orFailWith: (a: A) => E2
|
|
661
|
-
): Effect.Effect<
|
|
637
|
+
): Effect.Effect<A, E | E2, R> => filterOrElse(self, predicate, (a) => core.failSync(() => orFailWith(a))))
|
|
662
638
|
|
|
663
639
|
/* @internal */
|
|
664
|
-
export const findFirst
|
|
665
|
-
<A,
|
|
666
|
-
f: (a: A
|
|
667
|
-
)
|
|
668
|
-
<A,
|
|
640
|
+
export const findFirst: {
|
|
641
|
+
<A, E, R>(
|
|
642
|
+
f: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
643
|
+
): (elements: Iterable<A>) => Effect.Effect<Option.Option<A>, E, R>
|
|
644
|
+
<A, E, R>(
|
|
669
645
|
elements: Iterable<A>,
|
|
670
|
-
f: (a: A
|
|
671
|
-
)
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
646
|
+
f: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
647
|
+
): Effect.Effect<Option.Option<A>, E, R>
|
|
648
|
+
} = dual(
|
|
649
|
+
2,
|
|
650
|
+
<A, E, R>(
|
|
651
|
+
elements: Iterable<A>,
|
|
652
|
+
f: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
653
|
+
): Effect.Effect<Option.Option<A>, E, R> =>
|
|
654
|
+
core.suspend(() => {
|
|
655
|
+
const iterator = elements[Symbol.iterator]()
|
|
656
|
+
const next = iterator.next()
|
|
657
|
+
if (!next.done) {
|
|
658
|
+
return findLoop(iterator, 0, f, next.value)
|
|
659
|
+
}
|
|
660
|
+
return core.succeed(Option.none())
|
|
661
|
+
})
|
|
662
|
+
)
|
|
681
663
|
|
|
682
|
-
const findLoop = <A,
|
|
664
|
+
const findLoop = <A, E, R>(
|
|
683
665
|
iterator: Iterator<A>,
|
|
684
666
|
index: number,
|
|
685
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
667
|
+
f: (a: A, i: number) => Effect.Effect<boolean, E, R>,
|
|
686
668
|
value: A
|
|
687
|
-
): Effect.Effect<
|
|
669
|
+
): Effect.Effect<Option.Option<A>, E, R> =>
|
|
688
670
|
core.flatMap(f(value, index), (result) => {
|
|
689
671
|
if (result) {
|
|
690
672
|
return core.succeed(Option.some(value))
|
|
@@ -697,7 +679,7 @@ const findLoop = <A, R, E>(
|
|
|
697
679
|
})
|
|
698
680
|
|
|
699
681
|
/* @internal */
|
|
700
|
-
export const firstSuccessOf = <
|
|
682
|
+
export const firstSuccessOf = <A, E, R>(effects: Iterable<Effect.Effect<A, E, R>>): Effect.Effect<A, E, R> =>
|
|
701
683
|
core.suspend(() => {
|
|
702
684
|
const list = Chunk.fromIterable(effects)
|
|
703
685
|
if (!Chunk.isNonEmpty(list)) {
|
|
@@ -710,50 +692,65 @@ export const firstSuccessOf = <R, E, A>(effects: Iterable<Effect.Effect<R, E, A>
|
|
|
710
692
|
})
|
|
711
693
|
|
|
712
694
|
/* @internal */
|
|
713
|
-
export const flipWith
|
|
714
|
-
<
|
|
715
|
-
f: (effect: Effect.Effect<
|
|
716
|
-
)
|
|
717
|
-
<
|
|
718
|
-
self: Effect.Effect<
|
|
719
|
-
f: (effect: Effect.Effect<
|
|
720
|
-
)
|
|
721
|
-
|
|
695
|
+
export const flipWith: {
|
|
696
|
+
<E, A, R, E2, A2, R2>(
|
|
697
|
+
f: (effect: Effect.Effect<E, A, R>) => Effect.Effect<E2, A2, R2>
|
|
698
|
+
): (self: Effect.Effect<A, E, R>) => Effect.Effect<A2, E2, R2>
|
|
699
|
+
<A, E, R, E2, A2, R2>(
|
|
700
|
+
self: Effect.Effect<A, E, R>,
|
|
701
|
+
f: (effect: Effect.Effect<E, A, R>) => Effect.Effect<E2, A2, R2>
|
|
702
|
+
): Effect.Effect<A2, E2, R2>
|
|
703
|
+
} = dual(2, <A, E, R, E2, A2, R2>(
|
|
704
|
+
self: Effect.Effect<A, E, R>,
|
|
705
|
+
f: (effect: Effect.Effect<E, A, R>) => Effect.Effect<E2, A2, R2>
|
|
706
|
+
): Effect.Effect<A2, E2, R2> => core.flip(f(core.flip(self))))
|
|
722
707
|
|
|
723
708
|
/* @internal */
|
|
724
|
-
export const match
|
|
725
|
-
<E,
|
|
709
|
+
export const match: {
|
|
710
|
+
<E, A2, A, A3>(
|
|
726
711
|
options: {
|
|
727
712
|
readonly onFailure: (error: E) => A2
|
|
728
713
|
readonly onSuccess: (value: A) => A3
|
|
729
714
|
}
|
|
730
|
-
)
|
|
731
|
-
<
|
|
732
|
-
self: Effect.Effect<
|
|
715
|
+
): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A3, never, R>
|
|
716
|
+
<A, E, R, A2, A3>(
|
|
717
|
+
self: Effect.Effect<A, E, R>,
|
|
733
718
|
options: {
|
|
734
719
|
readonly onFailure: (error: E) => A2
|
|
735
720
|
readonly onSuccess: (value: A) => A3
|
|
736
721
|
}
|
|
737
|
-
)
|
|
738
|
-
|
|
722
|
+
): Effect.Effect<A2 | A3, never, R>
|
|
723
|
+
} = dual(2, <A, E, R, A2, A3>(
|
|
724
|
+
self: Effect.Effect<A, E, R>,
|
|
725
|
+
options: {
|
|
726
|
+
readonly onFailure: (error: E) => A2
|
|
727
|
+
readonly onSuccess: (value: A) => A3
|
|
728
|
+
}
|
|
729
|
+
): Effect.Effect<A2 | A3, never, R> =>
|
|
739
730
|
core.matchEffect(self, {
|
|
740
|
-
onFailure: (e) => core.succeed(onFailure(e)),
|
|
741
|
-
onSuccess: (a) => core.succeed(onSuccess(a))
|
|
731
|
+
onFailure: (e) => core.succeed(options.onFailure(e)),
|
|
732
|
+
onSuccess: (a) => core.succeed(options.onSuccess(a))
|
|
742
733
|
}))
|
|
743
734
|
|
|
744
735
|
/* @internal */
|
|
745
|
-
export const every
|
|
746
|
-
<
|
|
747
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
748
|
-
)
|
|
749
|
-
<
|
|
750
|
-
|
|
736
|
+
export const every: {
|
|
737
|
+
<A, E, R>(
|
|
738
|
+
f: (a: A, i: number) => Effect.Effect<boolean, E, R>
|
|
739
|
+
): (elements: Iterable<A>) => Effect.Effect<boolean, E, R>
|
|
740
|
+
<A, E, R>(elements: Iterable<A>, f: (a: A, i: number) => Effect.Effect<boolean, E, R>): Effect.Effect<boolean, E, R>
|
|
741
|
+
} = dual(
|
|
742
|
+
2,
|
|
743
|
+
<A, E, R>(
|
|
744
|
+
elements: Iterable<A>,
|
|
745
|
+
f: (a: A, i: number) => Effect.Effect<boolean, E, R>
|
|
746
|
+
): Effect.Effect<boolean, E, R> => core.suspend(() => forAllLoop(elements[Symbol.iterator](), 0, f))
|
|
747
|
+
)
|
|
751
748
|
|
|
752
|
-
const forAllLoop = <
|
|
749
|
+
const forAllLoop = <A, E, R>(
|
|
753
750
|
iterator: Iterator<A>,
|
|
754
751
|
index: number,
|
|
755
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
756
|
-
): Effect.Effect<
|
|
752
|
+
f: (a: A, i: number) => Effect.Effect<boolean, E, R>
|
|
753
|
+
): Effect.Effect<boolean, E, R> => {
|
|
757
754
|
const next = iterator.next()
|
|
758
755
|
return next.done
|
|
759
756
|
? core.succeed(true)
|
|
@@ -764,8 +761,8 @@ const forAllLoop = <R, E, A>(
|
|
|
764
761
|
}
|
|
765
762
|
|
|
766
763
|
/* @internal */
|
|
767
|
-
export const forever = <
|
|
768
|
-
const loop: Effect.Effect<
|
|
764
|
+
export const forever = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<never, E, R> => {
|
|
765
|
+
const loop: Effect.Effect<never, E, R> = core.flatMap(core.flatMap(self, () => core.yieldNow()), () => loop)
|
|
769
766
|
return loop
|
|
770
767
|
}
|
|
771
768
|
|
|
@@ -813,16 +810,14 @@ export const gen: typeof Effect.gen = function() {
|
|
|
813
810
|
}
|
|
814
811
|
|
|
815
812
|
/* @internal */
|
|
816
|
-
export const fiberRefs: Effect.Effect<
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
FiberRefs.FiberRefs
|
|
820
|
-
>((state) => core.succeed(state.getFiberRefs()))
|
|
813
|
+
export const fiberRefs: Effect.Effect<FiberRefs.FiberRefs> = core.withFiberRuntime((state) =>
|
|
814
|
+
core.succeed(state.getFiberRefs())
|
|
815
|
+
)
|
|
821
816
|
|
|
822
817
|
/* @internal */
|
|
823
|
-
export const head = <
|
|
824
|
-
self: Effect.Effect<
|
|
825
|
-
): Effect.Effect<
|
|
818
|
+
export const head = <A, E, R>(
|
|
819
|
+
self: Effect.Effect<Iterable<A>, E, R>
|
|
820
|
+
): Effect.Effect<A, E | Cause.NoSuchElementException, R> =>
|
|
826
821
|
core.flatMap(self, (as) => {
|
|
827
822
|
const iterator = as[Symbol.iterator]()
|
|
828
823
|
const next = iterator.next()
|
|
@@ -833,11 +828,11 @@ export const head = <R, E, A>(
|
|
|
833
828
|
})
|
|
834
829
|
|
|
835
830
|
/* @internal */
|
|
836
|
-
export const ignore = <
|
|
831
|
+
export const ignore = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<void, never, R> =>
|
|
837
832
|
match(self, { onFailure: constVoid, onSuccess: constVoid })
|
|
838
833
|
|
|
839
834
|
/* @internal */
|
|
840
|
-
export const ignoreLogged = <
|
|
835
|
+
export const ignoreLogged = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<void, never, R> =>
|
|
841
836
|
core.matchCauseEffect(self, {
|
|
842
837
|
onFailure: (cause) => logDebug(cause, "An error was silently ignored because it is not anticipated to be useful"),
|
|
843
838
|
onSuccess: () => core.unit
|
|
@@ -848,22 +843,37 @@ export const inheritFiberRefs = (childFiberRefs: FiberRefs.FiberRefs) =>
|
|
|
848
843
|
updateFiberRefs((parentFiberId, parentFiberRefs) => FiberRefs.joinAs(parentFiberRefs, parentFiberId, childFiberRefs))
|
|
849
844
|
|
|
850
845
|
/* @internal */
|
|
851
|
-
export const isFailure = <
|
|
846
|
+
export const isFailure = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<boolean, never, R> =>
|
|
852
847
|
match(self, { onFailure: constTrue, onSuccess: constFalse })
|
|
853
848
|
|
|
854
849
|
/* @internal */
|
|
855
|
-
export const isSuccess = <
|
|
850
|
+
export const isSuccess = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<boolean, never, R> =>
|
|
856
851
|
match(self, { onFailure: constFalse, onSuccess: constTrue })
|
|
857
852
|
|
|
858
853
|
/* @internal */
|
|
859
|
-
export const iterate
|
|
860
|
-
|
|
854
|
+
export const iterate: {
|
|
855
|
+
<A, B extends A, R, E>(
|
|
856
|
+
initial: A,
|
|
857
|
+
options: {
|
|
858
|
+
readonly while: Predicate.Refinement<A, B>
|
|
859
|
+
readonly body: (b: B) => Effect.Effect<A, E, R>
|
|
860
|
+
}
|
|
861
|
+
): Effect.Effect<A, E, R>
|
|
862
|
+
<A, R, E>(
|
|
863
|
+
initial: A,
|
|
864
|
+
options: {
|
|
865
|
+
readonly while: Predicate.Predicate<A>
|
|
866
|
+
readonly body: (a: A) => Effect.Effect<A, E, R>
|
|
867
|
+
}
|
|
868
|
+
): Effect.Effect<A, E, R>
|
|
869
|
+
} = <A, E, R>(
|
|
870
|
+
initial: A,
|
|
861
871
|
options: {
|
|
862
|
-
readonly while: Predicate.Predicate<
|
|
863
|
-
readonly body: (z:
|
|
872
|
+
readonly while: Predicate.Predicate<A>
|
|
873
|
+
readonly body: (z: A) => Effect.Effect<A, E, R>
|
|
864
874
|
}
|
|
865
|
-
): Effect.Effect<
|
|
866
|
-
core.suspend<
|
|
875
|
+
): Effect.Effect<A, E, R> =>
|
|
876
|
+
core.suspend<A, E, R>(() => {
|
|
867
877
|
if (options.while(initial)) {
|
|
868
878
|
return core.flatMap(options.body(initial), (z2) => iterate(z2, options))
|
|
869
879
|
}
|
|
@@ -874,7 +884,7 @@ const logWithLevel = (level?: LogLevel.LogLevel) =>
|
|
|
874
884
|
<A>(
|
|
875
885
|
messageOrCause: A,
|
|
876
886
|
supplementary?: A extends Cause.Cause<any> ? unknown : Cause.Cause<unknown>
|
|
877
|
-
): Effect.Effect<
|
|
887
|
+
): Effect.Effect<void> => {
|
|
878
888
|
const levelOption = Option.fromNullable(level)
|
|
879
889
|
let message: unknown
|
|
880
890
|
let cause: Cause.Cause<unknown>
|
|
@@ -885,7 +895,7 @@ const logWithLevel = (level?: LogLevel.LogLevel) =>
|
|
|
885
895
|
message = messageOrCause
|
|
886
896
|
cause = (supplementary as Cause.Cause<unknown>) ?? internalCause.empty
|
|
887
897
|
}
|
|
888
|
-
return core.withFiberRuntime
|
|
898
|
+
return core.withFiberRuntime((fiberState) => {
|
|
889
899
|
fiberState.log(message, cause, levelOption)
|
|
890
900
|
return core.unit
|
|
891
901
|
})
|
|
@@ -895,48 +905,48 @@ const logWithLevel = (level?: LogLevel.LogLevel) =>
|
|
|
895
905
|
export const log: <A>(
|
|
896
906
|
messageOrCause: A,
|
|
897
907
|
supplementary?: A extends Cause.Cause<any> ? unknown : Cause.Cause<unknown>
|
|
898
|
-
) => Effect.Effect<
|
|
908
|
+
) => Effect.Effect<void> = logWithLevel()
|
|
899
909
|
|
|
900
910
|
/** @internal */
|
|
901
911
|
export const logTrace: <A>(
|
|
902
912
|
messageOrCause: A,
|
|
903
913
|
supplementary?: A extends Cause.Cause<any> ? unknown : Cause.Cause<unknown>
|
|
904
|
-
) => Effect.Effect<
|
|
914
|
+
) => Effect.Effect<void> = logWithLevel(LogLevel.Trace)
|
|
905
915
|
|
|
906
916
|
/** @internal */
|
|
907
917
|
export const logDebug: <A>(
|
|
908
918
|
messageOrCause: A,
|
|
909
919
|
supplementary?: A extends Cause.Cause<any> ? unknown : Cause.Cause<unknown>
|
|
910
|
-
) => Effect.Effect<
|
|
920
|
+
) => Effect.Effect<void> = logWithLevel(LogLevel.Debug)
|
|
911
921
|
|
|
912
922
|
/** @internal */
|
|
913
923
|
export const logInfo: <A>(
|
|
914
924
|
messageOrCause: A,
|
|
915
925
|
supplementary?: A extends Cause.Cause<any> ? unknown : Cause.Cause<unknown>
|
|
916
|
-
) => Effect.Effect<
|
|
926
|
+
) => Effect.Effect<void> = logWithLevel(LogLevel.Info)
|
|
917
927
|
|
|
918
928
|
/** @internal */
|
|
919
929
|
export const logWarning: <A>(
|
|
920
930
|
messageOrCause: A,
|
|
921
931
|
supplementary?: A extends Cause.Cause<any> ? unknown : Cause.Cause<unknown>
|
|
922
|
-
) => Effect.Effect<
|
|
932
|
+
) => Effect.Effect<void> = logWithLevel(LogLevel.Warning)
|
|
923
933
|
|
|
924
934
|
/** @internal */
|
|
925
935
|
export const logError: <A>(
|
|
926
936
|
messageOrCause: A,
|
|
927
937
|
supplementary?: A extends Cause.Cause<any> ? unknown : Cause.Cause<unknown>
|
|
928
|
-
) => Effect.Effect<
|
|
938
|
+
) => Effect.Effect<void> = logWithLevel(LogLevel.Error)
|
|
929
939
|
|
|
930
940
|
/** @internal */
|
|
931
941
|
export const logFatal: <A>(
|
|
932
942
|
messageOrCause: A,
|
|
933
943
|
supplementary?: A extends Cause.Cause<any> ? unknown : Cause.Cause<unknown>
|
|
934
|
-
) => Effect.Effect<
|
|
944
|
+
) => Effect.Effect<void> = logWithLevel(LogLevel.Fatal)
|
|
935
945
|
|
|
936
946
|
/* @internal */
|
|
937
947
|
export const withLogSpan = dual<
|
|
938
|
-
(label: string) => <
|
|
939
|
-
<
|
|
948
|
+
(label: string) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
949
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, label: string) => Effect.Effect<A, E, R>
|
|
940
950
|
>(2, (effect, label) =>
|
|
941
951
|
core.flatMap(Clock.currentTimeMillis, (now) =>
|
|
942
952
|
core.fiberRefLocallyWith(
|
|
@@ -946,51 +956,68 @@ export const withLogSpan = dual<
|
|
|
946
956
|
)))
|
|
947
957
|
|
|
948
958
|
/* @internal */
|
|
949
|
-
export const logAnnotations: Effect.Effect<
|
|
959
|
+
export const logAnnotations: Effect.Effect<HashMap.HashMap<string, unknown>> = core
|
|
950
960
|
.fiberRefGet(
|
|
951
961
|
core.currentLogAnnotations
|
|
952
962
|
)
|
|
953
963
|
|
|
954
964
|
/* @internal */
|
|
955
|
-
// @ts-expect-error
|
|
956
965
|
export const loop: {
|
|
957
|
-
<
|
|
958
|
-
initial:
|
|
966
|
+
<A, B extends A, C, E, R>(
|
|
967
|
+
initial: A,
|
|
959
968
|
options: {
|
|
960
|
-
readonly while: Predicate.
|
|
961
|
-
readonly step: (
|
|
962
|
-
readonly body: (
|
|
969
|
+
readonly while: Predicate.Refinement<A, B>
|
|
970
|
+
readonly step: (b: B) => A
|
|
971
|
+
readonly body: (b: B) => Effect.Effect<C, E, R>
|
|
963
972
|
readonly discard?: false | undefined
|
|
964
973
|
}
|
|
965
|
-
): Effect.Effect<
|
|
966
|
-
<
|
|
967
|
-
initial:
|
|
974
|
+
): Effect.Effect<Array<C>, E, R>
|
|
975
|
+
<A, C, E, R>(
|
|
976
|
+
initial: A,
|
|
968
977
|
options: {
|
|
969
|
-
readonly while:
|
|
970
|
-
readonly step: (
|
|
971
|
-
readonly body: (
|
|
978
|
+
readonly while: (a: A) => boolean
|
|
979
|
+
readonly step: (a: A) => A
|
|
980
|
+
readonly body: (a: A) => Effect.Effect<C, E, R>
|
|
981
|
+
readonly discard?: false | undefined
|
|
982
|
+
}
|
|
983
|
+
): Effect.Effect<Array<C>, E, R>
|
|
984
|
+
<A, B extends A, C, E, R>(
|
|
985
|
+
initial: A,
|
|
986
|
+
options: {
|
|
987
|
+
readonly while: Predicate.Refinement<A, B>
|
|
988
|
+
readonly step: (b: B) => A
|
|
989
|
+
readonly body: (b: B) => Effect.Effect<R, E, C>
|
|
972
990
|
readonly discard: true
|
|
973
991
|
}
|
|
974
|
-
): Effect.Effect<
|
|
975
|
-
|
|
976
|
-
|
|
992
|
+
): Effect.Effect<void, E, R>
|
|
993
|
+
<A, C, E, R>(
|
|
994
|
+
initial: A,
|
|
995
|
+
options: {
|
|
996
|
+
readonly while: (a: A) => boolean
|
|
997
|
+
readonly step: (a: A) => A
|
|
998
|
+
readonly body: (a: A) => Effect.Effect<C, E, R>
|
|
999
|
+
readonly discard: true
|
|
1000
|
+
}
|
|
1001
|
+
): Effect.Effect<void, E, R>
|
|
1002
|
+
} = <A, C, E, R>(
|
|
1003
|
+
initial: A,
|
|
977
1004
|
options: {
|
|
978
|
-
readonly while: Predicate.Predicate<
|
|
979
|
-
readonly step: (
|
|
980
|
-
readonly body: (
|
|
1005
|
+
readonly while: Predicate.Predicate<A>
|
|
1006
|
+
readonly step: (a: A) => A
|
|
1007
|
+
readonly body: (a: A) => Effect.Effect<C, E, R>
|
|
981
1008
|
readonly discard?: boolean | undefined
|
|
982
1009
|
}
|
|
983
|
-
):
|
|
1010
|
+
): any =>
|
|
984
1011
|
options.discard
|
|
985
1012
|
? loopDiscard(initial, options.while, options.step, options.body)
|
|
986
|
-
: core.map(loopInternal(initial, options.while, options.step, options.body),
|
|
1013
|
+
: core.map(loopInternal(initial, options.while, options.step, options.body), Array.from)
|
|
987
1014
|
|
|
988
1015
|
const loopInternal = <Z, R, E, A>(
|
|
989
1016
|
initial: Z,
|
|
990
1017
|
cont: Predicate.Predicate<Z>,
|
|
991
1018
|
inc: (z: Z) => Z,
|
|
992
|
-
body: (z: Z) => Effect.Effect<
|
|
993
|
-
): Effect.Effect<
|
|
1019
|
+
body: (z: Z) => Effect.Effect<A, E, R>
|
|
1020
|
+
): Effect.Effect<List.List<A>, E, R> =>
|
|
994
1021
|
core.suspend(() =>
|
|
995
1022
|
cont(initial)
|
|
996
1023
|
? core.flatMap(body(initial), (a) =>
|
|
@@ -1001,12 +1028,12 @@ const loopInternal = <Z, R, E, A>(
|
|
|
1001
1028
|
: core.sync(() => List.empty())
|
|
1002
1029
|
)
|
|
1003
1030
|
|
|
1004
|
-
const loopDiscard = <
|
|
1005
|
-
initial:
|
|
1006
|
-
cont: Predicate.Predicate<
|
|
1007
|
-
inc: (
|
|
1008
|
-
body: (
|
|
1009
|
-
): Effect.Effect<
|
|
1031
|
+
const loopDiscard = <S, X, E, R>(
|
|
1032
|
+
initial: S,
|
|
1033
|
+
cont: Predicate.Predicate<S>,
|
|
1034
|
+
inc: (s: S) => S,
|
|
1035
|
+
body: (s: S) => Effect.Effect<X, E, R>
|
|
1036
|
+
): Effect.Effect<void, E, R> =>
|
|
1010
1037
|
core.suspend(() =>
|
|
1011
1038
|
cont(initial)
|
|
1012
1039
|
? core.flatMap(
|
|
@@ -1017,25 +1044,25 @@ const loopDiscard = <Z, R, E, X>(
|
|
|
1017
1044
|
)
|
|
1018
1045
|
|
|
1019
1046
|
/* @internal */
|
|
1020
|
-
export const mapAccum
|
|
1021
|
-
<A, B,
|
|
1022
|
-
zero:
|
|
1023
|
-
f: (
|
|
1024
|
-
)
|
|
1025
|
-
<A,
|
|
1047
|
+
export const mapAccum: {
|
|
1048
|
+
<S, A, B, E, R>(
|
|
1049
|
+
zero: S,
|
|
1050
|
+
f: (s: S, a: A, i: number) => Effect.Effect<readonly [S, B], E, R>
|
|
1051
|
+
): (elements: Iterable<A>) => Effect.Effect<[S, Array<B>], E, R>
|
|
1052
|
+
<A, S, B, E, R>(
|
|
1026
1053
|
elements: Iterable<A>,
|
|
1027
|
-
zero:
|
|
1028
|
-
f: (
|
|
1029
|
-
)
|
|
1030
|
-
|
|
1054
|
+
zero: S,
|
|
1055
|
+
f: (s: S, a: A, i: number) => Effect.Effect<readonly [S, B], E, R>
|
|
1056
|
+
): Effect.Effect<[S, Array<B>], E, R>
|
|
1057
|
+
} = dual(3, <A, S, B, E, R>(
|
|
1031
1058
|
elements: Iterable<A>,
|
|
1032
|
-
zero:
|
|
1033
|
-
f: (
|
|
1034
|
-
): Effect.Effect<
|
|
1059
|
+
zero: S,
|
|
1060
|
+
f: (s: S, a: A, i: number) => Effect.Effect<readonly [S, B], E, R>
|
|
1061
|
+
): Effect.Effect<[S, Array<B>], E, R> =>
|
|
1035
1062
|
core.suspend(() => {
|
|
1036
1063
|
const iterator = elements[Symbol.iterator]()
|
|
1037
1064
|
const builder: Array<B> = []
|
|
1038
|
-
let result: Effect.Effect<
|
|
1065
|
+
let result: Effect.Effect<S, E, R> = core.succeed(zero)
|
|
1039
1066
|
let next: IteratorResult<A, any>
|
|
1040
1067
|
let i = 0
|
|
1041
1068
|
while (!(next = iterator.next()).done) {
|
|
@@ -1050,23 +1077,26 @@ export const mapAccum = dual<
|
|
|
1050
1077
|
}))
|
|
1051
1078
|
|
|
1052
1079
|
/* @internal */
|
|
1053
|
-
export const mapErrorCause
|
|
1080
|
+
export const mapErrorCause: {
|
|
1054
1081
|
<E, E2>(
|
|
1055
1082
|
f: (cause: Cause.Cause<E>) => Cause.Cause<E2>
|
|
1056
|
-
)
|
|
1057
|
-
<
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1083
|
+
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E2, R>
|
|
1084
|
+
<A, E, R, E2>(self: Effect.Effect<A, E, R>, f: (cause: Cause.Cause<E>) => Cause.Cause<E2>): Effect.Effect<A, E2, R>
|
|
1085
|
+
} = dual(
|
|
1086
|
+
2,
|
|
1087
|
+
<A, E, R, E2>(self: Effect.Effect<A, E, R>, f: (cause: Cause.Cause<E>) => Cause.Cause<E2>): Effect.Effect<A, E2, R> =>
|
|
1088
|
+
core.matchCauseEffect(self, {
|
|
1089
|
+
onFailure: (c) => core.failCauseSync(() => f(c)),
|
|
1090
|
+
onSuccess: core.succeed
|
|
1091
|
+
})
|
|
1092
|
+
)
|
|
1063
1093
|
|
|
1064
1094
|
/* @internal */
|
|
1065
|
-
export const memoize = <
|
|
1066
|
-
self: Effect.Effect<
|
|
1067
|
-
): Effect.Effect<
|
|
1095
|
+
export const memoize = <A, E, R>(
|
|
1096
|
+
self: Effect.Effect<A, E, R>
|
|
1097
|
+
): Effect.Effect<Effect.Effect<A, E, R>> =>
|
|
1068
1098
|
pipe(
|
|
1069
|
-
core.deferredMake<
|
|
1099
|
+
core.deferredMake<[[FiberRefsPatch.FiberRefsPatch, runtimeFlagsPatch.RuntimeFlagsPatch], A], E>(),
|
|
1070
1100
|
core.flatMap((deferred) =>
|
|
1071
1101
|
pipe(
|
|
1072
1102
|
diffFiberRefsAndRuntimeFlags(self),
|
|
@@ -1088,42 +1118,40 @@ export const memoize = <R, E, A>(
|
|
|
1088
1118
|
)
|
|
1089
1119
|
|
|
1090
1120
|
/* @internal */
|
|
1091
|
-
export const merge = <
|
|
1121
|
+
export const merge = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<E | A, never, R> =>
|
|
1092
1122
|
core.matchEffect(self, {
|
|
1093
1123
|
onFailure: (e) => core.succeed(e),
|
|
1094
1124
|
onSuccess: core.succeed
|
|
1095
1125
|
})
|
|
1096
1126
|
|
|
1097
1127
|
/* @internal */
|
|
1098
|
-
export const negate = <R, E>(self: Effect.Effect<
|
|
1128
|
+
export const negate = <R, E>(self: Effect.Effect<boolean, E, R>): Effect.Effect<boolean, E, R> =>
|
|
1099
1129
|
core.map(self, (b) => !b)
|
|
1100
1130
|
|
|
1101
1131
|
/* @internal */
|
|
1102
|
-
export const none = <
|
|
1103
|
-
self: Effect.Effect<
|
|
1104
|
-
): Effect.Effect<
|
|
1132
|
+
export const none = <A, E, R>(
|
|
1133
|
+
self: Effect.Effect<Option.Option<A>, E, R>
|
|
1134
|
+
): Effect.Effect<void, E | Cause.NoSuchElementException, R> =>
|
|
1105
1135
|
core.flatMap(self, (option) => {
|
|
1106
1136
|
switch (option._tag) {
|
|
1107
|
-
case "None":
|
|
1137
|
+
case "None":
|
|
1108
1138
|
return core.unit
|
|
1109
|
-
|
|
1110
|
-
case "Some": {
|
|
1139
|
+
case "Some":
|
|
1111
1140
|
return core.fail(new core.NoSuchElementException())
|
|
1112
|
-
}
|
|
1113
1141
|
}
|
|
1114
1142
|
})
|
|
1115
1143
|
|
|
1116
1144
|
/* @internal */
|
|
1117
|
-
export const once = <
|
|
1118
|
-
self: Effect.Effect<
|
|
1119
|
-
): Effect.Effect<
|
|
1145
|
+
export const once = <A, E, R>(
|
|
1146
|
+
self: Effect.Effect<A, E, R>
|
|
1147
|
+
): Effect.Effect<Effect.Effect<void, E, R>> =>
|
|
1120
1148
|
core.map(
|
|
1121
1149
|
Ref.make(true),
|
|
1122
1150
|
(ref) => core.asUnit(core.whenEffect(self, Ref.getAndSet(ref, false)))
|
|
1123
1151
|
)
|
|
1124
1152
|
|
|
1125
1153
|
/* @internal */
|
|
1126
|
-
export const option = <
|
|
1154
|
+
export const option = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<Option.Option<A>, never, R> =>
|
|
1127
1155
|
core.matchEffect(self, {
|
|
1128
1156
|
onFailure: () => core.succeed(Option.none()),
|
|
1129
1157
|
onSuccess: (a) => core.succeed(Option.some(a))
|
|
@@ -1131,18 +1159,18 @@ export const option = <R, E, A>(self: Effect.Effect<R, E, A>): Effect.Effect<R,
|
|
|
1131
1159
|
|
|
1132
1160
|
/* @internal */
|
|
1133
1161
|
export const orElseFail = dual<
|
|
1134
|
-
<E2>(evaluate: LazyArg<E2>) => <
|
|
1135
|
-
<
|
|
1162
|
+
<E2>(evaluate: LazyArg<E2>) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E2, R>,
|
|
1163
|
+
<A, E, R, E2>(self: Effect.Effect<A, E, R>, evaluate: LazyArg<E2>) => Effect.Effect<A, E2, R>
|
|
1136
1164
|
>(2, (self, evaluate) => core.orElse(self, () => core.failSync(evaluate)))
|
|
1137
1165
|
|
|
1138
1166
|
/* @internal */
|
|
1139
1167
|
export const orElseSucceed = dual<
|
|
1140
|
-
<A2>(evaluate: LazyArg<A2>) => <
|
|
1141
|
-
<
|
|
1168
|
+
<A2>(evaluate: LazyArg<A2>) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A2, never, R>,
|
|
1169
|
+
<A, E, R, A2>(self: Effect.Effect<A, E, R>, evaluate: LazyArg<A2>) => Effect.Effect<A | A2, never, R>
|
|
1142
1170
|
>(2, (self, evaluate) => core.orElse(self, () => core.sync(evaluate)))
|
|
1143
1171
|
|
|
1144
1172
|
/* @internal */
|
|
1145
|
-
export const parallelErrors = <
|
|
1173
|
+
export const parallelErrors = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, Array<E>, R> =>
|
|
1146
1174
|
core.matchCauseEffect(self, {
|
|
1147
1175
|
onFailure: (cause) => {
|
|
1148
1176
|
const errors = Array.from(internalCause.failures(cause))
|
|
@@ -1154,18 +1182,18 @@ export const parallelErrors = <R, E, A>(self: Effect.Effect<R, E, A>): Effect.Ef
|
|
|
1154
1182
|
})
|
|
1155
1183
|
|
|
1156
1184
|
/* @internal */
|
|
1157
|
-
export const patchFiberRefs = (patch: FiberRefsPatch.FiberRefsPatch): Effect.Effect<
|
|
1185
|
+
export const patchFiberRefs = (patch: FiberRefsPatch.FiberRefsPatch): Effect.Effect<void> =>
|
|
1158
1186
|
updateFiberRefs((fiberId, fiberRefs) => pipe(patch, fiberRefsPatch.patch(fiberId, fiberRefs)))
|
|
1159
1187
|
|
|
1160
1188
|
/* @internal */
|
|
1161
|
-
export const promise = <A>(evaluate: (signal: AbortSignal) => Promise<A>): Effect.Effect<
|
|
1189
|
+
export const promise = <A>(evaluate: (signal: AbortSignal) => Promise<A>): Effect.Effect<A> =>
|
|
1162
1190
|
evaluate.length >= 1
|
|
1163
|
-
? core.async
|
|
1191
|
+
? core.async((resolve, signal) => {
|
|
1164
1192
|
evaluate(signal)
|
|
1165
1193
|
.then((a) => resolve(core.exitSucceed(a)))
|
|
1166
1194
|
.catch((e) => resolve(core.exitDie(e)))
|
|
1167
1195
|
})
|
|
1168
|
-
: core.async
|
|
1196
|
+
: core.async((resolve) => {
|
|
1169
1197
|
;(evaluate as LazyArg<Promise<A>>)()
|
|
1170
1198
|
.then((a) => resolve(core.exitSucceed(a)))
|
|
1171
1199
|
.catch((e) => resolve(core.exitDie(e)))
|
|
@@ -1176,22 +1204,22 @@ export const provideService = dual<
|
|
|
1176
1204
|
<T extends Context.Tag<any, any>>(
|
|
1177
1205
|
tag: T,
|
|
1178
1206
|
service: Context.Tag.Service<T>
|
|
1179
|
-
) => <
|
|
1180
|
-
<
|
|
1181
|
-
self: Effect.Effect<
|
|
1207
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Context.Tag.Identifier<T>>>,
|
|
1208
|
+
<A, E, R, T extends Context.Tag<any, any>>(
|
|
1209
|
+
self: Effect.Effect<A, E, R>,
|
|
1182
1210
|
tag: T,
|
|
1183
1211
|
service: Context.Tag.Service<T>
|
|
1184
|
-
) => Effect.Effect<Exclude<R, Context.Tag.Identifier<T
|
|
1212
|
+
) => Effect.Effect<A, E, Exclude<R, Context.Tag.Identifier<T>>>
|
|
1185
1213
|
>(
|
|
1186
1214
|
3,
|
|
1187
|
-
<
|
|
1188
|
-
self: Effect.Effect<
|
|
1215
|
+
<A, E, R, T extends Context.Tag<any, any>>(
|
|
1216
|
+
self: Effect.Effect<A, E, R>,
|
|
1189
1217
|
tag: T,
|
|
1190
1218
|
service: Context.Tag.Service<T>
|
|
1191
|
-
): Effect.Effect<Exclude<R, Context.Tag.Identifier<T
|
|
1219
|
+
): Effect.Effect<A, E, Exclude<R, Context.Tag.Identifier<T>>> =>
|
|
1192
1220
|
core.contextWithEffect((env) =>
|
|
1193
1221
|
core.provideContext(
|
|
1194
|
-
self as Effect.Effect<Context.Tag.Identifier<T> | Exclude<R, Context.Tag.Identifier<T
|
|
1222
|
+
self as Effect.Effect<A, E, Context.Tag.Identifier<T> | Exclude<R, Context.Tag.Identifier<T>>>,
|
|
1195
1223
|
Context.add(env, tag, service)
|
|
1196
1224
|
)
|
|
1197
1225
|
)
|
|
@@ -1199,19 +1227,19 @@ export const provideService = dual<
|
|
|
1199
1227
|
|
|
1200
1228
|
/* @internal */
|
|
1201
1229
|
export const provideServiceEffect = dual<
|
|
1202
|
-
<T extends Context.Tag<any, any>,
|
|
1230
|
+
<T extends Context.Tag<any, any>, E1, R1>(
|
|
1203
1231
|
tag: T,
|
|
1204
|
-
effect: Effect.Effect<
|
|
1205
|
-
) => <
|
|
1206
|
-
<
|
|
1207
|
-
self: Effect.Effect<
|
|
1232
|
+
effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
|
|
1233
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E1, R1 | Exclude<R, Context.Tag.Identifier<T>>>,
|
|
1234
|
+
<A, E, R, T extends Context.Tag<any, any>, E1, R1>(
|
|
1235
|
+
self: Effect.Effect<A, E, R>,
|
|
1208
1236
|
tag: T,
|
|
1209
|
-
effect: Effect.Effect<
|
|
1210
|
-
) => Effect.Effect<R1 | Exclude<R, Context.Tag.Identifier<T
|
|
1211
|
-
>(3, <
|
|
1212
|
-
self: Effect.Effect<
|
|
1237
|
+
effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
|
|
1238
|
+
) => Effect.Effect<A, E | E1, R1 | Exclude<R, Context.Tag.Identifier<T>>>
|
|
1239
|
+
>(3, <A, E, R, T extends Context.Tag<any, any>, E1, R1>(
|
|
1240
|
+
self: Effect.Effect<A, E, R>,
|
|
1213
1241
|
tag: T,
|
|
1214
|
-
effect: Effect.Effect<
|
|
1242
|
+
effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
|
|
1215
1243
|
) =>
|
|
1216
1244
|
core.contextWithEffect((env: Context.Context<R1 | Exclude<R, Context.Tag.Identifier<T>>>) =>
|
|
1217
1245
|
core.flatMap(
|
|
@@ -1221,25 +1249,29 @@ export const provideServiceEffect = dual<
|
|
|
1221
1249
|
))
|
|
1222
1250
|
|
|
1223
1251
|
/* @internal */
|
|
1224
|
-
export const random: Effect.Effect<
|
|
1252
|
+
export const random: Effect.Effect<Random.Random> = defaultServices.randomWith(core.succeed)
|
|
1225
1253
|
|
|
1226
1254
|
/* @internal */
|
|
1227
1255
|
export const reduce = dual<
|
|
1228
|
-
<Z, A,
|
|
1256
|
+
<Z, A, E, R>(
|
|
1229
1257
|
zero: Z,
|
|
1230
|
-
f: (z: Z, a: A, i: number) => Effect.Effect<
|
|
1231
|
-
) => (elements: Iterable<A>) => Effect.Effect<
|
|
1232
|
-
<Z,
|
|
1258
|
+
f: (z: Z, a: A, i: number) => Effect.Effect<Z, E, R>
|
|
1259
|
+
) => (elements: Iterable<A>) => Effect.Effect<Z, E, R>,
|
|
1260
|
+
<A, Z, E, R>(
|
|
1233
1261
|
elements: Iterable<A>,
|
|
1234
1262
|
zero: Z,
|
|
1235
|
-
f: (z: Z, a: A, i: number) => Effect.Effect<
|
|
1236
|
-
) => Effect.Effect<
|
|
1263
|
+
f: (z: Z, a: A, i: number) => Effect.Effect<Z, E, R>
|
|
1264
|
+
) => Effect.Effect<Z, E, R>
|
|
1237
1265
|
>(
|
|
1238
1266
|
3,
|
|
1239
|
-
<
|
|
1267
|
+
<A, Z, E, R>(
|
|
1268
|
+
elements: Iterable<A>,
|
|
1269
|
+
zero: Z,
|
|
1270
|
+
f: (z: Z, a: A, i: number) => Effect.Effect<Z, E, R>
|
|
1271
|
+
) =>
|
|
1240
1272
|
ReadonlyArray.fromIterable(elements).reduce(
|
|
1241
1273
|
(acc, el, i) => core.flatMap(acc, (a) => f(a, el, i)),
|
|
1242
|
-
core.succeed(zero) as Effect.Effect<
|
|
1274
|
+
core.succeed(zero) as Effect.Effect<Z, E, R>
|
|
1243
1275
|
)
|
|
1244
1276
|
)
|
|
1245
1277
|
|
|
@@ -1247,19 +1279,19 @@ export const reduce = dual<
|
|
|
1247
1279
|
export const reduceRight = dual<
|
|
1248
1280
|
<A, Z, R, E>(
|
|
1249
1281
|
zero: Z,
|
|
1250
|
-
f: (a: A, z: Z, i: number) => Effect.Effect<
|
|
1251
|
-
) => (elements: Iterable<A>) => Effect.Effect<
|
|
1282
|
+
f: (a: A, z: Z, i: number) => Effect.Effect<Z, E, R>
|
|
1283
|
+
) => (elements: Iterable<A>) => Effect.Effect<Z, E, R>,
|
|
1252
1284
|
<A, Z, R, E>(
|
|
1253
1285
|
elements: Iterable<A>,
|
|
1254
1286
|
zero: Z,
|
|
1255
|
-
f: (a: A, z: Z, i: number) => Effect.Effect<
|
|
1256
|
-
) => Effect.Effect<
|
|
1287
|
+
f: (a: A, z: Z, i: number) => Effect.Effect<Z, E, R>
|
|
1288
|
+
) => Effect.Effect<Z, E, R>
|
|
1257
1289
|
>(
|
|
1258
1290
|
3,
|
|
1259
|
-
<A, Z, R, E>(elements: Iterable<A>, zero: Z, f: (a: A, z: Z, i: number) => Effect.Effect<
|
|
1291
|
+
<A, Z, R, E>(elements: Iterable<A>, zero: Z, f: (a: A, z: Z, i: number) => Effect.Effect<Z, E, R>) =>
|
|
1260
1292
|
ReadonlyArray.fromIterable(elements).reduceRight(
|
|
1261
1293
|
(acc, el, i) => core.flatMap(acc, (a) => f(el, a, i)),
|
|
1262
|
-
core.succeed(zero) as Effect.Effect<
|
|
1294
|
+
core.succeed(zero) as Effect.Effect<Z, E, R>
|
|
1263
1295
|
)
|
|
1264
1296
|
)
|
|
1265
1297
|
|
|
@@ -1269,23 +1301,23 @@ export const reduceWhile = dual<
|
|
|
1269
1301
|
zero: Z,
|
|
1270
1302
|
options: {
|
|
1271
1303
|
readonly while: Predicate.Predicate<Z>
|
|
1272
|
-
readonly body: (s: Z, a: A, i: number) => Effect.Effect<
|
|
1304
|
+
readonly body: (s: Z, a: A, i: number) => Effect.Effect<Z, E, R>
|
|
1273
1305
|
}
|
|
1274
|
-
) => (elements: Iterable<A>) => Effect.Effect<
|
|
1306
|
+
) => (elements: Iterable<A>) => Effect.Effect<Z, E, R>,
|
|
1275
1307
|
<A, R, E, Z>(
|
|
1276
1308
|
elements: Iterable<A>,
|
|
1277
1309
|
zero: Z,
|
|
1278
1310
|
options: {
|
|
1279
1311
|
readonly while: Predicate.Predicate<Z>
|
|
1280
|
-
readonly body: (s: Z, a: A, i: number) => Effect.Effect<
|
|
1312
|
+
readonly body: (s: Z, a: A, i: number) => Effect.Effect<Z, E, R>
|
|
1281
1313
|
}
|
|
1282
|
-
) => Effect.Effect<
|
|
1314
|
+
) => Effect.Effect<Z, E, R>
|
|
1283
1315
|
>(3, <A, R, E, Z>(
|
|
1284
1316
|
elements: Iterable<A>,
|
|
1285
1317
|
zero: Z,
|
|
1286
1318
|
options: {
|
|
1287
1319
|
readonly while: Predicate.Predicate<Z>
|
|
1288
|
-
readonly body: (s: Z, a: A, i: number) => Effect.Effect<
|
|
1320
|
+
readonly body: (s: Z, a: A, i: number) => Effect.Effect<Z, E, R>
|
|
1289
1321
|
}
|
|
1290
1322
|
) =>
|
|
1291
1323
|
core.flatMap(
|
|
@@ -1298,8 +1330,8 @@ const reduceWhileLoop = <A, R, E, Z>(
|
|
|
1298
1330
|
index: number,
|
|
1299
1331
|
state: Z,
|
|
1300
1332
|
predicate: Predicate.Predicate<Z>,
|
|
1301
|
-
f: (s: Z, a: A, i: number) => Effect.Effect<
|
|
1302
|
-
): Effect.Effect<
|
|
1333
|
+
f: (s: Z, a: A, i: number) => Effect.Effect<Z, E, R>
|
|
1334
|
+
): Effect.Effect<Z, E, R> => {
|
|
1303
1335
|
const next = iterator.next()
|
|
1304
1336
|
if (!next.done && predicate(state)) {
|
|
1305
1337
|
return core.flatMap(
|
|
@@ -1312,52 +1344,55 @@ const reduceWhileLoop = <A, R, E, Z>(
|
|
|
1312
1344
|
|
|
1313
1345
|
/* @internal */
|
|
1314
1346
|
export const repeatN = dual<
|
|
1315
|
-
(n: number) => <
|
|
1316
|
-
<
|
|
1347
|
+
(n: number) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
1348
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, n: number) => Effect.Effect<A, E, R>
|
|
1317
1349
|
>(2, (self, n) => core.suspend(() => repeatNLoop(self, n)))
|
|
1318
1350
|
|
|
1319
1351
|
/* @internal */
|
|
1320
|
-
const repeatNLoop = <
|
|
1352
|
+
const repeatNLoop = <A, E, R>(self: Effect.Effect<A, E, R>, n: number): Effect.Effect<A, E, R> =>
|
|
1321
1353
|
core.flatMap(self, (a) =>
|
|
1322
1354
|
n <= 0
|
|
1323
1355
|
? core.succeed(a)
|
|
1324
1356
|
: core.zipRight(core.yieldNow(), repeatNLoop(self, n - 1)))
|
|
1325
1357
|
|
|
1326
1358
|
/* @internal */
|
|
1327
|
-
export const sandbox = <
|
|
1359
|
+
export const sandbox = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, Cause.Cause<E>, R> =>
|
|
1328
1360
|
core.matchCauseEffect(self, {
|
|
1329
1361
|
onFailure: core.fail,
|
|
1330
1362
|
onSuccess: core.succeed
|
|
1331
1363
|
})
|
|
1332
1364
|
|
|
1333
1365
|
/* @internal */
|
|
1334
|
-
export const setFiberRefs = (fiberRefs: FiberRefs.FiberRefs): Effect.Effect<
|
|
1366
|
+
export const setFiberRefs = (fiberRefs: FiberRefs.FiberRefs): Effect.Effect<void> =>
|
|
1335
1367
|
core.suspend(() => FiberRefs.setAll(fiberRefs))
|
|
1336
1368
|
|
|
1337
1369
|
/* @internal */
|
|
1338
|
-
export const sleep: (duration: Duration.DurationInput) => Effect.Effect<
|
|
1370
|
+
export const sleep: (duration: Duration.DurationInput) => Effect.Effect<void> = Clock.sleep
|
|
1339
1371
|
|
|
1340
1372
|
/* @internal */
|
|
1341
|
-
export const succeedNone: Effect.Effect<
|
|
1373
|
+
export const succeedNone: Effect.Effect<Option.Option<never>> = core.succeed(Option.none())
|
|
1342
1374
|
|
|
1343
1375
|
/* @internal */
|
|
1344
|
-
export const succeedSome = <A>(value: A): Effect.Effect<
|
|
1345
|
-
core.succeed(Option.some(value))
|
|
1376
|
+
export const succeedSome = <A>(value: A): Effect.Effect<Option.Option<A>> => core.succeed(Option.some(value))
|
|
1346
1377
|
|
|
1347
1378
|
/* @internal */
|
|
1348
|
-
export const summarized
|
|
1349
|
-
<
|
|
1350
|
-
summary: Effect.Effect<
|
|
1379
|
+
export const summarized: {
|
|
1380
|
+
<B, E2, R2, C>(
|
|
1381
|
+
summary: Effect.Effect<B, E2, R2>,
|
|
1351
1382
|
f: (start: B, end: B) => C
|
|
1352
|
-
)
|
|
1353
|
-
<
|
|
1354
|
-
self: Effect.Effect<
|
|
1355
|
-
summary: Effect.Effect<
|
|
1383
|
+
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<[C, A], E2 | E, R2 | R>
|
|
1384
|
+
<A, E, R, B, E2, R2, C>(
|
|
1385
|
+
self: Effect.Effect<A, E, R>,
|
|
1386
|
+
summary: Effect.Effect<B, E2, R2>,
|
|
1356
1387
|
f: (start: B, end: B) => C
|
|
1357
|
-
)
|
|
1358
|
-
|
|
1388
|
+
): Effect.Effect<[C, A], E2 | E, R2 | R>
|
|
1389
|
+
} = dual(
|
|
1359
1390
|
3,
|
|
1360
|
-
|
|
1391
|
+
<A, E, R, B, E2, R2, C>(
|
|
1392
|
+
self: Effect.Effect<A, E, R>,
|
|
1393
|
+
summary: Effect.Effect<B, E2, R2>,
|
|
1394
|
+
f: (start: B, end: B) => C
|
|
1395
|
+
): Effect.Effect<[C, A], E2 | E, R2 | R> =>
|
|
1361
1396
|
core.flatMap(
|
|
1362
1397
|
summary,
|
|
1363
1398
|
(start) => core.flatMap(self, (value) => core.map(summary, (end) => [f(start, end), value]))
|
|
@@ -1367,14 +1402,14 @@ export const summarized = dual<
|
|
|
1367
1402
|
/* @internal */
|
|
1368
1403
|
export const tagMetrics = dual<
|
|
1369
1404
|
{
|
|
1370
|
-
(key: string, value: string): <
|
|
1405
|
+
(key: string, value: string): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
1371
1406
|
(
|
|
1372
1407
|
values: Record<string, string>
|
|
1373
|
-
): <
|
|
1408
|
+
): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
1374
1409
|
},
|
|
1375
1410
|
{
|
|
1376
|
-
<
|
|
1377
|
-
<
|
|
1411
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, key: string, value: string): Effect.Effect<A, E, R>
|
|
1412
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, values: Record<string, string>): Effect.Effect<A, E, R>
|
|
1378
1413
|
}
|
|
1379
1414
|
>((args) => core.isEffect(args[0]), function() {
|
|
1380
1415
|
return labelMetrics(
|
|
@@ -1387,8 +1422,8 @@ export const tagMetrics = dual<
|
|
|
1387
1422
|
|
|
1388
1423
|
/* @internal */
|
|
1389
1424
|
export const labelMetrics = dual<
|
|
1390
|
-
(labels: Iterable<MetricLabel.MetricLabel>) => <
|
|
1391
|
-
<
|
|
1425
|
+
(labels: Iterable<MetricLabel.MetricLabel>) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
1426
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, labels: Iterable<MetricLabel.MetricLabel>) => Effect.Effect<A, E, R>
|
|
1392
1427
|
>(
|
|
1393
1428
|
2,
|
|
1394
1429
|
(self, labels) => core.fiberRefLocallyWith(self, core.currentMetricLabels, (old) => ReadonlyArray.union(old, labels))
|
|
@@ -1397,23 +1432,23 @@ export const labelMetrics = dual<
|
|
|
1397
1432
|
/* @internal */
|
|
1398
1433
|
export const takeUntil: {
|
|
1399
1434
|
<A, R, E>(
|
|
1400
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<
|
|
1401
|
-
): (elements: Iterable<A>) => Effect.Effect<
|
|
1402
|
-
<
|
|
1435
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1436
|
+
): (elements: Iterable<A>) => Effect.Effect<Array<A>, E, R>
|
|
1437
|
+
<A, E, R>(
|
|
1403
1438
|
elements: Iterable<A>,
|
|
1404
|
-
predicate: (a: A
|
|
1405
|
-
): Effect.Effect<
|
|
1439
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1440
|
+
): Effect.Effect<Array<A>, E, R>
|
|
1406
1441
|
} = dual(
|
|
1407
1442
|
2,
|
|
1408
|
-
<
|
|
1443
|
+
<A, E, R>(
|
|
1409
1444
|
elements: Iterable<A>,
|
|
1410
|
-
predicate: (a: A
|
|
1411
|
-
): Effect.Effect<
|
|
1445
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1446
|
+
): Effect.Effect<Array<A>, E, R> =>
|
|
1412
1447
|
core.suspend(() => {
|
|
1413
1448
|
const iterator = elements[Symbol.iterator]()
|
|
1414
1449
|
const builder: Array<A> = []
|
|
1415
1450
|
let next: IteratorResult<A, any>
|
|
1416
|
-
let effect: Effect.Effect<
|
|
1451
|
+
let effect: Effect.Effect<boolean, E, R> = core.succeed(false)
|
|
1417
1452
|
let i = 0
|
|
1418
1453
|
while ((next = iterator.next()) && !next.done) {
|
|
1419
1454
|
const a = next.value
|
|
@@ -1432,21 +1467,21 @@ export const takeUntil: {
|
|
|
1432
1467
|
|
|
1433
1468
|
/* @internal */
|
|
1434
1469
|
export const takeWhile = dual<
|
|
1435
|
-
<
|
|
1436
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<
|
|
1437
|
-
) => (elements: Iterable<A>) => Effect.Effect<
|
|
1438
|
-
<
|
|
1470
|
+
<A, E, R>(
|
|
1471
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1472
|
+
) => (elements: Iterable<A>) => Effect.Effect<Array<A>, E, R>,
|
|
1473
|
+
<A, E, R>(
|
|
1439
1474
|
elements: Iterable<A>,
|
|
1440
|
-
predicate: (a: A
|
|
1441
|
-
) => Effect.Effect<
|
|
1475
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1476
|
+
) => Effect.Effect<Array<A>, E, R>
|
|
1442
1477
|
>(
|
|
1443
1478
|
2,
|
|
1444
|
-
<
|
|
1479
|
+
<A, E, R>(elements: Iterable<A>, predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>) =>
|
|
1445
1480
|
core.suspend(() => {
|
|
1446
1481
|
const iterator = elements[Symbol.iterator]()
|
|
1447
1482
|
const builder: Array<A> = []
|
|
1448
1483
|
let next: IteratorResult<A, any>
|
|
1449
|
-
let taking: Effect.Effect<
|
|
1484
|
+
let taking: Effect.Effect<boolean, E, R> = core.succeed(true)
|
|
1450
1485
|
let i = 0
|
|
1451
1486
|
while ((next = iterator.next()) && !next.done) {
|
|
1452
1487
|
const a = next.value
|
|
@@ -1468,19 +1503,19 @@ export const takeWhile = dual<
|
|
|
1468
1503
|
|
|
1469
1504
|
/* @internal */
|
|
1470
1505
|
export const tapBoth = dual<
|
|
1471
|
-
<E,
|
|
1506
|
+
<E, X, E2, R2, A, X1, E3, R3>(
|
|
1472
1507
|
options: {
|
|
1473
|
-
readonly onFailure: (e:
|
|
1474
|
-
readonly onSuccess: (a:
|
|
1508
|
+
readonly onFailure: (e: NoInfer<E>) => Effect.Effect<X, E2, R2>
|
|
1509
|
+
readonly onSuccess: (a: NoInfer<A>) => Effect.Effect<X1, E3, R3>
|
|
1475
1510
|
}
|
|
1476
|
-
) => <R>(self: Effect.Effect<
|
|
1477
|
-
<
|
|
1478
|
-
self: Effect.Effect<
|
|
1511
|
+
) => <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2 | E3, R | R2 | R3>,
|
|
1512
|
+
<A, E, R, X, E2, R2, X1, E3, R3>(
|
|
1513
|
+
self: Effect.Effect<A, E, R>,
|
|
1479
1514
|
options: {
|
|
1480
|
-
readonly onFailure: (e:
|
|
1481
|
-
readonly onSuccess: (a:
|
|
1515
|
+
readonly onFailure: (e: E) => Effect.Effect<X, E2, R2>
|
|
1516
|
+
readonly onSuccess: (a: A) => Effect.Effect<X1, E3, R3>
|
|
1482
1517
|
}
|
|
1483
|
-
) => Effect.Effect<
|
|
1518
|
+
) => Effect.Effect<A, E | E2 | E3, R | R2 | R3>
|
|
1484
1519
|
>(2, (self, { onFailure, onSuccess }) =>
|
|
1485
1520
|
core.matchCauseEffect(self, {
|
|
1486
1521
|
onFailure: (cause) => {
|
|
@@ -1499,13 +1534,13 @@ export const tapBoth = dual<
|
|
|
1499
1534
|
|
|
1500
1535
|
/* @internal */
|
|
1501
1536
|
export const tapDefect = dual<
|
|
1502
|
-
<
|
|
1503
|
-
f: (cause: Cause.Cause<never>) => Effect.Effect<
|
|
1504
|
-
) => <
|
|
1505
|
-
<
|
|
1506
|
-
self: Effect.Effect<
|
|
1507
|
-
f: (cause: Cause.Cause<never>) => Effect.Effect<
|
|
1508
|
-
) => Effect.Effect<
|
|
1537
|
+
<X, E2, R2>(
|
|
1538
|
+
f: (cause: Cause.Cause<never>) => Effect.Effect<X, E2, R2>
|
|
1539
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R | R2>,
|
|
1540
|
+
<A, E, R, X, E2, R2>(
|
|
1541
|
+
self: Effect.Effect<A, E, R>,
|
|
1542
|
+
f: (cause: Cause.Cause<never>) => Effect.Effect<X, E2, R2>
|
|
1543
|
+
) => Effect.Effect<A, E | E2, R | R2>
|
|
1509
1544
|
>(2, (self, f) =>
|
|
1510
1545
|
core.catchAllCause(self, (cause) =>
|
|
1511
1546
|
Option.match(internalCause.keepDefects(cause), {
|
|
@@ -1515,24 +1550,22 @@ export const tapDefect = dual<
|
|
|
1515
1550
|
|
|
1516
1551
|
/* @internal */
|
|
1517
1552
|
export const tapError = dual<
|
|
1518
|
-
<E,
|
|
1519
|
-
f: (e:
|
|
1520
|
-
) => <
|
|
1521
|
-
<
|
|
1522
|
-
self: Effect.Effect<
|
|
1523
|
-
f: (e:
|
|
1524
|
-
) => Effect.Effect<
|
|
1553
|
+
<E, X, E2, R2>(
|
|
1554
|
+
f: (e: NoInfer<E>) => Effect.Effect<X, E2, R2>
|
|
1555
|
+
) => <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R | R2>,
|
|
1556
|
+
<A, E, R, X, E2, R2>(
|
|
1557
|
+
self: Effect.Effect<A, E, R>,
|
|
1558
|
+
f: (e: E) => Effect.Effect<X, E2, R2>
|
|
1559
|
+
) => Effect.Effect<A, E | E2, R | R2>
|
|
1525
1560
|
>(2, (self, f) =>
|
|
1526
1561
|
core.matchCauseEffect(self, {
|
|
1527
1562
|
onFailure: (cause) => {
|
|
1528
1563
|
const either = internalCause.failureOrCause(cause)
|
|
1529
1564
|
switch (either._tag) {
|
|
1530
|
-
case "Left":
|
|
1565
|
+
case "Left":
|
|
1531
1566
|
return core.zipRight(f(either.left as any), core.failCause(cause))
|
|
1532
|
-
|
|
1533
|
-
case "Right": {
|
|
1567
|
+
case "Right":
|
|
1534
1568
|
return core.failCause(cause)
|
|
1535
|
-
}
|
|
1536
1569
|
}
|
|
1537
1570
|
},
|
|
1538
1571
|
onSuccess: core.succeed
|
|
@@ -1540,15 +1573,15 @@ export const tapError = dual<
|
|
|
1540
1573
|
|
|
1541
1574
|
/* @internal */
|
|
1542
1575
|
export const tapErrorTag = dual<
|
|
1543
|
-
<K extends (E extends { _tag: string } ? E["_tag"] : never), E,
|
|
1576
|
+
<K extends (E extends { _tag: string } ? E["_tag"] : never), E, A1, E1, R1>(
|
|
1544
1577
|
k: K,
|
|
1545
|
-
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<
|
|
1546
|
-
) => <
|
|
1547
|
-
<
|
|
1548
|
-
self: Effect.Effect<
|
|
1578
|
+
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<A1, E1, R1>
|
|
1579
|
+
) => <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E1, R | R1>,
|
|
1580
|
+
<A, E, R, K extends (E extends { _tag: string } ? E["_tag"] : never), A1, E1, R1>(
|
|
1581
|
+
self: Effect.Effect<A, E, R>,
|
|
1549
1582
|
k: K,
|
|
1550
|
-
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<
|
|
1551
|
-
) => Effect.Effect<
|
|
1583
|
+
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<A1, E1, R1>
|
|
1584
|
+
) => Effect.Effect<A, E | E1, R | R1>
|
|
1552
1585
|
>(3, (self, k, f) =>
|
|
1553
1586
|
tapError(self, (e) => {
|
|
1554
1587
|
if (Predicate.isTagged(e, k)) {
|
|
@@ -1559,44 +1592,44 @@ export const tapErrorTag = dual<
|
|
|
1559
1592
|
|
|
1560
1593
|
/* @internal */
|
|
1561
1594
|
export const tapErrorCause = dual<
|
|
1562
|
-
<E,
|
|
1563
|
-
f: (cause: Cause.Cause<
|
|
1564
|
-
) => <
|
|
1565
|
-
<
|
|
1566
|
-
self: Effect.Effect<
|
|
1567
|
-
f: (cause: Cause.Cause<
|
|
1568
|
-
) => Effect.Effect<
|
|
1595
|
+
<E, X, E2, R2>(
|
|
1596
|
+
f: (cause: Cause.Cause<NoInfer<E>>) => Effect.Effect<X, E2, R2>
|
|
1597
|
+
) => <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R | R2>,
|
|
1598
|
+
<A, E, R, X, E2, R2>(
|
|
1599
|
+
self: Effect.Effect<A, E, R>,
|
|
1600
|
+
f: (cause: Cause.Cause<E>) => Effect.Effect<X, E2, R2>
|
|
1601
|
+
) => Effect.Effect<A, E | E2, R | R2>
|
|
1569
1602
|
>(2, (self, f) =>
|
|
1570
1603
|
core.matchCauseEffect(self, {
|
|
1571
|
-
onFailure: (cause) => core.zipRight(f(cause
|
|
1604
|
+
onFailure: (cause) => core.zipRight(f(cause), core.failCause(cause)),
|
|
1572
1605
|
onSuccess: core.succeed
|
|
1573
1606
|
}))
|
|
1574
1607
|
|
|
1575
1608
|
/* @internal */
|
|
1576
|
-
export const timed = <
|
|
1577
|
-
self: Effect.Effect<
|
|
1578
|
-
): Effect.Effect<
|
|
1609
|
+
export const timed = <A, E, R>(
|
|
1610
|
+
self: Effect.Effect<A, E, R>
|
|
1611
|
+
): Effect.Effect<[Duration.Duration, A], E, R> => timedWith(self, Clock.currentTimeNanos)
|
|
1579
1612
|
|
|
1580
1613
|
/* @internal */
|
|
1581
1614
|
export const timedWith = dual<
|
|
1582
|
-
<
|
|
1583
|
-
nanoseconds: Effect.Effect<
|
|
1584
|
-
) => <
|
|
1585
|
-
<
|
|
1586
|
-
self: Effect.Effect<
|
|
1587
|
-
nanoseconds: Effect.Effect<
|
|
1588
|
-
) => Effect.Effect<
|
|
1615
|
+
<E1, R1>(
|
|
1616
|
+
nanoseconds: Effect.Effect<bigint, E1, R1>
|
|
1617
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<[Duration.Duration, A], E | E1, R | R1>,
|
|
1618
|
+
<A, E, R, E1, R1>(
|
|
1619
|
+
self: Effect.Effect<A, E, R>,
|
|
1620
|
+
nanoseconds: Effect.Effect<bigint, E1, R1>
|
|
1621
|
+
) => Effect.Effect<[Duration.Duration, A], E | E1, R | R1>
|
|
1589
1622
|
>(
|
|
1590
1623
|
2,
|
|
1591
1624
|
(self, nanos) => summarized(self, nanos, (start, end) => Duration.nanos(end - start))
|
|
1592
1625
|
)
|
|
1593
1626
|
|
|
1594
1627
|
/* @internal */
|
|
1595
|
-
export const tracerWith: <
|
|
1628
|
+
export const tracerWith: <A, E, R>(f: (tracer: Tracer.Tracer) => Effect.Effect<A, E, R>) => Effect.Effect<A, E, R> =
|
|
1596
1629
|
Tracer.tracerWith
|
|
1597
1630
|
|
|
1598
1631
|
/** @internal */
|
|
1599
|
-
export const tracer: Effect.Effect<
|
|
1632
|
+
export const tracer: Effect.Effect<Tracer.Tracer> = tracerWith(core.succeed)
|
|
1600
1633
|
|
|
1601
1634
|
/* @internal */
|
|
1602
1635
|
export const tryPromise: {
|
|
@@ -1605,14 +1638,14 @@ export const tryPromise: {
|
|
|
1605
1638
|
readonly try: (signal: AbortSignal) => Promise<A>
|
|
1606
1639
|
readonly catch: (error: unknown) => E
|
|
1607
1640
|
}
|
|
1608
|
-
): Effect.Effect<
|
|
1609
|
-
<A>(try_: (signal: AbortSignal) => Promise<A>): Effect.Effect<
|
|
1641
|
+
): Effect.Effect<A, E>
|
|
1642
|
+
<A>(try_: (signal: AbortSignal) => Promise<A>): Effect.Effect<A, Cause.UnknownException>
|
|
1610
1643
|
} = <A, E>(
|
|
1611
1644
|
arg: ((signal: AbortSignal) => Promise<A>) | {
|
|
1612
1645
|
readonly try: (signal: AbortSignal) => Promise<A>
|
|
1613
1646
|
readonly catch: (error: unknown) => E
|
|
1614
1647
|
}
|
|
1615
|
-
): Effect.Effect<
|
|
1648
|
+
): Effect.Effect<A, E | Cause.UnknownException> => {
|
|
1616
1649
|
let evaluate: (signal?: AbortSignal) => Promise<A>
|
|
1617
1650
|
let catcher: ((error: unknown) => E) | undefined = undefined
|
|
1618
1651
|
if (typeof arg === "function") {
|
|
@@ -1664,14 +1697,14 @@ export const tryMap = dual<
|
|
|
1664
1697
|
readonly try: (a: A) => B
|
|
1665
1698
|
readonly catch: (error: unknown) => E1
|
|
1666
1699
|
}
|
|
1667
|
-
) => <
|
|
1668
|
-
<
|
|
1669
|
-
self: Effect.Effect<
|
|
1700
|
+
) => <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E | E1, R>,
|
|
1701
|
+
<A, E, R, B, E1>(
|
|
1702
|
+
self: Effect.Effect<A, E, R>,
|
|
1670
1703
|
options: {
|
|
1671
1704
|
readonly try: (a: A) => B
|
|
1672
1705
|
readonly catch: (error: unknown) => E1
|
|
1673
1706
|
}
|
|
1674
|
-
) => Effect.Effect<
|
|
1707
|
+
) => Effect.Effect<B, E | E1, R>
|
|
1675
1708
|
>(2, (self, options) =>
|
|
1676
1709
|
core.flatMap(self, (a) =>
|
|
1677
1710
|
try_({
|
|
@@ -1686,21 +1719,21 @@ export const tryMapPromise = dual<
|
|
|
1686
1719
|
readonly try: (a: A, signal: AbortSignal) => Promise<B>
|
|
1687
1720
|
readonly catch: (error: unknown) => E1
|
|
1688
1721
|
}
|
|
1689
|
-
) => <
|
|
1690
|
-
<
|
|
1691
|
-
self: Effect.Effect<
|
|
1722
|
+
) => <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E | E1, R>,
|
|
1723
|
+
<A, E, R, B, E1>(
|
|
1724
|
+
self: Effect.Effect<A, E, R>,
|
|
1692
1725
|
options: {
|
|
1693
1726
|
readonly try: (a: A, signal: AbortSignal) => Promise<B>
|
|
1694
1727
|
readonly catch: (error: unknown) => E1
|
|
1695
1728
|
}
|
|
1696
|
-
) => Effect.Effect<
|
|
1697
|
-
>(2, <
|
|
1698
|
-
self: Effect.Effect<
|
|
1729
|
+
) => Effect.Effect<B, E | E1, R>
|
|
1730
|
+
>(2, <A, E, R, B, E1>(
|
|
1731
|
+
self: Effect.Effect<A, E, R>,
|
|
1699
1732
|
options: {
|
|
1700
1733
|
readonly try: (a: A, signal: AbortSignal) => Promise<B>
|
|
1701
1734
|
readonly catch: (error: unknown) => E1
|
|
1702
1735
|
}
|
|
1703
|
-
)
|
|
1736
|
+
) =>
|
|
1704
1737
|
core.flatMap(self, (a) =>
|
|
1705
1738
|
tryPromise({
|
|
1706
1739
|
try: options.try.length >= 1
|
|
@@ -1711,8 +1744,8 @@ export const tryMapPromise = dual<
|
|
|
1711
1744
|
|
|
1712
1745
|
/* @internal */
|
|
1713
1746
|
export const unless = dual<
|
|
1714
|
-
(condition: LazyArg<boolean>) => <
|
|
1715
|
-
<
|
|
1747
|
+
(condition: LazyArg<boolean>) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Option.Option<A>, E, R>,
|
|
1748
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, condition: LazyArg<boolean>) => Effect.Effect<Option.Option<A>, E, R>
|
|
1716
1749
|
>(2, (self, condition) =>
|
|
1717
1750
|
core.suspend(() =>
|
|
1718
1751
|
condition()
|
|
@@ -1722,24 +1755,24 @@ export const unless = dual<
|
|
|
1722
1755
|
|
|
1723
1756
|
/* @internal */
|
|
1724
1757
|
export const unlessEffect = dual<
|
|
1725
|
-
<
|
|
1726
|
-
condition: Effect.Effect<
|
|
1727
|
-
) => <
|
|
1728
|
-
<
|
|
1729
|
-
self: Effect.Effect<
|
|
1730
|
-
condition: Effect.Effect<
|
|
1731
|
-
) => Effect.Effect<
|
|
1758
|
+
<E2, R2>(
|
|
1759
|
+
condition: Effect.Effect<boolean, E2, R2>
|
|
1760
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Option.Option<A>, E | E2, R | R2>,
|
|
1761
|
+
<A, E, R, E2, R2>(
|
|
1762
|
+
self: Effect.Effect<A, E, R>,
|
|
1763
|
+
condition: Effect.Effect<boolean, E2, R2>
|
|
1764
|
+
) => Effect.Effect<Option.Option<A>, E | E2, R | R2>
|
|
1732
1765
|
>(2, (self, condition) => core.flatMap(condition, (b) => (b ? succeedNone : asSome(self))))
|
|
1733
1766
|
|
|
1734
1767
|
/* @internal */
|
|
1735
|
-
export const unsandbox = <
|
|
1768
|
+
export const unsandbox = <A, E, R>(self: Effect.Effect<A, Cause.Cause<E>, R>) =>
|
|
1736
1769
|
mapErrorCause(self, internalCause.flatten)
|
|
1737
1770
|
|
|
1738
1771
|
/* @internal */
|
|
1739
1772
|
export const updateFiberRefs = (
|
|
1740
1773
|
f: (fiberId: FiberId.Runtime, fiberRefs: FiberRefs.FiberRefs) => FiberRefs.FiberRefs
|
|
1741
|
-
): Effect.Effect<
|
|
1742
|
-
core.withFiberRuntime
|
|
1774
|
+
): Effect.Effect<void> =>
|
|
1775
|
+
core.withFiberRuntime((state) => {
|
|
1743
1776
|
state.setFiberRefs(f(state.id(), state.getFiberRefs()))
|
|
1744
1777
|
return core.unit
|
|
1745
1778
|
})
|
|
@@ -1749,14 +1782,14 @@ export const updateService = dual<
|
|
|
1749
1782
|
<T extends Context.Tag<any, any>>(
|
|
1750
1783
|
tag: T,
|
|
1751
1784
|
f: (service: Context.Tag.Service<T>) => Context.Tag.Service<T>
|
|
1752
|
-
) => <
|
|
1753
|
-
<
|
|
1754
|
-
self: Effect.Effect<
|
|
1785
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | Context.Tag.Identifier<T>>,
|
|
1786
|
+
<A, E, R, T extends Context.Tag<any, any>>(
|
|
1787
|
+
self: Effect.Effect<A, E, R>,
|
|
1755
1788
|
tag: T,
|
|
1756
1789
|
f: (service: Context.Tag.Service<T>) => Context.Tag.Service<T>
|
|
1757
|
-
) => Effect.Effect<R | Context.Tag.Identifier<T
|
|
1758
|
-
>(3, <
|
|
1759
|
-
self: Effect.Effect<
|
|
1790
|
+
) => Effect.Effect<A, E, R | Context.Tag.Identifier<T>>
|
|
1791
|
+
>(3, <A, E, R, T extends Context.Tag<any, any>>(
|
|
1792
|
+
self: Effect.Effect<A, E, R>,
|
|
1760
1793
|
tag: T,
|
|
1761
1794
|
f: (service: Context.Tag.Service<T>) => Context.Tag.Service<T>
|
|
1762
1795
|
) =>
|
|
@@ -1765,12 +1798,12 @@ export const updateService = dual<
|
|
|
1765
1798
|
context,
|
|
1766
1799
|
tag,
|
|
1767
1800
|
f(Context.unsafeGet(context, tag))
|
|
1768
|
-
)) as Effect.Effect<R | Context.Tag.Identifier<T
|
|
1801
|
+
)) as Effect.Effect<A, E, R | Context.Tag.Identifier<T>>)
|
|
1769
1802
|
|
|
1770
1803
|
/* @internal */
|
|
1771
1804
|
export const when = dual<
|
|
1772
|
-
(condition: LazyArg<boolean>) => <
|
|
1773
|
-
<
|
|
1805
|
+
(condition: LazyArg<boolean>) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Option.Option<A>, E, R>,
|
|
1806
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, condition: LazyArg<boolean>) => Effect.Effect<Option.Option<A>, E, R>
|
|
1774
1807
|
>(2, (self, condition) =>
|
|
1775
1808
|
core.suspend(() =>
|
|
1776
1809
|
condition()
|
|
@@ -1783,15 +1816,19 @@ export const whenFiberRef = dual<
|
|
|
1783
1816
|
<S>(
|
|
1784
1817
|
fiberRef: FiberRef.FiberRef<S>,
|
|
1785
1818
|
predicate: Predicate.Predicate<S>
|
|
1786
|
-
) => <
|
|
1787
|
-
<
|
|
1788
|
-
self: Effect.Effect<
|
|
1819
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<[S, Option.Option<A>], E, R>,
|
|
1820
|
+
<A, E, R, S>(
|
|
1821
|
+
self: Effect.Effect<A, E, R>,
|
|
1789
1822
|
fiberRef: FiberRef.FiberRef<S>,
|
|
1790
1823
|
predicate: Predicate.Predicate<S>
|
|
1791
|
-
) => Effect.Effect<
|
|
1824
|
+
) => Effect.Effect<[S, Option.Option<A>], E, R>
|
|
1792
1825
|
>(
|
|
1793
1826
|
3,
|
|
1794
|
-
<
|
|
1827
|
+
<A, E, R, S>(
|
|
1828
|
+
self: Effect.Effect<A, E, R>,
|
|
1829
|
+
fiberRef: FiberRef.FiberRef<S>,
|
|
1830
|
+
predicate: Predicate.Predicate<S>
|
|
1831
|
+
) =>
|
|
1795
1832
|
core.flatMap(core.fiberRefGet(fiberRef), (s) =>
|
|
1796
1833
|
predicate(s)
|
|
1797
1834
|
? core.map(self, (a) => [s, Option.some(a)])
|
|
@@ -1803,15 +1840,15 @@ export const whenRef = dual<
|
|
|
1803
1840
|
<S>(
|
|
1804
1841
|
ref: Ref.Ref<S>,
|
|
1805
1842
|
predicate: Predicate.Predicate<S>
|
|
1806
|
-
) => <
|
|
1807
|
-
<
|
|
1808
|
-
self: Effect.Effect<
|
|
1843
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<[S, Option.Option<A>], E, R>,
|
|
1844
|
+
<A, E, R, S>(
|
|
1845
|
+
self: Effect.Effect<A, E, R>,
|
|
1809
1846
|
ref: Ref.Ref<S>,
|
|
1810
1847
|
predicate: Predicate.Predicate<S>
|
|
1811
|
-
) => Effect.Effect<
|
|
1848
|
+
) => Effect.Effect<[S, Option.Option<A>], E, R>
|
|
1812
1849
|
>(
|
|
1813
1850
|
3,
|
|
1814
|
-
<
|
|
1851
|
+
<A, E, R, S>(self: Effect.Effect<A, E, R>, ref: Ref.Ref<S>, predicate: Predicate.Predicate<S>) =>
|
|
1815
1852
|
core.flatMap(Ref.get(ref), (s) =>
|
|
1816
1853
|
predicate(s)
|
|
1817
1854
|
? core.map(self, (a) => [s, Option.some(a)])
|
|
@@ -1822,19 +1859,19 @@ export const whenRef = dual<
|
|
|
1822
1859
|
export const withMetric = dual<
|
|
1823
1860
|
<Type, In, Out>(
|
|
1824
1861
|
metric: Metric.Metric<Type, In, Out>
|
|
1825
|
-
) => <
|
|
1826
|
-
<
|
|
1827
|
-
self: Effect.Effect<
|
|
1862
|
+
) => <A extends In, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
1863
|
+
<A extends In, E, R, Type, In, Out>(
|
|
1864
|
+
self: Effect.Effect<A, E, R>,
|
|
1828
1865
|
metric: Metric.Metric<Type, In, Out>
|
|
1829
|
-
) => Effect.Effect<
|
|
1866
|
+
) => Effect.Effect<A, E, R>
|
|
1830
1867
|
>(2, (self, metric) => metric(self))
|
|
1831
1868
|
|
|
1832
1869
|
/** @internal */
|
|
1833
1870
|
export const serviceFunctionEffect = <T extends Effect.Effect<any, any, any>, Args extends Array<any>, R, E, A>(
|
|
1834
1871
|
getService: T,
|
|
1835
|
-
f: (_: Effect.Effect.Success<T>) => (...args: Args) => Effect.Effect<
|
|
1872
|
+
f: (_: Effect.Effect.Success<T>) => (...args: Args) => Effect.Effect<A, E, R>
|
|
1836
1873
|
) =>
|
|
1837
|
-
(...args: Args): Effect.Effect<
|
|
1874
|
+
(...args: Args): Effect.Effect<A, E | Effect.Effect.Error<T>, R | Effect.Effect.Context<T>> =>
|
|
1838
1875
|
core.flatMap(getService, (a) => f(a)(...args))
|
|
1839
1876
|
|
|
1840
1877
|
/** @internal */
|
|
@@ -1842,16 +1879,16 @@ export const serviceFunction = <T extends Effect.Effect<any, any, any>, Args ext
|
|
|
1842
1879
|
getService: T,
|
|
1843
1880
|
f: (_: Effect.Effect.Success<T>) => (...args: Args) => A
|
|
1844
1881
|
) =>
|
|
1845
|
-
(...args: Args): Effect.Effect<Effect.Effect.
|
|
1882
|
+
(...args: Args): Effect.Effect<A, Effect.Effect.Error<T>, Effect.Effect.Context<T>> =>
|
|
1846
1883
|
core.map(getService, (a) => f(a)(...args))
|
|
1847
1884
|
|
|
1848
1885
|
/** @internal */
|
|
1849
|
-
export const serviceFunctions = <
|
|
1850
|
-
getService: Effect.Effect<
|
|
1886
|
+
export const serviceFunctions = <S, SE, SR>(
|
|
1887
|
+
getService: Effect.Effect<S, SE, SR>
|
|
1851
1888
|
): {
|
|
1852
1889
|
[k in { [k in keyof S]: S[k] extends (...args: Array<any>) => Effect.Effect<any, any, any> ? k : never }[keyof S]]:
|
|
1853
|
-
S[k] extends (...args: infer Args) => Effect.Effect<infer
|
|
1854
|
-
? (...args: Args) => Effect.Effect<
|
|
1890
|
+
S[k] extends (...args: infer Args) => Effect.Effect<infer A, infer E, infer R>
|
|
1891
|
+
? (...args: Args) => Effect.Effect<A, E | SE, R | SR>
|
|
1855
1892
|
: never
|
|
1856
1893
|
} =>
|
|
1857
1894
|
new Proxy({} as any, {
|
|
@@ -1861,29 +1898,31 @@ export const serviceFunctions = <SR, SE, S>(
|
|
|
1861
1898
|
})
|
|
1862
1899
|
|
|
1863
1900
|
/** @internal */
|
|
1864
|
-
export const serviceConstants = <
|
|
1865
|
-
getService: Effect.Effect<
|
|
1901
|
+
export const serviceConstants = <S, SE, SR>(
|
|
1902
|
+
getService: Effect.Effect<S, SE, SR>
|
|
1866
1903
|
): {
|
|
1867
|
-
[k in { [k in keyof S]: S[k] extends Effect.Effect<
|
|
1868
|
-
Effect.Effect<
|
|
1904
|
+
[k in { [k in keyof S]: k }[keyof S]]: S[k] extends Effect.Effect<infer A, infer E, infer R> ?
|
|
1905
|
+
Effect.Effect<A, E | SE, R | SR> :
|
|
1906
|
+
Effect.Effect<S[k], SE, SR>
|
|
1869
1907
|
} =>
|
|
1870
1908
|
new Proxy({} as any, {
|
|
1871
1909
|
get(_target: any, prop: any, _receiver) {
|
|
1872
|
-
return core.flatMap(getService, (s: any) => s[prop])
|
|
1910
|
+
return core.flatMap(getService, (s: any) => core.isEffect(s[prop]) ? s[prop] : core.succeed(s[prop]))
|
|
1873
1911
|
}
|
|
1874
1912
|
})
|
|
1875
1913
|
|
|
1876
1914
|
/** @internal */
|
|
1877
|
-
export const serviceMembers = <
|
|
1915
|
+
export const serviceMembers = <S, SE, SR>(getService: Effect.Effect<S, SE, SR>): {
|
|
1878
1916
|
functions: {
|
|
1879
1917
|
[k in { [k in keyof S]: S[k] extends (...args: Array<any>) => Effect.Effect<any, any, any> ? k : never }[keyof S]]:
|
|
1880
|
-
S[k] extends (...args: infer Args) => Effect.Effect<infer
|
|
1881
|
-
? (...args: Args) => Effect.Effect<
|
|
1918
|
+
S[k] extends (...args: infer Args) => Effect.Effect<infer A, infer E, infer R>
|
|
1919
|
+
? (...args: Args) => Effect.Effect<A, E | SE, R | SR>
|
|
1882
1920
|
: never
|
|
1883
1921
|
}
|
|
1884
1922
|
constants: {
|
|
1885
|
-
[k in { [k in keyof S]: S[k] extends Effect.Effect<
|
|
1886
|
-
Effect.Effect<
|
|
1923
|
+
[k in { [k in keyof S]: k }[keyof S]]: S[k] extends Effect.Effect<infer A, infer E, infer R> ?
|
|
1924
|
+
Effect.Effect<A, E | SE, R | SR> :
|
|
1925
|
+
Effect.Effect<S[k], SE, SR>
|
|
1887
1926
|
}
|
|
1888
1927
|
} => ({
|
|
1889
1928
|
functions: serviceFunctions(getService),
|
|
@@ -1903,9 +1942,9 @@ export const serviceOptional = <I, S>(tag: Context.Tag<I, S>) =>
|
|
|
1903
1942
|
|
|
1904
1943
|
/* @internal */
|
|
1905
1944
|
export const annotateCurrentSpan: {
|
|
1906
|
-
(key: string, value: unknown): Effect.Effect<
|
|
1907
|
-
(values: Record<string, unknown>): Effect.Effect<
|
|
1908
|
-
} = function(): Effect.Effect<
|
|
1945
|
+
(key: string, value: unknown): Effect.Effect<void>
|
|
1946
|
+
(values: Record<string, unknown>): Effect.Effect<void>
|
|
1947
|
+
} = function(): Effect.Effect<void> {
|
|
1909
1948
|
const args = arguments
|
|
1910
1949
|
return ignore(core.flatMap(
|
|
1911
1950
|
currentSpan,
|
|
@@ -1925,21 +1964,21 @@ export const annotateCurrentSpan: {
|
|
|
1925
1964
|
/* @internal */
|
|
1926
1965
|
export const annotateSpans = dual<
|
|
1927
1966
|
{
|
|
1928
|
-
(key: string, value: unknown): <
|
|
1967
|
+
(key: string, value: unknown): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
1929
1968
|
(
|
|
1930
1969
|
values: Record<string, unknown>
|
|
1931
|
-
): <
|
|
1970
|
+
): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
1932
1971
|
},
|
|
1933
1972
|
{
|
|
1934
|
-
<
|
|
1935
|
-
<
|
|
1973
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, key: string, value: unknown): Effect.Effect<A, E, R>
|
|
1974
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, values: Record<string, unknown>): Effect.Effect<A, E, R>
|
|
1936
1975
|
}
|
|
1937
1976
|
>(
|
|
1938
1977
|
(args) => core.isEffect(args[0]),
|
|
1939
|
-
function<
|
|
1978
|
+
function<A, E, R>() {
|
|
1940
1979
|
const args = arguments
|
|
1941
1980
|
return core.fiberRefLocallyWith(
|
|
1942
|
-
args[0] as Effect.Effect<
|
|
1981
|
+
args[0] as Effect.Effect<A, E, R>,
|
|
1943
1982
|
core.currentTracerSpanAnnotations,
|
|
1944
1983
|
typeof args[1] === "string"
|
|
1945
1984
|
? HashMap.set(args[1], args[2])
|
|
@@ -1953,15 +1992,15 @@ export const annotateSpans = dual<
|
|
|
1953
1992
|
)
|
|
1954
1993
|
|
|
1955
1994
|
/** @internal */
|
|
1956
|
-
export const currentParentSpan: Effect.Effect<
|
|
1995
|
+
export const currentParentSpan: Effect.Effect<Tracer.ParentSpan, Cause.NoSuchElementException> = serviceOptional(
|
|
1957
1996
|
internalTracer.spanTag
|
|
1958
1997
|
)
|
|
1959
1998
|
|
|
1960
1999
|
/** @internal */
|
|
1961
|
-
export const currentSpan: Effect.Effect<
|
|
2000
|
+
export const currentSpan: Effect.Effect<Tracer.Span, Cause.NoSuchElementException> = core.flatMap(
|
|
1962
2001
|
core.context<never>(),
|
|
1963
2002
|
(context) => {
|
|
1964
|
-
const span = context.unsafeMap.get(internalTracer.spanTag) as Tracer.ParentSpan | undefined
|
|
2003
|
+
const span = context.unsafeMap.get(internalTracer.spanTag.key) as Tracer.ParentSpan | undefined
|
|
1965
2004
|
return span !== undefined && span._tag === "Span"
|
|
1966
2005
|
? core.succeed(span)
|
|
1967
2006
|
: core.fail(new core.NoSuchElementException())
|
|
@@ -1980,12 +2019,12 @@ export const linkSpans = dual<
|
|
|
1980
2019
|
(
|
|
1981
2020
|
span: Tracer.ParentSpan,
|
|
1982
2021
|
attributes?: Record<string, unknown>
|
|
1983
|
-
) => <
|
|
1984
|
-
<
|
|
1985
|
-
self: Effect.Effect<
|
|
2022
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
2023
|
+
<A, E, R>(
|
|
2024
|
+
self: Effect.Effect<A, E, R>,
|
|
1986
2025
|
span: Tracer.ParentSpan,
|
|
1987
2026
|
attributes?: Record<string, unknown>
|
|
1988
|
-
) => Effect.Effect<
|
|
2027
|
+
) => Effect.Effect<A, E, R>
|
|
1989
2028
|
>(
|
|
1990
2029
|
(args) => core.isEffect(args[0]),
|
|
1991
2030
|
(self, span, attributes) =>
|
|
@@ -2012,7 +2051,7 @@ export const makeSpan = (
|
|
|
2012
2051
|
readonly root?: boolean | undefined
|
|
2013
2052
|
readonly context?: Context.Context<never> | undefined
|
|
2014
2053
|
}
|
|
2015
|
-
) =>
|
|
2054
|
+
): Effect.Effect<Tracer.Span> =>
|
|
2016
2055
|
core.flatMap(fiberRefs, (fiberRefs) =>
|
|
2017
2056
|
core.sync(() => {
|
|
2018
2057
|
const context = FiberRefs.getOrDefault(fiberRefs, core.currentContext)
|
|
@@ -2034,7 +2073,7 @@ export const makeSpan = (
|
|
|
2034
2073
|
options?.links !== undefined ?
|
|
2035
2074
|
[
|
|
2036
2075
|
...Chunk.toReadonlyArray(linksFromEnv.value),
|
|
2037
|
-
...options?.links ?? []
|
|
2076
|
+
...(options?.links ?? [])
|
|
2038
2077
|
] :
|
|
2039
2078
|
Chunk.toReadonlyArray(linksFromEnv.value) :
|
|
2040
2079
|
options?.links ?? ReadonlyArray.empty()
|
|
@@ -2058,28 +2097,28 @@ export const makeSpan = (
|
|
|
2058
2097
|
}))
|
|
2059
2098
|
|
|
2060
2099
|
/* @internal */
|
|
2061
|
-
export const spanAnnotations: Effect.Effect<
|
|
2100
|
+
export const spanAnnotations: Effect.Effect<HashMap.HashMap<string, unknown>> = core
|
|
2062
2101
|
.fiberRefGet(core.currentTracerSpanAnnotations)
|
|
2063
2102
|
|
|
2064
2103
|
/* @internal */
|
|
2065
|
-
export const spanLinks: Effect.Effect<
|
|
2104
|
+
export const spanLinks: Effect.Effect<Chunk.Chunk<Tracer.SpanLink>> = core
|
|
2066
2105
|
.fiberRefGet(core.currentTracerSpanLinks)
|
|
2067
2106
|
|
|
2068
2107
|
/** @internal */
|
|
2069
2108
|
export const useSpan: {
|
|
2070
|
-
<
|
|
2071
|
-
<
|
|
2109
|
+
<A, E, R>(name: string, evaluate: (span: Tracer.Span) => Effect.Effect<A, E, R>): Effect.Effect<A, E, R>
|
|
2110
|
+
<A, E, R>(name: string, options: {
|
|
2072
2111
|
readonly attributes?: Record<string, unknown> | undefined
|
|
2073
2112
|
readonly links?: ReadonlyArray<Tracer.SpanLink> | undefined
|
|
2074
2113
|
readonly parent?: Tracer.ParentSpan | undefined
|
|
2075
2114
|
readonly root?: boolean | undefined
|
|
2076
2115
|
readonly context?: Context.Context<never> | undefined
|
|
2077
|
-
}, evaluate: (span: Tracer.Span) => Effect.Effect<
|
|
2078
|
-
} = <
|
|
2116
|
+
}, evaluate: (span: Tracer.Span) => Effect.Effect<A, E, R>): Effect.Effect<A, E, R>
|
|
2117
|
+
} = <A, E, R>(
|
|
2079
2118
|
name: string,
|
|
2080
|
-
...args: [evaluate: (span: Tracer.Span) => Effect.Effect<
|
|
2119
|
+
...args: [evaluate: (span: Tracer.Span) => Effect.Effect<A, E, R>] | [
|
|
2081
2120
|
options: any,
|
|
2082
|
-
evaluate: (span: Tracer.Span) => Effect.Effect<
|
|
2121
|
+
evaluate: (span: Tracer.Span) => Effect.Effect<A, E, R>
|
|
2083
2122
|
]
|
|
2084
2123
|
) => {
|
|
2085
2124
|
const options: {
|
|
@@ -2089,7 +2128,7 @@ export const useSpan: {
|
|
|
2089
2128
|
readonly root?: boolean | undefined
|
|
2090
2129
|
readonly context?: Context.Context<never> | undefined
|
|
2091
2130
|
} | undefined = args.length === 1 ? undefined : args[0]
|
|
2092
|
-
const evaluate: (span: Tracer.Span) => Effect.Effect<
|
|
2131
|
+
const evaluate: (span: Tracer.Span) => Effect.Effect<A, E, R> = args[args.length - 1]
|
|
2093
2132
|
|
|
2094
2133
|
return core.acquireUseRelease(
|
|
2095
2134
|
makeSpan(name, options),
|
|
@@ -2106,8 +2145,8 @@ export const useSpan: {
|
|
|
2106
2145
|
export const withParentSpan = dual<
|
|
2107
2146
|
(
|
|
2108
2147
|
span: Tracer.ParentSpan
|
|
2109
|
-
) => <
|
|
2110
|
-
<
|
|
2148
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan>>,
|
|
2149
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, span: Tracer.ParentSpan) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan>>
|
|
2111
2150
|
>(2, (self, span) => provideService(self, internalTracer.spanTag, span))
|
|
2112
2151
|
|
|
2113
2152
|
/** @internal */
|
|
@@ -2118,14 +2157,14 @@ export const withSpan = dual<
|
|
|
2118
2157
|
readonly parent?: Tracer.ParentSpan | undefined
|
|
2119
2158
|
readonly root?: boolean | undefined
|
|
2120
2159
|
readonly context?: Context.Context<never> | undefined
|
|
2121
|
-
}) => <
|
|
2122
|
-
<
|
|
2160
|
+
}) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan>>,
|
|
2161
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, name: string, options?: {
|
|
2123
2162
|
readonly attributes?: Record<string, unknown> | undefined
|
|
2124
2163
|
readonly links?: ReadonlyArray<Tracer.SpanLink> | undefined
|
|
2125
2164
|
readonly parent?: Tracer.ParentSpan | undefined
|
|
2126
2165
|
readonly root?: boolean | undefined
|
|
2127
2166
|
readonly context?: Context.Context<never> | undefined
|
|
2128
|
-
}) => Effect.Effect<Exclude<R, Tracer.ParentSpan
|
|
2167
|
+
}) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan>>
|
|
2129
2168
|
>(
|
|
2130
2169
|
(args) => typeof args[0] !== "string",
|
|
2131
2170
|
(self, name, options) =>
|
|
@@ -2141,13 +2180,13 @@ export const withSpan = dual<
|
|
|
2141
2180
|
// -------------------------------------------------------------------------------------
|
|
2142
2181
|
|
|
2143
2182
|
/* @internal */
|
|
2144
|
-
export const fromNullable = <A>(value: A): Effect.Effect<
|
|
2183
|
+
export const fromNullable = <A>(value: A): Effect.Effect<NonNullable<A>, Cause.NoSuchElementException> =>
|
|
2145
2184
|
value == null ? core.fail(new core.NoSuchElementException()) : core.succeed(value as NonNullable<A>)
|
|
2146
2185
|
|
|
2147
2186
|
/* @internal */
|
|
2148
|
-
export const optionFromOptional = <
|
|
2149
|
-
self: Effect.Effect<
|
|
2150
|
-
): Effect.Effect<
|
|
2187
|
+
export const optionFromOptional = <A, E, R>(
|
|
2188
|
+
self: Effect.Effect<A, E, R>
|
|
2189
|
+
): Effect.Effect<Option.Option<A>, Exclude<E, Cause.NoSuchElementException>, R> =>
|
|
2151
2190
|
core.catchAll(
|
|
2152
2191
|
core.map(self, Option.some),
|
|
2153
2192
|
(error) =>
|