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/Tuple.ts
CHANGED
|
@@ -23,9 +23,11 @@ export interface TupleTypeLambda extends TypeLambda {
|
|
|
23
23
|
* @param elements - The list of elements to create the tuple from.
|
|
24
24
|
*
|
|
25
25
|
* @example
|
|
26
|
+
* ```ts
|
|
26
27
|
* import { make } from "effect/Tuple"
|
|
27
28
|
*
|
|
28
29
|
* assert.deepStrictEqual(make(1, 'hello', true), [1, 'hello', true])
|
|
30
|
+
* ```
|
|
29
31
|
*
|
|
30
32
|
* @category constructors
|
|
31
33
|
* @since 2.0.0
|
|
@@ -38,9 +40,11 @@ export const make = <A extends ReadonlyArray<any>>(...elements: A): A => element
|
|
|
38
40
|
* @param self - A tuple of length `2`.
|
|
39
41
|
*
|
|
40
42
|
* @example
|
|
43
|
+
* ```ts
|
|
41
44
|
* import { getFirst } from "effect/Tuple"
|
|
42
45
|
*
|
|
43
46
|
* assert.deepStrictEqual(getFirst(["hello", 42]), "hello")
|
|
47
|
+
* ```
|
|
44
48
|
*
|
|
45
49
|
* @category getters
|
|
46
50
|
* @since 2.0.0
|
|
@@ -53,9 +57,11 @@ export const getFirst = <L, R>(self: readonly [L, R]): L => self[0]
|
|
|
53
57
|
* @param self - A tuple of length `2`.
|
|
54
58
|
*
|
|
55
59
|
* @example
|
|
60
|
+
* ```ts
|
|
56
61
|
* import { getSecond } from "effect/Tuple"
|
|
57
62
|
*
|
|
58
63
|
* assert.deepStrictEqual(getSecond(["hello", 42]), 42)
|
|
64
|
+
* ```
|
|
59
65
|
*
|
|
60
66
|
* @category getters
|
|
61
67
|
* @since 2.0.0
|
|
@@ -69,6 +75,7 @@ export const getSecond = <L, R>(self: readonly [L, R]): R => self[1]
|
|
|
69
75
|
* @param f - The function to transform elements of the tuple.
|
|
70
76
|
*
|
|
71
77
|
* @example
|
|
78
|
+
* ```ts
|
|
72
79
|
* import { pipe, Tuple } from "effect"
|
|
73
80
|
*
|
|
74
81
|
* const result = pipe(
|
|
@@ -76,6 +83,7 @@ export const getSecond = <L, R>(self: readonly [L, R]): R => self[1]
|
|
|
76
83
|
* Tuple.map((el) => el.toString().toUpperCase())
|
|
77
84
|
* )
|
|
78
85
|
* assert.deepStrictEqual(result, ['A', '1', 'FALSE'])
|
|
86
|
+
* ```
|
|
79
87
|
*
|
|
80
88
|
* @category mapping
|
|
81
89
|
* @since 3.9.0
|
|
@@ -88,6 +96,7 @@ export const map: {
|
|
|
88
96
|
* @param f - The function to transform elements of the tuple.
|
|
89
97
|
*
|
|
90
98
|
* @example
|
|
99
|
+
* ```ts
|
|
91
100
|
* import { pipe, Tuple } from "effect"
|
|
92
101
|
*
|
|
93
102
|
* const result = pipe(
|
|
@@ -95,6 +104,7 @@ export const map: {
|
|
|
95
104
|
* Tuple.map((el) => el.toString().toUpperCase())
|
|
96
105
|
* )
|
|
97
106
|
* assert.deepStrictEqual(result, ['A', '1', 'FALSE'])
|
|
107
|
+
* ```
|
|
98
108
|
*
|
|
99
109
|
* @category mapping
|
|
100
110
|
* @since 3.9.0
|
|
@@ -107,6 +117,7 @@ export const map: {
|
|
|
107
117
|
* @param f - The function to transform elements of the tuple.
|
|
108
118
|
*
|
|
109
119
|
* @example
|
|
120
|
+
* ```ts
|
|
110
121
|
* import { pipe, Tuple } from "effect"
|
|
111
122
|
*
|
|
112
123
|
* const result = pipe(
|
|
@@ -114,6 +125,7 @@ export const map: {
|
|
|
114
125
|
* Tuple.map((el) => el.toString().toUpperCase())
|
|
115
126
|
* )
|
|
116
127
|
* assert.deepStrictEqual(result, ['A', '1', 'FALSE'])
|
|
128
|
+
* ```
|
|
117
129
|
*
|
|
118
130
|
* @category mapping
|
|
119
131
|
* @since 3.9.0
|
|
@@ -135,12 +147,14 @@ export const map: {
|
|
|
135
147
|
* @param g - The function to transform the second element of the tuple.
|
|
136
148
|
*
|
|
137
149
|
* @example
|
|
150
|
+
* ```ts
|
|
138
151
|
* import { mapBoth } from "effect/Tuple"
|
|
139
152
|
*
|
|
140
153
|
* assert.deepStrictEqual(
|
|
141
154
|
* mapBoth(["hello", 42], { onFirst: s => s.toUpperCase(), onSecond: n => n.toString() }),
|
|
142
155
|
* ["HELLO", "42"]
|
|
143
156
|
* )
|
|
157
|
+
* ```
|
|
144
158
|
*
|
|
145
159
|
* @category mapping
|
|
146
160
|
* @since 2.0.0
|
|
@@ -154,12 +168,14 @@ export const mapBoth: {
|
|
|
154
168
|
* @param g - The function to transform the second element of the tuple.
|
|
155
169
|
*
|
|
156
170
|
* @example
|
|
171
|
+
* ```ts
|
|
157
172
|
* import { mapBoth } from "effect/Tuple"
|
|
158
173
|
*
|
|
159
174
|
* assert.deepStrictEqual(
|
|
160
175
|
* mapBoth(["hello", 42], { onFirst: s => s.toUpperCase(), onSecond: n => n.toString() }),
|
|
161
176
|
* ["HELLO", "42"]
|
|
162
177
|
* )
|
|
178
|
+
* ```
|
|
163
179
|
*
|
|
164
180
|
* @category mapping
|
|
165
181
|
* @since 2.0.0
|
|
@@ -178,12 +194,14 @@ export const mapBoth: {
|
|
|
178
194
|
* @param g - The function to transform the second element of the tuple.
|
|
179
195
|
*
|
|
180
196
|
* @example
|
|
197
|
+
* ```ts
|
|
181
198
|
* import { mapBoth } from "effect/Tuple"
|
|
182
199
|
*
|
|
183
200
|
* assert.deepStrictEqual(
|
|
184
201
|
* mapBoth(["hello", 42], { onFirst: s => s.toUpperCase(), onSecond: n => n.toString() }),
|
|
185
202
|
* ["HELLO", "42"]
|
|
186
203
|
* )
|
|
204
|
+
* ```
|
|
187
205
|
*
|
|
188
206
|
* @category mapping
|
|
189
207
|
* @since 2.0.0
|
|
@@ -213,12 +231,14 @@ export const mapBoth: {
|
|
|
213
231
|
* @param f - The function to transform the first element of the tuple.
|
|
214
232
|
*
|
|
215
233
|
* @example
|
|
234
|
+
* ```ts
|
|
216
235
|
* import { mapFirst } from "effect/Tuple"
|
|
217
236
|
*
|
|
218
237
|
* assert.deepStrictEqual(
|
|
219
238
|
* mapFirst(["hello", 42], s => s.toUpperCase()),
|
|
220
239
|
* ["HELLO", 42]
|
|
221
240
|
* )
|
|
241
|
+
* ```
|
|
222
242
|
*
|
|
223
243
|
* @category mapping
|
|
224
244
|
* @since 2.0.0
|
|
@@ -231,12 +251,14 @@ export const mapFirst: {
|
|
|
231
251
|
* @param f - The function to transform the first element of the tuple.
|
|
232
252
|
*
|
|
233
253
|
* @example
|
|
254
|
+
* ```ts
|
|
234
255
|
* import { mapFirst } from "effect/Tuple"
|
|
235
256
|
*
|
|
236
257
|
* assert.deepStrictEqual(
|
|
237
258
|
* mapFirst(["hello", 42], s => s.toUpperCase()),
|
|
238
259
|
* ["HELLO", 42]
|
|
239
260
|
* )
|
|
261
|
+
* ```
|
|
240
262
|
*
|
|
241
263
|
* @category mapping
|
|
242
264
|
* @since 2.0.0
|
|
@@ -249,12 +271,14 @@ export const mapFirst: {
|
|
|
249
271
|
* @param f - The function to transform the first element of the tuple.
|
|
250
272
|
*
|
|
251
273
|
* @example
|
|
274
|
+
* ```ts
|
|
252
275
|
* import { mapFirst } from "effect/Tuple"
|
|
253
276
|
*
|
|
254
277
|
* assert.deepStrictEqual(
|
|
255
278
|
* mapFirst(["hello", 42], s => s.toUpperCase()),
|
|
256
279
|
* ["HELLO", 42]
|
|
257
280
|
* )
|
|
281
|
+
* ```
|
|
258
282
|
*
|
|
259
283
|
* @category mapping
|
|
260
284
|
* @since 2.0.0
|
|
@@ -269,12 +293,14 @@ export const mapFirst: {
|
|
|
269
293
|
* @param f - The function to transform the second element of the tuple.
|
|
270
294
|
*
|
|
271
295
|
* @example
|
|
296
|
+
* ```ts
|
|
272
297
|
* import { mapSecond } from "effect/Tuple"
|
|
273
298
|
*
|
|
274
299
|
* assert.deepStrictEqual(
|
|
275
300
|
* mapSecond(["hello", 42], n => n.toString()),
|
|
276
301
|
* ["hello", "42"]
|
|
277
302
|
* )
|
|
303
|
+
* ```
|
|
278
304
|
*
|
|
279
305
|
* @category mapping
|
|
280
306
|
* @since 2.0.0
|
|
@@ -287,12 +313,14 @@ export const mapSecond: {
|
|
|
287
313
|
* @param f - The function to transform the second element of the tuple.
|
|
288
314
|
*
|
|
289
315
|
* @example
|
|
316
|
+
* ```ts
|
|
290
317
|
* import { mapSecond } from "effect/Tuple"
|
|
291
318
|
*
|
|
292
319
|
* assert.deepStrictEqual(
|
|
293
320
|
* mapSecond(["hello", 42], n => n.toString()),
|
|
294
321
|
* ["hello", "42"]
|
|
295
322
|
* )
|
|
323
|
+
* ```
|
|
296
324
|
*
|
|
297
325
|
* @category mapping
|
|
298
326
|
* @since 2.0.0
|
|
@@ -305,12 +333,14 @@ export const mapSecond: {
|
|
|
305
333
|
* @param f - The function to transform the second element of the tuple.
|
|
306
334
|
*
|
|
307
335
|
* @example
|
|
336
|
+
* ```ts
|
|
308
337
|
* import { mapSecond } from "effect/Tuple"
|
|
309
338
|
*
|
|
310
339
|
* assert.deepStrictEqual(
|
|
311
340
|
* mapSecond(["hello", 42], n => n.toString()),
|
|
312
341
|
* ["hello", "42"]
|
|
313
342
|
* )
|
|
343
|
+
* ```
|
|
314
344
|
*
|
|
315
345
|
* @category mapping
|
|
316
346
|
* @since 2.0.0
|
|
@@ -324,9 +354,11 @@ export const mapSecond: {
|
|
|
324
354
|
* @param self - A tuple of length `2`.
|
|
325
355
|
*
|
|
326
356
|
* @example
|
|
357
|
+
* ```ts
|
|
327
358
|
* import { swap } from "effect/Tuple"
|
|
328
359
|
*
|
|
329
360
|
* assert.deepStrictEqual(swap(["hello", 42]), [42, "hello"])
|
|
361
|
+
* ```
|
|
330
362
|
*
|
|
331
363
|
* @since 2.0.0
|
|
332
364
|
*/
|
|
@@ -388,9 +420,11 @@ export const appendElement: {
|
|
|
388
420
|
* @param index - The index of the element to retrieve.
|
|
389
421
|
*
|
|
390
422
|
* @example
|
|
423
|
+
* ```ts
|
|
391
424
|
* import { Tuple } from "effect"
|
|
392
425
|
*
|
|
393
426
|
* assert.deepStrictEqual(Tuple.at([1, 'hello', true], 1), 'hello')
|
|
427
|
+
* ```
|
|
394
428
|
*
|
|
395
429
|
* @category getters
|
|
396
430
|
* @since 3.4.0
|
|
@@ -403,9 +437,11 @@ export const at: {
|
|
|
403
437
|
* @param index - The index of the element to retrieve.
|
|
404
438
|
*
|
|
405
439
|
* @example
|
|
440
|
+
* ```ts
|
|
406
441
|
* import { Tuple } from "effect"
|
|
407
442
|
*
|
|
408
443
|
* assert.deepStrictEqual(Tuple.at([1, 'hello', true], 1), 'hello')
|
|
444
|
+
* ```
|
|
409
445
|
*
|
|
410
446
|
* @category getters
|
|
411
447
|
* @since 3.4.0
|
|
@@ -418,9 +454,11 @@ export const at: {
|
|
|
418
454
|
* @param index - The index of the element to retrieve.
|
|
419
455
|
*
|
|
420
456
|
* @example
|
|
457
|
+
* ```ts
|
|
421
458
|
* import { Tuple } from "effect"
|
|
422
459
|
*
|
|
423
460
|
* assert.deepStrictEqual(Tuple.at([1, 'hello', true], 1), 'hello')
|
|
461
|
+
* ```
|
|
424
462
|
*
|
|
425
463
|
* @category getters
|
|
426
464
|
* @since 3.4.0
|
|
@@ -438,6 +476,7 @@ export {
|
|
|
438
476
|
* @param n - The exact number of elements that the `Array` should have to be considered a `TupleOf`.
|
|
439
477
|
*
|
|
440
478
|
* @example
|
|
479
|
+
* ```ts
|
|
441
480
|
* import { isTupleOf } from "effect/Tuple"
|
|
442
481
|
*
|
|
443
482
|
* assert.deepStrictEqual(isTupleOf([1, 2, 3], 3), true);
|
|
@@ -450,6 +489,7 @@ export {
|
|
|
450
489
|
* // ^? [number, number, number]
|
|
451
490
|
* }
|
|
452
491
|
*
|
|
492
|
+
* ```
|
|
453
493
|
* @category guards
|
|
454
494
|
* @since 3.3.0
|
|
455
495
|
*/
|
|
@@ -463,6 +503,7 @@ export {
|
|
|
463
503
|
* @param n - The minimum number of elements that the `Array` should have to be considered a `TupleOfAtLeast`.
|
|
464
504
|
*
|
|
465
505
|
* @example
|
|
506
|
+
* ```ts
|
|
466
507
|
* import { isTupleOfAtLeast } from "effect/Tuple"
|
|
467
508
|
*
|
|
468
509
|
* assert.deepStrictEqual(isTupleOfAtLeast([1, 2, 3], 3), true);
|
|
@@ -475,6 +516,7 @@ export {
|
|
|
475
516
|
* // ^? [number, number, number, ...number[]]
|
|
476
517
|
* }
|
|
477
518
|
*
|
|
519
|
+
* ```
|
|
478
520
|
* @category guards
|
|
479
521
|
* @since 3.3.0
|
|
480
522
|
*/
|
package/src/Types.ts
CHANGED
|
@@ -15,6 +15,7 @@ type _TupleOf<T, N extends number, R extends Array<unknown>> = R["length"] exten
|
|
|
15
15
|
* @typeParam T - The type of elements in the tuple.
|
|
16
16
|
*
|
|
17
17
|
* @example
|
|
18
|
+
* ```ts
|
|
18
19
|
* import { TupleOf } from "effect/Types"
|
|
19
20
|
*
|
|
20
21
|
* // A tuple with exactly 3 numbers
|
|
@@ -23,6 +24,7 @@ type _TupleOf<T, N extends number, R extends Array<unknown>> = R["length"] exten
|
|
|
23
24
|
* const example2: TupleOf<3, number> = [1, 2]; // invalid
|
|
24
25
|
* // @ts-expect-error
|
|
25
26
|
* const example3: TupleOf<3, number> = [1, 2, 3, 4]; // invalid
|
|
27
|
+
* ```
|
|
26
28
|
*
|
|
27
29
|
* @category tuples
|
|
28
30
|
* @since 3.3.0
|
|
@@ -39,6 +41,7 @@ export type TupleOf<N extends number, T> = N extends N ? number extends N ? Arra
|
|
|
39
41
|
* @typeParam T - The type of elements in the tuple.
|
|
40
42
|
*
|
|
41
43
|
* @example
|
|
44
|
+
* ```ts
|
|
42
45
|
* import { TupleOfAtLeast } from "effect/Types"
|
|
43
46
|
*
|
|
44
47
|
* // A tuple with at least 3 numbers
|
|
@@ -46,6 +49,7 @@ export type TupleOf<N extends number, T> = N extends N ? number extends N ? Arra
|
|
|
46
49
|
* const example2: TupleOfAtLeast<3, number> = [1, 2, 3, 4, 5]; // valid
|
|
47
50
|
* // @ts-expect-error
|
|
48
51
|
* const example3: TupleOfAtLeast<3, number> = [1, 2]; // invalid
|
|
52
|
+
* ```
|
|
49
53
|
*
|
|
50
54
|
* @category tuples
|
|
51
55
|
* @since 3.3.0
|
|
@@ -55,9 +59,11 @@ export type TupleOfAtLeast<N extends number, T> = [...TupleOf<N, T>, ...Array<T>
|
|
|
55
59
|
/**
|
|
56
60
|
* Returns the tags in a type.
|
|
57
61
|
* @example
|
|
62
|
+
* ```ts
|
|
58
63
|
* import type { Types } from "effect"
|
|
59
64
|
*
|
|
60
65
|
* type Res = Types.Tags<string | { _tag: "a" } | { _tag: "b" } > // "a" | "b"
|
|
66
|
+
* ```
|
|
61
67
|
*
|
|
62
68
|
* @category types
|
|
63
69
|
* @since 2.0.0
|
|
@@ -67,9 +73,11 @@ export type Tags<E> = E extends { _tag: string } ? E["_tag"] : never
|
|
|
67
73
|
/**
|
|
68
74
|
* Excludes the tagged object from the type.
|
|
69
75
|
* @example
|
|
76
|
+
* ```ts
|
|
70
77
|
* import type { Types } from "effect"
|
|
71
78
|
*
|
|
72
79
|
* type Res = Types.ExcludeTag<string | { _tag: "a" } | { _tag: "b" }, "a"> // string | { _tag: "b" }
|
|
80
|
+
* ```
|
|
73
81
|
*
|
|
74
82
|
* @category types
|
|
75
83
|
* @since 2.0.0
|
|
@@ -80,9 +88,11 @@ export type ExcludeTag<E, K extends Tags<E>> = Exclude<E, { _tag: K }>
|
|
|
80
88
|
* Extracts the type of the given tag.
|
|
81
89
|
*
|
|
82
90
|
* @example
|
|
91
|
+
* ```ts
|
|
83
92
|
* import type { Types } from "effect"
|
|
84
93
|
*
|
|
85
94
|
* type Res = Types.ExtractTag<{ _tag: "a", a: number } | { _tag: "b", b: number }, "b"> // { _tag: "b", b: number }
|
|
95
|
+
* ```
|
|
86
96
|
*
|
|
87
97
|
* @category types
|
|
88
98
|
* @since 2.0.0
|
|
@@ -102,9 +112,11 @@ export type UnionToIntersection<T> = (T extends any ? (x: T) => any : never) ext
|
|
|
102
112
|
* Simplifies the type signature of a type.
|
|
103
113
|
*
|
|
104
114
|
* @example
|
|
115
|
+
* ```ts
|
|
105
116
|
* import type { Types } from "effect"
|
|
106
117
|
*
|
|
107
118
|
* type Res = Types.Simplify<{ a: number } & { b: number }> // { a: number; b: number; }
|
|
119
|
+
* ```
|
|
108
120
|
*
|
|
109
121
|
* @since 2.0.0
|
|
110
122
|
* @category types
|
|
@@ -117,10 +129,12 @@ export type Simplify<A> = {
|
|
|
117
129
|
* Determines if two types are equal.
|
|
118
130
|
*
|
|
119
131
|
* @example
|
|
132
|
+
* ```ts
|
|
120
133
|
* import type { Types } from "effect"
|
|
121
134
|
*
|
|
122
135
|
* type Res1 = Types.Equals<{ a: number }, { a: number }> // true
|
|
123
136
|
* type Res2 = Types.Equals<{ a: number }, { b: number }> // false
|
|
137
|
+
* ```
|
|
124
138
|
*
|
|
125
139
|
* @since 2.0.0
|
|
126
140
|
* @category models
|
|
@@ -134,10 +148,12 @@ export type Equals<X, Y> = (<T>() => T extends X ? 1 : 2) extends <
|
|
|
134
148
|
* Determines if a record contains any of the given keys.
|
|
135
149
|
*
|
|
136
150
|
* @example
|
|
151
|
+
* ```ts
|
|
137
152
|
* import type { Types } from "effect"
|
|
138
153
|
*
|
|
139
154
|
* type Res1 = Types.Has<{ a: number }, "a" | "b"> // true
|
|
140
155
|
* type Res2 = Types.Has<{ c: number }, "a" | "b"> // false
|
|
156
|
+
* ```
|
|
141
157
|
*
|
|
142
158
|
* @since 2.0.0
|
|
143
159
|
* @category models
|
|
@@ -150,8 +166,10 @@ export type Has<A, Key extends string> = (Key extends infer K ? K extends keyof
|
|
|
150
166
|
* Merges two object where the keys of the left object take precedence in the case of a conflict.
|
|
151
167
|
*
|
|
152
168
|
* @example
|
|
169
|
+
* ```ts
|
|
153
170
|
* import type { Types } from "effect"
|
|
154
171
|
* type MergeLeft = Types.MergeLeft<{ a: number, b: number; }, { a: string }> // { a: number; b: number; }
|
|
172
|
+
* ```
|
|
155
173
|
*
|
|
156
174
|
* @since 2.0.0
|
|
157
175
|
* @category models
|
|
@@ -162,8 +180,10 @@ export type MergeLeft<Source, Target> = MergeRight<Target, Source>
|
|
|
162
180
|
* Merges two object where the keys of the right object take precedence in the case of a conflict.
|
|
163
181
|
*
|
|
164
182
|
* @example
|
|
183
|
+
* ```ts
|
|
165
184
|
* import type { Types } from "effect"
|
|
166
185
|
* type MergeRight = Types.MergeRight<{ a: number, b: number; }, { a: string }> // { a: string; b: number; }
|
|
186
|
+
* ```
|
|
167
187
|
*
|
|
168
188
|
* @since 2.0.0
|
|
169
189
|
* @category models
|
|
@@ -193,6 +213,7 @@ export type Concurrency = number | "unbounded" | "inherit"
|
|
|
193
213
|
* Make all properties in `T` mutable. Supports arrays, tuples, and records as well.
|
|
194
214
|
*
|
|
195
215
|
* @example
|
|
216
|
+
* ```ts
|
|
196
217
|
* import type { Types } from "effect"
|
|
197
218
|
*
|
|
198
219
|
* type MutableStruct = Types.Mutable<{ readonly a: string; readonly b: number }> // { a: string; b: number; }
|
|
@@ -202,6 +223,7 @@ export type Concurrency = number | "unbounded" | "inherit"
|
|
|
202
223
|
* type MutableTuple = Types.Mutable<readonly [string, number]> // [string, number]
|
|
203
224
|
*
|
|
204
225
|
* type MutableRecord = Types.Mutable<{ readonly [_: string]: number }> // { [x: string]: number; }
|
|
226
|
+
* ```
|
|
205
227
|
*
|
|
206
228
|
* @since 2.0.0
|
|
207
229
|
* @category types
|
|
@@ -214,6 +236,7 @@ export type Mutable<T> = {
|
|
|
214
236
|
* Like `Types.Mutable`, but works recursively.
|
|
215
237
|
*
|
|
216
238
|
* @example
|
|
239
|
+
* ```ts
|
|
217
240
|
* import type { Types } from "effect"
|
|
218
241
|
*
|
|
219
242
|
* type DeepMutableStruct = Types.DeepMutable<{
|
|
@@ -221,6 +244,7 @@ export type Mutable<T> = {
|
|
|
221
244
|
* readonly b: readonly string[]
|
|
222
245
|
* }>
|
|
223
246
|
* // { a: string; b: string[] }
|
|
247
|
+
* ```
|
|
224
248
|
*
|
|
225
249
|
* @since 3.1.0
|
|
226
250
|
* @category types
|
package/src/Utils.ts
CHANGED
|
@@ -791,3 +791,11 @@ const tracingFunction = (name: string) => {
|
|
|
791
791
|
* @category tracing
|
|
792
792
|
*/
|
|
793
793
|
export const internalCall = tracingFunction("effect_internal_function")
|
|
794
|
+
|
|
795
|
+
const genConstructor = (function*() {}).constructor
|
|
796
|
+
|
|
797
|
+
/**
|
|
798
|
+
* @since 3.11.0
|
|
799
|
+
*/
|
|
800
|
+
export const isGeneratorFunction = (u: unknown): u is (...args: Array<any>) => Generator<any, any, any> =>
|
|
801
|
+
isObject(u) && u.constructor === genConstructor
|
|
@@ -7,7 +7,7 @@ import * as Effect from "../../Effect.js"
|
|
|
7
7
|
import * as ExecutionStrategy from "../../ExecutionStrategy.js"
|
|
8
8
|
import * as Exit from "../../Exit.js"
|
|
9
9
|
import * as Fiber from "../../Fiber.js"
|
|
10
|
-
import { identity, pipe } from "../../Function.js"
|
|
10
|
+
import { dual, identity, pipe } from "../../Function.js"
|
|
11
11
|
import * as Option from "../../Option.js"
|
|
12
12
|
import * as Scope from "../../Scope.js"
|
|
13
13
|
import type * as UpstreamPullStrategy from "../../UpstreamPullStrategy.js"
|
|
@@ -1092,14 +1092,18 @@ export const readUpstream = <A, E2, R, E>(
|
|
|
1092
1092
|
}
|
|
1093
1093
|
|
|
1094
1094
|
/** @internal */
|
|
1095
|
-
export const
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
)
|
|
1095
|
+
export const runIn = dual<
|
|
1096
|
+
(scope: Scope.Scope) => <Env, InErr, InDone, OutErr, OutDone>(
|
|
1097
|
+
self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>
|
|
1098
|
+
) => Effect.Effect<OutDone, OutErr, Env>,
|
|
1099
|
+
<Env, InErr, InDone, OutErr, OutDone>(
|
|
1100
|
+
self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>,
|
|
1101
|
+
scope: Scope.Scope
|
|
1102
|
+
) => Effect.Effect<OutDone, OutErr, Env>
|
|
1103
|
+
>(2, <Env, InErr, InDone, OutErr, OutDone>(
|
|
1104
|
+
self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>,
|
|
1105
|
+
scope: Scope.Scope
|
|
1106
|
+
) => {
|
|
1103
1107
|
const run = (
|
|
1104
1108
|
channelDeferred: Deferred.Deferred<OutDone, OutErr>,
|
|
1105
1109
|
scopeDeferred: Deferred.Deferred<void>,
|
|
@@ -1109,8 +1113,7 @@ export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
|
|
|
1109
1113
|
Effect.sync(() => new ChannelExecutor(self, void 0, identity)),
|
|
1110
1114
|
(exec) =>
|
|
1111
1115
|
Effect.suspend(() =>
|
|
1112
|
-
pipe(
|
|
1113
|
-
runScopedInterpret(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec),
|
|
1116
|
+
runScopedInterpret(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec).pipe(
|
|
1114
1117
|
Effect.intoDeferred(channelDeferred),
|
|
1115
1118
|
Effect.zipRight(Deferred.await(channelDeferred)),
|
|
1116
1119
|
Effect.zipLeft(Deferred.await(scopeDeferred))
|
|
@@ -1128,33 +1131,34 @@ export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
|
|
|
1128
1131
|
}
|
|
1129
1132
|
)
|
|
1130
1133
|
return Effect.uninterruptibleMask((restore) =>
|
|
1131
|
-
Effect.
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
Effect.flatMap((
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1134
|
+
Effect.all([
|
|
1135
|
+
Scope.fork(scope, ExecutionStrategy.sequential),
|
|
1136
|
+
Deferred.make<OutDone, OutErr>(),
|
|
1137
|
+
Deferred.make<void>()
|
|
1138
|
+
]).pipe(Effect.flatMap(([child, channelDeferred, scopeDeferred]) =>
|
|
1139
|
+
restore(run(channelDeferred, scopeDeferred, child)).pipe(
|
|
1140
|
+
Effect.forkIn(scope),
|
|
1141
|
+
Effect.flatMap((fiber) =>
|
|
1142
|
+
scope.addFinalizer(() =>
|
|
1143
|
+
Deferred.isDone(channelDeferred).pipe(
|
|
1144
|
+
Effect.flatMap((isDone) =>
|
|
1145
|
+
isDone
|
|
1146
|
+
? Deferred.succeed(scopeDeferred, void 0).pipe(
|
|
1147
|
+
Effect.zipRight(Fiber.await(fiber)),
|
|
1148
|
+
Effect.zipRight(Fiber.inheritAll(fiber))
|
|
1149
|
+
)
|
|
1150
|
+
: Deferred.succeed(scopeDeferred, void 0).pipe(
|
|
1151
|
+
Effect.zipRight(Fiber.interrupt(fiber)),
|
|
1152
|
+
Effect.zipRight(Fiber.inheritAll(fiber))
|
|
1147
1153
|
)
|
|
1148
|
-
),
|
|
1149
|
-
Effect.zipRight(restore(Deferred.await(channelDeferred))),
|
|
1150
|
-
Effect.zipLeft(Fiber.inheritAll(fiber))
|
|
1151
1154
|
)
|
|
1152
1155
|
)
|
|
1153
|
-
)
|
|
1156
|
+
).pipe(Effect.zipRight(restore(Deferred.await(channelDeferred))))
|
|
1154
1157
|
)
|
|
1155
|
-
)
|
|
1158
|
+
)
|
|
1159
|
+
))
|
|
1156
1160
|
)
|
|
1157
|
-
}
|
|
1161
|
+
})
|
|
1158
1162
|
|
|
1159
1163
|
/** @internal */
|
|
1160
1164
|
const runScopedInterpret = <Env, InErr, InDone, OutErr, OutDone>(
|