effect 3.8.4 → 3.9.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/dist/cjs/Array.js +24 -3
- package/dist/cjs/Array.js.map +1 -1
- package/dist/cjs/BigDecimal.js +5 -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 +3 -0
- 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 +3 -0
- package/dist/cjs/Cron.js.map +1 -1
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/DateTime.js +6 -0
- 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 +3 -0
- package/dist/cjs/Duration.js.map +1 -1
- package/dist/cjs/Effect.js +122 -35
- 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 +3 -0
- package/dist/cjs/FiberHandle.js.map +1 -1
- package/dist/cjs/FiberId.js.map +1 -1
- package/dist/cjs/FiberMap.js +3 -0
- 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 +3 -0
- 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/Inspectable.js +15 -1
- package/dist/cjs/Inspectable.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 +6 -0
- 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/ManagedRuntime.js +16 -1
- package/dist/cjs/ManagedRuntime.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 +6 -0
- package/dist/cjs/Micro.js.map +1 -1
- package/dist/cjs/MutableHashMap.js +3 -0
- package/dist/cjs/MutableHashMap.js.map +1 -1
- package/dist/cjs/MutableHashSet.js +3 -0
- package/dist/cjs/MutableHashSet.js.map +1 -1
- package/dist/cjs/MutableList.js +3 -0
- package/dist/cjs/MutableList.js.map +1 -1
- package/dist/cjs/MutableQueue.js +3 -0
- package/dist/cjs/MutableQueue.js.map +1 -1
- package/dist/cjs/MutableRef.js +3 -0
- 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 +18 -2
- 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/RegExp.js +20 -1
- package/dist/cjs/RegExp.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.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 +3 -0
- package/dist/cjs/SortedMap.js.map +1 -1
- package/dist/cjs/SortedSet.js +3 -0
- 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 +21 -2
- 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/cause.js +3 -0
- package/dist/cjs/internal/cause.js.map +1 -1
- package/dist/cjs/internal/context.js +6 -1
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core.js +16 -3
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +5 -1
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/fiberId.js +9 -0
- package/dist/cjs/internal/fiberId.js.map +1 -1
- package/dist/cjs/internal/hashMap.js +3 -0
- package/dist/cjs/internal/hashMap.js.map +1 -1
- package/dist/cjs/internal/hashSet.js +3 -0
- package/dist/cjs/internal/hashSet.js.map +1 -1
- package/dist/cjs/internal/layer.js +33 -19
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/mailbox.js +3 -0
- package/dist/cjs/internal/mailbox.js.map +1 -1
- package/dist/cjs/internal/managedRuntime/circular.js +10 -0
- package/dist/cjs/internal/managedRuntime/circular.js.map +1 -0
- package/dist/cjs/internal/managedRuntime.js +23 -9
- package/dist/cjs/internal/managedRuntime.js.map +1 -1
- package/dist/cjs/internal/option.js +3 -0
- package/dist/cjs/internal/option.js.map +1 -1
- package/dist/cjs/internal/pool.js +6 -1
- package/dist/cjs/internal/pool.js.map +1 -1
- package/dist/cjs/internal/redBlackTree.js +3 -0
- package/dist/cjs/internal/redBlackTree.js.map +1 -1
- package/dist/cjs/internal/resource.js +15 -5
- package/dist/cjs/internal/resource.js.map +1 -1
- package/dist/cjs/internal/runtime.js +4 -1
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/scopedRef.js +11 -8
- package/dist/cjs/internal/scopedRef.js.map +1 -1
- package/dist/cjs/internal/stm/core.js +1 -2
- package/dist/cjs/internal/stm/core.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/trie.js +3 -0
- package/dist/cjs/internal/trie.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Array.d.ts +2735 -2
- 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 +234 -3
- 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 +171 -1
- 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 +4350 -13
- 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 +315 -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/Inspectable.d.ts +15 -0
- package/dist/dts/Inspectable.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 +460 -5
- 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/ManagedRuntime.d.ts +41 -2
- package/dist/dts/ManagedRuntime.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 +37 -1
- package/dist/dts/Pool.d.ts.map +1 -1
- package/dist/dts/Predicate.d.ts +513 -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 +106 -2
- 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/RegExp.d.ts +12 -2
- package/dist/dts/RegExp.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/Resource.d.ts +21 -1
- package/dist/dts/Resource.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 +43 -1
- 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 +203 -0
- package/dist/dts/Tuple.d.ts.map +1 -1
- package/dist/dts/Types.d.ts +39 -0
- package/dist/dts/Types.d.ts.map +1 -1
- package/dist/dts/Unify.d.ts +26 -13
- 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/core.d.ts.map +1 -1
- package/dist/dts/internal/hashMap.d.ts.map +1 -1
- package/dist/dts/internal/layer.d.ts.map +1 -1
- package/dist/dts/internal/managedRuntime/circular.d.ts +2 -0
- package/dist/dts/internal/managedRuntime/circular.d.ts.map +1 -0
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Array.js +21 -0
- package/dist/esm/Array.js.map +1 -1
- package/dist/esm/BigDecimal.js +6 -3
- 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 +4 -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 +4 -1
- package/dist/esm/Cron.js.map +1 -1
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/DateTime.js +6 -0
- 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 +4 -1
- package/dist/esm/Duration.js.map +1 -1
- package/dist/esm/Effect.js +116 -30
- 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 +3 -0
- package/dist/esm/FiberHandle.js.map +1 -1
- package/dist/esm/FiberId.js.map +1 -1
- package/dist/esm/FiberMap.js +3 -0
- 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 +3 -0
- 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/Inspectable.js +14 -0
- package/dist/esm/Inspectable.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 +7 -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/ManagedRuntime.js +15 -0
- package/dist/esm/ManagedRuntime.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 +7 -1
- package/dist/esm/Micro.js.map +1 -1
- package/dist/esm/MutableHashMap.js +4 -1
- package/dist/esm/MutableHashMap.js.map +1 -1
- package/dist/esm/MutableHashSet.js +4 -1
- package/dist/esm/MutableHashSet.js.map +1 -1
- package/dist/esm/MutableList.js +4 -1
- package/dist/esm/MutableList.js.map +1 -1
- package/dist/esm/MutableQueue.js +4 -1
- package/dist/esm/MutableQueue.js.map +1 -1
- package/dist/esm/MutableRef.js +4 -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 +15 -0
- 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/RegExp.js +16 -0
- package/dist/esm/RegExp.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.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 +4 -1
- package/dist/esm/SortedMap.js.map +1 -1
- package/dist/esm/SortedSet.js +4 -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 +19 -0
- 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/cause.js +4 -1
- package/dist/esm/internal/cause.js.map +1 -1
- package/dist/esm/internal/context.js +7 -2
- package/dist/esm/internal/context.js.map +1 -1
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +14 -2
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +5 -1
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/fiberId.js +10 -1
- package/dist/esm/internal/fiberId.js.map +1 -1
- package/dist/esm/internal/hashMap.js +4 -1
- package/dist/esm/internal/hashMap.js.map +1 -1
- package/dist/esm/internal/hashSet.js +4 -1
- package/dist/esm/internal/hashSet.js.map +1 -1
- package/dist/esm/internal/layer.js +32 -18
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/mailbox.js +3 -0
- package/dist/esm/internal/mailbox.js.map +1 -1
- package/dist/esm/internal/managedRuntime/circular.js +4 -0
- package/dist/esm/internal/managedRuntime/circular.js.map +1 -0
- package/dist/esm/internal/managedRuntime.js +21 -8
- package/dist/esm/internal/managedRuntime.js.map +1 -1
- package/dist/esm/internal/option.js +4 -1
- package/dist/esm/internal/option.js.map +1 -1
- package/dist/esm/internal/pool.js +6 -1
- package/dist/esm/internal/pool.js.map +1 -1
- package/dist/esm/internal/redBlackTree.js +4 -1
- package/dist/esm/internal/redBlackTree.js.map +1 -1
- package/dist/esm/internal/resource.js +15 -5
- package/dist/esm/internal/resource.js.map +1 -1
- package/dist/esm/internal/runtime.js +4 -1
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/scopedRef.js +11 -8
- package/dist/esm/internal/scopedRef.js.map +1 -1
- package/dist/esm/internal/stm/core.js +1 -2
- package/dist/esm/internal/stm/core.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/trie.js +4 -1
- package/dist/esm/internal/trie.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/Array.ts +2791 -40
- package/src/BigDecimal.ts +589 -19
- 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 +822 -5
- 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 +234 -3
- package/src/Cron.ts +16 -1
- package/src/Data.ts +165 -0
- package/src/DateTime.ts +1012 -50
- package/src/Deferred.ts +171 -1
- package/src/Differ.ts +89 -27
- package/src/Duration.ts +160 -17
- package/src/Effect.ts +4717 -164
- 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 +45 -0
- package/src/FiberId.ts +24 -0
- package/src/FiberMap.ts +147 -21
- package/src/FiberRef.ts +80 -0
- package/src/FiberRefs.ts +84 -0
- package/src/FiberRefsPatch.ts +35 -1
- package/src/FiberSet.ts +41 -0
- package/src/Function.ts +416 -31
- package/src/GroupBy.ts +38 -0
- package/src/Hash.ts +8 -0
- package/src/HashMap.ts +316 -0
- package/src/HashSet.ts +284 -0
- package/src/Inspectable.ts +22 -0
- package/src/Iterable.ts +456 -6
- package/src/KeyedPool.ts +34 -0
- package/src/Layer.ts +475 -38
- package/src/List.ts +483 -4
- package/src/LogLevel.ts +46 -0
- package/src/Logger.ts +195 -4
- package/src/Mailbox.ts +16 -0
- package/src/ManagedRuntime.ts +46 -2
- 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 +1223 -61
- package/src/MutableHashMap.ts +109 -2
- package/src/MutableHashSet.ts +28 -1
- package/src/MutableList.ts +40 -1
- package/src/MutableQueue.ts +66 -1
- package/src/MutableRef.ts +60 -1
- 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 +42 -1
- package/src/Predicate.ts +514 -0
- package/src/PubSub.ts +28 -0
- package/src/Queue.ts +106 -2
- 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/RegExp.ts +17 -0
- package/src/Request.ts +76 -0
- package/src/RequestResolver.ts +145 -4
- package/src/Resource.ts +22 -1
- 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 +44 -1
- package/src/Sink.ts +464 -0
- package/src/SortedMap.ts +80 -1
- package/src/SortedSet.ts +147 -4
- 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 +223 -8
- package/src/Types.ts +41 -0
- package/src/Unify.ts +28 -17
- package/src/UpstreamPullRequest.ts +12 -0
- package/src/UpstreamPullStrategy.ts +12 -0
- package/src/Utils.ts +1 -15
- package/src/internal/cause.ts +4 -1
- package/src/internal/context.ts +7 -2
- package/src/internal/core-effect.ts +7 -7
- package/src/internal/core.ts +14 -2
- package/src/internal/effect/circular.ts +8 -2
- package/src/internal/fiberId.ts +10 -1
- package/src/internal/hashMap.ts +4 -1
- package/src/internal/hashSet.ts +4 -1
- package/src/internal/layer.ts +105 -38
- package/src/internal/mailbox.ts +3 -0
- package/src/internal/managedRuntime/circular.ts +6 -0
- package/src/internal/managedRuntime.ts +36 -22
- package/src/internal/option.ts +4 -1
- package/src/internal/pool.ts +7 -1
- package/src/internal/redBlackTree.ts +4 -1
- package/src/internal/resource.ts +16 -5
- package/src/internal/runtime.ts +4 -1
- package/src/internal/scopedRef.ts +12 -8
- package/src/internal/stm/core.ts +2 -3
- package/src/internal/stream.ts +27 -0
- package/src/internal/trie.ts +4 -1
- package/src/internal/version.ts +1 -1
package/src/Predicate.ts
CHANGED
|
@@ -88,7 +88,45 @@ export declare namespace Refinement {
|
|
|
88
88
|
* @since 2.0.0
|
|
89
89
|
*/
|
|
90
90
|
export const mapInput: {
|
|
91
|
+
/**
|
|
92
|
+
* Given a `Predicate<A>` returns a `Predicate<B>`
|
|
93
|
+
*
|
|
94
|
+
* @param self - the `Predicate<A>` to be transformed to `Predicate<B>`.
|
|
95
|
+
* @param f - a function to transform `B` to `A`.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* import { Predicate, Number } from "effect"
|
|
99
|
+
*
|
|
100
|
+
* const minLength3 = Predicate.mapInput(Number.greaterThan(2), (s: string) => s.length)
|
|
101
|
+
*
|
|
102
|
+
* assert.deepStrictEqual(minLength3("a"), false)
|
|
103
|
+
* assert.deepStrictEqual(minLength3("aa"), false)
|
|
104
|
+
* assert.deepStrictEqual(minLength3("aaa"), true)
|
|
105
|
+
* assert.deepStrictEqual(minLength3("aaaa"), true)
|
|
106
|
+
*
|
|
107
|
+
* @category combinators
|
|
108
|
+
* @since 2.0.0
|
|
109
|
+
*/
|
|
91
110
|
<B, A>(f: (b: B) => A): (self: Predicate<A>) => Predicate<B>
|
|
111
|
+
/**
|
|
112
|
+
* Given a `Predicate<A>` returns a `Predicate<B>`
|
|
113
|
+
*
|
|
114
|
+
* @param self - the `Predicate<A>` to be transformed to `Predicate<B>`.
|
|
115
|
+
* @param f - a function to transform `B` to `A`.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* import { Predicate, Number } from "effect"
|
|
119
|
+
*
|
|
120
|
+
* const minLength3 = Predicate.mapInput(Number.greaterThan(2), (s: string) => s.length)
|
|
121
|
+
*
|
|
122
|
+
* assert.deepStrictEqual(minLength3("a"), false)
|
|
123
|
+
* assert.deepStrictEqual(minLength3("aa"), false)
|
|
124
|
+
* assert.deepStrictEqual(minLength3("aaa"), true)
|
|
125
|
+
* assert.deepStrictEqual(minLength3("aaaa"), true)
|
|
126
|
+
*
|
|
127
|
+
* @category combinators
|
|
128
|
+
* @since 2.0.0
|
|
129
|
+
*/
|
|
92
130
|
<A, B>(self: Predicate<A>, f: (b: B) => A): Predicate<B>
|
|
93
131
|
} = dual(2, <A, B>(self: Predicate<A>, f: (b: B) => A): Predicate<B> => (b) => self(f(b)))
|
|
94
132
|
|
|
@@ -117,7 +155,55 @@ export const mapInput: {
|
|
|
117
155
|
* @since 3.3.0
|
|
118
156
|
*/
|
|
119
157
|
export const isTupleOf: {
|
|
158
|
+
/**
|
|
159
|
+
* Determine if an `Array` is a tuple with exactly `N` elements, narrowing down the type to `TupleOf`.
|
|
160
|
+
*
|
|
161
|
+
* An `Array` is considered to be a `TupleOf` if its length is exactly `N`.
|
|
162
|
+
*
|
|
163
|
+
* @param self - The `Array` to check.
|
|
164
|
+
* @param n - The exact number of elements that the `Array` should have to be considered a `TupleOf`.
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* import { isTupleOf } from "effect/Predicate"
|
|
168
|
+
*
|
|
169
|
+
* assert.deepStrictEqual(isTupleOf([1, 2, 3], 3), true);
|
|
170
|
+
* assert.deepStrictEqual(isTupleOf([1, 2, 3], 2), false);
|
|
171
|
+
* assert.deepStrictEqual(isTupleOf([1, 2, 3], 4), false);
|
|
172
|
+
*
|
|
173
|
+
* const arr: number[] = [1, 2, 3];
|
|
174
|
+
* if (isTupleOf(arr, 3)) {
|
|
175
|
+
* console.log(arr);
|
|
176
|
+
* // ^? [number, number, number]
|
|
177
|
+
* }
|
|
178
|
+
*
|
|
179
|
+
* @category guards
|
|
180
|
+
* @since 3.3.0
|
|
181
|
+
*/
|
|
120
182
|
<N extends number>(n: N): <T>(self: ReadonlyArray<T>) => self is TupleOf<N, T>
|
|
183
|
+
/**
|
|
184
|
+
* Determine if an `Array` is a tuple with exactly `N` elements, narrowing down the type to `TupleOf`.
|
|
185
|
+
*
|
|
186
|
+
* An `Array` is considered to be a `TupleOf` if its length is exactly `N`.
|
|
187
|
+
*
|
|
188
|
+
* @param self - The `Array` to check.
|
|
189
|
+
* @param n - The exact number of elements that the `Array` should have to be considered a `TupleOf`.
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* import { isTupleOf } from "effect/Predicate"
|
|
193
|
+
*
|
|
194
|
+
* assert.deepStrictEqual(isTupleOf([1, 2, 3], 3), true);
|
|
195
|
+
* assert.deepStrictEqual(isTupleOf([1, 2, 3], 2), false);
|
|
196
|
+
* assert.deepStrictEqual(isTupleOf([1, 2, 3], 4), false);
|
|
197
|
+
*
|
|
198
|
+
* const arr: number[] = [1, 2, 3];
|
|
199
|
+
* if (isTupleOf(arr, 3)) {
|
|
200
|
+
* console.log(arr);
|
|
201
|
+
* // ^? [number, number, number]
|
|
202
|
+
* }
|
|
203
|
+
*
|
|
204
|
+
* @category guards
|
|
205
|
+
* @since 3.3.0
|
|
206
|
+
*/
|
|
121
207
|
<T, N extends number>(self: ReadonlyArray<T>, n: N): self is TupleOf<N, T>
|
|
122
208
|
} = dual(2, <T, N extends number>(self: ReadonlyArray<T>, n: N): self is TupleOf<N, T> => self.length === n)
|
|
123
209
|
|
|
@@ -146,7 +232,55 @@ export const isTupleOf: {
|
|
|
146
232
|
* @since 3.3.0
|
|
147
233
|
*/
|
|
148
234
|
export const isTupleOfAtLeast: {
|
|
235
|
+
/**
|
|
236
|
+
* Determine if an `Array` is a tuple with at least `N` elements, narrowing down the type to `TupleOfAtLeast`.
|
|
237
|
+
*
|
|
238
|
+
* An `Array` is considered to be a `TupleOfAtLeast` if its length is at least `N`.
|
|
239
|
+
*
|
|
240
|
+
* @param self - The `Array` to check.
|
|
241
|
+
* @param n - The minimum number of elements that the `Array` should have to be considered a `TupleOfAtLeast`.
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
* import { isTupleOfAtLeast } from "effect/Predicate"
|
|
245
|
+
*
|
|
246
|
+
* assert.deepStrictEqual(isTupleOfAtLeast([1, 2, 3], 3), true);
|
|
247
|
+
* assert.deepStrictEqual(isTupleOfAtLeast([1, 2, 3], 2), true);
|
|
248
|
+
* assert.deepStrictEqual(isTupleOfAtLeast([1, 2, 3], 4), false);
|
|
249
|
+
*
|
|
250
|
+
* const arr: number[] = [1, 2, 3, 4];
|
|
251
|
+
* if (isTupleOfAtLeast(arr, 3)) {
|
|
252
|
+
* console.log(arr);
|
|
253
|
+
* // ^? [number, number, number, ...number[]]
|
|
254
|
+
* }
|
|
255
|
+
*
|
|
256
|
+
* @category guards
|
|
257
|
+
* @since 3.3.0
|
|
258
|
+
*/
|
|
149
259
|
<N extends number>(n: N): <T>(self: ReadonlyArray<T>) => self is TupleOfAtLeast<N, T>
|
|
260
|
+
/**
|
|
261
|
+
* Determine if an `Array` is a tuple with at least `N` elements, narrowing down the type to `TupleOfAtLeast`.
|
|
262
|
+
*
|
|
263
|
+
* An `Array` is considered to be a `TupleOfAtLeast` if its length is at least `N`.
|
|
264
|
+
*
|
|
265
|
+
* @param self - The `Array` to check.
|
|
266
|
+
* @param n - The minimum number of elements that the `Array` should have to be considered a `TupleOfAtLeast`.
|
|
267
|
+
*
|
|
268
|
+
* @example
|
|
269
|
+
* import { isTupleOfAtLeast } from "effect/Predicate"
|
|
270
|
+
*
|
|
271
|
+
* assert.deepStrictEqual(isTupleOfAtLeast([1, 2, 3], 3), true);
|
|
272
|
+
* assert.deepStrictEqual(isTupleOfAtLeast([1, 2, 3], 2), true);
|
|
273
|
+
* assert.deepStrictEqual(isTupleOfAtLeast([1, 2, 3], 4), false);
|
|
274
|
+
*
|
|
275
|
+
* const arr: number[] = [1, 2, 3, 4];
|
|
276
|
+
* if (isTupleOfAtLeast(arr, 3)) {
|
|
277
|
+
* console.log(arr);
|
|
278
|
+
* // ^? [number, number, number, ...number[]]
|
|
279
|
+
* }
|
|
280
|
+
*
|
|
281
|
+
* @category guards
|
|
282
|
+
* @since 3.3.0
|
|
283
|
+
*/
|
|
150
284
|
<T, N extends number>(self: ReadonlyArray<T>, n: N): self is TupleOfAtLeast<N, T>
|
|
151
285
|
} = dual(2, <T, N extends number>(self: ReadonlyArray<T>, n: N): self is TupleOfAtLeast<N, T> => self.length >= n)
|
|
152
286
|
|
|
@@ -446,7 +580,25 @@ export const isObject = (input: unknown): input is object => isRecordOrArray(inp
|
|
|
446
580
|
* @since 2.0.0
|
|
447
581
|
*/
|
|
448
582
|
export const hasProperty: {
|
|
583
|
+
/**
|
|
584
|
+
* Checks whether a value is an `object` containing a specified property key.
|
|
585
|
+
*
|
|
586
|
+
* @param property - The field to check within the object.
|
|
587
|
+
* @param self - The value to examine.
|
|
588
|
+
*
|
|
589
|
+
* @category guards
|
|
590
|
+
* @since 2.0.0
|
|
591
|
+
*/
|
|
449
592
|
<P extends PropertyKey>(property: P): (self: unknown) => self is { [K in P]: unknown }
|
|
593
|
+
/**
|
|
594
|
+
* Checks whether a value is an `object` containing a specified property key.
|
|
595
|
+
*
|
|
596
|
+
* @param property - The field to check within the object.
|
|
597
|
+
* @param self - The value to examine.
|
|
598
|
+
*
|
|
599
|
+
* @category guards
|
|
600
|
+
* @since 2.0.0
|
|
601
|
+
*/
|
|
450
602
|
<P extends PropertyKey>(self: unknown, property: P): self is { [K in P]: unknown }
|
|
451
603
|
} = dual(
|
|
452
604
|
2,
|
|
@@ -474,7 +626,45 @@ export const hasProperty: {
|
|
|
474
626
|
* @since 2.0.0
|
|
475
627
|
*/
|
|
476
628
|
export const isTagged: {
|
|
629
|
+
/**
|
|
630
|
+
* Tests if a value is an `object` with a property `_tag` that matches the given tag.
|
|
631
|
+
*
|
|
632
|
+
* @param input - The value to test.
|
|
633
|
+
* @param tag - The tag to test for.
|
|
634
|
+
*
|
|
635
|
+
* @example
|
|
636
|
+
* import { isTagged } from "effect/Predicate"
|
|
637
|
+
*
|
|
638
|
+
* assert.deepStrictEqual(isTagged(1, "a"), false)
|
|
639
|
+
* assert.deepStrictEqual(isTagged(null, "a"), false)
|
|
640
|
+
* assert.deepStrictEqual(isTagged({}, "a"), false)
|
|
641
|
+
* assert.deepStrictEqual(isTagged({ a: "a" }, "a"), false)
|
|
642
|
+
* assert.deepStrictEqual(isTagged({ _tag: "a" }, "a"), true)
|
|
643
|
+
* assert.deepStrictEqual(isTagged("a")({ _tag: "a" }), true)
|
|
644
|
+
*
|
|
645
|
+
* @category guards
|
|
646
|
+
* @since 2.0.0
|
|
647
|
+
*/
|
|
477
648
|
<K extends string>(tag: K): (self: unknown) => self is { _tag: K }
|
|
649
|
+
/**
|
|
650
|
+
* Tests if a value is an `object` with a property `_tag` that matches the given tag.
|
|
651
|
+
*
|
|
652
|
+
* @param input - The value to test.
|
|
653
|
+
* @param tag - The tag to test for.
|
|
654
|
+
*
|
|
655
|
+
* @example
|
|
656
|
+
* import { isTagged } from "effect/Predicate"
|
|
657
|
+
*
|
|
658
|
+
* assert.deepStrictEqual(isTagged(1, "a"), false)
|
|
659
|
+
* assert.deepStrictEqual(isTagged(null, "a"), false)
|
|
660
|
+
* assert.deepStrictEqual(isTagged({}, "a"), false)
|
|
661
|
+
* assert.deepStrictEqual(isTagged({ a: "a" }, "a"), false)
|
|
662
|
+
* assert.deepStrictEqual(isTagged({ _tag: "a" }, "a"), true)
|
|
663
|
+
* assert.deepStrictEqual(isTagged("a")({ _tag: "a" }), true)
|
|
664
|
+
*
|
|
665
|
+
* @category guards
|
|
666
|
+
* @since 2.0.0
|
|
667
|
+
*/
|
|
478
668
|
<K extends string>(self: unknown, tag: K): self is { _tag: K }
|
|
479
669
|
} = dual(
|
|
480
670
|
2,
|
|
@@ -665,13 +855,41 @@ export const isPromiseLike = (
|
|
|
665
855
|
input: unknown
|
|
666
856
|
): input is PromiseLike<unknown> => hasProperty(input, "then") && isFunction(input.then)
|
|
667
857
|
|
|
858
|
+
/**
|
|
859
|
+
* Tests if a value is a `RegExp`.
|
|
860
|
+
*
|
|
861
|
+
* @param input - The value to test.
|
|
862
|
+
*
|
|
863
|
+
* @example
|
|
864
|
+
* import { Predicate } from "effect"
|
|
865
|
+
*
|
|
866
|
+
* assert.deepStrictEqual(Predicate.isRegExp(/a/), true)
|
|
867
|
+
* assert.deepStrictEqual(Predicate.isRegExp("a"), false)
|
|
868
|
+
*
|
|
869
|
+
* @category guards
|
|
870
|
+
* @since 3.9.0
|
|
871
|
+
*/
|
|
872
|
+
export const isRegExp = (input: unknown): input is RegExp => input instanceof RegExp
|
|
873
|
+
|
|
668
874
|
/**
|
|
669
875
|
* @since 2.0.0
|
|
670
876
|
*/
|
|
671
877
|
export const compose: {
|
|
878
|
+
/**
|
|
879
|
+
* @since 2.0.0
|
|
880
|
+
*/
|
|
672
881
|
<A, B extends A, C extends B>(bc: Refinement<B, C>): (ab: Refinement<A, B>) => Refinement<A, C>
|
|
882
|
+
/**
|
|
883
|
+
* @since 2.0.0
|
|
884
|
+
*/
|
|
673
885
|
<A, B extends A>(bc: Predicate<NoInfer<B>>): (ab: Refinement<A, B>) => Refinement<A, B>
|
|
886
|
+
/**
|
|
887
|
+
* @since 2.0.0
|
|
888
|
+
*/
|
|
674
889
|
<A, B extends A, C extends B>(ab: Refinement<A, B>, bc: Refinement<B, C>): Refinement<A, C>
|
|
890
|
+
/**
|
|
891
|
+
* @since 2.0.0
|
|
892
|
+
*/
|
|
675
893
|
<A, B extends A>(ab: Refinement<A, B>, bc: Predicate<NoInfer<B>>): Refinement<A, B>
|
|
676
894
|
} = dual(
|
|
677
895
|
2,
|
|
@@ -733,6 +951,17 @@ export const productMany = <A>(
|
|
|
733
951
|
* @since 2.0.0
|
|
734
952
|
*/
|
|
735
953
|
export const tuple: {
|
|
954
|
+
/**
|
|
955
|
+
* Similar to `Promise.all` but operates on `Predicate`s.
|
|
956
|
+
*
|
|
957
|
+
* ```
|
|
958
|
+
* [Refinement<A, B>, Refinement<C, D>, ...] -> Refinement<[A, C, ...], [B, D, ...]>
|
|
959
|
+
* [Predicate<A>, Predicate<B>, ...] -> Predicate<[A, B, ...]>
|
|
960
|
+
* [Refinement<A, B>, Predicate<C>, ...] -> Refinement<[A, C, ...], [B, C, ...]>
|
|
961
|
+
* ```
|
|
962
|
+
*
|
|
963
|
+
* @since 2.0.0
|
|
964
|
+
*/
|
|
736
965
|
<T extends ReadonlyArray<Predicate.Any>>(
|
|
737
966
|
...elements: T
|
|
738
967
|
): [Extract<T[number], Refinement.Any>] extends [never] ? Predicate<{ readonly [I in keyof T]: Predicate.In<T[I]> }>
|
|
@@ -752,6 +981,15 @@ export const tuple: {
|
|
|
752
981
|
* @since 2.0.0
|
|
753
982
|
*/
|
|
754
983
|
export const struct: {
|
|
984
|
+
/**
|
|
985
|
+
* ```
|
|
986
|
+
* { ab: Refinement<A, B>; cd: Refinement<C, D>, ... } -> Refinement<{ ab: A; cd: C; ... }, { ab: B; cd: D; ... }>
|
|
987
|
+
* { a: Predicate<A, B>; b: Predicate<B>, ... } -> Predicate<{ a: A; b: B; ... }>
|
|
988
|
+
* { ab: Refinement<A, B>; c: Predicate<C>, ... } -> Refinement<{ ab: A; c: C; ... }, { ab: B; c: С; ... }>
|
|
989
|
+
* ```
|
|
990
|
+
*
|
|
991
|
+
* @since 2.0.0
|
|
992
|
+
*/
|
|
755
993
|
<R extends Record<string, Predicate.Any>>(
|
|
756
994
|
fields: R
|
|
757
995
|
): [Extract<R[keyof R], Refinement.Any>] extends [never] ?
|
|
@@ -810,9 +1048,81 @@ export const not = <A>(self: Predicate<A>): Predicate<A> => (a) => !self(a)
|
|
|
810
1048
|
* @since 2.0.0
|
|
811
1049
|
*/
|
|
812
1050
|
export const or: {
|
|
1051
|
+
/**
|
|
1052
|
+
* Combines two predicates into a new predicate that returns `true` if at least one of the predicates returns `true`.
|
|
1053
|
+
*
|
|
1054
|
+
* @param self - A predicate.
|
|
1055
|
+
* @param that - A predicate.
|
|
1056
|
+
*
|
|
1057
|
+
* @example
|
|
1058
|
+
* import { Predicate, Number } from "effect"
|
|
1059
|
+
*
|
|
1060
|
+
* const nonZero = Predicate.or(Number.lessThan(0), Number.greaterThan(0))
|
|
1061
|
+
*
|
|
1062
|
+
* assert.deepStrictEqual(nonZero(-1), true)
|
|
1063
|
+
* assert.deepStrictEqual(nonZero(0), false)
|
|
1064
|
+
* assert.deepStrictEqual(nonZero(1), true)
|
|
1065
|
+
*
|
|
1066
|
+
* @category combinators
|
|
1067
|
+
* @since 2.0.0
|
|
1068
|
+
*/
|
|
813
1069
|
<A, C extends A>(that: Refinement<A, C>): <B extends A>(self: Refinement<A, B>) => Refinement<A, B | C>
|
|
1070
|
+
/**
|
|
1071
|
+
* Combines two predicates into a new predicate that returns `true` if at least one of the predicates returns `true`.
|
|
1072
|
+
*
|
|
1073
|
+
* @param self - A predicate.
|
|
1074
|
+
* @param that - A predicate.
|
|
1075
|
+
*
|
|
1076
|
+
* @example
|
|
1077
|
+
* import { Predicate, Number } from "effect"
|
|
1078
|
+
*
|
|
1079
|
+
* const nonZero = Predicate.or(Number.lessThan(0), Number.greaterThan(0))
|
|
1080
|
+
*
|
|
1081
|
+
* assert.deepStrictEqual(nonZero(-1), true)
|
|
1082
|
+
* assert.deepStrictEqual(nonZero(0), false)
|
|
1083
|
+
* assert.deepStrictEqual(nonZero(1), true)
|
|
1084
|
+
*
|
|
1085
|
+
* @category combinators
|
|
1086
|
+
* @since 2.0.0
|
|
1087
|
+
*/
|
|
814
1088
|
<A, B extends A, C extends A>(self: Refinement<A, B>, that: Refinement<A, C>): Refinement<A, B | C>
|
|
1089
|
+
/**
|
|
1090
|
+
* Combines two predicates into a new predicate that returns `true` if at least one of the predicates returns `true`.
|
|
1091
|
+
*
|
|
1092
|
+
* @param self - A predicate.
|
|
1093
|
+
* @param that - A predicate.
|
|
1094
|
+
*
|
|
1095
|
+
* @example
|
|
1096
|
+
* import { Predicate, Number } from "effect"
|
|
1097
|
+
*
|
|
1098
|
+
* const nonZero = Predicate.or(Number.lessThan(0), Number.greaterThan(0))
|
|
1099
|
+
*
|
|
1100
|
+
* assert.deepStrictEqual(nonZero(-1), true)
|
|
1101
|
+
* assert.deepStrictEqual(nonZero(0), false)
|
|
1102
|
+
* assert.deepStrictEqual(nonZero(1), true)
|
|
1103
|
+
*
|
|
1104
|
+
* @category combinators
|
|
1105
|
+
* @since 2.0.0
|
|
1106
|
+
*/
|
|
815
1107
|
<A>(that: Predicate<A>): (self: Predicate<A>) => Predicate<A>
|
|
1108
|
+
/**
|
|
1109
|
+
* Combines two predicates into a new predicate that returns `true` if at least one of the predicates returns `true`.
|
|
1110
|
+
*
|
|
1111
|
+
* @param self - A predicate.
|
|
1112
|
+
* @param that - A predicate.
|
|
1113
|
+
*
|
|
1114
|
+
* @example
|
|
1115
|
+
* import { Predicate, Number } from "effect"
|
|
1116
|
+
*
|
|
1117
|
+
* const nonZero = Predicate.or(Number.lessThan(0), Number.greaterThan(0))
|
|
1118
|
+
*
|
|
1119
|
+
* assert.deepStrictEqual(nonZero(-1), true)
|
|
1120
|
+
* assert.deepStrictEqual(nonZero(0), false)
|
|
1121
|
+
* assert.deepStrictEqual(nonZero(1), true)
|
|
1122
|
+
*
|
|
1123
|
+
* @category combinators
|
|
1124
|
+
* @since 2.0.0
|
|
1125
|
+
*/
|
|
816
1126
|
<A>(self: Predicate<A>, that: Predicate<A>): Predicate<A>
|
|
817
1127
|
} = dual(2, <A>(self: Predicate<A>, that: Predicate<A>): Predicate<A> => (a) => self(a) || that(a))
|
|
818
1128
|
|
|
@@ -838,9 +1148,93 @@ export const or: {
|
|
|
838
1148
|
* @since 2.0.0
|
|
839
1149
|
*/
|
|
840
1150
|
export const and: {
|
|
1151
|
+
/**
|
|
1152
|
+
* Combines two predicates into a new predicate that returns `true` if both of the predicates returns `true`.
|
|
1153
|
+
*
|
|
1154
|
+
* @param self - A predicate.
|
|
1155
|
+
* @param that - A predicate.
|
|
1156
|
+
*
|
|
1157
|
+
* @example
|
|
1158
|
+
* import { Predicate } from "effect"
|
|
1159
|
+
*
|
|
1160
|
+
* const minLength = (n: number) => (s: string) => s.length >= n
|
|
1161
|
+
* const maxLength = (n: number) => (s: string) => s.length <= n
|
|
1162
|
+
*
|
|
1163
|
+
* const length = (n: number) => Predicate.and(minLength(n), maxLength(n))
|
|
1164
|
+
*
|
|
1165
|
+
* assert.deepStrictEqual(length(2)("aa"), true)
|
|
1166
|
+
* assert.deepStrictEqual(length(2)("a"), false)
|
|
1167
|
+
* assert.deepStrictEqual(length(2)("aaa"), false)
|
|
1168
|
+
*
|
|
1169
|
+
* @category combinators
|
|
1170
|
+
* @since 2.0.0
|
|
1171
|
+
*/
|
|
841
1172
|
<A, C extends A>(that: Refinement<A, C>): <B extends A>(self: Refinement<A, B>) => Refinement<A, B & C>
|
|
1173
|
+
/**
|
|
1174
|
+
* Combines two predicates into a new predicate that returns `true` if both of the predicates returns `true`.
|
|
1175
|
+
*
|
|
1176
|
+
* @param self - A predicate.
|
|
1177
|
+
* @param that - A predicate.
|
|
1178
|
+
*
|
|
1179
|
+
* @example
|
|
1180
|
+
* import { Predicate } from "effect"
|
|
1181
|
+
*
|
|
1182
|
+
* const minLength = (n: number) => (s: string) => s.length >= n
|
|
1183
|
+
* const maxLength = (n: number) => (s: string) => s.length <= n
|
|
1184
|
+
*
|
|
1185
|
+
* const length = (n: number) => Predicate.and(minLength(n), maxLength(n))
|
|
1186
|
+
*
|
|
1187
|
+
* assert.deepStrictEqual(length(2)("aa"), true)
|
|
1188
|
+
* assert.deepStrictEqual(length(2)("a"), false)
|
|
1189
|
+
* assert.deepStrictEqual(length(2)("aaa"), false)
|
|
1190
|
+
*
|
|
1191
|
+
* @category combinators
|
|
1192
|
+
* @since 2.0.0
|
|
1193
|
+
*/
|
|
842
1194
|
<A, B extends A, C extends A>(self: Refinement<A, B>, that: Refinement<A, C>): Refinement<A, B & C>
|
|
1195
|
+
/**
|
|
1196
|
+
* Combines two predicates into a new predicate that returns `true` if both of the predicates returns `true`.
|
|
1197
|
+
*
|
|
1198
|
+
* @param self - A predicate.
|
|
1199
|
+
* @param that - A predicate.
|
|
1200
|
+
*
|
|
1201
|
+
* @example
|
|
1202
|
+
* import { Predicate } from "effect"
|
|
1203
|
+
*
|
|
1204
|
+
* const minLength = (n: number) => (s: string) => s.length >= n
|
|
1205
|
+
* const maxLength = (n: number) => (s: string) => s.length <= n
|
|
1206
|
+
*
|
|
1207
|
+
* const length = (n: number) => Predicate.and(minLength(n), maxLength(n))
|
|
1208
|
+
*
|
|
1209
|
+
* assert.deepStrictEqual(length(2)("aa"), true)
|
|
1210
|
+
* assert.deepStrictEqual(length(2)("a"), false)
|
|
1211
|
+
* assert.deepStrictEqual(length(2)("aaa"), false)
|
|
1212
|
+
*
|
|
1213
|
+
* @category combinators
|
|
1214
|
+
* @since 2.0.0
|
|
1215
|
+
*/
|
|
843
1216
|
<A>(that: Predicate<A>): (self: Predicate<A>) => Predicate<A>
|
|
1217
|
+
/**
|
|
1218
|
+
* Combines two predicates into a new predicate that returns `true` if both of the predicates returns `true`.
|
|
1219
|
+
*
|
|
1220
|
+
* @param self - A predicate.
|
|
1221
|
+
* @param that - A predicate.
|
|
1222
|
+
*
|
|
1223
|
+
* @example
|
|
1224
|
+
* import { Predicate } from "effect"
|
|
1225
|
+
*
|
|
1226
|
+
* const minLength = (n: number) => (s: string) => s.length >= n
|
|
1227
|
+
* const maxLength = (n: number) => (s: string) => s.length <= n
|
|
1228
|
+
*
|
|
1229
|
+
* const length = (n: number) => Predicate.and(minLength(n), maxLength(n))
|
|
1230
|
+
*
|
|
1231
|
+
* assert.deepStrictEqual(length(2)("aa"), true)
|
|
1232
|
+
* assert.deepStrictEqual(length(2)("a"), false)
|
|
1233
|
+
* assert.deepStrictEqual(length(2)("aaa"), false)
|
|
1234
|
+
*
|
|
1235
|
+
* @category combinators
|
|
1236
|
+
* @since 2.0.0
|
|
1237
|
+
*/
|
|
844
1238
|
<A>(self: Predicate<A>, that: Predicate<A>): Predicate<A>
|
|
845
1239
|
} = dual(2, <A>(self: Predicate<A>, that: Predicate<A>): Predicate<A> => (a) => self(a) && that(a))
|
|
846
1240
|
|
|
@@ -849,7 +1243,15 @@ export const and: {
|
|
|
849
1243
|
* @since 2.0.0
|
|
850
1244
|
*/
|
|
851
1245
|
export const xor: {
|
|
1246
|
+
/**
|
|
1247
|
+
* @category combinators
|
|
1248
|
+
* @since 2.0.0
|
|
1249
|
+
*/
|
|
852
1250
|
<A>(that: Predicate<A>): (self: Predicate<A>) => Predicate<A>
|
|
1251
|
+
/**
|
|
1252
|
+
* @category combinators
|
|
1253
|
+
* @since 2.0.0
|
|
1254
|
+
*/
|
|
853
1255
|
<A>(self: Predicate<A>, that: Predicate<A>): Predicate<A>
|
|
854
1256
|
} = dual(2, <A>(self: Predicate<A>, that: Predicate<A>): Predicate<A> => (a) => self(a) !== that(a))
|
|
855
1257
|
|
|
@@ -858,7 +1260,15 @@ export const xor: {
|
|
|
858
1260
|
* @since 2.0.0
|
|
859
1261
|
*/
|
|
860
1262
|
export const eqv: {
|
|
1263
|
+
/**
|
|
1264
|
+
* @category combinators
|
|
1265
|
+
* @since 2.0.0
|
|
1266
|
+
*/
|
|
861
1267
|
<A>(that: Predicate<A>): (self: Predicate<A>) => Predicate<A>
|
|
1268
|
+
/**
|
|
1269
|
+
* @category combinators
|
|
1270
|
+
* @since 2.0.0
|
|
1271
|
+
*/
|
|
862
1272
|
<A>(self: Predicate<A>, that: Predicate<A>): Predicate<A>
|
|
863
1273
|
} = dual(2, <A>(self: Predicate<A>, that: Predicate<A>): Predicate<A> => (a) => self(a) === that(a))
|
|
864
1274
|
|
|
@@ -907,7 +1317,95 @@ export const eqv: {
|
|
|
907
1317
|
* @since 2.0.0
|
|
908
1318
|
*/
|
|
909
1319
|
export const implies: {
|
|
1320
|
+
/**
|
|
1321
|
+
* Represents the logical implication combinator for predicates. In formal
|
|
1322
|
+
* logic, the implication operator `->` denotes that if the first proposition
|
|
1323
|
+
* (antecedent) is true, then the second proposition (consequent) must also be
|
|
1324
|
+
* true. In simpler terms, `p implies q` can be interpreted as "if p then q". If
|
|
1325
|
+
* the first predicate holds, then the second predicate must hold
|
|
1326
|
+
* for the given context.
|
|
1327
|
+
*
|
|
1328
|
+
* In practical terms within TypeScript, `p implies q` is equivalent to `!p || (p && q)`.
|
|
1329
|
+
*
|
|
1330
|
+
* Note that if the antecedent is `false`, the result is `true` by default
|
|
1331
|
+
* because the outcome of the consequent cannot be determined.
|
|
1332
|
+
*
|
|
1333
|
+
* This function is useful in situations where you need to enforce rules or
|
|
1334
|
+
* constraints that are contingent on certain conditions.
|
|
1335
|
+
* It proves especially helpful in defining property tests.
|
|
1336
|
+
*
|
|
1337
|
+
* The example below illustrates the transitive property of order using the
|
|
1338
|
+
* `implies` function. In simple terms, if `a <= b` and `b <= c`, then `a <= c`
|
|
1339
|
+
* must be true.
|
|
1340
|
+
*
|
|
1341
|
+
* @example
|
|
1342
|
+
* import { Predicate } from "effect"
|
|
1343
|
+
*
|
|
1344
|
+
* type Triple = {
|
|
1345
|
+
* readonly a: number
|
|
1346
|
+
* readonly b: number
|
|
1347
|
+
* readonly c: number
|
|
1348
|
+
* }
|
|
1349
|
+
*
|
|
1350
|
+
* const transitivity = Predicate.implies(
|
|
1351
|
+
* // antecedent
|
|
1352
|
+
* (input: Triple) => input.a <= input.b && input.b <= input.c,
|
|
1353
|
+
* // consequent
|
|
1354
|
+
* (input: Triple) => input.a <= input.c
|
|
1355
|
+
* )
|
|
1356
|
+
*
|
|
1357
|
+
* assert.equal(transitivity({ a: 1, b: 2, c: 3 }), true)
|
|
1358
|
+
* // antecedent is `false`, so the result is `true`
|
|
1359
|
+
* assert.equal(transitivity({ a: 1, b: 0, c: 0 }), true)
|
|
1360
|
+
*
|
|
1361
|
+
* @category combinators
|
|
1362
|
+
* @since 2.0.0
|
|
1363
|
+
*/
|
|
910
1364
|
<A>(consequent: Predicate<A>): (antecedent: Predicate<A>) => Predicate<A>
|
|
1365
|
+
/**
|
|
1366
|
+
* Represents the logical implication combinator for predicates. In formal
|
|
1367
|
+
* logic, the implication operator `->` denotes that if the first proposition
|
|
1368
|
+
* (antecedent) is true, then the second proposition (consequent) must also be
|
|
1369
|
+
* true. In simpler terms, `p implies q` can be interpreted as "if p then q". If
|
|
1370
|
+
* the first predicate holds, then the second predicate must hold
|
|
1371
|
+
* for the given context.
|
|
1372
|
+
*
|
|
1373
|
+
* In practical terms within TypeScript, `p implies q` is equivalent to `!p || (p && q)`.
|
|
1374
|
+
*
|
|
1375
|
+
* Note that if the antecedent is `false`, the result is `true` by default
|
|
1376
|
+
* because the outcome of the consequent cannot be determined.
|
|
1377
|
+
*
|
|
1378
|
+
* This function is useful in situations where you need to enforce rules or
|
|
1379
|
+
* constraints that are contingent on certain conditions.
|
|
1380
|
+
* It proves especially helpful in defining property tests.
|
|
1381
|
+
*
|
|
1382
|
+
* The example below illustrates the transitive property of order using the
|
|
1383
|
+
* `implies` function. In simple terms, if `a <= b` and `b <= c`, then `a <= c`
|
|
1384
|
+
* must be true.
|
|
1385
|
+
*
|
|
1386
|
+
* @example
|
|
1387
|
+
* import { Predicate } from "effect"
|
|
1388
|
+
*
|
|
1389
|
+
* type Triple = {
|
|
1390
|
+
* readonly a: number
|
|
1391
|
+
* readonly b: number
|
|
1392
|
+
* readonly c: number
|
|
1393
|
+
* }
|
|
1394
|
+
*
|
|
1395
|
+
* const transitivity = Predicate.implies(
|
|
1396
|
+
* // antecedent
|
|
1397
|
+
* (input: Triple) => input.a <= input.b && input.b <= input.c,
|
|
1398
|
+
* // consequent
|
|
1399
|
+
* (input: Triple) => input.a <= input.c
|
|
1400
|
+
* )
|
|
1401
|
+
*
|
|
1402
|
+
* assert.equal(transitivity({ a: 1, b: 2, c: 3 }), true)
|
|
1403
|
+
* // antecedent is `false`, so the result is `true`
|
|
1404
|
+
* assert.equal(transitivity({ a: 1, b: 0, c: 0 }), true)
|
|
1405
|
+
*
|
|
1406
|
+
* @category combinators
|
|
1407
|
+
* @since 2.0.0
|
|
1408
|
+
*/
|
|
911
1409
|
<A>(antecedent: Predicate<A>, consequent: Predicate<A>): Predicate<A>
|
|
912
1410
|
} = dual(
|
|
913
1411
|
2,
|
|
@@ -919,7 +1417,15 @@ export const implies: {
|
|
|
919
1417
|
* @since 2.0.0
|
|
920
1418
|
*/
|
|
921
1419
|
export const nor: {
|
|
1420
|
+
/**
|
|
1421
|
+
* @category combinators
|
|
1422
|
+
* @since 2.0.0
|
|
1423
|
+
*/
|
|
922
1424
|
<A>(that: Predicate<A>): (self: Predicate<A>) => Predicate<A>
|
|
1425
|
+
/**
|
|
1426
|
+
* @category combinators
|
|
1427
|
+
* @since 2.0.0
|
|
1428
|
+
*/
|
|
923
1429
|
<A>(self: Predicate<A>, that: Predicate<A>): Predicate<A>
|
|
924
1430
|
} = dual(
|
|
925
1431
|
2,
|
|
@@ -931,7 +1437,15 @@ export const nor: {
|
|
|
931
1437
|
* @since 2.0.0
|
|
932
1438
|
*/
|
|
933
1439
|
export const nand: {
|
|
1440
|
+
/**
|
|
1441
|
+
* @category combinators
|
|
1442
|
+
* @since 2.0.0
|
|
1443
|
+
*/
|
|
934
1444
|
<A>(that: Predicate<A>): (self: Predicate<A>) => Predicate<A>
|
|
1445
|
+
/**
|
|
1446
|
+
* @category combinators
|
|
1447
|
+
* @since 2.0.0
|
|
1448
|
+
*/
|
|
935
1449
|
<A>(self: Predicate<A>, that: Predicate<A>): Predicate<A>
|
|
936
1450
|
} = dual(
|
|
937
1451
|
2,
|
package/src/PubSub.ts
CHANGED
|
@@ -155,7 +155,21 @@ export const awaitShutdown: <A>(self: PubSub<A>) => Effect.Effect<void> = intern
|
|
|
155
155
|
* @category utils
|
|
156
156
|
*/
|
|
157
157
|
export const publish: {
|
|
158
|
+
/**
|
|
159
|
+
* Publishes a message to the `PubSub`, returning whether the message was published
|
|
160
|
+
* to the `PubSub`.
|
|
161
|
+
*
|
|
162
|
+
* @since 2.0.0
|
|
163
|
+
* @category utils
|
|
164
|
+
*/
|
|
158
165
|
<A>(value: A): (self: PubSub<A>) => Effect.Effect<boolean>
|
|
166
|
+
/**
|
|
167
|
+
* Publishes a message to the `PubSub`, returning whether the message was published
|
|
168
|
+
* to the `PubSub`.
|
|
169
|
+
*
|
|
170
|
+
* @since 2.0.0
|
|
171
|
+
* @category utils
|
|
172
|
+
*/
|
|
159
173
|
<A>(self: PubSub<A>, value: A): Effect.Effect<boolean>
|
|
160
174
|
} = internal.publish
|
|
161
175
|
|
|
@@ -167,7 +181,21 @@ export const publish: {
|
|
|
167
181
|
* @category utils
|
|
168
182
|
*/
|
|
169
183
|
export const publishAll: {
|
|
184
|
+
/**
|
|
185
|
+
* Publishes all of the specified messages to the `PubSub`, returning whether they
|
|
186
|
+
* were published to the `PubSub`.
|
|
187
|
+
*
|
|
188
|
+
* @since 2.0.0
|
|
189
|
+
* @category utils
|
|
190
|
+
*/
|
|
170
191
|
<A>(elements: Iterable<A>): (self: PubSub<A>) => Effect.Effect<boolean>
|
|
192
|
+
/**
|
|
193
|
+
* Publishes all of the specified messages to the `PubSub`, returning whether they
|
|
194
|
+
* were published to the `PubSub`.
|
|
195
|
+
*
|
|
196
|
+
* @since 2.0.0
|
|
197
|
+
* @category utils
|
|
198
|
+
*/
|
|
171
199
|
<A>(self: PubSub<A>, elements: Iterable<A>): Effect.Effect<boolean>
|
|
172
200
|
} = internal.publishAll
|
|
173
201
|
|