effect 4.0.0-beta.2 → 4.0.0-beta.21
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 +127 -299
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +102 -62
- package/dist/Array.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 +1 -1
- 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 +62 -7
- 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 +534 -365
- 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 +12 -12
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +12 -12
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +829 -692
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +263 -251
- 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 +376 -0
- package/dist/ErrorReporter.d.ts.map +1 -0
- package/dist/ErrorReporter.js +246 -0
- package/dist/ErrorReporter.js.map +1 -0
- package/dist/Fiber.d.ts +2 -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 +30 -34
- 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/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 +40 -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 +9 -9
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js.map +1 -1
- package/dist/LayerMap.d.ts +4 -4
- package/dist/LayerMap.d.ts.map +1 -1
- 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 +1 -1
- package/dist/ManagedRuntime.js +1 -1
- package/dist/Metric.d.ts +2 -2
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +1 -1
- package/dist/Metric.js.map +1 -1
- 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 +22 -15
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +14 -7
- 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 +24 -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 +3 -3
- package/dist/References.d.ts.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 +6 -26
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +0 -20
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Result.d.ts +12 -0
- package/dist/Result.d.ts.map +1 -1
- package/dist/Result.js +12 -0
- package/dist/Result.js.map +1 -1
- package/dist/Schedule.d.ts +47 -20
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +94 -34
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +266 -50
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +426 -74
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +7 -6
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +2 -2
- 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 +43 -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 +39 -30
- 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/Stream.d.ts +235 -423
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +124 -77
- 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 +84 -6
- package/dist/Types.d.ts.map +1 -1
- package/dist/index.d.ts +591 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +591 -20
- 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 +263 -99
- 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/schema.js +1 -0
- package/dist/internal/schema/schema.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 +7 -6
- 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 +8 -8
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +128 -48
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.js +11 -12
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/Chat.d.ts +3 -3
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +4 -3
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/LanguageModel.d.ts +4 -2
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +86 -14
- package/dist/unstable/ai/LanguageModel.js.map +1 -1
- package/dist/unstable/ai/McpSchema.d.ts +163 -87
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +49 -12
- package/dist/unstable/ai/McpSchema.js.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts +1 -1
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js +35 -7
- 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 +19 -3
- 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/index.d.ts +1 -1
- package/dist/unstable/ai/index.js +1 -1
- package/dist/unstable/cli/CliError.d.ts +5 -5
- package/dist/unstable/cli/CliOutput.js +59 -6
- package/dist/unstable/cli/CliOutput.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +276 -19
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +234 -36
- 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/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 +17 -8
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.js +32 -23
- 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/help.d.ts +33 -0
- package/dist/unstable/cli/internal/help.d.ts.map +1 -0
- package/dist/unstable/cli/internal/help.js +107 -0
- package/dist/unstable/cli/internal/help.js.map +1 -0
- package/dist/unstable/cli/internal/parser.js +29 -36
- 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 +3 -3
- package/dist/unstable/http/Cookies.d.ts.map +1 -1
- package/dist/unstable/http/Cookies.js +2 -2
- package/dist/unstable/http/Cookies.js.map +1 -1
- package/dist/unstable/http/Headers.d.ts.map +1 -1
- package/dist/unstable/http/Headers.js +27 -10
- package/dist/unstable/http/Headers.js.map +1 -1
- package/dist/unstable/http/HttpBody.d.ts +17 -2
- package/dist/unstable/http/HttpBody.d.ts.map +1 -1
- package/dist/unstable/http/HttpBody.js +28 -1
- package/dist/unstable/http/HttpBody.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +37 -13
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +4 -4
- 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 +27 -11
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +15 -3
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts +3 -8
- package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
- package/dist/unstable/http/HttpEffect.js +42 -56
- 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 +1 -1
- package/dist/unstable/http/HttpServerRequest.d.ts.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 +2 -1
- package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerResponse.js +3 -1
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- 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/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 +3 -3
- 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 +23 -12
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.d.ts +7 -2
- package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js +3 -3
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +31 -44
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +11 -0
- package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.js +29 -9
- package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.d.ts +3 -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 +10 -10
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +16 -13
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +8 -8
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
- 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 +24 -7
- package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.js +1 -1
- 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 +4 -4
- 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 +3 -3
- 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 +0 -7
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +15 -15
- 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 +2 -1
- package/dist/unstable/rpc/Utils.js.map +1 -1
- package/dist/unstable/schema/Model.d.ts +1 -1
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts +3 -3
- package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.js +3 -3
- 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/SqlSchema.d.ts +16 -5
- 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 +190 -342
- package/src/Cache.ts +9 -8
- package/src/Cause.ts +1 -1
- package/src/Channel.ts +554 -138
- package/src/Chunk.ts +81 -268
- package/src/Combiner.ts +280 -13
- package/src/Config.ts +183 -21
- package/src/Data.ts +538 -374
- package/src/DateTime.ts +24 -164
- package/src/Duration.ts +15 -15
- package/src/Effect.ts +991 -800
- package/src/Encoding.ts +879 -0
- package/src/Equal.ts +278 -111
- package/src/ErrorReporter.ts +459 -0
- package/src/Fiber.ts +9 -2
- package/src/FileSystem.ts +7 -8
- package/src/Filter.ts +48 -58
- package/src/Formatter.ts +253 -51
- package/src/Graph.ts +24 -11
- package/src/HashMap.ts +15 -14
- package/src/Iterable.ts +105 -50
- package/src/JsonSchema.ts +383 -10
- package/src/Latch.ts +112 -0
- package/src/Layer.ts +11 -15
- package/src/LayerMap.ts +5 -5
- package/src/LogLevel.ts +37 -0
- package/src/Logger.ts +33 -100
- package/src/ManagedRuntime.ts +1 -1
- package/src/Metric.ts +4 -4
- package/src/Optic.ts +948 -19
- package/src/Option.ts +30 -20
- 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 +43 -152
- package/src/Reducer.ts +166 -7
- package/src/References.ts +4 -4
- package/src/Request.ts +3 -2
- package/src/RequestResolver.ts +9 -29
- package/src/Result.ts +13 -0
- package/src/Schedule.ts +318 -160
- package/src/Schema.ts +661 -116
- package/src/SchemaAST.ts +7 -6
- package/src/SchemaGetter.ts +12 -14
- package/src/SchemaParser.ts +11 -0
- package/src/SchemaRepresentation.ts +43 -24
- package/src/SchemaTransformation.ts +189 -4
- package/src/ScopedCache.ts +3 -3
- package/src/Semaphore.ts +356 -0
- package/src/ServiceMap.ts +47 -38
- package/src/Sink.ts +78 -26
- package/src/Stream.ts +566 -601
- 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 +78 -2
- package/src/index.ts +600 -21
- package/src/internal/core.ts +12 -5
- package/src/internal/dateTime.ts +9 -30
- package/src/internal/effect.ts +744 -265
- package/src/internal/hashMap.ts +9 -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/schema.ts +1 -0
- package/src/internal/trie.ts +16 -9
- package/src/testing/TestClock.ts +13 -11
- package/src/testing/TestSchema.ts +10 -10
- package/src/unstable/ai/AiError.ts +97 -44
- package/src/unstable/ai/Chat.ts +12 -11
- package/src/unstable/ai/LanguageModel.ts +129 -25
- package/src/unstable/ai/McpSchema.ts +59 -13
- package/src/unstable/ai/McpServer.ts +48 -9
- 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 +19 -13
- package/src/unstable/ai/index.ts +1 -1
- package/src/unstable/cli/CliOutput.ts +75 -6
- package/src/unstable/cli/Command.ts +501 -60
- package/src/unstable/cli/GlobalFlag.ts +243 -0
- package/src/unstable/cli/HelpDoc.ts +80 -2
- package/src/unstable/cli/index.ts +5 -0
- package/src/unstable/cli/internal/command.ts +50 -34
- package/src/unstable/cli/internal/completions/CommandDescriptor.ts +7 -2
- package/src/unstable/cli/internal/help.ts +146 -0
- package/src/unstable/cli/internal/parser.ts +33 -54
- 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 +3 -3
- package/src/unstable/http/Headers.ts +28 -13
- package/src/unstable/http/HttpBody.ts +42 -1
- package/src/unstable/http/HttpClient.ts +58 -23
- package/src/unstable/http/HttpClientRequest.ts +38 -13
- package/src/unstable/http/HttpEffect.ts +46 -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 +1 -1
- package/src/unstable/http/HttpServerRespondable.ts +6 -6
- package/src/unstable/http/HttpServerResponse.ts +4 -2
- package/src/unstable/http/Multipart.ts +2 -2
- package/src/unstable/http/UrlParams.ts +20 -5
- package/src/unstable/http/internal/preResponseHandler.ts +15 -0
- package/src/unstable/httpapi/HttpApi.ts +5 -5
- package/src/unstable/httpapi/HttpApiBuilder.ts +77 -21
- package/src/unstable/httpapi/HttpApiClient.ts +14 -6
- package/src/unstable/httpapi/HttpApiEndpoint.ts +67 -83
- package/src/unstable/httpapi/HttpApiError.ts +30 -9
- package/src/unstable/httpapi/HttpApiGroup.ts +6 -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 +27 -25
- package/src/unstable/reactivity/AtomHttpApi.ts +21 -20
- package/src/unstable/reactivity/AtomRegistry.ts +31 -7
- package/src/unstable/reactivity/AtomRpc.ts +3 -3
- package/src/unstable/reactivity/Hydration.ts +112 -0
- package/src/unstable/reactivity/index.ts +5 -0
- package/src/unstable/rpc/Rpc.ts +6 -6
- package/src/unstable/rpc/RpcClient.ts +12 -54
- package/src/unstable/rpc/RpcGroup.ts +4 -4
- package/src/unstable/rpc/RpcMiddleware.ts +3 -3
- package/src/unstable/rpc/RpcSchema.ts +17 -0
- package/src/unstable/rpc/RpcSerialization.ts +44 -9
- package/src/unstable/rpc/RpcServer.ts +21 -30
- package/src/unstable/rpc/Utils.ts +2 -1
- package/src/unstable/schema/VariantSchema.ts +6 -6
- 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/SqlSchema.ts +41 -25
- 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/Data.ts
CHANGED
|
@@ -1,137 +1,207 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* semantics. Unlike regular JavaScript objects, `Data` types support value-based
|
|
4
|
-
* equality comparison using the `Equal` module.
|
|
2
|
+
* Immutable data constructors with discriminated-union support.
|
|
5
3
|
*
|
|
6
|
-
* The
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
4
|
+
* The `Data` module provides base classes and factory functions for creating
|
|
5
|
+
* immutable value types with a `_tag` field for discriminated unions.
|
|
6
|
+
* It is the recommended way to define domain models, error types, and
|
|
7
|
+
* lightweight ADTs in Effect applications.
|
|
8
|
+
*
|
|
9
|
+
* ## Mental model
|
|
10
|
+
*
|
|
11
|
+
* - **`Class`** — base class for plain immutable data. Extend it with a type
|
|
12
|
+
* parameter to declare the fields. Instances are `Pipeable`.
|
|
13
|
+
* - **`TaggedClass`** — like `Class` but automatically adds a `readonly _tag`
|
|
14
|
+
* string literal field. Useful for single-variant types or ad-hoc tagged
|
|
15
|
+
* values.
|
|
16
|
+
* - **`TaggedEnum`** (type) + **`taggedEnum`** (value) — define a multi-variant
|
|
17
|
+
* discriminated union from a simple record. `taggedEnum()` returns per-variant
|
|
18
|
+
* constructors plus `$is` / `$match` helpers.
|
|
19
|
+
* - **`Error`** — like `Class` but extends `Cause.YieldableError`, so instances
|
|
20
|
+
* can be yielded inside `Effect.gen` to fail the effect.
|
|
21
|
+
* - **`TaggedError`** — like `TaggedClass` but extends `Cause.YieldableError`.
|
|
22
|
+
* Works with `Effect.catchTag` for tag-based error recovery.
|
|
23
|
+
*
|
|
24
|
+
* ## Common tasks
|
|
25
|
+
*
|
|
26
|
+
* - Define a simple value class → {@link Class}
|
|
27
|
+
* - Define a value class with a `_tag` → {@link TaggedClass}
|
|
28
|
+
* - Define a discriminated union with constructors → {@link TaggedEnum} + {@link taggedEnum}
|
|
29
|
+
* - Define a yieldable error → {@link Error}
|
|
30
|
+
* - Define a yieldable tagged error → {@link TaggedError}
|
|
31
|
+
* - Type-guard a tagged value → `$is` from {@link taggedEnum}
|
|
32
|
+
* - Pattern-match on a tagged union → `$match` from {@link taggedEnum}
|
|
33
|
+
*
|
|
34
|
+
* ## Gotchas
|
|
35
|
+
*
|
|
36
|
+
* - Variant records passed to `TaggedEnum` must **not** contain a `_tag` key;
|
|
37
|
+
* the `_tag` is added automatically from the record key.
|
|
38
|
+
* - When a class has no fields, the constructor argument is optional (`void`).
|
|
39
|
+
* - `taggedEnum()` creates **plain objects**, not class instances. If you need
|
|
40
|
+
* class-based variants, use `TaggedClass` or `TaggedError` instead.
|
|
41
|
+
* - `TaggedEnum.WithGenerics` supports up to 4 generic type parameters.
|
|
42
|
+
*
|
|
43
|
+
* ## Quickstart
|
|
44
|
+
*
|
|
45
|
+
* **Example** (tagged union with pattern matching)
|
|
46
|
+
*
|
|
47
|
+
* ```ts
|
|
48
|
+
* import { Data } from "effect"
|
|
49
|
+
*
|
|
50
|
+
* type Shape = Data.TaggedEnum<{
|
|
51
|
+
* Circle: { readonly radius: number }
|
|
52
|
+
* Rect: { readonly width: number; readonly height: number }
|
|
53
|
+
* }>
|
|
54
|
+
* const { Circle, Rect, $match } = Data.taggedEnum<Shape>()
|
|
55
|
+
*
|
|
56
|
+
* const area = $match({
|
|
57
|
+
* Circle: ({ radius }) => Math.PI * radius ** 2,
|
|
58
|
+
* Rect: ({ width, height }) => width * height
|
|
59
|
+
* })
|
|
60
|
+
*
|
|
61
|
+
* console.log(area(Circle({ radius: 5 })))
|
|
62
|
+
* // 78.53981633974483
|
|
63
|
+
* console.log(area(Rect({ width: 3, height: 4 })))
|
|
64
|
+
* // 12
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @see {@link Class} — plain immutable data class
|
|
68
|
+
* @see {@link TaggedEnum} — discriminated union type
|
|
69
|
+
* @see {@link taggedEnum} — discriminated union constructors
|
|
70
|
+
* @see {@link TaggedError} — yieldable tagged error class
|
|
11
71
|
*
|
|
12
72
|
* @since 2.0.0
|
|
13
73
|
*/
|
|
14
74
|
import type * as Cause from "./Cause.ts"
|
|
15
75
|
import * as core from "./internal/core.ts"
|
|
76
|
+
import * as Pipeable from "./Pipeable.ts"
|
|
16
77
|
import * as Predicate from "./Predicate.ts"
|
|
17
78
|
import type * as Types from "./Types.ts"
|
|
18
79
|
import type { Unify } from "./Unify.ts"
|
|
19
80
|
|
|
20
81
|
/**
|
|
21
|
-
*
|
|
82
|
+
* Base class for immutable data types.
|
|
83
|
+
*
|
|
84
|
+
* Extend `Class` with a type parameter to declare fields. The constructor
|
|
85
|
+
* accepts those fields as a single object argument. When there are no fields
|
|
86
|
+
* the argument is optional.
|
|
87
|
+
*
|
|
88
|
+
* - Use when you need a lightweight immutable value type with `.pipe()` support.
|
|
89
|
+
* - Instances are `Readonly` and `Pipeable`.
|
|
90
|
+
* - If you also need a `_tag` discriminator, use {@link TaggedClass} instead.
|
|
91
|
+
* - If you need a yieldable error, use {@link Error} or {@link TaggedError}.
|
|
92
|
+
*
|
|
93
|
+
* **Example** (defining a value class)
|
|
22
94
|
*
|
|
23
|
-
* @example
|
|
24
95
|
* ```ts
|
|
25
96
|
* import { Data, Equal } from "effect"
|
|
26
|
-
* import * as assert from "node:assert"
|
|
27
97
|
*
|
|
28
98
|
* class Person extends Data.Class<{ readonly name: string }> {}
|
|
29
99
|
*
|
|
30
|
-
* // Creating instances of Person
|
|
31
100
|
* const mike1 = new Person({ name: "Mike" })
|
|
32
101
|
* const mike2 = new Person({ name: "Mike" })
|
|
33
|
-
* const john = new Person({ name: "John" })
|
|
34
102
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* assert.deepStrictEqual(Equal.equals(mike1, john), false)
|
|
103
|
+
* console.log(Equal.equals(mike1, mike2))
|
|
104
|
+
* // true
|
|
38
105
|
* ```
|
|
39
106
|
*
|
|
40
|
-
* @
|
|
107
|
+
* @see {@link TaggedClass} — adds a `_tag` field
|
|
108
|
+
* @see {@link Error} — yieldable error variant
|
|
109
|
+
*
|
|
41
110
|
* @category constructors
|
|
111
|
+
* @since 2.0.0
|
|
42
112
|
*/
|
|
43
113
|
export const Class: new<A extends Record<string, any> = {}>(
|
|
44
|
-
args: Types.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
114
|
+
args: Types.VoidIfEmpty<{ readonly [P in keyof A]: A[P] }>
|
|
115
|
+
) => Readonly<A> & Pipeable.Pipeable = class extends Pipeable.Class {
|
|
116
|
+
constructor(props: any) {
|
|
117
|
+
super()
|
|
118
|
+
if (props) {
|
|
119
|
+
Object.assign(this, props)
|
|
120
|
+
}
|
|
49
121
|
}
|
|
50
122
|
} as any
|
|
51
123
|
|
|
52
124
|
/**
|
|
53
|
-
*
|
|
125
|
+
* Base class for immutable data types with a `_tag` discriminator.
|
|
54
126
|
*
|
|
55
|
-
* @
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* import * as assert from "node:assert"
|
|
127
|
+
* Like {@link Class}, but the resulting instances also carry a
|
|
128
|
+
* `readonly _tag: Tag` property. The `_tag` is excluded from the constructor
|
|
129
|
+
* argument.
|
|
59
130
|
*
|
|
60
|
-
*
|
|
131
|
+
* - Use when you need a single-variant tagged type or an ad-hoc discriminator.
|
|
132
|
+
* - For multi-variant unions, prefer {@link TaggedEnum} + {@link taggedEnum}.
|
|
133
|
+
* - For yieldable errors, use {@link TaggedError}.
|
|
61
134
|
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
135
|
+
* **Example** (defining a tagged class)
|
|
136
|
+
*
|
|
137
|
+
* ```ts
|
|
138
|
+
* import { Data } from "effect"
|
|
66
139
|
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
140
|
+
* class Person extends Data.TaggedClass("Person")<{
|
|
141
|
+
* readonly name: string
|
|
142
|
+
* }> {}
|
|
70
143
|
*
|
|
71
|
-
*
|
|
144
|
+
* const mike = new Person({ name: "Mike" })
|
|
145
|
+
* console.log(mike._tag)
|
|
146
|
+
* // "Person"
|
|
72
147
|
* ```
|
|
73
148
|
*
|
|
74
|
-
* @
|
|
149
|
+
* @see {@link Class} — without a `_tag`
|
|
150
|
+
* @see {@link TaggedError} — tagged error variant
|
|
151
|
+
* @see {@link TaggedEnum} — multi-variant unions
|
|
152
|
+
*
|
|
75
153
|
* @category constructors
|
|
154
|
+
* @since 2.0.0
|
|
76
155
|
*/
|
|
77
156
|
export const TaggedClass = <Tag extends string>(
|
|
78
157
|
tag: Tag
|
|
79
158
|
): new<A extends Record<string, any> = {}>(
|
|
80
|
-
args: Types.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
this._tag = tag
|
|
85
|
-
if (props) {
|
|
86
|
-
Object.assign(this, props)
|
|
87
|
-
}
|
|
159
|
+
args: Types.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>
|
|
160
|
+
) => Readonly<A> & { readonly _tag: Tag } & Pipeable.Pipeable =>
|
|
161
|
+
class extends Class {
|
|
162
|
+
readonly _tag = tag
|
|
88
163
|
} as any
|
|
89
164
|
|
|
90
165
|
/**
|
|
91
|
-
*
|
|
166
|
+
* Transforms a record of variant definitions into a discriminated union type.
|
|
167
|
+
*
|
|
168
|
+
* Each key in the record becomes a variant with `readonly _tag` set to that
|
|
169
|
+
* key. Use with {@link taggedEnum} to get runtime constructors, type guards,
|
|
170
|
+
* and pattern matching.
|
|
92
171
|
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
172
|
+
* - Use when you have two or more variants that share a common `_tag`
|
|
173
|
+
* discriminator.
|
|
174
|
+
* - Variant records must **not** include a `_tag` property — it is added
|
|
175
|
+
* automatically.
|
|
176
|
+
* - For generic tagged enums, see {@link TaggedEnum.WithGenerics}.
|
|
177
|
+
*
|
|
178
|
+
* **Example** (defining a tagged enum)
|
|
95
179
|
*
|
|
96
|
-
* @example
|
|
97
180
|
* ```ts
|
|
98
181
|
* import { Data } from "effect"
|
|
99
182
|
*
|
|
100
|
-
* // Define a tagged enum type
|
|
101
183
|
* type HttpError = Data.TaggedEnum<{
|
|
102
184
|
* BadRequest: { readonly status: 400; readonly message: string }
|
|
103
|
-
* NotFound: { readonly status: 404
|
|
104
|
-
* InternalError: { readonly status: 500; readonly details: string }
|
|
185
|
+
* NotFound: { readonly status: 404 }
|
|
105
186
|
* }>
|
|
106
187
|
*
|
|
107
|
-
* //
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
* readonly status: 404
|
|
117
|
-
* readonly message: string
|
|
118
|
-
* }
|
|
119
|
-
* | {
|
|
120
|
-
* readonly _tag: "InternalError"
|
|
121
|
-
* readonly status: 500
|
|
122
|
-
* readonly details: string
|
|
123
|
-
* }
|
|
124
|
-
*
|
|
125
|
-
* // Usage with constructors
|
|
126
|
-
* const { BadRequest, InternalError, NotFound } = Data.taggedEnum<HttpError>()
|
|
127
|
-
*
|
|
128
|
-
* const error: HttpError = BadRequest({ status: 400, message: "Invalid request" })
|
|
129
|
-
* console.log(error._tag) // "BadRequest"
|
|
130
|
-
* console.log(error.status) // 400
|
|
188
|
+
* // Equivalent to:
|
|
189
|
+
* // | { readonly _tag: "BadRequest"; readonly status: 400; readonly message: string }
|
|
190
|
+
* // | { readonly _tag: "NotFound"; readonly status: 404 }
|
|
191
|
+
*
|
|
192
|
+
* const { BadRequest, NotFound } = Data.taggedEnum<HttpError>()
|
|
193
|
+
*
|
|
194
|
+
* const err = BadRequest({ status: 400, message: "missing id" })
|
|
195
|
+
* console.log(err._tag)
|
|
196
|
+
* // "BadRequest"
|
|
131
197
|
* ```
|
|
132
198
|
*
|
|
133
|
-
* @
|
|
199
|
+
* @see {@link taggedEnum} — runtime constructors for a `TaggedEnum`
|
|
200
|
+
* @see {@link TaggedEnum.WithGenerics} — generic tagged enums
|
|
201
|
+
* @see {@link TaggedEnum.Constructor} — the constructor object type
|
|
202
|
+
*
|
|
134
203
|
* @category models
|
|
204
|
+
* @since 2.0.0
|
|
135
205
|
*/
|
|
136
206
|
export type TaggedEnum<
|
|
137
207
|
A extends Record<string, Record<string, any>> & UntaggedChildren<A>
|
|
@@ -151,52 +221,53 @@ type UntaggedChildren<A> = true extends ChildrenAreTagged<A>
|
|
|
151
221
|
: unknown
|
|
152
222
|
|
|
153
223
|
/**
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
* This namespace contains types and utilities for working with tagged enums,
|
|
157
|
-
* which are discriminated unions with structural equality semantics.
|
|
158
|
-
*
|
|
159
|
-
* @example
|
|
160
|
-
* ```ts
|
|
161
|
-
* import { Data } from "effect"
|
|
162
|
-
*
|
|
163
|
-
* // Basic tagged enum usage
|
|
164
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
165
|
-
* | { readonly _tag: "Success"; readonly value: number }
|
|
166
|
-
* | { readonly _tag: "Failure"; readonly error: string }
|
|
167
|
-
* >()
|
|
224
|
+
* Namespace for `TaggedEnum` utility types.
|
|
168
225
|
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
*
|
|
226
|
+
* Provides helper types for:
|
|
227
|
+
* - Generic tagged enums ({@link TaggedEnum.WithGenerics}, {@link TaggedEnum.Kind})
|
|
228
|
+
* - Extracting constructor arguments ({@link TaggedEnum.Args}) and variant
|
|
229
|
+
* values ({@link TaggedEnum.Value})
|
|
230
|
+
* - Full constructor objects ({@link TaggedEnum.Constructor})
|
|
173
231
|
*
|
|
174
|
-
* @since 2.0.0
|
|
175
232
|
* @category types
|
|
233
|
+
* @since 2.0.0
|
|
176
234
|
*/
|
|
177
235
|
export declare namespace TaggedEnum {
|
|
178
236
|
/**
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
237
|
+
* Defines a tagged enum shape that accepts generic type parameters.
|
|
238
|
+
*
|
|
239
|
+
* Extend this interface and set `taggedEnum` to your union type, using
|
|
240
|
+
* `this["A"]`, `this["B"]`, etc. as placeholders for the generics. The
|
|
241
|
+
* `Count` parameter declares how many generics are used (up to 4).
|
|
242
|
+
*
|
|
243
|
+
* - Use when variant payloads need to be parameterized (e.g., `Result<E, A>`).
|
|
244
|
+
* - Pass the interface (not the type alias) to {@link taggedEnum} to get
|
|
245
|
+
* generic-aware constructors.
|
|
246
|
+
*
|
|
247
|
+
* **Example** (generic tagged enum)
|
|
182
248
|
*
|
|
183
|
-
* @example
|
|
184
249
|
* ```ts
|
|
185
|
-
* import
|
|
250
|
+
* import { Data } from "effect"
|
|
186
251
|
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
* readonly
|
|
190
|
-
*
|
|
191
|
-
*
|
|
252
|
+
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
253
|
+
* Failure: { readonly error: E }
|
|
254
|
+
* Success: { readonly value: A }
|
|
255
|
+
* }>
|
|
256
|
+
*
|
|
257
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
258
|
+
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
192
259
|
* }
|
|
193
260
|
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
261
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
262
|
+
*
|
|
263
|
+
* const ok = Success({ value: 42 })
|
|
264
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
196
265
|
* ```
|
|
197
266
|
*
|
|
267
|
+
* @see {@link Kind} — apply concrete types to a `WithGenerics` definition
|
|
268
|
+
* @see {@link taggedEnum} — runtime constructors
|
|
269
|
+
*
|
|
198
270
|
* @since 2.0.0
|
|
199
|
-
* @category models
|
|
200
271
|
*/
|
|
201
272
|
export interface WithGenerics<Count extends number> {
|
|
202
273
|
readonly taggedEnum: { readonly _tag: string }
|
|
@@ -209,45 +280,33 @@ export declare namespace TaggedEnum {
|
|
|
209
280
|
}
|
|
210
281
|
|
|
211
282
|
/**
|
|
212
|
-
*
|
|
283
|
+
* Applies concrete type arguments to a `WithGenerics` definition, producing
|
|
284
|
+
* the resulting tagged union type.
|
|
285
|
+
*
|
|
286
|
+
* - Use to refer to a specific instantiation of a generic tagged enum in
|
|
287
|
+
* type signatures.
|
|
213
288
|
*
|
|
214
|
-
*
|
|
215
|
-
* parameters to create a concrete tagged enum type.
|
|
289
|
+
* **Example** (applying generics)
|
|
216
290
|
*
|
|
217
|
-
* @example
|
|
218
291
|
* ```ts
|
|
219
292
|
* import type { Data } from "effect"
|
|
220
293
|
*
|
|
221
|
-
* // Define a generic Option type
|
|
222
294
|
* type Option<A> = Data.TaggedEnum<{
|
|
223
295
|
* None: {}
|
|
224
296
|
* Some: { readonly value: A }
|
|
225
297
|
* }>
|
|
226
|
-
*
|
|
227
|
-
* interface OptionDefinition extends Data.TaggedEnum.WithGenerics<1> {
|
|
298
|
+
* interface OptionDef extends Data.TaggedEnum.WithGenerics<1> {
|
|
228
299
|
* readonly taggedEnum: Option<this["A"]>
|
|
229
300
|
* }
|
|
230
301
|
*
|
|
231
|
-
* //
|
|
232
|
-
* type StringOption = Data.TaggedEnum.Kind<
|
|
233
|
-
* //
|
|
234
|
-
*
|
|
235
|
-
* type NumberOption = Data.TaggedEnum.Kind<OptionDefinition, number>
|
|
236
|
-
* // Result: { readonly _tag: "None" } | { readonly _tag: "Some"; readonly value: number }
|
|
237
|
-
*
|
|
238
|
-
* // Usage in type-safe functions
|
|
239
|
-
* const processOption = (opt: StringOption): string => {
|
|
240
|
-
* switch (opt._tag) {
|
|
241
|
-
* case "None":
|
|
242
|
-
* return "No value"
|
|
243
|
-
* case "Some":
|
|
244
|
-
* return `Value: ${opt.value}`
|
|
245
|
-
* }
|
|
246
|
-
* }
|
|
302
|
+
* // Resolve to the concrete union for `string`
|
|
303
|
+
* type StringOption = Data.TaggedEnum.Kind<OptionDef, string>
|
|
304
|
+
* // { _tag: "None" } | { _tag: "Some"; value: string }
|
|
247
305
|
* ```
|
|
248
306
|
*
|
|
307
|
+
* @see {@link WithGenerics} — define the generic shape
|
|
308
|
+
*
|
|
249
309
|
* @since 2.0.0
|
|
250
|
-
* @category models
|
|
251
310
|
*/
|
|
252
311
|
export type Kind<
|
|
253
312
|
Z extends WithGenerics<number>,
|
|
@@ -263,30 +322,30 @@ export declare namespace TaggedEnum {
|
|
|
263
322
|
})["taggedEnum"]
|
|
264
323
|
|
|
265
324
|
/**
|
|
266
|
-
* Extracts the argument
|
|
325
|
+
* Extracts the constructor argument type for a specific variant of a tagged
|
|
326
|
+
* union.
|
|
267
327
|
*
|
|
268
|
-
*
|
|
269
|
-
*
|
|
328
|
+
* Returns `void` if the variant has no fields beyond `_tag`.
|
|
329
|
+
*
|
|
330
|
+
* **Example** (extracting variant args)
|
|
270
331
|
*
|
|
271
|
-
* @example
|
|
272
332
|
* ```ts
|
|
273
333
|
* import type { Data } from "effect"
|
|
274
334
|
*
|
|
275
335
|
* type Result =
|
|
276
|
-
* | { readonly _tag: "
|
|
277
|
-
* | { readonly _tag: "
|
|
336
|
+
* | { readonly _tag: "Ok"; readonly value: number }
|
|
337
|
+
* | { readonly _tag: "Err"; readonly error: string }
|
|
278
338
|
*
|
|
279
|
-
*
|
|
280
|
-
*
|
|
281
|
-
* // Result: { readonly value: number }
|
|
339
|
+
* type OkArgs = Data.TaggedEnum.Args<Result, "Ok">
|
|
340
|
+
* // { readonly value: number }
|
|
282
341
|
*
|
|
283
|
-
*
|
|
284
|
-
*
|
|
285
|
-
* // Result: { readonly error: string }
|
|
342
|
+
* type ErrArgs = Data.TaggedEnum.Args<Result, "Err">
|
|
343
|
+
* // { readonly error: string }
|
|
286
344
|
* ```
|
|
287
345
|
*
|
|
346
|
+
* @see {@link Value} — extracts the full variant type (including `_tag`)
|
|
347
|
+
*
|
|
288
348
|
* @since 2.0.0
|
|
289
|
-
* @category types
|
|
290
349
|
*/
|
|
291
350
|
export type Args<
|
|
292
351
|
A extends { readonly _tag: string },
|
|
@@ -299,30 +358,24 @@ export declare namespace TaggedEnum {
|
|
|
299
358
|
: never
|
|
300
359
|
|
|
301
360
|
/**
|
|
302
|
-
* Extracts the
|
|
361
|
+
* Extracts the full variant type (including `_tag`) for a specific tag.
|
|
303
362
|
*
|
|
304
|
-
*
|
|
305
|
-
* for a specific variant of a tagged enum.
|
|
363
|
+
* **Example** (extracting a variant type)
|
|
306
364
|
*
|
|
307
|
-
* @example
|
|
308
365
|
* ```ts
|
|
309
366
|
* import type { Data } from "effect"
|
|
310
367
|
*
|
|
311
368
|
* type Result =
|
|
312
|
-
* | { readonly _tag: "
|
|
313
|
-
* | { readonly _tag: "
|
|
369
|
+
* | { readonly _tag: "Ok"; readonly value: number }
|
|
370
|
+
* | { readonly _tag: "Err"; readonly error: string }
|
|
314
371
|
*
|
|
315
|
-
*
|
|
316
|
-
*
|
|
317
|
-
* // Result: { readonly _tag: "Success"; readonly value: number }
|
|
318
|
-
*
|
|
319
|
-
* // Extract complete Failure type
|
|
320
|
-
* type FailureValue = Data.TaggedEnum.Value<Result, "Failure">
|
|
321
|
-
* // Result: { readonly _tag: "Failure"; readonly error: string }
|
|
372
|
+
* type OkVariant = Data.TaggedEnum.Value<Result, "Ok">
|
|
373
|
+
* // { readonly _tag: "Ok"; readonly value: number }
|
|
322
374
|
* ```
|
|
323
375
|
*
|
|
376
|
+
* @see {@link Args} — extracts fields without `_tag`
|
|
377
|
+
*
|
|
324
378
|
* @since 2.0.0
|
|
325
|
-
* @category types
|
|
326
379
|
*/
|
|
327
380
|
export type Value<
|
|
328
381
|
A extends { readonly _tag: string },
|
|
@@ -330,37 +383,40 @@ export declare namespace TaggedEnum {
|
|
|
330
383
|
> = Extract<A, { readonly _tag: K }>
|
|
331
384
|
|
|
332
385
|
/**
|
|
333
|
-
*
|
|
386
|
+
* The full constructor-object type returned by {@link taggedEnum}.
|
|
334
387
|
*
|
|
335
|
-
*
|
|
336
|
-
* -
|
|
337
|
-
* - `$is`
|
|
338
|
-
* - `$match`
|
|
388
|
+
* Includes:
|
|
389
|
+
* - A constructor function for each variant (keyed by tag name)
|
|
390
|
+
* - `$is(tag)` — returns a type-guard for the given variant
|
|
391
|
+
* - `$match` — exhaustive pattern matching (data-last or data-first)
|
|
392
|
+
*
|
|
393
|
+
* **Example** (using the constructor object)
|
|
339
394
|
*
|
|
340
|
-
* @example
|
|
341
395
|
* ```ts
|
|
342
396
|
* import { Data } from "effect"
|
|
343
397
|
*
|
|
344
|
-
* type
|
|
345
|
-
* | { readonly _tag: "
|
|
346
|
-
* | { readonly _tag: "
|
|
398
|
+
* type Shape =
|
|
399
|
+
* | { readonly _tag: "Circle"; readonly radius: number }
|
|
400
|
+
* | { readonly _tag: "Rect"; readonly w: number; readonly h: number }
|
|
347
401
|
*
|
|
348
|
-
* const { $is, $match
|
|
402
|
+
* const { Circle, Rect, $is, $match } = Data.taggedEnum<Shape>()
|
|
349
403
|
*
|
|
350
|
-
* const
|
|
404
|
+
* const shape = Circle({ radius: 10 })
|
|
351
405
|
*
|
|
352
|
-
* // Type
|
|
353
|
-
* if ($is("
|
|
354
|
-
* console.log(
|
|
406
|
+
* // Type guard
|
|
407
|
+
* if ($is("Circle")(shape)) {
|
|
408
|
+
* console.log(shape.radius)
|
|
355
409
|
* }
|
|
356
410
|
*
|
|
357
411
|
* // Pattern matching
|
|
358
|
-
* const
|
|
359
|
-
*
|
|
360
|
-
*
|
|
412
|
+
* const label = $match(shape, {
|
|
413
|
+
* Circle: (s) => `circle r=${s.radius}`,
|
|
414
|
+
* Rect: (s) => `rect ${s.w}x${s.h}`
|
|
361
415
|
* })
|
|
362
416
|
* ```
|
|
363
417
|
*
|
|
418
|
+
* @see {@link taggedEnum} — creates a `Constructor`
|
|
419
|
+
*
|
|
364
420
|
* @since 3.1.0
|
|
365
421
|
* @category types
|
|
366
422
|
*/
|
|
@@ -399,52 +455,26 @@ export declare namespace TaggedEnum {
|
|
|
399
455
|
>
|
|
400
456
|
|
|
401
457
|
/**
|
|
458
|
+
* Function type that constructs a tagged-union variant from its fields,
|
|
459
|
+
* excluding the keys listed in `Tag`.
|
|
460
|
+
*
|
|
461
|
+
* Returns `void` when no fields remain after excluding `Tag` keys.
|
|
462
|
+
*
|
|
402
463
|
* @since 4.0.0
|
|
403
|
-
* @category types
|
|
404
464
|
*/
|
|
405
465
|
export type ConstructorFrom<A, Tag extends keyof A = never> = (
|
|
406
|
-
args: Types.
|
|
407
|
-
: { readonly [P in keyof A as P extends Tag ? never : P]: A[P] }
|
|
466
|
+
args: Types.VoidIfEmpty<{ readonly [P in keyof A as P extends Tag ? never : P]: A[P] }>
|
|
408
467
|
) => A
|
|
409
468
|
|
|
410
469
|
/**
|
|
411
|
-
*
|
|
412
|
-
*
|
|
413
|
-
* This interface provides `$is` and `$match` utilities for tagged enums
|
|
414
|
-
* that use generics, ensuring type safety across different generic instantiations.
|
|
415
|
-
*
|
|
416
|
-
* @example
|
|
417
|
-
* ```ts
|
|
418
|
-
* import { Data } from "effect"
|
|
419
|
-
*
|
|
420
|
-
* type Result<E, A> = Data.TaggedEnum<{
|
|
421
|
-
* Failure: { readonly error: E }
|
|
422
|
-
* Success: { readonly value: A }
|
|
423
|
-
* }>
|
|
424
|
-
*
|
|
425
|
-
* interface ResultDefinition extends Data.TaggedEnum.WithGenerics<2> {
|
|
426
|
-
* readonly taggedEnum: Result<this["A"], this["B"]>
|
|
427
|
-
* }
|
|
428
|
-
*
|
|
429
|
-
* const { $is, $match, Failure, Success } = Data.taggedEnum<ResultDefinition>()
|
|
430
|
-
*
|
|
431
|
-
* const stringResult = Success({ value: "hello" })
|
|
432
|
-
* const numberResult = Failure({ error: 404 })
|
|
470
|
+
* Type-guard and pattern-matching interface for generic tagged enums.
|
|
433
471
|
*
|
|
434
|
-
*
|
|
435
|
-
*
|
|
436
|
-
* console.log(stringResult.value) // TypeScript knows this is string
|
|
437
|
-
* }
|
|
472
|
+
* This is the `$is` / `$match` portion of the object returned by
|
|
473
|
+
* {@link taggedEnum} when used with a {@link WithGenerics} definition.
|
|
438
474
|
*
|
|
439
|
-
*
|
|
440
|
-
* const message = $match(numberResult, {
|
|
441
|
-
* Success: ({ value }) => `Value: ${value}`,
|
|
442
|
-
* Failure: ({ error }) => `Error: ${error}`
|
|
443
|
-
* })
|
|
444
|
-
* ```
|
|
475
|
+
* @see {@link Constructor} — the non-generic equivalent
|
|
445
476
|
*
|
|
446
477
|
* @since 3.2.0
|
|
447
|
-
* @category types
|
|
448
478
|
*/
|
|
449
479
|
export interface GenericMatchers<Z extends WithGenerics<number>> {
|
|
450
480
|
readonly $is: <Tag extends Z["taggedEnum"]["_tag"]>(
|
|
@@ -496,88 +526,128 @@ export declare namespace TaggedEnum {
|
|
|
496
526
|
}
|
|
497
527
|
|
|
498
528
|
/**
|
|
499
|
-
*
|
|
529
|
+
* Creates runtime constructors, type guards, and pattern matching for a
|
|
530
|
+
* {@link TaggedEnum} type.
|
|
531
|
+
*
|
|
532
|
+
* Returns an object with:
|
|
533
|
+
* - One constructor per variant (keyed by tag name)
|
|
534
|
+
* - `$is(tag)` — returns a type-guard function
|
|
535
|
+
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
536
|
+
*
|
|
537
|
+
* - Use when you have a `TaggedEnum` type and need to construct/inspect values.
|
|
538
|
+
* - Constructors produce **plain objects** (not class instances).
|
|
539
|
+
* - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
|
|
500
540
|
*
|
|
501
|
-
*
|
|
502
|
-
* the constructor.
|
|
541
|
+
* **Example** (basic usage)
|
|
503
542
|
*
|
|
504
|
-
* @example
|
|
505
543
|
* ```ts
|
|
506
544
|
* import { Data } from "effect"
|
|
507
545
|
*
|
|
508
|
-
*
|
|
509
|
-
*
|
|
510
|
-
*
|
|
511
|
-
*
|
|
512
|
-
*
|
|
513
|
-
*
|
|
514
|
-
*
|
|
515
|
-
*
|
|
516
|
-
*
|
|
517
|
-
*
|
|
518
|
-
*
|
|
519
|
-
*
|
|
520
|
-
*
|
|
521
|
-
* const
|
|
546
|
+
* type HttpError = Data.TaggedEnum<{
|
|
547
|
+
* BadRequest: { readonly message: string }
|
|
548
|
+
* NotFound: { readonly url: string }
|
|
549
|
+
* }>
|
|
550
|
+
*
|
|
551
|
+
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
552
|
+
*
|
|
553
|
+
* const err = NotFound({ url: "/missing" })
|
|
554
|
+
*
|
|
555
|
+
* // Type guard
|
|
556
|
+
* console.log($is("NotFound")(err)) // true
|
|
557
|
+
*
|
|
558
|
+
* // Pattern matching
|
|
559
|
+
* const msg = $match(err, {
|
|
560
|
+
* BadRequest: (e) => e.message,
|
|
561
|
+
* NotFound: (e) => `${e.url} not found`
|
|
562
|
+
* })
|
|
563
|
+
* console.log(msg) // "/missing not found"
|
|
522
564
|
* ```
|
|
523
565
|
*
|
|
524
|
-
*
|
|
566
|
+
* **Example** (generic tagged enum)
|
|
567
|
+
*
|
|
568
|
+
* ```ts
|
|
525
569
|
* import { Data } from "effect"
|
|
526
570
|
*
|
|
527
571
|
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
528
572
|
* Failure: { readonly error: E }
|
|
529
573
|
* Success: { readonly value: A }
|
|
530
574
|
* }>
|
|
531
|
-
* interface
|
|
575
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
532
576
|
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
533
577
|
* }
|
|
534
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
578
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
535
579
|
*
|
|
536
|
-
* const
|
|
580
|
+
* const ok = Success({ value: 42 })
|
|
581
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
582
|
+
* ```
|
|
583
|
+
*
|
|
584
|
+
* @see {@link TaggedEnum} — the type-level companion
|
|
585
|
+
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
586
|
+
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
537
587
|
*
|
|
538
588
|
* @category constructors
|
|
539
589
|
* @since 2.0.0
|
|
540
590
|
*/
|
|
541
591
|
export const taggedEnum: {
|
|
542
592
|
/**
|
|
543
|
-
*
|
|
593
|
+
* Creates runtime constructors, type guards, and pattern matching for a
|
|
594
|
+
* {@link TaggedEnum} type.
|
|
595
|
+
*
|
|
596
|
+
* Returns an object with:
|
|
597
|
+
* - One constructor per variant (keyed by tag name)
|
|
598
|
+
* - `$is(tag)` — returns a type-guard function
|
|
599
|
+
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
544
600
|
*
|
|
545
|
-
*
|
|
546
|
-
*
|
|
601
|
+
* - Use when you have a `TaggedEnum` type and need to construct/inspect values.
|
|
602
|
+
* - Constructors produce **plain objects** (not class instances).
|
|
603
|
+
* - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
|
|
604
|
+
*
|
|
605
|
+
* **Example** (basic usage)
|
|
547
606
|
*
|
|
548
|
-
* @example
|
|
549
607
|
* ```ts
|
|
550
608
|
* import { Data } from "effect"
|
|
551
609
|
*
|
|
552
|
-
*
|
|
553
|
-
*
|
|
554
|
-
*
|
|
555
|
-
*
|
|
556
|
-
*
|
|
557
|
-
*
|
|
558
|
-
*
|
|
559
|
-
*
|
|
560
|
-
*
|
|
561
|
-
*
|
|
562
|
-
*
|
|
563
|
-
*
|
|
564
|
-
*
|
|
565
|
-
* const
|
|
610
|
+
* type HttpError = Data.TaggedEnum<{
|
|
611
|
+
* BadRequest: { readonly message: string }
|
|
612
|
+
* NotFound: { readonly url: string }
|
|
613
|
+
* }>
|
|
614
|
+
*
|
|
615
|
+
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
616
|
+
*
|
|
617
|
+
* const err = NotFound({ url: "/missing" })
|
|
618
|
+
*
|
|
619
|
+
* // Type guard
|
|
620
|
+
* console.log($is("NotFound")(err)) // true
|
|
621
|
+
*
|
|
622
|
+
* // Pattern matching
|
|
623
|
+
* const msg = $match(err, {
|
|
624
|
+
* BadRequest: (e) => e.message,
|
|
625
|
+
* NotFound: (e) => `${e.url} not found`
|
|
626
|
+
* })
|
|
627
|
+
* console.log(msg) // "/missing not found"
|
|
566
628
|
* ```
|
|
567
629
|
*
|
|
568
|
-
*
|
|
630
|
+
* **Example** (generic tagged enum)
|
|
631
|
+
*
|
|
632
|
+
* ```ts
|
|
569
633
|
* import { Data } from "effect"
|
|
570
634
|
*
|
|
571
635
|
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
572
636
|
* Failure: { readonly error: E }
|
|
573
637
|
* Success: { readonly value: A }
|
|
574
638
|
* }>
|
|
575
|
-
* interface
|
|
639
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
576
640
|
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
577
641
|
* }
|
|
578
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
642
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
643
|
+
*
|
|
644
|
+
* const ok = Success({ value: 42 })
|
|
645
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
646
|
+
* ```
|
|
579
647
|
*
|
|
580
|
-
*
|
|
648
|
+
* @see {@link TaggedEnum} — the type-level companion
|
|
649
|
+
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
650
|
+
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
581
651
|
*
|
|
582
652
|
* @category constructors
|
|
583
653
|
* @since 2.0.0
|
|
@@ -595,44 +665,64 @@ export const taggedEnum: {
|
|
|
595
665
|
>
|
|
596
666
|
|
|
597
667
|
/**
|
|
598
|
-
*
|
|
668
|
+
* Creates runtime constructors, type guards, and pattern matching for a
|
|
669
|
+
* {@link TaggedEnum} type.
|
|
599
670
|
*
|
|
600
|
-
*
|
|
601
|
-
*
|
|
671
|
+
* Returns an object with:
|
|
672
|
+
* - One constructor per variant (keyed by tag name)
|
|
673
|
+
* - `$is(tag)` — returns a type-guard function
|
|
674
|
+
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
675
|
+
*
|
|
676
|
+
* - Use when you have a `TaggedEnum` type and need to construct/inspect values.
|
|
677
|
+
* - Constructors produce **plain objects** (not class instances).
|
|
678
|
+
* - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
|
|
679
|
+
*
|
|
680
|
+
* **Example** (basic usage)
|
|
602
681
|
*
|
|
603
|
-
* @example
|
|
604
682
|
* ```ts
|
|
605
683
|
* import { Data } from "effect"
|
|
606
684
|
*
|
|
607
|
-
*
|
|
608
|
-
*
|
|
609
|
-
*
|
|
610
|
-
*
|
|
611
|
-
*
|
|
612
|
-
*
|
|
613
|
-
*
|
|
614
|
-
*
|
|
615
|
-
*
|
|
616
|
-
*
|
|
617
|
-
*
|
|
618
|
-
*
|
|
619
|
-
*
|
|
620
|
-
* const
|
|
685
|
+
* type HttpError = Data.TaggedEnum<{
|
|
686
|
+
* BadRequest: { readonly message: string }
|
|
687
|
+
* NotFound: { readonly url: string }
|
|
688
|
+
* }>
|
|
689
|
+
*
|
|
690
|
+
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
691
|
+
*
|
|
692
|
+
* const err = NotFound({ url: "/missing" })
|
|
693
|
+
*
|
|
694
|
+
* // Type guard
|
|
695
|
+
* console.log($is("NotFound")(err)) // true
|
|
696
|
+
*
|
|
697
|
+
* // Pattern matching
|
|
698
|
+
* const msg = $match(err, {
|
|
699
|
+
* BadRequest: (e) => e.message,
|
|
700
|
+
* NotFound: (e) => `${e.url} not found`
|
|
701
|
+
* })
|
|
702
|
+
* console.log(msg) // "/missing not found"
|
|
621
703
|
* ```
|
|
622
704
|
*
|
|
623
|
-
*
|
|
705
|
+
* **Example** (generic tagged enum)
|
|
706
|
+
*
|
|
707
|
+
* ```ts
|
|
624
708
|
* import { Data } from "effect"
|
|
625
709
|
*
|
|
626
710
|
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
627
711
|
* Failure: { readonly error: E }
|
|
628
712
|
* Success: { readonly value: A }
|
|
629
713
|
* }>
|
|
630
|
-
* interface
|
|
714
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
631
715
|
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
632
716
|
* }
|
|
633
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
717
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
634
718
|
*
|
|
635
|
-
* const
|
|
719
|
+
* const ok = Success({ value: 42 })
|
|
720
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
721
|
+
* ```
|
|
722
|
+
*
|
|
723
|
+
* @see {@link TaggedEnum} — the type-level companion
|
|
724
|
+
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
725
|
+
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
636
726
|
*
|
|
637
727
|
* @category constructors
|
|
638
728
|
* @since 2.0.0
|
|
@@ -650,44 +740,64 @@ export const taggedEnum: {
|
|
|
650
740
|
>
|
|
651
741
|
|
|
652
742
|
/**
|
|
653
|
-
*
|
|
743
|
+
* Creates runtime constructors, type guards, and pattern matching for a
|
|
744
|
+
* {@link TaggedEnum} type.
|
|
745
|
+
*
|
|
746
|
+
* Returns an object with:
|
|
747
|
+
* - One constructor per variant (keyed by tag name)
|
|
748
|
+
* - `$is(tag)` — returns a type-guard function
|
|
749
|
+
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
654
750
|
*
|
|
655
|
-
*
|
|
656
|
-
*
|
|
751
|
+
* - Use when you have a `TaggedEnum` type and need to construct/inspect values.
|
|
752
|
+
* - Constructors produce **plain objects** (not class instances).
|
|
753
|
+
* - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
|
|
754
|
+
*
|
|
755
|
+
* **Example** (basic usage)
|
|
657
756
|
*
|
|
658
|
-
* @example
|
|
659
757
|
* ```ts
|
|
660
758
|
* import { Data } from "effect"
|
|
661
759
|
*
|
|
662
|
-
*
|
|
663
|
-
*
|
|
664
|
-
*
|
|
665
|
-
*
|
|
666
|
-
*
|
|
667
|
-
*
|
|
668
|
-
*
|
|
669
|
-
*
|
|
670
|
-
*
|
|
671
|
-
*
|
|
672
|
-
*
|
|
673
|
-
*
|
|
674
|
-
*
|
|
675
|
-
* const
|
|
760
|
+
* type HttpError = Data.TaggedEnum<{
|
|
761
|
+
* BadRequest: { readonly message: string }
|
|
762
|
+
* NotFound: { readonly url: string }
|
|
763
|
+
* }>
|
|
764
|
+
*
|
|
765
|
+
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
766
|
+
*
|
|
767
|
+
* const err = NotFound({ url: "/missing" })
|
|
768
|
+
*
|
|
769
|
+
* // Type guard
|
|
770
|
+
* console.log($is("NotFound")(err)) // true
|
|
771
|
+
*
|
|
772
|
+
* // Pattern matching
|
|
773
|
+
* const msg = $match(err, {
|
|
774
|
+
* BadRequest: (e) => e.message,
|
|
775
|
+
* NotFound: (e) => `${e.url} not found`
|
|
776
|
+
* })
|
|
777
|
+
* console.log(msg) // "/missing not found"
|
|
676
778
|
* ```
|
|
677
779
|
*
|
|
678
|
-
*
|
|
780
|
+
* **Example** (generic tagged enum)
|
|
781
|
+
*
|
|
782
|
+
* ```ts
|
|
679
783
|
* import { Data } from "effect"
|
|
680
784
|
*
|
|
681
785
|
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
682
786
|
* Failure: { readonly error: E }
|
|
683
787
|
* Success: { readonly value: A }
|
|
684
788
|
* }>
|
|
685
|
-
* interface
|
|
789
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
686
790
|
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
687
791
|
* }
|
|
688
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
792
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
793
|
+
*
|
|
794
|
+
* const ok = Success({ value: 42 })
|
|
795
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
796
|
+
* ```
|
|
689
797
|
*
|
|
690
|
-
*
|
|
798
|
+
* @see {@link TaggedEnum} — the type-level companion
|
|
799
|
+
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
800
|
+
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
691
801
|
*
|
|
692
802
|
* @category constructors
|
|
693
803
|
* @since 2.0.0
|
|
@@ -705,44 +815,64 @@ export const taggedEnum: {
|
|
|
705
815
|
>
|
|
706
816
|
|
|
707
817
|
/**
|
|
708
|
-
*
|
|
818
|
+
* Creates runtime constructors, type guards, and pattern matching for a
|
|
819
|
+
* {@link TaggedEnum} type.
|
|
709
820
|
*
|
|
710
|
-
*
|
|
711
|
-
*
|
|
821
|
+
* Returns an object with:
|
|
822
|
+
* - One constructor per variant (keyed by tag name)
|
|
823
|
+
* - `$is(tag)` — returns a type-guard function
|
|
824
|
+
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
825
|
+
*
|
|
826
|
+
* - Use when you have a `TaggedEnum` type and need to construct/inspect values.
|
|
827
|
+
* - Constructors produce **plain objects** (not class instances).
|
|
828
|
+
* - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
|
|
829
|
+
*
|
|
830
|
+
* **Example** (basic usage)
|
|
712
831
|
*
|
|
713
|
-
* @example
|
|
714
832
|
* ```ts
|
|
715
833
|
* import { Data } from "effect"
|
|
716
834
|
*
|
|
717
|
-
*
|
|
718
|
-
*
|
|
719
|
-
*
|
|
720
|
-
*
|
|
721
|
-
*
|
|
722
|
-
*
|
|
723
|
-
*
|
|
724
|
-
*
|
|
725
|
-
*
|
|
726
|
-
*
|
|
727
|
-
*
|
|
728
|
-
*
|
|
729
|
-
*
|
|
730
|
-
* const
|
|
835
|
+
* type HttpError = Data.TaggedEnum<{
|
|
836
|
+
* BadRequest: { readonly message: string }
|
|
837
|
+
* NotFound: { readonly url: string }
|
|
838
|
+
* }>
|
|
839
|
+
*
|
|
840
|
+
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
841
|
+
*
|
|
842
|
+
* const err = NotFound({ url: "/missing" })
|
|
843
|
+
*
|
|
844
|
+
* // Type guard
|
|
845
|
+
* console.log($is("NotFound")(err)) // true
|
|
846
|
+
*
|
|
847
|
+
* // Pattern matching
|
|
848
|
+
* const msg = $match(err, {
|
|
849
|
+
* BadRequest: (e) => e.message,
|
|
850
|
+
* NotFound: (e) => `${e.url} not found`
|
|
851
|
+
* })
|
|
852
|
+
* console.log(msg) // "/missing not found"
|
|
731
853
|
* ```
|
|
732
854
|
*
|
|
733
|
-
*
|
|
855
|
+
* **Example** (generic tagged enum)
|
|
856
|
+
*
|
|
857
|
+
* ```ts
|
|
734
858
|
* import { Data } from "effect"
|
|
735
859
|
*
|
|
736
860
|
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
737
861
|
* Failure: { readonly error: E }
|
|
738
862
|
* Success: { readonly value: A }
|
|
739
863
|
* }>
|
|
740
|
-
* interface
|
|
864
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
741
865
|
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
742
866
|
* }
|
|
743
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
867
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
744
868
|
*
|
|
745
|
-
* const
|
|
869
|
+
* const ok = Success({ value: 42 })
|
|
870
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
871
|
+
* ```
|
|
872
|
+
*
|
|
873
|
+
* @see {@link TaggedEnum} — the type-level companion
|
|
874
|
+
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
875
|
+
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
746
876
|
*
|
|
747
877
|
* @category constructors
|
|
748
878
|
* @since 2.0.0
|
|
@@ -760,44 +890,64 @@ export const taggedEnum: {
|
|
|
760
890
|
>
|
|
761
891
|
|
|
762
892
|
/**
|
|
763
|
-
*
|
|
893
|
+
* Creates runtime constructors, type guards, and pattern matching for a
|
|
894
|
+
* {@link TaggedEnum} type.
|
|
895
|
+
*
|
|
896
|
+
* Returns an object with:
|
|
897
|
+
* - One constructor per variant (keyed by tag name)
|
|
898
|
+
* - `$is(tag)` — returns a type-guard function
|
|
899
|
+
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
764
900
|
*
|
|
765
|
-
*
|
|
766
|
-
*
|
|
901
|
+
* - Use when you have a `TaggedEnum` type and need to construct/inspect values.
|
|
902
|
+
* - Constructors produce **plain objects** (not class instances).
|
|
903
|
+
* - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
|
|
904
|
+
*
|
|
905
|
+
* **Example** (basic usage)
|
|
767
906
|
*
|
|
768
|
-
* @example
|
|
769
907
|
* ```ts
|
|
770
908
|
* import { Data } from "effect"
|
|
771
909
|
*
|
|
772
|
-
*
|
|
773
|
-
*
|
|
774
|
-
*
|
|
775
|
-
*
|
|
776
|
-
*
|
|
777
|
-
*
|
|
778
|
-
*
|
|
779
|
-
*
|
|
780
|
-
*
|
|
781
|
-
*
|
|
782
|
-
*
|
|
783
|
-
*
|
|
784
|
-
*
|
|
785
|
-
* const
|
|
910
|
+
* type HttpError = Data.TaggedEnum<{
|
|
911
|
+
* BadRequest: { readonly message: string }
|
|
912
|
+
* NotFound: { readonly url: string }
|
|
913
|
+
* }>
|
|
914
|
+
*
|
|
915
|
+
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
916
|
+
*
|
|
917
|
+
* const err = NotFound({ url: "/missing" })
|
|
918
|
+
*
|
|
919
|
+
* // Type guard
|
|
920
|
+
* console.log($is("NotFound")(err)) // true
|
|
921
|
+
*
|
|
922
|
+
* // Pattern matching
|
|
923
|
+
* const msg = $match(err, {
|
|
924
|
+
* BadRequest: (e) => e.message,
|
|
925
|
+
* NotFound: (e) => `${e.url} not found`
|
|
926
|
+
* })
|
|
927
|
+
* console.log(msg) // "/missing not found"
|
|
786
928
|
* ```
|
|
787
929
|
*
|
|
788
|
-
*
|
|
930
|
+
* **Example** (generic tagged enum)
|
|
931
|
+
*
|
|
932
|
+
* ```ts
|
|
789
933
|
* import { Data } from "effect"
|
|
790
934
|
*
|
|
791
935
|
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
792
936
|
* Failure: { readonly error: E }
|
|
793
937
|
* Success: { readonly value: A }
|
|
794
938
|
* }>
|
|
795
|
-
* interface
|
|
939
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
796
940
|
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
797
941
|
* }
|
|
798
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
942
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
943
|
+
*
|
|
944
|
+
* const ok = Success({ value: 42 })
|
|
945
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
946
|
+
* ```
|
|
799
947
|
*
|
|
800
|
-
*
|
|
948
|
+
* @see {@link TaggedEnum} — the type-level companion
|
|
949
|
+
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
950
|
+
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
801
951
|
*
|
|
802
952
|
* @category constructors
|
|
803
953
|
* @since 2.0.0
|
|
@@ -848,72 +998,86 @@ function taggedMatch<
|
|
|
848
998
|
}
|
|
849
999
|
|
|
850
1000
|
/**
|
|
851
|
-
*
|
|
1001
|
+
* Base class for yieldable errors.
|
|
852
1002
|
*
|
|
853
|
-
*
|
|
854
|
-
*
|
|
1003
|
+
* Extends `Cause.YieldableError`, so instances can be yielded inside
|
|
1004
|
+
* `Effect.gen` to fail the enclosing effect. Fields are passed as a single
|
|
1005
|
+
* object; when there are no fields the argument is optional.
|
|
1006
|
+
*
|
|
1007
|
+
* - Use for errors that do **not** need tag-based discrimination.
|
|
1008
|
+
* - If you need `Effect.catchTag` support, use {@link TaggedError} instead.
|
|
1009
|
+
* - If a `message` field is provided, it becomes the error's `.message`.
|
|
1010
|
+
*
|
|
1011
|
+
* **Example** (defining a yieldable error)
|
|
855
1012
|
*
|
|
856
|
-
* @example
|
|
857
1013
|
* ```ts
|
|
858
1014
|
* import { Data, Effect } from "effect"
|
|
859
1015
|
*
|
|
860
|
-
* class NetworkError extends Data.Error<{
|
|
1016
|
+
* class NetworkError extends Data.Error<{
|
|
1017
|
+
* readonly code: number
|
|
1018
|
+
* readonly message: string
|
|
1019
|
+
* }> {}
|
|
861
1020
|
*
|
|
862
1021
|
* const program = Effect.gen(function*() {
|
|
863
|
-
* yield* new NetworkError({ code: 500, message: "
|
|
1022
|
+
* yield* new NetworkError({ code: 500, message: "timeout" })
|
|
864
1023
|
* })
|
|
865
1024
|
*
|
|
1025
|
+
* // The effect fails with a NetworkError
|
|
866
1026
|
* Effect.runSync(Effect.exit(program))
|
|
867
|
-
* // Exit.fail(NetworkError({ code: 500, message: "Server error" }))
|
|
868
1027
|
* ```
|
|
869
1028
|
*
|
|
1029
|
+
* @see {@link TaggedError} — adds a `_tag` for `Effect.catchTag`
|
|
1030
|
+
* @see {@link Class} — non-error data class
|
|
1031
|
+
*
|
|
870
1032
|
* @category constructors
|
|
871
1033
|
* @since 2.0.0
|
|
872
1034
|
*/
|
|
873
1035
|
export const Error: new<A extends Record<string, any> = {}>(
|
|
874
|
-
args: Types.
|
|
875
|
-
: { readonly [P in keyof A]: A[P] }
|
|
1036
|
+
args: Types.VoidIfEmpty<{ readonly [P in keyof A]: A[P] }>
|
|
876
1037
|
) => Cause.YieldableError & Readonly<A> = core.Error
|
|
877
1038
|
|
|
878
1039
|
/**
|
|
879
|
-
*
|
|
1040
|
+
* Creates a tagged error class with a `_tag` discriminator.
|
|
1041
|
+
*
|
|
1042
|
+
* Like {@link Error}, but instances also carry a `readonly _tag` property,
|
|
1043
|
+
* enabling `Effect.catchTag` and `Effect.catchTags` for tag-based recovery.
|
|
1044
|
+
* The `_tag` is excluded from the constructor argument.
|
|
1045
|
+
*
|
|
1046
|
+
* - Use for domain errors in Effect applications where you want
|
|
1047
|
+
* discriminated-union error handling.
|
|
1048
|
+
* - Yielding an instance inside `Effect.gen` fails the effect with this error.
|
|
880
1049
|
*
|
|
881
|
-
*
|
|
882
|
-
* `Cause.YieldableError` and have structural equality semantics.
|
|
1050
|
+
* **Example** (tag-based error recovery)
|
|
883
1051
|
*
|
|
884
|
-
* @example
|
|
885
1052
|
* ```ts
|
|
886
|
-
* import { Data, Effect
|
|
1053
|
+
* import { Data, Effect } from "effect"
|
|
887
1054
|
*
|
|
888
|
-
* class
|
|
889
|
-
*
|
|
890
|
-
* message: string
|
|
1055
|
+
* class NotFound extends Data.TaggedError("NotFound")<{
|
|
1056
|
+
* readonly resource: string
|
|
891
1057
|
* }> {}
|
|
892
1058
|
*
|
|
893
|
-
* class
|
|
894
|
-
*
|
|
895
|
-
* message: string
|
|
1059
|
+
* class Forbidden extends Data.TaggedError("Forbidden")<{
|
|
1060
|
+
* readonly reason: string
|
|
896
1061
|
* }> {}
|
|
897
1062
|
*
|
|
898
1063
|
* const program = Effect.gen(function*() {
|
|
899
|
-
* yield* new
|
|
1064
|
+
* yield* new NotFound({ resource: "/users/42" })
|
|
900
1065
|
* })
|
|
901
1066
|
*
|
|
902
|
-
* const
|
|
903
|
-
*
|
|
904
|
-
*
|
|
905
|
-
* "NetworkError",
|
|
906
|
-
* (error) => Effect.succeed(`Network error: ${error.message}`)
|
|
907
|
-
* )
|
|
1067
|
+
* const recovered = program.pipe(
|
|
1068
|
+
* Effect.catchTag("NotFound", (e) =>
|
|
1069
|
+
* Effect.succeed(`missing: ${e.resource}`))
|
|
908
1070
|
* )
|
|
909
1071
|
* ```
|
|
910
1072
|
*
|
|
1073
|
+
* @see {@link Error} — without a `_tag`
|
|
1074
|
+
* @see {@link TaggedClass} — tagged class that is not an error
|
|
1075
|
+
*
|
|
911
1076
|
* @category constructors
|
|
912
1077
|
* @since 2.0.0
|
|
913
1078
|
*/
|
|
914
1079
|
export const TaggedError: <Tag extends string>(
|
|
915
1080
|
tag: Tag
|
|
916
1081
|
) => new<A extends Record<string, any> = {}>(
|
|
917
|
-
args: Types.
|
|
918
|
-
: { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }
|
|
1082
|
+
args: Types.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>
|
|
919
1083
|
) => Cause.YieldableError & { readonly _tag: Tag } & Readonly<A> = core.TaggedError as any
|