effect 3.10.18 → 3.11.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 +206 -0
- package/dist/cjs/Array.js.map +1 -1
- package/dist/cjs/BigDecimal.js +181 -24
- package/dist/cjs/BigDecimal.js.map +1 -1
- package/dist/cjs/BigInt.js +54 -0
- package/dist/cjs/BigInt.js.map +1 -1
- package/dist/cjs/Boolean.js +24 -0
- package/dist/cjs/Boolean.js.map +1 -1
- package/dist/cjs/Brand.js +4 -0
- package/dist/cjs/Brand.js.map +1 -1
- package/dist/cjs/Channel.js +44 -4
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/Chunk.js +8 -0
- package/dist/cjs/Chunk.js.map +1 -1
- package/dist/cjs/Config.js +10 -1
- package/dist/cjs/Config.js.map +1 -1
- package/dist/cjs/Context.js +50 -1
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Cron.js +81 -67
- package/dist/cjs/Cron.js.map +1 -1
- package/dist/cjs/Data.js +14 -0
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/DateTime.js +178 -664
- package/dist/cjs/DateTime.js.map +1 -1
- package/dist/cjs/Duration.js +2 -0
- package/dist/cjs/Duration.js.map +1 -1
- package/dist/cjs/Effect.js +296 -4
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Either.js +38 -2
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/FiberHandle.js +6 -0
- package/dist/cjs/FiberHandle.js.map +1 -1
- package/dist/cjs/FiberMap.js +6 -0
- package/dist/cjs/FiberMap.js.map +1 -1
- package/dist/cjs/FiberSet.js +6 -0
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/Function.js +34 -0
- package/dist/cjs/Function.js.map +1 -1
- package/dist/cjs/GlobalValue.js +2 -0
- package/dist/cjs/GlobalValue.js.map +1 -1
- package/dist/cjs/HashMap.js.map +1 -1
- package/dist/cjs/Inspectable.js +8 -4
- package/dist/cjs/Inspectable.js.map +1 -1
- package/dist/cjs/Iterable.js +18 -0
- package/dist/cjs/Iterable.js.map +1 -1
- package/dist/cjs/JSONSchema.js.map +1 -1
- package/dist/cjs/List.js +4 -0
- package/dist/cjs/List.js.map +1 -1
- package/dist/cjs/Logger.js +26 -0
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/Mailbox.js +2 -0
- package/dist/cjs/Mailbox.js.map +1 -1
- package/dist/cjs/ManagedRuntime.js +2 -0
- package/dist/cjs/ManagedRuntime.js.map +1 -1
- package/dist/cjs/Metric.js +10 -0
- package/dist/cjs/Metric.js.map +1 -1
- package/dist/cjs/Micro.js +1104 -1069
- package/dist/cjs/Micro.js.map +1 -1
- package/dist/cjs/Number.js +44 -0
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/Option.js +70 -0
- package/dist/cjs/Option.js.map +1 -1
- package/dist/cjs/Order.js +2 -0
- package/dist/cjs/Order.js.map +1 -1
- package/dist/cjs/Ordering.js +4 -0
- package/dist/cjs/Ordering.js.map +1 -1
- package/dist/cjs/Predicate.js +68 -0
- package/dist/cjs/Predicate.js.map +1 -1
- package/dist/cjs/Random.js +4 -0
- package/dist/cjs/Random.js.map +1 -1
- package/dist/cjs/RateLimiter.js +4 -0
- package/dist/cjs/RateLimiter.js.map +1 -1
- package/dist/cjs/RcMap.js +2 -0
- package/dist/cjs/RcMap.js.map +1 -1
- package/dist/cjs/RcRef.js +2 -0
- package/dist/cjs/RcRef.js.map +1 -1
- package/dist/cjs/Record.js +56 -0
- package/dist/cjs/Record.js.map +1 -1
- package/dist/cjs/Redacted.js +8 -0
- package/dist/cjs/Redacted.js.map +1 -1
- package/dist/cjs/RegExp.js +4 -0
- package/dist/cjs/RegExp.js.map +1 -1
- package/dist/cjs/Request.js +4 -0
- package/dist/cjs/Request.js.map +1 -1
- package/dist/cjs/RequestResolver.js +2 -0
- package/dist/cjs/RequestResolver.js.map +1 -1
- package/dist/cjs/Runtime.js +6 -0
- package/dist/cjs/Runtime.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schema.js +91 -8
- package/dist/cjs/Schema.js.map +1 -1
- package/dist/cjs/Sink.js +9 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Stream.js +179 -7
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/String.js +62 -0
- package/dist/cjs/String.js.map +1 -1
- package/dist/cjs/Struct.js +12 -0
- package/dist/cjs/Struct.js.map +1 -1
- package/dist/cjs/Symbol.js +2 -0
- package/dist/cjs/Symbol.js.map +1 -1
- package/dist/cjs/Trie.js +56 -0
- package/dist/cjs/Trie.js.map +1 -1
- package/dist/cjs/Tuple.js +18 -0
- package/dist/cjs/Tuple.js.map +1 -1
- package/dist/cjs/Utils.js +7 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js +5 -9
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel.js +156 -130
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/config.js +13 -4
- package/dist/cjs/internal/config.js.map +1 -1
- package/dist/cjs/internal/context.js +46 -3
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/dateTime.js +747 -0
- package/dist/cjs/internal/dateTime.js.map +1 -0
- package/dist/cjs/internal/fiberRuntime.js +34 -11
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/groupBy.js +9 -3
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/layer.js +1 -1
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/mailbox.js +1 -1
- package/dist/cjs/internal/mailbox.js.map +1 -1
- package/dist/cjs/internal/sink.js +25 -21
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stream.js +70 -71
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/cjs/internal/version.js.map +1 -1
- package/dist/dts/Array.d.ts +534 -0
- package/dist/dts/Array.d.ts.map +1 -1
- package/dist/dts/BigDecimal.d.ts +172 -1
- package/dist/dts/BigDecimal.d.ts.map +1 -1
- package/dist/dts/BigInt.d.ts +114 -0
- package/dist/dts/BigInt.d.ts.map +1 -1
- package/dist/dts/Boolean.d.ts +56 -0
- package/dist/dts/Boolean.d.ts.map +1 -1
- package/dist/dts/Brand.d.ts +6 -0
- package/dist/dts/Brand.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +66 -5
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Chunk.d.ts +30 -0
- package/dist/dts/Chunk.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +25 -1
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +155 -0
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Cron.d.ts +21 -6
- package/dist/dts/Cron.d.ts.map +1 -1
- package/dist/dts/Data.d.ts +26 -0
- package/dist/dts/Data.d.ts.map +1 -1
- package/dist/dts/DateTime.d.ts +192 -49
- package/dist/dts/DateTime.d.ts.map +1 -1
- package/dist/dts/Duration.d.ts +2 -0
- package/dist/dts/Duration.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +658 -1
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +84 -2
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/FiberHandle.d.ts +6 -0
- package/dist/dts/FiberHandle.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts +6 -0
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts +6 -0
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/Function.d.ts +50 -0
- package/dist/dts/Function.d.ts.map +1 -1
- package/dist/dts/GlobalValue.d.ts +2 -0
- package/dist/dts/GlobalValue.d.ts.map +1 -1
- package/dist/dts/HashMap.d.ts +6 -0
- package/dist/dts/HashMap.d.ts.map +1 -1
- package/dist/dts/Inspectable.d.ts.map +1 -1
- package/dist/dts/Iterable.d.ts +26 -0
- package/dist/dts/Iterable.d.ts.map +1 -1
- package/dist/dts/JSONSchema.d.ts +1 -0
- package/dist/dts/JSONSchema.d.ts.map +1 -1
- package/dist/dts/List.d.ts +20 -0
- package/dist/dts/List.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +34 -0
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/Mailbox.d.ts +2 -0
- package/dist/dts/Mailbox.d.ts.map +1 -1
- package/dist/dts/ManagedRuntime.d.ts +2 -0
- package/dist/dts/ManagedRuntime.d.ts.map +1 -1
- package/dist/dts/Metric.d.ts +18 -0
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/Micro.d.ts +880 -863
- package/dist/dts/Micro.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +104 -0
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +142 -0
- package/dist/dts/Option.d.ts.map +1 -1
- package/dist/dts/Order.d.ts +2 -0
- package/dist/dts/Order.d.ts.map +1 -1
- package/dist/dts/Ordering.d.ts +8 -0
- package/dist/dts/Ordering.d.ts.map +1 -1
- package/dist/dts/Predicate.d.ts +104 -0
- package/dist/dts/Predicate.d.ts.map +1 -1
- package/dist/dts/Random.d.ts +4 -0
- package/dist/dts/Random.d.ts.map +1 -1
- package/dist/dts/RateLimiter.d.ts +4 -0
- package/dist/dts/RateLimiter.d.ts.map +1 -1
- package/dist/dts/RcMap.d.ts +6 -0
- package/dist/dts/RcMap.d.ts.map +1 -1
- package/dist/dts/RcRef.d.ts +2 -0
- package/dist/dts/RcRef.d.ts.map +1 -1
- package/dist/dts/Record.d.ts +136 -0
- package/dist/dts/Record.d.ts.map +1 -1
- package/dist/dts/Redacted.d.ts +8 -0
- package/dist/dts/Redacted.d.ts.map +1 -1
- package/dist/dts/RegExp.d.ts +4 -0
- package/dist/dts/RegExp.d.ts.map +1 -1
- package/dist/dts/Request.d.ts +4 -0
- package/dist/dts/Request.d.ts.map +1 -1
- package/dist/dts/RequestResolver.d.ts +6 -0
- package/dist/dts/RequestResolver.d.ts.map +1 -1
- package/dist/dts/Runtime.d.ts +18 -0
- package/dist/dts/Runtime.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +2 -0
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schema.d.ts +90 -0
- package/dist/dts/Schema.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +8 -0
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +394 -32
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/String.d.ts +94 -0
- package/dist/dts/String.d.ts.map +1 -1
- package/dist/dts/Struct.d.ts +24 -0
- package/dist/dts/Struct.d.ts.map +1 -1
- package/dist/dts/Symbol.d.ts +2 -0
- package/dist/dts/Symbol.d.ts.map +1 -1
- package/dist/dts/Trie.d.ts +132 -0
- package/dist/dts/Trie.d.ts.map +1 -1
- package/dist/dts/Tuple.d.ts +42 -0
- package/dist/dts/Tuple.d.ts.map +1 -1
- package/dist/dts/Types.d.ts +24 -0
- package/dist/dts/Types.d.ts.map +1 -1
- package/dist/dts/Utils.d.ts +4 -0
- package/dist/dts/Utils.d.ts.map +1 -1
- package/dist/dts/internal/context.d.ts +1 -1
- package/dist/dts/internal/context.d.ts.map +1 -1
- package/dist/dts/internal/dateTime.d.ts +2 -0
- package/dist/dts/internal/dateTime.d.ts.map +1 -0
- package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Array.js +208 -0
- package/dist/esm/Array.js.map +1 -1
- package/dist/esm/BigDecimal.js +175 -20
- package/dist/esm/BigDecimal.js.map +1 -1
- package/dist/esm/BigInt.js +54 -0
- package/dist/esm/BigInt.js.map +1 -1
- package/dist/esm/Boolean.js +24 -0
- package/dist/esm/Boolean.js.map +1 -1
- package/dist/esm/Brand.js +4 -0
- package/dist/esm/Brand.js.map +1 -1
- package/dist/esm/Channel.js +42 -2
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Chunk.js +8 -0
- package/dist/esm/Chunk.js.map +1 -1
- package/dist/esm/Config.js +9 -0
- package/dist/esm/Config.js.map +1 -1
- package/dist/esm/Context.js +49 -0
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Cron.js +81 -67
- package/dist/esm/Cron.js.map +1 -1
- package/dist/esm/Data.js +16 -0
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/DateTime.js +176 -627
- package/dist/esm/DateTime.js.map +1 -1
- package/dist/esm/Duration.js +2 -0
- package/dist/esm/Duration.js.map +1 -1
- package/dist/esm/Effect.js +297 -0
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Either.js +40 -2
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/FiberHandle.js +6 -0
- package/dist/esm/FiberHandle.js.map +1 -1
- package/dist/esm/FiberMap.js +6 -0
- package/dist/esm/FiberMap.js.map +1 -1
- package/dist/esm/FiberSet.js +6 -0
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/Function.js +34 -0
- package/dist/esm/Function.js.map +1 -1
- package/dist/esm/GlobalValue.js +2 -0
- package/dist/esm/GlobalValue.js.map +1 -1
- package/dist/esm/HashMap.js.map +1 -1
- package/dist/esm/Inspectable.js +8 -4
- package/dist/esm/Inspectable.js.map +1 -1
- package/dist/esm/Iterable.js +18 -0
- package/dist/esm/Iterable.js.map +1 -1
- package/dist/esm/JSONSchema.js.map +1 -1
- package/dist/esm/List.js +4 -0
- package/dist/esm/List.js.map +1 -1
- package/dist/esm/Logger.js +26 -0
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/Mailbox.js +2 -0
- package/dist/esm/Mailbox.js.map +1 -1
- package/dist/esm/ManagedRuntime.js +2 -0
- package/dist/esm/ManagedRuntime.js.map +1 -1
- package/dist/esm/Metric.js +10 -0
- package/dist/esm/Metric.js.map +1 -1
- package/dist/esm/Micro.js +1077 -1037
- package/dist/esm/Micro.js.map +1 -1
- package/dist/esm/Number.js +44 -0
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/Option.js +72 -0
- package/dist/esm/Option.js.map +1 -1
- package/dist/esm/Order.js +2 -0
- package/dist/esm/Order.js.map +1 -1
- package/dist/esm/Ordering.js +4 -0
- package/dist/esm/Ordering.js.map +1 -1
- package/dist/esm/Predicate.js +68 -0
- package/dist/esm/Predicate.js.map +1 -1
- package/dist/esm/Random.js +4 -0
- package/dist/esm/Random.js.map +1 -1
- package/dist/esm/RateLimiter.js +4 -0
- package/dist/esm/RateLimiter.js.map +1 -1
- package/dist/esm/RcMap.js +2 -0
- package/dist/esm/RcMap.js.map +1 -1
- package/dist/esm/RcRef.js +2 -0
- package/dist/esm/RcRef.js.map +1 -1
- package/dist/esm/Record.js +56 -0
- package/dist/esm/Record.js.map +1 -1
- package/dist/esm/Redacted.js +8 -0
- package/dist/esm/Redacted.js.map +1 -1
- package/dist/esm/RegExp.js +4 -0
- package/dist/esm/RegExp.js.map +1 -1
- package/dist/esm/Request.js +4 -0
- package/dist/esm/Request.js.map +1 -1
- package/dist/esm/RequestResolver.js +2 -0
- package/dist/esm/RequestResolver.js.map +1 -1
- package/dist/esm/Runtime.js +6 -0
- package/dist/esm/Runtime.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schema.js +88 -0
- package/dist/esm/Schema.js.map +1 -1
- package/dist/esm/Sink.js +8 -0
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/Stream.js +183 -5
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/String.js +62 -0
- package/dist/esm/String.js.map +1 -1
- package/dist/esm/Struct.js +12 -0
- package/dist/esm/Struct.js.map +1 -1
- package/dist/esm/Symbol.js +2 -0
- package/dist/esm/Symbol.js.map +1 -1
- package/dist/esm/Trie.js +56 -0
- package/dist/esm/Trie.js.map +1 -1
- package/dist/esm/Tuple.js +22 -0
- package/dist/esm/Tuple.js.map +1 -1
- package/dist/esm/Utils.js +5 -0
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js +5 -7
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel.js +152 -129
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/config.js +11 -3
- package/dist/esm/internal/config.js.map +1 -1
- package/dist/esm/internal/context.js +42 -2
- package/dist/esm/internal/context.js.map +1 -1
- package/dist/esm/internal/dateTime.js +704 -0
- package/dist/esm/internal/dateTime.js.map +1 -0
- package/dist/esm/internal/fiberRuntime.js +31 -9
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/groupBy.js +9 -3
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/layer.js +1 -1
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/mailbox.js +1 -1
- package/dist/esm/internal/mailbox.js.map +1 -1
- package/dist/esm/internal/sink.js +23 -20
- package/dist/esm/internal/sink.js.map +1 -1
- package/dist/esm/internal/stream.js +66 -69
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/dist/esm/internal/version.js.map +1 -1
- package/package.json +1 -1
- package/src/Array.ts +534 -0
- package/src/BigDecimal.ts +247 -21
- package/src/BigInt.ts +114 -0
- package/src/Boolean.ts +56 -0
- package/src/Brand.ts +6 -0
- package/src/Channel.ts +81 -5
- package/src/Chunk.ts +32 -0
- package/src/Config.ts +26 -1
- package/src/Context.ts +163 -0
- package/src/Cron.ts +91 -68
- package/src/Data.ts +26 -0
- package/src/DateTime.ts +307 -757
- package/src/Duration.ts +2 -0
- package/src/Effect.ts +910 -1
- package/src/Either.ts +84 -2
- package/src/FiberHandle.ts +6 -0
- package/src/FiberMap.ts +6 -0
- package/src/FiberSet.ts +6 -0
- package/src/Function.ts +50 -0
- package/src/GlobalValue.ts +2 -0
- package/src/HashMap.ts +6 -0
- package/src/Inspectable.ts +11 -7
- package/src/Iterable.ts +26 -0
- package/src/JSONSchema.ts +1 -0
- package/src/List.ts +24 -0
- package/src/Logger.ts +34 -0
- package/src/Mailbox.ts +2 -0
- package/src/ManagedRuntime.ts +2 -0
- package/src/Metric.ts +18 -0
- package/src/Micro.ts +2007 -1745
- package/src/Number.ts +104 -0
- package/src/Option.ts +142 -0
- package/src/Order.ts +2 -0
- package/src/Ordering.ts +8 -0
- package/src/Predicate.ts +104 -0
- package/src/Random.ts +4 -0
- package/src/RateLimiter.ts +4 -0
- package/src/RcMap.ts +6 -0
- package/src/RcRef.ts +2 -0
- package/src/Record.ts +136 -0
- package/src/Redacted.ts +8 -0
- package/src/RegExp.ts +4 -0
- package/src/Request.ts +4 -0
- package/src/RequestResolver.ts +6 -0
- package/src/Runtime.ts +18 -0
- package/src/STM.ts +2 -0
- package/src/Schema.ts +124 -0
- package/src/Sink.ts +11 -0
- package/src/Stream.ts +399 -44
- package/src/String.ts +94 -0
- package/src/Struct.ts +24 -0
- package/src/Symbol.ts +2 -0
- package/src/Trie.ts +132 -0
- package/src/Tuple.ts +42 -0
- package/src/Types.ts +24 -0
- package/src/Utils.ts +8 -0
- package/src/internal/channel/channelExecutor.ts +37 -33
- package/src/internal/channel.ts +504 -467
- package/src/internal/config.ts +18 -6
- package/src/internal/context.ts +56 -4
- package/src/internal/dateTime.ts +1126 -0
- package/src/internal/fiberRuntime.ts +35 -16
- package/src/internal/groupBy.ts +13 -22
- package/src/internal/layer.ts +5 -8
- package/src/internal/mailbox.ts +6 -4
- package/src/internal/sink.ts +55 -35
- package/src/internal/stream.ts +299 -299
- package/src/internal/version.ts +1 -1
package/src/Option.ts
CHANGED
|
@@ -125,11 +125,13 @@ export const some: <A>(value: A) => Option<A> = option.some
|
|
|
125
125
|
* @param input - The value to check.
|
|
126
126
|
*
|
|
127
127
|
* @example
|
|
128
|
+
* ```ts
|
|
128
129
|
* import { Option } from "effect"
|
|
129
130
|
*
|
|
130
131
|
* assert.deepStrictEqual(Option.isOption(Option.some(1)), true)
|
|
131
132
|
* assert.deepStrictEqual(Option.isOption(Option.none()), true)
|
|
132
133
|
* assert.deepStrictEqual(Option.isOption({}), false)
|
|
134
|
+
* ```
|
|
133
135
|
*
|
|
134
136
|
* @category guards
|
|
135
137
|
* @since 2.0.0
|
|
@@ -142,10 +144,12 @@ export const isOption: (input: unknown) => input is Option<unknown> = option.isO
|
|
|
142
144
|
* @param self - The `Option` to check.
|
|
143
145
|
*
|
|
144
146
|
* @example
|
|
147
|
+
* ```ts
|
|
145
148
|
* import { Option } from "effect"
|
|
146
149
|
*
|
|
147
150
|
* assert.deepStrictEqual(Option.isNone(Option.some(1)), false)
|
|
148
151
|
* assert.deepStrictEqual(Option.isNone(Option.none()), true)
|
|
152
|
+
* ```
|
|
149
153
|
*
|
|
150
154
|
* @category guards
|
|
151
155
|
* @since 2.0.0
|
|
@@ -158,10 +162,12 @@ export const isNone: <A>(self: Option<A>) => self is None<A> = option.isNone
|
|
|
158
162
|
* @param self - The `Option` to check.
|
|
159
163
|
*
|
|
160
164
|
* @example
|
|
165
|
+
* ```ts
|
|
161
166
|
* import { Option } from "effect"
|
|
162
167
|
*
|
|
163
168
|
* assert.deepStrictEqual(Option.isSome(Option.some(1)), true)
|
|
164
169
|
* assert.deepStrictEqual(Option.isSome(Option.none()), false)
|
|
170
|
+
* ```
|
|
165
171
|
*
|
|
166
172
|
* @category guards
|
|
167
173
|
* @since 2.0.0
|
|
@@ -177,6 +183,7 @@ export const isSome: <A>(self: Option<A>) => self is Some<A> = option.isSome
|
|
|
177
183
|
* @param onSome - The function to be called if the `Option` is `Some`, it will be passed the `Option`'s value and its result will be returned
|
|
178
184
|
*
|
|
179
185
|
* @example
|
|
186
|
+
* ```ts
|
|
180
187
|
* import { pipe, Option } from "effect"
|
|
181
188
|
*
|
|
182
189
|
* assert.deepStrictEqual(
|
|
@@ -188,6 +195,7 @@ export const isSome: <A>(self: Option<A>) => self is Some<A> = option.isSome
|
|
|
188
195
|
* pipe(Option.none(), Option.match({ onNone: () => 'a none', onSome: (a) => `a some containing ${a}` })),
|
|
189
196
|
* 'a none'
|
|
190
197
|
* )
|
|
198
|
+
* ```
|
|
191
199
|
*
|
|
192
200
|
* @category pattern matching
|
|
193
201
|
* @since 2.0.0
|
|
@@ -202,6 +210,7 @@ export const match: {
|
|
|
202
210
|
* @param onSome - The function to be called if the `Option` is `Some`, it will be passed the `Option`'s value and its result will be returned
|
|
203
211
|
*
|
|
204
212
|
* @example
|
|
213
|
+
* ```ts
|
|
205
214
|
* import { pipe, Option } from "effect"
|
|
206
215
|
*
|
|
207
216
|
* assert.deepStrictEqual(
|
|
@@ -213,6 +222,7 @@ export const match: {
|
|
|
213
222
|
* pipe(Option.none(), Option.match({ onNone: () => 'a none', onSome: (a) => `a some containing ${a}` })),
|
|
214
223
|
* 'a none'
|
|
215
224
|
* )
|
|
225
|
+
* ```
|
|
216
226
|
*
|
|
217
227
|
* @category pattern matching
|
|
218
228
|
* @since 2.0.0
|
|
@@ -232,6 +242,7 @@ export const match: {
|
|
|
232
242
|
* @param onSome - The function to be called if the `Option` is `Some`, it will be passed the `Option`'s value and its result will be returned
|
|
233
243
|
*
|
|
234
244
|
* @example
|
|
245
|
+
* ```ts
|
|
235
246
|
* import { pipe, Option } from "effect"
|
|
236
247
|
*
|
|
237
248
|
* assert.deepStrictEqual(
|
|
@@ -243,6 +254,7 @@ export const match: {
|
|
|
243
254
|
* pipe(Option.none(), Option.match({ onNone: () => 'a none', onSome: (a) => `a some containing ${a}` })),
|
|
244
255
|
* 'a none'
|
|
245
256
|
* )
|
|
257
|
+
* ```
|
|
246
258
|
*
|
|
247
259
|
* @category pattern matching
|
|
248
260
|
* @since 2.0.0
|
|
@@ -267,6 +279,7 @@ export const match: {
|
|
|
267
279
|
* This function ensures that a type guard definition is type-safe.
|
|
268
280
|
*
|
|
269
281
|
* @example
|
|
282
|
+
* ```ts
|
|
270
283
|
* import { Option } from "effect"
|
|
271
284
|
*
|
|
272
285
|
* const parsePositive = (n: number): Option.Option<number> =>
|
|
@@ -276,6 +289,7 @@ export const match: {
|
|
|
276
289
|
*
|
|
277
290
|
* assert.deepStrictEqual(isPositive(1), true)
|
|
278
291
|
* assert.deepStrictEqual(isPositive(-1), false)
|
|
292
|
+
* ```
|
|
279
293
|
*
|
|
280
294
|
* @category conversions
|
|
281
295
|
* @since 2.0.0
|
|
@@ -289,10 +303,12 @@ export const toRefinement = <A, B extends A>(f: (a: A) => Option<B>): (a: A) =>
|
|
|
289
303
|
* @param collection - The `Iterable` to be converted to an `Option`.
|
|
290
304
|
*
|
|
291
305
|
* @example
|
|
306
|
+
* ```ts
|
|
292
307
|
* import { Option } from "effect"
|
|
293
308
|
*
|
|
294
309
|
* assert.deepStrictEqual(Option.fromIterable([1, 2, 3]), Option.some(1))
|
|
295
310
|
* assert.deepStrictEqual(Option.fromIterable([]), Option.none())
|
|
311
|
+
* ```
|
|
296
312
|
*
|
|
297
313
|
* @category constructors
|
|
298
314
|
* @since 2.0.0
|
|
@@ -308,10 +324,12 @@ export const fromIterable = <A>(collection: Iterable<A>): Option<A> => {
|
|
|
308
324
|
* Converts a `Either` to an `Option` discarding the error.
|
|
309
325
|
*
|
|
310
326
|
* @example
|
|
327
|
+
* ```ts
|
|
311
328
|
* import { Option, Either } from "effect"
|
|
312
329
|
*
|
|
313
330
|
* assert.deepStrictEqual(Option.getRight(Either.right('ok')), Option.some('ok'))
|
|
314
331
|
* assert.deepStrictEqual(Option.getRight(Either.left('err')), Option.none())
|
|
332
|
+
* ```
|
|
315
333
|
*
|
|
316
334
|
* @category conversions
|
|
317
335
|
* @since 2.0.0
|
|
@@ -322,10 +340,12 @@ export const getRight: <R, L>(self: Either<R, L>) => Option<R> = either.getRight
|
|
|
322
340
|
* Converts a `Either` to an `Option` discarding the value.
|
|
323
341
|
*
|
|
324
342
|
* @example
|
|
343
|
+
* ```ts
|
|
325
344
|
* import { Option, Either } from "effect"
|
|
326
345
|
*
|
|
327
346
|
* assert.deepStrictEqual(Option.getLeft(Either.right("ok")), Option.none())
|
|
328
347
|
* assert.deepStrictEqual(Option.getLeft(Either.left("a")), Option.some("a"))
|
|
348
|
+
* ```
|
|
329
349
|
*
|
|
330
350
|
* @category conversions
|
|
331
351
|
* @since 2.0.0
|
|
@@ -339,10 +359,12 @@ export const getLeft: <R, L>(self: Either<R, L>) => Option<L> = either.getLeft
|
|
|
339
359
|
* @param onNone - Function that returns the default value to return if the `Option` is `None`.
|
|
340
360
|
*
|
|
341
361
|
* @example
|
|
362
|
+
* ```ts
|
|
342
363
|
* import { pipe, Option } from "effect"
|
|
343
364
|
*
|
|
344
365
|
* assert.deepStrictEqual(pipe(Option.some(1), Option.getOrElse(() => 0)), 1)
|
|
345
366
|
* assert.deepStrictEqual(pipe(Option.none(), Option.getOrElse(() => 0)), 0)
|
|
367
|
+
* ```
|
|
346
368
|
*
|
|
347
369
|
* @category getters
|
|
348
370
|
* @since 2.0.0
|
|
@@ -355,10 +377,12 @@ export const getOrElse: {
|
|
|
355
377
|
* @param onNone - Function that returns the default value to return if the `Option` is `None`.
|
|
356
378
|
*
|
|
357
379
|
* @example
|
|
380
|
+
* ```ts
|
|
358
381
|
* import { pipe, Option } from "effect"
|
|
359
382
|
*
|
|
360
383
|
* assert.deepStrictEqual(pipe(Option.some(1), Option.getOrElse(() => 0)), 1)
|
|
361
384
|
* assert.deepStrictEqual(pipe(Option.none(), Option.getOrElse(() => 0)), 0)
|
|
385
|
+
* ```
|
|
362
386
|
*
|
|
363
387
|
* @category getters
|
|
364
388
|
* @since 2.0.0
|
|
@@ -371,10 +395,12 @@ export const getOrElse: {
|
|
|
371
395
|
* @param onNone - Function that returns the default value to return if the `Option` is `None`.
|
|
372
396
|
*
|
|
373
397
|
* @example
|
|
398
|
+
* ```ts
|
|
374
399
|
* import { pipe, Option } from "effect"
|
|
375
400
|
*
|
|
376
401
|
* assert.deepStrictEqual(pipe(Option.some(1), Option.getOrElse(() => 0)), 1)
|
|
377
402
|
* assert.deepStrictEqual(pipe(Option.none(), Option.getOrElse(() => 0)), 0)
|
|
403
|
+
* ```
|
|
378
404
|
*
|
|
379
405
|
* @category getters
|
|
380
406
|
* @since 2.0.0
|
|
@@ -392,6 +418,7 @@ export const getOrElse: {
|
|
|
392
418
|
* @param that - The `Option` to return if `self` is `None`.
|
|
393
419
|
*
|
|
394
420
|
* @example
|
|
421
|
+
* ```ts
|
|
395
422
|
* import { pipe, Option } from "effect"
|
|
396
423
|
*
|
|
397
424
|
* assert.deepStrictEqual(
|
|
@@ -422,6 +449,7 @@ export const getOrElse: {
|
|
|
422
449
|
* ),
|
|
423
450
|
* Option.some('a')
|
|
424
451
|
* )
|
|
452
|
+
* ```
|
|
425
453
|
*
|
|
426
454
|
* @category error handling
|
|
427
455
|
* @since 2.0.0
|
|
@@ -434,6 +462,7 @@ export const orElse: {
|
|
|
434
462
|
* @param that - The `Option` to return if `self` is `None`.
|
|
435
463
|
*
|
|
436
464
|
* @example
|
|
465
|
+
* ```ts
|
|
437
466
|
* import { pipe, Option } from "effect"
|
|
438
467
|
*
|
|
439
468
|
* assert.deepStrictEqual(
|
|
@@ -464,6 +493,7 @@ export const orElse: {
|
|
|
464
493
|
* ),
|
|
465
494
|
* Option.some('a')
|
|
466
495
|
* )
|
|
496
|
+
* ```
|
|
467
497
|
*
|
|
468
498
|
* @category error handling
|
|
469
499
|
* @since 2.0.0
|
|
@@ -476,6 +506,7 @@ export const orElse: {
|
|
|
476
506
|
* @param that - The `Option` to return if `self` is `None`.
|
|
477
507
|
*
|
|
478
508
|
* @example
|
|
509
|
+
* ```ts
|
|
479
510
|
* import { pipe, Option } from "effect"
|
|
480
511
|
*
|
|
481
512
|
* assert.deepStrictEqual(
|
|
@@ -506,6 +537,7 @@ export const orElse: {
|
|
|
506
537
|
* ),
|
|
507
538
|
* Option.some('a')
|
|
508
539
|
* )
|
|
540
|
+
* ```
|
|
509
541
|
*
|
|
510
542
|
* @category error handling
|
|
511
543
|
* @since 2.0.0
|
|
@@ -523,6 +555,7 @@ export const orElse: {
|
|
|
523
555
|
* @param onNone - Function that returns the default value to return if the `Option` is `None`.
|
|
524
556
|
*
|
|
525
557
|
* @example
|
|
558
|
+
* ```ts
|
|
526
559
|
* import { pipe, Option } from "effect"
|
|
527
560
|
*
|
|
528
561
|
* assert.deepStrictEqual(
|
|
@@ -539,6 +572,7 @@ export const orElse: {
|
|
|
539
572
|
* ),
|
|
540
573
|
* Option.some('a')
|
|
541
574
|
* )
|
|
575
|
+
* ```
|
|
542
576
|
*
|
|
543
577
|
* @category error handling
|
|
544
578
|
* @since 2.0.0
|
|
@@ -551,6 +585,7 @@ export const orElseSome: {
|
|
|
551
585
|
* @param onNone - Function that returns the default value to return if the `Option` is `None`.
|
|
552
586
|
*
|
|
553
587
|
* @example
|
|
588
|
+
* ```ts
|
|
554
589
|
* import { pipe, Option } from "effect"
|
|
555
590
|
*
|
|
556
591
|
* assert.deepStrictEqual(
|
|
@@ -567,6 +602,7 @@ export const orElseSome: {
|
|
|
567
602
|
* ),
|
|
568
603
|
* Option.some('a')
|
|
569
604
|
* )
|
|
605
|
+
* ```
|
|
570
606
|
*
|
|
571
607
|
* @category error handling
|
|
572
608
|
* @since 2.0.0
|
|
@@ -579,6 +615,7 @@ export const orElseSome: {
|
|
|
579
615
|
* @param onNone - Function that returns the default value to return if the `Option` is `None`.
|
|
580
616
|
*
|
|
581
617
|
* @example
|
|
618
|
+
* ```ts
|
|
582
619
|
* import { pipe, Option } from "effect"
|
|
583
620
|
*
|
|
584
621
|
* assert.deepStrictEqual(
|
|
@@ -595,6 +632,7 @@ export const orElseSome: {
|
|
|
595
632
|
* ),
|
|
596
633
|
* Option.some('a')
|
|
597
634
|
* )
|
|
635
|
+
* ```
|
|
598
636
|
*
|
|
599
637
|
* @category error handling
|
|
600
638
|
* @since 2.0.0
|
|
@@ -656,9 +694,11 @@ export const orElseEither: {
|
|
|
656
694
|
* @param collection - An iterable collection of `Option` to be searched.
|
|
657
695
|
*
|
|
658
696
|
* @example
|
|
697
|
+
* ```ts
|
|
659
698
|
* import { Option } from "effect"
|
|
660
699
|
*
|
|
661
700
|
* assert.deepStrictEqual(Option.firstSomeOf([Option.none(), Option.some(1), Option.some(2)]), Option.some(1))
|
|
701
|
+
* ```
|
|
662
702
|
*
|
|
663
703
|
* @category error handling
|
|
664
704
|
* @since 2.0.0
|
|
@@ -682,11 +722,13 @@ export const firstSomeOf = <T, C extends Iterable<Option<T>> = Iterable<Option<T
|
|
|
682
722
|
* @param nullableValue - The nullable value to be converted to an `Option`.
|
|
683
723
|
*
|
|
684
724
|
* @example
|
|
725
|
+
* ```ts
|
|
685
726
|
* import { Option } from "effect"
|
|
686
727
|
*
|
|
687
728
|
* assert.deepStrictEqual(Option.fromNullable(undefined), Option.none())
|
|
688
729
|
* assert.deepStrictEqual(Option.fromNullable(null), Option.none())
|
|
689
730
|
* assert.deepStrictEqual(Option.fromNullable(1), Option.some(1))
|
|
731
|
+
* ```
|
|
690
732
|
*
|
|
691
733
|
* @category conversions
|
|
692
734
|
* @since 2.0.0
|
|
@@ -701,6 +743,7 @@ export const fromNullable = <A>(
|
|
|
701
743
|
* This API is useful for lifting a function that returns `null` or `undefined` into the `Option` context.
|
|
702
744
|
*
|
|
703
745
|
* @example
|
|
746
|
+
* ```ts
|
|
704
747
|
* import { Option } from "effect"
|
|
705
748
|
*
|
|
706
749
|
* const parse = (s: string): number | undefined => {
|
|
@@ -712,6 +755,7 @@ export const fromNullable = <A>(
|
|
|
712
755
|
*
|
|
713
756
|
* assert.deepStrictEqual(parseOption('1'), Option.some(1))
|
|
714
757
|
* assert.deepStrictEqual(parseOption('not a number'), Option.none())
|
|
758
|
+
* ```
|
|
715
759
|
*
|
|
716
760
|
* @category conversions
|
|
717
761
|
* @since 2.0.0
|
|
@@ -727,10 +771,12 @@ export const liftNullable = <A extends ReadonlyArray<unknown>, B>(
|
|
|
727
771
|
* @param self - The `Option` to extract the value from.
|
|
728
772
|
*
|
|
729
773
|
* @example
|
|
774
|
+
* ```ts
|
|
730
775
|
* import { Option } from "effect"
|
|
731
776
|
*
|
|
732
777
|
* assert.deepStrictEqual(Option.getOrNull(Option.some(1)), 1)
|
|
733
778
|
* assert.deepStrictEqual(Option.getOrNull(Option.none()), null)
|
|
779
|
+
* ```
|
|
734
780
|
*
|
|
735
781
|
* @category getters
|
|
736
782
|
* @since 2.0.0
|
|
@@ -743,10 +789,12 @@ export const getOrNull: <A>(self: Option<A>) => A | null = getOrElse(constNull)
|
|
|
743
789
|
* @param self - The `Option` to extract the value from.
|
|
744
790
|
*
|
|
745
791
|
* @example
|
|
792
|
+
* ```ts
|
|
746
793
|
* import { Option } from "effect"
|
|
747
794
|
*
|
|
748
795
|
* assert.deepStrictEqual(Option.getOrUndefined(Option.some(1)), 1)
|
|
749
796
|
* assert.deepStrictEqual(Option.getOrUndefined(Option.none()), undefined)
|
|
797
|
+
* ```
|
|
750
798
|
*
|
|
751
799
|
* @category getters
|
|
752
800
|
* @since 2.0.0
|
|
@@ -762,12 +810,14 @@ export const getOrUndefined: <A>(self: Option<A>) => A | undefined = getOrElse(c
|
|
|
762
810
|
* @param f - the function that can throw exceptions.
|
|
763
811
|
*
|
|
764
812
|
* @example
|
|
813
|
+
* ```ts
|
|
765
814
|
* import { Option } from "effect"
|
|
766
815
|
*
|
|
767
816
|
* const parse = Option.liftThrowable(JSON.parse)
|
|
768
817
|
*
|
|
769
818
|
* assert.deepStrictEqual(parse("1"), Option.some(1))
|
|
770
819
|
* assert.deepStrictEqual(parse(""), Option.none())
|
|
820
|
+
* ```
|
|
771
821
|
*
|
|
772
822
|
* @category conversions
|
|
773
823
|
* @since 2.0.0
|
|
@@ -792,6 +842,7 @@ export const liftThrowable = <A extends ReadonlyArray<unknown>, B>(
|
|
|
792
842
|
* @param onNone - A function that will be called if the `Option` is `None`. It returns the error to be thrown.
|
|
793
843
|
*
|
|
794
844
|
* @example
|
|
845
|
+
* ```ts
|
|
795
846
|
* import { Option } from "effect"
|
|
796
847
|
*
|
|
797
848
|
* assert.deepStrictEqual(
|
|
@@ -799,6 +850,7 @@ export const liftThrowable = <A extends ReadonlyArray<unknown>, B>(
|
|
|
799
850
|
* 1
|
|
800
851
|
* )
|
|
801
852
|
* assert.throws(() => Option.getOrThrowWith(Option.none(), () => new Error('Unexpected None')))
|
|
853
|
+
* ```
|
|
802
854
|
*
|
|
803
855
|
* @category conversions
|
|
804
856
|
* @since 2.0.0
|
|
@@ -813,6 +865,7 @@ export const getOrThrowWith: {
|
|
|
813
865
|
* @param onNone - A function that will be called if the `Option` is `None`. It returns the error to be thrown.
|
|
814
866
|
*
|
|
815
867
|
* @example
|
|
868
|
+
* ```ts
|
|
816
869
|
* import { Option } from "effect"
|
|
817
870
|
*
|
|
818
871
|
* assert.deepStrictEqual(
|
|
@@ -820,6 +873,7 @@ export const getOrThrowWith: {
|
|
|
820
873
|
* 1
|
|
821
874
|
* )
|
|
822
875
|
* assert.throws(() => Option.getOrThrowWith(Option.none(), () => new Error('Unexpected None')))
|
|
876
|
+
* ```
|
|
823
877
|
*
|
|
824
878
|
* @category conversions
|
|
825
879
|
* @since 2.0.0
|
|
@@ -834,6 +888,7 @@ export const getOrThrowWith: {
|
|
|
834
888
|
* @param onNone - A function that will be called if the `Option` is `None`. It returns the error to be thrown.
|
|
835
889
|
*
|
|
836
890
|
* @example
|
|
891
|
+
* ```ts
|
|
837
892
|
* import { Option } from "effect"
|
|
838
893
|
*
|
|
839
894
|
* assert.deepStrictEqual(
|
|
@@ -841,6 +896,7 @@ export const getOrThrowWith: {
|
|
|
841
896
|
* 1
|
|
842
897
|
* )
|
|
843
898
|
* assert.throws(() => Option.getOrThrowWith(Option.none(), () => new Error('Unexpected None')))
|
|
899
|
+
* ```
|
|
844
900
|
*
|
|
845
901
|
* @category conversions
|
|
846
902
|
* @since 2.0.0
|
|
@@ -862,10 +918,12 @@ export const getOrThrowWith: {
|
|
|
862
918
|
* @throws `Error("getOrThrow called on a None")`
|
|
863
919
|
*
|
|
864
920
|
* @example
|
|
921
|
+
* ```ts
|
|
865
922
|
* import { Option } from "effect"
|
|
866
923
|
*
|
|
867
924
|
* assert.deepStrictEqual(Option.getOrThrow(Option.some(1)), 1)
|
|
868
925
|
* assert.throws(() => Option.getOrThrow(Option.none()))
|
|
926
|
+
* ```
|
|
869
927
|
*
|
|
870
928
|
* @category conversions
|
|
871
929
|
* @since 2.0.0
|
|
@@ -1043,6 +1101,7 @@ export const andThen: {
|
|
|
1043
1101
|
* This is `flatMap` + `fromNullable`, useful when working with optional values.
|
|
1044
1102
|
*
|
|
1045
1103
|
* @example
|
|
1104
|
+
* ```ts
|
|
1046
1105
|
* import { pipe, Option } from "effect"
|
|
1047
1106
|
*
|
|
1048
1107
|
* interface Employee {
|
|
@@ -1074,6 +1133,7 @@ export const andThen: {
|
|
|
1074
1133
|
* ),
|
|
1075
1134
|
* Option.none()
|
|
1076
1135
|
* )
|
|
1136
|
+
* ```
|
|
1077
1137
|
*
|
|
1078
1138
|
* @category sequencing
|
|
1079
1139
|
* @since 2.0.0
|
|
@@ -1083,6 +1143,7 @@ export const flatMapNullable: {
|
|
|
1083
1143
|
* This is `flatMap` + `fromNullable`, useful when working with optional values.
|
|
1084
1144
|
*
|
|
1085
1145
|
* @example
|
|
1146
|
+
* ```ts
|
|
1086
1147
|
* import { pipe, Option } from "effect"
|
|
1087
1148
|
*
|
|
1088
1149
|
* interface Employee {
|
|
@@ -1114,6 +1175,7 @@ export const flatMapNullable: {
|
|
|
1114
1175
|
* ),
|
|
1115
1176
|
* Option.none()
|
|
1116
1177
|
* )
|
|
1178
|
+
* ```
|
|
1117
1179
|
*
|
|
1118
1180
|
* @category sequencing
|
|
1119
1181
|
* @since 2.0.0
|
|
@@ -1123,6 +1185,7 @@ export const flatMapNullable: {
|
|
|
1123
1185
|
* This is `flatMap` + `fromNullable`, useful when working with optional values.
|
|
1124
1186
|
*
|
|
1125
1187
|
* @example
|
|
1188
|
+
* ```ts
|
|
1126
1189
|
* import { pipe, Option } from "effect"
|
|
1127
1190
|
*
|
|
1128
1191
|
* interface Employee {
|
|
@@ -1154,6 +1217,7 @@ export const flatMapNullable: {
|
|
|
1154
1217
|
* ),
|
|
1155
1218
|
* Option.none()
|
|
1156
1219
|
* )
|
|
1220
|
+
* ```
|
|
1157
1221
|
*
|
|
1158
1222
|
* @category sequencing
|
|
1159
1223
|
* @since 2.0.0
|
|
@@ -1253,6 +1317,7 @@ export const zipLeft: {
|
|
|
1253
1317
|
* @param self - The `Option` to apply the function to
|
|
1254
1318
|
*
|
|
1255
1319
|
* @example
|
|
1320
|
+
* ```ts
|
|
1256
1321
|
* import { Option } from "effect"
|
|
1257
1322
|
*
|
|
1258
1323
|
* const getInteger = (n: number) => Number.isInteger(n) ? Option.some(n) : Option.none()
|
|
@@ -1260,6 +1325,7 @@ export const zipLeft: {
|
|
|
1260
1325
|
* assert.deepStrictEqual(Option.tap(Option.none(), getInteger), Option.none())
|
|
1261
1326
|
* assert.deepStrictEqual(Option.tap(Option.some(1), getInteger), Option.some(1))
|
|
1262
1327
|
* assert.deepStrictEqual(Option.tap(Option.some(1.14), getInteger), Option.none())
|
|
1328
|
+
* ```
|
|
1263
1329
|
*
|
|
1264
1330
|
* @category sequencing
|
|
1265
1331
|
* @since 2.0.0
|
|
@@ -1275,6 +1341,7 @@ export const tap: {
|
|
|
1275
1341
|
* @param self - The `Option` to apply the function to
|
|
1276
1342
|
*
|
|
1277
1343
|
* @example
|
|
1344
|
+
* ```ts
|
|
1278
1345
|
* import { Option } from "effect"
|
|
1279
1346
|
*
|
|
1280
1347
|
* const getInteger = (n: number) => Number.isInteger(n) ? Option.some(n) : Option.none()
|
|
@@ -1282,6 +1349,7 @@ export const tap: {
|
|
|
1282
1349
|
* assert.deepStrictEqual(Option.tap(Option.none(), getInteger), Option.none())
|
|
1283
1350
|
* assert.deepStrictEqual(Option.tap(Option.some(1), getInteger), Option.some(1))
|
|
1284
1351
|
* assert.deepStrictEqual(Option.tap(Option.some(1.14), getInteger), Option.none())
|
|
1352
|
+
* ```
|
|
1285
1353
|
*
|
|
1286
1354
|
* @category sequencing
|
|
1287
1355
|
* @since 2.0.0
|
|
@@ -1297,6 +1365,7 @@ export const tap: {
|
|
|
1297
1365
|
* @param self - The `Option` to apply the function to
|
|
1298
1366
|
*
|
|
1299
1367
|
* @example
|
|
1368
|
+
* ```ts
|
|
1300
1369
|
* import { Option } from "effect"
|
|
1301
1370
|
*
|
|
1302
1371
|
* const getInteger = (n: number) => Number.isInteger(n) ? Option.some(n) : Option.none()
|
|
@@ -1304,6 +1373,7 @@ export const tap: {
|
|
|
1304
1373
|
* assert.deepStrictEqual(Option.tap(Option.none(), getInteger), Option.none())
|
|
1305
1374
|
* assert.deepStrictEqual(Option.tap(Option.some(1), getInteger), Option.some(1))
|
|
1306
1375
|
* assert.deepStrictEqual(Option.tap(Option.some(1.14), getInteger), Option.none())
|
|
1376
|
+
* ```
|
|
1307
1377
|
*
|
|
1308
1378
|
* @category sequencing
|
|
1309
1379
|
* @since 2.0.0
|
|
@@ -1349,11 +1419,13 @@ export const productMany = <A>(
|
|
|
1349
1419
|
* @param fields - the struct of `Option`s to be sequenced.
|
|
1350
1420
|
*
|
|
1351
1421
|
* @example
|
|
1422
|
+
* ```ts
|
|
1352
1423
|
* import { Option } from "effect"
|
|
1353
1424
|
*
|
|
1354
1425
|
* assert.deepStrictEqual(Option.all([Option.some(1), Option.some(2)]), Option.some([1, 2]))
|
|
1355
1426
|
* assert.deepStrictEqual(Option.all({ a: Option.some(1), b: Option.some("hello") }), Option.some({ a: 1, b: "hello" }))
|
|
1356
1427
|
* assert.deepStrictEqual(Option.all({ a: Option.some(1), b: Option.none() }), Option.none())
|
|
1428
|
+
* ```
|
|
1357
1429
|
*
|
|
1358
1430
|
* @category combining
|
|
1359
1431
|
* @since 2.0.0
|
|
@@ -1398,6 +1470,7 @@ export const all: <const I extends Iterable<Option<any>> | Record<string, Option
|
|
|
1398
1470
|
* @param f - The function used to combine the values of the two `Option`s
|
|
1399
1471
|
*
|
|
1400
1472
|
* @example
|
|
1473
|
+
* ```ts
|
|
1401
1474
|
* import { Option } from "effect"
|
|
1402
1475
|
*
|
|
1403
1476
|
* type Complex = [real: number, imaginary: number]
|
|
@@ -1410,6 +1483,7 @@ export const all: <const I extends Iterable<Option<any>> | Record<string, Option
|
|
|
1410
1483
|
* assert.deepStrictEqual(Option.zipWith(Option.some(1), Option.some(2), complex), Option.some([1, 2]))
|
|
1411
1484
|
*
|
|
1412
1485
|
* assert.deepStrictEqual(Option.zipWith(Option.some(1), complex)(Option.some(2)), Option.some([2, 1]))
|
|
1486
|
+
* ```
|
|
1413
1487
|
*
|
|
1414
1488
|
* @category zipping
|
|
1415
1489
|
* @since 2.0.0
|
|
@@ -1423,6 +1497,7 @@ export const zipWith: {
|
|
|
1423
1497
|
* @param f - The function used to combine the values of the two `Option`s
|
|
1424
1498
|
*
|
|
1425
1499
|
* @example
|
|
1500
|
+
* ```ts
|
|
1426
1501
|
* import { Option } from "effect"
|
|
1427
1502
|
*
|
|
1428
1503
|
* type Complex = [real: number, imaginary: number]
|
|
@@ -1435,6 +1510,7 @@ export const zipWith: {
|
|
|
1435
1510
|
* assert.deepStrictEqual(Option.zipWith(Option.some(1), Option.some(2), complex), Option.some([1, 2]))
|
|
1436
1511
|
*
|
|
1437
1512
|
* assert.deepStrictEqual(Option.zipWith(Option.some(1), complex)(Option.some(2)), Option.some([2, 1]))
|
|
1513
|
+
* ```
|
|
1438
1514
|
*
|
|
1439
1515
|
* @category zipping
|
|
1440
1516
|
* @since 2.0.0
|
|
@@ -1448,6 +1524,7 @@ export const zipWith: {
|
|
|
1448
1524
|
* @param f - The function used to combine the values of the two `Option`s
|
|
1449
1525
|
*
|
|
1450
1526
|
* @example
|
|
1527
|
+
* ```ts
|
|
1451
1528
|
* import { Option } from "effect"
|
|
1452
1529
|
*
|
|
1453
1530
|
* type Complex = [real: number, imaginary: number]
|
|
@@ -1460,6 +1537,7 @@ export const zipWith: {
|
|
|
1460
1537
|
* assert.deepStrictEqual(Option.zipWith(Option.some(1), Option.some(2), complex), Option.some([1, 2]))
|
|
1461
1538
|
*
|
|
1462
1539
|
* assert.deepStrictEqual(Option.zipWith(Option.some(1), complex)(Option.some(2)), Option.some([2, 1]))
|
|
1540
|
+
* ```
|
|
1463
1541
|
*
|
|
1464
1542
|
* @category zipping
|
|
1465
1543
|
* @since 2.0.0
|
|
@@ -1496,10 +1574,12 @@ export const ap: {
|
|
|
1496
1574
|
* @param f - The reducing function that takes the current accumulator value and the unwrapped value of an `Option<A>`.
|
|
1497
1575
|
*
|
|
1498
1576
|
* @example
|
|
1577
|
+
* ```ts
|
|
1499
1578
|
* import { pipe, Option } from "effect"
|
|
1500
1579
|
*
|
|
1501
1580
|
* const iterable = [Option.some(1), Option.none(), Option.some(2), Option.none()]
|
|
1502
1581
|
* assert.deepStrictEqual(pipe(iterable, Option.reduceCompact(0, (b, a) => b + a)), 3)
|
|
1582
|
+
* ```
|
|
1503
1583
|
*
|
|
1504
1584
|
* @category folding
|
|
1505
1585
|
* @since 2.0.0
|
|
@@ -1513,10 +1593,12 @@ export const reduceCompact: {
|
|
|
1513
1593
|
* @param f - The reducing function that takes the current accumulator value and the unwrapped value of an `Option<A>`.
|
|
1514
1594
|
*
|
|
1515
1595
|
* @example
|
|
1596
|
+
* ```ts
|
|
1516
1597
|
* import { pipe, Option } from "effect"
|
|
1517
1598
|
*
|
|
1518
1599
|
* const iterable = [Option.some(1), Option.none(), Option.some(2), Option.none()]
|
|
1519
1600
|
* assert.deepStrictEqual(pipe(iterable, Option.reduceCompact(0, (b, a) => b + a)), 3)
|
|
1601
|
+
* ```
|
|
1520
1602
|
*
|
|
1521
1603
|
* @category folding
|
|
1522
1604
|
* @since 2.0.0
|
|
@@ -1530,10 +1612,12 @@ export const reduceCompact: {
|
|
|
1530
1612
|
* @param f - The reducing function that takes the current accumulator value and the unwrapped value of an `Option<A>`.
|
|
1531
1613
|
*
|
|
1532
1614
|
* @example
|
|
1615
|
+
* ```ts
|
|
1533
1616
|
* import { pipe, Option } from "effect"
|
|
1534
1617
|
*
|
|
1535
1618
|
* const iterable = [Option.some(1), Option.none(), Option.some(2), Option.none()]
|
|
1536
1619
|
* assert.deepStrictEqual(pipe(iterable, Option.reduceCompact(0, (b, a) => b + a)), 3)
|
|
1620
|
+
* ```
|
|
1537
1621
|
*
|
|
1538
1622
|
* @category folding
|
|
1539
1623
|
* @since 2.0.0
|
|
@@ -1560,10 +1644,12 @@ export const reduceCompact: {
|
|
|
1560
1644
|
* @param self - The `Option` to convert to an array.
|
|
1561
1645
|
*
|
|
1562
1646
|
* @example
|
|
1647
|
+
* ```ts
|
|
1563
1648
|
* import { Option } from "effect"
|
|
1564
1649
|
*
|
|
1565
1650
|
* assert.deepStrictEqual(Option.toArray(Option.some(1)), [1])
|
|
1566
1651
|
* assert.deepStrictEqual(Option.toArray(Option.none()), [])
|
|
1652
|
+
* ```
|
|
1567
1653
|
*
|
|
1568
1654
|
* @category conversions
|
|
1569
1655
|
* @since 2.0.0
|
|
@@ -1605,6 +1691,7 @@ export const partitionMap: {
|
|
|
1605
1691
|
* @param f - A function to apply to the value of the `Option`.
|
|
1606
1692
|
*
|
|
1607
1693
|
* @example
|
|
1694
|
+
* ```ts
|
|
1608
1695
|
* import { Option } from "effect"
|
|
1609
1696
|
*
|
|
1610
1697
|
* const evenNumber = (n: number) => n % 2 === 0 ? Option.some(n) : Option.none()
|
|
@@ -1612,6 +1699,7 @@ export const partitionMap: {
|
|
|
1612
1699
|
* assert.deepStrictEqual(Option.filterMap(Option.none(), evenNumber), Option.none())
|
|
1613
1700
|
* assert.deepStrictEqual(Option.filterMap(Option.some(3), evenNumber), Option.none())
|
|
1614
1701
|
* assert.deepStrictEqual(Option.filterMap(Option.some(2), evenNumber), Option.some(2))
|
|
1702
|
+
* ```
|
|
1615
1703
|
*
|
|
1616
1704
|
* @category filtering
|
|
1617
1705
|
* @since 2.0.0
|
|
@@ -1626,6 +1714,7 @@ export const filterMap: {
|
|
|
1626
1714
|
* @param f - A function to apply to the value of the `Option`.
|
|
1627
1715
|
*
|
|
1628
1716
|
* @example
|
|
1717
|
+
* ```ts
|
|
1629
1718
|
* import { Option } from "effect"
|
|
1630
1719
|
*
|
|
1631
1720
|
* const evenNumber = (n: number) => n % 2 === 0 ? Option.some(n) : Option.none()
|
|
@@ -1633,6 +1722,7 @@ export const filterMap: {
|
|
|
1633
1722
|
* assert.deepStrictEqual(Option.filterMap(Option.none(), evenNumber), Option.none())
|
|
1634
1723
|
* assert.deepStrictEqual(Option.filterMap(Option.some(3), evenNumber), Option.none())
|
|
1635
1724
|
* assert.deepStrictEqual(Option.filterMap(Option.some(2), evenNumber), Option.some(2))
|
|
1725
|
+
* ```
|
|
1636
1726
|
*
|
|
1637
1727
|
* @category filtering
|
|
1638
1728
|
* @since 2.0.0
|
|
@@ -1647,6 +1737,7 @@ export const filterMap: {
|
|
|
1647
1737
|
* @param f - A function to apply to the value of the `Option`.
|
|
1648
1738
|
*
|
|
1649
1739
|
* @example
|
|
1740
|
+
* ```ts
|
|
1650
1741
|
* import { Option } from "effect"
|
|
1651
1742
|
*
|
|
1652
1743
|
* const evenNumber = (n: number) => n % 2 === 0 ? Option.some(n) : Option.none()
|
|
@@ -1654,6 +1745,7 @@ export const filterMap: {
|
|
|
1654
1745
|
* assert.deepStrictEqual(Option.filterMap(Option.none(), evenNumber), Option.none())
|
|
1655
1746
|
* assert.deepStrictEqual(Option.filterMap(Option.some(3), evenNumber), Option.none())
|
|
1656
1747
|
* assert.deepStrictEqual(Option.filterMap(Option.some(2), evenNumber), Option.some(2))
|
|
1748
|
+
* ```
|
|
1657
1749
|
*
|
|
1658
1750
|
* @category filtering
|
|
1659
1751
|
* @since 2.0.0
|
|
@@ -1673,6 +1765,7 @@ export const filterMap: {
|
|
|
1673
1765
|
* @param fb - The `Option` to filter.
|
|
1674
1766
|
*
|
|
1675
1767
|
* @example
|
|
1768
|
+
* ```ts
|
|
1676
1769
|
* import { Option } from "effect"
|
|
1677
1770
|
*
|
|
1678
1771
|
* // predicate
|
|
@@ -1688,6 +1781,7 @@ export const filterMap: {
|
|
|
1688
1781
|
* assert.deepStrictEqual(Option.filter(Option.none(), isNumber), Option.none())
|
|
1689
1782
|
* assert.deepStrictEqual(Option.filter(Option.some('hello'), isNumber), Option.none())
|
|
1690
1783
|
* assert.deepStrictEqual(Option.filter(Option.some(2), isNumber), Option.some(2))
|
|
1784
|
+
* ```
|
|
1691
1785
|
*
|
|
1692
1786
|
* @category filtering
|
|
1693
1787
|
* @since 2.0.0
|
|
@@ -1702,6 +1796,7 @@ export const filter: {
|
|
|
1702
1796
|
* @param fb - The `Option` to filter.
|
|
1703
1797
|
*
|
|
1704
1798
|
* @example
|
|
1799
|
+
* ```ts
|
|
1705
1800
|
* import { Option } from "effect"
|
|
1706
1801
|
*
|
|
1707
1802
|
* // predicate
|
|
@@ -1717,6 +1812,7 @@ export const filter: {
|
|
|
1717
1812
|
* assert.deepStrictEqual(Option.filter(Option.none(), isNumber), Option.none())
|
|
1718
1813
|
* assert.deepStrictEqual(Option.filter(Option.some('hello'), isNumber), Option.none())
|
|
1719
1814
|
* assert.deepStrictEqual(Option.filter(Option.some(2), isNumber), Option.some(2))
|
|
1815
|
+
* ```
|
|
1720
1816
|
*
|
|
1721
1817
|
* @category filtering
|
|
1722
1818
|
* @since 2.0.0
|
|
@@ -1731,6 +1827,7 @@ export const filter: {
|
|
|
1731
1827
|
* @param fb - The `Option` to filter.
|
|
1732
1828
|
*
|
|
1733
1829
|
* @example
|
|
1830
|
+
* ```ts
|
|
1734
1831
|
* import { Option } from "effect"
|
|
1735
1832
|
*
|
|
1736
1833
|
* // predicate
|
|
@@ -1746,6 +1843,7 @@ export const filter: {
|
|
|
1746
1843
|
* assert.deepStrictEqual(Option.filter(Option.none(), isNumber), Option.none())
|
|
1747
1844
|
* assert.deepStrictEqual(Option.filter(Option.some('hello'), isNumber), Option.none())
|
|
1748
1845
|
* assert.deepStrictEqual(Option.filter(Option.some(2), isNumber), Option.some(2))
|
|
1846
|
+
* ```
|
|
1749
1847
|
*
|
|
1750
1848
|
* @category filtering
|
|
1751
1849
|
* @since 2.0.0
|
|
@@ -1760,6 +1858,7 @@ export const filter: {
|
|
|
1760
1858
|
* @param fb - The `Option` to filter.
|
|
1761
1859
|
*
|
|
1762
1860
|
* @example
|
|
1861
|
+
* ```ts
|
|
1763
1862
|
* import { Option } from "effect"
|
|
1764
1863
|
*
|
|
1765
1864
|
* // predicate
|
|
@@ -1775,6 +1874,7 @@ export const filter: {
|
|
|
1775
1874
|
* assert.deepStrictEqual(Option.filter(Option.none(), isNumber), Option.none())
|
|
1776
1875
|
* assert.deepStrictEqual(Option.filter(Option.some('hello'), isNumber), Option.none())
|
|
1777
1876
|
* assert.deepStrictEqual(Option.filter(Option.some(2), isNumber), Option.some(2))
|
|
1877
|
+
* ```
|
|
1778
1878
|
*
|
|
1779
1879
|
* @category filtering
|
|
1780
1880
|
* @since 2.0.0
|
|
@@ -1789,6 +1889,7 @@ export const filter: {
|
|
|
1789
1889
|
* @param fb - The `Option` to filter.
|
|
1790
1890
|
*
|
|
1791
1891
|
* @example
|
|
1892
|
+
* ```ts
|
|
1792
1893
|
* import { Option } from "effect"
|
|
1793
1894
|
*
|
|
1794
1895
|
* // predicate
|
|
@@ -1804,6 +1905,7 @@ export const filter: {
|
|
|
1804
1905
|
* assert.deepStrictEqual(Option.filter(Option.none(), isNumber), Option.none())
|
|
1805
1906
|
* assert.deepStrictEqual(Option.filter(Option.some('hello'), isNumber), Option.none())
|
|
1806
1907
|
* assert.deepStrictEqual(Option.filter(Option.some(2), isNumber), Option.some(2))
|
|
1908
|
+
* ```
|
|
1807
1909
|
*
|
|
1808
1910
|
* @category filtering
|
|
1809
1911
|
* @since 2.0.0
|
|
@@ -1817,6 +1919,7 @@ export const filter: {
|
|
|
1817
1919
|
|
|
1818
1920
|
/**
|
|
1819
1921
|
* @example
|
|
1922
|
+
* ```ts
|
|
1820
1923
|
* import { Option, Number } from "effect"
|
|
1821
1924
|
*
|
|
1822
1925
|
* const isEquivalent = Option.getEquivalence(Number.Equivalence)
|
|
@@ -1825,6 +1928,7 @@ export const filter: {
|
|
|
1825
1928
|
* assert.deepStrictEqual(isEquivalent(Option.some(1), Option.none()), false)
|
|
1826
1929
|
* assert.deepStrictEqual(isEquivalent(Option.some(1), Option.some(2)), false)
|
|
1827
1930
|
* assert.deepStrictEqual(isEquivalent(Option.some(1), Option.some(1)), true)
|
|
1931
|
+
* ```
|
|
1828
1932
|
*
|
|
1829
1933
|
* @category equivalence
|
|
1830
1934
|
* @since 2.0.0
|
|
@@ -1840,6 +1944,7 @@ export const getEquivalence = <A>(isEquivalent: Equivalence.Equivalence<A>): Equ
|
|
|
1840
1944
|
* `None` is considered to be less than any `Some` value.
|
|
1841
1945
|
*
|
|
1842
1946
|
* @example
|
|
1947
|
+
* ```ts
|
|
1843
1948
|
* import { pipe, Option, Number } from "effect"
|
|
1844
1949
|
*
|
|
1845
1950
|
* const O = Option.getOrder(Number.Order)
|
|
@@ -1848,6 +1953,7 @@ export const getEquivalence = <A>(isEquivalent: Equivalence.Equivalence<A>): Equ
|
|
|
1848
1953
|
* assert.deepStrictEqual(O(Option.some(1), Option.none()), 1)
|
|
1849
1954
|
* assert.deepStrictEqual(O(Option.some(1), Option.some(2)), -1)
|
|
1850
1955
|
* assert.deepStrictEqual(O(Option.some(1), Option.some(1)), 0)
|
|
1956
|
+
* ```
|
|
1851
1957
|
*
|
|
1852
1958
|
* @category sorting
|
|
1853
1959
|
* @since 2.0.0
|
|
@@ -1875,12 +1981,14 @@ export const lift2 = <A, B, C>(f: (a: A, b: B) => C): {
|
|
|
1875
1981
|
* @param predicate - A `Predicate` function that takes in a value of type `A` and returns a boolean.
|
|
1876
1982
|
*
|
|
1877
1983
|
* @example
|
|
1984
|
+
* ```ts
|
|
1878
1985
|
* import { Option } from "effect"
|
|
1879
1986
|
*
|
|
1880
1987
|
* const getOption = Option.liftPredicate((n: number) => n >= 0)
|
|
1881
1988
|
*
|
|
1882
1989
|
* assert.deepStrictEqual(getOption(-1), Option.none())
|
|
1883
1990
|
* assert.deepStrictEqual(getOption(1), Option.some(1))
|
|
1991
|
+
* ```
|
|
1884
1992
|
*
|
|
1885
1993
|
* @category lifting
|
|
1886
1994
|
* @since 2.0.0
|
|
@@ -1894,12 +2002,14 @@ export const liftPredicate: { // Note: I intentionally avoid using the NoInfer p
|
|
|
1894
2002
|
* @param predicate - A `Predicate` function that takes in a value of type `A` and returns a boolean.
|
|
1895
2003
|
*
|
|
1896
2004
|
* @example
|
|
2005
|
+
* ```ts
|
|
1897
2006
|
* import { Option } from "effect"
|
|
1898
2007
|
*
|
|
1899
2008
|
* const getOption = Option.liftPredicate((n: number) => n >= 0)
|
|
1900
2009
|
*
|
|
1901
2010
|
* assert.deepStrictEqual(getOption(-1), Option.none())
|
|
1902
2011
|
* assert.deepStrictEqual(getOption(1), Option.some(1))
|
|
2012
|
+
* ```
|
|
1903
2013
|
*
|
|
1904
2014
|
* @category lifting
|
|
1905
2015
|
* @since 2.0.0
|
|
@@ -1912,12 +2022,14 @@ export const liftPredicate: { // Note: I intentionally avoid using the NoInfer p
|
|
|
1912
2022
|
* @param predicate - A `Predicate` function that takes in a value of type `A` and returns a boolean.
|
|
1913
2023
|
*
|
|
1914
2024
|
* @example
|
|
2025
|
+
* ```ts
|
|
1915
2026
|
* import { Option } from "effect"
|
|
1916
2027
|
*
|
|
1917
2028
|
* const getOption = Option.liftPredicate((n: number) => n >= 0)
|
|
1918
2029
|
*
|
|
1919
2030
|
* assert.deepStrictEqual(getOption(-1), Option.none())
|
|
1920
2031
|
* assert.deepStrictEqual(getOption(1), Option.some(1))
|
|
2032
|
+
* ```
|
|
1921
2033
|
*
|
|
1922
2034
|
* @category lifting
|
|
1923
2035
|
* @since 2.0.0
|
|
@@ -1930,12 +2042,14 @@ export const liftPredicate: { // Note: I intentionally avoid using the NoInfer p
|
|
|
1930
2042
|
* @param predicate - A `Predicate` function that takes in a value of type `A` and returns a boolean.
|
|
1931
2043
|
*
|
|
1932
2044
|
* @example
|
|
2045
|
+
* ```ts
|
|
1933
2046
|
* import { Option } from "effect"
|
|
1934
2047
|
*
|
|
1935
2048
|
* const getOption = Option.liftPredicate((n: number) => n >= 0)
|
|
1936
2049
|
*
|
|
1937
2050
|
* assert.deepStrictEqual(getOption(-1), Option.none())
|
|
1938
2051
|
* assert.deepStrictEqual(getOption(1), Option.some(1))
|
|
2052
|
+
* ```
|
|
1939
2053
|
*
|
|
1940
2054
|
* @category lifting
|
|
1941
2055
|
* @since 2.0.0
|
|
@@ -1954,11 +2068,13 @@ export const liftPredicate: { // Note: I intentionally avoid using the NoInfer p
|
|
|
1954
2068
|
* @param a - The value to compare against the `Option`.
|
|
1955
2069
|
*
|
|
1956
2070
|
* @example
|
|
2071
|
+
* ```ts
|
|
1957
2072
|
* import { pipe, Option, Number } from "effect"
|
|
1958
2073
|
*
|
|
1959
2074
|
* assert.deepStrictEqual(pipe(Option.some(2), Option.containsWith(Number.Equivalence)(2)), true)
|
|
1960
2075
|
* assert.deepStrictEqual(pipe(Option.some(1), Option.containsWith(Number.Equivalence)(2)), false)
|
|
1961
2076
|
* assert.deepStrictEqual(pipe(Option.none(), Option.containsWith(Number.Equivalence)(2)), false)
|
|
2077
|
+
* ```
|
|
1962
2078
|
*
|
|
1963
2079
|
* @category elements
|
|
1964
2080
|
* @since 2.0.0
|
|
@@ -2000,6 +2116,7 @@ export const contains: {
|
|
|
2000
2116
|
* @param predicate - The condition to check.
|
|
2001
2117
|
*
|
|
2002
2118
|
* @example
|
|
2119
|
+
* ```ts
|
|
2003
2120
|
* import { pipe, Option } from "effect"
|
|
2004
2121
|
*
|
|
2005
2122
|
* const isEven = (n: number) => n % 2 === 0
|
|
@@ -2007,6 +2124,7 @@ export const contains: {
|
|
|
2007
2124
|
* assert.deepStrictEqual(pipe(Option.some(2), Option.exists(isEven)), true)
|
|
2008
2125
|
* assert.deepStrictEqual(pipe(Option.some(1), Option.exists(isEven)), false)
|
|
2009
2126
|
* assert.deepStrictEqual(pipe(Option.none(), Option.exists(isEven)), false)
|
|
2127
|
+
* ```
|
|
2010
2128
|
*
|
|
2011
2129
|
* @since 2.0.0
|
|
2012
2130
|
*/
|
|
@@ -2018,6 +2136,7 @@ export const exists: {
|
|
|
2018
2136
|
* @param predicate - The condition to check.
|
|
2019
2137
|
*
|
|
2020
2138
|
* @example
|
|
2139
|
+
* ```ts
|
|
2021
2140
|
* import { pipe, Option } from "effect"
|
|
2022
2141
|
*
|
|
2023
2142
|
* const isEven = (n: number) => n % 2 === 0
|
|
@@ -2025,6 +2144,7 @@ export const exists: {
|
|
|
2025
2144
|
* assert.deepStrictEqual(pipe(Option.some(2), Option.exists(isEven)), true)
|
|
2026
2145
|
* assert.deepStrictEqual(pipe(Option.some(1), Option.exists(isEven)), false)
|
|
2027
2146
|
* assert.deepStrictEqual(pipe(Option.none(), Option.exists(isEven)), false)
|
|
2147
|
+
* ```
|
|
2028
2148
|
*
|
|
2029
2149
|
* @since 2.0.0
|
|
2030
2150
|
*/
|
|
@@ -2036,6 +2156,7 @@ export const exists: {
|
|
|
2036
2156
|
* @param predicate - The condition to check.
|
|
2037
2157
|
*
|
|
2038
2158
|
* @example
|
|
2159
|
+
* ```ts
|
|
2039
2160
|
* import { pipe, Option } from "effect"
|
|
2040
2161
|
*
|
|
2041
2162
|
* const isEven = (n: number) => n % 2 === 0
|
|
@@ -2043,6 +2164,7 @@ export const exists: {
|
|
|
2043
2164
|
* assert.deepStrictEqual(pipe(Option.some(2), Option.exists(isEven)), true)
|
|
2044
2165
|
* assert.deepStrictEqual(pipe(Option.some(1), Option.exists(isEven)), false)
|
|
2045
2166
|
* assert.deepStrictEqual(pipe(Option.none(), Option.exists(isEven)), false)
|
|
2167
|
+
* ```
|
|
2046
2168
|
*
|
|
2047
2169
|
* @since 2.0.0
|
|
2048
2170
|
*/
|
|
@@ -2054,6 +2176,7 @@ export const exists: {
|
|
|
2054
2176
|
* @param predicate - The condition to check.
|
|
2055
2177
|
*
|
|
2056
2178
|
* @example
|
|
2179
|
+
* ```ts
|
|
2057
2180
|
* import { pipe, Option } from "effect"
|
|
2058
2181
|
*
|
|
2059
2182
|
* const isEven = (n: number) => n % 2 === 0
|
|
@@ -2061,6 +2184,7 @@ export const exists: {
|
|
|
2061
2184
|
* assert.deepStrictEqual(pipe(Option.some(2), Option.exists(isEven)), true)
|
|
2062
2185
|
* assert.deepStrictEqual(pipe(Option.some(1), Option.exists(isEven)), false)
|
|
2063
2186
|
* assert.deepStrictEqual(pipe(Option.none(), Option.exists(isEven)), false)
|
|
2187
|
+
* ```
|
|
2064
2188
|
*
|
|
2065
2189
|
* @since 2.0.0
|
|
2066
2190
|
*/
|
|
@@ -2072,6 +2196,7 @@ export const exists: {
|
|
|
2072
2196
|
* @param predicate - The condition to check.
|
|
2073
2197
|
*
|
|
2074
2198
|
* @example
|
|
2199
|
+
* ```ts
|
|
2075
2200
|
* import { pipe, Option } from "effect"
|
|
2076
2201
|
*
|
|
2077
2202
|
* const isEven = (n: number) => n % 2 === 0
|
|
@@ -2079,6 +2204,7 @@ export const exists: {
|
|
|
2079
2204
|
* assert.deepStrictEqual(pipe(Option.some(2), Option.exists(isEven)), true)
|
|
2080
2205
|
* assert.deepStrictEqual(pipe(Option.some(1), Option.exists(isEven)), false)
|
|
2081
2206
|
* assert.deepStrictEqual(pipe(Option.none(), Option.exists(isEven)), false)
|
|
2207
|
+
* ```
|
|
2082
2208
|
*
|
|
2083
2209
|
* @since 2.0.0
|
|
2084
2210
|
*/
|
|
@@ -2109,6 +2235,7 @@ export const exists: {
|
|
|
2109
2235
|
* @see {@link let_ let}
|
|
2110
2236
|
*
|
|
2111
2237
|
* @example
|
|
2238
|
+
* ```ts
|
|
2112
2239
|
* import { Option, pipe } from "effect"
|
|
2113
2240
|
*
|
|
2114
2241
|
* const result = pipe(
|
|
@@ -2119,6 +2246,7 @@ export const exists: {
|
|
|
2119
2246
|
* Option.filter(({ x, y }) => x * y > 5)
|
|
2120
2247
|
* )
|
|
2121
2248
|
* assert.deepStrictEqual(result, Option.some({ x: 2, y: 3, sum: 5 }))
|
|
2249
|
+
* ```
|
|
2122
2250
|
*
|
|
2123
2251
|
* @category do notation
|
|
2124
2252
|
* @since 2.0.0
|
|
@@ -2144,6 +2272,7 @@ export const bindTo: {
|
|
|
2144
2272
|
* @see {@link let_ let}
|
|
2145
2273
|
*
|
|
2146
2274
|
* @example
|
|
2275
|
+
* ```ts
|
|
2147
2276
|
* import { Option, pipe } from "effect"
|
|
2148
2277
|
*
|
|
2149
2278
|
* const result = pipe(
|
|
@@ -2154,6 +2283,7 @@ export const bindTo: {
|
|
|
2154
2283
|
* Option.filter(({ x, y }) => x * y > 5)
|
|
2155
2284
|
* )
|
|
2156
2285
|
* assert.deepStrictEqual(result, Option.some({ x: 2, y: 3, sum: 5 }))
|
|
2286
|
+
* ```
|
|
2157
2287
|
*
|
|
2158
2288
|
* @category do notation
|
|
2159
2289
|
* @since 2.0.0
|
|
@@ -2179,6 +2309,7 @@ export const bindTo: {
|
|
|
2179
2309
|
* @see {@link let_ let}
|
|
2180
2310
|
*
|
|
2181
2311
|
* @example
|
|
2312
|
+
* ```ts
|
|
2182
2313
|
* import { Option, pipe } from "effect"
|
|
2183
2314
|
*
|
|
2184
2315
|
* const result = pipe(
|
|
@@ -2189,6 +2320,7 @@ export const bindTo: {
|
|
|
2189
2320
|
* Option.filter(({ x, y }) => x * y > 5)
|
|
2190
2321
|
* )
|
|
2191
2322
|
* assert.deepStrictEqual(result, Option.some({ x: 2, y: 3, sum: 5 }))
|
|
2323
|
+
* ```
|
|
2192
2324
|
*
|
|
2193
2325
|
* @category do notation
|
|
2194
2326
|
* @since 2.0.0
|
|
@@ -2225,6 +2357,7 @@ export {
|
|
|
2225
2357
|
* @see {@link bindTo}
|
|
2226
2358
|
*
|
|
2227
2359
|
* @example
|
|
2360
|
+
* ```ts
|
|
2228
2361
|
* import { Option, pipe } from "effect"
|
|
2229
2362
|
*
|
|
2230
2363
|
* const result = pipe(
|
|
@@ -2236,6 +2369,7 @@ export {
|
|
|
2236
2369
|
* )
|
|
2237
2370
|
* assert.deepStrictEqual(result, Option.some({ x: 2, y: 3, sum: 5 }))
|
|
2238
2371
|
*
|
|
2372
|
+
* ```
|
|
2239
2373
|
* @category do notation
|
|
2240
2374
|
* @since 2.0.0
|
|
2241
2375
|
*/
|
|
@@ -2258,6 +2392,7 @@ export {
|
|
|
2258
2392
|
* @see {@link let_ let}
|
|
2259
2393
|
*
|
|
2260
2394
|
* @example
|
|
2395
|
+
* ```ts
|
|
2261
2396
|
* import { Option, pipe } from "effect"
|
|
2262
2397
|
*
|
|
2263
2398
|
* const result = pipe(
|
|
@@ -2268,6 +2403,7 @@ export {
|
|
|
2268
2403
|
* Option.filter(({ x, y }) => x * y > 5)
|
|
2269
2404
|
* )
|
|
2270
2405
|
* assert.deepStrictEqual(result, Option.some({ x: 2, y: 3, sum: 5 }))
|
|
2406
|
+
* ```
|
|
2271
2407
|
*
|
|
2272
2408
|
* @category do notation
|
|
2273
2409
|
* @since 2.0.0
|
|
@@ -2289,6 +2425,7 @@ export const bind: {
|
|
|
2289
2425
|
* @see {@link let_ let}
|
|
2290
2426
|
*
|
|
2291
2427
|
* @example
|
|
2428
|
+
* ```ts
|
|
2292
2429
|
* import { Option, pipe } from "effect"
|
|
2293
2430
|
*
|
|
2294
2431
|
* const result = pipe(
|
|
@@ -2299,6 +2436,7 @@ export const bind: {
|
|
|
2299
2436
|
* Option.filter(({ x, y }) => x * y > 5)
|
|
2300
2437
|
* )
|
|
2301
2438
|
* assert.deepStrictEqual(result, Option.some({ x: 2, y: 3, sum: 5 }))
|
|
2439
|
+
* ```
|
|
2302
2440
|
*
|
|
2303
2441
|
* @category do notation
|
|
2304
2442
|
* @since 2.0.0
|
|
@@ -2323,6 +2461,7 @@ export const bind: {
|
|
|
2323
2461
|
* @see {@link let_ let}
|
|
2324
2462
|
*
|
|
2325
2463
|
* @example
|
|
2464
|
+
* ```ts
|
|
2326
2465
|
* import { Option, pipe } from "effect"
|
|
2327
2466
|
*
|
|
2328
2467
|
* const result = pipe(
|
|
@@ -2333,6 +2472,7 @@ export const bind: {
|
|
|
2333
2472
|
* Option.filter(({ x, y }) => x * y > 5)
|
|
2334
2473
|
* )
|
|
2335
2474
|
* assert.deepStrictEqual(result, Option.some({ x: 2, y: 3, sum: 5 }))
|
|
2475
|
+
* ```
|
|
2336
2476
|
*
|
|
2337
2477
|
* @category do notation
|
|
2338
2478
|
* @since 2.0.0
|
|
@@ -2360,6 +2500,7 @@ export const bind: {
|
|
|
2360
2500
|
* @see {@link let_ let}
|
|
2361
2501
|
*
|
|
2362
2502
|
* @example
|
|
2503
|
+
* ```ts
|
|
2363
2504
|
* import { Option, pipe } from "effect"
|
|
2364
2505
|
*
|
|
2365
2506
|
* const result = pipe(
|
|
@@ -2370,6 +2511,7 @@ export const bind: {
|
|
|
2370
2511
|
* Option.filter(({ x, y }) => x * y > 5)
|
|
2371
2512
|
* )
|
|
2372
2513
|
* assert.deepStrictEqual(result, Option.some({ x: 2, y: 3, sum: 5 }))
|
|
2514
|
+
* ```
|
|
2373
2515
|
*
|
|
2374
2516
|
* @category do notation
|
|
2375
2517
|
* @since 2.0.0
|