effect 4.0.0-beta.3 → 4.0.0-beta.30
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/Array.d.ts +126 -299
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +102 -62
- package/dist/Array.js.map +1 -1
- package/dist/Brand.d.ts +1 -1
- package/dist/Brand.d.ts.map +1 -1
- package/dist/Brand.js +1 -1
- package/dist/Brand.js.map +1 -1
- package/dist/Cache.d.ts +2 -2
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +6 -5
- package/dist/Cache.js.map +1 -1
- package/dist/Cause.d.ts +2 -2
- package/dist/Cause.d.ts.map +1 -1
- package/dist/Channel.d.ts +116 -30
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +82 -37
- package/dist/Channel.js.map +1 -1
- package/dist/Chunk.d.ts +54 -247
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +36 -67
- package/dist/Chunk.js.map +1 -1
- package/dist/Combiner.d.ts +280 -13
- package/dist/Combiner.d.ts.map +1 -1
- package/dist/Combiner.js +198 -7
- package/dist/Combiner.js.map +1 -1
- package/dist/Config.d.ts +165 -9
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +65 -10
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts +1 -1
- package/dist/Cron.d.ts +1 -1
- package/dist/Data.d.ts +535 -366
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js +132 -79
- package/dist/Data.js.map +1 -1
- package/dist/DateTime.d.ts +23 -161
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +6 -51
- package/dist/DateTime.js.map +1 -1
- package/dist/Duration.d.ts +11 -11
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +11 -11
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +1206 -924
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +390 -329
- package/dist/Effect.js.map +1 -1
- package/dist/Encoding.d.ts +194 -0
- package/dist/Encoding.d.ts.map +1 -0
- package/dist/Encoding.js +352 -0
- package/dist/Encoding.js.map +1 -0
- package/dist/Equal.d.ts +276 -109
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +124 -48
- package/dist/Equal.js.map +1 -1
- package/dist/ErrorReporter.d.ts +374 -0
- package/dist/ErrorReporter.d.ts.map +1 -0
- package/dist/ErrorReporter.js +244 -0
- package/dist/ErrorReporter.js.map +1 -0
- package/dist/Exit.d.ts +24 -12
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +8 -4
- package/dist/Exit.js.map +1 -1
- package/dist/Fiber.d.ts +3 -2
- package/dist/Fiber.d.ts.map +1 -1
- package/dist/Fiber.js.map +1 -1
- package/dist/FileSystem.d.ts +1 -1
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +5 -5
- package/dist/FileSystem.js.map +1 -1
- package/dist/Filter.d.ts +34 -38
- package/dist/Filter.d.ts.map +1 -1
- package/dist/Filter.js +15 -13
- package/dist/Filter.js.map +1 -1
- package/dist/Formatter.d.ts +131 -47
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +229 -51
- package/dist/Formatter.js.map +1 -1
- package/dist/Function.d.ts +1 -9
- package/dist/Function.d.ts.map +1 -1
- package/dist/Function.js +2 -10
- package/dist/Function.js.map +1 -1
- package/dist/Graph.d.ts +1 -1
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js +5 -8
- package/dist/Graph.js.map +1 -1
- package/dist/HashMap.d.ts +15 -14
- package/dist/HashMap.d.ts.map +1 -1
- package/dist/HashMap.js +4 -4
- package/dist/HashMap.js.map +1 -1
- package/dist/Iterable.d.ts +39 -39
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +94 -22
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonSchema.d.ts +299 -10
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +323 -4
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Latch.d.ts +109 -0
- package/dist/Latch.d.ts.map +1 -0
- package/dist/Latch.js +72 -0
- package/dist/Latch.js.map +1 -0
- package/dist/Layer.d.ts +121 -126
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +43 -44
- package/dist/Layer.js.map +1 -1
- package/dist/LayerMap.d.ts +8 -8
- package/dist/LayerMap.d.ts.map +1 -1
- package/dist/LayerMap.js +3 -3
- package/dist/LogLevel.d.ts +32 -0
- package/dist/LogLevel.d.ts.map +1 -1
- package/dist/LogLevel.js +28 -100
- package/dist/LogLevel.js.map +1 -1
- package/dist/Logger.d.ts +29 -95
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Logger.js +2 -3
- package/dist/Logger.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +2 -2
- package/dist/ManagedRuntime.js +2 -2
- package/dist/Metric.d.ts +4 -6
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +3 -5
- package/dist/Metric.js.map +1 -1
- package/dist/Newtype.d.ts +291 -0
- package/dist/Newtype.d.ts.map +1 -0
- package/dist/Newtype.js +161 -0
- package/dist/Newtype.js.map +1 -0
- package/dist/Optic.d.ts +947 -18
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js +454 -5
- package/dist/Optic.js.map +1 -1
- package/dist/Option.d.ts +23 -16
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +15 -9
- package/dist/Option.js.map +1 -1
- package/dist/Pipeable.d.ts +17 -0
- package/dist/Pipeable.d.ts.map +1 -1
- package/dist/Pipeable.js +19 -1
- package/dist/Pipeable.js.map +1 -1
- package/dist/PlatformError.d.ts +10 -9
- package/dist/PlatformError.d.ts.map +1 -1
- package/dist/PlatformError.js +2 -2
- package/dist/PlatformError.js.map +1 -1
- package/dist/Pool.d.ts +6 -4
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +7 -5
- package/dist/Pool.js.map +1 -1
- package/dist/PubSub.d.ts +3 -2
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +3 -2
- package/dist/PubSub.js.map +1 -1
- package/dist/Pull.d.ts.map +1 -1
- package/dist/Pull.js +1 -1
- package/dist/Pull.js.map +1 -1
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +0 -1
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts +35 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +46 -12
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +2 -2
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +1 -1
- package/dist/RcMap.js.map +1 -1
- package/dist/RcRef.d.ts +1 -1
- package/dist/RcRef.d.ts.map +1 -1
- package/dist/Record.d.ts +23 -120
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +21 -41
- package/dist/Record.js.map +1 -1
- package/dist/Reducer.d.ts +166 -7
- package/dist/Reducer.d.ts.map +1 -1
- package/dist/Reducer.js +135 -1
- package/dist/Reducer.js.map +1 -1
- package/dist/References.d.ts +9 -4
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +6 -1
- package/dist/References.js.map +1 -1
- package/dist/Request.d.ts +1 -1
- package/dist/Request.d.ts.map +1 -1
- package/dist/Request.js +2 -1
- package/dist/Request.js.map +1 -1
- package/dist/RequestResolver.d.ts +25 -45
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +10 -30
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Result.d.ts +1 -1
- package/dist/Result.d.ts.map +1 -1
- package/dist/Result.js +1 -2
- package/dist/Result.js.map +1 -1
- package/dist/Runtime.d.ts +66 -0
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +79 -6
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts +191 -102
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +152 -66
- package/dist/Schedule.js.map +1 -1
- package/dist/Scheduler.d.ts +9 -0
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +11 -0
- package/dist/Scheduler.js.map +1 -1
- package/dist/Schema.d.ts +309 -88
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +499 -109
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +129 -23
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +5 -5
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +12 -14
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaParser.d.ts +5 -0
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +10 -0
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +44 -43
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +49 -24
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +107 -3
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +159 -4
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/ScopedCache.d.ts +2 -2
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +1 -1
- package/dist/ScopedCache.js.map +1 -1
- package/dist/Semaphore.d.ts +211 -0
- package/dist/Semaphore.d.ts.map +1 -0
- package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
- package/dist/Semaphore.js.map +1 -0
- package/dist/ServiceMap.d.ts +41 -31
- package/dist/ServiceMap.d.ts.map +1 -1
- package/dist/ServiceMap.js +3 -3
- package/dist/ServiceMap.js.map +1 -1
- package/dist/Sink.d.ts +13 -13
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +53 -6
- package/dist/Sink.js.map +1 -1
- package/dist/Stdio.d.ts +16 -4
- package/dist/Stdio.d.ts.map +1 -1
- package/dist/Stdio.js +18 -0
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +250 -428
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +137 -82
- package/dist/Stream.js.map +1 -1
- package/dist/Struct.d.ts +16 -0
- package/dist/Struct.d.ts.map +1 -1
- package/dist/Struct.js +22 -0
- package/dist/Struct.js.map +1 -1
- package/dist/SubscriptionRef.d.ts +2 -1
- package/dist/SubscriptionRef.d.ts.map +1 -1
- package/dist/SubscriptionRef.js +2 -1
- package/dist/SubscriptionRef.js.map +1 -1
- package/dist/SynchronizedRef.d.ts +2 -1
- package/dist/SynchronizedRef.d.ts.map +1 -1
- package/dist/SynchronizedRef.js +2 -1
- package/dist/SynchronizedRef.js.map +1 -1
- package/dist/Trie.d.ts +18 -17
- package/dist/Trie.d.ts.map +1 -1
- package/dist/Trie.js +5 -5
- package/dist/Trie.js.map +1 -1
- package/dist/TxChunk.d.ts +37 -37
- package/dist/TxChunk.d.ts.map +1 -1
- package/dist/TxChunk.js +3 -3
- package/dist/TxChunk.js.map +1 -1
- package/dist/TxDeferred.d.ts +328 -0
- package/dist/TxDeferred.d.ts.map +1 -0
- package/dist/TxDeferred.js +196 -0
- package/dist/TxDeferred.js.map +1 -0
- package/dist/TxHashMap.d.ts +84 -83
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js +24 -24
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts +35 -35
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js +14 -14
- package/dist/TxHashSet.js.map +1 -1
- package/dist/TxPriorityQueue.d.ts +609 -0
- package/dist/TxPriorityQueue.d.ts.map +1 -0
- package/dist/TxPriorityQueue.js +415 -0
- package/dist/TxPriorityQueue.js.map +1 -0
- package/dist/TxPubSub.d.ts +585 -0
- package/dist/TxPubSub.d.ts.map +1 -0
- package/dist/TxPubSub.js +521 -0
- package/dist/TxPubSub.js.map +1 -0
- package/dist/TxQueue.d.ts +32 -32
- package/dist/TxQueue.d.ts.map +1 -1
- package/dist/TxQueue.js +26 -26
- package/dist/TxQueue.js.map +1 -1
- package/dist/TxReentrantLock.d.ts +523 -0
- package/dist/TxReentrantLock.d.ts.map +1 -0
- package/dist/TxReentrantLock.js +504 -0
- package/dist/TxReentrantLock.js.map +1 -0
- package/dist/TxRef.d.ts +34 -34
- package/dist/TxRef.d.ts.map +1 -1
- package/dist/TxRef.js +21 -14
- package/dist/TxRef.js.map +1 -1
- package/dist/TxSemaphore.d.ts +8 -8
- package/dist/TxSemaphore.d.ts.map +1 -1
- package/dist/TxSemaphore.js +7 -7
- package/dist/TxSemaphore.js.map +1 -1
- package/dist/TxSubscriptionRef.d.ts +508 -0
- package/dist/TxSubscriptionRef.d.ts.map +1 -0
- package/dist/TxSubscriptionRef.js +293 -0
- package/dist/TxSubscriptionRef.js.map +1 -0
- package/dist/Types.d.ts +80 -23
- package/dist/Types.d.ts.map +1 -1
- package/dist/Utils.d.ts +137 -65
- package/dist/Utils.d.ts.map +1 -1
- package/dist/Utils.js +38 -66
- package/dist/Utils.js.map +1 -1
- package/dist/index.d.ts +718 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +718 -23
- package/dist/index.js.map +1 -1
- package/dist/internal/core.js +11 -3
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +3 -11
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +264 -126
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/hashMap.js +5 -4
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/random.d.ts +2 -0
- package/dist/internal/random.d.ts.map +1 -0
- package/dist/internal/random.js +13 -0
- package/dist/internal/random.js.map +1 -0
- package/dist/internal/rcRef.js +3 -2
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/internal/request.js +2 -2
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schema/annotations.js +2 -0
- package/dist/internal/schema/annotations.js.map +1 -1
- package/dist/internal/schema/representation.js +47 -106
- package/dist/internal/schema/representation.js.map +1 -1
- package/dist/internal/schema/schema.js +1 -0
- package/dist/internal/schema/schema.js.map +1 -1
- package/dist/internal/schema/to-codec.js +7 -10
- package/dist/internal/schema/to-codec.js.map +1 -1
- package/dist/internal/trie.js +5 -4
- package/dist/internal/trie.js.map +1 -1
- package/dist/testing/TestClock.d.ts +8 -7
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +6 -4
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +266 -32
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js +296 -23
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/testing/index.d.ts +64 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +64 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +134 -51
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.js +19 -16
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/Chat.d.ts +5 -5
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +38 -44
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/LanguageModel.d.ts +16 -30
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +97 -37
- package/dist/unstable/ai/LanguageModel.js.map +1 -1
- package/dist/unstable/ai/McpSchema.d.ts +183 -88
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +57 -12
- package/dist/unstable/ai/McpSchema.js.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts +66 -13
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js +193 -51
- package/dist/unstable/ai/McpServer.js.map +1 -1
- package/dist/unstable/ai/Model.d.ts +25 -7
- package/dist/unstable/ai/Model.d.ts.map +1 -1
- package/dist/unstable/ai/Model.js +22 -6
- package/dist/unstable/ai/Model.js.map +1 -1
- package/dist/unstable/ai/Prompt.d.ts +20 -20
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Response.d.ts +26 -26
- package/dist/unstable/ai/Response.d.ts.map +1 -1
- package/dist/unstable/ai/Response.js +1 -1
- package/dist/unstable/ai/Response.js.map +1 -1
- package/dist/unstable/ai/Tool.d.ts +20 -4
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js +14 -9
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/ai/Toolkit.d.ts +1 -1
- package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
- package/dist/unstable/ai/Toolkit.js +4 -11
- package/dist/unstable/ai/Toolkit.js.map +1 -1
- package/dist/unstable/ai/index.d.ts +1 -1
- package/dist/unstable/ai/index.js +1 -1
- package/dist/unstable/ai/internal/codec-transformer.js +0 -5
- package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
- package/dist/unstable/cli/CliError.d.ts +27 -60
- package/dist/unstable/cli/CliError.d.ts.map +1 -1
- package/dist/unstable/cli/CliError.js +25 -57
- package/dist/unstable/cli/CliError.js.map +1 -1
- package/dist/unstable/cli/CliOutput.js +59 -6
- package/dist/unstable/cli/CliOutput.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +368 -56
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +325 -64
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cli/GlobalFlag.d.ts +125 -0
- package/dist/unstable/cli/GlobalFlag.d.ts.map +1 -0
- package/dist/unstable/cli/GlobalFlag.js +118 -0
- package/dist/unstable/cli/GlobalFlag.js.map +1 -0
- package/dist/unstable/cli/HelpDoc.d.ts +70 -2
- package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
- package/dist/unstable/cli/Primitive.d.ts +1 -1
- package/dist/unstable/cli/Primitive.js +1 -1
- package/dist/unstable/cli/Prompt.js +35 -8
- package/dist/unstable/cli/Prompt.js.map +1 -1
- package/dist/unstable/cli/index.d.ts +4 -0
- package/dist/unstable/cli/index.d.ts.map +1 -1
- package/dist/unstable/cli/index.js +4 -0
- package/dist/unstable/cli/index.js.map +1 -1
- package/dist/unstable/cli/internal/command.d.ts +40 -14
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.js +72 -46
- package/dist/unstable/cli/internal/command.js.map +1 -1
- package/dist/unstable/cli/internal/completions/CommandDescriptor.js +7 -2
- package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
- package/dist/unstable/cli/internal/config.js +42 -0
- package/dist/unstable/cli/internal/config.js.map +1 -1
- package/dist/unstable/cli/internal/help.d.ts +33 -0
- package/dist/unstable/cli/internal/help.d.ts.map +1 -0
- package/dist/unstable/cli/internal/help.js +125 -0
- package/dist/unstable/cli/internal/help.js.map +1 -0
- package/dist/unstable/cli/internal/parser.js +55 -42
- package/dist/unstable/cli/internal/parser.js.map +1 -1
- package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
- package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterCron.js +1 -1
- package/dist/unstable/cluster/ClusterCron.js.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js +4 -3
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +7 -6
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js.map +1 -1
- package/dist/unstable/cluster/EntityResource.d.ts +2 -2
- package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
- package/dist/unstable/cluster/Envelope.d.ts +1 -1
- package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js +4 -4
- package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
- package/dist/unstable/cluster/Message.d.ts +10 -10
- package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/MessageStorage.js +2 -1
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts +6 -6
- package/dist/unstable/cluster/Runner.d.ts +1 -1
- package/dist/unstable/cluster/Runners.d.ts.map +1 -1
- package/dist/unstable/cluster/Runners.js +4 -3
- package/dist/unstable/cluster/Runners.js.map +1 -1
- package/dist/unstable/cluster/Sharding.d.ts +2 -2
- package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
- package/dist/unstable/cluster/Sharding.js +9 -7
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
- package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.js +20 -20
- package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +5 -4
- package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
- package/dist/unstable/cluster/internal/entityReaper.js +2 -1
- package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceRef.js +2 -1
- package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
- package/dist/unstable/encoding/Msgpack.d.ts +1 -1
- package/dist/unstable/encoding/Ndjson.d.ts +1 -1
- package/dist/unstable/encoding/Sse.d.ts +4 -4
- package/dist/unstable/encoding/Sse.d.ts.map +1 -1
- package/dist/unstable/encoding/Sse.js +1 -1
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
- package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLog.js +2 -1
- package/dist/unstable/eventlog/EventLog.js.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
- package/dist/unstable/http/Cookies.d.ts +47 -3
- package/dist/unstable/http/Cookies.d.ts.map +1 -1
- package/dist/unstable/http/Cookies.js +24 -2
- package/dist/unstable/http/Cookies.js.map +1 -1
- package/dist/unstable/http/Headers.d.ts +16 -0
- package/dist/unstable/http/Headers.d.ts.map +1 -1
- package/dist/unstable/http/Headers.js +38 -10
- package/dist/unstable/http/Headers.js.map +1 -1
- package/dist/unstable/http/HttpBody.d.ts +3 -3
- package/dist/unstable/http/HttpBody.d.ts.map +1 -1
- package/dist/unstable/http/HttpBody.js +6 -6
- package/dist/unstable/http/HttpBody.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +117 -15
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +189 -12
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientError.d.ts +7 -7
- package/dist/unstable/http/HttpClientRequest.d.ts +16 -11
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +31 -20
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpClientResponse.d.ts +2 -1
- package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientResponse.js +4 -0
- package/dist/unstable/http/HttpClientResponse.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts +7 -5
- package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
- package/dist/unstable/http/HttpEffect.js +46 -54
- package/dist/unstable/http/HttpEffect.js.map +1 -1
- package/dist/unstable/http/HttpMethod.d.ts +4 -4
- package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
- package/dist/unstable/http/HttpMethod.js +3 -3
- package/dist/unstable/http/HttpMethod.js.map +1 -1
- package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
- package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/unstable/http/HttpMiddleware.js +8 -17
- package/dist/unstable/http/HttpMiddleware.js.map +1 -1
- package/dist/unstable/http/HttpServerError.d.ts +20 -33
- package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerError.js +37 -44
- package/dist/unstable/http/HttpServerError.js.map +1 -1
- package/dist/unstable/http/HttpServerRequest.d.ts +12 -1
- package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerRequest.js +291 -1
- package/dist/unstable/http/HttpServerRequest.js.map +1 -1
- package/dist/unstable/http/HttpServerRespondable.d.ts +2 -2
- package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerRespondable.js +5 -5
- package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
- package/dist/unstable/http/HttpServerResponse.d.ts +50 -3
- package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerResponse.js +234 -1
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- package/dist/unstable/http/HttpStaticServer.d.ts +69 -0
- package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -0
- package/dist/unstable/http/HttpStaticServer.js +353 -0
- package/dist/unstable/http/HttpStaticServer.js.map +1 -0
- package/dist/unstable/http/Multipart.d.ts +3 -3
- package/dist/unstable/http/UrlParams.d.ts +14 -6
- package/dist/unstable/http/UrlParams.d.ts.map +1 -1
- package/dist/unstable/http/UrlParams.js +1 -1
- package/dist/unstable/http/UrlParams.js.map +1 -1
- package/dist/unstable/http/index.d.ts +4 -0
- package/dist/unstable/http/index.d.ts.map +1 -1
- package/dist/unstable/http/index.js +4 -0
- package/dist/unstable/http/index.js.map +1 -1
- package/dist/unstable/http/internal/preResponseHandler.d.ts +2 -0
- package/dist/unstable/http/internal/preResponseHandler.d.ts.map +1 -0
- package/dist/unstable/http/internal/preResponseHandler.js +10 -0
- package/dist/unstable/http/internal/preResponseHandler.js.map +1 -0
- package/dist/unstable/httpapi/HttpApi.d.ts +4 -4
- package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApi.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts +11 -5
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.js +28 -18
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.d.ts +66 -6
- package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js +40 -3
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +41 -54
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.js +17 -26
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +16 -14
- package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.js +44 -29
- package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.d.ts +4 -3
- package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +4 -4
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
- package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSecurity.d.ts +2 -2
- package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
- package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/OpenApi.js +32 -21
- package/dist/unstable/httpapi/OpenApi.js.map +1 -1
- package/dist/unstable/observability/Otlp.d.ts +12 -12
- package/dist/unstable/observability/Otlp.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +1 -1
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
- package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpLogger.js +7 -4
- package/dist/unstable/observability/OtlpLogger.js.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
- package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
- package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
- package/dist/unstable/persistence/KeyValueStore.js +6 -6
- package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
- package/dist/unstable/persistence/Persistable.d.ts +2 -2
- package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
- package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedCache.js +2 -1
- package/dist/unstable/persistence/PersistedCache.js.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
- package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.js +12 -11
- package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
- package/dist/unstable/persistence/Persistence.d.ts +1 -1
- package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistence.js +2 -2
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +1 -1
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/process/ChildProcess.d.ts +5 -128
- package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcess.js +1 -65
- package/dist/unstable/process/ChildProcess.js.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.d.ts +45 -7
- package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js +21 -1
- package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +73 -12
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +107 -20
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +10 -12
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +42 -12
- package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.d.ts +6 -0
- package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.js +50 -9
- package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts +9 -9
- package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.js +47 -21
- package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
- package/dist/unstable/reactivity/Hydration.d.ts +39 -0
- package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
- package/dist/unstable/reactivity/Hydration.js +76 -0
- package/dist/unstable/reactivity/Hydration.js.map +1 -0
- package/dist/unstable/reactivity/index.d.ts +4 -0
- package/dist/unstable/reactivity/index.d.ts.map +1 -1
- package/dist/unstable/reactivity/index.js +4 -0
- package/dist/unstable/reactivity/index.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts +5 -5
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/Rpc.js.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts +5 -26
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +6 -13
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcGroup.d.ts +2 -2
- package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcGroup.js.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.d.ts +8 -8
- package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
- package/dist/unstable/rpc/RpcSchema.d.ts +13 -0
- package/dist/unstable/rpc/RpcSchema.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcSchema.js +14 -0
- package/dist/unstable/rpc/RpcSchema.js.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.js +34 -9
- package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts +5 -9
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +17 -17
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/rpc/Utils.d.ts.map +1 -1
- package/dist/unstable/rpc/Utils.js +3 -2
- package/dist/unstable/rpc/Utils.js.map +1 -1
- package/dist/unstable/schema/Model.d.ts +22 -1
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/Model.js +15 -0
- package/dist/unstable/schema/Model.js.map +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts +5 -5
- package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.js +6 -6
- package/dist/unstable/schema/VariantSchema.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts +4 -4
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +6 -5
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/dist/unstable/socket/SocketServer.d.ts +3 -3
- package/dist/unstable/sql/Migrator.d.ts +1 -1
- package/dist/unstable/sql/SqlClient.d.ts +1 -1
- package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
- package/dist/unstable/sql/SqlError.d.ts +14 -14
- package/dist/unstable/sql/SqlError.d.ts.map +1 -1
- package/dist/unstable/sql/SqlError.js +9 -3
- package/dist/unstable/sql/SqlError.js.map +1 -1
- package/dist/unstable/sql/SqlModel.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
- package/dist/unstable/sql/SqlModel.js +3 -3
- package/dist/unstable/sql/SqlModel.js.map +1 -1
- package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
- package/dist/unstable/sql/SqlResolver.js +17 -8
- package/dist/unstable/sql/SqlResolver.js.map +1 -1
- package/dist/unstable/sql/SqlSchema.d.ts +17 -6
- package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
- package/dist/unstable/sql/SqlSchema.js +17 -7
- package/dist/unstable/sql/SqlSchema.js.map +1 -1
- package/dist/unstable/sql/Statement.js +0 -1
- package/dist/unstable/sql/Statement.js.map +1 -1
- package/dist/unstable/workers/Worker.d.ts.map +1 -1
- package/dist/unstable/workers/Worker.js +2 -1
- package/dist/unstable/workers/Worker.js.map +1 -1
- package/dist/unstable/workflow/DurableClock.d.ts +3 -3
- package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableClock.js +3 -3
- package/dist/unstable/workflow/DurableClock.js.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.js +2 -2
- package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
- package/dist/unstable/workflow/Workflow.d.ts +3 -3
- package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
- package/dist/unstable/workflow/Workflow.js +1 -1
- package/dist/unstable/workflow/Workflow.js.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts +12 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js +137 -1
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +2 -2
- package/src/Array.ts +192 -342
- package/src/Brand.ts +1 -1
- package/src/Cache.ts +9 -8
- package/src/Cause.ts +2 -2
- package/src/Channel.ts +554 -138
- package/src/Chunk.ts +81 -268
- package/src/Combiner.ts +280 -13
- package/src/Config.ts +186 -24
- package/src/Data.ts +539 -376
- package/src/DateTime.ts +24 -164
- package/src/Duration.ts +13 -13
- package/src/Effect.ts +1477 -1126
- package/src/Encoding.ts +879 -0
- package/src/Equal.ts +278 -111
- package/src/ErrorReporter.ts +457 -0
- package/src/Exit.ts +24 -12
- package/src/Fiber.ts +10 -2
- package/src/FileSystem.ts +7 -8
- package/src/Filter.ts +52 -63
- package/src/Formatter.ts +253 -51
- package/src/Function.ts +2 -10
- package/src/Graph.ts +24 -11
- package/src/HashMap.ts +15 -14
- package/src/Iterable.ts +104 -50
- package/src/JsonSchema.ts +383 -10
- package/src/Latch.ts +112 -0
- package/src/Layer.ts +123 -132
- package/src/LayerMap.ts +9 -9
- package/src/LogLevel.ts +37 -0
- package/src/Logger.ts +33 -100
- package/src/ManagedRuntime.ts +2 -2
- package/src/Metric.ts +6 -8
- package/src/Newtype.ts +308 -0
- package/src/Optic.ts +948 -19
- package/src/Option.ts +32 -24
- package/src/Pipeable.ts +32 -1
- package/src/PlatformError.ts +5 -5
- package/src/Pool.ts +13 -11
- package/src/PubSub.ts +10 -9
- package/src/Pull.ts +1 -1
- package/src/Queue.ts +0 -1
- package/src/Random.ts +51 -14
- package/src/RcMap.ts +5 -5
- package/src/RcRef.ts +1 -1
- package/src/Record.ts +42 -152
- package/src/Reducer.ts +166 -7
- package/src/References.ts +10 -5
- package/src/Request.ts +3 -2
- package/src/RequestResolver.ts +29 -49
- package/src/Result.ts +2 -4
- package/src/Runtime.ts +102 -6
- package/src/Schedule.ts +462 -242
- package/src/Scheduler.ts +12 -0
- package/src/Schema.ts +796 -194
- package/src/SchemaAST.ts +164 -31
- package/src/SchemaGetter.ts +15 -17
- package/src/SchemaParser.ts +11 -0
- package/src/SchemaRepresentation.ts +49 -24
- package/src/SchemaTransformation.ts +189 -4
- package/src/ScopedCache.ts +3 -3
- package/src/Semaphore.ts +356 -0
- package/src/ServiceMap.ts +50 -40
- package/src/Sink.ts +78 -26
- package/src/Stdio.ts +27 -4
- package/src/Stream.ts +586 -608
- package/src/Struct.ts +26 -0
- package/src/SubscriptionRef.ts +3 -2
- package/src/SynchronizedRef.ts +3 -2
- package/src/Trie.ts +18 -17
- package/src/TxChunk.ts +72 -53
- package/src/TxDeferred.ts +394 -0
- package/src/TxHashMap.ts +332 -285
- package/src/TxHashSet.ts +111 -116
- package/src/TxPriorityQueue.ts +767 -0
- package/src/TxPubSub.ts +789 -0
- package/src/TxQueue.ts +241 -251
- package/src/TxReentrantLock.ts +753 -0
- package/src/TxRef.ts +50 -38
- package/src/TxSemaphore.ts +29 -32
- package/src/TxSubscriptionRef.ts +639 -0
- package/src/Types.ts +73 -19
- package/src/Utils.ts +137 -111
- package/src/index.ts +728 -24
- package/src/internal/core.ts +12 -5
- package/src/internal/dateTime.ts +9 -30
- package/src/internal/effect.ts +774 -301
- package/src/internal/hashMap.ts +8 -7
- package/src/internal/random.ts +20 -0
- package/src/internal/rcRef.ts +4 -3
- package/src/internal/request.ts +2 -2
- package/src/internal/schema/annotations.ts +2 -0
- package/src/internal/schema/representation.ts +45 -94
- package/src/internal/schema/schema.ts +1 -0
- package/src/internal/schema/to-codec.ts +7 -17
- package/src/internal/trie.ts +15 -9
- package/src/testing/TestClock.ts +13 -11
- package/src/testing/TestSchema.ts +332 -35
- package/src/testing/index.ts +64 -1
- package/src/unstable/ai/AiError.ts +105 -48
- package/src/unstable/ai/Chat.ts +47 -61
- package/src/unstable/ai/LanguageModel.ts +153 -68
- package/src/unstable/ai/McpSchema.ts +73 -13
- package/src/unstable/ai/McpServer.ts +271 -61
- package/src/unstable/ai/Model.ts +40 -9
- package/src/unstable/ai/Prompt.ts +37 -37
- package/src/unstable/ai/Response.ts +25 -25
- package/src/unstable/ai/Tool.ts +20 -14
- package/src/unstable/ai/Toolkit.ts +5 -14
- package/src/unstable/ai/index.ts +1 -1
- package/src/unstable/ai/internal/codec-transformer.ts +0 -7
- package/src/unstable/cli/CliError.ts +47 -59
- package/src/unstable/cli/CliOutput.ts +75 -6
- package/src/unstable/cli/Command.ts +796 -187
- package/src/unstable/cli/GlobalFlag.ts +243 -0
- package/src/unstable/cli/HelpDoc.ts +80 -2
- package/src/unstable/cli/Primitive.ts +1 -1
- package/src/unstable/cli/Prompt.ts +31 -9
- package/src/unstable/cli/index.ts +5 -0
- package/src/unstable/cli/internal/command.ts +109 -63
- package/src/unstable/cli/internal/completions/CommandDescriptor.ts +7 -2
- package/src/unstable/cli/internal/config.ts +49 -0
- package/src/unstable/cli/internal/help.ts +171 -0
- package/src/unstable/cli/internal/parser.ts +66 -61
- package/src/unstable/cluster/ClusterCron.ts +2 -2
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +5 -4
- package/src/unstable/cluster/Entity.ts +11 -10
- package/src/unstable/cluster/EntityResource.ts +4 -4
- package/src/unstable/cluster/Envelope.ts +1 -1
- package/src/unstable/cluster/K8sHttpClient.ts +5 -5
- package/src/unstable/cluster/MessageStorage.ts +3 -5
- package/src/unstable/cluster/Runners.ts +6 -5
- package/src/unstable/cluster/Sharding.ts +12 -10
- package/src/unstable/cluster/ShardingConfig.ts +30 -31
- package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
- package/src/unstable/cluster/internal/entityManager.ts +9 -8
- package/src/unstable/cluster/internal/entityReaper.ts +2 -1
- package/src/unstable/cluster/internal/resourceRef.ts +2 -1
- package/src/unstable/encoding/Sse.ts +3 -5
- package/src/unstable/eventlog/EventLog.ts +2 -1
- package/src/unstable/http/Cookies.ts +87 -3
- package/src/unstable/http/Headers.ts +62 -13
- package/src/unstable/http/HttpBody.ts +6 -6
- package/src/unstable/http/HttpClient.ts +374 -33
- package/src/unstable/http/HttpClientRequest.ts +38 -30
- package/src/unstable/http/HttpClientResponse.ts +7 -2
- package/src/unstable/http/HttpEffect.ts +54 -68
- package/src/unstable/http/HttpMethod.ts +16 -4
- package/src/unstable/http/HttpMiddleware.ts +9 -24
- package/src/unstable/http/HttpServerError.ts +42 -45
- package/src/unstable/http/HttpServerRequest.ts +389 -2
- package/src/unstable/http/HttpServerRespondable.ts +6 -6
- package/src/unstable/http/HttpServerResponse.ts +337 -4
- package/src/unstable/http/HttpStaticServer.ts +456 -0
- package/src/unstable/http/Multipart.ts +2 -2
- package/src/unstable/http/UrlParams.ts +20 -5
- package/src/unstable/http/index.ts +5 -0
- package/src/unstable/http/internal/preResponseHandler.ts +15 -0
- package/src/unstable/httpapi/HttpApi.ts +6 -6
- package/src/unstable/httpapi/HttpApiBuilder.ts +81 -28
- package/src/unstable/httpapi/HttpApiClient.ts +100 -11
- package/src/unstable/httpapi/HttpApiEndpoint.ts +71 -87
- package/src/unstable/httpapi/HttpApiError.ts +51 -28
- package/src/unstable/httpapi/HttpApiGroup.ts +7 -6
- package/src/unstable/httpapi/HttpApiMiddleware.ts +4 -4
- package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
- package/src/unstable/httpapi/HttpApiSecurity.ts +3 -3
- package/src/unstable/httpapi/OpenApi.ts +41 -23
- package/src/unstable/observability/Otlp.ts +12 -12
- package/src/unstable/observability/OtlpExporter.ts +3 -3
- package/src/unstable/observability/OtlpLogger.ts +13 -9
- package/src/unstable/observability/OtlpMetrics.ts +4 -4
- package/src/unstable/observability/OtlpTracer.ts +4 -4
- package/src/unstable/persistence/KeyValueStore.ts +6 -6
- package/src/unstable/persistence/Persistable.ts +2 -2
- package/src/unstable/persistence/PersistedCache.ts +20 -9
- package/src/unstable/persistence/PersistedQueue.ts +25 -24
- package/src/unstable/persistence/Persistence.ts +3 -3
- package/src/unstable/persistence/RateLimiter.ts +4 -4
- package/src/unstable/process/ChildProcess.ts +6 -208
- package/src/unstable/process/ChildProcessSpawner.ts +75 -14
- package/src/unstable/reactivity/Atom.ts +211 -50
- package/src/unstable/reactivity/AtomHttpApi.ts +66 -31
- package/src/unstable/reactivity/AtomRegistry.ts +61 -9
- package/src/unstable/reactivity/AtomRpc.ts +51 -20
- package/src/unstable/reactivity/Hydration.ts +112 -0
- package/src/unstable/reactivity/index.ts +5 -0
- package/src/unstable/rpc/Rpc.ts +7 -9
- package/src/unstable/rpc/RpcClient.ts +12 -54
- package/src/unstable/rpc/RpcGroup.ts +4 -4
- package/src/unstable/rpc/RpcMiddleware.ts +15 -9
- package/src/unstable/rpc/RpcSchema.ts +17 -0
- package/src/unstable/rpc/RpcSerialization.ts +44 -9
- package/src/unstable/rpc/RpcServer.ts +28 -32
- package/src/unstable/rpc/Utils.ts +3 -2
- package/src/unstable/schema/Model.ts +31 -0
- package/src/unstable/schema/VariantSchema.ts +9 -9
- package/src/unstable/socket/Socket.ts +16 -17
- package/src/unstable/sql/SqlClient.ts +1 -1
- package/src/unstable/sql/SqlError.ts +11 -9
- package/src/unstable/sql/SqlModel.ts +5 -5
- package/src/unstable/sql/SqlResolver.ts +17 -7
- package/src/unstable/sql/SqlSchema.ts +42 -26
- package/src/unstable/sql/Statement.ts +0 -1
- package/src/unstable/workers/Worker.ts +2 -1
- package/src/unstable/workflow/DurableClock.ts +8 -8
- package/src/unstable/workflow/DurableDeferred.ts +2 -2
- package/src/unstable/workflow/Workflow.ts +6 -2
- package/src/unstable/workflow/WorkflowEngine.ts +185 -2
- package/dist/PartitionedSemaphore.d.ts +0 -52
- package/dist/PartitionedSemaphore.d.ts.map +0 -1
- package/dist/PartitionedSemaphore.js.map +0 -1
- package/dist/encoding/Base64.d.ts +0 -67
- package/dist/encoding/Base64.d.ts.map +0 -1
- package/dist/encoding/Base64.js +0 -146
- package/dist/encoding/Base64.js.map +0 -1
- package/dist/encoding/Base64Url.d.ts +0 -60
- package/dist/encoding/Base64Url.d.ts.map +0 -1
- package/dist/encoding/Base64Url.js +0 -89
- package/dist/encoding/Base64Url.js.map +0 -1
- package/dist/encoding/EncodingError.d.ts +0 -31
- package/dist/encoding/EncodingError.d.ts.map +0 -1
- package/dist/encoding/EncodingError.js +0 -22
- package/dist/encoding/EncodingError.js.map +0 -1
- package/dist/encoding/Hex.d.ts +0 -61
- package/dist/encoding/Hex.d.ts.map +0 -1
- package/dist/encoding/Hex.js +0 -115
- package/dist/encoding/Hex.js.map +0 -1
- package/dist/encoding/index.d.ts +0 -26
- package/dist/encoding/index.d.ts.map +0 -1
- package/dist/encoding/index.js +0 -27
- package/dist/encoding/index.js.map +0 -1
- package/dist/unstable/cli/internal/builtInFlags.d.ts +0 -7
- package/dist/unstable/cli/internal/builtInFlags.d.ts.map +0 -1
- package/dist/unstable/cli/internal/builtInFlags.js +0 -44
- package/dist/unstable/cli/internal/builtInFlags.js.map +0 -1
- package/src/PartitionedSemaphore.ts +0 -182
- package/src/encoding/Base64.ts +0 -366
- package/src/encoding/Base64Url.ts +0 -104
- package/src/encoding/EncodingError.ts +0 -35
- package/src/encoding/Hex.ts +0 -390
- package/src/encoding/index.ts +0 -31
- package/src/unstable/cli/internal/builtInFlags.ts +0 -78
package/src/internal/effect.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type * as Console from "../Console.ts"
|
|
|
5
5
|
import * as Duration from "../Duration.ts"
|
|
6
6
|
import type * as Effect from "../Effect.ts"
|
|
7
7
|
import * as Equal from "../Equal.ts"
|
|
8
|
+
import type { ErrorReporter } from "../ErrorReporter.ts"
|
|
8
9
|
import type * as Exit from "../Exit.ts"
|
|
9
10
|
import type * as Fiber from "../Fiber.ts"
|
|
10
11
|
import * as Filter from "../Filter.ts"
|
|
@@ -14,6 +15,7 @@ import { constant, constFalse, constTrue, constUndefined, constVoid, dual, ident
|
|
|
14
15
|
import * as Hash from "../Hash.ts"
|
|
15
16
|
import { toJson, toStringUnknown } from "../Inspectable.ts"
|
|
16
17
|
import * as Iterable from "../Iterable.ts"
|
|
18
|
+
import type * as _Latch from "../Latch.ts"
|
|
17
19
|
import type * as Logger from "../Logger.ts"
|
|
18
20
|
import type * as LogLevel from "../LogLevel.ts"
|
|
19
21
|
import type * as Metric from "../Metric.ts"
|
|
@@ -48,7 +50,9 @@ import type {
|
|
|
48
50
|
ExcludeTag,
|
|
49
51
|
ExtractReason,
|
|
50
52
|
ExtractTag,
|
|
53
|
+
NarrowReason,
|
|
51
54
|
NoInfer,
|
|
55
|
+
OmitReason,
|
|
52
56
|
ReasonOf,
|
|
53
57
|
ReasonTags,
|
|
54
58
|
Simplify,
|
|
@@ -212,7 +216,8 @@ export const causeInterruptors = <E>(self: Cause.Cause<E>): ReadonlySet<number>
|
|
|
212
216
|
const emptySet = new Set<number>()
|
|
213
217
|
|
|
214
218
|
/** @internal */
|
|
215
|
-
export const hasInterruptsOnly = <E>(self: Cause.Cause<E>): boolean =>
|
|
219
|
+
export const hasInterruptsOnly = <E>(self: Cause.Cause<E>): boolean =>
|
|
220
|
+
self.reasons.length > 0 && self.reasons.every(isInterruptReason)
|
|
216
221
|
|
|
217
222
|
/** @internal */
|
|
218
223
|
export const reasonAnnotations = <E>(
|
|
@@ -340,7 +345,8 @@ export const causePrettyErrors = <E>(self: Cause.Cause<E>): Array<Error> => {
|
|
|
340
345
|
return errors
|
|
341
346
|
}
|
|
342
347
|
|
|
343
|
-
|
|
348
|
+
/** @internal */
|
|
349
|
+
export const causePrettyError = (
|
|
344
350
|
original: Record<string, unknown> | Error,
|
|
345
351
|
annotations?: ReadonlyMap<string, unknown>
|
|
346
352
|
): Error => {
|
|
@@ -488,24 +494,6 @@ const fiberIdStore = { id: 0 }
|
|
|
488
494
|
/** @internal */
|
|
489
495
|
export const getCurrentFiber = (): Fiber.Fiber<any, any> | undefined => (globalThis as any)[currentFiberTypeId]
|
|
490
496
|
|
|
491
|
-
const keepAlive = (() => {
|
|
492
|
-
let count = 0
|
|
493
|
-
let running: ReturnType<typeof globalThis.setInterval> | undefined = undefined
|
|
494
|
-
return ({
|
|
495
|
-
increment() {
|
|
496
|
-
count++
|
|
497
|
-
running ??= globalThis.setInterval(constVoid, 2_147_483_647)
|
|
498
|
-
},
|
|
499
|
-
decrement() {
|
|
500
|
-
count--
|
|
501
|
-
if (count === 0 && running !== undefined) {
|
|
502
|
-
globalThis.clearInterval(running)
|
|
503
|
-
running = undefined
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
})
|
|
507
|
-
})()
|
|
508
|
-
|
|
509
497
|
/** @internal */
|
|
510
498
|
export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
|
|
511
499
|
constructor(
|
|
@@ -550,6 +538,7 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
|
|
|
550
538
|
currentStackFrame: StackFrame | undefined
|
|
551
539
|
runtimeMetrics: Metric.FiberRuntimeMetricsService | undefined
|
|
552
540
|
maxOpsBeforeYield!: number
|
|
541
|
+
currentPreventYield!: boolean
|
|
553
542
|
|
|
554
543
|
getRef<X>(ref: ServiceMap.Reference<X>): X {
|
|
555
544
|
return ServiceMap.getReferenceUnsafe(this.services, ref)
|
|
@@ -628,6 +617,7 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
|
|
|
628
617
|
this.currentOpCount++
|
|
629
618
|
if (
|
|
630
619
|
!yielding &&
|
|
620
|
+
!this.currentPreventYield &&
|
|
631
621
|
this.currentScheduler.shouldYield(this as any)
|
|
632
622
|
) {
|
|
633
623
|
yielding = true
|
|
@@ -691,6 +681,7 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
|
|
|
691
681
|
this.minimumLogLevel = this.getRef(MinimumLogLevel)
|
|
692
682
|
this.currentStackFrame = services.mapUnsafe.get(CurrentStackFrame.key)
|
|
693
683
|
this.maxOpsBeforeYield = this.getRef(Scheduler.MaxOpsBeforeYield)
|
|
684
|
+
this.currentPreventYield = this.getRef(Scheduler.PreventSchedulerYield)
|
|
694
685
|
this.runtimeMetrics = services.mapUnsafe.get(InternalMetric.FiberRuntimeMetricsKey)
|
|
695
686
|
const currentTracer = services.mapUnsafe.get(Tracer.TracerKey)
|
|
696
687
|
this.currentTracerContext = currentTracer ? currentTracer["context"] : undefined
|
|
@@ -784,6 +775,7 @@ export const fiberJoinAll = <A extends Iterable<Fiber.Fiber<any, any>>>(self: A)
|
|
|
784
775
|
> =>
|
|
785
776
|
callback((resume) => {
|
|
786
777
|
const fibers = Array.from(self)
|
|
778
|
+
if (fibers.length === 0) return resume(succeed(Arr.empty() as any))
|
|
787
779
|
const out = new Array<any>(fibers.length) as Arr.NonEmptyArray<any>
|
|
788
780
|
const cancels = Arr.empty<() => void>()
|
|
789
781
|
let done = 0
|
|
@@ -812,13 +804,29 @@ export const fiberInterrupt = <A, E>(
|
|
|
812
804
|
|
|
813
805
|
/** @internal */
|
|
814
806
|
export const fiberInterruptAs: {
|
|
815
|
-
(
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
807
|
+
(
|
|
808
|
+
fiberId: number | undefined,
|
|
809
|
+
annotations?: ServiceMap.ServiceMap<never> | undefined
|
|
810
|
+
): <A, E>(self: Fiber.Fiber<A, E>) => Effect.Effect<void>
|
|
811
|
+
<A, E>(
|
|
812
|
+
self: Fiber.Fiber<A, E>,
|
|
813
|
+
fiberId: number | undefined,
|
|
814
|
+
annotations?: ServiceMap.ServiceMap<never> | undefined
|
|
815
|
+
): Effect.Effect<void>
|
|
816
|
+
} = dual(
|
|
817
|
+
(args) => hasProperty(args[0], FiberTypeId),
|
|
818
|
+
<A, E>(
|
|
819
|
+
self: Fiber.Fiber<A, E>,
|
|
820
|
+
fiberId: number | undefined,
|
|
821
|
+
annotations?: ServiceMap.ServiceMap<never> | undefined
|
|
822
|
+
): Effect.Effect<void> =>
|
|
823
|
+
withFiber((parent) => {
|
|
824
|
+
let ann = fiberStackAnnotations(parent)
|
|
825
|
+
ann = ann && annotations ? ServiceMap.merge(ann, annotations) : ann ?? annotations
|
|
826
|
+
self.interruptUnsafe(fiberId, ann)
|
|
827
|
+
return asVoid(fiberAwait(self))
|
|
828
|
+
})
|
|
829
|
+
)
|
|
822
830
|
|
|
823
831
|
/** @internal */
|
|
824
832
|
export const fiberInterruptAll = <A extends Iterable<Fiber.Fiber<any, any>>>(
|
|
@@ -1018,10 +1026,8 @@ const callbackOptions: <A, E = never, R = never>(
|
|
|
1018
1026
|
}, controller?.signal)
|
|
1019
1027
|
if (yielded !== false) return yielded
|
|
1020
1028
|
yielded = true
|
|
1021
|
-
keepAlive.increment()
|
|
1022
1029
|
fiber._yielded = () => {
|
|
1023
1030
|
resumed = true
|
|
1024
|
-
keepAlive.decrement()
|
|
1025
1031
|
}
|
|
1026
1032
|
if (controller === undefined && onCancel === undefined) {
|
|
1027
1033
|
return Yield
|
|
@@ -1095,7 +1101,7 @@ export const fnUntraced: Effect.fn.Untraced = (
|
|
|
1095
1101
|
body: Function,
|
|
1096
1102
|
...pipeables: Array<any>
|
|
1097
1103
|
) => {
|
|
1098
|
-
|
|
1104
|
+
const fn = pipeables.length === 0
|
|
1099
1105
|
? function(this: any) {
|
|
1100
1106
|
return suspend(() => fromIteratorUnsafe(body.apply(this, arguments)))
|
|
1101
1107
|
}
|
|
@@ -1106,8 +1112,15 @@ export const fnUntraced: Effect.fn.Untraced = (
|
|
|
1106
1112
|
}
|
|
1107
1113
|
return effect
|
|
1108
1114
|
}
|
|
1115
|
+
return defineFunctionLength(body.length, fn)
|
|
1109
1116
|
}
|
|
1110
1117
|
|
|
1118
|
+
const defineFunctionLength = <F extends Function>(length: number, fn: F): F =>
|
|
1119
|
+
Object.defineProperty(fn, "length", {
|
|
1120
|
+
value: length,
|
|
1121
|
+
configurable: true
|
|
1122
|
+
})
|
|
1123
|
+
|
|
1111
1124
|
const fnStackCleaner = makeStackCleaner(2)
|
|
1112
1125
|
|
|
1113
1126
|
/** @internal */
|
|
@@ -1148,7 +1161,7 @@ const makeFn = (
|
|
|
1148
1161
|
? bodyOrOptions
|
|
1149
1162
|
: (pipeables.pop()!).bind(bodyOrOptions.self)
|
|
1150
1163
|
|
|
1151
|
-
return function(this: any, ...args: Array<any>) {
|
|
1164
|
+
return defineFunctionLength(body.length, function(this: any, ...args: Array<any>) {
|
|
1152
1165
|
let result = suspend(() => {
|
|
1153
1166
|
const iter = body.apply(this, arguments)
|
|
1154
1167
|
return isEffect(iter) ? iter : fromIteratorUnsafe(iter)
|
|
@@ -1178,7 +1191,7 @@ const makeFn = (
|
|
|
1178
1191
|
}
|
|
1179
1192
|
})
|
|
1180
1193
|
)
|
|
1181
|
-
}
|
|
1194
|
+
})
|
|
1182
1195
|
}
|
|
1183
1196
|
|
|
1184
1197
|
/** @internal */
|
|
@@ -1186,17 +1199,20 @@ export const fnUntracedEager: Effect.fn.Untraced = (
|
|
|
1186
1199
|
body: Function,
|
|
1187
1200
|
...pipeables: Array<any>
|
|
1188
1201
|
) =>
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
let effect = fromIteratorEagerUnsafe(() => body.apply(this, arguments))
|
|
1195
|
-
for (const pipeable of pipeables) {
|
|
1196
|
-
effect = pipeable(effect)
|
|
1202
|
+
defineFunctionLength(
|
|
1203
|
+
body.length,
|
|
1204
|
+
pipeables.length === 0
|
|
1205
|
+
? function(this: any) {
|
|
1206
|
+
return fromIteratorEagerUnsafe(() => body.apply(this, arguments))
|
|
1197
1207
|
}
|
|
1198
|
-
|
|
1199
|
-
|
|
1208
|
+
: function(this: any) {
|
|
1209
|
+
let effect = fromIteratorEagerUnsafe(() => body.apply(this, arguments))
|
|
1210
|
+
for (const pipeable of pipeables) {
|
|
1211
|
+
effect = pipeable(effect)
|
|
1212
|
+
}
|
|
1213
|
+
return effect
|
|
1214
|
+
}
|
|
1215
|
+
)
|
|
1200
1216
|
|
|
1201
1217
|
const fromIteratorEagerUnsafe = (
|
|
1202
1218
|
evaluate: () => Iterator<Effect.Yieldable<any, any, any, any>>
|
|
@@ -1945,17 +1961,17 @@ export const exitFindErrorOption = <A, E>(self: Exit.Exit<A, E>): Option.Option<
|
|
|
1945
1961
|
|
|
1946
1962
|
/** @internal */
|
|
1947
1963
|
export const service: {
|
|
1948
|
-
<I, S>(service: ServiceMap.
|
|
1964
|
+
<I, S>(service: ServiceMap.Key<I, S>): Effect.Effect<S, never, I>
|
|
1949
1965
|
} = fromYieldable as any
|
|
1950
1966
|
|
|
1951
1967
|
/** @internal */
|
|
1952
1968
|
export const serviceOption = <I, S>(
|
|
1953
|
-
service: ServiceMap.
|
|
1969
|
+
service: ServiceMap.Key<I, S>
|
|
1954
1970
|
): Effect.Effect<Option.Option<S>> => withFiber((fiber) => succeed(ServiceMap.getOption(fiber.services, service)))
|
|
1955
1971
|
|
|
1956
1972
|
/** @internal */
|
|
1957
1973
|
export const serviceOptional = <I, S>(
|
|
1958
|
-
service: ServiceMap.
|
|
1974
|
+
service: ServiceMap.Key<I, S>
|
|
1959
1975
|
): Effect.Effect<S, Cause.NoSuchElementError> =>
|
|
1960
1976
|
withFiber((fiber) =>
|
|
1961
1977
|
fiber.services.mapUnsafe.has(service.key)
|
|
@@ -1983,23 +1999,8 @@ export const updateServices: {
|
|
|
1983
1999
|
const nextServices = f(prev)
|
|
1984
2000
|
if (prev === nextServices) return self as any
|
|
1985
2001
|
fiber.setServices(nextServices)
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
if (!prev.mapUnsafe.has(key) || value !== prev.mapUnsafe.get(key)) {
|
|
1989
|
-
newServices.set(key, value)
|
|
1990
|
-
}
|
|
1991
|
-
}
|
|
1992
|
-
return onExitPrimitive(self as any, () => {
|
|
1993
|
-
const map = new Map(fiber.services.mapUnsafe)
|
|
1994
|
-
for (const [key, value] of newServices) {
|
|
1995
|
-
if (value !== map.get(key)) continue
|
|
1996
|
-
if (prev.mapUnsafe.has(key)) {
|
|
1997
|
-
map.set(key, prev.mapUnsafe.get(key))
|
|
1998
|
-
} else {
|
|
1999
|
-
map.delete(key)
|
|
2000
|
-
}
|
|
2001
|
-
}
|
|
2002
|
-
fiber.setServices(ServiceMap.makeUnsafe(map))
|
|
2002
|
+
return onExitPrimitive(self, () => {
|
|
2003
|
+
fiber.setServices(prev)
|
|
2003
2004
|
return undefined
|
|
2004
2005
|
})
|
|
2005
2006
|
})
|
|
@@ -2008,27 +2009,26 @@ export const updateServices: {
|
|
|
2008
2009
|
/** @internal */
|
|
2009
2010
|
export const updateService: {
|
|
2010
2011
|
<I, A>(
|
|
2011
|
-
service: ServiceMap.
|
|
2012
|
+
service: ServiceMap.Key<I, A>,
|
|
2012
2013
|
f: (value: A) => A
|
|
2013
2014
|
): <XA, E, R>(self: Effect.Effect<XA, E, R>) => Effect.Effect<XA, E, R | I>
|
|
2014
2015
|
<XA, E, R, I, A>(
|
|
2015
2016
|
self: Effect.Effect<XA, E, R>,
|
|
2016
|
-
service: ServiceMap.
|
|
2017
|
+
service: ServiceMap.Key<I, A>,
|
|
2017
2018
|
f: (value: A) => A
|
|
2018
2019
|
): Effect.Effect<XA, E, R | I>
|
|
2019
2020
|
} = dual(
|
|
2020
2021
|
3,
|
|
2021
2022
|
<XA, E, R, I, A>(
|
|
2022
2023
|
self: Effect.Effect<XA, E, R>,
|
|
2023
|
-
service: ServiceMap.
|
|
2024
|
+
service: ServiceMap.Key<I, A>,
|
|
2024
2025
|
f: (value: A) => A
|
|
2025
2026
|
): Effect.Effect<XA, E, R | I> =>
|
|
2026
|
-
|
|
2027
|
-
const prev = ServiceMap.getUnsafe(
|
|
2027
|
+
updateServices(self, (s) => {
|
|
2028
|
+
const prev = ServiceMap.getUnsafe(s, service)
|
|
2028
2029
|
const next = f(prev)
|
|
2029
|
-
if (prev === next) return
|
|
2030
|
-
|
|
2031
|
-
return onExit(self, () => sync(() => fiber.setServices(ServiceMap.add(fiber.services, service, prev))))
|
|
2030
|
+
if (prev === next) return s
|
|
2031
|
+
return ServiceMap.add(s, service, next)
|
|
2032
2032
|
})
|
|
2033
2033
|
)
|
|
2034
2034
|
|
|
@@ -2066,20 +2066,20 @@ export const provideServices: {
|
|
|
2066
2066
|
/** @internal */
|
|
2067
2067
|
export const provideService: {
|
|
2068
2068
|
<I, S>(
|
|
2069
|
-
service: ServiceMap.
|
|
2069
|
+
service: ServiceMap.Key<I, S>
|
|
2070
2070
|
): {
|
|
2071
2071
|
(implementation: S): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, I>>
|
|
2072
2072
|
<A, E, R>(self: Effect.Effect<A, E, R>, implementation: S): Effect.Effect<A, E, Exclude<R, I>>
|
|
2073
2073
|
}
|
|
2074
2074
|
<I, S>(
|
|
2075
|
-
key: ServiceMap.
|
|
2075
|
+
key: ServiceMap.Key<I, S>,
|
|
2076
2076
|
implementation: S
|
|
2077
2077
|
): <A, E, R>(
|
|
2078
2078
|
self: Effect.Effect<A, E, R>
|
|
2079
2079
|
) => Effect.Effect<A, E, Exclude<R, I>>
|
|
2080
2080
|
<A, E, R, I, S>(
|
|
2081
2081
|
self: Effect.Effect<A, E, R>,
|
|
2082
|
-
service: ServiceMap.
|
|
2082
|
+
service: ServiceMap.Key<I, S>,
|
|
2083
2083
|
implementation: S
|
|
2084
2084
|
): Effect.Effect<A, E, Exclude<R, I>>
|
|
2085
2085
|
} = function(this: any) {
|
|
@@ -2092,34 +2092,33 @@ export const provideService: {
|
|
|
2092
2092
|
|
|
2093
2093
|
const provideServiceImpl = <A, E, R, I, S>(
|
|
2094
2094
|
self: Effect.Effect<A, E, R>,
|
|
2095
|
-
service: ServiceMap.
|
|
2095
|
+
service: ServiceMap.Key<I, S>,
|
|
2096
2096
|
implementation: S
|
|
2097
2097
|
): Effect.Effect<A, E, Exclude<R, I>> =>
|
|
2098
|
-
|
|
2099
|
-
const prev =
|
|
2100
|
-
if (prev
|
|
2101
|
-
|
|
2102
|
-
return onExit(self, () => sync(() => fiber.setServices(ServiceMap.addOrOmit(fiber.services, service, prev))))
|
|
2098
|
+
updateServices(self, (s) => {
|
|
2099
|
+
const prev = s.mapUnsafe.get(service.key)
|
|
2100
|
+
if (prev === implementation) return s
|
|
2101
|
+
return ServiceMap.add(s, service, implementation)
|
|
2103
2102
|
}) as any
|
|
2104
2103
|
|
|
2105
2104
|
/** @internal */
|
|
2106
2105
|
export const provideServiceEffect: {
|
|
2107
2106
|
<I, S, E2, R2>(
|
|
2108
|
-
service: ServiceMap.
|
|
2107
|
+
service: ServiceMap.Key<I, S>,
|
|
2109
2108
|
acquire: Effect.Effect<S, E2, R2>
|
|
2110
2109
|
): <A, E, R>(
|
|
2111
2110
|
self: Effect.Effect<A, E, R>
|
|
2112
2111
|
) => Effect.Effect<A, E | E2, Exclude<R, I> | R2>
|
|
2113
2112
|
<A, E, R, I, S, E2, R2>(
|
|
2114
2113
|
self: Effect.Effect<A, E, R>,
|
|
2115
|
-
service: ServiceMap.
|
|
2114
|
+
service: ServiceMap.Key<I, S>,
|
|
2116
2115
|
acquire: Effect.Effect<S, E2, R2>
|
|
2117
2116
|
): Effect.Effect<A, E | E2, Exclude<R, I> | R2>
|
|
2118
2117
|
} = dual(
|
|
2119
2118
|
3,
|
|
2120
2119
|
<A, E, R, I, S, E2, R2>(
|
|
2121
2120
|
self: Effect.Effect<A, E, R>,
|
|
2122
|
-
service: ServiceMap.
|
|
2121
|
+
service: ServiceMap.Key<I, S>,
|
|
2123
2122
|
acquire: Effect.Effect<S, E2, R2>
|
|
2124
2123
|
): Effect.Effect<A, E | E2, Exclude<R, I> | R2> =>
|
|
2125
2124
|
flatMap(acquire, (implementation) => provideService(self, service, implementation))
|
|
@@ -2203,19 +2202,12 @@ export const filterOrFail: {
|
|
|
2203
2202
|
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
2204
2203
|
orFailWith: (a: NoInfer<A>) => E2
|
|
2205
2204
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E2 | E, R>
|
|
2206
|
-
<A, B, X, E2>(
|
|
2207
|
-
filter: Filter.Filter<NoInfer<A>, B, X>,
|
|
2208
|
-
orFailWith: (x: X) => E2
|
|
2209
|
-
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E2 | E, R>
|
|
2210
2205
|
<A, B extends A>(
|
|
2211
2206
|
refinement: Predicate.Refinement<NoInfer<A>, B>
|
|
2212
2207
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, Cause.NoSuchElementError | E, R>
|
|
2213
2208
|
<A>(
|
|
2214
2209
|
predicate: Predicate.Predicate<NoInfer<A>>
|
|
2215
2210
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, Cause.NoSuchElementError | E, R>
|
|
2216
|
-
<A, B, X>(
|
|
2217
|
-
filter: Filter.Filter<NoInfer<A>, B, X>
|
|
2218
|
-
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, Cause.NoSuchElementError | E, R>
|
|
2219
2211
|
<A, E, R, E2, B extends A>(
|
|
2220
2212
|
self: Effect.Effect<A, E, R>,
|
|
2221
2213
|
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
@@ -2226,11 +2218,6 @@ export const filterOrFail: {
|
|
|
2226
2218
|
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
2227
2219
|
orFailWith: (a: NoInfer<A>) => E2
|
|
2228
2220
|
): Effect.Effect<A, E2 | E, R>
|
|
2229
|
-
<A, E, R, B, X, E2>(
|
|
2230
|
-
self: Effect.Effect<A, E, R>,
|
|
2231
|
-
filter: Filter.Filter<A, B, X>,
|
|
2232
|
-
orFailWith: (x: X) => E2
|
|
2233
|
-
): Effect.Effect<B, E2 | E, R>
|
|
2234
2221
|
<A, E, R, B extends A>(
|
|
2235
2222
|
self: Effect.Effect<A, E, R>,
|
|
2236
2223
|
refinement: Predicate.Refinement<NoInfer<A>, B>
|
|
@@ -2239,18 +2226,14 @@ export const filterOrFail: {
|
|
|
2239
2226
|
self: Effect.Effect<A, E, R>,
|
|
2240
2227
|
predicate: Predicate.Predicate<NoInfer<A>>
|
|
2241
2228
|
): Effect.Effect<A, E | Cause.NoSuchElementError, R>
|
|
2242
|
-
<A, E, R, B, X>(
|
|
2243
|
-
self: Effect.Effect<A, E, R>,
|
|
2244
|
-
filter: Filter.Filter<A, B, X>
|
|
2245
|
-
): Effect.Effect<B, E | Cause.NoSuchElementError, R>
|
|
2246
2229
|
} = dual((args) => isEffect(args[0]), <A, E, R, E2>(
|
|
2247
2230
|
self: Effect.Effect<A, E, R>,
|
|
2248
|
-
|
|
2231
|
+
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
2249
2232
|
orFailWith?: (a: any) => E2
|
|
2250
2233
|
): Effect.Effect<any, E | E2 | Cause.NoSuchElementError, R> =>
|
|
2251
2234
|
filterOrElse(
|
|
2252
2235
|
self,
|
|
2253
|
-
|
|
2236
|
+
predicate as any,
|
|
2254
2237
|
orFailWith ? (a: any) => fail(orFailWith(a)) : () => fail(new NoSuchElementError() as E2)
|
|
2255
2238
|
))
|
|
2256
2239
|
|
|
@@ -2400,27 +2383,55 @@ const OnFailureProto = makePrimitiveProto({
|
|
|
2400
2383
|
|
|
2401
2384
|
/** @internal */
|
|
2402
2385
|
export const catchCauseIf: {
|
|
2403
|
-
<E,
|
|
2404
|
-
|
|
2405
|
-
f: (
|
|
2386
|
+
<E, B, E2, R2>(
|
|
2387
|
+
predicate: Predicate.Predicate<Cause.Cause<E>>,
|
|
2388
|
+
f: (cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
|
|
2406
2389
|
): <A, R>(
|
|
2407
2390
|
self: Effect.Effect<A, E, R>
|
|
2408
|
-
) => Effect.Effect<A | B,
|
|
2409
|
-
<A, E, R, B, E2, R2
|
|
2391
|
+
) => Effect.Effect<A | B, E | E2, R | R2>
|
|
2392
|
+
<A, E, R, B, E2, R2>(
|
|
2410
2393
|
self: Effect.Effect<A, E, R>,
|
|
2411
|
-
|
|
2412
|
-
f: (
|
|
2413
|
-
): Effect.Effect<A | B,
|
|
2394
|
+
predicate: Predicate.Predicate<Cause.Cause<E>>,
|
|
2395
|
+
f: (cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
|
|
2396
|
+
): Effect.Effect<A | B, E | E2, R | R2>
|
|
2414
2397
|
} = dual(
|
|
2415
2398
|
3,
|
|
2416
|
-
<A, E, R, B, E2, R2
|
|
2417
|
-
self: Effect.Effect<A, E, R>,
|
|
2418
|
-
|
|
2419
|
-
f: (
|
|
2420
|
-
): Effect.Effect<A | B,
|
|
2421
|
-
catchCause(self, (cause): Effect.Effect<B,
|
|
2422
|
-
|
|
2423
|
-
|
|
2399
|
+
<A, E, R, B, E2, R2>(
|
|
2400
|
+
self: Effect.Effect<A, E, R>,
|
|
2401
|
+
predicate: Predicate.Predicate<Cause.Cause<E>>,
|
|
2402
|
+
f: (cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
|
|
2403
|
+
): Effect.Effect<A | B, E | E2, R | R2> =>
|
|
2404
|
+
catchCause(self, (cause): Effect.Effect<B, E | E2, R2> => {
|
|
2405
|
+
if (!predicate(cause)) {
|
|
2406
|
+
return failCause(cause) as any
|
|
2407
|
+
}
|
|
2408
|
+
return internalCall(() => f(cause))
|
|
2409
|
+
})
|
|
2410
|
+
)
|
|
2411
|
+
|
|
2412
|
+
/** @internal */
|
|
2413
|
+
export const catchCauseFilter: {
|
|
2414
|
+
<E, B, E2, R2, EB, X extends Cause.Cause<any>>(
|
|
2415
|
+
filter: Filter.Filter<Cause.Cause<E>, EB, X>,
|
|
2416
|
+
f: (failure: EB, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
|
|
2417
|
+
): <A, R>(
|
|
2418
|
+
self: Effect.Effect<A, E, R>
|
|
2419
|
+
) => Effect.Effect<A | B, Cause.Cause.Error<X> | E2, R | R2>
|
|
2420
|
+
<A, E, R, B, E2, R2, EB, X extends Cause.Cause<any>>(
|
|
2421
|
+
self: Effect.Effect<A, E, R>,
|
|
2422
|
+
filter: Filter.Filter<Cause.Cause<E>, EB, X>,
|
|
2423
|
+
f: (failure: EB, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
|
|
2424
|
+
): Effect.Effect<A | B, Cause.Cause.Error<X> | E2, R | R2>
|
|
2425
|
+
} = dual(
|
|
2426
|
+
3,
|
|
2427
|
+
<A, E, R, B, E2, R2, EB, X extends Cause.Cause<any>>(
|
|
2428
|
+
self: Effect.Effect<A, E, R>,
|
|
2429
|
+
filter: Filter.Filter<Cause.Cause<E>, EB, X>,
|
|
2430
|
+
f: (failure: EB, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
|
|
2431
|
+
): Effect.Effect<A | B, Cause.Cause.Error<X> | E2, R | R2> =>
|
|
2432
|
+
catchCause(self, (cause): Effect.Effect<B, Cause.Cause.Error<X> | E2, R2> => {
|
|
2433
|
+
const eb = filter(cause)
|
|
2434
|
+
return Result.isFailure(eb) ? failCause(eb.failure) : internalCall(() => f(eb.success, cause))
|
|
2424
2435
|
})
|
|
2425
2436
|
)
|
|
2426
2437
|
|
|
@@ -2438,7 +2449,7 @@ export const catch_: {
|
|
|
2438
2449
|
<A, E, R, B, E2, R2>(
|
|
2439
2450
|
self: Effect.Effect<A, E, R>,
|
|
2440
2451
|
f: (a: NoInfer<E>) => Effect.Effect<B, E2, R2>
|
|
2441
|
-
): Effect.Effect<A | B, E2, R | R2> =>
|
|
2452
|
+
): Effect.Effect<A | B, E2, R | R2> => catchCauseFilter(self, findError as any, (e: any) => f(e)) as any
|
|
2442
2453
|
)
|
|
2443
2454
|
|
|
2444
2455
|
/** @internal */
|
|
@@ -2469,7 +2480,7 @@ export const catchDefect: {
|
|
|
2469
2480
|
<A, E, R, B, E2, R2>(
|
|
2470
2481
|
self: Effect.Effect<A, E, R>,
|
|
2471
2482
|
f: (defect: unknown) => Effect.Effect<B, E2, R2>
|
|
2472
|
-
): Effect.Effect<A | B, E | E2, R | R2> =>
|
|
2483
|
+
): Effect.Effect<A | B, E | E2, R | R2> => catchCauseFilter(self, findDefect as any, f as any) as any
|
|
2473
2484
|
)
|
|
2474
2485
|
|
|
2475
2486
|
/** @internal */
|
|
@@ -2492,32 +2503,56 @@ export const tapCause: {
|
|
|
2492
2503
|
|
|
2493
2504
|
/** @internal */
|
|
2494
2505
|
export const tapCauseIf: {
|
|
2495
|
-
<E,
|
|
2496
|
-
|
|
2497
|
-
f: (
|
|
2506
|
+
<E, B, E2, R2>(
|
|
2507
|
+
predicate: Predicate.Predicate<Cause.Cause<E>>,
|
|
2508
|
+
f: (cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
|
|
2498
2509
|
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R | R2>
|
|
2499
|
-
<A, E, R,
|
|
2510
|
+
<A, E, R, B, E2, R2>(
|
|
2500
2511
|
self: Effect.Effect<A, E, R>,
|
|
2501
|
-
|
|
2502
|
-
f: (
|
|
2512
|
+
predicate: Predicate.Predicate<Cause.Cause<E>>,
|
|
2513
|
+
f: (cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
|
|
2503
2514
|
): Effect.Effect<A, E | E2, R | R2>
|
|
2504
2515
|
} = dual(
|
|
2505
2516
|
3,
|
|
2506
|
-
<A, E, R,
|
|
2517
|
+
<A, E, R, B, E2, R2>(
|
|
2507
2518
|
self: Effect.Effect<A, E, R>,
|
|
2508
|
-
|
|
2509
|
-
f: (
|
|
2519
|
+
predicate: Predicate.Predicate<Cause.Cause<E>>,
|
|
2520
|
+
f: (cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
|
|
2510
2521
|
): Effect.Effect<A, E | E2, R | R2> =>
|
|
2511
2522
|
catchCauseIf(
|
|
2512
2523
|
self,
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
return Result.isFailure(result) ? Result.fail(cause) : result
|
|
2516
|
-
}) as any,
|
|
2517
|
-
(failure: any, cause: Cause.Cause<E>) => andThen(internalCall(() => f(failure, cause)), failCause(cause))
|
|
2524
|
+
predicate,
|
|
2525
|
+
(cause) => andThen(internalCall(() => f(cause)), failCause(cause))
|
|
2518
2526
|
)
|
|
2519
2527
|
)
|
|
2520
2528
|
|
|
2529
|
+
/** @internal */
|
|
2530
|
+
export const tapCauseFilter: {
|
|
2531
|
+
<E, B, E2, R2, EB, X extends Cause.Cause<any>>(
|
|
2532
|
+
filter: Filter.Filter<Cause.Cause<E>, EB, X>,
|
|
2533
|
+
f: (a: EB, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
|
|
2534
|
+
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R | R2>
|
|
2535
|
+
<A, E, R, B, E2, R2, EB, X extends Cause.Cause<any>>(
|
|
2536
|
+
self: Effect.Effect<A, E, R>,
|
|
2537
|
+
filter: Filter.Filter<Cause.Cause<E>, EB, X>,
|
|
2538
|
+
f: (a: EB, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
|
|
2539
|
+
): Effect.Effect<A, E | E2, R | R2>
|
|
2540
|
+
} = dual(
|
|
2541
|
+
3,
|
|
2542
|
+
<A, E, R, B, E2, R2, EB, X extends Cause.Cause<any>>(
|
|
2543
|
+
self: Effect.Effect<A, E, R>,
|
|
2544
|
+
filter: Filter.Filter<Cause.Cause<E>, EB, X>,
|
|
2545
|
+
f: (a: EB, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
|
|
2546
|
+
): Effect.Effect<A, E | E2, R | R2> =>
|
|
2547
|
+
catchCause(self, (cause) => {
|
|
2548
|
+
const result = filter(cause)
|
|
2549
|
+
if (Result.isFailure(result)) {
|
|
2550
|
+
return failCause(cause)
|
|
2551
|
+
}
|
|
2552
|
+
return andThen(internalCall(() => f(result.success, cause)), failCause(cause))
|
|
2553
|
+
})
|
|
2554
|
+
)
|
|
2555
|
+
|
|
2521
2556
|
/** @internal */
|
|
2522
2557
|
export const tapError: {
|
|
2523
2558
|
<E, B, E2, R2>(
|
|
@@ -2532,7 +2567,7 @@ export const tapError: {
|
|
|
2532
2567
|
<A, E, R, B, E2, R2>(
|
|
2533
2568
|
self: Effect.Effect<A, E, R>,
|
|
2534
2569
|
f: (e: NoInfer<E>) => Effect.Effect<B, E2, R2>
|
|
2535
|
-
): Effect.Effect<A, E | E2, R | R2> =>
|
|
2570
|
+
): Effect.Effect<A, E | E2, R | R2> => tapCauseFilter(self, findError as any, (e: any) => f(e)) as any
|
|
2536
2571
|
)
|
|
2537
2572
|
|
|
2538
2573
|
/** @internal */
|
|
@@ -2599,7 +2634,7 @@ export const tapDefect: {
|
|
|
2599
2634
|
<A, E, R, B, E2, R2>(
|
|
2600
2635
|
self: Effect.Effect<A, E, R>,
|
|
2601
2636
|
f: (defect: unknown) => Effect.Effect<B, E2, R2>
|
|
2602
|
-
): Effect.Effect<A, E | E2, R | R2> =>
|
|
2637
|
+
): Effect.Effect<A, E | E2, R | R2> => tapCauseFilter(self, findDefect as any, (_: any) => f(_)) as any
|
|
2603
2638
|
)
|
|
2604
2639
|
|
|
2605
2640
|
/** @internal */
|
|
@@ -2609,10 +2644,10 @@ export const catchIf: {
|
|
|
2609
2644
|
f: (e: EB) => Effect.Effect<A2, E2, R2>,
|
|
2610
2645
|
orElse?: ((e: Exclude<E, EB>) => Effect.Effect<A3, E3, R3>) | undefined
|
|
2611
2646
|
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
|
|
2612
|
-
<E,
|
|
2613
|
-
|
|
2614
|
-
f: (e:
|
|
2615
|
-
orElse?: ((e:
|
|
2647
|
+
<E, A2, E2, R2, A3 = never, E3 = E, R3 = never>(
|
|
2648
|
+
predicate: Predicate.Predicate<NoInfer<E>>,
|
|
2649
|
+
f: (e: NoInfer<E>) => Effect.Effect<A2, E2, R2>,
|
|
2650
|
+
orElse?: ((e: NoInfer<E>) => Effect.Effect<A3, E3, R3>) | undefined
|
|
2616
2651
|
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
|
|
2617
2652
|
<A, E, R, EB extends E, A2, E2, R2, A3 = never, E3 = Exclude<E, EB>, R3 = never>(
|
|
2618
2653
|
self: Effect.Effect<A, E, R>,
|
|
@@ -2620,28 +2655,59 @@ export const catchIf: {
|
|
|
2620
2655
|
f: (e: EB) => Effect.Effect<A2, E2, R2>,
|
|
2621
2656
|
orElse?: ((e: Exclude<E, EB>) => Effect.Effect<A3, E3, R3>) | undefined
|
|
2622
2657
|
): Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
|
|
2623
|
-
<A, E, R,
|
|
2658
|
+
<A, E, R, A2, E2, R2, A3 = never, E3 = E, R3 = never>(
|
|
2624
2659
|
self: Effect.Effect<A, E, R>,
|
|
2625
|
-
|
|
2626
|
-
f: (e:
|
|
2627
|
-
orElse?: ((e:
|
|
2660
|
+
predicate: Predicate.Predicate<E>,
|
|
2661
|
+
f: (e: E) => Effect.Effect<A2, E2, R2>,
|
|
2662
|
+
orElse?: ((e: E) => Effect.Effect<A3, E3, R3>) | undefined
|
|
2628
2663
|
): Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
|
|
2629
2664
|
} = dual(
|
|
2630
2665
|
(args) => isEffect(args[0]),
|
|
2666
|
+
<A, E, R, A2, E2, R2, A3 = never, E3 = E, R3 = never>(
|
|
2667
|
+
self: Effect.Effect<A, E, R>,
|
|
2668
|
+
predicate: Predicate.Predicate<E>,
|
|
2669
|
+
f: (e: E) => Effect.Effect<A2, E2, R2>,
|
|
2670
|
+
orElse?: ((e: E) => Effect.Effect<A3, E3, R3>) | undefined
|
|
2671
|
+
): Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3> =>
|
|
2672
|
+
catchCause(self, (cause): Effect.Effect<A2 | A3, E2 | E3, R2 | R3> => {
|
|
2673
|
+
const error = findError(cause)
|
|
2674
|
+
if (Result.isFailure(error)) return failCause(error.failure)
|
|
2675
|
+
if (!predicate(error.success)) {
|
|
2676
|
+
return orElse ? internalCall(() => orElse(error.success as any)) : failCause(cause as any as Cause.Cause<E3>)
|
|
2677
|
+
}
|
|
2678
|
+
return internalCall(() => f(error.success as any))
|
|
2679
|
+
})
|
|
2680
|
+
)
|
|
2681
|
+
|
|
2682
|
+
/** @internal */
|
|
2683
|
+
export const catchFilter: {
|
|
2684
|
+
<E, EB, A2, E2, R2, X, A3 = never, E3 = X, R3 = never>(
|
|
2685
|
+
filter: Filter.Filter<NoInfer<E>, EB, X>,
|
|
2686
|
+
f: (e: EB) => Effect.Effect<A2, E2, R2>,
|
|
2687
|
+
orElse?: ((e: X) => Effect.Effect<A3, E3, R3>) | undefined
|
|
2688
|
+
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
|
|
2631
2689
|
<A, E, R, EB, A2, E2, R2, X, A3 = never, E3 = X, R3 = never>(
|
|
2632
2690
|
self: Effect.Effect<A, E, R>,
|
|
2633
|
-
filter: Filter.Filter<NoInfer<E>, EB, X
|
|
2691
|
+
filter: Filter.Filter<NoInfer<E>, EB, X>,
|
|
2692
|
+
f: (e: EB) => Effect.Effect<A2, E2, R2>,
|
|
2693
|
+
orElse?: ((e: X) => Effect.Effect<A3, E3, R3>) | undefined
|
|
2694
|
+
): Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
|
|
2695
|
+
} = dual(
|
|
2696
|
+
(args) => isEffect(args[0]),
|
|
2697
|
+
<A, E, R, EB, A2, E2, R2, X, A3 = never, E3 = X, R3 = never>(
|
|
2698
|
+
self: Effect.Effect<A, E, R>,
|
|
2699
|
+
filter: Filter.Filter<NoInfer<E>, EB, X>,
|
|
2634
2700
|
f: (e: EB) => Effect.Effect<A2, E2, R2>,
|
|
2635
2701
|
orElse?: ((e: X) => Effect.Effect<A3, E3, R3>) | undefined
|
|
2636
2702
|
): Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3> =>
|
|
2637
2703
|
catchCause(self, (cause): Effect.Effect<A2 | A3, E2 | E3, R2 | R3> => {
|
|
2638
2704
|
const error = findError(cause)
|
|
2639
2705
|
if (Result.isFailure(error)) return failCause(error.failure)
|
|
2640
|
-
const result =
|
|
2706
|
+
const result = filter(error.success)
|
|
2641
2707
|
if (Result.isFailure(result)) {
|
|
2642
2708
|
return orElse ? internalCall(() => orElse(result.failure as any)) : failCause(cause as any as Cause.Cause<E3>)
|
|
2643
2709
|
}
|
|
2644
|
-
return internalCall(() => f(result.success
|
|
2710
|
+
return internalCall(() => f(result.success))
|
|
2645
2711
|
})
|
|
2646
2712
|
)
|
|
2647
2713
|
|
|
@@ -2777,7 +2843,7 @@ export const catchTags: {
|
|
|
2777
2843
|
>
|
|
2778
2844
|
} = dual((args) => isEffect(args[0]), (self: Effect.Effect<any, any, any>, cases: Record<string, any>, orElse: any) => {
|
|
2779
2845
|
let keys: Array<string>
|
|
2780
|
-
return
|
|
2846
|
+
return catchFilter(
|
|
2781
2847
|
self,
|
|
2782
2848
|
(e) => {
|
|
2783
2849
|
keys ??= Object.keys(cases)
|
|
@@ -2787,7 +2853,7 @@ export const catchTags: {
|
|
|
2787
2853
|
},
|
|
2788
2854
|
(e: any) => internalCall(() => cases[e["_tag"] as string](e)),
|
|
2789
2855
|
orElse
|
|
2790
|
-
)
|
|
2856
|
+
) as any
|
|
2791
2857
|
})
|
|
2792
2858
|
|
|
2793
2859
|
/** @internal */
|
|
@@ -2805,8 +2871,16 @@ export const catchReason: {
|
|
|
2805
2871
|
>(
|
|
2806
2872
|
errorTag: K,
|
|
2807
2873
|
reasonTag: RK,
|
|
2808
|
-
f: (
|
|
2809
|
-
|
|
2874
|
+
f: (
|
|
2875
|
+
reason: ExtractReason<ExtractTag<NoInfer<E>, K>, RK>,
|
|
2876
|
+
error: NarrowReason<ExtractTag<NoInfer<E>, K>, RK>
|
|
2877
|
+
) => Effect.Effect<A2, E2, R2>,
|
|
2878
|
+
orElse?:
|
|
2879
|
+
| ((
|
|
2880
|
+
reasons: ExcludeReason<ExtractTag<NoInfer<E>, K>, RK>,
|
|
2881
|
+
error: OmitReason<ExtractTag<NoInfer<E>, K>, RK>
|
|
2882
|
+
) => Effect.Effect<A3, E3, R3>)
|
|
2883
|
+
| undefined
|
|
2810
2884
|
): <A, R>(
|
|
2811
2885
|
self: Effect.Effect<A, E, R>
|
|
2812
2886
|
) => Effect.Effect<
|
|
@@ -2830,8 +2904,16 @@ export const catchReason: {
|
|
|
2830
2904
|
self: Effect.Effect<A, E, R>,
|
|
2831
2905
|
errorTag: K,
|
|
2832
2906
|
reasonTag: RK,
|
|
2833
|
-
f: (
|
|
2834
|
-
|
|
2907
|
+
f: (
|
|
2908
|
+
reason: ExtractReason<ExtractTag<E, K>, RK>,
|
|
2909
|
+
error: NarrowReason<ExtractTag<E, K>, RK>
|
|
2910
|
+
) => Effect.Effect<A2, E2, R2>,
|
|
2911
|
+
orElse?:
|
|
2912
|
+
| ((
|
|
2913
|
+
reasons: ExcludeReason<ExtractTag<E, K>, RK>,
|
|
2914
|
+
error: OmitReason<ExtractTag<E, K>, RK>
|
|
2915
|
+
) => Effect.Effect<A3, E3, R3>)
|
|
2916
|
+
| undefined
|
|
2835
2917
|
): Effect.Effect<
|
|
2836
2918
|
A | A2 | Exclude<A3, unassigned>,
|
|
2837
2919
|
(A3 extends unassigned ? E : ExcludeTag<E, K>) | E2 | E3,
|
|
@@ -2855,8 +2937,13 @@ export const catchReason: {
|
|
|
2855
2937
|
self: Effect.Effect<A, E, R>,
|
|
2856
2938
|
errorTag: K,
|
|
2857
2939
|
reasonTag: RK,
|
|
2858
|
-
f: (reason: ExtractReason<ExtractTag<E, K>, RK>) => Effect.Effect<A2, E2, R2>,
|
|
2859
|
-
orElse?:
|
|
2940
|
+
f: (reason: ExtractReason<ExtractTag<E, K>, RK>, error: ExtractTag<E, K>) => Effect.Effect<A2, E2, R2>,
|
|
2941
|
+
orElse?:
|
|
2942
|
+
| ((
|
|
2943
|
+
reasons: ExcludeReason<ExtractTag<E, K>, RK>,
|
|
2944
|
+
error: OmitReason<ExtractTag<E, K>, RK>
|
|
2945
|
+
) => Effect.Effect<A3, E3, R3>)
|
|
2946
|
+
| undefined
|
|
2860
2947
|
): Effect.Effect<
|
|
2861
2948
|
A | A2 | Exclude<A3, unassigned>,
|
|
2862
2949
|
(A3 extends unassigned ? E : ExcludeTag<E, K>) | E2 | E3,
|
|
@@ -2867,8 +2954,8 @@ export const catchReason: {
|
|
|
2867
2954
|
((e: any) => isTagged(e, errorTag) && hasProperty(e, "reason")) as any,
|
|
2868
2955
|
(e: any): Effect.Effect<A2 | A3, E | E2 | E3, R2 | R3> => {
|
|
2869
2956
|
const reason = e.reason as any
|
|
2870
|
-
if (isTagged(reason, reasonTag)) return f(reason as any)
|
|
2871
|
-
return orElse ? internalCall(() => orElse(reason)) : fail(e)
|
|
2957
|
+
if (isTagged(reason, reasonTag)) return f(reason as any, e)
|
|
2958
|
+
return orElse ? internalCall(() => orElse(reason, e)) : fail(e)
|
|
2872
2959
|
}
|
|
2873
2960
|
) as any
|
|
2874
2961
|
)
|
|
@@ -2880,7 +2967,8 @@ export const catchReasons: {
|
|
|
2880
2967
|
E,
|
|
2881
2968
|
Cases extends {
|
|
2882
2969
|
[RK in ReasonTags<ExtractTag<NoInfer<E>, K>>]+?: (
|
|
2883
|
-
reason: ExtractReason<ExtractTag<NoInfer<E>, K>, RK
|
|
2970
|
+
reason: ExtractReason<ExtractTag<NoInfer<E>, K>, RK>,
|
|
2971
|
+
error: NarrowReason<ExtractTag<NoInfer<E>, K>, RK>
|
|
2884
2972
|
) => Effect.Effect<any, any, any>
|
|
2885
2973
|
},
|
|
2886
2974
|
A2 = unassigned,
|
|
@@ -2891,7 +2979,8 @@ export const catchReasons: {
|
|
|
2891
2979
|
cases: Cases,
|
|
2892
2980
|
orElse?:
|
|
2893
2981
|
| ((
|
|
2894
|
-
reason: ExcludeReason<ExtractTag<NoInfer<E>, K>, Extract<keyof Cases, string
|
|
2982
|
+
reason: ExcludeReason<ExtractTag<NoInfer<E>, K>, Extract<keyof Cases, string>>,
|
|
2983
|
+
error: OmitReason<ExtractTag<NoInfer<E>, K>, Extract<keyof Cases, string>>
|
|
2895
2984
|
) => Effect.Effect<A2, E2, R2>)
|
|
2896
2985
|
| undefined
|
|
2897
2986
|
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<
|
|
@@ -2918,7 +3007,8 @@ export const catchReasons: {
|
|
|
2918
3007
|
K extends Tags<E>,
|
|
2919
3008
|
Cases extends {
|
|
2920
3009
|
[RK in ReasonTags<ExtractTag<E, K>>]+?: (
|
|
2921
|
-
reason: ExtractReason<ExtractTag<E, K>, RK
|
|
3010
|
+
reason: ExtractReason<ExtractTag<E, K>, RK>,
|
|
3011
|
+
error: NarrowReason<ExtractTag<E, K>, RK>
|
|
2922
3012
|
) => Effect.Effect<any, any, any>
|
|
2923
3013
|
},
|
|
2924
3014
|
A2 = unassigned,
|
|
@@ -2930,7 +3020,8 @@ export const catchReasons: {
|
|
|
2930
3020
|
cases: Cases,
|
|
2931
3021
|
orElse?:
|
|
2932
3022
|
| ((
|
|
2933
|
-
reason: ExcludeReason<ExtractTag<NoInfer<E>, K>, Extract<keyof Cases, string
|
|
3023
|
+
reason: ExcludeReason<ExtractTag<NoInfer<E>, K>, Extract<keyof Cases, string>>,
|
|
3024
|
+
error: OmitReason<ExtractTag<NoInfer<E>, K>, Extract<keyof Cases, string>>
|
|
2934
3025
|
) => Effect.Effect<A2, E2, R2>)
|
|
2935
3026
|
| undefined
|
|
2936
3027
|
): Effect.Effect<
|
|
@@ -2963,9 +3054,9 @@ export const catchReasons: {
|
|
|
2963
3054
|
const reason = e.reason
|
|
2964
3055
|
keys ??= Object.keys(cases)
|
|
2965
3056
|
if (keys.includes(reason._tag)) {
|
|
2966
|
-
return internalCall(() => (cases as any)[reason._tag](reason))
|
|
3057
|
+
return internalCall(() => (cases as any)[reason._tag](reason, e))
|
|
2967
3058
|
}
|
|
2968
|
-
return orElse ? internalCall(() => orElse(reason)) : fail(e)
|
|
3059
|
+
return orElse ? internalCall(() => orElse(reason, e)) : fail(e)
|
|
2969
3060
|
}
|
|
2970
3061
|
)
|
|
2971
3062
|
})
|
|
@@ -2998,7 +3089,7 @@ export const unwrapReason: {
|
|
|
2998
3089
|
self: Effect.Effect<A, E, R>,
|
|
2999
3090
|
errorTag: K
|
|
3000
3091
|
): Effect.Effect<A, ExcludeTag<E, K> | ReasonOf<ExtractTag<E, K>>, R> =>
|
|
3001
|
-
|
|
3092
|
+
catchFilter(
|
|
3002
3093
|
self,
|
|
3003
3094
|
(e: any) => {
|
|
3004
3095
|
if (isTagged(e, errorTag) && hasProperty(e, "reason")) {
|
|
@@ -3007,7 +3098,7 @@ export const unwrapReason: {
|
|
|
3007
3098
|
return Result.fail(e)
|
|
3008
3099
|
},
|
|
3009
3100
|
fail as any
|
|
3010
|
-
)
|
|
3101
|
+
) as any
|
|
3011
3102
|
)
|
|
3012
3103
|
|
|
3013
3104
|
/** @internal */
|
|
@@ -3091,14 +3182,17 @@ export const eventually = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect
|
|
|
3091
3182
|
/** @internal */
|
|
3092
3183
|
export const ignore: <
|
|
3093
3184
|
Arg extends Effect.Effect<any, any, any> | {
|
|
3094
|
-
readonly log?: boolean | LogLevel.
|
|
3185
|
+
readonly log?: boolean | LogLevel.Severity | undefined
|
|
3186
|
+
readonly message?: string | undefined
|
|
3095
3187
|
} | undefined = {
|
|
3096
|
-
readonly log?: boolean | LogLevel.
|
|
3188
|
+
readonly log?: boolean | LogLevel.Severity | undefined
|
|
3189
|
+
readonly message?: string | undefined
|
|
3097
3190
|
}
|
|
3098
3191
|
>(
|
|
3099
3192
|
effectOrOptions: Arg,
|
|
3100
3193
|
options?: {
|
|
3101
|
-
readonly log?: boolean | LogLevel.
|
|
3194
|
+
readonly log?: boolean | LogLevel.Severity | undefined
|
|
3195
|
+
readonly message?: string | undefined
|
|
3102
3196
|
} | undefined
|
|
3103
3197
|
) => [Arg] extends [Effect.Effect<infer _A, infer _E, infer _R>] ? Effect.Effect<void, never, _R>
|
|
3104
3198
|
: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<void, never, R> = dual(
|
|
@@ -3106,7 +3200,8 @@ export const ignore: <
|
|
|
3106
3200
|
<A, E, R>(
|
|
3107
3201
|
self: Effect.Effect<A, E, R>,
|
|
3108
3202
|
options?: {
|
|
3109
|
-
readonly log?: boolean | LogLevel.
|
|
3203
|
+
readonly log?: boolean | LogLevel.Severity | undefined
|
|
3204
|
+
readonly message?: string | undefined
|
|
3110
3205
|
} | undefined
|
|
3111
3206
|
): Effect.Effect<void, never, R> => {
|
|
3112
3207
|
if (!options?.log) {
|
|
@@ -3116,7 +3211,11 @@ export const ignore: <
|
|
|
3116
3211
|
return matchCauseEffect(self, {
|
|
3117
3212
|
onFailure(cause) {
|
|
3118
3213
|
const failure = findFail(cause)
|
|
3119
|
-
return Result.isFailure(failure)
|
|
3214
|
+
return Result.isFailure(failure)
|
|
3215
|
+
? failCause(failure.failure)
|
|
3216
|
+
: options.message === undefined
|
|
3217
|
+
? logEffect(cause)
|
|
3218
|
+
: logEffect(options.message, cause)
|
|
3120
3219
|
},
|
|
3121
3220
|
onSuccess: (_) => void_
|
|
3122
3221
|
})
|
|
@@ -3126,14 +3225,17 @@ export const ignore: <
|
|
|
3126
3225
|
/** @internal */
|
|
3127
3226
|
export const ignoreCause: <
|
|
3128
3227
|
Arg extends Effect.Effect<any, any, any> | {
|
|
3129
|
-
readonly log?: boolean | LogLevel.
|
|
3228
|
+
readonly log?: boolean | LogLevel.Severity | undefined
|
|
3229
|
+
readonly message?: string | undefined
|
|
3130
3230
|
} | undefined = {
|
|
3131
|
-
readonly log?: boolean | LogLevel.
|
|
3231
|
+
readonly log?: boolean | LogLevel.Severity | undefined
|
|
3232
|
+
readonly message?: string | undefined
|
|
3132
3233
|
}
|
|
3133
3234
|
>(
|
|
3134
3235
|
effectOrOptions: Arg,
|
|
3135
3236
|
options?: {
|
|
3136
|
-
readonly log?: boolean | LogLevel.
|
|
3237
|
+
readonly log?: boolean | LogLevel.Severity | undefined
|
|
3238
|
+
readonly message?: string | undefined
|
|
3137
3239
|
} | undefined
|
|
3138
3240
|
) => [Arg] extends [Effect.Effect<infer _A, infer _E, infer _R>] ? Effect.Effect<void, never, _R>
|
|
3139
3241
|
: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<void, never, R> = dual(
|
|
@@ -3141,14 +3243,18 @@ export const ignoreCause: <
|
|
|
3141
3243
|
<A, E, R>(
|
|
3142
3244
|
self: Effect.Effect<A, E, R>,
|
|
3143
3245
|
options?: {
|
|
3144
|
-
readonly log?: boolean | LogLevel.
|
|
3246
|
+
readonly log?: boolean | LogLevel.Severity | undefined
|
|
3247
|
+
readonly message?: string | undefined
|
|
3145
3248
|
} | undefined
|
|
3146
3249
|
): Effect.Effect<void, never, R> => {
|
|
3147
3250
|
if (!options?.log) {
|
|
3148
3251
|
return matchCauseEffect(self, { onFailure: (_) => void_, onSuccess: (_) => void_ })
|
|
3149
3252
|
}
|
|
3150
3253
|
const logEffect = logWithLevel(options.log === true ? undefined : options.log)
|
|
3151
|
-
return matchCauseEffect(self, {
|
|
3254
|
+
return matchCauseEffect(self, {
|
|
3255
|
+
onFailure: (cause) => options.message === undefined ? logEffect(cause) : logEffect(options.message, cause),
|
|
3256
|
+
onSuccess: (_) => void_
|
|
3257
|
+
})
|
|
3152
3258
|
}
|
|
3153
3259
|
)
|
|
3154
3260
|
|
|
@@ -3403,24 +3509,24 @@ export const isSuccess: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect
|
|
|
3403
3509
|
/** @internal */
|
|
3404
3510
|
export const delay: {
|
|
3405
3511
|
(
|
|
3406
|
-
duration: Duration.
|
|
3512
|
+
duration: Duration.Input
|
|
3407
3513
|
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
3408
3514
|
<A, E, R>(
|
|
3409
3515
|
self: Effect.Effect<A, E, R>,
|
|
3410
|
-
duration: Duration.
|
|
3516
|
+
duration: Duration.Input
|
|
3411
3517
|
): Effect.Effect<A, E, R>
|
|
3412
3518
|
} = dual(
|
|
3413
3519
|
2,
|
|
3414
3520
|
<A, E, R>(
|
|
3415
3521
|
self: Effect.Effect<A, E, R>,
|
|
3416
|
-
duration: Duration.
|
|
3522
|
+
duration: Duration.Input
|
|
3417
3523
|
): Effect.Effect<A, E, R> => andThen(sleep(duration), self)
|
|
3418
3524
|
)
|
|
3419
3525
|
|
|
3420
3526
|
/** @internal */
|
|
3421
3527
|
export const timeoutOrElse: {
|
|
3422
3528
|
<A2, E2, R2>(options: {
|
|
3423
|
-
readonly duration: Duration.
|
|
3529
|
+
readonly duration: Duration.Input
|
|
3424
3530
|
readonly onTimeout: LazyArg<Effect.Effect<A2, E2, R2>>
|
|
3425
3531
|
}): <A, E, R>(
|
|
3426
3532
|
self: Effect.Effect<A, E, R>
|
|
@@ -3428,7 +3534,7 @@ export const timeoutOrElse: {
|
|
|
3428
3534
|
<A, E, R, A2, E2, R2>(
|
|
3429
3535
|
self: Effect.Effect<A, E, R>,
|
|
3430
3536
|
options: {
|
|
3431
|
-
readonly duration: Duration.
|
|
3537
|
+
readonly duration: Duration.Input
|
|
3432
3538
|
readonly onTimeout: LazyArg<Effect.Effect<A2, E2, R2>>
|
|
3433
3539
|
}
|
|
3434
3540
|
): Effect.Effect<A | A2, E | E2, R | R2>
|
|
@@ -3437,7 +3543,7 @@ export const timeoutOrElse: {
|
|
|
3437
3543
|
<A, E, R, A2, E2, R2>(
|
|
3438
3544
|
self: Effect.Effect<A, E, R>,
|
|
3439
3545
|
options: {
|
|
3440
|
-
readonly duration: Duration.
|
|
3546
|
+
readonly duration: Duration.Input
|
|
3441
3547
|
readonly onTimeout: LazyArg<Effect.Effect<A2, E2, R2>>
|
|
3442
3548
|
}
|
|
3443
3549
|
): Effect.Effect<A | A2, E | E2, R | R2> =>
|
|
@@ -3450,19 +3556,19 @@ export const timeoutOrElse: {
|
|
|
3450
3556
|
/** @internal */
|
|
3451
3557
|
export const timeout: {
|
|
3452
3558
|
(
|
|
3453
|
-
duration: Duration.
|
|
3559
|
+
duration: Duration.Input
|
|
3454
3560
|
): <A, E, R>(
|
|
3455
3561
|
self: Effect.Effect<A, E, R>
|
|
3456
3562
|
) => Effect.Effect<A, E | Cause.TimeoutError, R>
|
|
3457
3563
|
<A, E, R>(
|
|
3458
3564
|
self: Effect.Effect<A, E, R>,
|
|
3459
|
-
duration: Duration.
|
|
3565
|
+
duration: Duration.Input
|
|
3460
3566
|
): Effect.Effect<A, E | Cause.TimeoutError, R>
|
|
3461
3567
|
} = dual(
|
|
3462
3568
|
2,
|
|
3463
3569
|
<A, E, R>(
|
|
3464
3570
|
self: Effect.Effect<A, E, R>,
|
|
3465
|
-
duration: Duration.
|
|
3571
|
+
duration: Duration.Input
|
|
3466
3572
|
): Effect.Effect<A, E | TimeoutError, R> =>
|
|
3467
3573
|
timeoutOrElse(self, {
|
|
3468
3574
|
duration,
|
|
@@ -3473,19 +3579,19 @@ export const timeout: {
|
|
|
3473
3579
|
/** @internal */
|
|
3474
3580
|
export const timeoutOption: {
|
|
3475
3581
|
(
|
|
3476
|
-
duration: Duration.
|
|
3582
|
+
duration: Duration.Input
|
|
3477
3583
|
): <A, E, R>(
|
|
3478
3584
|
self: Effect.Effect<A, E, R>
|
|
3479
3585
|
) => Effect.Effect<Option.Option<A>, E, R>
|
|
3480
3586
|
<A, E, R>(
|
|
3481
3587
|
self: Effect.Effect<A, E, R>,
|
|
3482
|
-
duration: Duration.
|
|
3588
|
+
duration: Duration.Input
|
|
3483
3589
|
): Effect.Effect<Option.Option<A>, E, R>
|
|
3484
3590
|
} = dual(
|
|
3485
3591
|
2,
|
|
3486
3592
|
<A, E, R>(
|
|
3487
3593
|
self: Effect.Effect<A, E, R>,
|
|
3488
|
-
duration: Duration.
|
|
3594
|
+
duration: Duration.Input
|
|
3489
3595
|
): Effect.Effect<Option.Option<A>, E, R> =>
|
|
3490
3596
|
raceFirst(
|
|
3491
3597
|
asSome(self),
|
|
@@ -3646,11 +3752,11 @@ export const provideScope: {
|
|
|
3646
3752
|
/** @internal */
|
|
3647
3753
|
export const scoped = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, Exclude<R, Scope.Scope>> =>
|
|
3648
3754
|
withFiber((fiber) => {
|
|
3649
|
-
const prev =
|
|
3755
|
+
const prev = fiber.services
|
|
3650
3756
|
const scope = scopeMakeUnsafe()
|
|
3651
3757
|
fiber.setServices(ServiceMap.add(fiber.services, scopeTag, scope))
|
|
3652
3758
|
return onExitPrimitive(self, (exit) => {
|
|
3653
|
-
fiber.setServices(
|
|
3759
|
+
fiber.setServices(prev)
|
|
3654
3760
|
return scopeCloseUnsafe(scope, exit)
|
|
3655
3761
|
})
|
|
3656
3762
|
}) as any
|
|
@@ -3758,34 +3864,51 @@ export const ensuring: {
|
|
|
3758
3864
|
|
|
3759
3865
|
/** @internal */
|
|
3760
3866
|
export const onExitIf: {
|
|
3761
|
-
<A, E, XE, XR
|
|
3762
|
-
|
|
3763
|
-
f: (
|
|
3764
|
-
pass: Filter.Pass<Exit.Exit<NoInfer<A>, NoInfer<E>>, Result>,
|
|
3765
|
-
exit: Exit.Exit<NoInfer<A>, NoInfer<E>>
|
|
3766
|
-
) => Effect.Effect<void, XE, XR>
|
|
3867
|
+
<A, E, XE, XR>(
|
|
3868
|
+
predicate: Predicate.Predicate<Exit.Exit<NoInfer<A>, NoInfer<E>>>,
|
|
3869
|
+
f: (exit: Exit.Exit<NoInfer<A>, NoInfer<E>>) => Effect.Effect<void, XE, XR>
|
|
3767
3870
|
): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | XE, R | XR>
|
|
3768
|
-
<A, E, R, XE, XR
|
|
3871
|
+
<A, E, R, XE, XR>(
|
|
3769
3872
|
self: Effect.Effect<A, E, R>,
|
|
3770
|
-
|
|
3771
|
-
f: (
|
|
3772
|
-
pass: Filter.Pass<Exit.Exit<NoInfer<A>, NoInfer<E>>, Result>,
|
|
3773
|
-
exit: Exit.Exit<NoInfer<A>, NoInfer<E>>
|
|
3774
|
-
) => Effect.Effect<void, XE, XR>
|
|
3873
|
+
predicate: Predicate.Predicate<Exit.Exit<NoInfer<A>, NoInfer<E>>>,
|
|
3874
|
+
f: (exit: Exit.Exit<NoInfer<A>, NoInfer<E>>) => Effect.Effect<void, XE, XR>
|
|
3775
3875
|
): Effect.Effect<A, E | XE, R | XR>
|
|
3776
3876
|
} = dual(
|
|
3777
3877
|
3,
|
|
3778
|
-
<A, E, R, XE, XR
|
|
3878
|
+
<A, E, R, XE, XR>(
|
|
3779
3879
|
self: Effect.Effect<A, E, R>,
|
|
3780
|
-
|
|
3781
|
-
f: (
|
|
3782
|
-
|
|
3783
|
-
|
|
3784
|
-
|
|
3880
|
+
predicate: Predicate.Predicate<Exit.Exit<NoInfer<A>, NoInfer<E>>>,
|
|
3881
|
+
f: (exit: Exit.Exit<NoInfer<A>, NoInfer<E>>) => Effect.Effect<void, XE, XR>
|
|
3882
|
+
): Effect.Effect<A, E | XE, R | XR> =>
|
|
3883
|
+
onExit(self, (exit) => {
|
|
3884
|
+
if (!predicate(exit)) {
|
|
3885
|
+
return void_
|
|
3886
|
+
}
|
|
3887
|
+
return f(exit)
|
|
3888
|
+
})
|
|
3889
|
+
)
|
|
3890
|
+
|
|
3891
|
+
/** @internal */
|
|
3892
|
+
export const onExitFilter: {
|
|
3893
|
+
<A, E, XE, XR, B, X>(
|
|
3894
|
+
filter: Filter.Filter<Exit.Exit<NoInfer<A>, NoInfer<E>>, B, X>,
|
|
3895
|
+
f: (b: B, exit: Exit.Exit<NoInfer<A>, NoInfer<E>>) => Effect.Effect<void, XE, XR>
|
|
3896
|
+
): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | XE, R | XR>
|
|
3897
|
+
<A, E, R, XE, XR, B, X>(
|
|
3898
|
+
self: Effect.Effect<A, E, R>,
|
|
3899
|
+
filter: Filter.Filter<Exit.Exit<NoInfer<A>, NoInfer<E>>, B, X>,
|
|
3900
|
+
f: (b: B, exit: Exit.Exit<NoInfer<A>, NoInfer<E>>) => Effect.Effect<void, XE, XR>
|
|
3901
|
+
): Effect.Effect<A, E | XE, R | XR>
|
|
3902
|
+
} = dual(
|
|
3903
|
+
3,
|
|
3904
|
+
<A, E, R, XE, XR, B, X>(
|
|
3905
|
+
self: Effect.Effect<A, E, R>,
|
|
3906
|
+
filter: Filter.Filter<Exit.Exit<NoInfer<A>, NoInfer<E>>, B, X>,
|
|
3907
|
+
f: (b: B, exit: Exit.Exit<NoInfer<A>, NoInfer<E>>) => Effect.Effect<void, XE, XR>
|
|
3785
3908
|
): Effect.Effect<A, E | XE, R | XR> =>
|
|
3786
3909
|
onExit(self, (exit) => {
|
|
3787
|
-
const
|
|
3788
|
-
return Result.isFailure(
|
|
3910
|
+
const b = filter(exit)
|
|
3911
|
+
return Result.isFailure(b) ? void_ : f(b.success, exit)
|
|
3789
3912
|
})
|
|
3790
3913
|
)
|
|
3791
3914
|
|
|
@@ -3803,37 +3926,66 @@ export const onError: {
|
|
|
3803
3926
|
<A, E, R, XE, XR>(
|
|
3804
3927
|
self: Effect.Effect<A, E, R>,
|
|
3805
3928
|
f: (cause: Cause.Cause<NoInfer<E>>) => Effect.Effect<void, XE, XR>
|
|
3806
|
-
): Effect.Effect<A, E | XE, R | XR> =>
|
|
3929
|
+
): Effect.Effect<A, E | XE, R | XR> => onExitFilter(self, exitFilterCause as any, f as any) as any
|
|
3807
3930
|
)
|
|
3808
3931
|
|
|
3809
3932
|
/** @internal */
|
|
3810
3933
|
export const onErrorIf: {
|
|
3811
|
-
<E,
|
|
3812
|
-
|
|
3813
|
-
f: (
|
|
3934
|
+
<E, XE, XR>(
|
|
3935
|
+
predicate: Predicate.Predicate<Cause.Cause<E>>,
|
|
3936
|
+
f: (cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
|
|
3814
3937
|
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | XE, R | XR>
|
|
3815
|
-
<A, E, R, XE, XR
|
|
3938
|
+
<A, E, R, XE, XR>(
|
|
3816
3939
|
self: Effect.Effect<A, E, R>,
|
|
3817
|
-
|
|
3818
|
-
f: (
|
|
3940
|
+
predicate: Predicate.Predicate<Cause.Cause<E>>,
|
|
3941
|
+
f: (cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
|
|
3819
3942
|
): Effect.Effect<A, E | XE, R | XR>
|
|
3820
3943
|
} = dual(
|
|
3821
3944
|
3,
|
|
3822
|
-
<A, E, R, XE, XR
|
|
3945
|
+
<A, E, R, XE, XR>(
|
|
3823
3946
|
self: Effect.Effect<A, E, R>,
|
|
3824
|
-
|
|
3825
|
-
f: (
|
|
3947
|
+
predicate: Predicate.Predicate<Cause.Cause<E>>,
|
|
3948
|
+
f: (cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
|
|
3826
3949
|
): Effect.Effect<A, E | XE, R | XR> =>
|
|
3827
3950
|
onExitIf(
|
|
3828
3951
|
self,
|
|
3829
|
-
(
|
|
3830
|
-
if (exit._tag !== "Failure")
|
|
3831
|
-
|
|
3832
|
-
|
|
3833
|
-
|
|
3952
|
+
(exit): exit is Exit.Failure<A, E> => {
|
|
3953
|
+
if (exit._tag !== "Failure") {
|
|
3954
|
+
return false
|
|
3955
|
+
}
|
|
3956
|
+
return predicate(exit.cause)
|
|
3957
|
+
},
|
|
3958
|
+
(exit) => f((exit as Exit.Failure<A, E>).cause)
|
|
3834
3959
|
) as any
|
|
3835
3960
|
)
|
|
3836
3961
|
|
|
3962
|
+
/** @internal */
|
|
3963
|
+
export const onErrorFilter: {
|
|
3964
|
+
<A, E, EB, X, XE, XR>(
|
|
3965
|
+
filter: Filter.Filter<Cause.Cause<E>, EB, X>,
|
|
3966
|
+
f: (failure: EB, cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
|
|
3967
|
+
): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | XE, R | XR>
|
|
3968
|
+
<A, E, R, EB, X, XE, XR>(
|
|
3969
|
+
self: Effect.Effect<A, E, R>,
|
|
3970
|
+
filter: Filter.Filter<Cause.Cause<E>, EB, X>,
|
|
3971
|
+
f: (failure: EB, cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
|
|
3972
|
+
): Effect.Effect<A, E | XE, R | XR>
|
|
3973
|
+
} = dual(
|
|
3974
|
+
3,
|
|
3975
|
+
<A, E, R, EB, X, XE, XR>(
|
|
3976
|
+
self: Effect.Effect<A, E, R>,
|
|
3977
|
+
filter: Filter.Filter<Cause.Cause<E>, EB, X>,
|
|
3978
|
+
f: (failure: EB, cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
|
|
3979
|
+
): Effect.Effect<A, E | XE, R | XR> =>
|
|
3980
|
+
onExit(self, (exit) => {
|
|
3981
|
+
if (exit._tag !== "Failure") {
|
|
3982
|
+
return void_
|
|
3983
|
+
}
|
|
3984
|
+
const result = filter(exit.cause)
|
|
3985
|
+
return Result.isFailure(result) ? void_ : f(result.success, exit.cause)
|
|
3986
|
+
})
|
|
3987
|
+
)
|
|
3988
|
+
|
|
3837
3989
|
/** @internal */
|
|
3838
3990
|
export const onInterrupt: {
|
|
3839
3991
|
<XE, XR>(
|
|
@@ -3848,8 +4000,7 @@ export const onInterrupt: {
|
|
|
3848
4000
|
<A, E, R, XE, XR>(
|
|
3849
4001
|
self: Effect.Effect<A, E, R>,
|
|
3850
4002
|
finalizer: (interruptors: ReadonlySet<number>) => Effect.Effect<void, XE, XR>
|
|
3851
|
-
): Effect.Effect<A, E | XE, R | XR> =>
|
|
3852
|
-
onErrorIf<E, Result.Result<Set<number>, Cause.Cause<E>>, XE, XR>(causeFilterInterruptors, finalizer)(self)
|
|
4003
|
+
): Effect.Effect<A, E | XE, R | XR> => onErrorFilter(causeFilterInterruptors as any, finalizer)(self) as any
|
|
3853
4004
|
)
|
|
3854
4005
|
|
|
3855
4006
|
/** @internal */
|
|
@@ -3873,19 +4024,19 @@ export const acquireUseRelease = <Resource, E, R, A, E2, R2, E3, R3>(
|
|
|
3873
4024
|
|
|
3874
4025
|
/** @internal */
|
|
3875
4026
|
export const cachedInvalidateWithTTL: {
|
|
3876
|
-
(timeToLive: Duration.
|
|
4027
|
+
(timeToLive: Duration.Input): <A, E, R>(
|
|
3877
4028
|
self: Effect.Effect<A, E, R>
|
|
3878
4029
|
) => Effect.Effect<[Effect.Effect<A, E, R>, Effect.Effect<void>]>
|
|
3879
4030
|
<A, E, R>(
|
|
3880
4031
|
self: Effect.Effect<A, E, R>,
|
|
3881
|
-
timeToLive: Duration.
|
|
4032
|
+
timeToLive: Duration.Input
|
|
3882
4033
|
): Effect.Effect<[Effect.Effect<A, E, R>, Effect.Effect<void>]>
|
|
3883
4034
|
} = dual(2, <A, E, R>(
|
|
3884
4035
|
self: Effect.Effect<A, E, R>,
|
|
3885
|
-
ttl: Duration.
|
|
4036
|
+
ttl: Duration.Input
|
|
3886
4037
|
): Effect.Effect<[Effect.Effect<A, E, R>, Effect.Effect<void>]> =>
|
|
3887
4038
|
sync(() => {
|
|
3888
|
-
const ttlMillis = Duration.toMillis(Duration.
|
|
4039
|
+
const ttlMillis = Duration.toMillis(Duration.fromInputUnsafe(ttl))
|
|
3889
4040
|
const isFinite = Number.isFinite(ttlMillis)
|
|
3890
4041
|
const latch = makeLatchUnsafe(false)
|
|
3891
4042
|
let expiresAt = 0
|
|
@@ -3918,17 +4069,17 @@ export const cachedInvalidateWithTTL: {
|
|
|
3918
4069
|
/** @internal */
|
|
3919
4070
|
export const cachedWithTTL: {
|
|
3920
4071
|
(
|
|
3921
|
-
timeToLive: Duration.
|
|
4072
|
+
timeToLive: Duration.Input
|
|
3922
4073
|
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Effect.Effect<A, E, R>>
|
|
3923
4074
|
<A, E, R>(
|
|
3924
4075
|
self: Effect.Effect<A, E, R>,
|
|
3925
|
-
timeToLive: Duration.
|
|
4076
|
+
timeToLive: Duration.Input
|
|
3926
4077
|
): Effect.Effect<Effect.Effect<A, E, R>>
|
|
3927
4078
|
} = dual(
|
|
3928
4079
|
2,
|
|
3929
4080
|
<A, E, R>(
|
|
3930
4081
|
self: Effect.Effect<A, E, R>,
|
|
3931
|
-
timeToLive: Duration.
|
|
4082
|
+
timeToLive: Duration.Input
|
|
3932
4083
|
): Effect.Effect<Effect.Effect<A, E, R>> => map(cachedInvalidateWithTTL(self, timeToLive), (tuple) => tuple[0])
|
|
3933
4084
|
)
|
|
3934
4085
|
|
|
@@ -4074,10 +4225,147 @@ export const partition: {
|
|
|
4074
4225
|
): Effect.Effect<[excluded: Array<E>, satisfying: Array<B>], never, R> =>
|
|
4075
4226
|
map(
|
|
4076
4227
|
forEach(elements, (a, i) => result(f(a, i)), options),
|
|
4077
|
-
(results) => Arr.
|
|
4228
|
+
(results) => Arr.partition(results, identity)
|
|
4078
4229
|
)
|
|
4079
4230
|
)
|
|
4080
4231
|
|
|
4232
|
+
/** @internal */
|
|
4233
|
+
export const validate: {
|
|
4234
|
+
<A, B, E, R>(
|
|
4235
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
4236
|
+
options?: {
|
|
4237
|
+
readonly concurrency?: Concurrency | undefined
|
|
4238
|
+
readonly discard?: false | undefined
|
|
4239
|
+
} | undefined
|
|
4240
|
+
): (elements: Iterable<A>) => Effect.Effect<Array<B>, Arr.NonEmptyArray<E>, R>
|
|
4241
|
+
<A, B, E, R>(
|
|
4242
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
4243
|
+
options: {
|
|
4244
|
+
readonly concurrency?: Concurrency | undefined
|
|
4245
|
+
readonly discard: true
|
|
4246
|
+
}
|
|
4247
|
+
): (elements: Iterable<A>) => Effect.Effect<void, Arr.NonEmptyArray<E>, R>
|
|
4248
|
+
<A, B, E, R>(
|
|
4249
|
+
elements: Iterable<A>,
|
|
4250
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
4251
|
+
options?: {
|
|
4252
|
+
readonly concurrency?: Concurrency | undefined
|
|
4253
|
+
readonly discard?: false | undefined
|
|
4254
|
+
} | undefined
|
|
4255
|
+
): Effect.Effect<Array<B>, Arr.NonEmptyArray<E>, R>
|
|
4256
|
+
<A, B, E, R>(
|
|
4257
|
+
elements: Iterable<A>,
|
|
4258
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
4259
|
+
options: {
|
|
4260
|
+
readonly concurrency?: Concurrency | undefined
|
|
4261
|
+
readonly discard: true
|
|
4262
|
+
}
|
|
4263
|
+
): Effect.Effect<void, Arr.NonEmptyArray<E>, R>
|
|
4264
|
+
} = dual(
|
|
4265
|
+
(args) => isIterable(args[0]) && !isEffect(args[0]),
|
|
4266
|
+
<A, B, E, R>(
|
|
4267
|
+
elements: Iterable<A>,
|
|
4268
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
4269
|
+
options?: {
|
|
4270
|
+
readonly concurrency?: Concurrency | undefined
|
|
4271
|
+
readonly discard?: boolean | undefined
|
|
4272
|
+
} | undefined
|
|
4273
|
+
): Effect.Effect<Array<B> | void, Arr.NonEmptyArray<E>, R> =>
|
|
4274
|
+
flatMap(
|
|
4275
|
+
partition(elements, f, { concurrency: options?.concurrency }),
|
|
4276
|
+
([excluded, satisfying]) => {
|
|
4277
|
+
if (Arr.isArrayNonEmpty(excluded)) {
|
|
4278
|
+
return fail(excluded)
|
|
4279
|
+
}
|
|
4280
|
+
return options?.discard ? void_ : succeed(satisfying)
|
|
4281
|
+
}
|
|
4282
|
+
)
|
|
4283
|
+
)
|
|
4284
|
+
|
|
4285
|
+
/** @internal */
|
|
4286
|
+
export const findFirst: {
|
|
4287
|
+
<A, E, R>(
|
|
4288
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
4289
|
+
): (elements: Iterable<A>) => Effect.Effect<Option.Option<A>, E, R>
|
|
4290
|
+
<A, E, R>(
|
|
4291
|
+
elements: Iterable<A>,
|
|
4292
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
4293
|
+
): Effect.Effect<Option.Option<A>, E, R>
|
|
4294
|
+
} = dual(
|
|
4295
|
+
(args) => isIterable(args[0]) && !isEffect(args[0]),
|
|
4296
|
+
<A, E, R>(
|
|
4297
|
+
elements: Iterable<A>,
|
|
4298
|
+
predicate: (a: A, i: number) => Effect.Effect<boolean, E, R>
|
|
4299
|
+
): Effect.Effect<Option.Option<A>, E, R> =>
|
|
4300
|
+
suspend(() => {
|
|
4301
|
+
const iterator = elements[Symbol.iterator]()
|
|
4302
|
+
const next = iterator.next()
|
|
4303
|
+
if (!next.done) {
|
|
4304
|
+
return findFirstLoop(iterator, 0, predicate, next.value)
|
|
4305
|
+
}
|
|
4306
|
+
return succeed(Option.none())
|
|
4307
|
+
})
|
|
4308
|
+
)
|
|
4309
|
+
|
|
4310
|
+
const findFirstLoop = <A, E, R>(
|
|
4311
|
+
iterator: Iterator<A>,
|
|
4312
|
+
index: number,
|
|
4313
|
+
predicate: (a: A, i: number) => Effect.Effect<boolean, E, R>,
|
|
4314
|
+
value: A
|
|
4315
|
+
): Effect.Effect<Option.Option<A>, E, R> =>
|
|
4316
|
+
flatMap(predicate(value, index), (keep) => {
|
|
4317
|
+
if (keep) {
|
|
4318
|
+
return succeed(Option.some(value))
|
|
4319
|
+
}
|
|
4320
|
+
const next = iterator.next()
|
|
4321
|
+
if (!next.done) {
|
|
4322
|
+
return findFirstLoop(iterator, index + 1, predicate, next.value)
|
|
4323
|
+
}
|
|
4324
|
+
return succeed(Option.none())
|
|
4325
|
+
})
|
|
4326
|
+
|
|
4327
|
+
/** @internal */
|
|
4328
|
+
export const findFirstFilter: {
|
|
4329
|
+
<A, B, X, E, R>(
|
|
4330
|
+
filter: (input: NoInfer<A>, i: number) => Effect.Effect<Result.Result<B, X>, E, R>
|
|
4331
|
+
): (elements: Iterable<A>) => Effect.Effect<Option.Option<B>, E, R>
|
|
4332
|
+
<A, B, X, E, R>(
|
|
4333
|
+
elements: Iterable<A>,
|
|
4334
|
+
filter: (input: NoInfer<A>, i: number) => Effect.Effect<Result.Result<B, X>, E, R>
|
|
4335
|
+
): Effect.Effect<Option.Option<B>, E, R>
|
|
4336
|
+
} = dual(
|
|
4337
|
+
(args) => isIterable(args[0]) && !isEffect(args[0]),
|
|
4338
|
+
<A, B, X, E, R>(
|
|
4339
|
+
elements: Iterable<A>,
|
|
4340
|
+
filter: (input: A, i: number) => Effect.Effect<Result.Result<B, X>, E, R>
|
|
4341
|
+
): Effect.Effect<Option.Option<B>, E, R> =>
|
|
4342
|
+
suspend(() => {
|
|
4343
|
+
const iterator = elements[Symbol.iterator]()
|
|
4344
|
+
const next = iterator.next()
|
|
4345
|
+
if (!next.done) {
|
|
4346
|
+
return findFirstFilterLoop(iterator, 0, filter, next.value)
|
|
4347
|
+
}
|
|
4348
|
+
return succeed(Option.none())
|
|
4349
|
+
})
|
|
4350
|
+
)
|
|
4351
|
+
|
|
4352
|
+
const findFirstFilterLoop = <A, B, X, E, R>(
|
|
4353
|
+
iterator: Iterator<A>,
|
|
4354
|
+
index: number,
|
|
4355
|
+
filter: (input: A, i: number) => Effect.Effect<Result.Result<B, X>, E, R>,
|
|
4356
|
+
value: A
|
|
4357
|
+
): Effect.Effect<Option.Option<B>, E, R> =>
|
|
4358
|
+
flatMap(filter(value, index), (result) => {
|
|
4359
|
+
if (Result.isSuccess(result)) {
|
|
4360
|
+
return succeed(Option.some(result.success))
|
|
4361
|
+
}
|
|
4362
|
+
const next = iterator.next()
|
|
4363
|
+
if (!next.done) {
|
|
4364
|
+
return findFirstFilterLoop(iterator, index + 1, filter, next.value)
|
|
4365
|
+
}
|
|
4366
|
+
return succeed(Option.none())
|
|
4367
|
+
})
|
|
4368
|
+
|
|
4081
4369
|
/** @internal */
|
|
4082
4370
|
export const whileLoop: <A, E, R>(options: {
|
|
4083
4371
|
readonly while: LazyArg<boolean>
|
|
@@ -4249,33 +4537,85 @@ export const filterOrElse: {
|
|
|
4249
4537
|
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
4250
4538
|
orElse: (a: EqualsWith<A, B, NoInfer<A>, Exclude<NoInfer<A>, B>>) => Effect.Effect<C, E2, R2>
|
|
4251
4539
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B | C, E2 | E, R2 | R>
|
|
4252
|
-
<A,
|
|
4253
|
-
|
|
4254
|
-
orElse: (a:
|
|
4255
|
-
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<
|
|
4540
|
+
<A, C, E2, R2>(
|
|
4541
|
+
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
4542
|
+
orElse: (a: NoInfer<A>) => Effect.Effect<C, E2, R2>
|
|
4543
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | C, E2 | E, R2 | R>
|
|
4256
4544
|
<A, E, R, C, E2, R2, B extends A>(
|
|
4257
4545
|
self: Effect.Effect<A, E, R>,
|
|
4258
4546
|
refinement: Predicate.Refinement<A, B>,
|
|
4259
4547
|
orElse: (a: EqualsWith<A, B, A, Exclude<A, B>>) => Effect.Effect<C, E2, R2>
|
|
4260
4548
|
): Effect.Effect<B | C, E | E2, R | R2>
|
|
4261
|
-
<A, E, R,
|
|
4549
|
+
<A, E, R, C, E2, R2>(
|
|
4262
4550
|
self: Effect.Effect<A, E, R>,
|
|
4263
|
-
|
|
4264
|
-
orElse: (a:
|
|
4265
|
-
): Effect.Effect<
|
|
4266
|
-
} = dual(3, <A, E, R,
|
|
4551
|
+
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
4552
|
+
orElse: (a: NoInfer<A>) => Effect.Effect<C, E2, R2>
|
|
4553
|
+
): Effect.Effect<A | C, E | E2, R | R2>
|
|
4554
|
+
} = dual(3, <A, E, R, B, E2, R2>(
|
|
4267
4555
|
self: Effect.Effect<A, E, R>,
|
|
4268
|
-
|
|
4269
|
-
orElse: (a:
|
|
4270
|
-
): Effect.Effect<
|
|
4556
|
+
predicate: Predicate.Predicate<A>,
|
|
4557
|
+
orElse: (a: A) => Effect.Effect<B, E2, R2>
|
|
4558
|
+
): Effect.Effect<A | B, E | E2, R | R2> =>
|
|
4559
|
+
flatMap(
|
|
4560
|
+
self,
|
|
4561
|
+
(a) => predicate(a) ? succeed<A | B>(a) : orElse(a)
|
|
4562
|
+
))
|
|
4563
|
+
|
|
4564
|
+
/** @internal */
|
|
4565
|
+
export const filterMapOrElse: {
|
|
4566
|
+
<A, B, X, C, E2, R2>(
|
|
4567
|
+
filter: Filter.Filter<NoInfer<A>, B, X>,
|
|
4568
|
+
orElse: (x: X) => Effect.Effect<C, E2, R2>
|
|
4569
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B | C, E2 | E, R2 | R>
|
|
4570
|
+
<A, E, R, B, X, C, E2, R2>(
|
|
4571
|
+
self: Effect.Effect<A, E, R>,
|
|
4572
|
+
filter: Filter.Filter<NoInfer<A>, B, X>,
|
|
4573
|
+
orElse: (x: X) => Effect.Effect<C, E2, R2>
|
|
4574
|
+
): Effect.Effect<B | C, E | E2, R | R2>
|
|
4575
|
+
} = dual(3, <A, E, R, B, X, C, E2, R2>(
|
|
4576
|
+
self: Effect.Effect<A, E, R>,
|
|
4577
|
+
filter: Filter.Filter<NoInfer<A>, B, X>,
|
|
4578
|
+
orElse: (x: X) => Effect.Effect<C, E2, R2>
|
|
4579
|
+
): Effect.Effect<B | C, E | E2, R | R2> =>
|
|
4271
4580
|
flatMap(
|
|
4272
4581
|
self,
|
|
4273
4582
|
(a) => {
|
|
4274
|
-
const result =
|
|
4275
|
-
return Result.isFailure(result)
|
|
4583
|
+
const result = filter(a)
|
|
4584
|
+
return (Result.isFailure(result)
|
|
4585
|
+
? orElse(result.failure)
|
|
4586
|
+
: succeed(result.success)) as Effect.Effect<B | C, E2, R2>
|
|
4276
4587
|
}
|
|
4277
4588
|
))
|
|
4278
4589
|
|
|
4590
|
+
/* @internal */
|
|
4591
|
+
export const filterMapOrFail: {
|
|
4592
|
+
<A, B, X, E2>(
|
|
4593
|
+
filter: Filter.Filter<NoInfer<A>, B, X>,
|
|
4594
|
+
orFailWith: (x: X) => E2
|
|
4595
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E2 | E, R>
|
|
4596
|
+
<A, B, X>(
|
|
4597
|
+
filter: Filter.Filter<NoInfer<A>, B, X>
|
|
4598
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, Cause.NoSuchElementError | E, R>
|
|
4599
|
+
<A, E, R, B, X, E2>(
|
|
4600
|
+
self: Effect.Effect<A, E, R>,
|
|
4601
|
+
filter: Filter.Filter<NoInfer<A>, B, X>,
|
|
4602
|
+
orFailWith: (x: X) => E2
|
|
4603
|
+
): Effect.Effect<B, E2 | E, R>
|
|
4604
|
+
<A, E, R, B, X>(
|
|
4605
|
+
self: Effect.Effect<A, E, R>,
|
|
4606
|
+
filter: Filter.Filter<NoInfer<A>, B, X>
|
|
4607
|
+
): Effect.Effect<B, Cause.NoSuchElementError | E, R>
|
|
4608
|
+
} = dual((args) => isEffect(args[0]), <A, E, R, B, X, E2>(
|
|
4609
|
+
self: Effect.Effect<A, E, R>,
|
|
4610
|
+
filter: Filter.Filter<NoInfer<A>, B, X>,
|
|
4611
|
+
orFailWith?: (x: X) => E2
|
|
4612
|
+
): Effect.Effect<B, E2 | Cause.NoSuchElementError | E, R> =>
|
|
4613
|
+
filterMapOrElse(
|
|
4614
|
+
self,
|
|
4615
|
+
filter,
|
|
4616
|
+
orFailWith ? (x: X) => fail(orFailWith(x)) : () => fail(new NoSuchElementError() as E2)
|
|
4617
|
+
))
|
|
4618
|
+
|
|
4279
4619
|
/** @internal */
|
|
4280
4620
|
export const filter: {
|
|
4281
4621
|
<A, B extends A>(
|
|
@@ -4284,13 +4624,6 @@ export const filter: {
|
|
|
4284
4624
|
<A>(
|
|
4285
4625
|
predicate: Predicate.Predicate<NoInfer<A>>
|
|
4286
4626
|
): (elements: Iterable<A>) => Effect.Effect<Array<A>>
|
|
4287
|
-
<A, B, X>(
|
|
4288
|
-
filter: Filter.Filter<NoInfer<A>, B, X>
|
|
4289
|
-
): (elements: Iterable<A>) => Effect.Effect<Array<B>>
|
|
4290
|
-
<A, B, X, E, R>(
|
|
4291
|
-
filter: Filter.FilterEffect<NoInfer<A>, B, X, E, R>,
|
|
4292
|
-
options?: { readonly concurrency?: Concurrency | undefined }
|
|
4293
|
-
): (elements: Iterable<A>) => Effect.Effect<Array<B>, E, R>
|
|
4294
4627
|
<A, E, R>(
|
|
4295
4628
|
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>,
|
|
4296
4629
|
options?: { readonly concurrency?: Concurrency | undefined }
|
|
@@ -4303,15 +4636,6 @@ export const filter: {
|
|
|
4303
4636
|
elements: Iterable<A>,
|
|
4304
4637
|
predicate: Predicate.Predicate<A>
|
|
4305
4638
|
): Effect.Effect<Array<A>>
|
|
4306
|
-
<A, B, X>(
|
|
4307
|
-
elements: Iterable<A>,
|
|
4308
|
-
filter: Filter.Filter<NoInfer<A>, B, X>
|
|
4309
|
-
): Effect.Effect<Array<B>>
|
|
4310
|
-
<A, B, X, E, R>(
|
|
4311
|
-
elements: Iterable<A>,
|
|
4312
|
-
filter: Filter.FilterEffect<NoInfer<A>, B, X, E, R>,
|
|
4313
|
-
options?: { readonly concurrency?: Concurrency | undefined }
|
|
4314
|
-
): Effect.Effect<Array<B>, E, R>
|
|
4315
4639
|
<A, E, R>(
|
|
4316
4640
|
iterable: Iterable<A>,
|
|
4317
4641
|
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>,
|
|
@@ -4319,36 +4643,27 @@ export const filter: {
|
|
|
4319
4643
|
): Effect.Effect<Array<A>, E, R>
|
|
4320
4644
|
} = dual(
|
|
4321
4645
|
(args) => isIterable(args[0]) && !isEffect(args[0]),
|
|
4322
|
-
<A,
|
|
4646
|
+
<A, E, R>(
|
|
4323
4647
|
elements: Iterable<A>,
|
|
4324
|
-
|
|
4325
|
-
| Filter.FilterEffect<A, B, X, E, R>
|
|
4648
|
+
predicate:
|
|
4326
4649
|
| Predicate.Predicate<A>
|
|
4327
4650
|
| ((a: A, i: number) => Effect.Effect<boolean, E, R>),
|
|
4328
4651
|
options?: { readonly concurrency?: Concurrency | undefined }
|
|
4329
|
-
): Effect.Effect<Array<
|
|
4652
|
+
): Effect.Effect<Array<A>, E, R> =>
|
|
4330
4653
|
suspend(() => {
|
|
4331
|
-
const out: Array<
|
|
4654
|
+
const out: Array<A> = []
|
|
4332
4655
|
return as(
|
|
4333
4656
|
forEach(
|
|
4334
4657
|
elements,
|
|
4335
4658
|
(a, i) => {
|
|
4336
|
-
const result = (
|
|
4659
|
+
const result = (predicate as Function)(a, i)
|
|
4337
4660
|
if (typeof result === "boolean") {
|
|
4338
4661
|
if (result) out.push(a)
|
|
4339
4662
|
return void_ as any
|
|
4340
4663
|
}
|
|
4341
|
-
|
|
4342
|
-
if (
|
|
4343
|
-
out.push(
|
|
4344
|
-
}
|
|
4345
|
-
return void_ as any
|
|
4346
|
-
}
|
|
4347
|
-
return map(result, (r: any) => {
|
|
4348
|
-
if (typeof r === "boolean") {
|
|
4349
|
-
if (r) out.push(a)
|
|
4350
|
-
} else if (!Result.isFailure(r)) {
|
|
4351
|
-
out.push(r.success)
|
|
4664
|
+
return map(result, (keep) => {
|
|
4665
|
+
if (keep) {
|
|
4666
|
+
out.push(a)
|
|
4352
4667
|
}
|
|
4353
4668
|
})
|
|
4354
4669
|
},
|
|
@@ -4362,6 +4677,72 @@ export const filter: {
|
|
|
4362
4677
|
})
|
|
4363
4678
|
)
|
|
4364
4679
|
|
|
4680
|
+
/** @internal */
|
|
4681
|
+
export const filterMap: {
|
|
4682
|
+
<A, B, X>(
|
|
4683
|
+
filter: Filter.Filter<NoInfer<A>, B, X>
|
|
4684
|
+
): (elements: Iterable<A>) => Effect.Effect<Array<B>>
|
|
4685
|
+
<A, B, X>(
|
|
4686
|
+
elements: Iterable<A>,
|
|
4687
|
+
filter: Filter.Filter<NoInfer<A>, B, X>
|
|
4688
|
+
): Effect.Effect<Array<B>>
|
|
4689
|
+
} = dual(
|
|
4690
|
+
(args) => isIterable(args[0]) && !isEffect(args[0]),
|
|
4691
|
+
<A, B, X>(
|
|
4692
|
+
elements: Iterable<A>,
|
|
4693
|
+
filter: Filter.Filter<A, B, X>
|
|
4694
|
+
): Effect.Effect<Array<B>> =>
|
|
4695
|
+
suspend(() => {
|
|
4696
|
+
const out: Array<B> = []
|
|
4697
|
+
for (const a of elements) {
|
|
4698
|
+
const result = filter(a)
|
|
4699
|
+
if (Result.isSuccess(result)) {
|
|
4700
|
+
out.push(result.success)
|
|
4701
|
+
}
|
|
4702
|
+
}
|
|
4703
|
+
return succeed(out)
|
|
4704
|
+
})
|
|
4705
|
+
)
|
|
4706
|
+
|
|
4707
|
+
/** @internal */
|
|
4708
|
+
export const filterMapEffect: {
|
|
4709
|
+
<A, B, X, E, R>(
|
|
4710
|
+
filter: Filter.FilterEffect<NoInfer<A>, B, X, E, R>,
|
|
4711
|
+
options?: { readonly concurrency?: Concurrency | undefined }
|
|
4712
|
+
): (elements: Iterable<A>) => Effect.Effect<Array<B>, E, R>
|
|
4713
|
+
<A, B, X, E, R>(
|
|
4714
|
+
elements: Iterable<A>,
|
|
4715
|
+
filter: Filter.FilterEffect<NoInfer<A>, B, X, E, R>,
|
|
4716
|
+
options?: { readonly concurrency?: Concurrency | undefined }
|
|
4717
|
+
): Effect.Effect<Array<B>, E, R>
|
|
4718
|
+
} = dual(
|
|
4719
|
+
(args) => isIterable(args[0]) && !isEffect(args[0]),
|
|
4720
|
+
<A, B, X, E, R>(
|
|
4721
|
+
elements: Iterable<A>,
|
|
4722
|
+
filter: Filter.FilterEffect<A, B, X, E, R>,
|
|
4723
|
+
options?: { readonly concurrency?: Concurrency | undefined }
|
|
4724
|
+
): Effect.Effect<Array<B>, E, R> =>
|
|
4725
|
+
suspend(() => {
|
|
4726
|
+
const out: Array<B> = []
|
|
4727
|
+
return as(
|
|
4728
|
+
forEach(
|
|
4729
|
+
elements,
|
|
4730
|
+
(a) =>
|
|
4731
|
+
map(filter(a), (result) => {
|
|
4732
|
+
if (Result.isSuccess(result)) {
|
|
4733
|
+
out.push(result.success)
|
|
4734
|
+
}
|
|
4735
|
+
}),
|
|
4736
|
+
{
|
|
4737
|
+
discard: true,
|
|
4738
|
+
concurrency: options?.concurrency
|
|
4739
|
+
}
|
|
4740
|
+
),
|
|
4741
|
+
out
|
|
4742
|
+
)
|
|
4743
|
+
})
|
|
4744
|
+
)
|
|
4745
|
+
|
|
4365
4746
|
// ----------------------------------------------------------------------------
|
|
4366
4747
|
// do notation
|
|
4367
4748
|
// ----------------------------------------------------------------------------
|
|
@@ -4588,7 +4969,8 @@ export const forkScoped: {
|
|
|
4588
4969
|
readonly startImmediately?: boolean | undefined
|
|
4589
4970
|
readonly uninterruptible?: boolean | "inherit" | undefined
|
|
4590
4971
|
} | undefined
|
|
4591
|
-
): [Arg] extends [Effect.Effect<infer _A, infer _E, infer _R>] ?
|
|
4972
|
+
): [Arg] extends [Effect.Effect<infer _A, infer _E, infer _R>] ?
|
|
4973
|
+
Effect.Effect<Fiber.Fiber<_A, _E>, never, _R | Scope.Scope>
|
|
4592
4974
|
: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Fiber.Fiber<A, E>, never, R | Scope.Scope>
|
|
4593
4975
|
} = dual((args) => isEffect(args[0]), <A, E, R>(
|
|
4594
4976
|
self: Effect.Effect<A, E, R>,
|
|
@@ -4772,25 +5154,27 @@ class Semaphore {
|
|
|
4772
5154
|
return this.permits - this.taken
|
|
4773
5155
|
}
|
|
4774
5156
|
|
|
4775
|
-
readonly take = (n: number): Effect.Effect<number> =>
|
|
4776
|
-
|
|
5157
|
+
readonly take = (n: number): Effect.Effect<number> => {
|
|
5158
|
+
const take: Effect.Effect<number> = suspend(() => {
|
|
4777
5159
|
if (this.free < n) {
|
|
4778
|
-
|
|
4779
|
-
if (this.free
|
|
4780
|
-
|
|
5160
|
+
return callback((resume) => {
|
|
5161
|
+
if (this.free >= n) return resume(take)
|
|
5162
|
+
const observer = () => {
|
|
5163
|
+
if (this.free < n) return
|
|
5164
|
+
this.waiters.delete(observer)
|
|
5165
|
+
resume(take)
|
|
4781
5166
|
}
|
|
4782
|
-
this.waiters.
|
|
4783
|
-
|
|
4784
|
-
|
|
4785
|
-
|
|
4786
|
-
this.waiters.add(observer)
|
|
4787
|
-
return sync(() => {
|
|
4788
|
-
this.waiters.delete(observer)
|
|
5167
|
+
this.waiters.add(observer)
|
|
5168
|
+
return sync(() => {
|
|
5169
|
+
this.waiters.delete(observer)
|
|
5170
|
+
})
|
|
4789
5171
|
})
|
|
4790
5172
|
}
|
|
4791
5173
|
this.taken += n
|
|
4792
|
-
return
|
|
5174
|
+
return succeed(n)
|
|
4793
5175
|
})
|
|
5176
|
+
return take
|
|
5177
|
+
}
|
|
4794
5178
|
|
|
4795
5179
|
updateTakenUnsafe(fiber: Fiber.Fiber<any, any>, f: (n: number) => number): Effect.Effect<number> {
|
|
4796
5180
|
this.taken = f(this.taken)
|
|
@@ -4828,7 +5212,10 @@ class Semaphore {
|
|
|
4828
5212
|
|
|
4829
5213
|
readonly withPermits = (n: number) => <A, E, R>(self: Effect.Effect<A, E, R>) =>
|
|
4830
5214
|
uninterruptibleMask((restore) =>
|
|
4831
|
-
flatMap(
|
|
5215
|
+
flatMap(
|
|
5216
|
+
restore(this.take(n)),
|
|
5217
|
+
(permits) => onExitPrimitive(restore(self), () => this.release(permits), true)
|
|
5218
|
+
)
|
|
4832
5219
|
)
|
|
4833
5220
|
|
|
4834
5221
|
readonly withPermit = this.withPermits(1)
|
|
@@ -4854,7 +5241,7 @@ export const makeSemaphore = (permits: number) => sync(() => makeSemaphoreUnsafe
|
|
|
4854
5241
|
const succeedTrue = succeed(true)
|
|
4855
5242
|
const succeedFalse = succeed(false)
|
|
4856
5243
|
|
|
4857
|
-
class Latch implements
|
|
5244
|
+
class Latch implements _Latch.Latch {
|
|
4858
5245
|
waiters: Array<(_: Effect.Effect<void>) => void> = []
|
|
4859
5246
|
scheduled = false
|
|
4860
5247
|
private isOpen: boolean
|
|
@@ -4914,7 +5301,7 @@ class Latch implements Effect.Latch {
|
|
|
4914
5301
|
}
|
|
4915
5302
|
|
|
4916
5303
|
/** @internal */
|
|
4917
|
-
export const makeLatchUnsafe = (open?: boolean | undefined):
|
|
5304
|
+
export const makeLatchUnsafe = (open?: boolean | undefined): _Latch.Latch => new Latch(open ?? false)
|
|
4918
5305
|
|
|
4919
5306
|
/** @internal */
|
|
4920
5307
|
export const makeLatch = (open?: boolean | undefined) => sync(() => makeLatchUnsafe(open))
|
|
@@ -5344,8 +5731,8 @@ export const clockWith = <A, E, R>(f: (clock: Clock.Clock) => Effect.Effect<A, E
|
|
|
5344
5731
|
withFiber((fiber) => f(fiber.getRef(ClockRef)))
|
|
5345
5732
|
|
|
5346
5733
|
/** @internal */
|
|
5347
|
-
export const sleep = (duration: Duration.
|
|
5348
|
-
clockWith((clock) => clock.sleep(Duration.
|
|
5734
|
+
export const sleep = (duration: Duration.Input): Effect.Effect<void> =>
|
|
5735
|
+
clockWith((clock) => clock.sleep(Duration.fromInputUnsafe(duration)))
|
|
5349
5736
|
|
|
5350
5737
|
/** @internal */
|
|
5351
5738
|
export const currentTimeMillis: Effect.Effect<number> = clockWith((clock) => clock.currentTimeMillis)
|
|
@@ -5477,6 +5864,40 @@ export const LogToStderr = ServiceMap.Reference<boolean>("effect/Logger/LogToStd
|
|
|
5477
5864
|
defaultValue: constFalse
|
|
5478
5865
|
})
|
|
5479
5866
|
|
|
5867
|
+
/** @internal */
|
|
5868
|
+
export const annotateLogsScoped: {
|
|
5869
|
+
(key: string, value: unknown): Effect.Effect<void, never, Scope.Scope>
|
|
5870
|
+
(values: Record<string, unknown>): Effect.Effect<void, never, Scope.Scope>
|
|
5871
|
+
} = function() {
|
|
5872
|
+
const entries = typeof arguments[0] === "string" ?
|
|
5873
|
+
[[arguments[0], arguments[1]]] :
|
|
5874
|
+
Object.entries(arguments[0])
|
|
5875
|
+
return uninterruptible(withFiber((fiber) => {
|
|
5876
|
+
const prev = fiber.getRef(CurrentLogAnnotations)
|
|
5877
|
+
const next = { ...prev }
|
|
5878
|
+
for (let i = 0; i < entries.length; i++) {
|
|
5879
|
+
const [key, value] = entries[i]
|
|
5880
|
+
next[key] = value
|
|
5881
|
+
}
|
|
5882
|
+
fiber.setServices(ServiceMap.add(fiber.services, CurrentLogAnnotations, next))
|
|
5883
|
+
return scopeAddFinalizerExit(ServiceMap.getUnsafe(fiber.services, scopeTag), (_) => {
|
|
5884
|
+
const current = fiber.getRef(CurrentLogAnnotations)
|
|
5885
|
+
const next = { ...current }
|
|
5886
|
+
for (let i = 0; i < entries.length; i++) {
|
|
5887
|
+
const [key, value] = entries[i]
|
|
5888
|
+
if (current[key] !== value) continue
|
|
5889
|
+
if (key in prev) {
|
|
5890
|
+
next[key] = prev[key]
|
|
5891
|
+
} else {
|
|
5892
|
+
delete next[key]
|
|
5893
|
+
}
|
|
5894
|
+
}
|
|
5895
|
+
fiber.setServices(ServiceMap.add(fiber.services, CurrentLogAnnotations, next))
|
|
5896
|
+
return void_
|
|
5897
|
+
})
|
|
5898
|
+
}))
|
|
5899
|
+
}
|
|
5900
|
+
|
|
5480
5901
|
/** @internal */
|
|
5481
5902
|
export const LoggerTypeId = "~effect/Logger"
|
|
5482
5903
|
|
|
@@ -5492,7 +5913,7 @@ const LoggerProto = {
|
|
|
5492
5913
|
|
|
5493
5914
|
/** @internal */
|
|
5494
5915
|
export const loggerMake = <Message, Output>(
|
|
5495
|
-
log: (options: Logger.
|
|
5916
|
+
log: (options: Logger.Options<Message>) => Output
|
|
5496
5917
|
): Logger.Logger<Message, Output> => {
|
|
5497
5918
|
const self = Object.create(LoggerProto)
|
|
5498
5919
|
self.log = log
|
|
@@ -5532,7 +5953,7 @@ export const structuredMessage = (u: unknown): unknown => {
|
|
|
5532
5953
|
}
|
|
5533
5954
|
|
|
5534
5955
|
/** @internal */
|
|
5535
|
-
export const logWithLevel = (level?: LogLevel.
|
|
5956
|
+
export const logWithLevel = (level?: LogLevel.Severity) =>
|
|
5536
5957
|
(
|
|
5537
5958
|
...message: ReadonlyArray<any>
|
|
5538
5959
|
): Effect.Effect<void> => {
|
|
@@ -5651,7 +6072,7 @@ const prettyLoggerTty = (options: {
|
|
|
5651
6072
|
readonly formatDate: (date: Date) => string
|
|
5652
6073
|
}) => {
|
|
5653
6074
|
const processIsBun = typeof process === "object" && "isBun" in process && process.isBun === true
|
|
5654
|
-
const color = options.colors
|
|
6075
|
+
const color = options.colors ? withColor : withColorNoop
|
|
5655
6076
|
return loggerMake<unknown, void>(
|
|
5656
6077
|
({ cause, date, fiber, logLevel, message: message_ }) => {
|
|
5657
6078
|
const console = fiber.getRef(ConsoleRef)
|
|
@@ -5823,3 +6244,55 @@ const undefined_ = succeed(undefined)
|
|
|
5823
6244
|
|
|
5824
6245
|
/** @internal */
|
|
5825
6246
|
export { undefined_ as undefined }
|
|
6247
|
+
|
|
6248
|
+
// ----------------------------------------------------------------------------
|
|
6249
|
+
// ErrorReporter
|
|
6250
|
+
// ----------------------------------------------------------------------------
|
|
6251
|
+
|
|
6252
|
+
/** @internal */
|
|
6253
|
+
export const CurrentErrorReporters = ServiceMap.Reference<
|
|
6254
|
+
ReadonlySet<ErrorReporter>
|
|
6255
|
+
>("effect/ErrorReporter/CurrentErrorReporters", {
|
|
6256
|
+
defaultValue: () => new Set()
|
|
6257
|
+
})
|
|
6258
|
+
|
|
6259
|
+
/** @internal */
|
|
6260
|
+
export const withErrorReporting: <
|
|
6261
|
+
Arg extends Effect.Effect<any, any, any> | {
|
|
6262
|
+
readonly defectsOnly?: boolean | undefined
|
|
6263
|
+
} | undefined = {
|
|
6264
|
+
readonly defectsOnly?: boolean | undefined
|
|
6265
|
+
}
|
|
6266
|
+
>(
|
|
6267
|
+
effectOrOptions: Arg,
|
|
6268
|
+
options?: {
|
|
6269
|
+
readonly defectsOnly?: boolean | undefined
|
|
6270
|
+
} | undefined
|
|
6271
|
+
) => [Arg] extends [Effect.Effect<infer _A, infer _E, infer _R>] ? Arg
|
|
6272
|
+
: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R> = dual(
|
|
6273
|
+
(args) => isEffect(args[0]),
|
|
6274
|
+
<A, E, R>(
|
|
6275
|
+
self: Effect.Effect<A, E, R>,
|
|
6276
|
+
options?: {
|
|
6277
|
+
readonly defectsOnly?: boolean | undefined
|
|
6278
|
+
} | undefined
|
|
6279
|
+
): Effect.Effect<A, E, R> =>
|
|
6280
|
+
onError(self, (cause) =>
|
|
6281
|
+
withFiber((fiber) => {
|
|
6282
|
+
reportCauseUnsafe(fiber, cause, options?.defectsOnly)
|
|
6283
|
+
return void_
|
|
6284
|
+
}))
|
|
6285
|
+
)
|
|
6286
|
+
|
|
6287
|
+
/** @internal */
|
|
6288
|
+
export const reportCauseUnsafe = (
|
|
6289
|
+
fiber: Fiber.Fiber<unknown, unknown>,
|
|
6290
|
+
cause: Cause.Cause<unknown>,
|
|
6291
|
+
defectsOnly?: boolean
|
|
6292
|
+
) => {
|
|
6293
|
+
const reporters = fiber.getRef(CurrentErrorReporters)
|
|
6294
|
+
if (reporters.size === 0) return
|
|
6295
|
+
if (defectsOnly && !hasDies(cause)) return
|
|
6296
|
+
const opts = { cause, fiber, timestamp: fiber.getRef(ClockRef).currentTimeNanosUnsafe() }
|
|
6297
|
+
reporters.forEach((reporter) => reporter.report(opts))
|
|
6298
|
+
}
|