effect 2.2.5 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RateLimiter/package.json +6 -0
- package/dist/cjs/Cause.js +14 -1
- package/dist/cjs/Cause.js.map +1 -1
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/Clock.js.map +1 -1
- package/dist/cjs/Console.js.map +1 -1
- package/dist/cjs/Context.js +23 -25
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Data.js +3 -3
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/Deferred.js +1 -1
- package/dist/cjs/Deferred.js.map +1 -1
- package/dist/cjs/Effect.js +9 -9
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Effectable.js.map +1 -1
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/Exit.js +2 -2
- package/dist/cjs/Exit.js.map +1 -1
- package/dist/cjs/Fiber.js.map +1 -1
- package/dist/cjs/FiberMap.js +3 -3
- package/dist/cjs/FiberRef.js.map +1 -1
- package/dist/cjs/FiberRefs.js.map +1 -1
- package/dist/cjs/FiberSet.js +3 -3
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/GroupBy.js.map +1 -1
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/LogLevel.js.map +1 -1
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/Metric.js.map +1 -1
- package/dist/cjs/Number.js +20 -1
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/Option.js.map +1 -1
- package/dist/cjs/Pool.js.map +1 -1
- package/dist/cjs/PubSub.js.map +1 -1
- package/dist/cjs/Queue.js.map +1 -1
- package/dist/cjs/Random.js.map +1 -1
- package/dist/cjs/RateLimiter.js +38 -0
- package/dist/cjs/RateLimiter.js.map +1 -0
- package/dist/cjs/ReadonlyRecord.js +45 -9
- package/dist/cjs/ReadonlyRecord.js.map +1 -1
- package/dist/cjs/Ref.js.map +1 -1
- package/dist/cjs/Request.js.map +1 -1
- package/dist/cjs/RequestResolver.js.map +1 -1
- package/dist/cjs/Resource.js.map +1 -1
- package/dist/cjs/Runtime.js +1 -4
- package/dist/cjs/Runtime.js.map +1 -1
- package/dist/cjs/RuntimeFlags.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/Scope.js.map +1 -1
- package/dist/cjs/ScopedRef.js.map +1 -1
- package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/SubscriptionRef.js.map +1 -1
- package/dist/cjs/Supervisor.js.map +1 -1
- package/dist/cjs/SynchronizedRef.js.map +1 -1
- package/dist/cjs/TArray.js.map +1 -1
- package/dist/cjs/TDeferred.js.map +1 -1
- package/dist/cjs/TMap.js.map +1 -1
- package/dist/cjs/TPriorityQueue.js.map +1 -1
- package/dist/cjs/TPubSub.js.map +1 -1
- package/dist/cjs/TQueue.js.map +1 -1
- package/dist/cjs/TRandom.js.map +1 -1
- package/dist/cjs/TReentrantLock.js.map +1 -1
- package/dist/cjs/TRef.js.map +1 -1
- package/dist/cjs/TSemaphore.js.map +1 -1
- package/dist/cjs/TSet.js.map +1 -1
- package/dist/cjs/Take.js +6 -6
- package/dist/cjs/Take.js.map +1 -1
- package/dist/cjs/TestAnnotation.js +10 -13
- package/dist/cjs/TestAnnotation.js.map +1 -1
- package/dist/cjs/TestAnnotations.js +1 -1
- package/dist/cjs/TestAnnotations.js.map +1 -1
- package/dist/cjs/TestClock.js +1 -1
- package/dist/cjs/TestClock.js.map +1 -1
- package/dist/cjs/TestConfig.js +1 -1
- package/dist/cjs/TestConfig.js.map +1 -1
- package/dist/cjs/TestContext.js.map +1 -1
- package/dist/cjs/TestLive.js +1 -1
- package/dist/cjs/TestLive.js.map +1 -1
- package/dist/cjs/TestServices.js.map +1 -1
- package/dist/cjs/TestSized.js +1 -1
- package/dist/cjs/TestSized.js.map +1 -1
- package/dist/cjs/Utils.js +0 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/cache.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel/mergeDecision.js +2 -6
- package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
- package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/internal/channel.js +1 -1
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/clock.js +1 -1
- package/dist/cjs/internal/clock.js.map +1 -1
- package/dist/cjs/internal/configProvider.js +2 -4
- package/dist/cjs/internal/configProvider.js.map +1 -1
- package/dist/cjs/internal/console.js.map +1 -1
- package/dist/cjs/internal/context.js +31 -22
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +13 -27
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core-stream.js.map +1 -1
- package/dist/cjs/internal/core.js +61 -130
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/data.js.map +1 -1
- package/dist/cjs/internal/defaultServices/console.js +1 -1
- package/dist/cjs/internal/defaultServices/console.js.map +1 -1
- package/dist/cjs/internal/defaultServices.js.map +1 -1
- package/dist/cjs/internal/deferred.js.map +1 -1
- package/dist/cjs/internal/differ/contextPatch.js +9 -9
- package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +7 -10
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/effectable.js +4 -4
- package/dist/cjs/internal/effectable.js.map +1 -1
- package/dist/cjs/internal/fiber.js +2 -6
- package/dist/cjs/internal/fiber.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +10 -19
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/keyedPool.js.map +1 -1
- package/dist/cjs/internal/layer/circular.js.map +1 -1
- package/dist/cjs/internal/layer.js +3 -3
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/logSpan.js +3 -5
- package/dist/cjs/internal/logSpan.js.map +1 -1
- package/dist/cjs/internal/metric.js.map +1 -1
- package/dist/cjs/internal/pool.js.map +1 -1
- package/dist/cjs/internal/pubsub.js +2 -6
- package/dist/cjs/internal/pubsub.js.map +1 -1
- package/dist/cjs/internal/query.js.map +1 -1
- package/dist/cjs/internal/queue.js.map +1 -1
- package/dist/cjs/internal/random.js +1 -1
- package/dist/cjs/internal/random.js.map +1 -1
- package/dist/cjs/internal/rateLimiter.js +44 -0
- package/dist/cjs/internal/rateLimiter.js.map +1 -0
- package/dist/cjs/internal/ref.js.map +1 -1
- package/dist/cjs/internal/reloadable.js +1 -9
- package/dist/cjs/internal/reloadable.js.map +1 -1
- package/dist/cjs/internal/runtime.js +0 -1
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/scopedCache.js.map +1 -1
- package/dist/cjs/internal/scopedRef.js.map +1 -1
- package/dist/cjs/internal/sink.js +7 -7
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stm/core.js.map +1 -1
- package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tExit.js +2 -2
- package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
- package/dist/cjs/internal/stm/stm.js.map +1 -1
- package/dist/cjs/internal/stm/tArray.js.map +1 -1
- package/dist/cjs/internal/stm/tDeferred.js +4 -2
- package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
- package/dist/cjs/internal/stm/tMap.js.map +1 -1
- package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
- package/dist/cjs/internal/stm/tQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tRandom.js +1 -1
- package/dist/cjs/internal/stm/tRandom.js.map +1 -1
- package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
- package/dist/cjs/internal/stm/tRef.js.map +1 -1
- package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
- package/dist/cjs/internal/stm/tSet.js.map +1 -1
- package/dist/cjs/internal/stream/debounceState.js.map +1 -1
- package/dist/cjs/internal/stream/handoff.js.map +1 -1
- package/dist/cjs/internal/stream/handoffSignal.js.map +1 -1
- package/dist/cjs/internal/stream/pull.js.map +1 -1
- package/dist/cjs/internal/stream.js +0 -2
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/subscriptionRef.js.map +1 -1
- package/dist/cjs/internal/supervisor.js.map +1 -1
- package/dist/cjs/internal/take.js +2 -2
- package/dist/cjs/internal/take.js.map +1 -1
- package/dist/cjs/internal/testing/sleep.js.map +1 -1
- package/dist/cjs/internal/tracer.js +2 -2
- package/dist/cjs/internal/tracer.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Cache.d.ts +20 -20
- package/dist/dts/Cache.d.ts.map +1 -1
- package/dist/dts/Cause.d.ts +33 -5
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +197 -194
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Clock.d.ts +7 -7
- package/dist/dts/Clock.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +1 -1
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/ConfigProvider.d.ts +6 -6
- package/dist/dts/ConfigProvider.d.ts.map +1 -1
- package/dist/dts/Console.d.ts +43 -43
- package/dist/dts/Console.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +44 -29
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Data.d.ts +38 -57
- package/dist/dts/Data.d.ts.map +1 -1
- package/dist/dts/Deferred.d.ts +36 -36
- package/dist/dts/Deferred.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +732 -729
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Effectable.d.ts +8 -8
- package/dist/dts/Effectable.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +2 -3
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/Exit.d.ts +74 -74
- package/dist/dts/Exit.d.ts.map +1 -1
- package/dist/dts/Fiber.d.ts +75 -75
- package/dist/dts/Fiber.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts +22 -22
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberRef.d.ts +28 -28
- package/dist/dts/FiberRef.d.ts.map +1 -1
- package/dist/dts/FiberRefs.d.ts +1 -1
- package/dist/dts/FiberRefs.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts +16 -16
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/GroupBy.d.ts +6 -6
- package/dist/dts/GroupBy.d.ts.map +1 -1
- package/dist/dts/KeyedPool.d.ts +22 -22
- package/dist/dts/KeyedPool.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +126 -126
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/LogLevel.d.ts +2 -2
- package/dist/dts/LogLevel.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +14 -14
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/MergeDecision.d.ts +7 -7
- package/dist/dts/MergeState.d.ts +13 -13
- package/dist/dts/MergeState.d.ts.map +1 -1
- package/dist/dts/Metric.d.ts +32 -32
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/MetricPolling.d.ts +6 -6
- package/dist/dts/MetricPolling.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +15 -0
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +2 -3
- package/dist/dts/Option.d.ts.map +1 -1
- package/dist/dts/Pool.d.ts +15 -16
- package/dist/dts/Pool.d.ts.map +1 -1
- package/dist/dts/PubSub.d.ts +18 -18
- package/dist/dts/PubSub.d.ts.map +1 -1
- package/dist/dts/Queue.d.ts +40 -40
- package/dist/dts/Queue.d.ts.map +1 -1
- package/dist/dts/Random.d.ts +13 -13
- package/dist/dts/Random.d.ts.map +1 -1
- package/dist/dts/RateLimiter.d.ts +31 -0
- package/dist/dts/RateLimiter.d.ts.map +1 -0
- package/dist/dts/ReadonlyArray.d.ts +3 -3
- package/dist/dts/ReadonlyRecord.d.ts +37 -8
- package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
- package/dist/dts/Ref.d.ts +25 -25
- package/dist/dts/Ref.d.ts.map +1 -1
- package/dist/dts/Reloadable.d.ts +9 -9
- package/dist/dts/Reloadable.d.ts.map +1 -1
- package/dist/dts/Request.d.ts +27 -28
- package/dist/dts/Request.d.ts.map +1 -1
- package/dist/dts/RequestBlock.d.ts +3 -3
- package/dist/dts/RequestBlock.d.ts.map +1 -1
- package/dist/dts/RequestResolver.d.ts +16 -16
- package/dist/dts/RequestResolver.d.ts.map +1 -1
- package/dist/dts/Resource.d.ts +7 -7
- package/dist/dts/Resource.d.ts.map +1 -1
- package/dist/dts/Runtime.d.ts +13 -16
- package/dist/dts/Runtime.d.ts.map +1 -1
- package/dist/dts/RuntimeFlags.d.ts +10 -10
- package/dist/dts/RuntimeFlags.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +303 -303
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schedule.d.ts +47 -47
- package/dist/dts/Schedule.d.ts.map +1 -1
- package/dist/dts/Scope.d.ts +10 -10
- package/dist/dts/Scope.d.ts.map +1 -1
- package/dist/dts/ScopedCache.d.ts +14 -14
- package/dist/dts/ScopedCache.d.ts.map +1 -1
- package/dist/dts/ScopedRef.d.ts +5 -5
- package/dist/dts/ScopedRef.d.ts.map +1 -1
- package/dist/dts/SingleProducerAsyncInput.d.ts +8 -8
- package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +214 -205
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +595 -592
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/StreamEmit.d.ts +5 -5
- package/dist/dts/StreamEmit.d.ts.map +1 -1
- package/dist/dts/Streamable.d.ts +2 -2
- package/dist/dts/Streamable.d.ts.map +1 -1
- package/dist/dts/SubscriptionRef.d.ts +41 -41
- package/dist/dts/SubscriptionRef.d.ts.map +1 -1
- package/dist/dts/Supervisor.d.ts +17 -17
- package/dist/dts/Supervisor.d.ts.map +1 -1
- package/dist/dts/SynchronizedRef.d.ts +41 -41
- package/dist/dts/SynchronizedRef.d.ts.map +1 -1
- package/dist/dts/TArray.d.ts +72 -72
- package/dist/dts/TArray.d.ts.map +1 -1
- package/dist/dts/TDeferred.d.ts +12 -12
- package/dist/dts/TDeferred.d.ts.map +1 -1
- package/dist/dts/TMap.d.ts +67 -67
- package/dist/dts/TMap.d.ts.map +1 -1
- package/dist/dts/TPriorityQueue.d.ts +23 -23
- package/dist/dts/TPriorityQueue.d.ts.map +1 -1
- package/dist/dts/TPubSub.d.ts +15 -15
- package/dist/dts/TPubSub.d.ts.map +1 -1
- package/dist/dts/TQueue.d.ts +40 -40
- package/dist/dts/TQueue.d.ts.map +1 -1
- package/dist/dts/TRandom.d.ts +13 -13
- package/dist/dts/TRandom.d.ts.map +1 -1
- package/dist/dts/TReentrantLock.d.ts +21 -21
- package/dist/dts/TReentrantLock.d.ts.map +1 -1
- package/dist/dts/TRef.d.ts +25 -25
- package/dist/dts/TRef.d.ts.map +1 -1
- package/dist/dts/TSemaphore.d.ts +15 -15
- package/dist/dts/TSemaphore.d.ts.map +1 -1
- package/dist/dts/TSet.d.ts +49 -49
- package/dist/dts/TSet.d.ts.map +1 -1
- package/dist/dts/Take.d.ts +41 -41
- package/dist/dts/Take.d.ts.map +1 -1
- package/dist/dts/TestAnnotation.d.ts +1 -3
- package/dist/dts/TestAnnotation.d.ts.map +1 -1
- package/dist/dts/TestAnnotations.d.ts +3 -3
- package/dist/dts/TestAnnotations.d.ts.map +1 -1
- package/dist/dts/TestClock.d.ts +18 -18
- package/dist/dts/TestClock.d.ts.map +1 -1
- package/dist/dts/TestConfig.d.ts.map +1 -1
- package/dist/dts/TestContext.d.ts +2 -2
- package/dist/dts/TestContext.d.ts.map +1 -1
- package/dist/dts/TestLive.d.ts +1 -1
- package/dist/dts/TestLive.d.ts.map +1 -1
- package/dist/dts/TestServices.d.ts +31 -31
- package/dist/dts/TestServices.d.ts.map +1 -1
- package/dist/dts/TestSized.d.ts +2 -2
- package/dist/dts/TestSized.d.ts.map +1 -1
- package/dist/dts/Tracer.d.ts +1 -1
- package/dist/dts/Utils.d.ts.map +1 -1
- package/dist/dts/index.d.ts +12 -2
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/channel/channelExecutor.d.ts +1 -1
- package/dist/dts/internal/channel/channelExecutor.d.ts.map +1 -1
- package/dist/dts/internal/core-stream.d.ts +1 -1
- package/dist/dts/internal/core-stream.d.ts.map +1 -1
- package/dist/dts/internal/rateLimiter.d.ts +2 -0
- package/dist/dts/internal/rateLimiter.d.ts.map +1 -0
- package/dist/dts/internal/stm/stm.d.ts +6 -6
- package/dist/dts/internal/stm/stm.d.ts.map +1 -1
- package/dist/dts/internal/version.d.ts +1 -1
- package/dist/esm/Cause.js +13 -0
- package/dist/esm/Cause.js.map +1 -1
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Clock.js.map +1 -1
- package/dist/esm/Console.js.map +1 -1
- package/dist/esm/Context.js +22 -24
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Data.js +4 -5
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/Deferred.js +1 -1
- package/dist/esm/Deferred.js.map +1 -1
- package/dist/esm/Effect.js +9 -9
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Effectable.js.map +1 -1
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/Exit.js +2 -2
- package/dist/esm/Exit.js.map +1 -1
- package/dist/esm/Fiber.js.map +1 -1
- package/dist/esm/FiberMap.js +3 -3
- package/dist/esm/FiberRef.js.map +1 -1
- package/dist/esm/FiberRefs.js.map +1 -1
- package/dist/esm/FiberSet.js +3 -3
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/GroupBy.js.map +1 -1
- package/dist/esm/Layer.js.map +1 -1
- package/dist/esm/LogLevel.js.map +1 -1
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/Metric.js.map +1 -1
- package/dist/esm/Number.js +18 -0
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/Option.js.map +1 -1
- package/dist/esm/Pool.js.map +1 -1
- package/dist/esm/PubSub.js.map +1 -1
- package/dist/esm/Queue.js.map +1 -1
- package/dist/esm/Random.js.map +1 -1
- package/dist/esm/RateLimiter.js +7 -0
- package/dist/esm/RateLimiter.js.map +1 -0
- package/dist/esm/ReadonlyRecord.js +44 -8
- package/dist/esm/ReadonlyRecord.js.map +1 -1
- package/dist/esm/Ref.js.map +1 -1
- package/dist/esm/Request.js.map +1 -1
- package/dist/esm/RequestResolver.js.map +1 -1
- package/dist/esm/Resource.js.map +1 -1
- package/dist/esm/Runtime.js +1 -4
- package/dist/esm/Runtime.js.map +1 -1
- package/dist/esm/RuntimeFlags.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schedule.js.map +1 -1
- package/dist/esm/Scope.js.map +1 -1
- package/dist/esm/ScopedRef.js.map +1 -1
- package/dist/esm/SingleProducerAsyncInput.js.map +1 -1
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/SubscriptionRef.js.map +1 -1
- package/dist/esm/Supervisor.js.map +1 -1
- package/dist/esm/SynchronizedRef.js.map +1 -1
- package/dist/esm/TArray.js.map +1 -1
- package/dist/esm/TDeferred.js.map +1 -1
- package/dist/esm/TMap.js.map +1 -1
- package/dist/esm/TPriorityQueue.js.map +1 -1
- package/dist/esm/TPubSub.js.map +1 -1
- package/dist/esm/TQueue.js.map +1 -1
- package/dist/esm/TRandom.js.map +1 -1
- package/dist/esm/TReentrantLock.js.map +1 -1
- package/dist/esm/TRef.js.map +1 -1
- package/dist/esm/TSemaphore.js.map +1 -1
- package/dist/esm/TSet.js.map +1 -1
- package/dist/esm/Take.js +6 -6
- package/dist/esm/Take.js.map +1 -1
- package/dist/esm/TestAnnotation.js +10 -13
- package/dist/esm/TestAnnotation.js.map +1 -1
- package/dist/esm/TestAnnotations.js +1 -1
- package/dist/esm/TestAnnotations.js.map +1 -1
- package/dist/esm/TestClock.js +1 -1
- package/dist/esm/TestClock.js.map +1 -1
- package/dist/esm/TestConfig.js +1 -1
- package/dist/esm/TestConfig.js.map +1 -1
- package/dist/esm/TestContext.js.map +1 -1
- package/dist/esm/TestLive.js +1 -1
- package/dist/esm/TestLive.js.map +1 -1
- package/dist/esm/TestServices.js.map +1 -1
- package/dist/esm/TestSized.js +1 -1
- package/dist/esm/TestSized.js.map +1 -1
- package/dist/esm/Utils.js +1 -1
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/index.js +12 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/cache.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel/mergeDecision.js +2 -6
- package/dist/esm/internal/channel/mergeDecision.js.map +1 -1
- package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/esm/internal/channel.js +1 -1
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/clock.js +1 -1
- package/dist/esm/internal/clock.js.map +1 -1
- package/dist/esm/internal/configProvider.js +2 -4
- package/dist/esm/internal/configProvider.js.map +1 -1
- package/dist/esm/internal/console.js.map +1 -1
- package/dist/esm/internal/context.js +28 -20
- package/dist/esm/internal/context.js.map +1 -1
- package/dist/esm/internal/core-effect.js +12 -26
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core-stream.js.map +1 -1
- package/dist/esm/internal/core.js +57 -127
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/data.js.map +1 -1
- package/dist/esm/internal/defaultServices/console.js +1 -1
- package/dist/esm/internal/defaultServices/console.js.map +1 -1
- package/dist/esm/internal/defaultServices.js.map +1 -1
- package/dist/esm/internal/deferred.js.map +1 -1
- package/dist/esm/internal/differ/contextPatch.js +9 -9
- package/dist/esm/internal/differ/contextPatch.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +5 -8
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/effectable.js +4 -4
- package/dist/esm/internal/effectable.js.map +1 -1
- package/dist/esm/internal/fiber.js +2 -6
- package/dist/esm/internal/fiber.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +10 -19
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/keyedPool.js.map +1 -1
- package/dist/esm/internal/layer/circular.js.map +1 -1
- package/dist/esm/internal/layer.js +3 -3
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/logSpan.js +3 -5
- package/dist/esm/internal/logSpan.js.map +1 -1
- package/dist/esm/internal/metric.js.map +1 -1
- package/dist/esm/internal/pool.js.map +1 -1
- package/dist/esm/internal/pubsub.js +1 -5
- package/dist/esm/internal/pubsub.js.map +1 -1
- package/dist/esm/internal/query.js.map +1 -1
- package/dist/esm/internal/queue.js.map +1 -1
- package/dist/esm/internal/random.js +1 -1
- package/dist/esm/internal/random.js.map +1 -1
- package/dist/esm/internal/rateLimiter.js +12 -0
- package/dist/esm/internal/rateLimiter.js.map +1 -0
- package/dist/esm/internal/ref.js.map +1 -1
- package/dist/esm/internal/reloadable.js +1 -9
- package/dist/esm/internal/reloadable.js.map +1 -1
- package/dist/esm/internal/runtime.js +0 -1
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/scopedCache.js.map +1 -1
- package/dist/esm/internal/scopedRef.js.map +1 -1
- package/dist/esm/internal/sink.js +7 -7
- package/dist/esm/internal/sink.js.map +1 -1
- package/dist/esm/internal/stm/core.js.map +1 -1
- package/dist/esm/internal/stm/stm/stmState.js.map +1 -1
- package/dist/esm/internal/stm/stm/tExit.js +2 -2
- package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
- package/dist/esm/internal/stm/stm/tryCommit.js.map +1 -1
- package/dist/esm/internal/stm/stm.js.map +1 -1
- package/dist/esm/internal/stm/tArray.js.map +1 -1
- package/dist/esm/internal/stm/tDeferred.js +4 -2
- package/dist/esm/internal/stm/tDeferred.js.map +1 -1
- package/dist/esm/internal/stm/tMap.js.map +1 -1
- package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/esm/internal/stm/tPubSub.js.map +1 -1
- package/dist/esm/internal/stm/tQueue.js.map +1 -1
- package/dist/esm/internal/stm/tRandom.js +1 -1
- package/dist/esm/internal/stm/tRandom.js.map +1 -1
- package/dist/esm/internal/stm/tReentrantLock.js.map +1 -1
- package/dist/esm/internal/stm/tRef.js.map +1 -1
- package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
- package/dist/esm/internal/stm/tSet.js.map +1 -1
- package/dist/esm/internal/stream/debounceState.js.map +1 -1
- package/dist/esm/internal/stream/handoff.js.map +1 -1
- package/dist/esm/internal/stream/handoffSignal.js.map +1 -1
- package/dist/esm/internal/stream/pull.js.map +1 -1
- package/dist/esm/internal/stream.js +0 -2
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/subscriptionRef.js.map +1 -1
- package/dist/esm/internal/supervisor.js.map +1 -1
- package/dist/esm/internal/take.js +2 -2
- package/dist/esm/internal/take.js.map +1 -1
- package/dist/esm/internal/testing/sleep.js.map +1 -1
- package/dist/esm/internal/tracer.js +2 -2
- package/dist/esm/internal/tracer.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +9 -1
- package/src/Cache.ts +20 -20
- package/src/Cause.ts +37 -13
- package/src/Channel.ts +802 -794
- package/src/Clock.ts +7 -7
- package/src/Config.ts +1 -1
- package/src/ConfigProvider.ts +6 -6
- package/src/Console.ts +44 -48
- package/src/Context.ts +52 -30
- package/src/Data.ts +38 -61
- package/src/Deferred.ts +39 -41
- package/src/Effect.ts +1187 -1206
- package/src/Effectable.ts +8 -8
- package/src/Either.ts +2 -3
- package/src/Exit.ts +88 -105
- package/src/Fiber.ts +77 -83
- package/src/FiberMap.ts +77 -77
- package/src/FiberRef.ts +28 -28
- package/src/FiberRefs.ts +1 -1
- package/src/FiberSet.ts +61 -62
- package/src/GroupBy.ts +8 -12
- package/src/KeyedPool.ts +22 -22
- package/src/Layer.ts +187 -181
- package/src/LogLevel.ts +7 -6
- package/src/Logger.ts +18 -18
- package/src/MergeDecision.ts +7 -7
- package/src/MergeState.ts +16 -16
- package/src/Metric.ts +39 -39
- package/src/MetricPolling.ts +6 -6
- package/src/Number.ts +19 -0
- package/src/Option.ts +2 -3
- package/src/Pool.ts +15 -16
- package/src/PubSub.ts +18 -18
- package/src/Queue.ts +43 -46
- package/src/Random.ts +13 -15
- package/src/RateLimiter.ts +37 -0
- package/src/ReadonlyRecord.ts +49 -8
- package/src/Ref.ts +25 -25
- package/src/Reloadable.ts +10 -10
- package/src/Request.ts +31 -31
- package/src/RequestBlock.ts +3 -3
- package/src/RequestResolver.ts +21 -21
- package/src/Resource.ts +13 -13
- package/src/Runtime.ts +16 -19
- package/src/RuntimeFlags.ts +10 -10
- package/src/STM.ts +361 -362
- package/src/Schedule.ts +47 -47
- package/src/Scheduler.ts +2 -2
- package/src/Scope.ts +14 -15
- package/src/ScopedCache.ts +14 -14
- package/src/ScopedRef.ts +7 -7
- package/src/SingleProducerAsyncInput.ts +8 -9
- package/src/Sink.ts +357 -381
- package/src/Stream.ts +935 -1033
- package/src/StreamEmit.ts +5 -5
- package/src/Streamable.ts +2 -2
- package/src/SubscriptionRef.ts +51 -51
- package/src/Supervisor.ts +26 -26
- package/src/SynchronizedRef.ts +44 -44
- package/src/TArray.ts +74 -74
- package/src/TDeferred.ts +14 -14
- package/src/TMap.ts +72 -72
- package/src/TPriorityQueue.ts +23 -24
- package/src/TPubSub.ts +15 -15
- package/src/TQueue.ts +40 -40
- package/src/TRandom.ts +13 -13
- package/src/TReentrantLock.ts +21 -21
- package/src/TRef.ts +25 -25
- package/src/TSemaphore.ts +15 -15
- package/src/TSet.ts +49 -49
- package/src/Take.ts +51 -51
- package/src/TestAnnotation.ts +6 -17
- package/src/TestAnnotations.ts +7 -9
- package/src/TestClock.ts +39 -45
- package/src/TestConfig.ts +1 -3
- package/src/TestContext.ts +3 -3
- package/src/TestLive.ts +3 -5
- package/src/TestServices.ts +45 -47
- package/src/TestSized.ts +5 -5
- package/src/Tracer.ts +1 -1
- package/src/Utils.ts +8 -10
- package/src/index.ts +13 -2
- package/src/internal/blockedRequests.ts +2 -2
- package/src/internal/cache.ts +38 -38
- package/src/internal/channel/channelExecutor.ts +65 -73
- package/src/internal/channel/channelState.ts +11 -11
- package/src/internal/channel/continuation.ts +10 -10
- package/src/internal/channel/mergeDecision.ts +14 -16
- package/src/internal/channel/mergeState.ts +12 -12
- package/src/internal/channel/singleProducerAsyncInput.ts +15 -17
- package/src/internal/channel/subexecutor.ts +7 -7
- package/src/internal/channel.ts +901 -980
- package/src/internal/clock.ts +6 -6
- package/src/internal/concurrency.ts +9 -9
- package/src/internal/configProvider.ts +29 -36
- package/src/internal/console.ts +12 -12
- package/src/internal/context.ts +32 -23
- package/src/internal/core-effect.ts +655 -616
- package/src/internal/core-stream.ts +317 -325
- package/src/internal/core.ts +856 -790
- package/src/internal/data.ts +2 -3
- package/src/internal/dataSource.ts +14 -14
- package/src/internal/defaultServices/console.ts +3 -1
- package/src/internal/defaultServices.ts +21 -21
- package/src/internal/deferred.ts +9 -9
- package/src/internal/differ/contextPatch.ts +17 -17
- package/src/internal/effect/circular.ts +154 -159
- package/src/internal/effectable.ts +7 -7
- package/src/internal/fiber.ts +55 -59
- package/src/internal/fiberRefs.ts +1 -1
- package/src/internal/fiberRuntime.ts +426 -463
- package/src/internal/groupBy.ts +59 -62
- package/src/internal/keyedPool.ts +37 -37
- package/src/internal/layer/circular.ts +37 -37
- package/src/internal/layer.ts +235 -240
- package/src/internal/logSpan.ts +3 -5
- package/src/internal/metric/polling.ts +5 -5
- package/src/internal/metric.ts +54 -55
- package/src/internal/pool.ts +72 -72
- package/src/internal/pubsub.ts +75 -84
- package/src/internal/query.ts +25 -27
- package/src/internal/queue.ts +65 -70
- package/src/internal/random.ts +9 -9
- package/src/internal/rateLimiter.ts +30 -0
- package/src/internal/ref.ts +24 -24
- package/src/internal/reloadable.ts +11 -31
- package/src/internal/request.ts +14 -14
- package/src/internal/resource.ts +8 -8
- package/src/internal/runtime.ts +21 -22
- package/src/internal/schedule.ts +131 -134
- package/src/internal/scopedCache.ts +35 -32
- package/src/internal/scopedRef.ts +14 -14
- package/src/internal/sink.ts +507 -565
- package/src/internal/stm/core.ts +101 -102
- package/src/internal/stm/stm/stmState.ts +10 -10
- package/src/internal/stm/stm/tExit.ts +18 -18
- package/src/internal/stm/stm/tryCommit.ts +5 -5
- package/src/internal/stm/stm.ts +363 -374
- package/src/internal/stm/tArray.ts +92 -92
- package/src/internal/stm/tDeferred.ts +16 -14
- package/src/internal/stm/tMap.ts +83 -84
- package/src/internal/stm/tPriorityQueue.ts +24 -25
- package/src/internal/stm/tPubSub.ts +37 -38
- package/src/internal/stm/tQueue.ts +44 -48
- package/src/internal/stm/tRandom.ts +18 -18
- package/src/internal/stm/tReentrantLock.ts +28 -28
- package/src/internal/stm/tRef.ts +25 -25
- package/src/internal/stm/tSemaphore.ts +16 -16
- package/src/internal/stm/tSet.ts +51 -52
- package/src/internal/stream/debounceState.ts +7 -7
- package/src/internal/stream/emit.ts +4 -4
- package/src/internal/stream/handoff.ts +19 -19
- package/src/internal/stream/handoffSignal.ts +4 -4
- package/src/internal/stream/pull.ts +10 -11
- package/src/internal/stream.ts +1770 -1788
- package/src/internal/subscriptionRef.ts +17 -17
- package/src/internal/supervisor.ts +49 -56
- package/src/internal/synchronizedRef.ts +27 -27
- package/src/internal/take.ts +61 -61
- package/src/internal/testing/sleep.ts +2 -2
- package/src/internal/testing/suspendedWarningData.ts +2 -2
- package/src/internal/testing/warningData.ts +2 -2
- package/src/internal/tracer.ts +2 -6
- package/src/internal/version.ts +1 -1
package/src/internal/stm/core.ts
CHANGED
|
@@ -52,7 +52,7 @@ export type Primitive =
|
|
|
52
52
|
| STMInterrupt
|
|
53
53
|
|
|
54
54
|
/** @internal */
|
|
55
|
-
type Op<Tag extends string, Body = {}> = STM.STM<never
|
|
55
|
+
type Op<Tag extends string, Body = {}> = STM.STM<never> & Body & {
|
|
56
56
|
readonly _tag: OP_COMMIT
|
|
57
57
|
readonly i0: Tag
|
|
58
58
|
}
|
|
@@ -182,16 +182,16 @@ class STMPrimitive implements STM.STM<any, any, any> {
|
|
|
182
182
|
export const isSTM = (u: unknown): u is STM.STM<unknown, unknown, unknown> => hasProperty(u, STMTypeId)
|
|
183
183
|
|
|
184
184
|
/** @internal */
|
|
185
|
-
export const commit = <
|
|
185
|
+
export const commit = <A, E, R>(self: STM.STM<A, E, R>): Effect.Effect<A, E, R> =>
|
|
186
186
|
unsafeAtomically(self, constVoid, constVoid)
|
|
187
187
|
|
|
188
188
|
/** @internal */
|
|
189
|
-
export const unsafeAtomically = <
|
|
190
|
-
self: STM.STM<
|
|
191
|
-
onDone: (exit: Exit.Exit<
|
|
189
|
+
export const unsafeAtomically = <A, E, R>(
|
|
190
|
+
self: STM.STM<A, E, R>,
|
|
191
|
+
onDone: (exit: Exit.Exit<A, E>) => unknown,
|
|
192
192
|
onInterrupt: LazyArg<unknown>
|
|
193
|
-
): Effect.Effect<
|
|
194
|
-
withFiberRuntime
|
|
193
|
+
): Effect.Effect<A, E, R> =>
|
|
194
|
+
withFiberRuntime((state) => {
|
|
195
195
|
const fiberId = state.id()
|
|
196
196
|
const env = state.getFiberRef(FiberRef.currentContext) as Context.Context<R>
|
|
197
197
|
const scheduler = state.getFiberRef(FiberRef.currentScheduler)
|
|
@@ -204,9 +204,9 @@ export const unsafeAtomically = <R, E, A>(
|
|
|
204
204
|
}
|
|
205
205
|
case TryCommitOpCodes.OP_SUSPEND: {
|
|
206
206
|
const txnId = TxnId.make()
|
|
207
|
-
const state: { value: STMState.STMState<
|
|
207
|
+
const state: { value: STMState.STMState<A, E> } = { value: STMState.running }
|
|
208
208
|
const effect = Effect.async(
|
|
209
|
-
(k: (effect: Effect.Effect<
|
|
209
|
+
(k: (effect: Effect.Effect<A, E, R>) => unknown): void =>
|
|
210
210
|
tryCommitAsync(fiberId, self, txnId, state, env, scheduler, priority, k)
|
|
211
211
|
)
|
|
212
212
|
return Effect.uninterruptibleMask((restore) =>
|
|
@@ -232,14 +232,14 @@ export const unsafeAtomically = <R, E, A>(
|
|
|
232
232
|
})
|
|
233
233
|
|
|
234
234
|
/** @internal */
|
|
235
|
-
const tryCommit = <
|
|
235
|
+
const tryCommit = <A, E, R>(
|
|
236
236
|
fiberId: FiberId.FiberId,
|
|
237
|
-
stm: STM.STM<
|
|
238
|
-
state: { value: STMState.STMState<
|
|
237
|
+
stm: STM.STM<A, E, R>,
|
|
238
|
+
state: { value: STMState.STMState<A, E> },
|
|
239
239
|
env: Context.Context<R>,
|
|
240
240
|
scheduler: Scheduler.Scheduler,
|
|
241
241
|
priority: number
|
|
242
|
-
): TryCommit.TryCommit<
|
|
242
|
+
): TryCommit.TryCommit<A, E> => {
|
|
243
243
|
const journal: Journal.Journal = new Map()
|
|
244
244
|
const tExit = new STMDriver(stm, journal, fiberId, env).run()
|
|
245
245
|
const analysis = Journal.analyzeJournal(journal)
|
|
@@ -294,13 +294,13 @@ const tryCommit = <R, E, A>(
|
|
|
294
294
|
}
|
|
295
295
|
|
|
296
296
|
/** @internal */
|
|
297
|
-
const tryCommitSync = <
|
|
297
|
+
const tryCommitSync = <A, E, R>(
|
|
298
298
|
fiberId: FiberId.FiberId,
|
|
299
|
-
stm: STM.STM<
|
|
299
|
+
stm: STM.STM<A, E, R>,
|
|
300
300
|
env: Context.Context<R>,
|
|
301
301
|
scheduler: Scheduler.Scheduler,
|
|
302
302
|
priority: number
|
|
303
|
-
): TryCommit.TryCommit<
|
|
303
|
+
): TryCommit.TryCommit<A, E> => {
|
|
304
304
|
const journal: Journal.Journal = new Map()
|
|
305
305
|
const tExit = new STMDriver(stm, journal, fiberId, env).run()
|
|
306
306
|
const analysis = Journal.analyzeJournal(journal)
|
|
@@ -351,15 +351,15 @@ const tryCommitSync = <R, E, A>(
|
|
|
351
351
|
}
|
|
352
352
|
|
|
353
353
|
/** @internal */
|
|
354
|
-
const tryCommitAsync = <
|
|
354
|
+
const tryCommitAsync = <A, E, R>(
|
|
355
355
|
fiberId: FiberId.FiberId,
|
|
356
|
-
self: STM.STM<
|
|
356
|
+
self: STM.STM<A, E, R>,
|
|
357
357
|
txnId: TxnId.TxnId,
|
|
358
|
-
state: { value: STMState.STMState<
|
|
358
|
+
state: { value: STMState.STMState<A, E> },
|
|
359
359
|
context: Context.Context<R>,
|
|
360
360
|
scheduler: Scheduler.Scheduler,
|
|
361
361
|
priority: number,
|
|
362
|
-
k: (effect: Effect.Effect<
|
|
362
|
+
k: (effect: Effect.Effect<A, E, R>) => unknown
|
|
363
363
|
) => {
|
|
364
364
|
if (STMState.isRunning(state.value)) {
|
|
365
365
|
const result = tryCommit(fiberId, self, state, context, scheduler, priority)
|
|
@@ -381,12 +381,12 @@ const tryCommitAsync = <R, E, A>(
|
|
|
381
381
|
}
|
|
382
382
|
|
|
383
383
|
/** @internal */
|
|
384
|
-
const completeTodos = <
|
|
385
|
-
exit: Exit.Exit<
|
|
384
|
+
const completeTodos = <A, E>(
|
|
385
|
+
exit: Exit.Exit<A, E>,
|
|
386
386
|
journal: Journal.Journal,
|
|
387
387
|
scheduler: Scheduler.Scheduler,
|
|
388
388
|
priority: number
|
|
389
|
-
): TryCommit.TryCommit<
|
|
389
|
+
): TryCommit.TryCommit<A, E> => {
|
|
390
390
|
const todos = Journal.collectTodos(journal)
|
|
391
391
|
if (todos.size > 0) {
|
|
392
392
|
scheduler.scheduleTask(() => Journal.execTodos(todos), priority)
|
|
@@ -395,9 +395,9 @@ const completeTodos = <E, A>(
|
|
|
395
395
|
}
|
|
396
396
|
|
|
397
397
|
/** @internal */
|
|
398
|
-
const completeTryCommit = <
|
|
399
|
-
exit: Exit.Exit<
|
|
400
|
-
k: (effect: Effect.Effect<
|
|
398
|
+
const completeTryCommit = <A, E, R>(
|
|
399
|
+
exit: Exit.Exit<A, E>,
|
|
400
|
+
k: (effect: Effect.Effect<A, E, R>) => unknown
|
|
401
401
|
): void => {
|
|
402
402
|
k(exit)
|
|
403
403
|
}
|
|
@@ -406,17 +406,17 @@ const completeTryCommit = <R, E, A>(
|
|
|
406
406
|
type Continuation = STMOnFailure | STMOnSuccess | STMOnRetry
|
|
407
407
|
|
|
408
408
|
/** @internal */
|
|
409
|
-
export const context = <R>(): STM.STM<R
|
|
409
|
+
export const context = <R>(): STM.STM<Context.Context<R>, never, R> =>
|
|
410
410
|
effect<R, Context.Context<R>>((_, __, env) => env)
|
|
411
411
|
|
|
412
412
|
/** @internal */
|
|
413
|
-
export const contextWith = <R0, R>(f: (environment: Context.Context<R0>) => R): STM.STM<
|
|
413
|
+
export const contextWith = <R0, R>(f: (environment: Context.Context<R0>) => R): STM.STM<R, never, R0> =>
|
|
414
414
|
map(context<R0>(), f)
|
|
415
415
|
|
|
416
416
|
/** @internal */
|
|
417
417
|
export const contextWithSTM = <R0, R, E, A>(
|
|
418
|
-
f: (environment: Context.Context<R0>) => STM.STM<
|
|
419
|
-
): STM.STM<R0 | R
|
|
418
|
+
f: (environment: Context.Context<R0>) => STM.STM<A, E, R>
|
|
419
|
+
): STM.STM<A, E, R0 | R> => flatMap(context<R0>(), f)
|
|
420
420
|
|
|
421
421
|
/** @internal */
|
|
422
422
|
export class STMDriver<in out R, out E, out A> {
|
|
@@ -424,7 +424,7 @@ export class STMDriver<in out R, out E, out A> {
|
|
|
424
424
|
private env: Context.Context<unknown>
|
|
425
425
|
|
|
426
426
|
constructor(
|
|
427
|
-
readonly self: STM.STM<
|
|
427
|
+
readonly self: STM.STM<A, E, R>,
|
|
428
428
|
readonly journal: Journal.Journal,
|
|
429
429
|
readonly fiberId: FiberId.FiberId,
|
|
430
430
|
r0: Context.Context<R>
|
|
@@ -468,7 +468,7 @@ export class STMDriver<in out R, out E, out A> {
|
|
|
468
468
|
return current
|
|
469
469
|
}
|
|
470
470
|
|
|
471
|
-
run(): TExit.TExit<
|
|
471
|
+
run(): TExit.TExit<A, E> {
|
|
472
472
|
let curr = this.self as Primitive | Context.Tag<any, any> | Either.Either<any, any> | Option.Option<any> | undefined
|
|
473
473
|
let exit: TExit.TExit<unknown, unknown> | undefined = undefined
|
|
474
474
|
while (exit === undefined && curr !== undefined) {
|
|
@@ -573,21 +573,21 @@ export class STMDriver<in out R, out E, out A> {
|
|
|
573
573
|
curr = die(e) as Primitive
|
|
574
574
|
}
|
|
575
575
|
}
|
|
576
|
-
return exit as TExit.TExit<
|
|
576
|
+
return exit as TExit.TExit<A, E>
|
|
577
577
|
}
|
|
578
578
|
}
|
|
579
579
|
|
|
580
580
|
/** @internal */
|
|
581
581
|
export const catchAll = dual<
|
|
582
582
|
<E, R1, E1, B>(
|
|
583
|
-
f: (e: E) => STM.STM<
|
|
583
|
+
f: (e: E) => STM.STM<B, E1, R1>
|
|
584
584
|
) => <R, A>(
|
|
585
|
-
self: STM.STM<
|
|
586
|
-
) => STM.STM<
|
|
585
|
+
self: STM.STM<A, E, R>
|
|
586
|
+
) => STM.STM<B | A, E1, R1 | R>,
|
|
587
587
|
<R, A, E, R1, E1, B>(
|
|
588
|
-
self: STM.STM<
|
|
589
|
-
f: (e: E) => STM.STM<
|
|
590
|
-
) => STM.STM<
|
|
588
|
+
self: STM.STM<A, E, R>,
|
|
589
|
+
f: (e: E) => STM.STM<B, E1, R1>
|
|
590
|
+
) => STM.STM<B | A, E1, R1 | R>
|
|
591
591
|
>(2, (self, f) => {
|
|
592
592
|
const stm = new STMPrimitive(OpCodes.OP_ON_FAILURE)
|
|
593
593
|
stm.i1 = self
|
|
@@ -599,13 +599,13 @@ export const catchAll = dual<
|
|
|
599
599
|
export const mapInputContext = dual<
|
|
600
600
|
<R0, R>(
|
|
601
601
|
f: (context: Context.Context<R0>) => Context.Context<R>
|
|
602
|
-
) => <
|
|
603
|
-
self: STM.STM<
|
|
604
|
-
) => STM.STM<
|
|
605
|
-
<
|
|
606
|
-
self: STM.STM<
|
|
602
|
+
) => <A, E>(
|
|
603
|
+
self: STM.STM<A, E, R>
|
|
604
|
+
) => STM.STM<A, E, R0>,
|
|
605
|
+
<A, E, R0, R>(
|
|
606
|
+
self: STM.STM<A, E, R>,
|
|
607
607
|
f: (context: Context.Context<R0>) => Context.Context<R>
|
|
608
|
-
) => STM.STM<
|
|
608
|
+
) => STM.STM<A, E, R0>
|
|
609
609
|
>(2, (self, f) => {
|
|
610
610
|
const stm = new STMPrimitive(OpCodes.OP_PROVIDE)
|
|
611
611
|
stm.i1 = self
|
|
@@ -614,14 +614,13 @@ export const mapInputContext = dual<
|
|
|
614
614
|
})
|
|
615
615
|
|
|
616
616
|
/** @internal */
|
|
617
|
-
export const die = (defect: unknown): STM.STM<never
|
|
617
|
+
export const die = (defect: unknown): STM.STM<never> => dieSync(() => defect)
|
|
618
618
|
|
|
619
619
|
/** @internal */
|
|
620
|
-
export const dieMessage = (message: string): STM.STM<never
|
|
621
|
-
dieSync(() => new Cause.RuntimeException(message))
|
|
620
|
+
export const dieMessage = (message: string): STM.STM<never> => dieSync(() => new Cause.RuntimeException(message))
|
|
622
621
|
|
|
623
622
|
/** @internal */
|
|
624
|
-
export const dieSync = (evaluate: LazyArg<unknown>): STM.STM<never
|
|
623
|
+
export const dieSync = (evaluate: LazyArg<unknown>): STM.STM<never> => {
|
|
625
624
|
const stm = new STMPrimitive(OpCodes.OP_DIE)
|
|
626
625
|
stm.i1 = evaluate
|
|
627
626
|
return stm as any
|
|
@@ -630,12 +629,12 @@ export const dieSync = (evaluate: LazyArg<unknown>): STM.STM<never, never, never
|
|
|
630
629
|
/** @internal */
|
|
631
630
|
export const effect = <R, A>(
|
|
632
631
|
f: (journal: Journal.Journal, fiberId: FiberId.FiberId, environment: Context.Context<R>) => A
|
|
633
|
-
): STM.STM<
|
|
632
|
+
): STM.STM<A, never, R> => withSTMRuntime((_) => succeed(f(_.journal, _.fiberId, _.getEnv())))
|
|
634
633
|
|
|
635
634
|
/** @internal */
|
|
636
635
|
export const ensuring = dual<
|
|
637
|
-
<R1, B>(finalizer: STM.STM<
|
|
638
|
-
<R, E, A, R1, B>(self: STM.STM<
|
|
636
|
+
<R1, B>(finalizer: STM.STM<B, never, R1>) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<A, E, R1 | R>,
|
|
637
|
+
<R, E, A, R1, B>(self: STM.STM<A, E, R>, finalizer: STM.STM<B, never, R1>) => STM.STM<A, E, R1 | R>
|
|
639
638
|
>(2, (self, finalizer) =>
|
|
640
639
|
matchSTM(self, {
|
|
641
640
|
onFailure: (e) => zipRight(finalizer, fail(e)),
|
|
@@ -643,10 +642,10 @@ export const ensuring = dual<
|
|
|
643
642
|
}))
|
|
644
643
|
|
|
645
644
|
/** @internal */
|
|
646
|
-
export const fail = <E>(error: E): STM.STM<never, E
|
|
645
|
+
export const fail = <E>(error: E): STM.STM<never, E> => failSync(() => error)
|
|
647
646
|
|
|
648
647
|
/** @internal */
|
|
649
|
-
export const failSync = <E>(evaluate: LazyArg<E>): STM.STM<never, E
|
|
648
|
+
export const failSync = <E>(evaluate: LazyArg<E>): STM.STM<never, E> => {
|
|
650
649
|
const stm = new STMPrimitive(OpCodes.OP_FAIL)
|
|
651
650
|
stm.i1 = evaluate
|
|
652
651
|
return stm as any
|
|
@@ -654,8 +653,8 @@ export const failSync = <E>(evaluate: LazyArg<E>): STM.STM<never, E, never> => {
|
|
|
654
653
|
|
|
655
654
|
/** @internal */
|
|
656
655
|
export const flatMap = dual<
|
|
657
|
-
<A, R1, E1, A2>(f: (a: A) => STM.STM<
|
|
658
|
-
<R, E, A, R1, E1, A2>(self: STM.STM<
|
|
656
|
+
<A, R1, E1, A2>(f: (a: A) => STM.STM<A2, E1, R1>) => <R, E>(self: STM.STM<A, E, R>) => STM.STM<A2, E1 | E, R1 | R>,
|
|
657
|
+
<R, E, A, R1, E1, A2>(self: STM.STM<A, E, R>, f: (a: A) => STM.STM<A2, E1, R1>) => STM.STM<A2, E1 | E, R1 | R>
|
|
659
658
|
>(2, (self, f) => {
|
|
660
659
|
const stm = new STMPrimitive(OpCodes.OP_ON_SUCCESS)
|
|
661
660
|
stm.i1 = self
|
|
@@ -667,29 +666,29 @@ export const flatMap = dual<
|
|
|
667
666
|
export const matchSTM = dual<
|
|
668
667
|
<E, R1, E1, A1, A, R2, E2, A2>(
|
|
669
668
|
options: {
|
|
670
|
-
readonly onFailure: (e: E) => STM.STM<
|
|
671
|
-
readonly onSuccess: (a: A) => STM.STM<
|
|
669
|
+
readonly onFailure: (e: E) => STM.STM<A1, E1, R1>
|
|
670
|
+
readonly onSuccess: (a: A) => STM.STM<A2, E2, R2>
|
|
672
671
|
}
|
|
673
|
-
) => <R>(self: STM.STM<
|
|
672
|
+
) => <R>(self: STM.STM<A, E, R>) => STM.STM<A1 | A2, E1 | E2, R1 | R2 | R>,
|
|
674
673
|
<R, E, R1, E1, A1, A, R2, E2, A2>(
|
|
675
|
-
self: STM.STM<
|
|
674
|
+
self: STM.STM<A, E, R>,
|
|
676
675
|
options: {
|
|
677
|
-
readonly onFailure: (e: E) => STM.STM<
|
|
678
|
-
readonly onSuccess: (a: A) => STM.STM<
|
|
676
|
+
readonly onFailure: (e: E) => STM.STM<A1, E1, R1>
|
|
677
|
+
readonly onSuccess: (a: A) => STM.STM<A2, E2, R2>
|
|
679
678
|
}
|
|
680
|
-
) => STM.STM<
|
|
679
|
+
) => STM.STM<A1 | A2, E1 | E2, R1 | R2 | R>
|
|
681
680
|
>(2, <R, E, R1, E1, A1, A, R2, E2, A2>(
|
|
682
|
-
self: STM.STM<
|
|
681
|
+
self: STM.STM<A, E, R>,
|
|
683
682
|
{ onFailure, onSuccess }: {
|
|
684
|
-
readonly onFailure: (e: E) => STM.STM<
|
|
685
|
-
readonly onSuccess: (a: A) => STM.STM<
|
|
683
|
+
readonly onFailure: (e: E) => STM.STM<A1, E1, R1>
|
|
684
|
+
readonly onSuccess: (a: A) => STM.STM<A2, E2, R2>
|
|
686
685
|
}
|
|
687
|
-
): STM.STM<
|
|
686
|
+
): STM.STM<A1 | A2, E1 | E2, R1 | R2 | R> =>
|
|
688
687
|
pipe(
|
|
689
688
|
self,
|
|
690
689
|
map(Either.right),
|
|
691
690
|
catchAll((e) => pipe(onFailure(e), map(Either.left))),
|
|
692
|
-
flatMap((either): STM.STM<
|
|
691
|
+
flatMap((either): STM.STM<A1 | A2, E1 | E2, R | R1 | R2> => {
|
|
693
692
|
switch (either._tag) {
|
|
694
693
|
case "Left": {
|
|
695
694
|
return succeed(either.left)
|
|
@@ -702,23 +701,23 @@ export const matchSTM = dual<
|
|
|
702
701
|
))
|
|
703
702
|
|
|
704
703
|
/** @internal */
|
|
705
|
-
export const withSTMRuntime = <
|
|
706
|
-
f: (runtime: STMDriver<unknown, unknown, unknown>) => STM.STM<
|
|
707
|
-
): STM.STM<
|
|
704
|
+
export const withSTMRuntime = <A, E = never, R = never>(
|
|
705
|
+
f: (runtime: STMDriver<unknown, unknown, unknown>) => STM.STM<A, E, R>
|
|
706
|
+
): STM.STM<A, E, R> => {
|
|
708
707
|
const stm = new STMPrimitive(OpCodes.OP_WITH_STM_RUNTIME)
|
|
709
708
|
stm.i1 = f
|
|
710
709
|
return stm
|
|
711
710
|
}
|
|
712
711
|
|
|
713
712
|
/** @internal */
|
|
714
|
-
export const interrupt: STM.STM<never
|
|
713
|
+
export const interrupt: STM.STM<never> = withSTMRuntime((_) => {
|
|
715
714
|
const stm = new STMPrimitive(OpCodes.OP_INTERRUPT)
|
|
716
715
|
stm.i1 = _.fiberId
|
|
717
716
|
return stm as any
|
|
718
717
|
})
|
|
719
718
|
|
|
720
719
|
/** @internal */
|
|
721
|
-
export const interruptAs = (fiberId: FiberId.FiberId): STM.STM<never
|
|
720
|
+
export const interruptAs = (fiberId: FiberId.FiberId): STM.STM<never> => {
|
|
722
721
|
const stm = new STMPrimitive(OpCodes.OP_INTERRUPT)
|
|
723
722
|
stm.i1 = fiberId
|
|
724
723
|
return stm as any
|
|
@@ -726,21 +725,21 @@ export const interruptAs = (fiberId: FiberId.FiberId): STM.STM<never, never, nev
|
|
|
726
725
|
|
|
727
726
|
/** @internal */
|
|
728
727
|
export const map = dual<
|
|
729
|
-
<A, B>(f: (a: A) => B) => <R, E>(self: STM.STM<
|
|
730
|
-
<R, E, A, B>(self: STM.STM<
|
|
728
|
+
<A, B>(f: (a: A) => B) => <R, E>(self: STM.STM<A, E, R>) => STM.STM<B, E, R>,
|
|
729
|
+
<R, E, A, B>(self: STM.STM<A, E, R>, f: (a: A) => B) => STM.STM<B, E, R>
|
|
731
730
|
>(2, (self, f) => pipe(self, flatMap((a) => sync(() => f(a)))))
|
|
732
731
|
|
|
733
732
|
/** @internal */
|
|
734
733
|
export const orTry = dual<
|
|
735
734
|
<R1, E1, A1>(
|
|
736
|
-
that: LazyArg<STM.STM<
|
|
737
|
-
) => <
|
|
738
|
-
self: STM.STM<
|
|
739
|
-
) => STM.STM<
|
|
735
|
+
that: LazyArg<STM.STM<A1, E1, R1>>
|
|
736
|
+
) => <A, E, R>(
|
|
737
|
+
self: STM.STM<A, E, R>
|
|
738
|
+
) => STM.STM<A1 | A, E1 | E, R1 | R>,
|
|
740
739
|
<R, E, A, R1, E1, A1>(
|
|
741
|
-
self: STM.STM<
|
|
742
|
-
that: LazyArg<STM.STM<
|
|
743
|
-
) => STM.STM<
|
|
740
|
+
self: STM.STM<A, E, R>,
|
|
741
|
+
that: LazyArg<STM.STM<A1, E1, R1>>
|
|
742
|
+
) => STM.STM<A1 | A, E1 | E, R1 | R>
|
|
744
743
|
>(2, (self, that) => {
|
|
745
744
|
const stm = new STMPrimitive(OpCodes.OP_ON_RETRY)
|
|
746
745
|
stm.i1 = self
|
|
@@ -749,17 +748,17 @@ export const orTry = dual<
|
|
|
749
748
|
})
|
|
750
749
|
|
|
751
750
|
/** @internal */
|
|
752
|
-
export const retry: STM.STM<never
|
|
751
|
+
export const retry: STM.STM<never> = new STMPrimitive(OpCodes.OP_RETRY)
|
|
753
752
|
|
|
754
753
|
/** @internal */
|
|
755
|
-
export const succeed = <A>(value: A): STM.STM<
|
|
754
|
+
export const succeed = <A>(value: A): STM.STM<A> => {
|
|
756
755
|
const stm = new STMPrimitive(OpCodes.OP_SUCCEED)
|
|
757
756
|
stm.i1 = value
|
|
758
757
|
return stm as any
|
|
759
758
|
}
|
|
760
759
|
|
|
761
760
|
/** @internal */
|
|
762
|
-
export const sync = <A>(evaluate: () => A): STM.STM<
|
|
761
|
+
export const sync = <A>(evaluate: () => A): STM.STM<A> => {
|
|
763
762
|
const stm = new STMPrimitive(OpCodes.OP_SYNC)
|
|
764
763
|
stm.i1 = evaluate
|
|
765
764
|
return stm as any
|
|
@@ -768,41 +767,41 @@ export const sync = <A>(evaluate: () => A): STM.STM<never, never, A> => {
|
|
|
768
767
|
/** @internal */
|
|
769
768
|
export const zip = dual<
|
|
770
769
|
<R1, E1, A1>(
|
|
771
|
-
that: STM.STM<
|
|
772
|
-
) => <
|
|
773
|
-
self: STM.STM<
|
|
774
|
-
) => STM.STM<
|
|
770
|
+
that: STM.STM<A1, E1, R1>
|
|
771
|
+
) => <A, E, R>(
|
|
772
|
+
self: STM.STM<A, E, R>
|
|
773
|
+
) => STM.STM<[A, A1], E1 | E, R1 | R>,
|
|
775
774
|
<R, E, A, R1, E1, A1>(
|
|
776
|
-
self: STM.STM<
|
|
777
|
-
that: STM.STM<
|
|
778
|
-
) => STM.STM<
|
|
775
|
+
self: STM.STM<A, E, R>,
|
|
776
|
+
that: STM.STM<A1, E1, R1>
|
|
777
|
+
) => STM.STM<[A, A1], E1 | E, R1 | R>
|
|
779
778
|
>(2, (self, that) => pipe(self, zipWith(that, (a, a1) => [a, a1])))
|
|
780
779
|
|
|
781
780
|
/** @internal */
|
|
782
781
|
export const zipLeft = dual<
|
|
783
|
-
<R1, E1, A1>(that: STM.STM<
|
|
784
|
-
<R, E, A, R1, E1, A1>(self: STM.STM<
|
|
782
|
+
<R1, E1, A1>(that: STM.STM<A1, E1, R1>) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<A, E1 | E, R1 | R>,
|
|
783
|
+
<R, E, A, R1, E1, A1>(self: STM.STM<A, E, R>, that: STM.STM<A1, E1, R1>) => STM.STM<A, E1 | E, R1 | R>
|
|
785
784
|
>(2, (self, that) => pipe(self, flatMap((a) => pipe(that, map(() => a)))))
|
|
786
785
|
|
|
787
786
|
/** @internal */
|
|
788
787
|
export const zipRight = dual<
|
|
789
|
-
<R1, E1, A1>(that: STM.STM<
|
|
790
|
-
<R, E, A, R1, E1, A1>(self: STM.STM<
|
|
788
|
+
<R1, E1, A1>(that: STM.STM<A1, E1, R1>) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<A1, E1 | E, R1 | R>,
|
|
789
|
+
<R, E, A, R1, E1, A1>(self: STM.STM<A, E, R>, that: STM.STM<A1, E1, R1>) => STM.STM<A1, E1 | E, R1 | R>
|
|
791
790
|
>(2, (self, that) => pipe(self, flatMap(() => that)))
|
|
792
791
|
|
|
793
792
|
/** @internal */
|
|
794
793
|
export const zipWith = dual<
|
|
795
794
|
<R1, E1, A1, A, A2>(
|
|
796
|
-
that: STM.STM<
|
|
795
|
+
that: STM.STM<A1, E1, R1>,
|
|
797
796
|
f: (a: A, b: A1) => A2
|
|
798
797
|
) => <R, E>(
|
|
799
|
-
self: STM.STM<
|
|
800
|
-
) => STM.STM<
|
|
798
|
+
self: STM.STM<A, E, R>
|
|
799
|
+
) => STM.STM<A2, E1 | E, R1 | R>,
|
|
801
800
|
<R, E, R1, E1, A1, A, A2>(
|
|
802
|
-
self: STM.STM<
|
|
803
|
-
that: STM.STM<
|
|
801
|
+
self: STM.STM<A, E, R>,
|
|
802
|
+
that: STM.STM<A1, E1, R1>,
|
|
804
803
|
f: (a: A, b: A1) => A2
|
|
805
|
-
) => STM.STM<
|
|
804
|
+
) => STM.STM<A2, E1 | E, R1 | R>
|
|
806
805
|
>(
|
|
807
806
|
3,
|
|
808
807
|
(self, that, f) => pipe(self, flatMap((a) => pipe(that, map((b) => f(a, b)))))
|
|
@@ -17,13 +17,13 @@ export const STMStateTypeId = Symbol.for(STMStateSymbolKey)
|
|
|
17
17
|
export type STMStateTypeId = typeof STMStateTypeId
|
|
18
18
|
|
|
19
19
|
/** @internal */
|
|
20
|
-
export type STMState<
|
|
20
|
+
export type STMState<A, E = never> = Done<A, E> | Interrupted | Running
|
|
21
21
|
|
|
22
22
|
/** @internal */
|
|
23
|
-
export interface Done<out
|
|
23
|
+
export interface Done<out A, out E = never> extends Equal.Equal {
|
|
24
24
|
readonly [STMStateTypeId]: STMStateTypeId
|
|
25
25
|
readonly _tag: OpCodes.OP_DONE
|
|
26
|
-
readonly exit: Exit.Exit<
|
|
26
|
+
readonly exit: Exit.Exit<A, E>
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/** @internal */
|
|
@@ -42,22 +42,22 @@ export interface Running extends Equal.Equal {
|
|
|
42
42
|
export const isSTMState = (u: unknown): u is STMState<unknown, unknown> => hasProperty(u, STMStateTypeId)
|
|
43
43
|
|
|
44
44
|
/** @internal */
|
|
45
|
-
export const isRunning = <
|
|
45
|
+
export const isRunning = <A, E>(self: STMState<A, E>): self is Running => {
|
|
46
46
|
return self._tag === OpCodes.OP_RUNNING
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/** @internal */
|
|
50
|
-
export const isDone = <
|
|
50
|
+
export const isDone = <A, E>(self: STMState<A, E>): self is Done<A, E> => {
|
|
51
51
|
return self._tag === OpCodes.OP_DONE
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
/** @internal */
|
|
55
|
-
export const isInterrupted = <
|
|
55
|
+
export const isInterrupted = <A, E>(self: STMState<A, E>): self is Interrupted => {
|
|
56
56
|
return self._tag === OpCodes.OP_INTERRUPTED
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
/** @internal */
|
|
60
|
-
export const done = <
|
|
60
|
+
export const done = <A, E>(exit: Exit.Exit<A, E>): STMState<A, E> => {
|
|
61
61
|
return {
|
|
62
62
|
[STMStateTypeId]: STMStateTypeId,
|
|
63
63
|
_tag: OpCodes.OP_DONE,
|
|
@@ -76,7 +76,7 @@ export const done = <E, A>(exit: Exit.Exit<E, A>): STMState<E, A> => {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
/** @internal */
|
|
79
|
-
export const interrupted: STMState<never
|
|
79
|
+
export const interrupted: STMState<never> = {
|
|
80
80
|
[STMStateTypeId]: STMStateTypeId,
|
|
81
81
|
_tag: OpCodes.OP_INTERRUPTED,
|
|
82
82
|
[Hash.symbol](): number {
|
|
@@ -92,7 +92,7 @@ export const interrupted: STMState<never, never> = {
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
/** @internal */
|
|
95
|
-
export const running: STMState<never
|
|
95
|
+
export const running: STMState<never> = {
|
|
96
96
|
[STMStateTypeId]: STMStateTypeId,
|
|
97
97
|
_tag: OpCodes.OP_RUNNING,
|
|
98
98
|
[Hash.symbol](): number {
|
|
@@ -108,7 +108,7 @@ export const running: STMState<never, never> = {
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
/** @internal */
|
|
111
|
-
export const fromTExit = <
|
|
111
|
+
export const fromTExit = <A, E>(tExit: TExit.TExit<A, E>): STMState<A, E> => {
|
|
112
112
|
switch (tExit._tag) {
|
|
113
113
|
case TExitOpCodes.OP_FAIL: {
|
|
114
114
|
return done(Exit.fail(tExit.error))
|
|
@@ -16,28 +16,28 @@ export const TExitTypeId = Symbol.for(TExitSymbolKey)
|
|
|
16
16
|
export type TExitTypeId = typeof TExitTypeId
|
|
17
17
|
|
|
18
18
|
/** @internal */
|
|
19
|
-
export type TExit<
|
|
19
|
+
export type TExit<A, E = never> = Fail<E> | Die | Interrupt | Succeed<A> | Retry
|
|
20
20
|
|
|
21
21
|
/** @internal */
|
|
22
22
|
export declare namespace TExit {
|
|
23
23
|
/** @internal */
|
|
24
|
-
export interface Variance<out
|
|
24
|
+
export interface Variance<out A, out E> {
|
|
25
25
|
readonly [TExitTypeId]: {
|
|
26
|
-
readonly _E: Types.Covariant<E>
|
|
27
26
|
readonly _A: Types.Covariant<A>
|
|
27
|
+
readonly _E: Types.Covariant<E>
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
const variance = {
|
|
33
33
|
/* c8 ignore next */
|
|
34
|
-
|
|
34
|
+
_A: (_: never) => _,
|
|
35
35
|
/* c8 ignore next */
|
|
36
|
-
|
|
36
|
+
_E: (_: never) => _
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
/** @internal */
|
|
40
|
-
export interface Fail<out E> extends TExit.Variance<
|
|
40
|
+
export interface Fail<out E> extends TExit.Variance<never, E>, Equal.Equal {
|
|
41
41
|
readonly _tag: OpCodes.OP_FAIL
|
|
42
42
|
readonly error: E
|
|
43
43
|
}
|
|
@@ -55,7 +55,7 @@ export interface Interrupt extends TExit.Variance<never, never>, Equal.Equal {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
/** @internal */
|
|
58
|
-
export interface Succeed<out A> extends TExit.Variance<
|
|
58
|
+
export interface Succeed<out A> extends TExit.Variance<A, never>, Equal.Equal {
|
|
59
59
|
readonly _tag: OpCodes.OP_SUCCEED
|
|
60
60
|
readonly value: A
|
|
61
61
|
}
|
|
@@ -69,32 +69,32 @@ export interface Retry extends TExit.Variance<never, never>, Equal.Equal {
|
|
|
69
69
|
export const isExit = (u: unknown): u is TExit<unknown, unknown> => hasProperty(u, TExitTypeId)
|
|
70
70
|
|
|
71
71
|
/** @internal */
|
|
72
|
-
export const isFail = <
|
|
72
|
+
export const isFail = <A, E>(self: TExit<A, E>): self is Fail<E> => {
|
|
73
73
|
return self._tag === OpCodes.OP_FAIL
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
/** @internal */
|
|
77
|
-
export const isDie = <
|
|
77
|
+
export const isDie = <A, E>(self: TExit<A, E>): self is Die => {
|
|
78
78
|
return self._tag === OpCodes.OP_DIE
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
/** @internal */
|
|
82
|
-
export const isInterrupt = <
|
|
82
|
+
export const isInterrupt = <A, E>(self: TExit<A, E>): self is Interrupt => {
|
|
83
83
|
return self._tag === OpCodes.OP_INTERRUPT
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
/** @internal */
|
|
87
|
-
export const isSuccess = <
|
|
87
|
+
export const isSuccess = <A, E>(self: TExit<A, E>): self is Succeed<A> => {
|
|
88
88
|
return self._tag === OpCodes.OP_SUCCEED
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
/** @internal */
|
|
92
|
-
export const isRetry = <
|
|
92
|
+
export const isRetry = <A, E>(self: TExit<A, E>): self is Retry => {
|
|
93
93
|
return self._tag === OpCodes.OP_RETRY
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
/** @internal */
|
|
97
|
-
export const fail = <E>(error: E): TExit<
|
|
97
|
+
export const fail = <E>(error: E): TExit<never, E> => ({
|
|
98
98
|
[TExitTypeId]: variance,
|
|
99
99
|
_tag: OpCodes.OP_FAIL,
|
|
100
100
|
error,
|
|
@@ -111,7 +111,7 @@ export const fail = <E>(error: E): TExit<E, never> => ({
|
|
|
111
111
|
})
|
|
112
112
|
|
|
113
113
|
/** @internal */
|
|
114
|
-
export const die = (defect: unknown): TExit<never
|
|
114
|
+
export const die = (defect: unknown): TExit<never> => ({
|
|
115
115
|
[TExitTypeId]: variance,
|
|
116
116
|
_tag: OpCodes.OP_DIE,
|
|
117
117
|
defect,
|
|
@@ -128,7 +128,7 @@ export const die = (defect: unknown): TExit<never, never> => ({
|
|
|
128
128
|
})
|
|
129
129
|
|
|
130
130
|
/** @internal */
|
|
131
|
-
export const interrupt = (fiberId: FiberId.FiberId): TExit<never
|
|
131
|
+
export const interrupt = (fiberId: FiberId.FiberId): TExit<never> => ({
|
|
132
132
|
[TExitTypeId]: variance,
|
|
133
133
|
_tag: OpCodes.OP_INTERRUPT,
|
|
134
134
|
fiberId,
|
|
@@ -145,7 +145,7 @@ export const interrupt = (fiberId: FiberId.FiberId): TExit<never, never> => ({
|
|
|
145
145
|
})
|
|
146
146
|
|
|
147
147
|
/** @internal */
|
|
148
|
-
export const succeed = <A>(value: A): TExit<
|
|
148
|
+
export const succeed = <A>(value: A): TExit<A> => ({
|
|
149
149
|
[TExitTypeId]: variance,
|
|
150
150
|
_tag: OpCodes.OP_SUCCEED,
|
|
151
151
|
value,
|
|
@@ -162,7 +162,7 @@ export const succeed = <A>(value: A): TExit<never, A> => ({
|
|
|
162
162
|
})
|
|
163
163
|
|
|
164
164
|
/** @internal */
|
|
165
|
-
export const retry: TExit<never
|
|
165
|
+
export const retry: TExit<never> = {
|
|
166
166
|
[TExitTypeId]: variance,
|
|
167
167
|
_tag: OpCodes.OP_RETRY,
|
|
168
168
|
[Hash.symbol](): number {
|
|
@@ -178,4 +178,4 @@ export const retry: TExit<never, never> = {
|
|
|
178
178
|
}
|
|
179
179
|
|
|
180
180
|
/** @internal */
|
|
181
|
-
export const unit = (): TExit<
|
|
181
|
+
export const unit = (): TExit<void> => succeed(undefined)
|