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/dist/Data.d.ts
CHANGED
|
@@ -1,118 +1,190 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Immutable data constructors with discriminated-union support.
|
|
3
|
+
*
|
|
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)
|
|
5
46
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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";
|
|
75
|
+
import * as Pipeable from "./Pipeable.ts";
|
|
15
76
|
import type * as Types from "./Types.ts";
|
|
16
77
|
import type { Unify } from "./Unify.ts";
|
|
17
78
|
/**
|
|
18
|
-
*
|
|
79
|
+
* Base class for immutable data types.
|
|
80
|
+
*
|
|
81
|
+
* Extend `Class` with a type parameter to declare fields. The constructor
|
|
82
|
+
* accepts those fields as a single object argument. When there are no fields
|
|
83
|
+
* the argument is optional.
|
|
84
|
+
*
|
|
85
|
+
* - Use when you need a lightweight immutable value type with `.pipe()` support.
|
|
86
|
+
* - Instances are `Readonly` and `Pipeable`.
|
|
87
|
+
* - If you also need a `_tag` discriminator, use {@link TaggedClass} instead.
|
|
88
|
+
* - If you need a yieldable error, use {@link Error} or {@link TaggedError}.
|
|
89
|
+
*
|
|
90
|
+
* **Example** (defining a value class)
|
|
19
91
|
*
|
|
20
|
-
* @example
|
|
21
92
|
* ```ts
|
|
22
93
|
* import { Data, Equal } from "effect"
|
|
23
|
-
* import * as assert from "node:assert"
|
|
24
94
|
*
|
|
25
95
|
* class Person extends Data.Class<{ readonly name: string }> {}
|
|
26
96
|
*
|
|
27
|
-
* // Creating instances of Person
|
|
28
97
|
* const mike1 = new Person({ name: "Mike" })
|
|
29
98
|
* const mike2 = new Person({ name: "Mike" })
|
|
30
|
-
* const john = new Person({ name: "John" })
|
|
31
99
|
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* assert.deepStrictEqual(Equal.equals(mike1, john), false)
|
|
100
|
+
* console.log(Equal.equals(mike1, mike2))
|
|
101
|
+
* // true
|
|
35
102
|
* ```
|
|
36
103
|
*
|
|
37
|
-
* @
|
|
104
|
+
* @see {@link TaggedClass} — adds a `_tag` field
|
|
105
|
+
* @see {@link Error} — yieldable error variant
|
|
106
|
+
*
|
|
38
107
|
* @category constructors
|
|
108
|
+
* @since 2.0.0
|
|
39
109
|
*/
|
|
40
|
-
export declare const Class: new <A extends Record<string, any> = {}>(args: Types.
|
|
110
|
+
export declare const Class: new <A extends Record<string, any> = {}>(args: Types.VoidIfEmpty<{
|
|
41
111
|
readonly [P in keyof A]: A[P];
|
|
42
|
-
}) => Readonly<A
|
|
112
|
+
}>) => Readonly<A> & Pipeable.Pipeable;
|
|
43
113
|
/**
|
|
44
|
-
*
|
|
114
|
+
* Base class for immutable data types with a `_tag` discriminator.
|
|
45
115
|
*
|
|
46
|
-
* @
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* import * as assert from "node:assert"
|
|
116
|
+
* Like {@link Class}, but the resulting instances also carry a
|
|
117
|
+
* `readonly _tag: Tag` property. The `_tag` is excluded from the constructor
|
|
118
|
+
* argument.
|
|
50
119
|
*
|
|
51
|
-
*
|
|
120
|
+
* - Use when you need a single-variant tagged type or an ad-hoc discriminator.
|
|
121
|
+
* - For multi-variant unions, prefer {@link TaggedEnum} + {@link taggedEnum}.
|
|
122
|
+
* - For yieldable errors, use {@link TaggedError}.
|
|
52
123
|
*
|
|
53
|
-
*
|
|
54
|
-
* const mike1 = new Person({ name: "Mike" })
|
|
55
|
-
* const mike2 = new Person({ name: "Mike" })
|
|
56
|
-
* const john = new Person({ name: "John" })
|
|
124
|
+
* **Example** (defining a tagged class)
|
|
57
125
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* assert.deepStrictEqual(Equal.equals(mike1, john), false)
|
|
126
|
+
* ```ts
|
|
127
|
+
* import { Data } from "effect"
|
|
61
128
|
*
|
|
62
|
-
*
|
|
129
|
+
* class Person extends Data.TaggedClass("Person")<{
|
|
130
|
+
* readonly name: string
|
|
131
|
+
* }> {}
|
|
132
|
+
*
|
|
133
|
+
* const mike = new Person({ name: "Mike" })
|
|
134
|
+
* console.log(mike._tag)
|
|
135
|
+
* // "Person"
|
|
63
136
|
* ```
|
|
64
137
|
*
|
|
65
|
-
* @
|
|
138
|
+
* @see {@link Class} — without a `_tag`
|
|
139
|
+
* @see {@link TaggedError} — tagged error variant
|
|
140
|
+
* @see {@link TaggedEnum} — multi-variant unions
|
|
141
|
+
*
|
|
66
142
|
* @category constructors
|
|
143
|
+
* @since 2.0.0
|
|
67
144
|
*/
|
|
68
|
-
export declare const TaggedClass: <Tag extends string>(tag: Tag) => new <A extends Record<string, any> = {}>(args: Types.
|
|
145
|
+
export declare const TaggedClass: <Tag extends string>(tag: Tag) => new <A extends Record<string, any> = {}>(args: Types.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Readonly<A> & {
|
|
69
146
|
readonly _tag: Tag;
|
|
70
|
-
};
|
|
147
|
+
} & Pipeable.Pipeable;
|
|
71
148
|
/**
|
|
72
|
-
*
|
|
149
|
+
* Transforms a record of variant definitions into a discriminated union type.
|
|
150
|
+
*
|
|
151
|
+
* Each key in the record becomes a variant with `readonly _tag` set to that
|
|
152
|
+
* key. Use with {@link taggedEnum} to get runtime constructors, type guards,
|
|
153
|
+
* and pattern matching.
|
|
73
154
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
155
|
+
* - Use when you have two or more variants that share a common `_tag`
|
|
156
|
+
* discriminator.
|
|
157
|
+
* - Variant records must **not** include a `_tag` property — it is added
|
|
158
|
+
* automatically.
|
|
159
|
+
* - For generic tagged enums, see {@link TaggedEnum.WithGenerics}.
|
|
160
|
+
*
|
|
161
|
+
* **Example** (defining a tagged enum)
|
|
76
162
|
*
|
|
77
|
-
* @example
|
|
78
163
|
* ```ts
|
|
79
164
|
* import { Data } from "effect"
|
|
80
165
|
*
|
|
81
|
-
* // Define a tagged enum type
|
|
82
166
|
* type HttpError = Data.TaggedEnum<{
|
|
83
167
|
* BadRequest: { readonly status: 400; readonly message: string }
|
|
84
|
-
* NotFound: { readonly status: 404
|
|
85
|
-
* InternalError: { readonly status: 500; readonly details: string }
|
|
168
|
+
* NotFound: { readonly status: 404 }
|
|
86
169
|
* }>
|
|
87
170
|
*
|
|
88
|
-
* //
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
* readonly status: 404
|
|
98
|
-
* readonly message: string
|
|
99
|
-
* }
|
|
100
|
-
* | {
|
|
101
|
-
* readonly _tag: "InternalError"
|
|
102
|
-
* readonly status: 500
|
|
103
|
-
* readonly details: string
|
|
104
|
-
* }
|
|
105
|
-
*
|
|
106
|
-
* // Usage with constructors
|
|
107
|
-
* const { BadRequest, InternalError, NotFound } = Data.taggedEnum<HttpError>()
|
|
108
|
-
*
|
|
109
|
-
* const error: HttpError = BadRequest({ status: 400, message: "Invalid request" })
|
|
110
|
-
* console.log(error._tag) // "BadRequest"
|
|
111
|
-
* console.log(error.status) // 400
|
|
171
|
+
* // Equivalent to:
|
|
172
|
+
* // | { readonly _tag: "BadRequest"; readonly status: 400; readonly message: string }
|
|
173
|
+
* // | { readonly _tag: "NotFound"; readonly status: 404 }
|
|
174
|
+
*
|
|
175
|
+
* const { BadRequest, NotFound } = Data.taggedEnum<HttpError>()
|
|
176
|
+
*
|
|
177
|
+
* const err = BadRequest({ status: 400, message: "missing id" })
|
|
178
|
+
* console.log(err._tag)
|
|
179
|
+
* // "BadRequest"
|
|
112
180
|
* ```
|
|
113
181
|
*
|
|
114
|
-
* @
|
|
182
|
+
* @see {@link taggedEnum} — runtime constructors for a `TaggedEnum`
|
|
183
|
+
* @see {@link TaggedEnum.WithGenerics} — generic tagged enums
|
|
184
|
+
* @see {@link TaggedEnum.Constructor} — the constructor object type
|
|
185
|
+
*
|
|
115
186
|
* @category models
|
|
187
|
+
* @since 2.0.0
|
|
116
188
|
*/
|
|
117
189
|
export type TaggedEnum<A extends Record<string, Record<string, any>> & UntaggedChildren<A>> = keyof A extends infer Tag ? Tag extends keyof A ? Types.Simplify<{
|
|
118
190
|
readonly _tag: Tag;
|
|
@@ -122,52 +194,53 @@ export type TaggedEnum<A extends Record<string, Record<string, any>> & UntaggedC
|
|
|
122
194
|
type ChildrenAreTagged<A> = keyof A extends infer K ? K extends keyof A ? "_tag" extends keyof A[K] ? true : false : never : never;
|
|
123
195
|
type UntaggedChildren<A> = true extends ChildrenAreTagged<A> ? "It looks like you're trying to create a tagged enum, but one or more of its members already has a `_tag` property." : unknown;
|
|
124
196
|
/**
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
* This namespace contains types and utilities for working with tagged enums,
|
|
128
|
-
* which are discriminated unions with structural equality semantics.
|
|
129
|
-
*
|
|
130
|
-
* @example
|
|
131
|
-
* ```ts
|
|
132
|
-
* import { Data } from "effect"
|
|
197
|
+
* Namespace for `TaggedEnum` utility types.
|
|
133
198
|
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
199
|
+
* Provides helper types for:
|
|
200
|
+
* - Generic tagged enums ({@link TaggedEnum.WithGenerics}, {@link TaggedEnum.Kind})
|
|
201
|
+
* - Extracting constructor arguments ({@link TaggedEnum.Args}) and variant
|
|
202
|
+
* values ({@link TaggedEnum.Value})
|
|
203
|
+
* - Full constructor objects ({@link TaggedEnum.Constructor})
|
|
139
204
|
*
|
|
140
|
-
* const result = Success({ value: 42 })
|
|
141
|
-
* console.log(result._tag) // "Success"
|
|
142
|
-
* console.log(result.value) // 42
|
|
143
|
-
* ```
|
|
144
|
-
*
|
|
145
|
-
* @since 2.0.0
|
|
146
205
|
* @category types
|
|
206
|
+
* @since 2.0.0
|
|
147
207
|
*/
|
|
148
208
|
export declare namespace TaggedEnum {
|
|
149
209
|
/**
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
210
|
+
* Defines a tagged enum shape that accepts generic type parameters.
|
|
211
|
+
*
|
|
212
|
+
* Extend this interface and set `taggedEnum` to your union type, using
|
|
213
|
+
* `this["A"]`, `this["B"]`, etc. as placeholders for the generics. The
|
|
214
|
+
* `Count` parameter declares how many generics are used (up to 4).
|
|
215
|
+
*
|
|
216
|
+
* - Use when variant payloads need to be parameterized (e.g., `Result<E, A>`).
|
|
217
|
+
* - Pass the interface (not the type alias) to {@link taggedEnum} to get
|
|
218
|
+
* generic-aware constructors.
|
|
219
|
+
*
|
|
220
|
+
* **Example** (generic tagged enum)
|
|
153
221
|
*
|
|
154
|
-
* @example
|
|
155
222
|
* ```ts
|
|
156
|
-
* import
|
|
223
|
+
* import { Data } from "effect"
|
|
157
224
|
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
160
|
-
* readonly
|
|
161
|
-
*
|
|
162
|
-
*
|
|
225
|
+
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
226
|
+
* Failure: { readonly error: E }
|
|
227
|
+
* Success: { readonly value: A }
|
|
228
|
+
* }>
|
|
229
|
+
*
|
|
230
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
231
|
+
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
163
232
|
* }
|
|
164
233
|
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
234
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
235
|
+
*
|
|
236
|
+
* const ok = Success({ value: 42 })
|
|
237
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
167
238
|
* ```
|
|
168
239
|
*
|
|
240
|
+
* @see {@link Kind} — apply concrete types to a `WithGenerics` definition
|
|
241
|
+
* @see {@link taggedEnum} — runtime constructors
|
|
242
|
+
*
|
|
169
243
|
* @since 2.0.0
|
|
170
|
-
* @category models
|
|
171
244
|
*/
|
|
172
245
|
interface WithGenerics<Count extends number> {
|
|
173
246
|
readonly taggedEnum: {
|
|
@@ -180,45 +253,33 @@ export declare namespace TaggedEnum {
|
|
|
180
253
|
readonly D: unknown;
|
|
181
254
|
}
|
|
182
255
|
/**
|
|
183
|
-
*
|
|
256
|
+
* Applies concrete type arguments to a `WithGenerics` definition, producing
|
|
257
|
+
* the resulting tagged union type.
|
|
258
|
+
*
|
|
259
|
+
* - Use to refer to a specific instantiation of a generic tagged enum in
|
|
260
|
+
* type signatures.
|
|
184
261
|
*
|
|
185
|
-
*
|
|
186
|
-
* parameters to create a concrete tagged enum type.
|
|
262
|
+
* **Example** (applying generics)
|
|
187
263
|
*
|
|
188
|
-
* @example
|
|
189
264
|
* ```ts
|
|
190
265
|
* import type { Data } from "effect"
|
|
191
266
|
*
|
|
192
|
-
* // Define a generic Option type
|
|
193
267
|
* type Option<A> = Data.TaggedEnum<{
|
|
194
268
|
* None: {}
|
|
195
269
|
* Some: { readonly value: A }
|
|
196
270
|
* }>
|
|
197
|
-
*
|
|
198
|
-
* interface OptionDefinition extends Data.TaggedEnum.WithGenerics<1> {
|
|
271
|
+
* interface OptionDef extends Data.TaggedEnum.WithGenerics<1> {
|
|
199
272
|
* readonly taggedEnum: Option<this["A"]>
|
|
200
273
|
* }
|
|
201
274
|
*
|
|
202
|
-
* //
|
|
203
|
-
* type StringOption = Data.TaggedEnum.Kind<
|
|
204
|
-
* //
|
|
205
|
-
*
|
|
206
|
-
* type NumberOption = Data.TaggedEnum.Kind<OptionDefinition, number>
|
|
207
|
-
* // Result: { readonly _tag: "None" } | { readonly _tag: "Some"; readonly value: number }
|
|
208
|
-
*
|
|
209
|
-
* // Usage in type-safe functions
|
|
210
|
-
* const processOption = (opt: StringOption): string => {
|
|
211
|
-
* switch (opt._tag) {
|
|
212
|
-
* case "None":
|
|
213
|
-
* return "No value"
|
|
214
|
-
* case "Some":
|
|
215
|
-
* return `Value: ${opt.value}`
|
|
216
|
-
* }
|
|
217
|
-
* }
|
|
275
|
+
* // Resolve to the concrete union for `string`
|
|
276
|
+
* type StringOption = Data.TaggedEnum.Kind<OptionDef, string>
|
|
277
|
+
* // { _tag: "None" } | { _tag: "Some"; value: string }
|
|
218
278
|
* ```
|
|
219
279
|
*
|
|
280
|
+
* @see {@link WithGenerics} — define the generic shape
|
|
281
|
+
*
|
|
220
282
|
* @since 2.0.0
|
|
221
|
-
* @category models
|
|
222
283
|
*/
|
|
223
284
|
type Kind<Z extends WithGenerics<number>, A = unknown, B = unknown, C = unknown, D = unknown> = (Z & {
|
|
224
285
|
readonly A: A;
|
|
@@ -227,30 +288,30 @@ export declare namespace TaggedEnum {
|
|
|
227
288
|
readonly D: D;
|
|
228
289
|
})["taggedEnum"];
|
|
229
290
|
/**
|
|
230
|
-
* Extracts the argument
|
|
291
|
+
* Extracts the constructor argument type for a specific variant of a tagged
|
|
292
|
+
* union.
|
|
293
|
+
*
|
|
294
|
+
* Returns `void` if the variant has no fields beyond `_tag`.
|
|
231
295
|
*
|
|
232
|
-
*
|
|
233
|
-
* a specific variant of a tagged enum, excluding the `_tag` field.
|
|
296
|
+
* **Example** (extracting variant args)
|
|
234
297
|
*
|
|
235
|
-
* @example
|
|
236
298
|
* ```ts
|
|
237
299
|
* import type { Data } from "effect"
|
|
238
300
|
*
|
|
239
301
|
* type Result =
|
|
240
|
-
* | { readonly _tag: "
|
|
241
|
-
* | { readonly _tag: "
|
|
302
|
+
* | { readonly _tag: "Ok"; readonly value: number }
|
|
303
|
+
* | { readonly _tag: "Err"; readonly error: string }
|
|
242
304
|
*
|
|
243
|
-
*
|
|
244
|
-
*
|
|
245
|
-
* // Result: { readonly value: number }
|
|
305
|
+
* type OkArgs = Data.TaggedEnum.Args<Result, "Ok">
|
|
306
|
+
* // { readonly value: number }
|
|
246
307
|
*
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
* // Result: { readonly error: string }
|
|
308
|
+
* type ErrArgs = Data.TaggedEnum.Args<Result, "Err">
|
|
309
|
+
* // { readonly error: string }
|
|
250
310
|
* ```
|
|
251
311
|
*
|
|
312
|
+
* @see {@link Value} — extracts the full variant type (including `_tag`)
|
|
313
|
+
*
|
|
252
314
|
* @since 2.0.0
|
|
253
|
-
* @category types
|
|
254
315
|
*/
|
|
255
316
|
type Args<A extends {
|
|
256
317
|
readonly _tag: string;
|
|
@@ -260,30 +321,24 @@ export declare namespace TaggedEnum {
|
|
|
260
321
|
readonly [K in keyof E as K extends "_tag" ? never : K]: E[K];
|
|
261
322
|
} extends infer T ? {} extends T ? void : T : never;
|
|
262
323
|
/**
|
|
263
|
-
* Extracts the
|
|
324
|
+
* Extracts the full variant type (including `_tag`) for a specific tag.
|
|
264
325
|
*
|
|
265
|
-
*
|
|
266
|
-
* for a specific variant of a tagged enum.
|
|
326
|
+
* **Example** (extracting a variant type)
|
|
267
327
|
*
|
|
268
|
-
* @example
|
|
269
328
|
* ```ts
|
|
270
329
|
* import type { Data } from "effect"
|
|
271
330
|
*
|
|
272
331
|
* type Result =
|
|
273
|
-
* | { readonly _tag: "
|
|
274
|
-
* | { readonly _tag: "
|
|
275
|
-
*
|
|
276
|
-
* // Extract complete Success type
|
|
277
|
-
* type SuccessValue = Data.TaggedEnum.Value<Result, "Success">
|
|
278
|
-
* // Result: { readonly _tag: "Success"; readonly value: number }
|
|
332
|
+
* | { readonly _tag: "Ok"; readonly value: number }
|
|
333
|
+
* | { readonly _tag: "Err"; readonly error: string }
|
|
279
334
|
*
|
|
280
|
-
*
|
|
281
|
-
*
|
|
282
|
-
* // Result: { readonly _tag: "Failure"; readonly error: string }
|
|
335
|
+
* type OkVariant = Data.TaggedEnum.Value<Result, "Ok">
|
|
336
|
+
* // { readonly _tag: "Ok"; readonly value: number }
|
|
283
337
|
* ```
|
|
284
338
|
*
|
|
339
|
+
* @see {@link Args} — extracts fields without `_tag`
|
|
340
|
+
*
|
|
285
341
|
* @since 2.0.0
|
|
286
|
-
* @category types
|
|
287
342
|
*/
|
|
288
343
|
type Value<A extends {
|
|
289
344
|
readonly _tag: string;
|
|
@@ -291,37 +346,40 @@ export declare namespace TaggedEnum {
|
|
|
291
346
|
readonly _tag: K;
|
|
292
347
|
}>;
|
|
293
348
|
/**
|
|
294
|
-
*
|
|
349
|
+
* The full constructor-object type returned by {@link taggedEnum}.
|
|
295
350
|
*
|
|
296
|
-
*
|
|
297
|
-
* -
|
|
298
|
-
* - `$is`
|
|
299
|
-
* - `$match`
|
|
351
|
+
* Includes:
|
|
352
|
+
* - A constructor function for each variant (keyed by tag name)
|
|
353
|
+
* - `$is(tag)` — returns a type-guard for the given variant
|
|
354
|
+
* - `$match` — exhaustive pattern matching (data-last or data-first)
|
|
355
|
+
*
|
|
356
|
+
* **Example** (using the constructor object)
|
|
300
357
|
*
|
|
301
|
-
* @example
|
|
302
358
|
* ```ts
|
|
303
359
|
* import { Data } from "effect"
|
|
304
360
|
*
|
|
305
|
-
* type
|
|
306
|
-
* | { readonly _tag: "
|
|
307
|
-
* | { readonly _tag: "
|
|
361
|
+
* type Shape =
|
|
362
|
+
* | { readonly _tag: "Circle"; readonly radius: number }
|
|
363
|
+
* | { readonly _tag: "Rect"; readonly w: number; readonly h: number }
|
|
308
364
|
*
|
|
309
|
-
* const { $is, $match
|
|
365
|
+
* const { Circle, Rect, $is, $match } = Data.taggedEnum<Shape>()
|
|
310
366
|
*
|
|
311
|
-
* const
|
|
367
|
+
* const shape = Circle({ radius: 10 })
|
|
312
368
|
*
|
|
313
|
-
* // Type
|
|
314
|
-
* if ($is("
|
|
315
|
-
* console.log(
|
|
369
|
+
* // Type guard
|
|
370
|
+
* if ($is("Circle")(shape)) {
|
|
371
|
+
* console.log(shape.radius)
|
|
316
372
|
* }
|
|
317
373
|
*
|
|
318
374
|
* // Pattern matching
|
|
319
|
-
* const
|
|
320
|
-
*
|
|
321
|
-
*
|
|
375
|
+
* const label = $match(shape, {
|
|
376
|
+
* Circle: (s) => `circle r=${s.radius}`,
|
|
377
|
+
* Rect: (s) => `rect ${s.w}x${s.h}`
|
|
322
378
|
* })
|
|
323
379
|
* ```
|
|
324
380
|
*
|
|
381
|
+
* @see {@link taggedEnum} — creates a `Constructor`
|
|
382
|
+
*
|
|
325
383
|
* @since 3.1.0
|
|
326
384
|
* @category types
|
|
327
385
|
*/
|
|
@@ -349,50 +407,25 @@ export declare namespace TaggedEnum {
|
|
|
349
407
|
};
|
|
350
408
|
}>;
|
|
351
409
|
/**
|
|
410
|
+
* Function type that constructs a tagged-union variant from its fields,
|
|
411
|
+
* excluding the keys listed in `Tag`.
|
|
412
|
+
*
|
|
413
|
+
* Returns `void` when no fields remain after excluding `Tag` keys.
|
|
414
|
+
*
|
|
352
415
|
* @since 4.0.0
|
|
353
|
-
* @category types
|
|
354
416
|
*/
|
|
355
|
-
type ConstructorFrom<A, Tag extends keyof A = never> = (args: Types.
|
|
417
|
+
type ConstructorFrom<A, Tag extends keyof A = never> = (args: Types.VoidIfEmpty<{
|
|
356
418
|
readonly [P in keyof A as P extends Tag ? never : P]: A[P];
|
|
357
|
-
}) => A;
|
|
419
|
+
}>) => A;
|
|
358
420
|
/**
|
|
359
|
-
*
|
|
421
|
+
* Type-guard and pattern-matching interface for generic tagged enums.
|
|
360
422
|
*
|
|
361
|
-
* This
|
|
362
|
-
*
|
|
423
|
+
* This is the `$is` / `$match` portion of the object returned by
|
|
424
|
+
* {@link taggedEnum} when used with a {@link WithGenerics} definition.
|
|
363
425
|
*
|
|
364
|
-
* @
|
|
365
|
-
* ```ts
|
|
366
|
-
* import { Data } from "effect"
|
|
367
|
-
*
|
|
368
|
-
* type Result<E, A> = Data.TaggedEnum<{
|
|
369
|
-
* Failure: { readonly error: E }
|
|
370
|
-
* Success: { readonly value: A }
|
|
371
|
-
* }>
|
|
372
|
-
*
|
|
373
|
-
* interface ResultDefinition extends Data.TaggedEnum.WithGenerics<2> {
|
|
374
|
-
* readonly taggedEnum: Result<this["A"], this["B"]>
|
|
375
|
-
* }
|
|
376
|
-
*
|
|
377
|
-
* const { $is, $match, Failure, Success } = Data.taggedEnum<ResultDefinition>()
|
|
378
|
-
*
|
|
379
|
-
* const stringResult = Success({ value: "hello" })
|
|
380
|
-
* const numberResult = Failure({ error: 404 })
|
|
381
|
-
*
|
|
382
|
-
* // Generic type checking
|
|
383
|
-
* if ($is("Success")(stringResult)) {
|
|
384
|
-
* console.log(stringResult.value) // TypeScript knows this is string
|
|
385
|
-
* }
|
|
386
|
-
*
|
|
387
|
-
* // Generic pattern matching
|
|
388
|
-
* const message = $match(numberResult, {
|
|
389
|
-
* Success: ({ value }) => `Value: ${value}`,
|
|
390
|
-
* Failure: ({ error }) => `Error: ${error}`
|
|
391
|
-
* })
|
|
392
|
-
* ```
|
|
426
|
+
* @see {@link Constructor} — the non-generic equivalent
|
|
393
427
|
*
|
|
394
428
|
* @since 3.2.0
|
|
395
|
-
* @category types
|
|
396
429
|
*/
|
|
397
430
|
interface GenericMatchers<Z extends WithGenerics<number>> {
|
|
398
431
|
readonly $is: <Tag extends Z["taggedEnum"]["_tag"]>(tag: Tag) => {
|
|
@@ -418,88 +451,128 @@ export declare namespace TaggedEnum {
|
|
|
418
451
|
}
|
|
419
452
|
}
|
|
420
453
|
/**
|
|
421
|
-
*
|
|
454
|
+
* Creates runtime constructors, type guards, and pattern matching for a
|
|
455
|
+
* {@link TaggedEnum} type.
|
|
422
456
|
*
|
|
423
|
-
*
|
|
424
|
-
*
|
|
457
|
+
* Returns an object with:
|
|
458
|
+
* - One constructor per variant (keyed by tag name)
|
|
459
|
+
* - `$is(tag)` — returns a type-guard function
|
|
460
|
+
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
461
|
+
*
|
|
462
|
+
* - Use when you have a `TaggedEnum` type and need to construct/inspect values.
|
|
463
|
+
* - Constructors produce **plain objects** (not class instances).
|
|
464
|
+
* - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
|
|
465
|
+
*
|
|
466
|
+
* **Example** (basic usage)
|
|
425
467
|
*
|
|
426
|
-
* @example
|
|
427
468
|
* ```ts
|
|
428
469
|
* import { Data } from "effect"
|
|
429
470
|
*
|
|
430
|
-
*
|
|
431
|
-
*
|
|
432
|
-
*
|
|
433
|
-
*
|
|
434
|
-
*
|
|
435
|
-
*
|
|
436
|
-
*
|
|
437
|
-
*
|
|
438
|
-
*
|
|
439
|
-
*
|
|
440
|
-
*
|
|
441
|
-
*
|
|
442
|
-
*
|
|
443
|
-
* const
|
|
471
|
+
* type HttpError = Data.TaggedEnum<{
|
|
472
|
+
* BadRequest: { readonly message: string }
|
|
473
|
+
* NotFound: { readonly url: string }
|
|
474
|
+
* }>
|
|
475
|
+
*
|
|
476
|
+
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
477
|
+
*
|
|
478
|
+
* const err = NotFound({ url: "/missing" })
|
|
479
|
+
*
|
|
480
|
+
* // Type guard
|
|
481
|
+
* console.log($is("NotFound")(err)) // true
|
|
482
|
+
*
|
|
483
|
+
* // Pattern matching
|
|
484
|
+
* const msg = $match(err, {
|
|
485
|
+
* BadRequest: (e) => e.message,
|
|
486
|
+
* NotFound: (e) => `${e.url} not found`
|
|
487
|
+
* })
|
|
488
|
+
* console.log(msg) // "/missing not found"
|
|
444
489
|
* ```
|
|
445
490
|
*
|
|
446
|
-
*
|
|
491
|
+
* **Example** (generic tagged enum)
|
|
492
|
+
*
|
|
493
|
+
* ```ts
|
|
447
494
|
* import { Data } from "effect"
|
|
448
495
|
*
|
|
449
496
|
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
450
497
|
* Failure: { readonly error: E }
|
|
451
498
|
* Success: { readonly value: A }
|
|
452
499
|
* }>
|
|
453
|
-
* interface
|
|
500
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
454
501
|
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
455
502
|
* }
|
|
456
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
503
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
457
504
|
*
|
|
458
|
-
* const
|
|
505
|
+
* const ok = Success({ value: 42 })
|
|
506
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
507
|
+
* ```
|
|
508
|
+
*
|
|
509
|
+
* @see {@link TaggedEnum} — the type-level companion
|
|
510
|
+
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
511
|
+
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
459
512
|
*
|
|
460
513
|
* @category constructors
|
|
461
514
|
* @since 2.0.0
|
|
462
515
|
*/
|
|
463
516
|
export declare const taggedEnum: {
|
|
464
517
|
/**
|
|
465
|
-
*
|
|
518
|
+
* Creates runtime constructors, type guards, and pattern matching for a
|
|
519
|
+
* {@link TaggedEnum} type.
|
|
520
|
+
*
|
|
521
|
+
* Returns an object with:
|
|
522
|
+
* - One constructor per variant (keyed by tag name)
|
|
523
|
+
* - `$is(tag)` — returns a type-guard function
|
|
524
|
+
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
466
525
|
*
|
|
467
|
-
*
|
|
468
|
-
*
|
|
526
|
+
* - Use when you have a `TaggedEnum` type and need to construct/inspect values.
|
|
527
|
+
* - Constructors produce **plain objects** (not class instances).
|
|
528
|
+
* - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
|
|
529
|
+
*
|
|
530
|
+
* **Example** (basic usage)
|
|
469
531
|
*
|
|
470
|
-
* @example
|
|
471
532
|
* ```ts
|
|
472
533
|
* import { Data } from "effect"
|
|
473
534
|
*
|
|
474
|
-
*
|
|
475
|
-
*
|
|
476
|
-
*
|
|
477
|
-
*
|
|
478
|
-
*
|
|
479
|
-
*
|
|
480
|
-
*
|
|
481
|
-
*
|
|
482
|
-
*
|
|
483
|
-
*
|
|
484
|
-
*
|
|
485
|
-
*
|
|
486
|
-
*
|
|
487
|
-
* const
|
|
535
|
+
* type HttpError = Data.TaggedEnum<{
|
|
536
|
+
* BadRequest: { readonly message: string }
|
|
537
|
+
* NotFound: { readonly url: string }
|
|
538
|
+
* }>
|
|
539
|
+
*
|
|
540
|
+
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
541
|
+
*
|
|
542
|
+
* const err = NotFound({ url: "/missing" })
|
|
543
|
+
*
|
|
544
|
+
* // Type guard
|
|
545
|
+
* console.log($is("NotFound")(err)) // true
|
|
546
|
+
*
|
|
547
|
+
* // Pattern matching
|
|
548
|
+
* const msg = $match(err, {
|
|
549
|
+
* BadRequest: (e) => e.message,
|
|
550
|
+
* NotFound: (e) => `${e.url} not found`
|
|
551
|
+
* })
|
|
552
|
+
* console.log(msg) // "/missing not found"
|
|
488
553
|
* ```
|
|
489
554
|
*
|
|
490
|
-
*
|
|
555
|
+
* **Example** (generic tagged enum)
|
|
556
|
+
*
|
|
557
|
+
* ```ts
|
|
491
558
|
* import { Data } from "effect"
|
|
492
559
|
*
|
|
493
560
|
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
494
561
|
* Failure: { readonly error: E }
|
|
495
562
|
* Success: { readonly value: A }
|
|
496
563
|
* }>
|
|
497
|
-
* interface
|
|
564
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
498
565
|
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
499
566
|
* }
|
|
500
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
567
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
568
|
+
*
|
|
569
|
+
* const ok = Success({ value: 42 })
|
|
570
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
571
|
+
* ```
|
|
501
572
|
*
|
|
502
|
-
*
|
|
573
|
+
* @see {@link TaggedEnum} — the type-level companion
|
|
574
|
+
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
575
|
+
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
503
576
|
*
|
|
504
577
|
* @category constructors
|
|
505
578
|
* @since 2.0.0
|
|
@@ -510,44 +583,64 @@ export declare const taggedEnum: {
|
|
|
510
583
|
}>>) => TaggedEnum.Value<TaggedEnum.Kind<Z, A>, Tag>;
|
|
511
584
|
} & TaggedEnum.GenericMatchers<Z>>;
|
|
512
585
|
/**
|
|
513
|
-
*
|
|
586
|
+
* Creates runtime constructors, type guards, and pattern matching for a
|
|
587
|
+
* {@link TaggedEnum} type.
|
|
588
|
+
*
|
|
589
|
+
* Returns an object with:
|
|
590
|
+
* - One constructor per variant (keyed by tag name)
|
|
591
|
+
* - `$is(tag)` — returns a type-guard function
|
|
592
|
+
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
593
|
+
*
|
|
594
|
+
* - Use when you have a `TaggedEnum` type and need to construct/inspect values.
|
|
595
|
+
* - Constructors produce **plain objects** (not class instances).
|
|
596
|
+
* - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
|
|
514
597
|
*
|
|
515
|
-
*
|
|
516
|
-
* the constructor.
|
|
598
|
+
* **Example** (basic usage)
|
|
517
599
|
*
|
|
518
|
-
* @example
|
|
519
600
|
* ```ts
|
|
520
601
|
* import { Data } from "effect"
|
|
521
602
|
*
|
|
522
|
-
*
|
|
523
|
-
*
|
|
524
|
-
*
|
|
525
|
-
*
|
|
526
|
-
*
|
|
527
|
-
*
|
|
528
|
-
*
|
|
529
|
-
*
|
|
530
|
-
*
|
|
531
|
-
*
|
|
532
|
-
*
|
|
533
|
-
*
|
|
534
|
-
*
|
|
535
|
-
* const
|
|
603
|
+
* type HttpError = Data.TaggedEnum<{
|
|
604
|
+
* BadRequest: { readonly message: string }
|
|
605
|
+
* NotFound: { readonly url: string }
|
|
606
|
+
* }>
|
|
607
|
+
*
|
|
608
|
+
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
609
|
+
*
|
|
610
|
+
* const err = NotFound({ url: "/missing" })
|
|
611
|
+
*
|
|
612
|
+
* // Type guard
|
|
613
|
+
* console.log($is("NotFound")(err)) // true
|
|
614
|
+
*
|
|
615
|
+
* // Pattern matching
|
|
616
|
+
* const msg = $match(err, {
|
|
617
|
+
* BadRequest: (e) => e.message,
|
|
618
|
+
* NotFound: (e) => `${e.url} not found`
|
|
619
|
+
* })
|
|
620
|
+
* console.log(msg) // "/missing not found"
|
|
536
621
|
* ```
|
|
537
622
|
*
|
|
538
|
-
*
|
|
623
|
+
* **Example** (generic tagged enum)
|
|
624
|
+
*
|
|
625
|
+
* ```ts
|
|
539
626
|
* import { Data } from "effect"
|
|
540
627
|
*
|
|
541
628
|
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
542
629
|
* Failure: { readonly error: E }
|
|
543
630
|
* Success: { readonly value: A }
|
|
544
631
|
* }>
|
|
545
|
-
* interface
|
|
632
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
546
633
|
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
547
634
|
* }
|
|
548
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
635
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
636
|
+
*
|
|
637
|
+
* const ok = Success({ value: 42 })
|
|
638
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
639
|
+
* ```
|
|
549
640
|
*
|
|
550
|
-
*
|
|
641
|
+
* @see {@link TaggedEnum} — the type-level companion
|
|
642
|
+
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
643
|
+
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
551
644
|
*
|
|
552
645
|
* @category constructors
|
|
553
646
|
* @since 2.0.0
|
|
@@ -558,44 +651,64 @@ export declare const taggedEnum: {
|
|
|
558
651
|
}>>) => TaggedEnum.Value<TaggedEnum.Kind<Z, A, B>, Tag>;
|
|
559
652
|
} & TaggedEnum.GenericMatchers<Z>>;
|
|
560
653
|
/**
|
|
561
|
-
*
|
|
654
|
+
* Creates runtime constructors, type guards, and pattern matching for a
|
|
655
|
+
* {@link TaggedEnum} type.
|
|
656
|
+
*
|
|
657
|
+
* Returns an object with:
|
|
658
|
+
* - One constructor per variant (keyed by tag name)
|
|
659
|
+
* - `$is(tag)` — returns a type-guard function
|
|
660
|
+
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
661
|
+
*
|
|
662
|
+
* - Use when you have a `TaggedEnum` type and need to construct/inspect values.
|
|
663
|
+
* - Constructors produce **plain objects** (not class instances).
|
|
664
|
+
* - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
|
|
562
665
|
*
|
|
563
|
-
*
|
|
564
|
-
* the constructor.
|
|
666
|
+
* **Example** (basic usage)
|
|
565
667
|
*
|
|
566
|
-
* @example
|
|
567
668
|
* ```ts
|
|
568
669
|
* import { Data } from "effect"
|
|
569
670
|
*
|
|
570
|
-
*
|
|
571
|
-
*
|
|
572
|
-
*
|
|
573
|
-
*
|
|
574
|
-
*
|
|
575
|
-
*
|
|
576
|
-
*
|
|
577
|
-
*
|
|
578
|
-
*
|
|
579
|
-
*
|
|
580
|
-
*
|
|
581
|
-
*
|
|
582
|
-
*
|
|
583
|
-
* const
|
|
671
|
+
* type HttpError = Data.TaggedEnum<{
|
|
672
|
+
* BadRequest: { readonly message: string }
|
|
673
|
+
* NotFound: { readonly url: string }
|
|
674
|
+
* }>
|
|
675
|
+
*
|
|
676
|
+
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
677
|
+
*
|
|
678
|
+
* const err = NotFound({ url: "/missing" })
|
|
679
|
+
*
|
|
680
|
+
* // Type guard
|
|
681
|
+
* console.log($is("NotFound")(err)) // true
|
|
682
|
+
*
|
|
683
|
+
* // Pattern matching
|
|
684
|
+
* const msg = $match(err, {
|
|
685
|
+
* BadRequest: (e) => e.message,
|
|
686
|
+
* NotFound: (e) => `${e.url} not found`
|
|
687
|
+
* })
|
|
688
|
+
* console.log(msg) // "/missing not found"
|
|
584
689
|
* ```
|
|
585
690
|
*
|
|
586
|
-
*
|
|
691
|
+
* **Example** (generic tagged enum)
|
|
692
|
+
*
|
|
693
|
+
* ```ts
|
|
587
694
|
* import { Data } from "effect"
|
|
588
695
|
*
|
|
589
696
|
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
590
697
|
* Failure: { readonly error: E }
|
|
591
698
|
* Success: { readonly value: A }
|
|
592
699
|
* }>
|
|
593
|
-
* interface
|
|
700
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
594
701
|
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
595
702
|
* }
|
|
596
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
703
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
704
|
+
*
|
|
705
|
+
* const ok = Success({ value: 42 })
|
|
706
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
707
|
+
* ```
|
|
597
708
|
*
|
|
598
|
-
*
|
|
709
|
+
* @see {@link TaggedEnum} — the type-level companion
|
|
710
|
+
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
711
|
+
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
599
712
|
*
|
|
600
713
|
* @category constructors
|
|
601
714
|
* @since 2.0.0
|
|
@@ -606,44 +719,64 @@ export declare const taggedEnum: {
|
|
|
606
719
|
}>>) => TaggedEnum.Value<TaggedEnum.Kind<Z, A, B, C>, Tag>;
|
|
607
720
|
} & TaggedEnum.GenericMatchers<Z>>;
|
|
608
721
|
/**
|
|
609
|
-
*
|
|
722
|
+
* Creates runtime constructors, type guards, and pattern matching for a
|
|
723
|
+
* {@link TaggedEnum} type.
|
|
724
|
+
*
|
|
725
|
+
* Returns an object with:
|
|
726
|
+
* - One constructor per variant (keyed by tag name)
|
|
727
|
+
* - `$is(tag)` — returns a type-guard function
|
|
728
|
+
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
729
|
+
*
|
|
730
|
+
* - Use when you have a `TaggedEnum` type and need to construct/inspect values.
|
|
731
|
+
* - Constructors produce **plain objects** (not class instances).
|
|
732
|
+
* - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
|
|
610
733
|
*
|
|
611
|
-
*
|
|
612
|
-
* the constructor.
|
|
734
|
+
* **Example** (basic usage)
|
|
613
735
|
*
|
|
614
|
-
* @example
|
|
615
736
|
* ```ts
|
|
616
737
|
* import { Data } from "effect"
|
|
617
738
|
*
|
|
618
|
-
*
|
|
619
|
-
*
|
|
620
|
-
*
|
|
621
|
-
*
|
|
622
|
-
*
|
|
623
|
-
*
|
|
624
|
-
*
|
|
625
|
-
*
|
|
626
|
-
*
|
|
627
|
-
*
|
|
628
|
-
*
|
|
629
|
-
*
|
|
630
|
-
*
|
|
631
|
-
* const
|
|
739
|
+
* type HttpError = Data.TaggedEnum<{
|
|
740
|
+
* BadRequest: { readonly message: string }
|
|
741
|
+
* NotFound: { readonly url: string }
|
|
742
|
+
* }>
|
|
743
|
+
*
|
|
744
|
+
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
745
|
+
*
|
|
746
|
+
* const err = NotFound({ url: "/missing" })
|
|
747
|
+
*
|
|
748
|
+
* // Type guard
|
|
749
|
+
* console.log($is("NotFound")(err)) // true
|
|
750
|
+
*
|
|
751
|
+
* // Pattern matching
|
|
752
|
+
* const msg = $match(err, {
|
|
753
|
+
* BadRequest: (e) => e.message,
|
|
754
|
+
* NotFound: (e) => `${e.url} not found`
|
|
755
|
+
* })
|
|
756
|
+
* console.log(msg) // "/missing not found"
|
|
632
757
|
* ```
|
|
633
758
|
*
|
|
634
|
-
*
|
|
759
|
+
* **Example** (generic tagged enum)
|
|
760
|
+
*
|
|
761
|
+
* ```ts
|
|
635
762
|
* import { Data } from "effect"
|
|
636
763
|
*
|
|
637
764
|
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
638
765
|
* Failure: { readonly error: E }
|
|
639
766
|
* Success: { readonly value: A }
|
|
640
767
|
* }>
|
|
641
|
-
* interface
|
|
768
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
642
769
|
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
643
770
|
* }
|
|
644
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
771
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
772
|
+
*
|
|
773
|
+
* const ok = Success({ value: 42 })
|
|
774
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
775
|
+
* ```
|
|
645
776
|
*
|
|
646
|
-
*
|
|
777
|
+
* @see {@link TaggedEnum} — the type-level companion
|
|
778
|
+
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
779
|
+
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
647
780
|
*
|
|
648
781
|
* @category constructors
|
|
649
782
|
* @since 2.0.0
|
|
@@ -654,44 +787,64 @@ export declare const taggedEnum: {
|
|
|
654
787
|
}>>) => TaggedEnum.Value<TaggedEnum.Kind<Z, A, B, C, D>, Tag>;
|
|
655
788
|
} & TaggedEnum.GenericMatchers<Z>>;
|
|
656
789
|
/**
|
|
657
|
-
*
|
|
790
|
+
* Creates runtime constructors, type guards, and pattern matching for a
|
|
791
|
+
* {@link TaggedEnum} type.
|
|
658
792
|
*
|
|
659
|
-
*
|
|
660
|
-
*
|
|
793
|
+
* Returns an object with:
|
|
794
|
+
* - One constructor per variant (keyed by tag name)
|
|
795
|
+
* - `$is(tag)` — returns a type-guard function
|
|
796
|
+
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
797
|
+
*
|
|
798
|
+
* - Use when you have a `TaggedEnum` type and need to construct/inspect values.
|
|
799
|
+
* - Constructors produce **plain objects** (not class instances).
|
|
800
|
+
* - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
|
|
801
|
+
*
|
|
802
|
+
* **Example** (basic usage)
|
|
661
803
|
*
|
|
662
|
-
* @example
|
|
663
804
|
* ```ts
|
|
664
805
|
* import { Data } from "effect"
|
|
665
806
|
*
|
|
666
|
-
*
|
|
667
|
-
*
|
|
668
|
-
*
|
|
669
|
-
*
|
|
670
|
-
*
|
|
671
|
-
*
|
|
672
|
-
*
|
|
673
|
-
*
|
|
674
|
-
*
|
|
675
|
-
*
|
|
676
|
-
*
|
|
677
|
-
*
|
|
678
|
-
*
|
|
679
|
-
* const
|
|
807
|
+
* type HttpError = Data.TaggedEnum<{
|
|
808
|
+
* BadRequest: { readonly message: string }
|
|
809
|
+
* NotFound: { readonly url: string }
|
|
810
|
+
* }>
|
|
811
|
+
*
|
|
812
|
+
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
813
|
+
*
|
|
814
|
+
* const err = NotFound({ url: "/missing" })
|
|
815
|
+
*
|
|
816
|
+
* // Type guard
|
|
817
|
+
* console.log($is("NotFound")(err)) // true
|
|
818
|
+
*
|
|
819
|
+
* // Pattern matching
|
|
820
|
+
* const msg = $match(err, {
|
|
821
|
+
* BadRequest: (e) => e.message,
|
|
822
|
+
* NotFound: (e) => `${e.url} not found`
|
|
823
|
+
* })
|
|
824
|
+
* console.log(msg) // "/missing not found"
|
|
680
825
|
* ```
|
|
681
826
|
*
|
|
682
|
-
*
|
|
827
|
+
* **Example** (generic tagged enum)
|
|
828
|
+
*
|
|
829
|
+
* ```ts
|
|
683
830
|
* import { Data } from "effect"
|
|
684
831
|
*
|
|
685
832
|
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
686
833
|
* Failure: { readonly error: E }
|
|
687
834
|
* Success: { readonly value: A }
|
|
688
835
|
* }>
|
|
689
|
-
* interface
|
|
836
|
+
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
690
837
|
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
691
838
|
* }
|
|
692
|
-
* const { Failure, Success } = Data.taggedEnum<
|
|
839
|
+
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
693
840
|
*
|
|
694
|
-
* const
|
|
841
|
+
* const ok = Success({ value: 42 })
|
|
842
|
+
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
843
|
+
* ```
|
|
844
|
+
*
|
|
845
|
+
* @see {@link TaggedEnum} — the type-level companion
|
|
846
|
+
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
847
|
+
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
695
848
|
*
|
|
696
849
|
* @category constructors
|
|
697
850
|
* @since 2.0.0
|
|
@@ -701,70 +854,86 @@ export declare const taggedEnum: {
|
|
|
701
854
|
}>(): TaggedEnum.Constructor<A>;
|
|
702
855
|
};
|
|
703
856
|
/**
|
|
704
|
-
*
|
|
857
|
+
* Base class for yieldable errors.
|
|
858
|
+
*
|
|
859
|
+
* Extends `Cause.YieldableError`, so instances can be yielded inside
|
|
860
|
+
* `Effect.gen` to fail the enclosing effect. Fields are passed as a single
|
|
861
|
+
* object; when there are no fields the argument is optional.
|
|
705
862
|
*
|
|
706
|
-
*
|
|
707
|
-
*
|
|
863
|
+
* - Use for errors that do **not** need tag-based discrimination.
|
|
864
|
+
* - If you need `Effect.catchTag` support, use {@link TaggedError} instead.
|
|
865
|
+
* - If a `message` field is provided, it becomes the error's `.message`.
|
|
866
|
+
*
|
|
867
|
+
* **Example** (defining a yieldable error)
|
|
708
868
|
*
|
|
709
|
-
* @example
|
|
710
869
|
* ```ts
|
|
711
870
|
* import { Data, Effect } from "effect"
|
|
712
871
|
*
|
|
713
|
-
* class NetworkError extends Data.Error<{
|
|
872
|
+
* class NetworkError extends Data.Error<{
|
|
873
|
+
* readonly code: number
|
|
874
|
+
* readonly message: string
|
|
875
|
+
* }> {}
|
|
714
876
|
*
|
|
715
877
|
* const program = Effect.gen(function*() {
|
|
716
|
-
* yield* new NetworkError({ code: 500, message: "
|
|
878
|
+
* yield* new NetworkError({ code: 500, message: "timeout" })
|
|
717
879
|
* })
|
|
718
880
|
*
|
|
881
|
+
* // The effect fails with a NetworkError
|
|
719
882
|
* Effect.runSync(Effect.exit(program))
|
|
720
|
-
* // Exit.fail(NetworkError({ code: 500, message: "Server error" }))
|
|
721
883
|
* ```
|
|
722
884
|
*
|
|
885
|
+
* @see {@link TaggedError} — adds a `_tag` for `Effect.catchTag`
|
|
886
|
+
* @see {@link Class} — non-error data class
|
|
887
|
+
*
|
|
723
888
|
* @category constructors
|
|
724
889
|
* @since 2.0.0
|
|
725
890
|
*/
|
|
726
|
-
export declare const Error: new <A extends Record<string, any> = {}>(args: Types.
|
|
891
|
+
export declare const Error: new <A extends Record<string, any> = {}>(args: Types.VoidIfEmpty<{
|
|
727
892
|
readonly [P in keyof A]: A[P];
|
|
728
|
-
}) => Cause.YieldableError & Readonly<A>;
|
|
893
|
+
}>) => Cause.YieldableError & Readonly<A>;
|
|
729
894
|
/**
|
|
730
|
-
*
|
|
895
|
+
* Creates a tagged error class with a `_tag` discriminator.
|
|
896
|
+
*
|
|
897
|
+
* Like {@link Error}, but instances also carry a `readonly _tag` property,
|
|
898
|
+
* enabling `Effect.catchTag` and `Effect.catchTags` for tag-based recovery.
|
|
899
|
+
* The `_tag` is excluded from the constructor argument.
|
|
900
|
+
*
|
|
901
|
+
* - Use for domain errors in Effect applications where you want
|
|
902
|
+
* discriminated-union error handling.
|
|
903
|
+
* - Yielding an instance inside `Effect.gen` fails the effect with this error.
|
|
731
904
|
*
|
|
732
|
-
*
|
|
733
|
-
* `Cause.YieldableError` and have structural equality semantics.
|
|
905
|
+
* **Example** (tag-based error recovery)
|
|
734
906
|
*
|
|
735
|
-
* @example
|
|
736
907
|
* ```ts
|
|
737
|
-
* import { Data, Effect
|
|
908
|
+
* import { Data, Effect } from "effect"
|
|
738
909
|
*
|
|
739
|
-
* class
|
|
740
|
-
*
|
|
741
|
-
* message: string
|
|
910
|
+
* class NotFound extends Data.TaggedError("NotFound")<{
|
|
911
|
+
* readonly resource: string
|
|
742
912
|
* }> {}
|
|
743
913
|
*
|
|
744
|
-
* class
|
|
745
|
-
*
|
|
746
|
-
* message: string
|
|
914
|
+
* class Forbidden extends Data.TaggedError("Forbidden")<{
|
|
915
|
+
* readonly reason: string
|
|
747
916
|
* }> {}
|
|
748
917
|
*
|
|
749
918
|
* const program = Effect.gen(function*() {
|
|
750
|
-
* yield* new
|
|
919
|
+
* yield* new NotFound({ resource: "/users/42" })
|
|
751
920
|
* })
|
|
752
921
|
*
|
|
753
|
-
* const
|
|
754
|
-
*
|
|
755
|
-
*
|
|
756
|
-
* "NetworkError",
|
|
757
|
-
* (error) => Effect.succeed(`Network error: ${error.message}`)
|
|
758
|
-
* )
|
|
922
|
+
* const recovered = program.pipe(
|
|
923
|
+
* Effect.catchTag("NotFound", (e) =>
|
|
924
|
+
* Effect.succeed(`missing: ${e.resource}`))
|
|
759
925
|
* )
|
|
760
926
|
* ```
|
|
761
927
|
*
|
|
928
|
+
* @see {@link Error} — without a `_tag`
|
|
929
|
+
* @see {@link TaggedClass} — tagged class that is not an error
|
|
930
|
+
*
|
|
762
931
|
* @category constructors
|
|
763
932
|
* @since 2.0.0
|
|
764
933
|
*/
|
|
765
|
-
export declare const TaggedError: <Tag extends string>(tag: Tag) => new <A extends Record<string, any> = {}>(args: Types.
|
|
934
|
+
export declare const TaggedError: <Tag extends string>(tag: Tag) => new <A extends Record<string, any> = {}>(args: Types.VoidIfEmpty<{
|
|
766
935
|
readonly [P in keyof A as P extends "_tag" ? never : P]: A[P];
|
|
767
|
-
}) => Cause.YieldableError & {
|
|
936
|
+
}>) => Cause.YieldableError & {
|
|
768
937
|
readonly _tag: Tag;
|
|
769
938
|
} & Readonly<A>;
|
|
770
939
|
export {};
|