effect 3.8.4 → 3.8.5
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/dist/cjs/Array.js.map +1 -1
- package/dist/cjs/BigDecimal.js +2 -3
- package/dist/cjs/BigDecimal.js.map +1 -1
- package/dist/cjs/BigInt.js.map +1 -1
- package/dist/cjs/Boolean.js.map +1 -1
- package/dist/cjs/Cause.js.map +1 -1
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/ChildExecutorDecision.js.map +1 -1
- package/dist/cjs/Chunk.js.map +1 -1
- package/dist/cjs/Config.js.map +1 -1
- package/dist/cjs/ConfigError.js.map +1 -1
- package/dist/cjs/ConfigProvider.js.map +1 -1
- package/dist/cjs/ConfigProviderPathPatch.js.map +1 -1
- package/dist/cjs/Console.js.map +1 -1
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Cron.js.map +1 -1
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/DateTime.js.map +1 -1
- package/dist/cjs/Deferred.js.map +1 -1
- package/dist/cjs/Differ.js.map +1 -1
- package/dist/cjs/Duration.js.map +1 -1
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/Equivalence.js.map +1 -1
- package/dist/cjs/ExecutionStrategy.js.map +1 -1
- package/dist/cjs/Exit.js.map +1 -1
- package/dist/cjs/Fiber.js.map +1 -1
- package/dist/cjs/FiberHandle.js.map +1 -1
- package/dist/cjs/FiberId.js.map +1 -1
- package/dist/cjs/FiberMap.js.map +1 -1
- package/dist/cjs/FiberRef.js.map +1 -1
- package/dist/cjs/FiberRefs.js.map +1 -1
- package/dist/cjs/FiberRefsPatch.js.map +1 -1
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/Function.js.map +1 -1
- package/dist/cjs/GroupBy.js.map +1 -1
- package/dist/cjs/Hash.js.map +1 -1
- package/dist/cjs/HashMap.js.map +1 -1
- package/dist/cjs/HashSet.js.map +1 -1
- package/dist/cjs/Iterable.js.map +1 -1
- package/dist/cjs/KeyedPool.js.map +1 -1
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/List.js.map +1 -1
- package/dist/cjs/LogLevel.js.map +1 -1
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/Mailbox.js.map +1 -1
- package/dist/cjs/MergeDecision.js.map +1 -1
- package/dist/cjs/MergeState.js.map +1 -1
- package/dist/cjs/MergeStrategy.js.map +1 -1
- package/dist/cjs/Metric.js.map +1 -1
- package/dist/cjs/MetricHook.js.map +1 -1
- package/dist/cjs/MetricKey.js.map +1 -1
- package/dist/cjs/MetricPolling.js.map +1 -1
- package/dist/cjs/MetricState.js.map +1 -1
- package/dist/cjs/Micro.js.map +1 -1
- package/dist/cjs/MutableHashMap.js.map +1 -1
- package/dist/cjs/MutableHashSet.js.map +1 -1
- package/dist/cjs/MutableList.js.map +1 -1
- package/dist/cjs/MutableQueue.js.map +1 -1
- package/dist/cjs/MutableRef.js.map +1 -1
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/Option.js.map +1 -1
- package/dist/cjs/Order.js.map +1 -1
- package/dist/cjs/Ordering.js.map +1 -1
- package/dist/cjs/Pipeable.js.map +1 -1
- package/dist/cjs/Pool.js.map +1 -1
- package/dist/cjs/Predicate.js.map +1 -1
- package/dist/cjs/PubSub.js.map +1 -1
- package/dist/cjs/Queue.js.map +1 -1
- package/dist/cjs/RcMap.js.map +1 -1
- package/dist/cjs/Readable.js.map +1 -1
- package/dist/cjs/Record.js.map +1 -1
- package/dist/cjs/RedBlackTree.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/Runtime.js.map +1 -1
- package/dist/cjs/RuntimeFlags.js.map +1 -1
- package/dist/cjs/RuntimeFlagsPatch.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/ScheduleInterval.js.map +1 -1
- package/dist/cjs/ScheduleIntervals.js.map +1 -1
- package/dist/cjs/Scheduler.js.map +1 -1
- package/dist/cjs/Scope.js.map +1 -1
- package/dist/cjs/ScopedRef.js.map +1 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/SortedMap.js.map +1 -1
- package/dist/cjs/SortedSet.js.map +1 -1
- package/dist/cjs/Stream.js +17 -3
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/StreamHaltStrategy.js.map +1 -1
- package/dist/cjs/String.js.map +1 -1
- package/dist/cjs/Struct.js.map +1 -1
- package/dist/cjs/Subscribable.js.map +1 -1
- package/dist/cjs/SubscriptionRef.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/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.map +1 -1
- package/dist/cjs/TestAnnotationMap.js.map +1 -1
- package/dist/cjs/TestClock.js.map +1 -1
- package/dist/cjs/TestServices.js.map +1 -1
- package/dist/cjs/Trie.js.map +1 -1
- package/dist/cjs/Tuple.js.map +1 -1
- package/dist/cjs/Unify.js.map +1 -1
- package/dist/cjs/UpstreamPullRequest.js.map +1 -1
- package/dist/cjs/UpstreamPullStrategy.js.map +1 -1
- package/dist/cjs/Utils.js +1 -14
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/internal/core.js +4 -3
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/runtime.js +1 -1
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/stream.js +12 -3
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Array.d.ts +2684 -0
- package/dist/dts/Array.d.ts.map +1 -1
- package/dist/dts/BigDecimal.d.ts +558 -1
- package/dist/dts/BigDecimal.d.ts.map +1 -1
- package/dist/dts/BigInt.d.ts +490 -0
- package/dist/dts/BigInt.d.ts.map +1 -1
- package/dist/dts/Boolean.d.ts +228 -0
- package/dist/dts/Boolean.d.ts.map +1 -1
- package/dist/dts/Cause.d.ts +172 -0
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +750 -0
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/ChildExecutorDecision.d.ts +12 -0
- package/dist/dts/ChildExecutorDecision.d.ts.map +1 -1
- package/dist/dts/Chunk.d.ts +791 -0
- package/dist/dts/Chunk.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +174 -0
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/ConfigError.d.ts +16 -0
- package/dist/dts/ConfigError.d.ts.map +1 -1
- package/dist/dts/ConfigProvider.d.ts +84 -0
- package/dist/dts/ConfigProvider.d.ts.map +1 -1
- package/dist/dts/ConfigProviderPathPatch.d.ts +32 -0
- package/dist/dts/ConfigProviderPathPatch.d.ts.map +1 -1
- package/dist/dts/Console.d.ts +24 -0
- package/dist/dts/Console.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +232 -0
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Cron.d.ts +12 -0
- package/dist/dts/Cron.d.ts.map +1 -1
- package/dist/dts/Data.d.ts +165 -0
- package/dist/dts/Data.d.ts.map +1 -1
- package/dist/dts/DateTime.d.ts +878 -0
- package/dist/dts/DateTime.d.ts.map +1 -1
- package/dist/dts/Deferred.d.ts +170 -0
- package/dist/dts/Deferred.d.ts.map +1 -1
- package/dist/dts/Differ.d.ts +78 -0
- package/dist/dts/Differ.d.ts.map +1 -1
- package/dist/dts/Duration.d.ts +130 -0
- package/dist/dts/Duration.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +4117 -3
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +620 -0
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/Equivalence.d.ts +24 -0
- package/dist/dts/Equivalence.d.ts.map +1 -1
- package/dist/dts/ExecutionStrategy.d.ts +14 -0
- package/dist/dts/ExecutionStrategy.d.ts.map +1 -1
- package/dist/dts/Exit.d.ts +252 -0
- package/dist/dts/Exit.d.ts.map +1 -1
- package/dist/dts/Fiber.d.ts +182 -0
- package/dist/dts/Fiber.d.ts.map +1 -1
- package/dist/dts/FiberHandle.d.ts +42 -0
- package/dist/dts/FiberHandle.d.ts.map +1 -1
- package/dist/dts/FiberId.d.ts +24 -0
- package/dist/dts/FiberId.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts +102 -0
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberRef.d.ts +80 -0
- package/dist/dts/FiberRef.d.ts.map +1 -1
- package/dist/dts/FiberRefs.d.ts +84 -0
- package/dist/dts/FiberRefs.d.ts.map +1 -1
- package/dist/dts/FiberRefsPatch.d.ts +30 -0
- package/dist/dts/FiberRefsPatch.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts +38 -0
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/Function.d.ts +144 -28
- package/dist/dts/Function.d.ts.map +1 -1
- package/dist/dts/GroupBy.d.ts +38 -0
- package/dist/dts/GroupBy.d.ts.map +1 -1
- package/dist/dts/Hash.d.ts +8 -0
- package/dist/dts/Hash.d.ts.map +1 -1
- package/dist/dts/HashMap.d.ts +300 -0
- package/dist/dts/HashMap.d.ts.map +1 -1
- package/dist/dts/HashSet.d.ts +284 -0
- package/dist/dts/HashSet.d.ts.map +1 -1
- package/dist/dts/Iterable.d.ts +454 -0
- package/dist/dts/Iterable.d.ts.map +1 -1
- package/dist/dts/KeyedPool.d.ts +34 -0
- package/dist/dts/KeyedPool.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +414 -0
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/List.d.ts +430 -0
- package/dist/dts/List.d.ts.map +1 -1
- package/dist/dts/LogLevel.d.ts +46 -0
- package/dist/dts/LogLevel.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +194 -0
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/Mailbox.d.ts +16 -0
- package/dist/dts/Mailbox.d.ts.map +1 -1
- package/dist/dts/MergeDecision.d.ts +8 -0
- package/dist/dts/MergeDecision.d.ts.map +1 -1
- package/dist/dts/MergeState.d.ts +8 -0
- package/dist/dts/MergeState.d.ts.map +1 -1
- package/dist/dts/MergeStrategy.d.ts +12 -0
- package/dist/dts/MergeStrategy.d.ts.map +1 -1
- package/dist/dts/Metric.d.ts +410 -0
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/MetricHook.d.ts +24 -0
- package/dist/dts/MetricHook.d.ts.map +1 -1
- package/dist/dts/MetricKey.d.ts +48 -0
- package/dist/dts/MetricKey.d.ts.map +1 -1
- package/dist/dts/MetricPolling.d.ts +40 -0
- package/dist/dts/MetricPolling.d.ts.map +1 -1
- package/dist/dts/MetricState.d.ts +16 -0
- package/dist/dts/MetricState.d.ts.map +1 -1
- package/dist/dts/Micro.d.ts +1110 -0
- package/dist/dts/Micro.d.ts.map +1 -1
- package/dist/dts/MutableHashMap.d.ts +50 -0
- package/dist/dts/MutableHashMap.d.ts.map +1 -1
- package/dist/dts/MutableHashSet.d.ts +24 -0
- package/dist/dts/MutableHashSet.d.ts.map +1 -1
- package/dist/dts/MutableList.d.ts +36 -0
- package/dist/dts/MutableList.d.ts.map +1 -1
- package/dist/dts/MutableQueue.d.ts +62 -0
- package/dist/dts/MutableQueue.d.ts.map +1 -1
- package/dist/dts/MutableRef.d.ts +56 -0
- package/dist/dts/MutableRef.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +474 -0
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +1019 -0
- package/dist/dts/Option.d.ts.map +1 -1
- package/dist/dts/Order.d.ts +24 -0
- package/dist/dts/Order.d.ts.map +1 -1
- package/dist/dts/Ordering.d.ts +66 -0
- package/dist/dts/Ordering.d.ts.map +1 -1
- package/dist/dts/Pipeable.d.ts +21 -21
- package/dist/dts/Pipeable.d.ts.map +1 -1
- package/dist/dts/Pool.d.ts +16 -0
- package/dist/dts/Pool.d.ts.map +1 -1
- package/dist/dts/Predicate.d.ts +498 -0
- package/dist/dts/Predicate.d.ts.map +1 -1
- package/dist/dts/PubSub.d.ts +28 -0
- package/dist/dts/PubSub.d.ts.map +1 -1
- package/dist/dts/Queue.d.ts +104 -0
- package/dist/dts/Queue.d.ts.map +1 -1
- package/dist/dts/RcMap.d.ts +70 -0
- package/dist/dts/RcMap.d.ts.map +1 -1
- package/dist/dts/Readable.d.ts +16 -0
- package/dist/dts/Readable.d.ts.map +1 -1
- package/dist/dts/Record.d.ts +800 -0
- package/dist/dts/Record.d.ts.map +1 -1
- package/dist/dts/RedBlackTree.d.ts +300 -0
- package/dist/dts/RedBlackTree.d.ts.map +1 -1
- package/dist/dts/Ref.d.ts +88 -0
- package/dist/dts/Ref.d.ts.map +1 -1
- package/dist/dts/Request.d.ts +76 -0
- package/dist/dts/Request.d.ts.map +1 -1
- package/dist/dts/RequestResolver.d.ts +144 -0
- package/dist/dts/RequestResolver.d.ts.map +1 -1
- package/dist/dts/Runtime.d.ts +126 -0
- package/dist/dts/Runtime.d.ts.map +1 -1
- package/dist/dts/RuntimeFlags.d.ts +100 -0
- package/dist/dts/RuntimeFlags.d.ts.map +1 -1
- package/dist/dts/RuntimeFlagsPatch.d.ts +112 -0
- package/dist/dts/RuntimeFlagsPatch.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +1090 -0
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schedule.d.ts +704 -0
- package/dist/dts/Schedule.d.ts.map +1 -1
- package/dist/dts/ScheduleInterval.d.ts +68 -0
- package/dist/dts/ScheduleInterval.d.ts.map +1 -1
- package/dist/dts/ScheduleIntervals.d.ts +50 -0
- package/dist/dts/ScheduleIntervals.d.ts.map +1 -1
- package/dist/dts/Scope.d.ts +36 -0
- package/dist/dts/Scope.d.ts.map +1 -1
- package/dist/dts/ScopedRef.d.ts +22 -0
- package/dist/dts/ScopedRef.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +464 -0
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/SortedMap.d.ts +76 -0
- package/dist/dts/SortedMap.d.ts.map +1 -1
- package/dist/dts/SortedSet.d.ts +142 -0
- package/dist/dts/SortedSet.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +4998 -1
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/StreamHaltStrategy.d.ts +12 -0
- package/dist/dts/StreamHaltStrategy.d.ts.map +1 -1
- package/dist/dts/String.d.ts +200 -0
- package/dist/dts/String.d.ts.map +1 -1
- package/dist/dts/Struct.d.ts +84 -0
- package/dist/dts/Struct.d.ts.map +1 -1
- package/dist/dts/Subscribable.d.ts +16 -0
- package/dist/dts/Subscribable.d.ts.map +1 -1
- package/dist/dts/SubscriptionRef.d.ts +152 -0
- package/dist/dts/SubscriptionRef.d.ts.map +1 -1
- package/dist/dts/SynchronizedRef.d.ts +152 -0
- package/dist/dts/SynchronizedRef.d.ts.map +1 -1
- package/dist/dts/TArray.d.ts +426 -0
- package/dist/dts/TArray.d.ts.map +1 -1
- package/dist/dts/TDeferred.d.ts +24 -0
- package/dist/dts/TDeferred.d.ts.map +1 -1
- package/dist/dts/TMap.d.ts +366 -0
- package/dist/dts/TMap.d.ts.map +1 -1
- package/dist/dts/TPriorityQueue.d.ts +60 -0
- package/dist/dts/TPriorityQueue.d.ts.map +1 -1
- package/dist/dts/TPubSub.d.ts +28 -0
- package/dist/dts/TPubSub.d.ts.map +1 -1
- package/dist/dts/TQueue.d.ts +108 -0
- package/dist/dts/TQueue.d.ts.map +1 -1
- package/dist/dts/TReentrantLock.d.ts +36 -0
- package/dist/dts/TReentrantLock.d.ts.map +1 -1
- package/dist/dts/TRef.d.ts +88 -0
- package/dist/dts/TRef.d.ts.map +1 -1
- package/dist/dts/TSemaphore.d.ts +40 -0
- package/dist/dts/TSemaphore.d.ts.map +1 -1
- package/dist/dts/TSet.d.ts +254 -0
- package/dist/dts/TSet.d.ts.map +1 -1
- package/dist/dts/Take.d.ts +56 -0
- package/dist/dts/Take.d.ts.map +1 -1
- package/dist/dts/TestAnnotationMap.d.ts.map +1 -1
- package/dist/dts/TestClock.d.ts.map +1 -1
- package/dist/dts/TestServices.d.ts.map +1 -1
- package/dist/dts/Trie.d.ts +906 -0
- package/dist/dts/Trie.d.ts.map +1 -1
- package/dist/dts/Tuple.d.ts +144 -0
- package/dist/dts/Tuple.d.ts.map +1 -1
- package/dist/dts/Unify.d.ts +18 -0
- package/dist/dts/Unify.d.ts.map +1 -1
- package/dist/dts/UpstreamPullRequest.d.ts +12 -0
- package/dist/dts/UpstreamPullRequest.d.ts.map +1 -1
- package/dist/dts/UpstreamPullStrategy.d.ts +12 -0
- package/dist/dts/UpstreamPullStrategy.d.ts.map +1 -1
- package/dist/dts/Utils.d.ts.map +1 -1
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Array.js.map +1 -1
- package/dist/esm/BigDecimal.js +2 -2
- package/dist/esm/BigDecimal.js.map +1 -1
- package/dist/esm/BigInt.js.map +1 -1
- package/dist/esm/Boolean.js.map +1 -1
- package/dist/esm/Cause.js.map +1 -1
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/ChildExecutorDecision.js.map +1 -1
- package/dist/esm/Chunk.js.map +1 -1
- package/dist/esm/Config.js.map +1 -1
- package/dist/esm/ConfigError.js.map +1 -1
- package/dist/esm/ConfigProvider.js.map +1 -1
- package/dist/esm/ConfigProviderPathPatch.js.map +1 -1
- package/dist/esm/Console.js.map +1 -1
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Cron.js.map +1 -1
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/DateTime.js.map +1 -1
- package/dist/esm/Deferred.js.map +1 -1
- package/dist/esm/Differ.js.map +1 -1
- package/dist/esm/Duration.js.map +1 -1
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/Equivalence.js.map +1 -1
- package/dist/esm/ExecutionStrategy.js.map +1 -1
- package/dist/esm/Exit.js.map +1 -1
- package/dist/esm/Fiber.js.map +1 -1
- package/dist/esm/FiberHandle.js.map +1 -1
- package/dist/esm/FiberId.js.map +1 -1
- package/dist/esm/FiberMap.js.map +1 -1
- package/dist/esm/FiberRef.js.map +1 -1
- package/dist/esm/FiberRefs.js.map +1 -1
- package/dist/esm/FiberRefsPatch.js.map +1 -1
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/Function.js.map +1 -1
- package/dist/esm/GroupBy.js.map +1 -1
- package/dist/esm/Hash.js.map +1 -1
- package/dist/esm/HashMap.js.map +1 -1
- package/dist/esm/HashSet.js.map +1 -1
- package/dist/esm/Iterable.js.map +1 -1
- package/dist/esm/KeyedPool.js.map +1 -1
- package/dist/esm/Layer.js.map +1 -1
- package/dist/esm/List.js.map +1 -1
- package/dist/esm/LogLevel.js.map +1 -1
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/Mailbox.js.map +1 -1
- package/dist/esm/MergeDecision.js.map +1 -1
- package/dist/esm/MergeState.js.map +1 -1
- package/dist/esm/MergeStrategy.js.map +1 -1
- package/dist/esm/Metric.js.map +1 -1
- package/dist/esm/MetricHook.js.map +1 -1
- package/dist/esm/MetricKey.js.map +1 -1
- package/dist/esm/MetricPolling.js.map +1 -1
- package/dist/esm/MetricState.js.map +1 -1
- package/dist/esm/Micro.js.map +1 -1
- package/dist/esm/MutableHashMap.js.map +1 -1
- package/dist/esm/MutableHashSet.js.map +1 -1
- package/dist/esm/MutableList.js.map +1 -1
- package/dist/esm/MutableQueue.js.map +1 -1
- package/dist/esm/MutableRef.js.map +1 -1
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/Option.js.map +1 -1
- package/dist/esm/Order.js.map +1 -1
- package/dist/esm/Ordering.js.map +1 -1
- package/dist/esm/Pipeable.js.map +1 -1
- package/dist/esm/Pool.js.map +1 -1
- package/dist/esm/Predicate.js.map +1 -1
- package/dist/esm/PubSub.js.map +1 -1
- package/dist/esm/Queue.js.map +1 -1
- package/dist/esm/RcMap.js.map +1 -1
- package/dist/esm/Readable.js.map +1 -1
- package/dist/esm/Record.js.map +1 -1
- package/dist/esm/RedBlackTree.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/Runtime.js.map +1 -1
- package/dist/esm/RuntimeFlags.js.map +1 -1
- package/dist/esm/RuntimeFlagsPatch.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schedule.js.map +1 -1
- package/dist/esm/ScheduleInterval.js.map +1 -1
- package/dist/esm/ScheduleIntervals.js.map +1 -1
- package/dist/esm/Scheduler.js.map +1 -1
- package/dist/esm/Scope.js.map +1 -1
- package/dist/esm/ScopedRef.js.map +1 -1
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/SortedMap.js.map +1 -1
- package/dist/esm/SortedSet.js.map +1 -1
- package/dist/esm/Stream.js +14 -0
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/StreamHaltStrategy.js.map +1 -1
- package/dist/esm/String.js.map +1 -1
- package/dist/esm/Struct.js.map +1 -1
- package/dist/esm/Subscribable.js.map +1 -1
- package/dist/esm/SubscriptionRef.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/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.map +1 -1
- package/dist/esm/TestAnnotationMap.js.map +1 -1
- package/dist/esm/TestClock.js.map +1 -1
- package/dist/esm/TestServices.js.map +1 -1
- package/dist/esm/Trie.js.map +1 -1
- package/dist/esm/Tuple.js.map +1 -1
- package/dist/esm/Unify.js.map +1 -1
- package/dist/esm/UpstreamPullRequest.js.map +1 -1
- package/dist/esm/UpstreamPullStrategy.js.map +1 -1
- package/dist/esm/Utils.js +1 -14
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/internal/core.js +1 -1
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/runtime.js +1 -1
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/stream.js +9 -0
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/Array.ts +2723 -36
- package/src/BigDecimal.ts +585 -18
- package/src/BigInt.ts +516 -16
- package/src/Boolean.ts +241 -8
- package/src/Cause.ts +177 -1
- package/src/Channel.ts +766 -49
- package/src/ChildExecutorDecision.ts +12 -0
- package/src/Chunk.ts +818 -4
- package/src/Config.ts +187 -8
- package/src/ConfigError.ts +16 -0
- package/src/ConfigProvider.ts +89 -1
- package/src/ConfigProviderPathPatch.ts +32 -0
- package/src/Console.ts +37 -8
- package/src/Context.ts +232 -0
- package/src/Cron.ts +12 -0
- package/src/Data.ts +165 -0
- package/src/DateTime.ts +1006 -50
- package/src/Deferred.ts +170 -0
- package/src/Differ.ts +89 -27
- package/src/Duration.ts +156 -16
- package/src/Effect.ts +4297 -123
- package/src/Either.ts +650 -34
- package/src/Equivalence.ts +24 -0
- package/src/ExecutionStrategy.ts +29 -10
- package/src/Exit.ts +252 -0
- package/src/Fiber.ts +182 -0
- package/src/FiberHandle.ts +42 -0
- package/src/FiberId.ts +24 -0
- package/src/FiberMap.ts +144 -21
- package/src/FiberRef.ts +80 -0
- package/src/FiberRefs.ts +84 -0
- package/src/FiberRefsPatch.ts +35 -1
- package/src/FiberSet.ts +38 -0
- package/src/Function.ts +416 -31
- package/src/GroupBy.ts +38 -0
- package/src/Hash.ts +8 -0
- package/src/HashMap.ts +300 -0
- package/src/HashSet.ts +284 -0
- package/src/Iterable.ts +456 -6
- package/src/KeyedPool.ts +34 -0
- package/src/Layer.ts +426 -30
- package/src/List.ts +476 -3
- package/src/LogLevel.ts +46 -0
- package/src/Logger.ts +195 -4
- package/src/Mailbox.ts +16 -0
- package/src/MergeDecision.ts +8 -0
- package/src/MergeState.ts +8 -0
- package/src/MergeStrategy.ts +25 -8
- package/src/Metric.ts +426 -15
- package/src/MetricHook.ts +24 -0
- package/src/MetricKey.ts +62 -8
- package/src/MetricPolling.ts +42 -6
- package/src/MetricState.ts +16 -0
- package/src/Micro.ts +1212 -56
- package/src/MutableHashMap.ts +105 -1
- package/src/MutableHashSet.ts +24 -0
- package/src/MutableList.ts +36 -0
- package/src/MutableQueue.ts +62 -0
- package/src/MutableRef.ts +56 -0
- package/src/Number.ts +500 -16
- package/src/Option.ts +1042 -16
- package/src/Order.ts +24 -0
- package/src/Ordering.ts +66 -0
- package/src/Pipeable.ts +224 -21
- package/src/Pool.ts +16 -0
- package/src/Predicate.ts +498 -0
- package/src/PubSub.ts +28 -0
- package/src/Queue.ts +104 -0
- package/src/RcMap.ts +70 -0
- package/src/Readable.ts +18 -7
- package/src/Record.ts +814 -40
- package/src/RedBlackTree.ts +305 -1
- package/src/Ref.ts +88 -0
- package/src/Request.ts +76 -0
- package/src/RequestResolver.ts +145 -4
- package/src/Runtime.ts +134 -2
- package/src/RuntimeFlags.ts +100 -0
- package/src/RuntimeFlagsPatch.ts +112 -0
- package/src/STM.ts +1107 -11
- package/src/Schedule.ts +704 -0
- package/src/ScheduleInterval.ts +68 -0
- package/src/ScheduleIntervals.ts +50 -0
- package/src/Scheduler.ts +2 -0
- package/src/Scope.ts +36 -0
- package/src/ScopedRef.ts +22 -0
- package/src/Sink.ts +464 -0
- package/src/SortedMap.ts +76 -0
- package/src/SortedSet.ts +143 -3
- package/src/Stream.ts +5041 -54
- package/src/StreamHaltStrategy.ts +29 -12
- package/src/String.ts +200 -0
- package/src/Struct.ts +86 -7
- package/src/Subscribable.ts +16 -0
- package/src/SubscriptionRef.ts +159 -11
- package/src/SynchronizedRef.ts +169 -8
- package/src/TArray.ts +431 -1
- package/src/TDeferred.ts +24 -0
- package/src/TMap.ts +381 -12
- package/src/TPriorityQueue.ts +60 -0
- package/src/TPubSub.ts +28 -0
- package/src/TQueue.ts +108 -0
- package/src/TReentrantLock.ts +36 -0
- package/src/TRef.ts +88 -0
- package/src/TSemaphore.ts +40 -0
- package/src/TSet.ts +280 -12
- package/src/Take.ts +56 -0
- package/src/TestAnnotationMap.ts +45 -1
- package/src/TestClock.ts +6 -0
- package/src/TestServices.ts +66 -0
- package/src/Trie.ts +906 -0
- package/src/Tuple.ts +157 -8
- package/src/Unify.ts +19 -3
- package/src/UpstreamPullRequest.ts +12 -0
- package/src/UpstreamPullStrategy.ts +12 -0
- package/src/Utils.ts +1 -15
- package/src/internal/core.ts +1 -1
- package/src/internal/runtime.ts +1 -1
- package/src/internal/stream.ts +27 -0
- package/src/internal/version.ts +1 -1
package/src/Either.ts
CHANGED
|
@@ -139,7 +139,33 @@ export const left: <L>(left: L) => Either<never, L> = either.left
|
|
|
139
139
|
* @since 2.0.0
|
|
140
140
|
*/
|
|
141
141
|
export const fromNullable: {
|
|
142
|
+
/**
|
|
143
|
+
* Takes a lazy default and a nullable value, if the value is not nully (`null` or `undefined`), turn it into a `Right`, if the value is nully use
|
|
144
|
+
* the provided default as a `Left`.
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* import { Either } from "effect"
|
|
148
|
+
*
|
|
149
|
+
* assert.deepStrictEqual(Either.fromNullable(1, () => 'fallback'), Either.right(1))
|
|
150
|
+
* assert.deepStrictEqual(Either.fromNullable(null, () => 'fallback'), Either.left('fallback'))
|
|
151
|
+
*
|
|
152
|
+
* @category constructors
|
|
153
|
+
* @since 2.0.0
|
|
154
|
+
*/
|
|
142
155
|
<R, L>(onNullable: (right: R) => L): (self: R) => Either<NonNullable<R>, L>
|
|
156
|
+
/**
|
|
157
|
+
* Takes a lazy default and a nullable value, if the value is not nully (`null` or `undefined`), turn it into a `Right`, if the value is nully use
|
|
158
|
+
* the provided default as a `Left`.
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* import { Either } from "effect"
|
|
162
|
+
*
|
|
163
|
+
* assert.deepStrictEqual(Either.fromNullable(1, () => 'fallback'), Either.right(1))
|
|
164
|
+
* assert.deepStrictEqual(Either.fromNullable(null, () => 'fallback'), Either.left('fallback'))
|
|
165
|
+
*
|
|
166
|
+
* @category constructors
|
|
167
|
+
* @since 2.0.0
|
|
168
|
+
*/
|
|
143
169
|
<R, L>(self: R, onNullable: (right: R) => L): Either<NonNullable<R>, L>
|
|
144
170
|
} = dual(
|
|
145
171
|
2,
|
|
@@ -158,7 +184,27 @@ export const fromNullable: {
|
|
|
158
184
|
* @since 2.0.0
|
|
159
185
|
*/
|
|
160
186
|
export const fromOption: {
|
|
187
|
+
/**
|
|
188
|
+
* @example
|
|
189
|
+
* import { Either, Option } from "effect"
|
|
190
|
+
*
|
|
191
|
+
* assert.deepStrictEqual(Either.fromOption(Option.some(1), () => 'error'), Either.right(1))
|
|
192
|
+
* assert.deepStrictEqual(Either.fromOption(Option.none(), () => 'error'), Either.left('error'))
|
|
193
|
+
*
|
|
194
|
+
* @category constructors
|
|
195
|
+
* @since 2.0.0
|
|
196
|
+
*/
|
|
161
197
|
<L>(onNone: () => L): <R>(self: Option<R>) => Either<R, L>
|
|
198
|
+
/**
|
|
199
|
+
* @example
|
|
200
|
+
* import { Either, Option } from "effect"
|
|
201
|
+
*
|
|
202
|
+
* assert.deepStrictEqual(Either.fromOption(Option.some(1), () => 'error'), Either.right(1))
|
|
203
|
+
* assert.deepStrictEqual(Either.fromOption(Option.none(), () => 'error'), Either.left('error'))
|
|
204
|
+
*
|
|
205
|
+
* @category constructors
|
|
206
|
+
* @since 2.0.0
|
|
207
|
+
*/
|
|
162
208
|
<R, L>(self: Option<R>, onNone: () => L): Either<R, L>
|
|
163
209
|
} = either.fromOption
|
|
164
210
|
|
|
@@ -300,14 +346,27 @@ export const getEquivalence = <R, L>({ left, right }: {
|
|
|
300
346
|
* @since 2.0.0
|
|
301
347
|
*/
|
|
302
348
|
export const mapBoth: {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
<L,
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
349
|
+
/**
|
|
350
|
+
* @category mapping
|
|
351
|
+
* @since 2.0.0
|
|
352
|
+
*/
|
|
353
|
+
<L, L2, R, R2>(
|
|
354
|
+
options: {
|
|
355
|
+
readonly onLeft: (left: L) => L2
|
|
356
|
+
readonly onRight: (right: R) => R2
|
|
357
|
+
}
|
|
358
|
+
): (self: Either<R, L>) => Either<R2, L2>
|
|
359
|
+
/**
|
|
360
|
+
* @category mapping
|
|
361
|
+
* @since 2.0.0
|
|
362
|
+
*/
|
|
363
|
+
<L, R, L2, R2>(
|
|
364
|
+
self: Either<R, L>,
|
|
365
|
+
options: {
|
|
366
|
+
readonly onLeft: (left: L) => L2
|
|
367
|
+
readonly onRight: (right: R) => R2
|
|
368
|
+
}
|
|
369
|
+
): Either<R2, L2>
|
|
311
370
|
} = dual(
|
|
312
371
|
2,
|
|
313
372
|
<L, R, L2, R2>(self: Either<R, L>, { onLeft, onRight }: {
|
|
@@ -326,7 +385,25 @@ export const mapBoth: {
|
|
|
326
385
|
* @since 2.0.0
|
|
327
386
|
*/
|
|
328
387
|
export const mapLeft: {
|
|
388
|
+
/**
|
|
389
|
+
* Maps the `Left` side of an `Either` value to a new `Either` value.
|
|
390
|
+
*
|
|
391
|
+
* @param self - The input `Either` value to map.
|
|
392
|
+
* @param f - A transformation function to apply to the `Left` value of the input `Either`.
|
|
393
|
+
*
|
|
394
|
+
* @category mapping
|
|
395
|
+
* @since 2.0.0
|
|
396
|
+
*/
|
|
329
397
|
<L, L2>(f: (left: L) => L2): <R>(self: Either<R, L>) => Either<R, L2>
|
|
398
|
+
/**
|
|
399
|
+
* Maps the `Left` side of an `Either` value to a new `Either` value.
|
|
400
|
+
*
|
|
401
|
+
* @param self - The input `Either` value to map.
|
|
402
|
+
* @param f - A transformation function to apply to the `Left` value of the input `Either`.
|
|
403
|
+
*
|
|
404
|
+
* @category mapping
|
|
405
|
+
* @since 2.0.0
|
|
406
|
+
*/
|
|
330
407
|
<R, L, L2>(self: Either<R, L>, f: (left: L) => L2): Either<R, L2>
|
|
331
408
|
} = dual(
|
|
332
409
|
2,
|
|
@@ -344,7 +421,25 @@ export const mapLeft: {
|
|
|
344
421
|
* @since 2.0.0
|
|
345
422
|
*/
|
|
346
423
|
export const map: {
|
|
424
|
+
/**
|
|
425
|
+
* Maps the `Right` side of an `Either` value to a new `Either` value.
|
|
426
|
+
*
|
|
427
|
+
* @param self - An `Either` to map
|
|
428
|
+
* @param f - The function to map over the value of the `Either`
|
|
429
|
+
*
|
|
430
|
+
* @category mapping
|
|
431
|
+
* @since 2.0.0
|
|
432
|
+
*/
|
|
347
433
|
<R, R2>(f: (right: R) => R2): <L>(self: Either<R, L>) => Either<R2, L>
|
|
434
|
+
/**
|
|
435
|
+
* Maps the `Right` side of an `Either` value to a new `Either` value.
|
|
436
|
+
*
|
|
437
|
+
* @param self - An `Either` to map
|
|
438
|
+
* @param f - The function to map over the value of the `Either`
|
|
439
|
+
*
|
|
440
|
+
* @category mapping
|
|
441
|
+
* @since 2.0.0
|
|
442
|
+
*/
|
|
348
443
|
<R, L, R2>(self: Either<R, L>, f: (right: R) => R2): Either<R2, L>
|
|
349
444
|
} = dual(
|
|
350
445
|
2,
|
|
@@ -373,14 +468,59 @@ export const map: {
|
|
|
373
468
|
* @since 2.0.0
|
|
374
469
|
*/
|
|
375
470
|
export const match: {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
471
|
+
/**
|
|
472
|
+
* Takes two functions and an `Either` value, if the value is a `Left` the inner value is applied to the `onLeft function,
|
|
473
|
+
* if the value is a `Right` the inner value is applied to the `onRight` function.
|
|
474
|
+
*
|
|
475
|
+
* @example
|
|
476
|
+
* import { pipe, Either } from "effect"
|
|
477
|
+
*
|
|
478
|
+
* const onLeft = (strings: ReadonlyArray<string>): string => `strings: ${strings.join(', ')}`
|
|
479
|
+
*
|
|
480
|
+
* const onRight = (value: number): string => `Ok: ${value}`
|
|
481
|
+
*
|
|
482
|
+
* assert.deepStrictEqual(pipe(Either.right(1), Either.match({ onLeft, onRight })), 'Ok: 1')
|
|
483
|
+
* assert.deepStrictEqual(
|
|
484
|
+
* pipe(Either.left(['string 1', 'string 2']), Either.match({ onLeft, onRight })),
|
|
485
|
+
* 'strings: string 1, string 2'
|
|
486
|
+
* )
|
|
487
|
+
*
|
|
488
|
+
* @category pattern matching
|
|
489
|
+
* @since 2.0.0
|
|
490
|
+
*/
|
|
491
|
+
<L, B, R, C = B>(
|
|
492
|
+
options: {
|
|
493
|
+
readonly onLeft: (left: L) => B
|
|
494
|
+
readonly onRight: (right: R) => C
|
|
495
|
+
}
|
|
496
|
+
): (self: Either<R, L>) => B | C
|
|
497
|
+
/**
|
|
498
|
+
* Takes two functions and an `Either` value, if the value is a `Left` the inner value is applied to the `onLeft function,
|
|
499
|
+
* if the value is a `Right` the inner value is applied to the `onRight` function.
|
|
500
|
+
*
|
|
501
|
+
* @example
|
|
502
|
+
* import { pipe, Either } from "effect"
|
|
503
|
+
*
|
|
504
|
+
* const onLeft = (strings: ReadonlyArray<string>): string => `strings: ${strings.join(', ')}`
|
|
505
|
+
*
|
|
506
|
+
* const onRight = (value: number): string => `Ok: ${value}`
|
|
507
|
+
*
|
|
508
|
+
* assert.deepStrictEqual(pipe(Either.right(1), Either.match({ onLeft, onRight })), 'Ok: 1')
|
|
509
|
+
* assert.deepStrictEqual(
|
|
510
|
+
* pipe(Either.left(['string 1', 'string 2']), Either.match({ onLeft, onRight })),
|
|
511
|
+
* 'strings: string 1, string 2'
|
|
512
|
+
* )
|
|
513
|
+
*
|
|
514
|
+
* @category pattern matching
|
|
515
|
+
* @since 2.0.0
|
|
516
|
+
*/
|
|
517
|
+
<R, L, B, C = B>(
|
|
518
|
+
self: Either<R, L>,
|
|
519
|
+
options: {
|
|
520
|
+
readonly onLeft: (left: L) => B
|
|
521
|
+
readonly onRight: (right: R) => C
|
|
522
|
+
}
|
|
523
|
+
): B | C
|
|
384
524
|
} = dual(
|
|
385
525
|
2,
|
|
386
526
|
<R, L, B, C = B>(self: Either<R, L>, { onLeft, onRight }: {
|
|
@@ -419,16 +559,125 @@ export const match: {
|
|
|
419
559
|
* @since 3.4.0
|
|
420
560
|
*/
|
|
421
561
|
export const liftPredicate: {
|
|
562
|
+
/**
|
|
563
|
+
* Transforms a `Predicate` function into a `Right` of the input value if the predicate returns `true`
|
|
564
|
+
* or `Left` of the result of the provided function if the predicate returns false
|
|
565
|
+
*
|
|
566
|
+
* @param predicate - A `Predicate` function that takes in a value of type `A` and returns a boolean.
|
|
567
|
+
*
|
|
568
|
+
* @example
|
|
569
|
+
* import { pipe, Either } from "effect"
|
|
570
|
+
*
|
|
571
|
+
* const isPositive = (n: number): boolean => n > 0
|
|
572
|
+
*
|
|
573
|
+
* assert.deepStrictEqual(
|
|
574
|
+
* pipe(
|
|
575
|
+
* 1,
|
|
576
|
+
* Either.liftPredicate(isPositive, n => `${n} is not positive`)
|
|
577
|
+
* ),
|
|
578
|
+
* Either.right(1)
|
|
579
|
+
* )
|
|
580
|
+
* assert.deepStrictEqual(
|
|
581
|
+
* pipe(
|
|
582
|
+
* 0,
|
|
583
|
+
* Either.liftPredicate(isPositive, n => `${n} is not positive`)
|
|
584
|
+
* ),
|
|
585
|
+
* Either.left("0 is not positive")
|
|
586
|
+
* )
|
|
587
|
+
*
|
|
588
|
+
* @category lifting
|
|
589
|
+
* @since 3.4.0
|
|
590
|
+
*/
|
|
422
591
|
<A, B extends A, E>(refinement: Refinement<NoInfer<A>, B>, orLeftWith: (a: NoInfer<A>) => E): (a: A) => Either<B, E>
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
592
|
+
/**
|
|
593
|
+
* Transforms a `Predicate` function into a `Right` of the input value if the predicate returns `true`
|
|
594
|
+
* or `Left` of the result of the provided function if the predicate returns false
|
|
595
|
+
*
|
|
596
|
+
* @param predicate - A `Predicate` function that takes in a value of type `A` and returns a boolean.
|
|
597
|
+
*
|
|
598
|
+
* @example
|
|
599
|
+
* import { pipe, Either } from "effect"
|
|
600
|
+
*
|
|
601
|
+
* const isPositive = (n: number): boolean => n > 0
|
|
602
|
+
*
|
|
603
|
+
* assert.deepStrictEqual(
|
|
604
|
+
* pipe(
|
|
605
|
+
* 1,
|
|
606
|
+
* Either.liftPredicate(isPositive, n => `${n} is not positive`)
|
|
607
|
+
* ),
|
|
608
|
+
* Either.right(1)
|
|
609
|
+
* )
|
|
610
|
+
* assert.deepStrictEqual(
|
|
611
|
+
* pipe(
|
|
612
|
+
* 0,
|
|
613
|
+
* Either.liftPredicate(isPositive, n => `${n} is not positive`)
|
|
614
|
+
* ),
|
|
615
|
+
* Either.left("0 is not positive")
|
|
616
|
+
* )
|
|
617
|
+
*
|
|
618
|
+
* @category lifting
|
|
619
|
+
* @since 3.4.0
|
|
620
|
+
*/
|
|
621
|
+
<A, E>(predicate: Predicate<NoInfer<A>>, orLeftWith: (a: NoInfer<A>) => E): (a: A) => Either<A, E>
|
|
622
|
+
/**
|
|
623
|
+
* Transforms a `Predicate` function into a `Right` of the input value if the predicate returns `true`
|
|
624
|
+
* or `Left` of the result of the provided function if the predicate returns false
|
|
625
|
+
*
|
|
626
|
+
* @param predicate - A `Predicate` function that takes in a value of type `A` and returns a boolean.
|
|
627
|
+
*
|
|
628
|
+
* @example
|
|
629
|
+
* import { pipe, Either } from "effect"
|
|
630
|
+
*
|
|
631
|
+
* const isPositive = (n: number): boolean => n > 0
|
|
632
|
+
*
|
|
633
|
+
* assert.deepStrictEqual(
|
|
634
|
+
* pipe(
|
|
635
|
+
* 1,
|
|
636
|
+
* Either.liftPredicate(isPositive, n => `${n} is not positive`)
|
|
637
|
+
* ),
|
|
638
|
+
* Either.right(1)
|
|
639
|
+
* )
|
|
640
|
+
* assert.deepStrictEqual(
|
|
641
|
+
* pipe(
|
|
642
|
+
* 0,
|
|
643
|
+
* Either.liftPredicate(isPositive, n => `${n} is not positive`)
|
|
644
|
+
* ),
|
|
645
|
+
* Either.left("0 is not positive")
|
|
646
|
+
* )
|
|
647
|
+
*
|
|
648
|
+
* @category lifting
|
|
649
|
+
* @since 3.4.0
|
|
650
|
+
*/
|
|
651
|
+
<A, E, B extends A>(self: A, refinement: Refinement<A, B>, orLeftWith: (a: A) => E): Either<B, E>
|
|
652
|
+
/**
|
|
653
|
+
* Transforms a `Predicate` function into a `Right` of the input value if the predicate returns `true`
|
|
654
|
+
* or `Left` of the result of the provided function if the predicate returns false
|
|
655
|
+
*
|
|
656
|
+
* @param predicate - A `Predicate` function that takes in a value of type `A` and returns a boolean.
|
|
657
|
+
*
|
|
658
|
+
* @example
|
|
659
|
+
* import { pipe, Either } from "effect"
|
|
660
|
+
*
|
|
661
|
+
* const isPositive = (n: number): boolean => n > 0
|
|
662
|
+
*
|
|
663
|
+
* assert.deepStrictEqual(
|
|
664
|
+
* pipe(
|
|
665
|
+
* 1,
|
|
666
|
+
* Either.liftPredicate(isPositive, n => `${n} is not positive`)
|
|
667
|
+
* ),
|
|
668
|
+
* Either.right(1)
|
|
669
|
+
* )
|
|
670
|
+
* assert.deepStrictEqual(
|
|
671
|
+
* pipe(
|
|
672
|
+
* 0,
|
|
673
|
+
* Either.liftPredicate(isPositive, n => `${n} is not positive`)
|
|
674
|
+
* ),
|
|
675
|
+
* Either.left("0 is not positive")
|
|
676
|
+
* )
|
|
677
|
+
*
|
|
678
|
+
* @category lifting
|
|
679
|
+
* @since 3.4.0
|
|
680
|
+
*/
|
|
432
681
|
<A, E>(
|
|
433
682
|
self: A,
|
|
434
683
|
predicate: Predicate<NoInfer<A>>,
|
|
@@ -468,19 +717,127 @@ export const liftPredicate: {
|
|
|
468
717
|
* @category filtering & conditionals
|
|
469
718
|
*/
|
|
470
719
|
export const filterOrLeft: {
|
|
720
|
+
/**
|
|
721
|
+
* Filter the right value with the provided function.
|
|
722
|
+
* If the predicate fails, set the left value with the result of the provided function.
|
|
723
|
+
*
|
|
724
|
+
* @example
|
|
725
|
+
* import { pipe, Either } from "effect"
|
|
726
|
+
*
|
|
727
|
+
* const isPositive = (n: number): boolean => n > 0
|
|
728
|
+
*
|
|
729
|
+
* assert.deepStrictEqual(
|
|
730
|
+
* pipe(
|
|
731
|
+
* Either.right(1),
|
|
732
|
+
* Either.filterOrLeft(isPositive, n => `${n} is not positive`)
|
|
733
|
+
* ),
|
|
734
|
+
* Either.right(1)
|
|
735
|
+
* )
|
|
736
|
+
* assert.deepStrictEqual(
|
|
737
|
+
* pipe(
|
|
738
|
+
* Either.right(0),
|
|
739
|
+
* Either.filterOrLeft(isPositive, n => `${n} is not positive`)
|
|
740
|
+
* ),
|
|
741
|
+
* Either.left("0 is not positive")
|
|
742
|
+
* )
|
|
743
|
+
*
|
|
744
|
+
* @since 2.0.0
|
|
745
|
+
* @category filtering & conditionals
|
|
746
|
+
*/
|
|
471
747
|
<R, B extends R, L2>(
|
|
472
748
|
refinement: Refinement<NoInfer<R>, B>,
|
|
473
749
|
orLeftWith: (right: NoInfer<R>) => L2
|
|
474
750
|
): <L>(self: Either<R, L>) => Either<B, L2 | L>
|
|
751
|
+
/**
|
|
752
|
+
* Filter the right value with the provided function.
|
|
753
|
+
* If the predicate fails, set the left value with the result of the provided function.
|
|
754
|
+
*
|
|
755
|
+
* @example
|
|
756
|
+
* import { pipe, Either } from "effect"
|
|
757
|
+
*
|
|
758
|
+
* const isPositive = (n: number): boolean => n > 0
|
|
759
|
+
*
|
|
760
|
+
* assert.deepStrictEqual(
|
|
761
|
+
* pipe(
|
|
762
|
+
* Either.right(1),
|
|
763
|
+
* Either.filterOrLeft(isPositive, n => `${n} is not positive`)
|
|
764
|
+
* ),
|
|
765
|
+
* Either.right(1)
|
|
766
|
+
* )
|
|
767
|
+
* assert.deepStrictEqual(
|
|
768
|
+
* pipe(
|
|
769
|
+
* Either.right(0),
|
|
770
|
+
* Either.filterOrLeft(isPositive, n => `${n} is not positive`)
|
|
771
|
+
* ),
|
|
772
|
+
* Either.left("0 is not positive")
|
|
773
|
+
* )
|
|
774
|
+
*
|
|
775
|
+
* @since 2.0.0
|
|
776
|
+
* @category filtering & conditionals
|
|
777
|
+
*/
|
|
475
778
|
<R, L2>(
|
|
476
779
|
predicate: Predicate<NoInfer<R>>,
|
|
477
780
|
orLeftWith: (right: NoInfer<R>) => L2
|
|
478
781
|
): <L>(self: Either<R, L>) => Either<R, L2 | L>
|
|
782
|
+
/**
|
|
783
|
+
* Filter the right value with the provided function.
|
|
784
|
+
* If the predicate fails, set the left value with the result of the provided function.
|
|
785
|
+
*
|
|
786
|
+
* @example
|
|
787
|
+
* import { pipe, Either } from "effect"
|
|
788
|
+
*
|
|
789
|
+
* const isPositive = (n: number): boolean => n > 0
|
|
790
|
+
*
|
|
791
|
+
* assert.deepStrictEqual(
|
|
792
|
+
* pipe(
|
|
793
|
+
* Either.right(1),
|
|
794
|
+
* Either.filterOrLeft(isPositive, n => `${n} is not positive`)
|
|
795
|
+
* ),
|
|
796
|
+
* Either.right(1)
|
|
797
|
+
* )
|
|
798
|
+
* assert.deepStrictEqual(
|
|
799
|
+
* pipe(
|
|
800
|
+
* Either.right(0),
|
|
801
|
+
* Either.filterOrLeft(isPositive, n => `${n} is not positive`)
|
|
802
|
+
* ),
|
|
803
|
+
* Either.left("0 is not positive")
|
|
804
|
+
* )
|
|
805
|
+
*
|
|
806
|
+
* @since 2.0.0
|
|
807
|
+
* @category filtering & conditionals
|
|
808
|
+
*/
|
|
479
809
|
<R, L, B extends R, L2>(
|
|
480
810
|
self: Either<R, L>,
|
|
481
811
|
refinement: Refinement<R, B>,
|
|
482
812
|
orLeftWith: (right: R) => L2
|
|
483
813
|
): Either<B, L | L2>
|
|
814
|
+
/**
|
|
815
|
+
* Filter the right value with the provided function.
|
|
816
|
+
* If the predicate fails, set the left value with the result of the provided function.
|
|
817
|
+
*
|
|
818
|
+
* @example
|
|
819
|
+
* import { pipe, Either } from "effect"
|
|
820
|
+
*
|
|
821
|
+
* const isPositive = (n: number): boolean => n > 0
|
|
822
|
+
*
|
|
823
|
+
* assert.deepStrictEqual(
|
|
824
|
+
* pipe(
|
|
825
|
+
* Either.right(1),
|
|
826
|
+
* Either.filterOrLeft(isPositive, n => `${n} is not positive`)
|
|
827
|
+
* ),
|
|
828
|
+
* Either.right(1)
|
|
829
|
+
* )
|
|
830
|
+
* assert.deepStrictEqual(
|
|
831
|
+
* pipe(
|
|
832
|
+
* Either.right(0),
|
|
833
|
+
* Either.filterOrLeft(isPositive, n => `${n} is not positive`)
|
|
834
|
+
* ),
|
|
835
|
+
* Either.left("0 is not positive")
|
|
836
|
+
* )
|
|
837
|
+
*
|
|
838
|
+
* @since 2.0.0
|
|
839
|
+
* @category filtering & conditionals
|
|
840
|
+
*/
|
|
484
841
|
<R, L, E2>(self: Either<R, L>, predicate: Predicate<R>, orLeftWith: (right: R) => E2): Either<R, L | E2>
|
|
485
842
|
} = dual(3, <R, L, E2>(
|
|
486
843
|
self: Either<R, L>,
|
|
@@ -510,7 +867,31 @@ export const merge: <R, L>(self: Either<R, L>) => L | R = match({
|
|
|
510
867
|
* @since 2.0.0
|
|
511
868
|
*/
|
|
512
869
|
export const getOrElse: {
|
|
870
|
+
/**
|
|
871
|
+
* Returns the wrapped value if it's a `Right` or a default value if is a `Left`.
|
|
872
|
+
*
|
|
873
|
+
* @example
|
|
874
|
+
* import { Either } from "effect"
|
|
875
|
+
*
|
|
876
|
+
* assert.deepStrictEqual(Either.getOrElse(Either.right(1), (error) => error + "!"), 1)
|
|
877
|
+
* assert.deepStrictEqual(Either.getOrElse(Either.left("not a number"), (error) => error + "!"), "not a number!")
|
|
878
|
+
*
|
|
879
|
+
* @category getters
|
|
880
|
+
* @since 2.0.0
|
|
881
|
+
*/
|
|
513
882
|
<L, R2>(onLeft: (left: L) => R2): <R>(self: Either<R, L>) => R2 | R
|
|
883
|
+
/**
|
|
884
|
+
* Returns the wrapped value if it's a `Right` or a default value if is a `Left`.
|
|
885
|
+
*
|
|
886
|
+
* @example
|
|
887
|
+
* import { Either } from "effect"
|
|
888
|
+
*
|
|
889
|
+
* assert.deepStrictEqual(Either.getOrElse(Either.right(1), (error) => error + "!"), 1)
|
|
890
|
+
* assert.deepStrictEqual(Either.getOrElse(Either.left("not a number"), (error) => error + "!"), "not a number!")
|
|
891
|
+
*
|
|
892
|
+
* @category getters
|
|
893
|
+
* @since 2.0.0
|
|
894
|
+
*/
|
|
514
895
|
<R, L, R2>(self: Either<R, L>, onLeft: (left: L) => R2): R | R2
|
|
515
896
|
} = dual(
|
|
516
897
|
2,
|
|
@@ -562,7 +943,47 @@ export const getOrUndefined: <R, L>(self: Either<R, L>) => R | undefined = getOr
|
|
|
562
943
|
* @since 2.0.0
|
|
563
944
|
*/
|
|
564
945
|
export const getOrThrowWith: {
|
|
946
|
+
/**
|
|
947
|
+
* Extracts the value of an `Either` or throws if the `Either` is `Left`.
|
|
948
|
+
*
|
|
949
|
+
* If a default error is sufficient for your use case and you don't need to configure the thrown error, see {@link getOrThrow}.
|
|
950
|
+
*
|
|
951
|
+
* @param self - The `Either` to extract the value from.
|
|
952
|
+
* @param onLeft - A function that will be called if the `Either` is `Left`. It returns the error to be thrown.
|
|
953
|
+
*
|
|
954
|
+
* @example
|
|
955
|
+
* import { Either } from "effect"
|
|
956
|
+
*
|
|
957
|
+
* assert.deepStrictEqual(
|
|
958
|
+
* Either.getOrThrowWith(Either.right(1), () => new Error('Unexpected Left')),
|
|
959
|
+
* 1
|
|
960
|
+
* )
|
|
961
|
+
* assert.throws(() => Either.getOrThrowWith(Either.left("error"), () => new Error('Unexpected Left')))
|
|
962
|
+
*
|
|
963
|
+
* @category getters
|
|
964
|
+
* @since 2.0.0
|
|
965
|
+
*/
|
|
565
966
|
<L>(onLeft: (left: L) => unknown): <A>(self: Either<A, L>) => A
|
|
967
|
+
/**
|
|
968
|
+
* Extracts the value of an `Either` or throws if the `Either` is `Left`.
|
|
969
|
+
*
|
|
970
|
+
* If a default error is sufficient for your use case and you don't need to configure the thrown error, see {@link getOrThrow}.
|
|
971
|
+
*
|
|
972
|
+
* @param self - The `Either` to extract the value from.
|
|
973
|
+
* @param onLeft - A function that will be called if the `Either` is `Left`. It returns the error to be thrown.
|
|
974
|
+
*
|
|
975
|
+
* @example
|
|
976
|
+
* import { Either } from "effect"
|
|
977
|
+
*
|
|
978
|
+
* assert.deepStrictEqual(
|
|
979
|
+
* Either.getOrThrowWith(Either.right(1), () => new Error('Unexpected Left')),
|
|
980
|
+
* 1
|
|
981
|
+
* )
|
|
982
|
+
* assert.throws(() => Either.getOrThrowWith(Either.left("error"), () => new Error('Unexpected Left')))
|
|
983
|
+
*
|
|
984
|
+
* @category getters
|
|
985
|
+
* @since 2.0.0
|
|
986
|
+
*/
|
|
566
987
|
<R, L>(self: Either<R, L>, onLeft: (left: L) => unknown): R
|
|
567
988
|
} = dual(2, <R, L>(self: Either<R, L>, onLeft: (left: L) => unknown): R => {
|
|
568
989
|
if (isRight(self)) {
|
|
@@ -602,7 +1023,25 @@ export const getOrThrow: <R, L>(self: Either<R, L>) => R = getOrThrowWith(() =>
|
|
|
602
1023
|
* @since 2.0.0
|
|
603
1024
|
*/
|
|
604
1025
|
export const orElse: {
|
|
1026
|
+
/**
|
|
1027
|
+
* Returns `self` if it is a `Right` or `that` otherwise.
|
|
1028
|
+
*
|
|
1029
|
+
* @param self - The input `Either` value to check and potentially return.
|
|
1030
|
+
* @param that - A function that takes the error value from `self` (if it's a `Left`) and returns a new `Either` value.
|
|
1031
|
+
*
|
|
1032
|
+
* @category error handling
|
|
1033
|
+
* @since 2.0.0
|
|
1034
|
+
*/
|
|
605
1035
|
<L, R2, L2>(that: (left: L) => Either<R2, L2>): <R>(self: Either<R, L>) => Either<R | R2, L2>
|
|
1036
|
+
/**
|
|
1037
|
+
* Returns `self` if it is a `Right` or `that` otherwise.
|
|
1038
|
+
*
|
|
1039
|
+
* @param self - The input `Either` value to check and potentially return.
|
|
1040
|
+
* @param that - A function that takes the error value from `self` (if it's a `Left`) and returns a new `Either` value.
|
|
1041
|
+
*
|
|
1042
|
+
* @category error handling
|
|
1043
|
+
* @since 2.0.0
|
|
1044
|
+
*/
|
|
606
1045
|
<R, L, R2, L2>(self: Either<R, L>, that: (left: L) => Either<R2, L2>): Either<R | R2, L2>
|
|
607
1046
|
} = dual(
|
|
608
1047
|
2,
|
|
@@ -615,7 +1054,15 @@ export const orElse: {
|
|
|
615
1054
|
* @since 2.0.0
|
|
616
1055
|
*/
|
|
617
1056
|
export const flatMap: {
|
|
1057
|
+
/**
|
|
1058
|
+
* @category sequencing
|
|
1059
|
+
* @since 2.0.0
|
|
1060
|
+
*/
|
|
618
1061
|
<R, R2, L2>(f: (right: R) => Either<R2, L2>): <L>(self: Either<R, L>) => Either<R2, L | L2>
|
|
1062
|
+
/**
|
|
1063
|
+
* @category sequencing
|
|
1064
|
+
* @since 2.0.0
|
|
1065
|
+
*/
|
|
619
1066
|
<R, L, R2, L2>(self: Either<R, L>, f: (right: R) => Either<R2, L2>): Either<R2, L | L2>
|
|
620
1067
|
} = dual(
|
|
621
1068
|
2,
|
|
@@ -630,13 +1077,61 @@ export const flatMap: {
|
|
|
630
1077
|
* @since 2.0.0
|
|
631
1078
|
*/
|
|
632
1079
|
export const andThen: {
|
|
1080
|
+
/**
|
|
1081
|
+
* Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
|
|
1082
|
+
*
|
|
1083
|
+
* @category sequencing
|
|
1084
|
+
* @since 2.0.0
|
|
1085
|
+
*/
|
|
633
1086
|
<R, R2, L2>(f: (right: R) => Either<R2, L2>): <L>(self: Either<R, L>) => Either<R2, L | L2>
|
|
1087
|
+
/**
|
|
1088
|
+
* Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
|
|
1089
|
+
*
|
|
1090
|
+
* @category sequencing
|
|
1091
|
+
* @since 2.0.0
|
|
1092
|
+
*/
|
|
634
1093
|
<R2, L2>(f: Either<R2, L2>): <L, R1>(self: Either<R1, L>) => Either<R2, L | L2>
|
|
1094
|
+
/**
|
|
1095
|
+
* Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
|
|
1096
|
+
*
|
|
1097
|
+
* @category sequencing
|
|
1098
|
+
* @since 2.0.0
|
|
1099
|
+
*/
|
|
635
1100
|
<R, R2>(f: (right: R) => R2): <L>(self: Either<R, L>) => Either<R2, L>
|
|
1101
|
+
/**
|
|
1102
|
+
* Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
|
|
1103
|
+
*
|
|
1104
|
+
* @category sequencing
|
|
1105
|
+
* @since 2.0.0
|
|
1106
|
+
*/
|
|
636
1107
|
<R2>(right: NotFunction<R2>): <R1, L>(self: Either<R1, L>) => Either<R2, L>
|
|
1108
|
+
/**
|
|
1109
|
+
* Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
|
|
1110
|
+
*
|
|
1111
|
+
* @category sequencing
|
|
1112
|
+
* @since 2.0.0
|
|
1113
|
+
*/
|
|
637
1114
|
<R, L, R2, L2>(self: Either<R, L>, f: (right: R) => Either<R2, L2>): Either<R2, L | L2>
|
|
1115
|
+
/**
|
|
1116
|
+
* Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
|
|
1117
|
+
*
|
|
1118
|
+
* @category sequencing
|
|
1119
|
+
* @since 2.0.0
|
|
1120
|
+
*/
|
|
638
1121
|
<R, L, R2, L2>(self: Either<R, L>, f: Either<R2, L2>): Either<R2, L | L2>
|
|
1122
|
+
/**
|
|
1123
|
+
* Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
|
|
1124
|
+
*
|
|
1125
|
+
* @category sequencing
|
|
1126
|
+
* @since 2.0.0
|
|
1127
|
+
*/
|
|
639
1128
|
<R, L, R2>(self: Either<R, L>, f: (right: R) => R2): Either<R2, L>
|
|
1129
|
+
/**
|
|
1130
|
+
* Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
|
|
1131
|
+
*
|
|
1132
|
+
* @category sequencing
|
|
1133
|
+
* @since 2.0.0
|
|
1134
|
+
*/
|
|
640
1135
|
<R, L, R2>(self: Either<R, L>, f: NotFunction<R2>): Either<R2, L>
|
|
641
1136
|
} = dual(
|
|
642
1137
|
2,
|
|
@@ -652,15 +1147,16 @@ export const andThen: {
|
|
|
652
1147
|
* @since 2.0.0
|
|
653
1148
|
*/
|
|
654
1149
|
export const zipWith: {
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
<
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
1150
|
+
/**
|
|
1151
|
+
* @category zipping
|
|
1152
|
+
* @since 2.0.0
|
|
1153
|
+
*/
|
|
1154
|
+
<R2, L2, R, B>(that: Either<R2, L2>, f: (right: R, right2: R2) => B): <L>(self: Either<R, L>) => Either<B, L2 | L>
|
|
1155
|
+
/**
|
|
1156
|
+
* @category zipping
|
|
1157
|
+
* @since 2.0.0
|
|
1158
|
+
*/
|
|
1159
|
+
<R, L, R2, L2, B>(self: Either<R, L>, that: Either<R2, L2>, f: (right: R, right2: R2) => B): Either<B, L | L2>
|
|
664
1160
|
} = dual(
|
|
665
1161
|
3,
|
|
666
1162
|
<R, L, R2, L2, B>(self: Either<R, L>, that: Either<R2, L2>, f: (right: R, right2: R2) => B): Either<B, L | L2> =>
|
|
@@ -672,7 +1168,15 @@ export const zipWith: {
|
|
|
672
1168
|
* @since 2.0.0
|
|
673
1169
|
*/
|
|
674
1170
|
export const ap: {
|
|
1171
|
+
/**
|
|
1172
|
+
* @category combining
|
|
1173
|
+
* @since 2.0.0
|
|
1174
|
+
*/
|
|
675
1175
|
<R, L2>(that: Either<R, L2>): <R2, L>(self: Either<(right: R) => R2, L>) => Either<R2, L | L2>
|
|
1176
|
+
/**
|
|
1177
|
+
* @category combining
|
|
1178
|
+
* @since 2.0.0
|
|
1179
|
+
*/
|
|
676
1180
|
<R, R2, L, L2>(self: Either<(right: R) => R2, L>, that: Either<R, L2>): Either<R2, L | L2>
|
|
677
1181
|
} = dual(
|
|
678
1182
|
2,
|
|
@@ -849,10 +1353,66 @@ export const Do: Either<{}> = right({})
|
|
|
849
1353
|
* @since 2.0.0
|
|
850
1354
|
*/
|
|
851
1355
|
export const bind: {
|
|
1356
|
+
/**
|
|
1357
|
+
* The "do simulation" in Effect allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
|
|
1358
|
+
*
|
|
1359
|
+
* Here's how the do simulation works:
|
|
1360
|
+
*
|
|
1361
|
+
* 1. Start the do simulation using the `Do` value
|
|
1362
|
+
* 2. Within the do simulation scope, you can use the `bind` function to define variables and bind them to `Either` values
|
|
1363
|
+
* 3. You can accumulate multiple `bind` statements to define multiple variables within the scope
|
|
1364
|
+
* 4. Inside the do simulation scope, you can also use the `let` function to define variables and bind them to simple values
|
|
1365
|
+
*
|
|
1366
|
+
* @see {@link Do}
|
|
1367
|
+
* @see {@link bindTo}
|
|
1368
|
+
* @see {@link let_ let}
|
|
1369
|
+
*
|
|
1370
|
+
* @example
|
|
1371
|
+
* import { Either, pipe } from "effect"
|
|
1372
|
+
*
|
|
1373
|
+
* const result = pipe(
|
|
1374
|
+
* Either.Do,
|
|
1375
|
+
* Either.bind("x", () => Either.right(2)),
|
|
1376
|
+
* Either.bind("y", () => Either.right(3)),
|
|
1377
|
+
* Either.let("sum", ({ x, y }) => x + y)
|
|
1378
|
+
* )
|
|
1379
|
+
* assert.deepStrictEqual(result, Either.right({ x: 2, y: 3, sum: 5 }))
|
|
1380
|
+
*
|
|
1381
|
+
* @category do notation
|
|
1382
|
+
* @since 2.0.0
|
|
1383
|
+
*/
|
|
852
1384
|
<N extends string, A extends object, B, L2>(
|
|
853
1385
|
name: Exclude<N, keyof A>,
|
|
854
1386
|
f: (a: A) => Either<B, L2>
|
|
855
1387
|
): <L1>(self: Either<A, L1>) => Either<{ [K in N | keyof A]: K extends keyof A ? A[K] : B }, L1 | L2>
|
|
1388
|
+
/**
|
|
1389
|
+
* The "do simulation" in Effect allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
|
|
1390
|
+
*
|
|
1391
|
+
* Here's how the do simulation works:
|
|
1392
|
+
*
|
|
1393
|
+
* 1. Start the do simulation using the `Do` value
|
|
1394
|
+
* 2. Within the do simulation scope, you can use the `bind` function to define variables and bind them to `Either` values
|
|
1395
|
+
* 3. You can accumulate multiple `bind` statements to define multiple variables within the scope
|
|
1396
|
+
* 4. Inside the do simulation scope, you can also use the `let` function to define variables and bind them to simple values
|
|
1397
|
+
*
|
|
1398
|
+
* @see {@link Do}
|
|
1399
|
+
* @see {@link bindTo}
|
|
1400
|
+
* @see {@link let_ let}
|
|
1401
|
+
*
|
|
1402
|
+
* @example
|
|
1403
|
+
* import { Either, pipe } from "effect"
|
|
1404
|
+
*
|
|
1405
|
+
* const result = pipe(
|
|
1406
|
+
* Either.Do,
|
|
1407
|
+
* Either.bind("x", () => Either.right(2)),
|
|
1408
|
+
* Either.bind("y", () => Either.right(3)),
|
|
1409
|
+
* Either.let("sum", ({ x, y }) => x + y)
|
|
1410
|
+
* )
|
|
1411
|
+
* assert.deepStrictEqual(result, Either.right({ x: 2, y: 3, sum: 5 }))
|
|
1412
|
+
*
|
|
1413
|
+
* @category do notation
|
|
1414
|
+
* @since 2.0.0
|
|
1415
|
+
*/
|
|
856
1416
|
<A extends object, L1, N extends string, B, L2>(
|
|
857
1417
|
self: Either<A, L1>,
|
|
858
1418
|
name: Exclude<N, keyof A>,
|
|
@@ -889,7 +1449,63 @@ export const bind: {
|
|
|
889
1449
|
* @since 2.0.0
|
|
890
1450
|
*/
|
|
891
1451
|
export const bindTo: {
|
|
1452
|
+
/**
|
|
1453
|
+
* The "do simulation" in Effect allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
|
|
1454
|
+
*
|
|
1455
|
+
* Here's how the do simulation works:
|
|
1456
|
+
*
|
|
1457
|
+
* 1. Start the do simulation using the `Do` value
|
|
1458
|
+
* 2. Within the do simulation scope, you can use the `bind` function to define variables and bind them to `Either` values
|
|
1459
|
+
* 3. You can accumulate multiple `bind` statements to define multiple variables within the scope
|
|
1460
|
+
* 4. Inside the do simulation scope, you can also use the `let` function to define variables and bind them to simple values
|
|
1461
|
+
*
|
|
1462
|
+
* @see {@link Do}
|
|
1463
|
+
* @see {@link bind}
|
|
1464
|
+
* @see {@link let_ let}
|
|
1465
|
+
*
|
|
1466
|
+
* @example
|
|
1467
|
+
* import { Either, pipe } from "effect"
|
|
1468
|
+
*
|
|
1469
|
+
* const result = pipe(
|
|
1470
|
+
* Either.Do,
|
|
1471
|
+
* Either.bind("x", () => Either.right(2)),
|
|
1472
|
+
* Either.bind("y", () => Either.right(3)),
|
|
1473
|
+
* Either.let("sum", ({ x, y }) => x + y)
|
|
1474
|
+
* )
|
|
1475
|
+
* assert.deepStrictEqual(result, Either.right({ x: 2, y: 3, sum: 5 }))
|
|
1476
|
+
*
|
|
1477
|
+
* @category do notation
|
|
1478
|
+
* @since 2.0.0
|
|
1479
|
+
*/
|
|
892
1480
|
<N extends string>(name: N): <R, L>(self: Either<R, L>) => Either<{ [K in N]: R }, L>
|
|
1481
|
+
/**
|
|
1482
|
+
* The "do simulation" in Effect allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
|
|
1483
|
+
*
|
|
1484
|
+
* Here's how the do simulation works:
|
|
1485
|
+
*
|
|
1486
|
+
* 1. Start the do simulation using the `Do` value
|
|
1487
|
+
* 2. Within the do simulation scope, you can use the `bind` function to define variables and bind them to `Either` values
|
|
1488
|
+
* 3. You can accumulate multiple `bind` statements to define multiple variables within the scope
|
|
1489
|
+
* 4. Inside the do simulation scope, you can also use the `let` function to define variables and bind them to simple values
|
|
1490
|
+
*
|
|
1491
|
+
* @see {@link Do}
|
|
1492
|
+
* @see {@link bind}
|
|
1493
|
+
* @see {@link let_ let}
|
|
1494
|
+
*
|
|
1495
|
+
* @example
|
|
1496
|
+
* import { Either, pipe } from "effect"
|
|
1497
|
+
*
|
|
1498
|
+
* const result = pipe(
|
|
1499
|
+
* Either.Do,
|
|
1500
|
+
* Either.bind("x", () => Either.right(2)),
|
|
1501
|
+
* Either.bind("y", () => Either.right(3)),
|
|
1502
|
+
* Either.let("sum", ({ x, y }) => x + y)
|
|
1503
|
+
* )
|
|
1504
|
+
* assert.deepStrictEqual(result, Either.right({ x: 2, y: 3, sum: 5 }))
|
|
1505
|
+
*
|
|
1506
|
+
* @category do notation
|
|
1507
|
+
* @since 2.0.0
|
|
1508
|
+
*/
|
|
893
1509
|
<R, L, N extends string>(self: Either<R, L>, name: N): Either<{ [K in N]: R }, L>
|
|
894
1510
|
} = doNotation.bindTo<EitherTypeLambda>(map)
|
|
895
1511
|
|