effect 2.2.5 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RateLimiter/package.json +6 -0
- package/dist/cjs/Cause.js +14 -1
- package/dist/cjs/Cause.js.map +1 -1
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/Clock.js.map +1 -1
- package/dist/cjs/Console.js.map +1 -1
- package/dist/cjs/Context.js +23 -25
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Data.js +3 -3
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/Deferred.js +1 -1
- package/dist/cjs/Deferred.js.map +1 -1
- package/dist/cjs/Effect.js +9 -9
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Effectable.js.map +1 -1
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/Exit.js +2 -2
- package/dist/cjs/Exit.js.map +1 -1
- package/dist/cjs/Fiber.js.map +1 -1
- package/dist/cjs/FiberMap.js +3 -3
- package/dist/cjs/FiberRef.js.map +1 -1
- package/dist/cjs/FiberRefs.js.map +1 -1
- package/dist/cjs/FiberSet.js +3 -3
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/GroupBy.js.map +1 -1
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/LogLevel.js.map +1 -1
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/Metric.js.map +1 -1
- package/dist/cjs/Number.js +20 -1
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/Option.js.map +1 -1
- package/dist/cjs/Pool.js.map +1 -1
- package/dist/cjs/PubSub.js.map +1 -1
- package/dist/cjs/Queue.js.map +1 -1
- package/dist/cjs/Random.js.map +1 -1
- package/dist/cjs/RateLimiter.js +38 -0
- package/dist/cjs/RateLimiter.js.map +1 -0
- package/dist/cjs/ReadonlyRecord.js +45 -9
- package/dist/cjs/ReadonlyRecord.js.map +1 -1
- package/dist/cjs/Ref.js.map +1 -1
- package/dist/cjs/Request.js.map +1 -1
- package/dist/cjs/RequestResolver.js.map +1 -1
- package/dist/cjs/Resource.js.map +1 -1
- package/dist/cjs/Runtime.js +1 -4
- package/dist/cjs/Runtime.js.map +1 -1
- package/dist/cjs/RuntimeFlags.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/Scope.js.map +1 -1
- package/dist/cjs/ScopedRef.js.map +1 -1
- package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/SubscriptionRef.js.map +1 -1
- package/dist/cjs/Supervisor.js.map +1 -1
- package/dist/cjs/SynchronizedRef.js.map +1 -1
- package/dist/cjs/TArray.js.map +1 -1
- package/dist/cjs/TDeferred.js.map +1 -1
- package/dist/cjs/TMap.js.map +1 -1
- package/dist/cjs/TPriorityQueue.js.map +1 -1
- package/dist/cjs/TPubSub.js.map +1 -1
- package/dist/cjs/TQueue.js.map +1 -1
- package/dist/cjs/TRandom.js.map +1 -1
- package/dist/cjs/TReentrantLock.js.map +1 -1
- package/dist/cjs/TRef.js.map +1 -1
- package/dist/cjs/TSemaphore.js.map +1 -1
- package/dist/cjs/TSet.js.map +1 -1
- package/dist/cjs/Take.js +6 -6
- package/dist/cjs/Take.js.map +1 -1
- package/dist/cjs/TestAnnotation.js +10 -13
- package/dist/cjs/TestAnnotation.js.map +1 -1
- package/dist/cjs/TestAnnotations.js +1 -1
- package/dist/cjs/TestAnnotations.js.map +1 -1
- package/dist/cjs/TestClock.js +1 -1
- package/dist/cjs/TestClock.js.map +1 -1
- package/dist/cjs/TestConfig.js +1 -1
- package/dist/cjs/TestConfig.js.map +1 -1
- package/dist/cjs/TestContext.js.map +1 -1
- package/dist/cjs/TestLive.js +1 -1
- package/dist/cjs/TestLive.js.map +1 -1
- package/dist/cjs/TestServices.js.map +1 -1
- package/dist/cjs/TestSized.js +1 -1
- package/dist/cjs/TestSized.js.map +1 -1
- package/dist/cjs/Utils.js +0 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/cache.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel/mergeDecision.js +2 -6
- package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
- package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/internal/channel.js +1 -1
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/clock.js +1 -1
- package/dist/cjs/internal/clock.js.map +1 -1
- package/dist/cjs/internal/configProvider.js +2 -4
- package/dist/cjs/internal/configProvider.js.map +1 -1
- package/dist/cjs/internal/console.js.map +1 -1
- package/dist/cjs/internal/context.js +31 -22
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +13 -27
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core-stream.js.map +1 -1
- package/dist/cjs/internal/core.js +61 -130
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/data.js.map +1 -1
- package/dist/cjs/internal/defaultServices/console.js +1 -1
- package/dist/cjs/internal/defaultServices/console.js.map +1 -1
- package/dist/cjs/internal/defaultServices.js.map +1 -1
- package/dist/cjs/internal/deferred.js.map +1 -1
- package/dist/cjs/internal/differ/contextPatch.js +9 -9
- package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +7 -10
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/effectable.js +4 -4
- package/dist/cjs/internal/effectable.js.map +1 -1
- package/dist/cjs/internal/fiber.js +2 -6
- package/dist/cjs/internal/fiber.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +10 -19
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/keyedPool.js.map +1 -1
- package/dist/cjs/internal/layer/circular.js.map +1 -1
- package/dist/cjs/internal/layer.js +3 -3
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/logSpan.js +3 -5
- package/dist/cjs/internal/logSpan.js.map +1 -1
- package/dist/cjs/internal/metric.js.map +1 -1
- package/dist/cjs/internal/pool.js.map +1 -1
- package/dist/cjs/internal/pubsub.js +2 -6
- package/dist/cjs/internal/pubsub.js.map +1 -1
- package/dist/cjs/internal/query.js.map +1 -1
- package/dist/cjs/internal/queue.js.map +1 -1
- package/dist/cjs/internal/random.js +1 -1
- package/dist/cjs/internal/random.js.map +1 -1
- package/dist/cjs/internal/rateLimiter.js +44 -0
- package/dist/cjs/internal/rateLimiter.js.map +1 -0
- package/dist/cjs/internal/ref.js.map +1 -1
- package/dist/cjs/internal/reloadable.js +1 -9
- package/dist/cjs/internal/reloadable.js.map +1 -1
- package/dist/cjs/internal/runtime.js +0 -1
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/scopedCache.js.map +1 -1
- package/dist/cjs/internal/scopedRef.js.map +1 -1
- package/dist/cjs/internal/sink.js +7 -7
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stm/core.js.map +1 -1
- package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tExit.js +2 -2
- package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
- package/dist/cjs/internal/stm/stm.js.map +1 -1
- package/dist/cjs/internal/stm/tArray.js.map +1 -1
- package/dist/cjs/internal/stm/tDeferred.js +4 -2
- package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
- package/dist/cjs/internal/stm/tMap.js.map +1 -1
- package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
- package/dist/cjs/internal/stm/tQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tRandom.js +1 -1
- package/dist/cjs/internal/stm/tRandom.js.map +1 -1
- package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
- package/dist/cjs/internal/stm/tRef.js.map +1 -1
- package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
- package/dist/cjs/internal/stm/tSet.js.map +1 -1
- package/dist/cjs/internal/stream/debounceState.js.map +1 -1
- package/dist/cjs/internal/stream/handoff.js.map +1 -1
- package/dist/cjs/internal/stream/handoffSignal.js.map +1 -1
- package/dist/cjs/internal/stream/pull.js.map +1 -1
- package/dist/cjs/internal/stream.js +0 -2
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/subscriptionRef.js.map +1 -1
- package/dist/cjs/internal/supervisor.js.map +1 -1
- package/dist/cjs/internal/take.js +2 -2
- package/dist/cjs/internal/take.js.map +1 -1
- package/dist/cjs/internal/testing/sleep.js.map +1 -1
- package/dist/cjs/internal/tracer.js +2 -2
- package/dist/cjs/internal/tracer.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Cache.d.ts +20 -20
- package/dist/dts/Cache.d.ts.map +1 -1
- package/dist/dts/Cause.d.ts +33 -5
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +197 -194
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Clock.d.ts +7 -7
- package/dist/dts/Clock.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +1 -1
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/ConfigProvider.d.ts +6 -6
- package/dist/dts/ConfigProvider.d.ts.map +1 -1
- package/dist/dts/Console.d.ts +43 -43
- package/dist/dts/Console.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +44 -29
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Data.d.ts +38 -57
- package/dist/dts/Data.d.ts.map +1 -1
- package/dist/dts/Deferred.d.ts +36 -36
- package/dist/dts/Deferred.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +732 -729
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Effectable.d.ts +8 -8
- package/dist/dts/Effectable.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +2 -3
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/Exit.d.ts +74 -74
- package/dist/dts/Exit.d.ts.map +1 -1
- package/dist/dts/Fiber.d.ts +75 -75
- package/dist/dts/Fiber.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts +22 -22
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberRef.d.ts +28 -28
- package/dist/dts/FiberRef.d.ts.map +1 -1
- package/dist/dts/FiberRefs.d.ts +1 -1
- package/dist/dts/FiberRefs.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts +16 -16
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/GroupBy.d.ts +6 -6
- package/dist/dts/GroupBy.d.ts.map +1 -1
- package/dist/dts/KeyedPool.d.ts +22 -22
- package/dist/dts/KeyedPool.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +126 -126
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/LogLevel.d.ts +2 -2
- package/dist/dts/LogLevel.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +14 -14
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/MergeDecision.d.ts +7 -7
- package/dist/dts/MergeState.d.ts +13 -13
- package/dist/dts/MergeState.d.ts.map +1 -1
- package/dist/dts/Metric.d.ts +32 -32
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/MetricPolling.d.ts +6 -6
- package/dist/dts/MetricPolling.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +15 -0
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +2 -3
- package/dist/dts/Option.d.ts.map +1 -1
- package/dist/dts/Pool.d.ts +15 -16
- package/dist/dts/Pool.d.ts.map +1 -1
- package/dist/dts/PubSub.d.ts +18 -18
- package/dist/dts/PubSub.d.ts.map +1 -1
- package/dist/dts/Queue.d.ts +40 -40
- package/dist/dts/Queue.d.ts.map +1 -1
- package/dist/dts/Random.d.ts +13 -13
- package/dist/dts/Random.d.ts.map +1 -1
- package/dist/dts/RateLimiter.d.ts +31 -0
- package/dist/dts/RateLimiter.d.ts.map +1 -0
- package/dist/dts/ReadonlyArray.d.ts +3 -3
- package/dist/dts/ReadonlyRecord.d.ts +37 -8
- package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
- package/dist/dts/Ref.d.ts +25 -25
- package/dist/dts/Ref.d.ts.map +1 -1
- package/dist/dts/Reloadable.d.ts +9 -9
- package/dist/dts/Reloadable.d.ts.map +1 -1
- package/dist/dts/Request.d.ts +27 -28
- package/dist/dts/Request.d.ts.map +1 -1
- package/dist/dts/RequestBlock.d.ts +3 -3
- package/dist/dts/RequestBlock.d.ts.map +1 -1
- package/dist/dts/RequestResolver.d.ts +16 -16
- package/dist/dts/RequestResolver.d.ts.map +1 -1
- package/dist/dts/Resource.d.ts +7 -7
- package/dist/dts/Resource.d.ts.map +1 -1
- package/dist/dts/Runtime.d.ts +13 -16
- package/dist/dts/Runtime.d.ts.map +1 -1
- package/dist/dts/RuntimeFlags.d.ts +10 -10
- package/dist/dts/RuntimeFlags.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +303 -303
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schedule.d.ts +19 -19
- package/dist/dts/Schedule.d.ts.map +1 -1
- package/dist/dts/Scope.d.ts +10 -10
- package/dist/dts/Scope.d.ts.map +1 -1
- package/dist/dts/ScopedCache.d.ts +14 -14
- package/dist/dts/ScopedCache.d.ts.map +1 -1
- package/dist/dts/ScopedRef.d.ts +5 -5
- package/dist/dts/ScopedRef.d.ts.map +1 -1
- package/dist/dts/SingleProducerAsyncInput.d.ts +8 -8
- package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +214 -205
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +595 -592
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/StreamEmit.d.ts +5 -5
- package/dist/dts/StreamEmit.d.ts.map +1 -1
- package/dist/dts/Streamable.d.ts +2 -2
- package/dist/dts/Streamable.d.ts.map +1 -1
- package/dist/dts/SubscriptionRef.d.ts +41 -41
- package/dist/dts/SubscriptionRef.d.ts.map +1 -1
- package/dist/dts/Supervisor.d.ts +17 -17
- package/dist/dts/Supervisor.d.ts.map +1 -1
- package/dist/dts/SynchronizedRef.d.ts +41 -41
- package/dist/dts/SynchronizedRef.d.ts.map +1 -1
- package/dist/dts/TArray.d.ts +72 -72
- package/dist/dts/TArray.d.ts.map +1 -1
- package/dist/dts/TDeferred.d.ts +12 -12
- package/dist/dts/TDeferred.d.ts.map +1 -1
- package/dist/dts/TMap.d.ts +67 -67
- package/dist/dts/TMap.d.ts.map +1 -1
- package/dist/dts/TPriorityQueue.d.ts +23 -23
- package/dist/dts/TPriorityQueue.d.ts.map +1 -1
- package/dist/dts/TPubSub.d.ts +15 -15
- package/dist/dts/TPubSub.d.ts.map +1 -1
- package/dist/dts/TQueue.d.ts +40 -40
- package/dist/dts/TQueue.d.ts.map +1 -1
- package/dist/dts/TRandom.d.ts +13 -13
- package/dist/dts/TRandom.d.ts.map +1 -1
- package/dist/dts/TReentrantLock.d.ts +21 -21
- package/dist/dts/TReentrantLock.d.ts.map +1 -1
- package/dist/dts/TRef.d.ts +25 -25
- package/dist/dts/TRef.d.ts.map +1 -1
- package/dist/dts/TSemaphore.d.ts +15 -15
- package/dist/dts/TSemaphore.d.ts.map +1 -1
- package/dist/dts/TSet.d.ts +49 -49
- package/dist/dts/TSet.d.ts.map +1 -1
- package/dist/dts/Take.d.ts +41 -41
- package/dist/dts/Take.d.ts.map +1 -1
- package/dist/dts/TestAnnotation.d.ts +1 -3
- package/dist/dts/TestAnnotation.d.ts.map +1 -1
- package/dist/dts/TestAnnotations.d.ts +3 -3
- package/dist/dts/TestAnnotations.d.ts.map +1 -1
- package/dist/dts/TestClock.d.ts +18 -18
- package/dist/dts/TestClock.d.ts.map +1 -1
- package/dist/dts/TestConfig.d.ts.map +1 -1
- package/dist/dts/TestContext.d.ts +2 -2
- package/dist/dts/TestContext.d.ts.map +1 -1
- package/dist/dts/TestLive.d.ts +1 -1
- package/dist/dts/TestLive.d.ts.map +1 -1
- package/dist/dts/TestServices.d.ts +31 -31
- package/dist/dts/TestServices.d.ts.map +1 -1
- package/dist/dts/TestSized.d.ts +2 -2
- package/dist/dts/TestSized.d.ts.map +1 -1
- package/dist/dts/Tracer.d.ts +1 -1
- package/dist/dts/Utils.d.ts.map +1 -1
- package/dist/dts/index.d.ts +12 -2
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/channel/channelExecutor.d.ts +1 -1
- package/dist/dts/internal/channel/channelExecutor.d.ts.map +1 -1
- package/dist/dts/internal/core-stream.d.ts +1 -1
- package/dist/dts/internal/core-stream.d.ts.map +1 -1
- package/dist/dts/internal/rateLimiter.d.ts +2 -0
- package/dist/dts/internal/rateLimiter.d.ts.map +1 -0
- package/dist/dts/internal/stm/stm.d.ts +6 -6
- package/dist/dts/internal/stm/stm.d.ts.map +1 -1
- package/dist/dts/internal/version.d.ts +1 -1
- package/dist/esm/Cause.js +13 -0
- package/dist/esm/Cause.js.map +1 -1
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Clock.js.map +1 -1
- package/dist/esm/Console.js.map +1 -1
- package/dist/esm/Context.js +22 -24
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Data.js +4 -5
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/Deferred.js +1 -1
- package/dist/esm/Deferred.js.map +1 -1
- package/dist/esm/Effect.js +9 -9
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Effectable.js.map +1 -1
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/Exit.js +2 -2
- package/dist/esm/Exit.js.map +1 -1
- package/dist/esm/Fiber.js.map +1 -1
- package/dist/esm/FiberMap.js +3 -3
- package/dist/esm/FiberRef.js.map +1 -1
- package/dist/esm/FiberRefs.js.map +1 -1
- package/dist/esm/FiberSet.js +3 -3
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/GroupBy.js.map +1 -1
- package/dist/esm/Layer.js.map +1 -1
- package/dist/esm/LogLevel.js.map +1 -1
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/Metric.js.map +1 -1
- package/dist/esm/Number.js +18 -0
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/Option.js.map +1 -1
- package/dist/esm/Pool.js.map +1 -1
- package/dist/esm/PubSub.js.map +1 -1
- package/dist/esm/Queue.js.map +1 -1
- package/dist/esm/Random.js.map +1 -1
- package/dist/esm/RateLimiter.js +7 -0
- package/dist/esm/RateLimiter.js.map +1 -0
- package/dist/esm/ReadonlyRecord.js +44 -8
- package/dist/esm/ReadonlyRecord.js.map +1 -1
- package/dist/esm/Ref.js.map +1 -1
- package/dist/esm/Request.js.map +1 -1
- package/dist/esm/RequestResolver.js.map +1 -1
- package/dist/esm/Resource.js.map +1 -1
- package/dist/esm/Runtime.js +1 -4
- package/dist/esm/Runtime.js.map +1 -1
- package/dist/esm/RuntimeFlags.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schedule.js.map +1 -1
- package/dist/esm/Scope.js.map +1 -1
- package/dist/esm/ScopedRef.js.map +1 -1
- package/dist/esm/SingleProducerAsyncInput.js.map +1 -1
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/SubscriptionRef.js.map +1 -1
- package/dist/esm/Supervisor.js.map +1 -1
- package/dist/esm/SynchronizedRef.js.map +1 -1
- package/dist/esm/TArray.js.map +1 -1
- package/dist/esm/TDeferred.js.map +1 -1
- package/dist/esm/TMap.js.map +1 -1
- package/dist/esm/TPriorityQueue.js.map +1 -1
- package/dist/esm/TPubSub.js.map +1 -1
- package/dist/esm/TQueue.js.map +1 -1
- package/dist/esm/TRandom.js.map +1 -1
- package/dist/esm/TReentrantLock.js.map +1 -1
- package/dist/esm/TRef.js.map +1 -1
- package/dist/esm/TSemaphore.js.map +1 -1
- package/dist/esm/TSet.js.map +1 -1
- package/dist/esm/Take.js +6 -6
- package/dist/esm/Take.js.map +1 -1
- package/dist/esm/TestAnnotation.js +10 -13
- package/dist/esm/TestAnnotation.js.map +1 -1
- package/dist/esm/TestAnnotations.js +1 -1
- package/dist/esm/TestAnnotations.js.map +1 -1
- package/dist/esm/TestClock.js +1 -1
- package/dist/esm/TestClock.js.map +1 -1
- package/dist/esm/TestConfig.js +1 -1
- package/dist/esm/TestConfig.js.map +1 -1
- package/dist/esm/TestContext.js.map +1 -1
- package/dist/esm/TestLive.js +1 -1
- package/dist/esm/TestLive.js.map +1 -1
- package/dist/esm/TestServices.js.map +1 -1
- package/dist/esm/TestSized.js +1 -1
- package/dist/esm/TestSized.js.map +1 -1
- package/dist/esm/Utils.js +1 -1
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/index.js +12 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/cache.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel/mergeDecision.js +2 -6
- package/dist/esm/internal/channel/mergeDecision.js.map +1 -1
- package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/esm/internal/channel.js +1 -1
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/clock.js +1 -1
- package/dist/esm/internal/clock.js.map +1 -1
- package/dist/esm/internal/configProvider.js +2 -4
- package/dist/esm/internal/configProvider.js.map +1 -1
- package/dist/esm/internal/console.js.map +1 -1
- package/dist/esm/internal/context.js +28 -20
- package/dist/esm/internal/context.js.map +1 -1
- package/dist/esm/internal/core-effect.js +12 -26
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core-stream.js.map +1 -1
- package/dist/esm/internal/core.js +57 -127
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/data.js.map +1 -1
- package/dist/esm/internal/defaultServices/console.js +1 -1
- package/dist/esm/internal/defaultServices/console.js.map +1 -1
- package/dist/esm/internal/defaultServices.js.map +1 -1
- package/dist/esm/internal/deferred.js.map +1 -1
- package/dist/esm/internal/differ/contextPatch.js +9 -9
- package/dist/esm/internal/differ/contextPatch.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +5 -8
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/effectable.js +4 -4
- package/dist/esm/internal/effectable.js.map +1 -1
- package/dist/esm/internal/fiber.js +2 -6
- package/dist/esm/internal/fiber.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +10 -19
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/keyedPool.js.map +1 -1
- package/dist/esm/internal/layer/circular.js.map +1 -1
- package/dist/esm/internal/layer.js +3 -3
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/logSpan.js +3 -5
- package/dist/esm/internal/logSpan.js.map +1 -1
- package/dist/esm/internal/metric.js.map +1 -1
- package/dist/esm/internal/pool.js.map +1 -1
- package/dist/esm/internal/pubsub.js +1 -5
- package/dist/esm/internal/pubsub.js.map +1 -1
- package/dist/esm/internal/query.js.map +1 -1
- package/dist/esm/internal/queue.js.map +1 -1
- package/dist/esm/internal/random.js +1 -1
- package/dist/esm/internal/random.js.map +1 -1
- package/dist/esm/internal/rateLimiter.js +12 -0
- package/dist/esm/internal/rateLimiter.js.map +1 -0
- package/dist/esm/internal/ref.js.map +1 -1
- package/dist/esm/internal/reloadable.js +1 -9
- package/dist/esm/internal/reloadable.js.map +1 -1
- package/dist/esm/internal/runtime.js +0 -1
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/scopedCache.js.map +1 -1
- package/dist/esm/internal/scopedRef.js.map +1 -1
- package/dist/esm/internal/sink.js +7 -7
- package/dist/esm/internal/sink.js.map +1 -1
- package/dist/esm/internal/stm/core.js.map +1 -1
- package/dist/esm/internal/stm/stm/stmState.js.map +1 -1
- package/dist/esm/internal/stm/stm/tExit.js +2 -2
- package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
- package/dist/esm/internal/stm/stm/tryCommit.js.map +1 -1
- package/dist/esm/internal/stm/stm.js.map +1 -1
- package/dist/esm/internal/stm/tArray.js.map +1 -1
- package/dist/esm/internal/stm/tDeferred.js +4 -2
- package/dist/esm/internal/stm/tDeferred.js.map +1 -1
- package/dist/esm/internal/stm/tMap.js.map +1 -1
- package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/esm/internal/stm/tPubSub.js.map +1 -1
- package/dist/esm/internal/stm/tQueue.js.map +1 -1
- package/dist/esm/internal/stm/tRandom.js +1 -1
- package/dist/esm/internal/stm/tRandom.js.map +1 -1
- package/dist/esm/internal/stm/tReentrantLock.js.map +1 -1
- package/dist/esm/internal/stm/tRef.js.map +1 -1
- package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
- package/dist/esm/internal/stm/tSet.js.map +1 -1
- package/dist/esm/internal/stream/debounceState.js.map +1 -1
- package/dist/esm/internal/stream/handoff.js.map +1 -1
- package/dist/esm/internal/stream/handoffSignal.js.map +1 -1
- package/dist/esm/internal/stream/pull.js.map +1 -1
- package/dist/esm/internal/stream.js +0 -2
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/subscriptionRef.js.map +1 -1
- package/dist/esm/internal/supervisor.js.map +1 -1
- package/dist/esm/internal/take.js +2 -2
- package/dist/esm/internal/take.js.map +1 -1
- package/dist/esm/internal/testing/sleep.js.map +1 -1
- package/dist/esm/internal/tracer.js +2 -2
- package/dist/esm/internal/tracer.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +9 -1
- package/src/Cache.ts +20 -20
- package/src/Cause.ts +37 -13
- package/src/Channel.ts +802 -794
- package/src/Clock.ts +7 -7
- package/src/Config.ts +1 -1
- package/src/ConfigProvider.ts +6 -6
- package/src/Console.ts +44 -48
- package/src/Context.ts +52 -30
- package/src/Data.ts +38 -61
- package/src/Deferred.ts +39 -41
- package/src/Effect.ts +1187 -1206
- package/src/Effectable.ts +8 -8
- package/src/Either.ts +2 -3
- package/src/Exit.ts +88 -105
- package/src/Fiber.ts +77 -83
- package/src/FiberMap.ts +77 -77
- package/src/FiberRef.ts +28 -28
- package/src/FiberRefs.ts +1 -1
- package/src/FiberSet.ts +61 -62
- package/src/GroupBy.ts +8 -12
- package/src/KeyedPool.ts +22 -22
- package/src/Layer.ts +187 -181
- package/src/LogLevel.ts +7 -6
- package/src/Logger.ts +18 -18
- package/src/MergeDecision.ts +7 -7
- package/src/MergeState.ts +16 -16
- package/src/Metric.ts +39 -39
- package/src/MetricPolling.ts +6 -6
- package/src/Number.ts +19 -0
- package/src/Option.ts +2 -3
- package/src/Pool.ts +15 -16
- package/src/PubSub.ts +18 -18
- package/src/Queue.ts +43 -46
- package/src/Random.ts +13 -15
- package/src/RateLimiter.ts +37 -0
- package/src/ReadonlyRecord.ts +49 -8
- package/src/Ref.ts +25 -25
- package/src/Reloadable.ts +10 -10
- package/src/Request.ts +31 -31
- package/src/RequestBlock.ts +3 -3
- package/src/RequestResolver.ts +21 -21
- package/src/Resource.ts +13 -13
- package/src/Runtime.ts +16 -19
- package/src/RuntimeFlags.ts +10 -10
- package/src/STM.ts +361 -362
- package/src/Schedule.ts +19 -19
- package/src/Scheduler.ts +2 -2
- package/src/Scope.ts +14 -15
- package/src/ScopedCache.ts +14 -14
- package/src/ScopedRef.ts +7 -7
- package/src/SingleProducerAsyncInput.ts +8 -9
- package/src/Sink.ts +357 -381
- package/src/Stream.ts +935 -1033
- package/src/StreamEmit.ts +5 -5
- package/src/Streamable.ts +2 -2
- package/src/SubscriptionRef.ts +51 -51
- package/src/Supervisor.ts +26 -26
- package/src/SynchronizedRef.ts +44 -44
- package/src/TArray.ts +74 -74
- package/src/TDeferred.ts +14 -14
- package/src/TMap.ts +72 -72
- package/src/TPriorityQueue.ts +23 -24
- package/src/TPubSub.ts +15 -15
- package/src/TQueue.ts +40 -40
- package/src/TRandom.ts +13 -13
- package/src/TReentrantLock.ts +21 -21
- package/src/TRef.ts +25 -25
- package/src/TSemaphore.ts +15 -15
- package/src/TSet.ts +49 -49
- package/src/Take.ts +51 -51
- package/src/TestAnnotation.ts +6 -17
- package/src/TestAnnotations.ts +7 -9
- package/src/TestClock.ts +39 -45
- package/src/TestConfig.ts +1 -3
- package/src/TestContext.ts +3 -3
- package/src/TestLive.ts +3 -5
- package/src/TestServices.ts +45 -47
- package/src/TestSized.ts +5 -5
- package/src/Tracer.ts +1 -1
- package/src/Utils.ts +8 -10
- package/src/index.ts +13 -2
- package/src/internal/blockedRequests.ts +2 -2
- package/src/internal/cache.ts +38 -38
- package/src/internal/channel/channelExecutor.ts +65 -73
- package/src/internal/channel/channelState.ts +11 -11
- package/src/internal/channel/continuation.ts +10 -10
- package/src/internal/channel/mergeDecision.ts +14 -16
- package/src/internal/channel/mergeState.ts +12 -12
- package/src/internal/channel/singleProducerAsyncInput.ts +15 -17
- package/src/internal/channel/subexecutor.ts +7 -7
- package/src/internal/channel.ts +901 -980
- package/src/internal/clock.ts +6 -6
- package/src/internal/concurrency.ts +9 -9
- package/src/internal/configProvider.ts +29 -36
- package/src/internal/console.ts +12 -12
- package/src/internal/context.ts +32 -23
- package/src/internal/core-effect.ts +655 -616
- package/src/internal/core-stream.ts +317 -325
- package/src/internal/core.ts +856 -790
- package/src/internal/data.ts +2 -3
- package/src/internal/dataSource.ts +14 -14
- package/src/internal/defaultServices/console.ts +3 -1
- package/src/internal/defaultServices.ts +21 -21
- package/src/internal/deferred.ts +9 -9
- package/src/internal/differ/contextPatch.ts +17 -17
- package/src/internal/effect/circular.ts +154 -159
- package/src/internal/effectable.ts +7 -7
- package/src/internal/fiber.ts +55 -59
- package/src/internal/fiberRefs.ts +1 -1
- package/src/internal/fiberRuntime.ts +426 -463
- package/src/internal/groupBy.ts +59 -62
- package/src/internal/keyedPool.ts +37 -37
- package/src/internal/layer/circular.ts +37 -37
- package/src/internal/layer.ts +235 -240
- package/src/internal/logSpan.ts +3 -5
- package/src/internal/metric/polling.ts +5 -5
- package/src/internal/metric.ts +54 -55
- package/src/internal/pool.ts +72 -72
- package/src/internal/pubsub.ts +75 -84
- package/src/internal/query.ts +25 -27
- package/src/internal/queue.ts +65 -70
- package/src/internal/random.ts +9 -9
- package/src/internal/rateLimiter.ts +30 -0
- package/src/internal/ref.ts +24 -24
- package/src/internal/reloadable.ts +11 -31
- package/src/internal/request.ts +14 -14
- package/src/internal/resource.ts +8 -8
- package/src/internal/runtime.ts +21 -22
- package/src/internal/schedule.ts +131 -134
- package/src/internal/scopedCache.ts +35 -32
- package/src/internal/scopedRef.ts +14 -14
- package/src/internal/sink.ts +507 -565
- package/src/internal/stm/core.ts +101 -102
- package/src/internal/stm/stm/stmState.ts +10 -10
- package/src/internal/stm/stm/tExit.ts +18 -18
- package/src/internal/stm/stm/tryCommit.ts +5 -5
- package/src/internal/stm/stm.ts +363 -374
- package/src/internal/stm/tArray.ts +92 -92
- package/src/internal/stm/tDeferred.ts +16 -14
- package/src/internal/stm/tMap.ts +83 -84
- package/src/internal/stm/tPriorityQueue.ts +24 -25
- package/src/internal/stm/tPubSub.ts +37 -38
- package/src/internal/stm/tQueue.ts +44 -48
- package/src/internal/stm/tRandom.ts +18 -18
- package/src/internal/stm/tReentrantLock.ts +28 -28
- package/src/internal/stm/tRef.ts +25 -25
- package/src/internal/stm/tSemaphore.ts +16 -16
- package/src/internal/stm/tSet.ts +51 -52
- package/src/internal/stream/debounceState.ts +7 -7
- package/src/internal/stream/emit.ts +4 -4
- package/src/internal/stream/handoff.ts +19 -19
- package/src/internal/stream/handoffSignal.ts +4 -4
- package/src/internal/stream/pull.ts +10 -11
- package/src/internal/stream.ts +1770 -1788
- package/src/internal/subscriptionRef.ts +17 -17
- package/src/internal/supervisor.ts +49 -56
- package/src/internal/synchronizedRef.ts +27 -27
- package/src/internal/take.ts +61 -61
- package/src/internal/testing/sleep.ts +2 -2
- package/src/internal/testing/suspendedWarningData.ts +2 -2
- package/src/internal/testing/warningData.ts +2 -2
- package/src/internal/tracer.ts +2 -6
- package/src/internal/version.ts +1 -1
package/src/internal/stm/stm.ts
CHANGED
|
@@ -22,23 +22,23 @@ import * as STMState from "./stm/stmState.js"
|
|
|
22
22
|
/** @internal */
|
|
23
23
|
export const acquireUseRelease = dual<
|
|
24
24
|
<A, R2, E2, A2, R3, E3, A3>(
|
|
25
|
-
use: (resource: A) => STM.STM<
|
|
26
|
-
release: (resource: A) => STM.STM<
|
|
25
|
+
use: (resource: A) => STM.STM<A2, E2, R2>,
|
|
26
|
+
release: (resource: A) => STM.STM<A3, E3, R3>
|
|
27
27
|
) => <R, E>(
|
|
28
|
-
acquire: STM.STM<
|
|
29
|
-
) => Effect.Effect<
|
|
28
|
+
acquire: STM.STM<A, E, R>
|
|
29
|
+
) => Effect.Effect<A2, E | E2 | E3, R | R2 | R3>,
|
|
30
30
|
<R, E, A, R2, E2, A2, R3, E3, A3>(
|
|
31
|
-
acquire: STM.STM<
|
|
32
|
-
use: (resource: A) => STM.STM<
|
|
33
|
-
release: (resource: A) => STM.STM<
|
|
34
|
-
) => Effect.Effect<
|
|
31
|
+
acquire: STM.STM<A, E, R>,
|
|
32
|
+
use: (resource: A) => STM.STM<A2, E2, R2>,
|
|
33
|
+
release: (resource: A) => STM.STM<A3, E3, R3>
|
|
34
|
+
) => Effect.Effect<A2, E | E2 | E3, R | R2 | R3>
|
|
35
35
|
>(3, <R, E, A, R2, E2, A2, R3, E3, A3>(
|
|
36
|
-
acquire: STM.STM<
|
|
37
|
-
use: (resource: A) => STM.STM<
|
|
38
|
-
release: (resource: A) => STM.STM<
|
|
39
|
-
): Effect.Effect<
|
|
36
|
+
acquire: STM.STM<A, E, R>,
|
|
37
|
+
use: (resource: A) => STM.STM<A2, E2, R2>,
|
|
38
|
+
release: (resource: A) => STM.STM<A3, E3, R3>
|
|
39
|
+
): Effect.Effect<A2, E | E2 | E3, R | R2 | R3> =>
|
|
40
40
|
Effect.uninterruptibleMask((restore) => {
|
|
41
|
-
let state: STMState.STMState<
|
|
41
|
+
let state: STMState.STMState<A, E> = STMState.running
|
|
42
42
|
return pipe(
|
|
43
43
|
restore(
|
|
44
44
|
core.unsafeAtomically(
|
|
@@ -85,23 +85,23 @@ export const acquireUseRelease = dual<
|
|
|
85
85
|
|
|
86
86
|
/** @internal */
|
|
87
87
|
export const as = dual<
|
|
88
|
-
<A2>(value: A2) => <
|
|
89
|
-
<R, E, A, A2>(self: STM.STM<
|
|
88
|
+
<A2>(value: A2) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<A2, E, R>,
|
|
89
|
+
<R, E, A, A2>(self: STM.STM<A, E, R>, value: A2) => STM.STM<A2, E, R>
|
|
90
90
|
>(2, (self, value) => pipe(self, core.map(() => value)))
|
|
91
91
|
|
|
92
92
|
/** @internal */
|
|
93
|
-
export const asSome = <
|
|
93
|
+
export const asSome = <A, E, R>(self: STM.STM<A, E, R>): STM.STM<Option.Option<A>, E, R> =>
|
|
94
94
|
pipe(self, core.map(Option.some))
|
|
95
95
|
|
|
96
96
|
/** @internal */
|
|
97
|
-
export const asSomeError = <
|
|
97
|
+
export const asSomeError = <A, E, R>(self: STM.STM<A, E, R>): STM.STM<A, Option.Option<E>, R> =>
|
|
98
98
|
pipe(self, mapError(Option.some))
|
|
99
99
|
|
|
100
100
|
/** @internal */
|
|
101
|
-
export const asUnit = <
|
|
101
|
+
export const asUnit = <A, E, R>(self: STM.STM<A, E, R>): STM.STM<void, E, R> => pipe(self, core.map(constVoid))
|
|
102
102
|
|
|
103
103
|
/** @internal */
|
|
104
|
-
export const attempt = <A>(evaluate: LazyArg<A>): STM.STM<
|
|
104
|
+
export const attempt = <A>(evaluate: LazyArg<A>): STM.STM<A, unknown> =>
|
|
105
105
|
suspend(() => {
|
|
106
106
|
try {
|
|
107
107
|
return core.succeed(evaluate())
|
|
@@ -113,25 +113,17 @@ export const attempt = <A>(evaluate: LazyArg<A>): STM.STM<never, unknown, A> =>
|
|
|
113
113
|
export const bind = dual<
|
|
114
114
|
<N extends string, K, R2, E2, A>(
|
|
115
115
|
tag: Exclude<N, keyof K>,
|
|
116
|
-
f: (_: K) => STM.STM<
|
|
117
|
-
) => <R, E>(self: STM.STM<
|
|
118
|
-
R | R2,
|
|
119
|
-
E | E2,
|
|
120
|
-
Effect.MergeRecord<K, { [k in N]: A }>
|
|
121
|
-
>,
|
|
116
|
+
f: (_: K) => STM.STM<A, E2, R2>
|
|
117
|
+
) => <R, E>(self: STM.STM<K, E, R>) => STM.STM<Effect.MergeRecord<K, { [k in N]: A }>, E | E2, R | R2>,
|
|
122
118
|
<R, E, N extends string, K, R2, E2, A>(
|
|
123
|
-
self: STM.STM<
|
|
119
|
+
self: STM.STM<K, E, R>,
|
|
124
120
|
tag: Exclude<N, keyof K>,
|
|
125
|
-
f: (_: K) => STM.STM<
|
|
126
|
-
) => STM.STM<
|
|
127
|
-
R | R2,
|
|
128
|
-
E | E2,
|
|
129
|
-
Effect.MergeRecord<K, { [k in N]: A }>
|
|
130
|
-
>
|
|
121
|
+
f: (_: K) => STM.STM<A, E2, R2>
|
|
122
|
+
) => STM.STM<Effect.MergeRecord<K, { [k in N]: A }>, E | E2, R | R2>
|
|
131
123
|
>(3, <R, E, N extends string, K, R2, E2, A>(
|
|
132
|
-
self: STM.STM<
|
|
124
|
+
self: STM.STM<K, E, R>,
|
|
133
125
|
tag: Exclude<N, keyof K>,
|
|
134
|
-
f: (_: K) => STM.STM<
|
|
126
|
+
f: (_: K) => STM.STM<A, E2, R2>
|
|
135
127
|
) =>
|
|
136
128
|
core.flatMap(self, (k) =>
|
|
137
129
|
core.map(
|
|
@@ -141,22 +133,22 @@ export const bind = dual<
|
|
|
141
133
|
|
|
142
134
|
/* @internal */
|
|
143
135
|
export const bindTo = dual<
|
|
144
|
-
<N extends string>(tag: N) => <
|
|
145
|
-
|
|
136
|
+
<N extends string>(tag: N) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<
|
|
137
|
+
Record<N, A>,
|
|
146
138
|
E,
|
|
147
|
-
|
|
139
|
+
R
|
|
148
140
|
>,
|
|
149
141
|
<R, E, A, N extends string>(
|
|
150
|
-
self: STM.STM<
|
|
142
|
+
self: STM.STM<A, E, R>,
|
|
151
143
|
tag: N
|
|
152
144
|
) => STM.STM<
|
|
153
|
-
|
|
145
|
+
Record<N, A>,
|
|
154
146
|
E,
|
|
155
|
-
|
|
147
|
+
R
|
|
156
148
|
>
|
|
157
149
|
>(
|
|
158
150
|
2,
|
|
159
|
-
<R, E, A, N extends string>(self: STM.STM<
|
|
151
|
+
<R, E, A, N extends string>(self: STM.STM<A, E, R>, tag: N): STM.STM<Record<N, A>, E, R> =>
|
|
160
152
|
core.map(self, (a) => ({ [tag]: a } as Record<N, A>))
|
|
161
153
|
)
|
|
162
154
|
|
|
@@ -165,21 +157,21 @@ export const let_ = dual<
|
|
|
165
157
|
<N extends string, K, A>(
|
|
166
158
|
tag: Exclude<N, keyof K>,
|
|
167
159
|
f: (_: K) => A
|
|
168
|
-
) => <R, E>(self: STM.STM<
|
|
169
|
-
|
|
160
|
+
) => <R, E>(self: STM.STM<K, E, R>) => STM.STM<
|
|
161
|
+
Effect.MergeRecord<K, { [k in N]: A }>,
|
|
170
162
|
E,
|
|
171
|
-
|
|
163
|
+
R
|
|
172
164
|
>,
|
|
173
165
|
<R, E, K, N extends string, A>(
|
|
174
|
-
self: STM.STM<
|
|
166
|
+
self: STM.STM<K, E, R>,
|
|
175
167
|
tag: Exclude<N, keyof K>,
|
|
176
168
|
f: (_: K) => A
|
|
177
169
|
) => STM.STM<
|
|
178
|
-
|
|
170
|
+
Effect.MergeRecord<K, { [k in N]: A }>,
|
|
179
171
|
E,
|
|
180
|
-
|
|
172
|
+
R
|
|
181
173
|
>
|
|
182
|
-
>(3, <R, E, K, N extends string, A>(self: STM.STM<
|
|
174
|
+
>(3, <R, E, K, N extends string, A>(self: STM.STM<K, E, R>, tag: Exclude<N, keyof K>, f: (_: K) => A) =>
|
|
183
175
|
core.map(
|
|
184
176
|
self,
|
|
185
177
|
(k): Effect.MergeRecord<K, { [k in N]: A }> => ({ ...k, [tag]: f(k) } as any)
|
|
@@ -188,33 +180,33 @@ export const let_ = dual<
|
|
|
188
180
|
/** @internal */
|
|
189
181
|
export const catchSome = dual<
|
|
190
182
|
<E, R2, E2, A2>(
|
|
191
|
-
pf: (error: E) => Option.Option<STM.STM<
|
|
183
|
+
pf: (error: E) => Option.Option<STM.STM<A2, E2, R2>>
|
|
192
184
|
) => <R, A>(
|
|
193
|
-
self: STM.STM<
|
|
194
|
-
) => STM.STM<
|
|
185
|
+
self: STM.STM<A, E, R>
|
|
186
|
+
) => STM.STM<A2 | A, E | E2, R2 | R>,
|
|
195
187
|
<R, A, E, R2, E2, A2>(
|
|
196
|
-
self: STM.STM<
|
|
197
|
-
pf: (error: E) => Option.Option<STM.STM<
|
|
198
|
-
) => STM.STM<
|
|
188
|
+
self: STM.STM<A, E, R>,
|
|
189
|
+
pf: (error: E) => Option.Option<STM.STM<A2, E2, R2>>
|
|
190
|
+
) => STM.STM<A2 | A, E | E2, R2 | R>
|
|
199
191
|
>(2, <R, A, E, R2, E2, A2>(
|
|
200
|
-
self: STM.STM<
|
|
201
|
-
pf: (error: E) => Option.Option<STM.STM<
|
|
202
|
-
): STM.STM<
|
|
192
|
+
self: STM.STM<A, E, R>,
|
|
193
|
+
pf: (error: E) => Option.Option<STM.STM<A2, E2, R2>>
|
|
194
|
+
): STM.STM<A2 | A, E | E2, R2 | R> =>
|
|
203
195
|
core.catchAll(
|
|
204
196
|
self,
|
|
205
|
-
(e): STM.STM<
|
|
197
|
+
(e): STM.STM<A | A2, E | E2, R | R2> => Option.getOrElse(pf(e), () => core.fail(e))
|
|
206
198
|
))
|
|
207
199
|
|
|
208
200
|
export const catchTag = dual<
|
|
209
201
|
<K extends E["_tag"] & string, E extends { _tag: string }, R1, E1, A1>(
|
|
210
202
|
k: K,
|
|
211
|
-
f: (e: Extract<E, { _tag: K }>) => STM.STM<
|
|
212
|
-
) => <R, A>(self: STM.STM<
|
|
203
|
+
f: (e: Extract<E, { _tag: K }>) => STM.STM<A1, E1, R1>
|
|
204
|
+
) => <R, A>(self: STM.STM<A, E, R>) => STM.STM<A | A1, Exclude<E, { _tag: K }> | E1, R | R1>,
|
|
213
205
|
<R, E extends { _tag: string }, A, K extends E["_tag"] & string, R1, E1, A1>(
|
|
214
|
-
self: STM.STM<
|
|
206
|
+
self: STM.STM<A, E, R>,
|
|
215
207
|
k: K,
|
|
216
|
-
f: (e: Extract<E, { _tag: K }>) => STM.STM<
|
|
217
|
-
) => STM.STM<
|
|
208
|
+
f: (e: Extract<E, { _tag: K }>) => STM.STM<A1, E1, R1>
|
|
209
|
+
) => STM.STM<A | A1, Exclude<E, { _tag: K }> | E1, R | R1>
|
|
218
210
|
>(3, (self, k, f) =>
|
|
219
211
|
core.catchAll(self, (e) => {
|
|
220
212
|
if ("_tag" in e && e["_tag"] === k) {
|
|
@@ -232,18 +224,18 @@ export const catchTags: {
|
|
|
232
224
|
}
|
|
233
225
|
>(
|
|
234
226
|
cases: Cases
|
|
235
|
-
): <R, A>(self: STM.STM<
|
|
236
|
-
|
|
|
227
|
+
): <R, A>(self: STM.STM<A, E, R>) => STM.STM<
|
|
228
|
+
| A
|
|
237
229
|
| {
|
|
238
|
-
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => STM.STM<infer
|
|
230
|
+
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => STM.STM<infer A, any, any>) ? A : never
|
|
239
231
|
}[keyof Cases],
|
|
240
232
|
| Exclude<E, { _tag: keyof Cases }>
|
|
241
233
|
| {
|
|
242
234
|
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => STM.STM<any, infer E, any>) ? E : never
|
|
243
235
|
}[keyof Cases],
|
|
244
|
-
|
|
|
236
|
+
| R
|
|
245
237
|
| {
|
|
246
|
-
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => STM.STM<any, any, infer
|
|
238
|
+
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => STM.STM<any, any, infer R>) ? R : never
|
|
247
239
|
}[keyof Cases]
|
|
248
240
|
>
|
|
249
241
|
<
|
|
@@ -254,20 +246,20 @@ export const catchTags: {
|
|
|
254
246
|
[K in E["_tag"]]+?: (error: Extract<E, { _tag: K }>) => STM.STM<any, any, any>
|
|
255
247
|
}
|
|
256
248
|
>(
|
|
257
|
-
self: STM.STM<
|
|
249
|
+
self: STM.STM<A, E, R>,
|
|
258
250
|
cases: Cases
|
|
259
251
|
): STM.STM<
|
|
260
|
-
|
|
|
252
|
+
| A
|
|
261
253
|
| {
|
|
262
|
-
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => STM.STM<infer
|
|
254
|
+
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => STM.STM<infer A, any, any>) ? A : never
|
|
263
255
|
}[keyof Cases],
|
|
264
256
|
| Exclude<E, { _tag: keyof Cases }>
|
|
265
257
|
| {
|
|
266
258
|
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => STM.STM<any, infer E, any>) ? E : never
|
|
267
259
|
}[keyof Cases],
|
|
268
|
-
|
|
|
260
|
+
| R
|
|
269
261
|
| {
|
|
270
|
-
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => STM.STM<any, any, infer
|
|
262
|
+
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => STM.STM<any, any, infer R>) ? R : never
|
|
271
263
|
}[keyof Cases]
|
|
272
264
|
>
|
|
273
265
|
} = dual(2, (self, cases) =>
|
|
@@ -280,13 +272,12 @@ export const catchTags: {
|
|
|
280
272
|
}))
|
|
281
273
|
|
|
282
274
|
/** @internal */
|
|
283
|
-
export const check = (predicate: LazyArg<boolean>): STM.STM<
|
|
284
|
-
suspend(() => predicate() ? unit : core.retry)
|
|
275
|
+
export const check = (predicate: LazyArg<boolean>): STM.STM<void> => suspend(() => predicate() ? unit : core.retry)
|
|
285
276
|
|
|
286
277
|
/** @internal */
|
|
287
278
|
export const collect = dual<
|
|
288
|
-
<A, A2>(pf: (a: A) => Option.Option<A2>) => <R, E>(self: STM.STM<
|
|
289
|
-
<R, E, A, A2>(self: STM.STM<
|
|
279
|
+
<A, A2>(pf: (a: A) => Option.Option<A2>) => <R, E>(self: STM.STM<A, E, R>) => STM.STM<A2, E, R>,
|
|
280
|
+
<R, E, A, A2>(self: STM.STM<A, E, R>, pf: (a: A) => Option.Option<A2>) => STM.STM<A2, E, R>
|
|
290
281
|
>(2, (self, pf) =>
|
|
291
282
|
collectSTM(
|
|
292
283
|
self,
|
|
@@ -296,14 +287,14 @@ export const collect = dual<
|
|
|
296
287
|
/** @internal */
|
|
297
288
|
export const collectSTM = dual<
|
|
298
289
|
<A, R2, E2, A2>(
|
|
299
|
-
pf: (a: A) => Option.Option<STM.STM<
|
|
290
|
+
pf: (a: A) => Option.Option<STM.STM<A2, E2, R2>>
|
|
300
291
|
) => <R, E>(
|
|
301
|
-
self: STM.STM<
|
|
302
|
-
) => STM.STM<
|
|
292
|
+
self: STM.STM<A, E, R>
|
|
293
|
+
) => STM.STM<A2, E2 | E, R2 | R>,
|
|
303
294
|
<R, E, A, R2, E2, A2>(
|
|
304
|
-
self: STM.STM<
|
|
305
|
-
pf: (a: A) => Option.Option<STM.STM<
|
|
306
|
-
) => STM.STM<
|
|
295
|
+
self: STM.STM<A, E, R>,
|
|
296
|
+
pf: (a: A) => Option.Option<STM.STM<A2, E2, R2>>
|
|
297
|
+
) => STM.STM<A2, E2 | E, R2 | R>
|
|
307
298
|
>(2, (self, pf) =>
|
|
308
299
|
core.matchSTM(self, {
|
|
309
300
|
onFailure: core.fail,
|
|
@@ -314,41 +305,41 @@ export const collectSTM = dual<
|
|
|
314
305
|
}))
|
|
315
306
|
|
|
316
307
|
/** @internal */
|
|
317
|
-
export const commitEither = <
|
|
308
|
+
export const commitEither = <A, E, R>(self: STM.STM<A, E, R>): Effect.Effect<A, E, R> =>
|
|
318
309
|
Effect.flatten(core.commit(either(self)))
|
|
319
310
|
|
|
320
311
|
/** @internal */
|
|
321
|
-
export const cond = <
|
|
312
|
+
export const cond = <A, E>(
|
|
322
313
|
predicate: LazyArg<boolean>,
|
|
323
314
|
error: LazyArg<E>,
|
|
324
315
|
result: LazyArg<A>
|
|
325
|
-
): STM.STM<
|
|
316
|
+
): STM.STM<A, E> => {
|
|
326
317
|
return suspend(
|
|
327
318
|
() => predicate() ? core.sync(result) : core.failSync(error)
|
|
328
319
|
)
|
|
329
320
|
}
|
|
330
321
|
|
|
331
322
|
/** @internal */
|
|
332
|
-
export const either = <
|
|
323
|
+
export const either = <A, E, R>(self: STM.STM<A, E, R>): STM.STM<Either.Either<E, A>, never, R> =>
|
|
333
324
|
match(self, { onFailure: Either.left, onSuccess: Either.right })
|
|
334
325
|
|
|
335
326
|
/** @internal */
|
|
336
|
-
export const eventually = <
|
|
327
|
+
export const eventually = <A, E, R>(self: STM.STM<A, E, R>): STM.STM<A, E, R> =>
|
|
337
328
|
core.matchSTM(self, { onFailure: () => eventually(self), onSuccess: core.succeed })
|
|
338
329
|
|
|
339
330
|
/** @internal */
|
|
340
331
|
export const every = dual<
|
|
341
|
-
<A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<
|
|
342
|
-
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<
|
|
332
|
+
<A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<boolean, E, R>) => (iterable: Iterable<A>) => STM.STM<boolean, E, R>,
|
|
333
|
+
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<boolean, E, R>) => STM.STM<boolean, E, R>
|
|
343
334
|
>(
|
|
344
335
|
2,
|
|
345
336
|
<A, R, E>(
|
|
346
337
|
iterable: Iterable<A>,
|
|
347
|
-
predicate: (a: A) => STM.STM<
|
|
348
|
-
): STM.STM<
|
|
338
|
+
predicate: (a: A) => STM.STM<boolean, E, R>
|
|
339
|
+
): STM.STM<boolean, E, R> =>
|
|
349
340
|
pipe(
|
|
350
341
|
core.flatMap(core.sync(() => iterable[Symbol.iterator]()), (iterator) => {
|
|
351
|
-
const loop: STM.STM<
|
|
342
|
+
const loop: STM.STM<boolean, E, R> = suspend(() => {
|
|
352
343
|
const next = iterator.next()
|
|
353
344
|
if (next.done) {
|
|
354
345
|
return core.succeed(true)
|
|
@@ -365,13 +356,13 @@ export const every = dual<
|
|
|
365
356
|
|
|
366
357
|
/** @internal */
|
|
367
358
|
export const exists = dual<
|
|
368
|
-
<A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<
|
|
369
|
-
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<
|
|
359
|
+
<A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<boolean, E, R>) => (iterable: Iterable<A>) => STM.STM<boolean, E, R>,
|
|
360
|
+
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<boolean, E, R>) => STM.STM<boolean, E, R>
|
|
370
361
|
>(
|
|
371
362
|
2,
|
|
372
|
-
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<
|
|
363
|
+
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<boolean, E, R>): STM.STM<boolean, E, R> =>
|
|
373
364
|
core.flatMap(core.sync(() => iterable[Symbol.iterator]()), (iterator) => {
|
|
374
|
-
const loop: STM.STM<
|
|
365
|
+
const loop: STM.STM<boolean, E, R> = suspend(() => {
|
|
375
366
|
const next = iterator.next()
|
|
376
367
|
if (next.done) {
|
|
377
368
|
return core.succeed(false)
|
|
@@ -386,17 +377,15 @@ export const exists = dual<
|
|
|
386
377
|
)
|
|
387
378
|
|
|
388
379
|
/** @internal */
|
|
389
|
-
export const fiberId: STM.STM<
|
|
390
|
-
fiberId
|
|
391
|
-
)
|
|
380
|
+
export const fiberId: STM.STM<FiberId.FiberId> = core.effect<never, FiberId.FiberId>((_, fiberId) => fiberId)
|
|
392
381
|
|
|
393
382
|
/** @internal */
|
|
394
383
|
export const filter = dual<
|
|
395
|
-
<A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<
|
|
396
|
-
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<
|
|
384
|
+
<A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<boolean, E, R>) => (iterable: Iterable<A>) => STM.STM<Array<A>, E, R>,
|
|
385
|
+
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<boolean, E, R>) => STM.STM<Array<A>, E, R>
|
|
397
386
|
>(
|
|
398
387
|
2,
|
|
399
|
-
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<
|
|
388
|
+
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<boolean, E, R>): STM.STM<Array<A>, E, R> =>
|
|
400
389
|
Array.from(iterable).reduce(
|
|
401
390
|
(acc, curr) =>
|
|
402
391
|
pipe(
|
|
@@ -409,17 +398,17 @@ export const filter = dual<
|
|
|
409
398
|
return as
|
|
410
399
|
})
|
|
411
400
|
),
|
|
412
|
-
core.succeed([]) as STM.STM<
|
|
401
|
+
core.succeed([]) as STM.STM<Array<A>, E, R>
|
|
413
402
|
)
|
|
414
403
|
)
|
|
415
404
|
|
|
416
405
|
/** @internal */
|
|
417
406
|
export const filterNot = dual<
|
|
418
|
-
<A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<
|
|
419
|
-
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<
|
|
407
|
+
<A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<boolean, E, R>) => (iterable: Iterable<A>) => STM.STM<Array<A>, E, R>,
|
|
408
|
+
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<boolean, E, R>) => STM.STM<Array<A>, E, R>
|
|
420
409
|
>(
|
|
421
410
|
2,
|
|
422
|
-
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<
|
|
411
|
+
<A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<boolean, E, R>): STM.STM<Array<A>, E, R> =>
|
|
423
412
|
filter(iterable, (a) => negate(predicate(a)))
|
|
424
413
|
)
|
|
425
414
|
|
|
@@ -428,20 +417,20 @@ export const filterOrDie: {
|
|
|
428
417
|
<A, B extends A>(
|
|
429
418
|
refinement: Refinement<NoInfer<A>, B>,
|
|
430
419
|
defect: LazyArg<unknown>
|
|
431
|
-
): <R, E>(self: STM.STM<
|
|
420
|
+
): <R, E>(self: STM.STM<A, E, R>) => STM.STM<B, E, R>
|
|
432
421
|
<A>(
|
|
433
422
|
predicate: Predicate<NoInfer<A>>,
|
|
434
423
|
defect: LazyArg<unknown>
|
|
435
|
-
): <R, E>(self: STM.STM<
|
|
424
|
+
): <R, E>(self: STM.STM<A, E, R>) => STM.STM<A, E, R>
|
|
436
425
|
<R, E, A, B extends A>(
|
|
437
|
-
self: STM.STM<
|
|
426
|
+
self: STM.STM<A, E, R>,
|
|
438
427
|
refinement: Refinement<A, B>,
|
|
439
428
|
defect: LazyArg<unknown>
|
|
440
|
-
): STM.STM<
|
|
441
|
-
<
|
|
429
|
+
): STM.STM<B, E, R>
|
|
430
|
+
<A, E, R>(self: STM.STM<A, E, R>, predicate: Predicate<A>, defect: LazyArg<unknown>): STM.STM<A, E, R>
|
|
442
431
|
} = dual(
|
|
443
432
|
3,
|
|
444
|
-
<
|
|
433
|
+
<A, E, R>(self: STM.STM<A, E, R>, predicate: Predicate<A>, defect: LazyArg<unknown>): STM.STM<A, E, R> =>
|
|
445
434
|
filterOrElse(self, predicate, () => core.dieSync(defect))
|
|
446
435
|
)
|
|
447
436
|
|
|
@@ -450,13 +439,13 @@ export const filterOrDieMessage: {
|
|
|
450
439
|
<A, B extends A>(
|
|
451
440
|
refinement: Refinement<NoInfer<A>, B>,
|
|
452
441
|
message: string
|
|
453
|
-
): <R, E>(self: STM.STM<
|
|
454
|
-
<A>(predicate: Predicate<NoInfer<A>>, message: string): <R, E>(self: STM.STM<
|
|
455
|
-
<R, E, A, B extends A>(self: STM.STM<
|
|
456
|
-
<
|
|
442
|
+
): <R, E>(self: STM.STM<A, E, R>) => STM.STM<B, E, R>
|
|
443
|
+
<A>(predicate: Predicate<NoInfer<A>>, message: string): <R, E>(self: STM.STM<A, E, R>) => STM.STM<A, E, R>
|
|
444
|
+
<R, E, A, B extends A>(self: STM.STM<A, E, R>, refinement: Refinement<A, B>, message: string): STM.STM<B, E, R>
|
|
445
|
+
<A, E, R>(self: STM.STM<A, E, R>, predicate: Predicate<A>, message: string): STM.STM<A, E, R>
|
|
457
446
|
} = dual(
|
|
458
447
|
3,
|
|
459
|
-
<
|
|
448
|
+
<A, E, R>(self: STM.STM<A, E, R>, predicate: Predicate<A>, message: string): STM.STM<A, E, R> =>
|
|
460
449
|
filterOrElse(self, predicate, () => core.dieMessage(message))
|
|
461
450
|
)
|
|
462
451
|
|
|
@@ -464,30 +453,30 @@ export const filterOrDieMessage: {
|
|
|
464
453
|
export const filterOrElse: {
|
|
465
454
|
<A, B extends A, R2, E2, C>(
|
|
466
455
|
refinement: Refinement<NoInfer<A>, B>,
|
|
467
|
-
orElse: (a: NoInfer<A>) => STM.STM<
|
|
468
|
-
): <R, E>(self: STM.STM<
|
|
456
|
+
orElse: (a: NoInfer<A>) => STM.STM<C, E2, R2>
|
|
457
|
+
): <R, E>(self: STM.STM<A, E, R>) => STM.STM<B | C, E2 | E, R2 | R>
|
|
469
458
|
<A, R2, E2, B>(
|
|
470
459
|
predicate: Predicate<NoInfer<A>>,
|
|
471
|
-
orElse: (a: NoInfer<A>) => STM.STM<
|
|
472
|
-
): <R, E>(self: STM.STM<
|
|
460
|
+
orElse: (a: NoInfer<A>) => STM.STM<B, E2, R2>
|
|
461
|
+
): <R, E>(self: STM.STM<A, E, R>) => STM.STM<A | B, E2 | E, R2 | R>
|
|
473
462
|
<R, E, A, B extends A, R2, E2, C>(
|
|
474
|
-
self: STM.STM<
|
|
463
|
+
self: STM.STM<A, E, R>,
|
|
475
464
|
refinement: Refinement<A, B>,
|
|
476
|
-
orElse: (a: A) => STM.STM<
|
|
477
|
-
): STM.STM<
|
|
465
|
+
orElse: (a: A) => STM.STM<C, E2, R2>
|
|
466
|
+
): STM.STM<B | C, E | E2, R | R2>
|
|
478
467
|
<R, E, A, R2, E2, B>(
|
|
479
|
-
self: STM.STM<
|
|
468
|
+
self: STM.STM<A, E, R>,
|
|
480
469
|
predicate: Predicate<A>,
|
|
481
|
-
orElse: (a: A) => STM.STM<
|
|
482
|
-
): STM.STM<
|
|
470
|
+
orElse: (a: A) => STM.STM<B, E2, R2>
|
|
471
|
+
): STM.STM<A | B, E | E2, R | R2>
|
|
483
472
|
} = dual(
|
|
484
473
|
3,
|
|
485
474
|
<R, E, A, R2, E2, B>(
|
|
486
|
-
self: STM.STM<
|
|
475
|
+
self: STM.STM<A, E, R>,
|
|
487
476
|
predicate: Predicate<A>,
|
|
488
|
-
orElse: (a: A) => STM.STM<
|
|
489
|
-
): STM.STM<
|
|
490
|
-
core.flatMap(self, (a): STM.STM<
|
|
477
|
+
orElse: (a: A) => STM.STM<B, E2, R2>
|
|
478
|
+
): STM.STM<A | B, E | E2, R | R2> =>
|
|
479
|
+
core.flatMap(self, (a): STM.STM<A | B, E2, R2> => predicate(a) ? core.succeed(a) : orElse(a))
|
|
491
480
|
)
|
|
492
481
|
|
|
493
482
|
/** @internal */
|
|
@@ -495,20 +484,20 @@ export const filterOrFail: {
|
|
|
495
484
|
<A, B extends A, E2>(
|
|
496
485
|
refinement: Refinement<NoInfer<A>, B>,
|
|
497
486
|
orFailWith: (a: NoInfer<A>) => E2
|
|
498
|
-
): <R, E>(self: STM.STM<
|
|
487
|
+
): <R, E>(self: STM.STM<A, E, R>) => STM.STM<B, E2 | E, R>
|
|
499
488
|
<A, E2>(
|
|
500
489
|
predicate: Predicate<NoInfer<A>>,
|
|
501
490
|
orFailWith: (a: NoInfer<A>) => E2
|
|
502
|
-
): <R, E>(self: STM.STM<
|
|
491
|
+
): <R, E>(self: STM.STM<A, E, R>) => STM.STM<A, E2 | E, R>
|
|
503
492
|
<R, E, A, B extends A, E2>(
|
|
504
|
-
self: STM.STM<
|
|
493
|
+
self: STM.STM<A, E, R>,
|
|
505
494
|
refinement: Refinement<A, B>,
|
|
506
495
|
orFailWith: (a: A) => E2
|
|
507
|
-
): STM.STM<
|
|
508
|
-
<R, E, A, E2>(self: STM.STM<
|
|
496
|
+
): STM.STM<B, E | E2, R>
|
|
497
|
+
<R, E, A, E2>(self: STM.STM<A, E, R>, predicate: Predicate<A>, orFailWith: (a: A) => E2): STM.STM<A, E | E2, R>
|
|
509
498
|
} = dual(
|
|
510
499
|
3,
|
|
511
|
-
<R, E, A, E2>(self: STM.STM<
|
|
500
|
+
<R, E, A, E2>(self: STM.STM<A, E, R>, predicate: Predicate<A>, orFailWith: (a: A) => E2): STM.STM<A, E | E2, R> =>
|
|
512
501
|
filterOrElse(
|
|
513
502
|
self,
|
|
514
503
|
predicate,
|
|
@@ -517,24 +506,24 @@ export const filterOrFail: {
|
|
|
517
506
|
)
|
|
518
507
|
|
|
519
508
|
/** @internal */
|
|
520
|
-
export const flatten = <R, E, R2, E2, A>(self: STM.STM<
|
|
509
|
+
export const flatten = <R, E, R2, E2, A>(self: STM.STM<STM.STM<A, E2, R2>, E, R>): STM.STM<A, E | E2, R | R2> =>
|
|
521
510
|
core.flatMap(self, identity)
|
|
522
511
|
|
|
523
512
|
/** @internal */
|
|
524
|
-
export const flip = <
|
|
513
|
+
export const flip = <A, E, R>(self: STM.STM<A, E, R>): STM.STM<E, A, R> =>
|
|
525
514
|
core.matchSTM(self, { onFailure: core.succeed, onSuccess: core.fail })
|
|
526
515
|
|
|
527
516
|
/** @internal */
|
|
528
517
|
export const flipWith = dual<
|
|
529
518
|
<R, A, E, R2, A2, E2>(
|
|
530
|
-
f: (stm: STM.STM<
|
|
519
|
+
f: (stm: STM.STM<E, A, R>) => STM.STM<E2, A2, R2>
|
|
531
520
|
) => (
|
|
532
|
-
self: STM.STM<
|
|
533
|
-
) => STM.STM<
|
|
521
|
+
self: STM.STM<A, E, R>
|
|
522
|
+
) => STM.STM<A | A2, E | E2, R | R2>,
|
|
534
523
|
<R, A, E, R2, A2, E2>(
|
|
535
|
-
self: STM.STM<
|
|
536
|
-
f: (stm: STM.STM<
|
|
537
|
-
) => STM.STM<
|
|
524
|
+
self: STM.STM<A, E, R>,
|
|
525
|
+
f: (stm: STM.STM<E, A, R>) => STM.STM<E2, A2, R2>
|
|
526
|
+
) => STM.STM<A | A2, E | E2, R | R2>
|
|
538
527
|
>(2, (self, f) => flip(f(flip(self))))
|
|
539
528
|
|
|
540
529
|
/** @internal */
|
|
@@ -542,11 +531,11 @@ export const match = dual<
|
|
|
542
531
|
<E, A2, A, A3>(options: {
|
|
543
532
|
readonly onFailure: (error: E) => A2
|
|
544
533
|
readonly onSuccess: (value: A) => A3
|
|
545
|
-
}) => <R>(self: STM.STM<
|
|
546
|
-
<R, E, A2, A, A3>(self: STM.STM<
|
|
534
|
+
}) => <R>(self: STM.STM<A, E, R>) => STM.STM<A2 | A3, never, R>,
|
|
535
|
+
<R, E, A2, A, A3>(self: STM.STM<A, E, R>, options: {
|
|
547
536
|
readonly onFailure: (error: E) => A2
|
|
548
537
|
readonly onSuccess: (value: A) => A3
|
|
549
|
-
}) => STM.STM<
|
|
538
|
+
}) => STM.STM<A2 | A3, never, R>
|
|
550
539
|
>(2, (self, { onFailure, onSuccess }) =>
|
|
551
540
|
core.matchSTM(self, {
|
|
552
541
|
onFailure: (e) => core.succeed(onFailure(e)),
|
|
@@ -556,31 +545,31 @@ export const match = dual<
|
|
|
556
545
|
/** @internal */
|
|
557
546
|
export const forEach = dual<
|
|
558
547
|
{
|
|
559
|
-
<A, R, E, A2>(f: (a: A) => STM.STM<
|
|
548
|
+
<A, R, E, A2>(f: (a: A) => STM.STM<A2, E, R>, options?: {
|
|
560
549
|
readonly discard?: false | undefined
|
|
561
|
-
}): (elements: Iterable<A>) => STM.STM<
|
|
562
|
-
<A, R, E, A2>(f: (a: A) => STM.STM<
|
|
550
|
+
}): (elements: Iterable<A>) => STM.STM<Array<A2>, E, R>
|
|
551
|
+
<A, R, E, A2>(f: (a: A) => STM.STM<A2, E, R>, options: {
|
|
563
552
|
readonly discard: true
|
|
564
|
-
}): (elements: Iterable<A>) => STM.STM<
|
|
553
|
+
}): (elements: Iterable<A>) => STM.STM<void, E, R>
|
|
565
554
|
},
|
|
566
555
|
{
|
|
567
|
-
<A, R, E, A2>(elements: Iterable<A>, f: (a: A) => STM.STM<
|
|
556
|
+
<A, R, E, A2>(elements: Iterable<A>, f: (a: A) => STM.STM<A2, E, R>, options?: {
|
|
568
557
|
readonly discard?: false | undefined
|
|
569
|
-
}): STM.STM<
|
|
570
|
-
<A, R, E, A2>(elements: Iterable<A>, f: (a: A) => STM.STM<
|
|
558
|
+
}): STM.STM<Array<A2>, E, R>
|
|
559
|
+
<A, R, E, A2>(elements: Iterable<A>, f: (a: A) => STM.STM<A2, E, R>, options: {
|
|
571
560
|
readonly discard: true
|
|
572
|
-
}): STM.STM<
|
|
561
|
+
}): STM.STM<void, E, R>
|
|
573
562
|
}
|
|
574
563
|
>(
|
|
575
564
|
(args) => predicate.isIterable(args[0]),
|
|
576
|
-
<A, R, E, A2>(iterable: Iterable<A>, f: (a: A) => STM.STM<
|
|
565
|
+
<A, R, E, A2>(iterable: Iterable<A>, f: (a: A) => STM.STM<A2, E, R>, options?: {
|
|
577
566
|
readonly discard?: boolean | undefined
|
|
578
|
-
}): STM.STM<
|
|
567
|
+
}): STM.STM<any, E, R> => {
|
|
579
568
|
if (options?.discard) {
|
|
580
569
|
return pipe(
|
|
581
570
|
core.sync(() => iterable[Symbol.iterator]()),
|
|
582
571
|
core.flatMap((iterator) => {
|
|
583
|
-
const loop: STM.STM<
|
|
572
|
+
const loop: STM.STM<void, E, R> = suspend(() => {
|
|
584
573
|
const next = iterator.next()
|
|
585
574
|
if (next.done) {
|
|
586
575
|
return unit
|
|
@@ -599,14 +588,14 @@ export const forEach = dual<
|
|
|
599
588
|
array.push(elem)
|
|
600
589
|
return array
|
|
601
590
|
}),
|
|
602
|
-
core.succeed([]) as STM.STM<
|
|
591
|
+
core.succeed([]) as STM.STM<Array<A2>, E, R>
|
|
603
592
|
)
|
|
604
593
|
)
|
|
605
594
|
}
|
|
606
595
|
)
|
|
607
596
|
|
|
608
597
|
/** @internal */
|
|
609
|
-
export const fromEither = <E, A>(either: Either.Either<E, A>): STM.STM<
|
|
598
|
+
export const fromEither = <E, A>(either: Either.Either<E, A>): STM.STM<A, E> => {
|
|
610
599
|
switch (either._tag) {
|
|
611
600
|
case "Left": {
|
|
612
601
|
return core.fail(either.left)
|
|
@@ -618,7 +607,7 @@ export const fromEither = <E, A>(either: Either.Either<E, A>): STM.STM<never, E,
|
|
|
618
607
|
}
|
|
619
608
|
|
|
620
609
|
/** @internal */
|
|
621
|
-
export const fromOption = <A>(option: Option.Option<A>): STM.STM<
|
|
610
|
+
export const fromOption = <A>(option: Option.Option<A>): STM.STM<A, Option.Option<never>> =>
|
|
622
611
|
Option.match(option, {
|
|
623
612
|
onNone: () => core.fail(Option.none()),
|
|
624
613
|
onSome: core.succeed
|
|
@@ -661,7 +650,7 @@ export const gen: typeof STM.gen = (f) =>
|
|
|
661
650
|
})
|
|
662
651
|
|
|
663
652
|
/** @internal */
|
|
664
|
-
export const head = <
|
|
653
|
+
export const head = <A, E, R>(self: STM.STM<Iterable<A>, E, R>): STM.STM<A, Option.Option<E>, R> =>
|
|
665
654
|
pipe(
|
|
666
655
|
self,
|
|
667
656
|
core.matchSTM({
|
|
@@ -682,55 +671,55 @@ export const head = <R, E, A>(self: STM.STM<R, E, Iterable<A>>): STM.STM<R, Opti
|
|
|
682
671
|
export const if_ = dual<
|
|
683
672
|
<R1, R2, E1, E2, A, A1>(
|
|
684
673
|
options: {
|
|
685
|
-
readonly onTrue: STM.STM<
|
|
686
|
-
readonly onFalse: STM.STM<
|
|
674
|
+
readonly onTrue: STM.STM<A, E1, R1>
|
|
675
|
+
readonly onFalse: STM.STM<A1, E2, R2>
|
|
687
676
|
}
|
|
688
677
|
) => <R = never, E = never>(
|
|
689
|
-
self: STM.STM<
|
|
690
|
-
) => STM.STM<
|
|
678
|
+
self: STM.STM<boolean, E, R> | boolean
|
|
679
|
+
) => STM.STM<A | A1, E1 | E2 | E, R1 | R2 | R>,
|
|
691
680
|
{
|
|
692
681
|
<R, E, R1, R2, E1, E2, A, A1>(
|
|
693
682
|
self: boolean,
|
|
694
683
|
options: {
|
|
695
|
-
readonly onTrue: STM.STM<
|
|
696
|
-
readonly onFalse: STM.STM<
|
|
684
|
+
readonly onTrue: STM.STM<A, E1, R1>
|
|
685
|
+
readonly onFalse: STM.STM<A1, E2, R2>
|
|
697
686
|
}
|
|
698
|
-
): STM.STM<
|
|
687
|
+
): STM.STM<A | A1, E1 | E2 | E, R1 | R2 | R>
|
|
699
688
|
<R, E, R1, R2, E1, E2, A, A1>(
|
|
700
|
-
self: STM.STM<
|
|
689
|
+
self: STM.STM<boolean, E, R>,
|
|
701
690
|
options: {
|
|
702
|
-
readonly onTrue: STM.STM<
|
|
703
|
-
readonly onFalse: STM.STM<
|
|
691
|
+
readonly onTrue: STM.STM<A, E1, R1>
|
|
692
|
+
readonly onFalse: STM.STM<A1, E2, R2>
|
|
704
693
|
}
|
|
705
|
-
): STM.STM<
|
|
694
|
+
): STM.STM<A | A1, E1 | E2 | E, R1 | R2 | R>
|
|
706
695
|
}
|
|
707
696
|
>(
|
|
708
697
|
(args) => typeof args[0] === "boolean" || core.isSTM(args[0]),
|
|
709
698
|
<R, E, R1, R2, E1, E2, A, A1>(
|
|
710
|
-
self: STM.STM<
|
|
699
|
+
self: STM.STM<boolean, E, R> | boolean,
|
|
711
700
|
{ onFalse, onTrue }: {
|
|
712
|
-
readonly onTrue: STM.STM<
|
|
713
|
-
readonly onFalse: STM.STM<
|
|
701
|
+
readonly onTrue: STM.STM<A, E1, R1>
|
|
702
|
+
readonly onFalse: STM.STM<A1, E2, R2>
|
|
714
703
|
}
|
|
715
704
|
) => {
|
|
716
705
|
if (typeof self === "boolean") {
|
|
717
706
|
return self ? onTrue : onFalse
|
|
718
707
|
}
|
|
719
708
|
|
|
720
|
-
return core.flatMap(self, (bool): STM.STM<
|
|
709
|
+
return core.flatMap(self, (bool): STM.STM<A | A1, E1 | E2 | E, R1 | R2 | R> => bool ? onTrue : onFalse)
|
|
721
710
|
}
|
|
722
711
|
)
|
|
723
712
|
|
|
724
713
|
/** @internal */
|
|
725
|
-
export const ignore = <
|
|
714
|
+
export const ignore = <A, E, R>(self: STM.STM<A, E, R>): STM.STM<void, never, R> =>
|
|
726
715
|
match(self, { onFailure: () => unit, onSuccess: () => unit })
|
|
727
716
|
|
|
728
717
|
/** @internal */
|
|
729
|
-
export const isFailure = <
|
|
718
|
+
export const isFailure = <A, E, R>(self: STM.STM<A, E, R>): STM.STM<boolean, never, R> =>
|
|
730
719
|
match(self, { onFailure: constTrue, onSuccess: constFalse })
|
|
731
720
|
|
|
732
721
|
/** @internal */
|
|
733
|
-
export const isSuccess = <
|
|
722
|
+
export const isSuccess = <A, E, R>(self: STM.STM<A, E, R>): STM.STM<boolean, never, R> =>
|
|
734
723
|
match(self, { onFailure: constFalse, onSuccess: constTrue })
|
|
735
724
|
|
|
736
725
|
/** @internal */
|
|
@@ -738,15 +727,15 @@ export const iterate = <R, E, Z>(
|
|
|
738
727
|
initial: Z,
|
|
739
728
|
options: {
|
|
740
729
|
readonly while: (z: Z) => boolean
|
|
741
|
-
readonly body: (z: Z) => STM.STM<
|
|
730
|
+
readonly body: (z: Z) => STM.STM<Z, E, R>
|
|
742
731
|
}
|
|
743
|
-
): STM.STM<
|
|
732
|
+
): STM.STM<Z, E, R> => iterateLoop(initial, options.while, options.body)
|
|
744
733
|
|
|
745
734
|
const iterateLoop = <R, E, Z>(
|
|
746
735
|
initial: Z,
|
|
747
736
|
cont: (z: Z) => boolean,
|
|
748
|
-
body: (z: Z) => STM.STM<
|
|
749
|
-
): STM.STM<
|
|
737
|
+
body: (z: Z) => STM.STM<Z, E, R>
|
|
738
|
+
): STM.STM<Z, E, R> => {
|
|
750
739
|
if (cont(initial)) {
|
|
751
740
|
return pipe(
|
|
752
741
|
body(initial),
|
|
@@ -763,28 +752,28 @@ export const loop: {
|
|
|
763
752
|
options: {
|
|
764
753
|
readonly while: (z: Z) => boolean
|
|
765
754
|
readonly step: (z: Z) => Z
|
|
766
|
-
readonly body: (z: Z) => STM.STM<
|
|
755
|
+
readonly body: (z: Z) => STM.STM<A, E, R>
|
|
767
756
|
readonly discard?: false | undefined
|
|
768
757
|
}
|
|
769
|
-
): STM.STM<
|
|
758
|
+
): STM.STM<Array<A>, E, R>
|
|
770
759
|
<Z, R, E, A>(
|
|
771
760
|
initial: Z,
|
|
772
761
|
options: {
|
|
773
762
|
readonly while: (z: Z) => boolean
|
|
774
763
|
readonly step: (z: Z) => Z
|
|
775
|
-
readonly body: (z: Z) => STM.STM<
|
|
764
|
+
readonly body: (z: Z) => STM.STM<A, E, R>
|
|
776
765
|
readonly discard: true
|
|
777
766
|
}
|
|
778
|
-
): STM.STM<
|
|
767
|
+
): STM.STM<void, E, R>
|
|
779
768
|
} = <Z, R, E, A>(
|
|
780
769
|
initial: Z,
|
|
781
770
|
options: {
|
|
782
771
|
readonly while: (z: Z) => boolean
|
|
783
772
|
readonly step: (z: Z) => Z
|
|
784
|
-
readonly body: (z: Z) => STM.STM<
|
|
773
|
+
readonly body: (z: Z) => STM.STM<A, E, R>
|
|
785
774
|
readonly discard?: boolean | undefined
|
|
786
775
|
}
|
|
787
|
-
): STM.STM<
|
|
776
|
+
): STM.STM<any, E, R> =>
|
|
788
777
|
options.discard ?
|
|
789
778
|
loopDiscardLoop(initial, options.while, options.step, options.body) :
|
|
790
779
|
core.map(loopLoop(initial, options.while, options.step, options.body), (a) => Array.from(a))
|
|
@@ -793,8 +782,8 @@ const loopLoop = <Z, R, E, A>(
|
|
|
793
782
|
initial: Z,
|
|
794
783
|
cont: (z: Z) => boolean,
|
|
795
784
|
inc: (z: Z) => Z,
|
|
796
|
-
body: (z: Z) => STM.STM<
|
|
797
|
-
): STM.STM<
|
|
785
|
+
body: (z: Z) => STM.STM<A, E, R>
|
|
786
|
+
): STM.STM<Chunk.Chunk<A>, E, R> => {
|
|
798
787
|
if (cont(initial)) {
|
|
799
788
|
return pipe(
|
|
800
789
|
body(initial),
|
|
@@ -808,8 +797,8 @@ const loopDiscardLoop = <Z, R, E, X>(
|
|
|
808
797
|
initial: Z,
|
|
809
798
|
cont: (z: Z) => boolean,
|
|
810
799
|
inc: (z: Z) => Z,
|
|
811
|
-
body: (z: Z) => STM.STM<
|
|
812
|
-
): STM.STM<
|
|
800
|
+
body: (z: Z) => STM.STM<X, E, R>
|
|
801
|
+
): STM.STM<void, E, R> => {
|
|
813
802
|
if (cont(initial)) {
|
|
814
803
|
return pipe(
|
|
815
804
|
body(initial),
|
|
@@ -821,9 +810,9 @@ const loopDiscardLoop = <Z, R, E, X>(
|
|
|
821
810
|
|
|
822
811
|
/** @internal */
|
|
823
812
|
export const mapAttempt = dual<
|
|
824
|
-
<A, B>(f: (a: A) => B) => <R, E>(self: STM.STM<
|
|
825
|
-
<R, E, A, B>(self: STM.STM<
|
|
826
|
-
>(2, <R, E, A, B>(self: STM.STM<
|
|
813
|
+
<A, B>(f: (a: A) => B) => <R, E>(self: STM.STM<A, E, R>) => STM.STM<B, unknown, R>,
|
|
814
|
+
<R, E, A, B>(self: STM.STM<A, E, R>, f: (a: A) => B) => STM.STM<B, unknown, R>
|
|
815
|
+
>(2, <R, E, A, B>(self: STM.STM<A, E, R>, f: (a: A) => B): STM.STM<B, unknown, R> =>
|
|
827
816
|
core.matchSTM(self, {
|
|
828
817
|
onFailure: (e) => core.fail(e),
|
|
829
818
|
onSuccess: (a) => attempt(() => f(a))
|
|
@@ -834,11 +823,11 @@ export const mapBoth = dual<
|
|
|
834
823
|
<E, E2, A, A2>(options: {
|
|
835
824
|
readonly onFailure: (error: E) => E2
|
|
836
825
|
readonly onSuccess: (value: A) => A2
|
|
837
|
-
}) => <R>(self: STM.STM<
|
|
838
|
-
<R, E, E2, A, A2>(self: STM.STM<
|
|
826
|
+
}) => <R>(self: STM.STM<A, E, R>) => STM.STM<A2, E2, R>,
|
|
827
|
+
<R, E, E2, A, A2>(self: STM.STM<A, E, R>, options: {
|
|
839
828
|
readonly onFailure: (error: E) => E2
|
|
840
829
|
readonly onSuccess: (value: A) => A2
|
|
841
|
-
}) => STM.STM<
|
|
830
|
+
}) => STM.STM<A2, E2, R>
|
|
842
831
|
>(2, (self, { onFailure, onSuccess }) =>
|
|
843
832
|
core.matchSTM(self, {
|
|
844
833
|
onFailure: (e) => core.fail(onFailure(e)),
|
|
@@ -847,8 +836,8 @@ export const mapBoth = dual<
|
|
|
847
836
|
|
|
848
837
|
/** @internal */
|
|
849
838
|
export const mapError = dual<
|
|
850
|
-
<E, E2>(f: (error: E) => E2) => <R, A>(self: STM.STM<
|
|
851
|
-
<R, A, E, E2>(self: STM.STM<
|
|
839
|
+
<E, E2>(f: (error: E) => E2) => <R, A>(self: STM.STM<A, E, R>) => STM.STM<A, E2, R>,
|
|
840
|
+
<R, A, E, E2>(self: STM.STM<A, E, R>, f: (error: E) => E2) => STM.STM<A, E2, R>
|
|
852
841
|
>(2, (self, f) =>
|
|
853
842
|
core.matchSTM(self, {
|
|
854
843
|
onFailure: (e) => core.fail(f(e)),
|
|
@@ -856,29 +845,29 @@ export const mapError = dual<
|
|
|
856
845
|
}))
|
|
857
846
|
|
|
858
847
|
/** @internal */
|
|
859
|
-
export const merge = <
|
|
848
|
+
export const merge = <A, E, R>(self: STM.STM<A, E, R>): STM.STM<E | A, never, R> =>
|
|
860
849
|
core.matchSTM(self, { onFailure: (e) => core.succeed(e), onSuccess: core.succeed })
|
|
861
850
|
|
|
862
851
|
/** @internal */
|
|
863
852
|
export const mergeAll = dual<
|
|
864
|
-
<A2, A>(zero: A2, f: (a2: A2, a: A) => A2) => <R, E>(iterable: Iterable<STM.STM<
|
|
865
|
-
<R, E, A2, A>(iterable: Iterable<STM.STM<
|
|
853
|
+
<A2, A>(zero: A2, f: (a2: A2, a: A) => A2) => <R, E>(iterable: Iterable<STM.STM<A, E, R>>) => STM.STM<A2, E, R>,
|
|
854
|
+
<R, E, A2, A>(iterable: Iterable<STM.STM<A, E, R>>, zero: A2, f: (a2: A2, a: A) => A2) => STM.STM<A2, E, R>
|
|
866
855
|
>(
|
|
867
856
|
3,
|
|
868
|
-
<R, E, A2, A>(iterable: Iterable<STM.STM<
|
|
857
|
+
<R, E, A2, A>(iterable: Iterable<STM.STM<A, E, R>>, zero: A2, f: (a2: A2, a: A) => A2): STM.STM<A2, E, R> =>
|
|
869
858
|
suspend(() =>
|
|
870
859
|
Array.from(iterable).reduce(
|
|
871
860
|
(acc, curr) => pipe(acc, core.zipWith(curr, f)),
|
|
872
|
-
core.succeed(zero) as STM.STM<
|
|
861
|
+
core.succeed(zero) as STM.STM<A2, E, R>
|
|
873
862
|
)
|
|
874
863
|
)
|
|
875
864
|
)
|
|
876
865
|
|
|
877
866
|
/** @internal */
|
|
878
|
-
export const negate = <R, E>(self: STM.STM<
|
|
867
|
+
export const negate = <R, E>(self: STM.STM<boolean, E, R>): STM.STM<boolean, E, R> => pipe(self, core.map((b) => !b))
|
|
879
868
|
|
|
880
869
|
/** @internal */
|
|
881
|
-
export const none = <
|
|
870
|
+
export const none = <A, E, R>(self: STM.STM<Option.Option<A>, E, R>): STM.STM<void, Option.Option<E>, R> =>
|
|
882
871
|
core.matchSTM(self, {
|
|
883
872
|
onFailure: (e) => core.fail(Option.some(e)),
|
|
884
873
|
onSuccess: Option.match({
|
|
@@ -888,25 +877,25 @@ export const none = <R, E, A>(self: STM.STM<R, E, Option.Option<A>>): STM.STM<R,
|
|
|
888
877
|
})
|
|
889
878
|
|
|
890
879
|
/** @internal */
|
|
891
|
-
export const option = <
|
|
880
|
+
export const option = <A, E, R>(self: STM.STM<A, E, R>): STM.STM<Option.Option<A>, never, R> =>
|
|
892
881
|
match(self, { onFailure: () => Option.none(), onSuccess: Option.some })
|
|
893
882
|
|
|
894
883
|
/** @internal */
|
|
895
|
-
export const orDie = <
|
|
884
|
+
export const orDie = <A, E, R>(self: STM.STM<A, E, R>): STM.STM<A, never, R> => pipe(self, orDieWith(identity))
|
|
896
885
|
|
|
897
886
|
/** @internal */
|
|
898
887
|
export const orDieWith = dual<
|
|
899
|
-
<E>(f: (error: E) => unknown) => <R, A>(self: STM.STM<
|
|
900
|
-
<R, A, E>(self: STM.STM<
|
|
888
|
+
<E>(f: (error: E) => unknown) => <R, A>(self: STM.STM<A, E, R>) => STM.STM<A, never, R>,
|
|
889
|
+
<R, A, E>(self: STM.STM<A, E, R>, f: (error: E) => unknown) => STM.STM<A, never, R>
|
|
901
890
|
>(2, (self, f) => pipe(self, mapError(f), core.catchAll(core.die)))
|
|
902
891
|
|
|
903
892
|
/** @internal */
|
|
904
893
|
export const orElse = dual<
|
|
905
|
-
<R2, E2, A2>(that: LazyArg<STM.STM<
|
|
906
|
-
<R, E, A, R2, E2, A2>(self: STM.STM<
|
|
894
|
+
<R2, E2, A2>(that: LazyArg<STM.STM<A2, E2, R2>>) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<A2 | A, E2, R2 | R>,
|
|
895
|
+
<R, E, A, R2, E2, A2>(self: STM.STM<A, E, R>, that: LazyArg<STM.STM<A2, E2, R2>>) => STM.STM<A2 | A, E2, R2 | R>
|
|
907
896
|
>(
|
|
908
897
|
2,
|
|
909
|
-
<R, E, A, R2, E2, A2>(self: STM.STM<
|
|
898
|
+
<R, E, A, R2, E2, A2>(self: STM.STM<A, E, R>, that: LazyArg<STM.STM<A2, E2, R2>>): STM.STM<A2 | A, E2, R2 | R> =>
|
|
910
899
|
core.flatMap(core.effect<R, LazyArg<void>>((journal) => Journal.prepareResetJournal(journal)), (reset) =>
|
|
911
900
|
pipe(
|
|
912
901
|
core.orTry(self, () => core.flatMap(core.sync(reset), that)),
|
|
@@ -917,50 +906,50 @@ export const orElse = dual<
|
|
|
917
906
|
/** @internal */
|
|
918
907
|
export const orElseEither = dual<
|
|
919
908
|
<R2, E2, A2>(
|
|
920
|
-
that: LazyArg<STM.STM<
|
|
921
|
-
) => <
|
|
922
|
-
self: STM.STM<
|
|
923
|
-
) => STM.STM<
|
|
909
|
+
that: LazyArg<STM.STM<A2, E2, R2>>
|
|
910
|
+
) => <A, E, R>(
|
|
911
|
+
self: STM.STM<A, E, R>
|
|
912
|
+
) => STM.STM<Either.Either<A, A2>, E2, R2 | R>,
|
|
924
913
|
<R, E, A, R2, E2, A2>(
|
|
925
|
-
self: STM.STM<
|
|
926
|
-
that: LazyArg<STM.STM<
|
|
927
|
-
) => STM.STM<
|
|
914
|
+
self: STM.STM<A, E, R>,
|
|
915
|
+
that: LazyArg<STM.STM<A2, E2, R2>>
|
|
916
|
+
) => STM.STM<Either.Either<A, A2>, E2, R2 | R>
|
|
928
917
|
>(
|
|
929
918
|
2,
|
|
930
919
|
<R, E, A, R2, E2, A2>(
|
|
931
|
-
self: STM.STM<
|
|
932
|
-
that: LazyArg<STM.STM<
|
|
933
|
-
): STM.STM<
|
|
920
|
+
self: STM.STM<A, E, R>,
|
|
921
|
+
that: LazyArg<STM.STM<A2, E2, R2>>
|
|
922
|
+
): STM.STM<Either.Either<A, A2>, E2, R2 | R> =>
|
|
934
923
|
orElse(core.map(self, Either.left), () => core.map(that(), Either.right))
|
|
935
924
|
)
|
|
936
925
|
|
|
937
926
|
/** @internal */
|
|
938
927
|
export const orElseFail = dual<
|
|
939
|
-
<E2>(error: LazyArg<E2>) => <
|
|
940
|
-
<R, E, A, E2>(self: STM.STM<
|
|
928
|
+
<E2>(error: LazyArg<E2>) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<A, E2, R>,
|
|
929
|
+
<R, E, A, E2>(self: STM.STM<A, E, R>, error: LazyArg<E2>) => STM.STM<A, E2, R>
|
|
941
930
|
>(
|
|
942
931
|
2,
|
|
943
|
-
<R, E, A, E2>(self: STM.STM<
|
|
932
|
+
<R, E, A, E2>(self: STM.STM<A, E, R>, error: LazyArg<E2>): STM.STM<A, E2, R> =>
|
|
944
933
|
orElse(self, () => core.failSync(error))
|
|
945
934
|
)
|
|
946
935
|
|
|
947
936
|
/** @internal */
|
|
948
937
|
export const orElseOptional = dual<
|
|
949
938
|
<R2, E2, A2>(
|
|
950
|
-
that: LazyArg<STM.STM<
|
|
951
|
-
) => <
|
|
952
|
-
self: STM.STM<
|
|
953
|
-
) => STM.STM<
|
|
939
|
+
that: LazyArg<STM.STM<A2, Option.Option<E2>, R2>>
|
|
940
|
+
) => <A, E, R>(
|
|
941
|
+
self: STM.STM<A, Option.Option<E>, R>
|
|
942
|
+
) => STM.STM<A2 | A, Option.Option<E2 | E>, R2 | R>,
|
|
954
943
|
<R, E, A, R2, E2, A2>(
|
|
955
|
-
self: STM.STM<
|
|
956
|
-
that: LazyArg<STM.STM<
|
|
957
|
-
) => STM.STM<
|
|
944
|
+
self: STM.STM<A, Option.Option<E>, R>,
|
|
945
|
+
that: LazyArg<STM.STM<A2, Option.Option<E2>, R2>>
|
|
946
|
+
) => STM.STM<A2 | A, Option.Option<E2 | E>, R2 | R>
|
|
958
947
|
>(
|
|
959
948
|
2,
|
|
960
949
|
<R, E, A, R2, E2, A2>(
|
|
961
|
-
self: STM.STM<
|
|
962
|
-
that: LazyArg<STM.STM<
|
|
963
|
-
): STM.STM<
|
|
950
|
+
self: STM.STM<A, Option.Option<E>, R>,
|
|
951
|
+
that: LazyArg<STM.STM<A2, Option.Option<E2>, R2>>
|
|
952
|
+
): STM.STM<A2 | A, Option.Option<E2 | E>, R2 | R> =>
|
|
964
953
|
core.catchAll(
|
|
965
954
|
self,
|
|
966
955
|
Option.match({
|
|
@@ -972,28 +961,28 @@ export const orElseOptional = dual<
|
|
|
972
961
|
|
|
973
962
|
/** @internal */
|
|
974
963
|
export const orElseSucceed = dual<
|
|
975
|
-
<A2>(value: LazyArg<A2>) => <
|
|
976
|
-
<R, E, A, A2>(self: STM.STM<
|
|
964
|
+
<A2>(value: LazyArg<A2>) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<A2 | A, never, R>,
|
|
965
|
+
<R, E, A, A2>(self: STM.STM<A, E, R>, value: LazyArg<A2>) => STM.STM<A2 | A, never, R>
|
|
977
966
|
>(
|
|
978
967
|
2,
|
|
979
|
-
<R, E, A, A2>(self: STM.STM<
|
|
968
|
+
<R, E, A, A2>(self: STM.STM<A, E, R>, value: LazyArg<A2>): STM.STM<A2 | A, never, R> =>
|
|
980
969
|
orElse(self, () => core.sync(value))
|
|
981
970
|
)
|
|
982
971
|
|
|
983
972
|
/** @internal */
|
|
984
973
|
export const provideContext = dual<
|
|
985
|
-
<R>(env: Context.Context<R>) => <
|
|
986
|
-
<
|
|
974
|
+
<R>(env: Context.Context<R>) => <A, E>(self: STM.STM<A, E, R>) => STM.STM<A, E>,
|
|
975
|
+
<A, E, R>(self: STM.STM<A, E, R>, env: Context.Context<R>) => STM.STM<A, E>
|
|
987
976
|
>(2, (self, env) => core.mapInputContext(self, (_: Context.Context<never>) => env))
|
|
988
977
|
|
|
989
978
|
/** @internal */
|
|
990
979
|
export const provideSomeContext = dual<
|
|
991
|
-
<R>(context: Context.Context<R>) => <R1, E, A>(self: STM.STM<
|
|
992
|
-
<R, R1, E, A>(self: STM.STM<
|
|
980
|
+
<R>(context: Context.Context<R>) => <R1, E, A>(self: STM.STM<A, E, R1>) => STM.STM<A, E, Exclude<R1, R>>,
|
|
981
|
+
<R, R1, E, A>(self: STM.STM<A, E, R1>, context: Context.Context<R>) => STM.STM<A, E, Exclude<R1, R>>
|
|
993
982
|
>(2, <R, R1, E, A>(
|
|
994
|
-
self: STM.STM<
|
|
983
|
+
self: STM.STM<A, E, R1>,
|
|
995
984
|
context: Context.Context<R>
|
|
996
|
-
): STM.STM<Exclude<R1, R
|
|
985
|
+
): STM.STM<A, E, Exclude<R1, R>> =>
|
|
997
986
|
core.mapInputContext(
|
|
998
987
|
self,
|
|
999
988
|
(parent: Context.Context<Exclude<R1, R>>): Context.Context<R1> => Context.merge(parent, context) as any
|
|
@@ -1004,34 +993,34 @@ export const provideService = dual<
|
|
|
1004
993
|
<T extends Context.Tag<any, any>>(
|
|
1005
994
|
tag: T,
|
|
1006
995
|
resource: Context.Tag.Service<T>
|
|
1007
|
-
) => <
|
|
1008
|
-
self: STM.STM<
|
|
1009
|
-
) => STM.STM<Exclude<R, Context.Tag.Identifier<T
|
|
996
|
+
) => <A, E, R>(
|
|
997
|
+
self: STM.STM<A, E, R>
|
|
998
|
+
) => STM.STM<A, E, Exclude<R, Context.Tag.Identifier<T>>>,
|
|
1010
999
|
<R, E, A, T extends Context.Tag<any, any>>(
|
|
1011
|
-
self: STM.STM<
|
|
1000
|
+
self: STM.STM<A, E, R>,
|
|
1012
1001
|
tag: T,
|
|
1013
1002
|
resource: Context.Tag.Service<T>
|
|
1014
|
-
) => STM.STM<Exclude<R, Context.Tag.Identifier<T
|
|
1003
|
+
) => STM.STM<A, E, Exclude<R, Context.Tag.Identifier<T>>>
|
|
1015
1004
|
>(3, (self, tag, resource) => provideServiceSTM(self, tag, core.succeed(resource)))
|
|
1016
1005
|
|
|
1017
1006
|
/** @internal */
|
|
1018
1007
|
export const provideServiceSTM = dual<
|
|
1019
1008
|
<T extends Context.Tag<any, any>, R1, E1>(
|
|
1020
1009
|
tag: T,
|
|
1021
|
-
stm: STM.STM<
|
|
1022
|
-
) => <
|
|
1023
|
-
self: STM.STM<
|
|
1024
|
-
) => STM.STM<R1 | Exclude<R, Context.Tag.Identifier<T
|
|
1010
|
+
stm: STM.STM<Context.Tag.Service<T>, E1, R1>
|
|
1011
|
+
) => <A, E, R>(
|
|
1012
|
+
self: STM.STM<A, E, R>
|
|
1013
|
+
) => STM.STM<A, E1 | E, R1 | Exclude<R, Context.Tag.Identifier<T>>>,
|
|
1025
1014
|
<R, E, A, T extends Context.Tag<any, any>, R1, E1>(
|
|
1026
|
-
self: STM.STM<
|
|
1015
|
+
self: STM.STM<A, E, R>,
|
|
1027
1016
|
tag: T,
|
|
1028
|
-
stm: STM.STM<
|
|
1029
|
-
) => STM.STM<R1 | Exclude<R, Context.Tag.Identifier<T
|
|
1017
|
+
stm: STM.STM<Context.Tag.Service<T>, E1, R1>
|
|
1018
|
+
) => STM.STM<A, E1 | E, R1 | Exclude<R, Context.Tag.Identifier<T>>>
|
|
1030
1019
|
>(3, <R, E, A, T extends Context.Tag<any, any>, R1, E1>(
|
|
1031
|
-
self: STM.STM<
|
|
1020
|
+
self: STM.STM<A, E, R>,
|
|
1032
1021
|
tag: T,
|
|
1033
|
-
stm: STM.STM<
|
|
1034
|
-
): STM.STM<R1 | Exclude<R, Context.Tag.Identifier<T
|
|
1022
|
+
stm: STM.STM<Context.Tag.Service<T>, E1, R1>
|
|
1023
|
+
): STM.STM<A, E1 | E, R1 | Exclude<R, Context.Tag.Identifier<T>>> =>
|
|
1035
1024
|
core.contextWithSTM((env: Context.Context<R1 | Exclude<R, Context.Tag.Identifier<T>>>) =>
|
|
1036
1025
|
core.flatMap(
|
|
1037
1026
|
stm,
|
|
@@ -1045,15 +1034,15 @@ export const provideServiceSTM = dual<
|
|
|
1045
1034
|
|
|
1046
1035
|
/** @internal */
|
|
1047
1036
|
export const reduce = dual<
|
|
1048
|
-
<S, A, R, E>(zero: S, f: (s: S, a: A) => STM.STM<
|
|
1049
|
-
<S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM.STM<
|
|
1037
|
+
<S, A, R, E>(zero: S, f: (s: S, a: A) => STM.STM<S, E, R>) => (iterable: Iterable<A>) => STM.STM<S, E, R>,
|
|
1038
|
+
<S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM.STM<S, E, R>) => STM.STM<S, E, R>
|
|
1050
1039
|
>(
|
|
1051
1040
|
3,
|
|
1052
|
-
<S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM.STM<
|
|
1041
|
+
<S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM.STM<S, E, R>): STM.STM<S, E, R> =>
|
|
1053
1042
|
suspend(() =>
|
|
1054
1043
|
Array.from(iterable).reduce(
|
|
1055
1044
|
(acc, curr) => pipe(acc, core.flatMap((s) => f(s, curr))),
|
|
1056
|
-
core.succeed(zero) as STM.STM<
|
|
1045
|
+
core.succeed(zero) as STM.STM<S, E, R>
|
|
1057
1046
|
)
|
|
1058
1047
|
)
|
|
1059
1048
|
)
|
|
@@ -1061,47 +1050,47 @@ export const reduce = dual<
|
|
|
1061
1050
|
/** @internal */
|
|
1062
1051
|
export const reduceAll = dual<
|
|
1063
1052
|
<R2, E2, A>(
|
|
1064
|
-
initial: STM.STM<
|
|
1053
|
+
initial: STM.STM<A, E2, R2>,
|
|
1065
1054
|
f: (x: A, y: A) => A
|
|
1066
1055
|
) => <R, E>(
|
|
1067
|
-
iterable: Iterable<STM.STM<
|
|
1068
|
-
) => STM.STM<
|
|
1056
|
+
iterable: Iterable<STM.STM<A, E, R>>
|
|
1057
|
+
) => STM.STM<A, E2 | E, R2 | R>,
|
|
1069
1058
|
<R, E, R2, E2, A>(
|
|
1070
|
-
iterable: Iterable<STM.STM<
|
|
1071
|
-
initial: STM.STM<
|
|
1059
|
+
iterable: Iterable<STM.STM<A, E, R>>,
|
|
1060
|
+
initial: STM.STM<A, E2, R2>,
|
|
1072
1061
|
f: (x: A, y: A) => A
|
|
1073
|
-
) => STM.STM<
|
|
1062
|
+
) => STM.STM<A, E2 | E, R2 | R>
|
|
1074
1063
|
>(3, <R, E, R2, E2, A>(
|
|
1075
|
-
iterable: Iterable<STM.STM<
|
|
1076
|
-
initial: STM.STM<
|
|
1064
|
+
iterable: Iterable<STM.STM<A, E, R>>,
|
|
1065
|
+
initial: STM.STM<A, E2, R2>,
|
|
1077
1066
|
f: (x: A, y: A) => A
|
|
1078
|
-
): STM.STM<
|
|
1067
|
+
): STM.STM<A, E2 | E, R2 | R> =>
|
|
1079
1068
|
suspend(() =>
|
|
1080
1069
|
Array.from(iterable).reduce(
|
|
1081
1070
|
(acc, curr) => pipe(acc, core.zipWith(curr, f)),
|
|
1082
|
-
initial as STM.STM<
|
|
1071
|
+
initial as STM.STM<A, E | E2, R | R2>
|
|
1083
1072
|
)
|
|
1084
1073
|
))
|
|
1085
1074
|
|
|
1086
1075
|
/** @internal */
|
|
1087
1076
|
export const reduceRight = dual<
|
|
1088
|
-
<S, A, R, E>(zero: S, f: (s: S, a: A) => STM.STM<
|
|
1089
|
-
<S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM.STM<
|
|
1077
|
+
<S, A, R, E>(zero: S, f: (s: S, a: A) => STM.STM<S, E, R>) => (iterable: Iterable<A>) => STM.STM<S, E, R>,
|
|
1078
|
+
<S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM.STM<S, E, R>) => STM.STM<S, E, R>
|
|
1090
1079
|
>(
|
|
1091
1080
|
3,
|
|
1092
|
-
<S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM.STM<
|
|
1081
|
+
<S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM.STM<S, E, R>): STM.STM<S, E, R> =>
|
|
1093
1082
|
suspend(() =>
|
|
1094
1083
|
Array.from(iterable).reduceRight(
|
|
1095
1084
|
(acc, curr) => pipe(acc, core.flatMap((s) => f(s, curr))),
|
|
1096
|
-
core.succeed(zero) as STM.STM<
|
|
1085
|
+
core.succeed(zero) as STM.STM<S, E, R>
|
|
1097
1086
|
)
|
|
1098
1087
|
)
|
|
1099
1088
|
)
|
|
1100
1089
|
|
|
1101
1090
|
/** @internal */
|
|
1102
1091
|
export const refineOrDie = dual<
|
|
1103
|
-
<E, E2>(pf: (error: E) => Option.Option<E2>) => <R, A>(self: STM.STM<
|
|
1104
|
-
<R, A, E, E2>(self: STM.STM<
|
|
1092
|
+
<E, E2>(pf: (error: E) => Option.Option<E2>) => <R, A>(self: STM.STM<A, E, R>) => STM.STM<A, E2, R>,
|
|
1093
|
+
<R, A, E, E2>(self: STM.STM<A, E, R>, pf: (error: E) => Option.Option<E2>) => STM.STM<A, E2, R>
|
|
1105
1094
|
>(2, (self, pf) => refineOrDieWith(self, pf, identity))
|
|
1106
1095
|
|
|
1107
1096
|
/** @internal */
|
|
@@ -1110,13 +1099,13 @@ export const refineOrDieWith = dual<
|
|
|
1110
1099
|
pf: (error: E) => Option.Option<E2>,
|
|
1111
1100
|
f: (error: E) => unknown
|
|
1112
1101
|
) => <R, A>(
|
|
1113
|
-
self: STM.STM<
|
|
1114
|
-
) => STM.STM<
|
|
1102
|
+
self: STM.STM<A, E, R>
|
|
1103
|
+
) => STM.STM<A, E2, R>,
|
|
1115
1104
|
<R, A, E, E2>(
|
|
1116
|
-
self: STM.STM<
|
|
1105
|
+
self: STM.STM<A, E, R>,
|
|
1117
1106
|
pf: (error: E) => Option.Option<E2>,
|
|
1118
1107
|
f: (error: E) => unknown
|
|
1119
|
-
) => STM.STM<
|
|
1108
|
+
) => STM.STM<A, E2, R>
|
|
1120
1109
|
>(3, (self, pf, f) =>
|
|
1121
1110
|
core.catchAll(
|
|
1122
1111
|
self,
|
|
@@ -1129,8 +1118,8 @@ export const refineOrDieWith = dual<
|
|
|
1129
1118
|
|
|
1130
1119
|
/** @internal */
|
|
1131
1120
|
export const reject = dual<
|
|
1132
|
-
<A, E2>(pf: (a: A) => Option.Option<E2>) => <R, E>(self: STM.STM<
|
|
1133
|
-
<R, E, A, E2>(self: STM.STM<
|
|
1121
|
+
<A, E2>(pf: (a: A) => Option.Option<E2>) => <R, E>(self: STM.STM<A, E, R>) => STM.STM<A, E2 | E, R>,
|
|
1122
|
+
<R, E, A, E2>(self: STM.STM<A, E, R>, pf: (a: A) => Option.Option<E2>) => STM.STM<A, E2 | E, R>
|
|
1134
1123
|
>(2, (self, pf) =>
|
|
1135
1124
|
rejectSTM(
|
|
1136
1125
|
self,
|
|
@@ -1140,14 +1129,14 @@ export const reject = dual<
|
|
|
1140
1129
|
/** @internal */
|
|
1141
1130
|
export const rejectSTM = dual<
|
|
1142
1131
|
<A, R2, E2>(
|
|
1143
|
-
pf: (a: A) => Option.Option<STM.STM<
|
|
1132
|
+
pf: (a: A) => Option.Option<STM.STM<E2, E2, R2>>
|
|
1144
1133
|
) => <R, E>(
|
|
1145
|
-
self: STM.STM<
|
|
1146
|
-
) => STM.STM<
|
|
1134
|
+
self: STM.STM<A, E, R>
|
|
1135
|
+
) => STM.STM<A, E2 | E, R2 | R>,
|
|
1147
1136
|
<R, E, A, R2, E2>(
|
|
1148
|
-
self: STM.STM<
|
|
1149
|
-
pf: (a: A) => Option.Option<STM.STM<
|
|
1150
|
-
) => STM.STM<
|
|
1137
|
+
self: STM.STM<A, E, R>,
|
|
1138
|
+
pf: (a: A) => Option.Option<STM.STM<E2, E2, R2>>
|
|
1139
|
+
) => STM.STM<A, E2 | E, R2 | R>
|
|
1151
1140
|
>(2, (self, pf) =>
|
|
1152
1141
|
core.flatMap(self, (a) =>
|
|
1153
1142
|
Option.match(pf(a), {
|
|
@@ -1157,11 +1146,11 @@ export const rejectSTM = dual<
|
|
|
1157
1146
|
|
|
1158
1147
|
/** @internal */
|
|
1159
1148
|
export const repeatUntil = dual<
|
|
1160
|
-
<A>(predicate: Predicate<A>) => <R, E>(self: STM.STM<
|
|
1161
|
-
<
|
|
1149
|
+
<A>(predicate: Predicate<A>) => <R, E>(self: STM.STM<A, E, R>) => STM.STM<A, E, R>,
|
|
1150
|
+
<A, E, R>(self: STM.STM<A, E, R>, predicate: Predicate<A>) => STM.STM<A, E, R>
|
|
1162
1151
|
>(2, (self, predicate) => repeatUntilLoop(self, predicate))
|
|
1163
1152
|
|
|
1164
|
-
const repeatUntilLoop = <
|
|
1153
|
+
const repeatUntilLoop = <A, E, R>(self: STM.STM<A, E, R>, predicate: Predicate<A>): STM.STM<A, E, R> =>
|
|
1165
1154
|
core.flatMap(self, (a) =>
|
|
1166
1155
|
predicate(a) ?
|
|
1167
1156
|
core.succeed(a) :
|
|
@@ -1169,11 +1158,11 @@ const repeatUntilLoop = <R, E, A>(self: STM.STM<R, E, A>, predicate: Predicate<A
|
|
|
1169
1158
|
|
|
1170
1159
|
/** @internal */
|
|
1171
1160
|
export const repeatWhile = dual<
|
|
1172
|
-
<A>(predicate: Predicate<A>) => <R, E>(self: STM.STM<
|
|
1173
|
-
<
|
|
1161
|
+
<A>(predicate: Predicate<A>) => <R, E>(self: STM.STM<A, E, R>) => STM.STM<A, E, R>,
|
|
1162
|
+
<A, E, R>(self: STM.STM<A, E, R>, predicate: Predicate<A>) => STM.STM<A, E, R>
|
|
1174
1163
|
>(2, (self, predicate) => repeatWhileLoop(self, predicate))
|
|
1175
1164
|
|
|
1176
|
-
const repeatWhileLoop = <
|
|
1165
|
+
const repeatWhileLoop = <A, E, R>(self: STM.STM<A, E, R>, predicate: Predicate<A>): STM.STM<A, E, R> =>
|
|
1177
1166
|
pipe(
|
|
1178
1167
|
core.flatMap(self, (a) =>
|
|
1179
1168
|
predicate(a) ?
|
|
@@ -1183,42 +1172,42 @@ const repeatWhileLoop = <R, E, A>(self: STM.STM<R, E, A>, predicate: Predicate<A
|
|
|
1183
1172
|
|
|
1184
1173
|
/** @internal */
|
|
1185
1174
|
export const replicate = dual<
|
|
1186
|
-
(n: number) => <
|
|
1187
|
-
<
|
|
1175
|
+
(n: number) => <A, E, R>(self: STM.STM<A, E, R>) => Array<STM.STM<A, E, R>>,
|
|
1176
|
+
<A, E, R>(self: STM.STM<A, E, R>, n: number) => Array<STM.STM<A, E, R>>
|
|
1188
1177
|
>(2, (self, n) => Array.from({ length: n }, () => self))
|
|
1189
1178
|
|
|
1190
1179
|
/** @internal */
|
|
1191
1180
|
export const replicateSTM = dual<
|
|
1192
|
-
(n: number) => <
|
|
1193
|
-
<
|
|
1181
|
+
(n: number) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<Array<A>, E, R>,
|
|
1182
|
+
<A, E, R>(self: STM.STM<A, E, R>, n: number) => STM.STM<Array<A>, E, R>
|
|
1194
1183
|
>(2, (self, n) => all(replicate(self, n)))
|
|
1195
1184
|
|
|
1196
1185
|
/** @internal */
|
|
1197
1186
|
export const replicateSTMDiscard = dual<
|
|
1198
|
-
(n: number) => <
|
|
1199
|
-
<
|
|
1187
|
+
(n: number) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<void, E, R>,
|
|
1188
|
+
<A, E, R>(self: STM.STM<A, E, R>, n: number) => STM.STM<void, E, R>
|
|
1200
1189
|
>(2, (self, n) => all(replicate(self, n), { discard: true }))
|
|
1201
1190
|
|
|
1202
1191
|
/** @internal */
|
|
1203
1192
|
export const retryUntil = dual<
|
|
1204
1193
|
{
|
|
1205
|
-
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <R, E>(self: STM.STM<
|
|
1206
|
-
<A>(predicate: Predicate<A>): <R, E>(self: STM.STM<
|
|
1194
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <R, E>(self: STM.STM<A, E, R>) => STM.STM<B, E, R>
|
|
1195
|
+
<A>(predicate: Predicate<A>): <R, E>(self: STM.STM<A, E, R>) => STM.STM<A, E, R>
|
|
1207
1196
|
},
|
|
1208
1197
|
{
|
|
1209
|
-
<R, E, A, B extends A>(self: STM.STM<
|
|
1210
|
-
<
|
|
1198
|
+
<R, E, A, B extends A>(self: STM.STM<A, E, R>, refinement: Refinement<A, B>): STM.STM<B, E, R>
|
|
1199
|
+
<A, E, R>(self: STM.STM<A, E, R>, predicate: Predicate<A>): STM.STM<A, E, R>
|
|
1211
1200
|
}
|
|
1212
1201
|
>(
|
|
1213
1202
|
2,
|
|
1214
|
-
<
|
|
1203
|
+
<A, E, R>(self: STM.STM<A, E, R>, predicate: Predicate<A>) =>
|
|
1215
1204
|
core.matchSTM(self, { onFailure: core.fail, onSuccess: (a) => predicate(a) ? core.succeed(a) : core.retry })
|
|
1216
1205
|
)
|
|
1217
1206
|
|
|
1218
1207
|
/** @internal */
|
|
1219
1208
|
export const retryWhile = dual<
|
|
1220
|
-
<A>(predicate: Predicate<A>) => <R, E>(self: STM.STM<
|
|
1221
|
-
<
|
|
1209
|
+
<A>(predicate: Predicate<A>) => <R, E>(self: STM.STM<A, E, R>) => STM.STM<A, E, R>,
|
|
1210
|
+
<A, E, R>(self: STM.STM<A, E, R>, predicate: Predicate<A>) => STM.STM<A, E, R>
|
|
1222
1211
|
>(
|
|
1223
1212
|
2,
|
|
1224
1213
|
(self, predicate) =>
|
|
@@ -1228,14 +1217,14 @@ export const retryWhile = dual<
|
|
|
1228
1217
|
/** @internal */
|
|
1229
1218
|
export const partition = dual<
|
|
1230
1219
|
<R, E, A, A2>(
|
|
1231
|
-
f: (a: A) => STM.STM<
|
|
1220
|
+
f: (a: A) => STM.STM<A2, E, R>
|
|
1232
1221
|
) => (
|
|
1233
1222
|
elements: Iterable<A>
|
|
1234
|
-
) => STM.STM<
|
|
1223
|
+
) => STM.STM<[excluded: Array<E>, satisfying: Array<A2>], never, R>,
|
|
1235
1224
|
<R, E, A, A2>(
|
|
1236
1225
|
elements: Iterable<A>,
|
|
1237
|
-
f: (a: A) => STM.STM<
|
|
1238
|
-
) => STM.STM<
|
|
1226
|
+
f: (a: A) => STM.STM<A2, E, R>
|
|
1227
|
+
) => STM.STM<[excluded: Array<E>, satisfying: Array<A2>], never, R>
|
|
1239
1228
|
>(2, (elements, f) =>
|
|
1240
1229
|
pipe(
|
|
1241
1230
|
forEach(elements, (a) => either(f(a))),
|
|
@@ -1243,7 +1232,7 @@ export const partition = dual<
|
|
|
1243
1232
|
))
|
|
1244
1233
|
|
|
1245
1234
|
/** @internal */
|
|
1246
|
-
export const some = <
|
|
1235
|
+
export const some = <A, E, R>(self: STM.STM<Option.Option<A>, E, R>): STM.STM<A, Option.Option<E>, R> =>
|
|
1247
1236
|
core.matchSTM(self, {
|
|
1248
1237
|
onFailure: (e) => core.fail(Option.some(e)),
|
|
1249
1238
|
onSuccess: Option.match({
|
|
@@ -1279,24 +1268,24 @@ export const all = ((
|
|
|
1279
1268
|
}) as STM.All.Signature
|
|
1280
1269
|
|
|
1281
1270
|
/** @internal */
|
|
1282
|
-
export const succeedNone: STM.STM<
|
|
1271
|
+
export const succeedNone: STM.STM<Option.Option<never>> = core.succeed(Option.none())
|
|
1283
1272
|
|
|
1284
1273
|
/** @internal */
|
|
1285
|
-
export const succeedSome = <A>(value: A): STM.STM<
|
|
1274
|
+
export const succeedSome = <A>(value: A): STM.STM<Option.Option<A>> => core.succeed(Option.some(value))
|
|
1286
1275
|
|
|
1287
1276
|
/** @internal */
|
|
1288
1277
|
export const summarized = dual<
|
|
1289
1278
|
<R2, E2, A2, A3>(
|
|
1290
|
-
summary: STM.STM<
|
|
1279
|
+
summary: STM.STM<A2, E2, R2>,
|
|
1291
1280
|
f: (before: A2, after: A2) => A3
|
|
1292
|
-
) => <
|
|
1293
|
-
self: STM.STM<
|
|
1294
|
-
) => STM.STM<
|
|
1281
|
+
) => <A, E, R>(
|
|
1282
|
+
self: STM.STM<A, E, R>
|
|
1283
|
+
) => STM.STM<[A3, A], E2 | E, R2 | R>,
|
|
1295
1284
|
<R, E, A, R2, E2, A2, A3>(
|
|
1296
|
-
self: STM.STM<
|
|
1297
|
-
summary: STM.STM<
|
|
1285
|
+
self: STM.STM<A, E, R>,
|
|
1286
|
+
summary: STM.STM<A2, E2, R2>,
|
|
1298
1287
|
f: (before: A2, after: A2) => A3
|
|
1299
|
-
) => STM.STM<
|
|
1288
|
+
) => STM.STM<[A3, A], E2 | E, R2 | R>
|
|
1300
1289
|
>(3, (self, summary, f) =>
|
|
1301
1290
|
core.flatMap(summary, (start) =>
|
|
1302
1291
|
core.flatMap(self, (value) =>
|
|
@@ -1306,15 +1295,15 @@ export const summarized = dual<
|
|
|
1306
1295
|
))))
|
|
1307
1296
|
|
|
1308
1297
|
/** @internal */
|
|
1309
|
-
export const suspend = <
|
|
1298
|
+
export const suspend = <A, E, R>(evaluate: LazyArg<STM.STM<A, E, R>>): STM.STM<A, E, R> => flatten(core.sync(evaluate))
|
|
1310
1299
|
|
|
1311
1300
|
/** @internal */
|
|
1312
1301
|
export const tap: {
|
|
1313
|
-
<A, R2, E2, _>(f: (a: A) => STM.STM<
|
|
1314
|
-
<R, E, A, R2, E2, _>(self: STM.STM<
|
|
1302
|
+
<A, R2, E2, _>(f: (a: A) => STM.STM<_, E2, R2>): <R, E>(self: STM.STM<A, E, R>) => STM.STM<A, E2 | E, R2 | R>
|
|
1303
|
+
<R, E, A, R2, E2, _>(self: STM.STM<A, E, R>, f: (a: A) => STM.STM<_, E2, R2>): STM.STM<A, E | E2, R | R2>
|
|
1315
1304
|
} = dual(
|
|
1316
1305
|
2,
|
|
1317
|
-
<R, E, A, R2, E2, _>(self: STM.STM<
|
|
1306
|
+
<R, E, A, R2, E2, _>(self: STM.STM<A, E, R>, f: (a: A) => STM.STM<_, E2, R2>): STM.STM<A, E | E2, R | R2> =>
|
|
1318
1307
|
core.flatMap(self, (a) => as(f(a), a))
|
|
1319
1308
|
)
|
|
1320
1309
|
|
|
@@ -1322,19 +1311,19 @@ export const tap: {
|
|
|
1322
1311
|
export const tapBoth = dual<
|
|
1323
1312
|
<E, XE extends E, R2, E2, A2, A, XA extends A, R3, E3, A3>(
|
|
1324
1313
|
options: {
|
|
1325
|
-
readonly onFailure: (error: XE) => STM.STM<
|
|
1326
|
-
readonly onSuccess: (value: XA) => STM.STM<
|
|
1314
|
+
readonly onFailure: (error: XE) => STM.STM<A2, E2, R2>
|
|
1315
|
+
readonly onSuccess: (value: XA) => STM.STM<A3, E3, R3>
|
|
1327
1316
|
}
|
|
1328
1317
|
) => <R>(
|
|
1329
|
-
self: STM.STM<
|
|
1330
|
-
) => STM.STM<
|
|
1318
|
+
self: STM.STM<A, E, R>
|
|
1319
|
+
) => STM.STM<A, E | E2 | E3, R2 | R3 | R>,
|
|
1331
1320
|
<R, E, XE extends E, R2, E2, A2, A, XA extends A, R3, E3, A3>(
|
|
1332
|
-
self: STM.STM<
|
|
1321
|
+
self: STM.STM<A, E, R>,
|
|
1333
1322
|
options: {
|
|
1334
|
-
readonly onFailure: (error: XE) => STM.STM<
|
|
1335
|
-
readonly onSuccess: (value: XA) => STM.STM<
|
|
1323
|
+
readonly onFailure: (error: XE) => STM.STM<A2, E2, R2>
|
|
1324
|
+
readonly onSuccess: (value: XA) => STM.STM<A3, E3, R3>
|
|
1336
1325
|
}
|
|
1337
|
-
) => STM.STM<
|
|
1326
|
+
) => STM.STM<A, E | E2 | E3, R2 | R3 | R>
|
|
1338
1327
|
>(2, (self, { onFailure, onSuccess }) =>
|
|
1339
1328
|
core.matchSTM(self, {
|
|
1340
1329
|
onFailure: (e) => pipe(onFailure(e as any), core.zipRight(core.fail(e))),
|
|
@@ -1344,12 +1333,12 @@ export const tapBoth = dual<
|
|
|
1344
1333
|
/** @internal */
|
|
1345
1334
|
export const tapError: {
|
|
1346
1335
|
<E, R2, E2, _>(
|
|
1347
|
-
f: (error: NoInfer<E>) => STM.STM<
|
|
1348
|
-
): <R, A>(self: STM.STM<
|
|
1349
|
-
<R, A, E, R2, E2, _>(self: STM.STM<
|
|
1336
|
+
f: (error: NoInfer<E>) => STM.STM<_, E2, R2>
|
|
1337
|
+
): <R, A>(self: STM.STM<A, E, R>) => STM.STM<A, E | E2, R2 | R>
|
|
1338
|
+
<R, A, E, R2, E2, _>(self: STM.STM<A, E, R>, f: (error: E) => STM.STM<_, E2, R2>): STM.STM<A, E | E2, R | R2>
|
|
1350
1339
|
} = dual(
|
|
1351
1340
|
2,
|
|
1352
|
-
<R, A, E, R2, E2, _>(self: STM.STM<
|
|
1341
|
+
<R, A, E, R2, E2, _>(self: STM.STM<A, E, R>, f: (error: E) => STM.STM<_, E2, R2>): STM.STM<A, E | E2, R | R2> =>
|
|
1353
1342
|
core.matchSTM(self, {
|
|
1354
1343
|
onFailure: (e) => core.zipRight(f(e), core.fail(e)),
|
|
1355
1344
|
onSuccess: core.succeed
|
|
@@ -1361,8 +1350,8 @@ export const try_: {
|
|
|
1361
1350
|
<A, E>(options: {
|
|
1362
1351
|
readonly try: LazyArg<A>
|
|
1363
1352
|
readonly catch: (u: unknown) => E
|
|
1364
|
-
}): STM.STM<
|
|
1365
|
-
<A>(try_: LazyArg<A>): STM.STM<
|
|
1353
|
+
}): STM.STM<A, E>
|
|
1354
|
+
<A>(try_: LazyArg<A>): STM.STM<A, unknown>
|
|
1366
1355
|
} = <A, E>(
|
|
1367
1356
|
arg: LazyArg<A> | {
|
|
1368
1357
|
readonly try: LazyArg<A>
|
|
@@ -1380,12 +1369,12 @@ export const try_: {
|
|
|
1380
1369
|
}
|
|
1381
1370
|
|
|
1382
1371
|
/** @internal */
|
|
1383
|
-
export const unit: STM.STM<
|
|
1372
|
+
export const unit: STM.STM<void> = core.succeed(void 0)
|
|
1384
1373
|
|
|
1385
1374
|
/** @internal */
|
|
1386
1375
|
export const unless = dual<
|
|
1387
|
-
(predicate: LazyArg<boolean>) => <
|
|
1388
|
-
<
|
|
1376
|
+
(predicate: LazyArg<boolean>) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<Option.Option<A>, E, R>,
|
|
1377
|
+
<A, E, R>(self: STM.STM<A, E, R>, predicate: LazyArg<boolean>) => STM.STM<Option.Option<A>, E, R>
|
|
1389
1378
|
>(2, (self, predicate) =>
|
|
1390
1379
|
suspend(
|
|
1391
1380
|
() => predicate() ? succeedNone : asSome(self)
|
|
@@ -1394,14 +1383,14 @@ export const unless = dual<
|
|
|
1394
1383
|
/** @internal */
|
|
1395
1384
|
export const unlessSTM = dual<
|
|
1396
1385
|
<R2, E2>(
|
|
1397
|
-
predicate: STM.STM<
|
|
1398
|
-
) => <
|
|
1399
|
-
self: STM.STM<
|
|
1400
|
-
) => STM.STM<
|
|
1386
|
+
predicate: STM.STM<boolean, E2, R2>
|
|
1387
|
+
) => <A, E, R>(
|
|
1388
|
+
self: STM.STM<A, E, R>
|
|
1389
|
+
) => STM.STM<Option.Option<A>, E2 | E, R2 | R>,
|
|
1401
1390
|
<R, E, A, R2, E2>(
|
|
1402
|
-
self: STM.STM<
|
|
1403
|
-
predicate: STM.STM<
|
|
1404
|
-
) => STM.STM<
|
|
1391
|
+
self: STM.STM<A, E, R>,
|
|
1392
|
+
predicate: STM.STM<boolean, E2, R2>
|
|
1393
|
+
) => STM.STM<Option.Option<A>, E2 | E, R2 | R>
|
|
1405
1394
|
>(2, (self, predicate) =>
|
|
1406
1395
|
core.flatMap(
|
|
1407
1396
|
predicate,
|
|
@@ -1409,7 +1398,7 @@ export const unlessSTM = dual<
|
|
|
1409
1398
|
))
|
|
1410
1399
|
|
|
1411
1400
|
/** @internal */
|
|
1412
|
-
export const unsome = <
|
|
1401
|
+
export const unsome = <A, E, R>(self: STM.STM<A, Option.Option<E>, R>): STM.STM<Option.Option<A>, E, R> =>
|
|
1413
1402
|
core.matchSTM(self, {
|
|
1414
1403
|
onFailure: Option.match({
|
|
1415
1404
|
onNone: () => core.succeed(Option.none()),
|
|
@@ -1421,14 +1410,14 @@ export const unsome = <R, E, A>(self: STM.STM<R, Option.Option<E>, A>): STM.STM<
|
|
|
1421
1410
|
/** @internal */
|
|
1422
1411
|
export const validateAll = dual<
|
|
1423
1412
|
<R, E, A, B>(
|
|
1424
|
-
f: (a: A) => STM.STM<
|
|
1413
|
+
f: (a: A) => STM.STM<B, E, R>
|
|
1425
1414
|
) => (
|
|
1426
1415
|
elements: Iterable<A>
|
|
1427
|
-
) => STM.STM<
|
|
1416
|
+
) => STM.STM<Array<B>, RA.NonEmptyArray<E>, R>,
|
|
1428
1417
|
<R, E, A, B>(
|
|
1429
1418
|
elements: Iterable<A>,
|
|
1430
|
-
f: (a: A) => STM.STM<
|
|
1431
|
-
) => STM.STM<
|
|
1419
|
+
f: (a: A) => STM.STM<B, E, R>
|
|
1420
|
+
) => STM.STM<Array<B>, RA.NonEmptyArray<E>, R>
|
|
1432
1421
|
>(
|
|
1433
1422
|
2,
|
|
1434
1423
|
(elements, f) =>
|
|
@@ -1440,14 +1429,14 @@ export const validateAll = dual<
|
|
|
1440
1429
|
|
|
1441
1430
|
/** @internal */
|
|
1442
1431
|
export const validateFirst = dual<
|
|
1443
|
-
<R, E, A, B>(f: (a: A) => STM.STM<
|
|
1444
|
-
<R, E, A, B>(elements: Iterable<A>, f: (a: A) => STM.STM<
|
|
1432
|
+
<R, E, A, B>(f: (a: A) => STM.STM<B, E, R>) => (elements: Iterable<A>) => STM.STM<B, Array<E>, R>,
|
|
1433
|
+
<R, E, A, B>(elements: Iterable<A>, f: (a: A) => STM.STM<B, E, R>) => STM.STM<B, Array<E>, R>
|
|
1445
1434
|
>(2, (elements, f) => flip(forEach(elements, (a) => flip(f(a)))))
|
|
1446
1435
|
|
|
1447
1436
|
/** @internal */
|
|
1448
1437
|
export const when = dual<
|
|
1449
|
-
(predicate: LazyArg<boolean>) => <
|
|
1450
|
-
<
|
|
1438
|
+
(predicate: LazyArg<boolean>) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<Option.Option<A>, E, R>,
|
|
1439
|
+
<A, E, R>(self: STM.STM<A, E, R>, predicate: LazyArg<boolean>) => STM.STM<Option.Option<A>, E, R>
|
|
1451
1440
|
>(2, (self, predicate) =>
|
|
1452
1441
|
suspend(
|
|
1453
1442
|
() => predicate() ? asSome(self) : succeedNone
|
|
@@ -1456,14 +1445,14 @@ export const when = dual<
|
|
|
1456
1445
|
/** @internal */
|
|
1457
1446
|
export const whenSTM = dual<
|
|
1458
1447
|
<R2, E2>(
|
|
1459
|
-
predicate: STM.STM<
|
|
1460
|
-
) => <
|
|
1461
|
-
self: STM.STM<
|
|
1462
|
-
) => STM.STM<
|
|
1448
|
+
predicate: STM.STM<boolean, E2, R2>
|
|
1449
|
+
) => <A, E, R>(
|
|
1450
|
+
self: STM.STM<A, E, R>
|
|
1451
|
+
) => STM.STM<Option.Option<A>, E2 | E, R2 | R>,
|
|
1463
1452
|
<R, E, A, R2, E2>(
|
|
1464
|
-
self: STM.STM<
|
|
1465
|
-
predicate: STM.STM<
|
|
1466
|
-
) => STM.STM<
|
|
1453
|
+
self: STM.STM<A, E, R>,
|
|
1454
|
+
predicate: STM.STM<boolean, E2, R2>
|
|
1455
|
+
) => STM.STM<Option.Option<A>, E2 | E, R2 | R>
|
|
1467
1456
|
>(2, (self, predicate) =>
|
|
1468
1457
|
core.flatMap(
|
|
1469
1458
|
predicate,
|