effect 4.0.6 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/Arbitrary.d.ts +10 -2
- package/dist/Arbitrary.d.ts.map +1 -1
- package/dist/Arbitrary.js +2 -1
- package/dist/Arbitrary.js.map +1 -1
- package/dist/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +3 -0
- package/dist/BigDecimal.js.map +1 -1
- package/dist/Channel.d.ts +12 -6
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +30 -9
- package/dist/Channel.js.map +1 -1
- package/dist/Config.d.ts +7 -1
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js.map +1 -1
- package/dist/Context.d.ts +18 -1
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +27 -8
- package/dist/Context.js.map +1 -1
- package/dist/Cron.d.ts +81 -11
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +101 -26
- package/dist/Cron.js.map +1 -1
- package/dist/Data.d.ts +54 -235
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js.map +1 -1
- package/dist/Duration.d.ts +78 -0
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +123 -0
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +165 -8
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +12 -2
- package/dist/Effect.js.map +1 -1
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +8 -1
- package/dist/Equal.js.map +1 -1
- package/dist/Exit.d.ts +3 -3
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js.map +1 -1
- package/dist/FileSystem.d.ts +59 -4
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +9 -2
- package/dist/FileSystem.js.map +1 -1
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +27 -13
- package/dist/Formatter.js.map +1 -1
- package/dist/Glob.d.ts +165 -0
- package/dist/Glob.d.ts.map +1 -0
- package/dist/Glob.js +127 -0
- package/dist/Glob.js.map +1 -0
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +4 -1
- package/dist/Hash.js.map +1 -1
- package/dist/JsonPatch.js +4 -0
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +13 -40
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Match.d.ts +86 -0
- package/dist/Match.d.ts.map +1 -1
- package/dist/Match.js +72 -0
- package/dist/Match.js.map +1 -1
- package/dist/Metric.d.ts +3 -3
- package/dist/MutableList.d.ts +5 -2
- package/dist/MutableList.d.ts.map +1 -1
- package/dist/MutableList.js +7 -5
- package/dist/MutableList.js.map +1 -1
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +7 -0
- package/dist/MutableRef.js.map +1 -1
- package/dist/PartitionedSemaphore.d.ts +2 -1
- package/dist/PartitionedSemaphore.d.ts.map +1 -1
- package/dist/PartitionedSemaphore.js +22 -12
- package/dist/PartitionedSemaphore.js.map +1 -1
- package/dist/Pool.d.ts +51 -0
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +136 -36
- package/dist/Pool.js.map +1 -1
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +5 -6
- package/dist/PubSub.js.map +1 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +3 -3
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +8 -2
- package/dist/RcMap.js.map +1 -1
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +8 -0
- package/dist/Ref.js.map +1 -1
- package/dist/Schedule.d.ts +18 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +8 -3
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +690 -49
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +687 -28
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +4 -2
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +14 -17
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +6 -1
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +22 -11
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +48 -22
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +33 -10
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +39 -13
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +12 -4
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +15 -5
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +5 -7
- package/dist/ScopedCache.js.map +1 -1
- package/dist/Semaphore.d.ts +130 -0
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +94 -35
- package/dist/Semaphore.js.map +1 -1
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +7 -2
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts +13 -4
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +31 -10
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +3 -0
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +3 -0
- package/dist/String.js.map +1 -1
- package/dist/Terminal.d.ts +18 -1
- package/dist/Terminal.d.ts.map +1 -1
- package/dist/Terminal.js +1 -1
- package/dist/Terminal.js.map +1 -1
- package/dist/Tracer.d.ts +11 -1
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +6 -1
- package/dist/Tracer.js.map +1 -1
- package/dist/ai/AiError.d.ts +43 -116
- package/dist/ai/AiError.d.ts.map +1 -1
- package/dist/ai/AiError.js +53 -72
- package/dist/ai/AiError.js.map +1 -1
- package/dist/ai/Decision.d.ts +196 -15
- package/dist/ai/Decision.d.ts.map +1 -1
- package/dist/ai/Decision.js +130 -0
- package/dist/ai/Decision.js.map +1 -1
- package/dist/ai/DecisionModel.d.ts +54 -13
- package/dist/ai/DecisionModel.d.ts.map +1 -1
- package/dist/ai/DecisionModel.js +123 -12
- package/dist/ai/DecisionModel.js.map +1 -1
- package/dist/ai/LanguageModel.d.ts.map +1 -1
- package/dist/ai/LanguageModel.js +9 -0
- package/dist/ai/LanguageModel.js.map +1 -1
- package/dist/ai/McpSchema.d.ts +110 -110
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpServer.d.ts +630 -29
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +583 -131
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/McpTest.d.ts +130 -0
- package/dist/ai/McpTest.d.ts.map +1 -0
- package/dist/ai/McpTest.js +237 -0
- package/dist/ai/McpTest.js.map +1 -0
- package/dist/ai/Prompt.d.ts +52 -0
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +38 -0
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +17 -28
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +5 -10
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +43 -1
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js +5 -2
- package/dist/ai/Tool.js.map +1 -1
- package/dist/ai/Toolkit.d.ts.map +1 -1
- package/dist/ai/Toolkit.js +8 -1
- package/dist/ai/Toolkit.js.map +1 -1
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +5 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/internal/mcpCore.js +17 -12
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +4 -5
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +4 -5
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +4 -5
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +4 -5
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +18 -10
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +13 -0
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +5 -3
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
- package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
- package/dist/cli/Argument.d.ts +21 -0
- package/dist/cli/Argument.d.ts.map +1 -1
- package/dist/cli/Argument.js +7 -0
- package/dist/cli/Argument.js.map +1 -1
- package/dist/cli/CliError.d.ts +78 -0
- package/dist/cli/CliError.d.ts.map +1 -1
- package/dist/cli/CliError.js +65 -3
- package/dist/cli/CliError.js.map +1 -1
- package/dist/cli/CliOutput.d.ts +220 -7
- package/dist/cli/CliOutput.d.ts.map +1 -1
- package/dist/cli/CliOutput.js +156 -43
- package/dist/cli/CliOutput.js.map +1 -1
- package/dist/cli/Command.d.ts +47 -16
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +67 -29
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +58 -0
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js +49 -9
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/Flag.d.ts +122 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +42 -0
- package/dist/cli/Flag.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +15 -7
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/HelpDoc.d.ts +15 -1
- package/dist/cli/HelpDoc.d.ts.map +1 -1
- package/dist/cli/Param.d.ts +15 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +23 -2
- package/dist/cli/Param.js.map +1 -1
- package/dist/cli/Primitive.d.ts +14 -0
- package/dist/cli/Primitive.d.ts.map +1 -1
- package/dist/cli/Primitive.js +15 -1
- package/dist/cli/Primitive.js.map +1 -1
- package/dist/cli/Prompt.d.ts +1 -0
- package/dist/cli/Prompt.d.ts.map +1 -1
- package/dist/cli/Prompt.js +1 -0
- package/dist/cli/Prompt.js.map +1 -1
- package/dist/cli/TerminalCapabilities.d.ts +3 -2
- package/dist/cli/TerminalCapabilities.d.ts.map +1 -1
- package/dist/cli/TerminalCapabilities.js +3 -1
- package/dist/cli/TerminalCapabilities.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +73 -27
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cli/internal/help.d.ts.map +1 -1
- package/dist/cli/internal/help.js +17 -10
- package/dist/cli/internal/help.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +45 -10
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +23 -45
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js +6 -7
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +151 -49
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +76 -0
- package/dist/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/cluster/ShardingConfig.js +4 -0
- package/dist/cluster/ShardingConfig.js.map +1 -1
- package/dist/cluster/SingleRunner.d.ts +3 -3
- package/dist/cluster/SingleRunner.d.ts.map +1 -1
- package/dist/cluster/SingleRunner.js +1 -1
- package/dist/cluster/Snowflake.d.ts.map +1 -1
- package/dist/cluster/Snowflake.js +3 -7
- package/dist/cluster/Snowflake.js.map +1 -1
- package/dist/cluster/SqlMessageStorage.d.ts +37 -6
- package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/cluster/SqlMessageStorage.js +34 -7
- package/dist/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +109 -46
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +54 -20
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/crypto/Aead.d.ts +322 -0
- package/dist/crypto/Aead.d.ts.map +1 -0
- package/dist/crypto/Aead.js +331 -0
- package/dist/crypto/Aead.js.map +1 -0
- package/dist/crypto/Cipher.d.ts +235 -0
- package/dist/crypto/Cipher.d.ts.map +1 -0
- package/dist/crypto/Cipher.js +233 -0
- package/dist/crypto/Cipher.js.map +1 -0
- package/dist/crypto/CryptoError.d.ts +212 -0
- package/dist/crypto/CryptoError.d.ts.map +1 -0
- package/dist/crypto/CryptoError.js +202 -0
- package/dist/crypto/CryptoError.js.map +1 -0
- package/dist/crypto/Digest.d.ts +143 -0
- package/dist/crypto/Digest.d.ts.map +1 -0
- package/dist/crypto/Digest.js +146 -0
- package/dist/crypto/Digest.js.map +1 -0
- package/dist/crypto/Kdf.d.ts +220 -0
- package/dist/crypto/Kdf.d.ts.map +1 -0
- package/dist/crypto/Kdf.js +212 -0
- package/dist/crypto/Kdf.js.map +1 -0
- package/dist/crypto/KeyAgreement.d.ts +323 -0
- package/dist/crypto/KeyAgreement.d.ts.map +1 -0
- package/dist/crypto/KeyAgreement.js +303 -0
- package/dist/crypto/KeyAgreement.js.map +1 -0
- package/dist/crypto/KeyFormat.d.ts +309 -0
- package/dist/crypto/KeyFormat.d.ts.map +1 -0
- package/dist/crypto/KeyFormat.js +556 -0
- package/dist/crypto/KeyFormat.js.map +1 -0
- package/dist/crypto/KeyWrap.d.ts +389 -0
- package/dist/crypto/KeyWrap.d.ts.map +1 -0
- package/dist/crypto/KeyWrap.js +381 -0
- package/dist/crypto/KeyWrap.js.map +1 -0
- package/dist/crypto/Mac.d.ts +277 -0
- package/dist/crypto/Mac.d.ts.map +1 -0
- package/dist/crypto/Mac.js +288 -0
- package/dist/crypto/Mac.js.map +1 -0
- package/dist/crypto/SecureRandom.d.ts +340 -0
- package/dist/crypto/SecureRandom.d.ts.map +1 -0
- package/dist/crypto/SecureRandom.js +257 -0
- package/dist/crypto/SecureRandom.js.map +1 -0
- package/dist/crypto/Signature.d.ts +448 -0
- package/dist/crypto/Signature.d.ts.map +1 -0
- package/dist/crypto/Signature.js +484 -0
- package/dist/crypto/Signature.js.map +1 -0
- package/dist/crypto/WebCrypto.d.ts +61 -0
- package/dist/crypto/WebCrypto.d.ts.map +1 -0
- package/dist/crypto/WebCrypto.js +63 -0
- package/dist/crypto/WebCrypto.js.map +1 -0
- package/dist/crypto/index.d.ts +65 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +66 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/internal/asymmetric.d.ts +2 -0
- package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
- package/dist/crypto/internal/asymmetric.js +210 -0
- package/dist/crypto/internal/asymmetric.js.map +1 -0
- package/dist/crypto/internal/chacha.d.ts +46 -0
- package/dist/crypto/internal/chacha.d.ts.map +1 -0
- package/dist/crypto/internal/chacha.js +885 -0
- package/dist/crypto/internal/chacha.js.map +1 -0
- package/dist/crypto/internal/der.d.ts +6 -0
- package/dist/crypto/internal/der.d.ts.map +1 -0
- package/dist/crypto/internal/der.js +86 -0
- package/dist/crypto/internal/der.js.map +1 -0
- package/dist/crypto/internal/digest.d.ts +2 -0
- package/dist/crypto/internal/digest.d.ts.map +1 -0
- package/dist/crypto/internal/digest.js +15 -0
- package/dist/crypto/internal/digest.js.map +1 -0
- package/dist/crypto/internal/key.d.ts +2 -0
- package/dist/crypto/internal/key.d.ts.map +1 -0
- package/dist/crypto/internal/key.js +170 -0
- package/dist/crypto/internal/key.js.map +1 -0
- package/dist/crypto/internal/md5.d.ts +39 -0
- package/dist/crypto/internal/md5.d.ts.map +1 -0
- package/dist/crypto/internal/md5.js +179 -0
- package/dist/crypto/internal/md5.js.map +1 -0
- package/dist/crypto/internal/webCrypto.d.ts +2 -0
- package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
- package/dist/crypto/internal/webCrypto.js +111 -0
- package/dist/crypto/internal/webCrypto.js.map +1 -0
- package/dist/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/devtools/DevToolsClient.js +2 -0
- package/dist/devtools/DevToolsClient.js.map +1 -1
- package/dist/encoding/Base64.js +36 -0
- package/dist/encoding/Base64.js.map +1 -1
- package/dist/encoding/Base64Url.d.ts.map +1 -1
- package/dist/encoding/Base64Url.js +3 -2
- package/dist/encoding/Base64Url.js.map +1 -1
- package/dist/encoding/Csv.d.ts +608 -0
- package/dist/encoding/Csv.d.ts.map +1 -0
- package/dist/encoding/Csv.js +718 -0
- package/dist/encoding/Csv.js.map +1 -0
- package/dist/encoding/Hex.d.ts +3 -2
- package/dist/encoding/Hex.d.ts.map +1 -1
- package/dist/encoding/Hex.js +3 -2
- package/dist/encoding/Hex.js.map +1 -1
- package/dist/encoding/SchemaBinary.d.ts.map +1 -1
- package/dist/encoding/SchemaBinary.js +42 -4
- package/dist/encoding/SchemaBinary.js.map +1 -1
- package/dist/encoding/Sse.d.ts.map +1 -1
- package/dist/encoding/Sse.js +3 -3
- package/dist/encoding/Sse.js.map +1 -1
- package/dist/encoding/Toml.d.ts +17 -3
- package/dist/encoding/Toml.d.ts.map +1 -1
- package/dist/encoding/Toml.js +124 -31
- package/dist/encoding/Toml.js.map +1 -1
- package/dist/encoding/Yaml.d.ts +8 -1
- package/dist/encoding/Yaml.d.ts.map +1 -1
- package/dist/encoding/Yaml.js +54 -18
- package/dist/encoding/Yaml.js.map +1 -1
- package/dist/encoding/index.d.ts +5 -0
- package/dist/encoding/index.d.ts.map +1 -1
- package/dist/encoding/index.js +5 -0
- package/dist/encoding/index.js.map +1 -1
- package/dist/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/eventlog/EventJournal.js +6 -3
- package/dist/eventlog/EventJournal.js.map +1 -1
- package/dist/eventlog/EventLog.d.ts +119 -4
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +200 -12
- package/dist/eventlog/EventLog.js.map +1 -1
- package/dist/eventlog/EventLogEncryption.d.ts +41 -4
- package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/eventlog/EventLogEncryption.js +83 -64
- package/dist/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/eventlog/EventLogMessage.d.ts +279 -0
- package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/eventlog/EventLogMessage.js +217 -1
- package/dist/eventlog/EventLogMessage.js.map +1 -1
- package/dist/eventlog/EventLogRemote.d.ts +200 -28
- package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
- package/dist/eventlog/EventLogRemote.js +186 -16
- package/dist/eventlog/EventLogRemote.js.map +1 -1
- package/dist/eventlog/EventLogServer.d.ts +3 -0
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +18 -10
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +326 -5
- package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.js +769 -14
- package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.d.ts +5 -3
- package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.js +41 -64
- package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
- package/dist/eventlog/EventRow.d.ts +4 -0
- package/dist/eventlog/EventRow.d.ts.map +1 -1
- package/dist/eventlog/EventRow.js +12 -2
- package/dist/eventlog/EventRow.js.map +1 -1
- package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/eventlog/SqlEventJournal.js +47 -27
- package/dist/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
- package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
- package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/internal/batches.d.ts +12 -0
- package/dist/eventlog/internal/batches.d.ts.map +1 -0
- package/dist/eventlog/internal/batches.js +26 -0
- package/dist/eventlog/internal/batches.js.map +1 -0
- package/dist/eventlog/internal/compaction.d.ts +38 -0
- package/dist/eventlog/internal/compaction.d.ts.map +1 -0
- package/dist/eventlog/internal/compaction.js +33 -0
- package/dist/eventlog/internal/compaction.js.map +1 -0
- package/dist/eventlog/internal/conflicts.d.ts +0 -1
- package/dist/eventlog/internal/conflicts.d.ts.map +1 -1
- package/dist/eventlog/internal/conflicts.js +0 -3
- package/dist/eventlog/internal/conflicts.js.map +1 -1
- package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
- package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
- package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
- package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
- package/dist/eventlog/internal/remoteCompaction.js +76 -0
- package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
- package/dist/http/Cookies.d.ts +172 -0
- package/dist/http/Cookies.d.ts.map +1 -1
- package/dist/http/Cookies.js +153 -10
- package/dist/http/Cookies.js.map +1 -1
- package/dist/http/FetchHttpClient.d.ts +26 -2
- package/dist/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/http/FetchHttpClient.js +78 -15
- package/dist/http/FetchHttpClient.js.map +1 -1
- package/dist/http/HttpClient.d.ts +502 -8
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +296 -12
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientError.d.ts +8 -1
- package/dist/http/HttpClientError.d.ts.map +1 -1
- package/dist/http/HttpClientError.js +37 -1
- package/dist/http/HttpClientError.js.map +1 -1
- package/dist/http/HttpClientRequest.d.ts +9 -5
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +3 -4
- package/dist/http/HttpClientRequest.js.map +1 -1
- package/dist/http/HttpClientResponse.d.ts.map +1 -1
- package/dist/http/HttpClientResponse.js +3 -2
- package/dist/http/HttpClientResponse.js.map +1 -1
- package/dist/http/HttpMethod.d.ts +7 -1
- package/dist/http/HttpMethod.d.ts.map +1 -1
- package/dist/http/HttpMethod.js +3 -8
- package/dist/http/HttpMethod.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts +1 -1
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +14 -16
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +2 -1
- package/dist/http/HttpRouter.js.map +1 -1
- package/dist/http/HttpServerError.js +2 -2
- package/dist/http/HttpServerError.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts +11 -3
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +77 -25
- package/dist/http/HttpServerRequest.js.map +1 -1
- package/dist/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/http/HttpServerResponse.js +3 -2
- package/dist/http/HttpServerResponse.js.map +1 -1
- package/dist/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.js +48 -21
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/HttpTraceContext.d.ts +2 -1
- package/dist/http/HttpTraceContext.d.ts.map +1 -1
- package/dist/http/HttpTraceContext.js +7 -5
- package/dist/http/HttpTraceContext.js.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.js +3 -3
- package/dist/http/ProblemDetails.d.ts +96 -0
- package/dist/http/ProblemDetails.d.ts.map +1 -0
- package/dist/http/ProblemDetails.js +98 -0
- package/dist/http/ProblemDetails.js.map +1 -0
- package/dist/http/UrlParams.d.ts +3 -1
- package/dist/http/UrlParams.d.ts.map +1 -1
- package/dist/http/UrlParams.js +4 -2
- package/dist/http/UrlParams.js.map +1 -1
- package/dist/http/index.d.ts +5 -0
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +5 -0
- package/dist/http/index.js.map +1 -1
- package/dist/http/internal/compression.js +4 -5
- package/dist/http/internal/compression.js.map +1 -1
- package/dist/http/internal/decompression.js +6 -2
- package/dist/http/internal/decompression.js.map +1 -1
- package/dist/http/internal/httpBody.js +8 -1
- package/dist/http/internal/httpBody.js.map +1 -1
- package/dist/http/internal/urlParams.js +33 -0
- package/dist/http/internal/urlParams.js.map +1 -1
- package/dist/http-api/HttpApi.d.ts +3 -6
- package/dist/http-api/HttpApi.d.ts.map +1 -1
- package/dist/http-api/HttpApi.js +3 -6
- package/dist/http-api/HttpApi.js.map +1 -1
- package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
- package/dist/http-api/HttpApiBuilder.js +43 -13
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +140 -7
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +193 -44
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts +24 -7
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +123 -32
- package/dist/http-api/HttpApiEndpoint.js.map +1 -1
- package/dist/http-api/HttpApiError.d.ts +185 -13
- package/dist/http-api/HttpApiError.d.ts.map +1 -1
- package/dist/http-api/HttpApiError.js +128 -0
- package/dist/http-api/HttpApiError.js.map +1 -1
- package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
- package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
- package/dist/http-api/HttpApiMiddleware.js +85 -1
- package/dist/http-api/HttpApiMiddleware.js.map +1 -1
- package/dist/http-api/HttpApiSchema.d.ts +142 -33
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +123 -59
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/http-api/HttpApiTest.d.ts.map +1 -1
- package/dist/http-api/HttpApiTest.js +3 -2
- package/dist/http-api/HttpApiTest.js.map +1 -1
- package/dist/http-api/OpenApi.d.ts.map +1 -1
- package/dist/http-api/OpenApi.js +25 -16
- package/dist/http-api/OpenApi.js.map +1 -1
- package/dist/http-api/internal/toCodecHttpProperties.d.ts +2 -0
- package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
- package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
- package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/internal/arbitrary/runner.d.ts.map +1 -1
- package/dist/internal/arbitrary/runner.js +120 -44
- package/dist/internal/arbitrary/runner.js.map +1 -1
- package/dist/internal/core.js +2 -0
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/effect.js +46 -27
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/equal.js +14 -0
- package/dist/internal/equal.js.map +1 -1
- package/dist/internal/glob.d.ts +2 -0
- package/dist/internal/glob.d.ts.map +1 -0
- package/dist/internal/glob.js +630 -0
- package/dist/internal/glob.js.map +1 -0
- package/dist/internal/jsonSchema.d.ts +2 -0
- package/dist/internal/jsonSchema.d.ts.map +1 -0
- package/dist/internal/jsonSchema.js +28 -0
- package/dist/internal/jsonSchema.js.map +1 -0
- package/dist/internal/matcher.js +11 -1
- package/dist/internal/matcher.js.map +1 -1
- package/dist/internal/persistence.js +9 -0
- package/dist/internal/persistence.js.map +1 -1
- package/dist/internal/rcRef.js +4 -1
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/internal/schema/compilerRegistry.js +4 -1
- package/dist/internal/schema/compilerRegistry.js.map +1 -1
- package/dist/internal/schema/content.d.ts +2 -0
- package/dist/internal/schema/content.d.ts.map +1 -0
- package/dist/internal/schema/content.js +13 -0
- package/dist/internal/schema/content.js.map +1 -0
- package/dist/internal/schema/fromJsonSchemaDocument.js +173 -185
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/fromRepresentation.js +2 -1
- package/dist/internal/schema/fromRepresentation.js.map +1 -1
- package/dist/internal/schema/standardSchema.js +8 -2
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +9 -6
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toCodec.js +21 -24
- package/dist/internal/schema/toCodec.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +205 -140
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/toRepresentation.js +107 -129
- package/dist/internal/schema/toRepresentation.js.map +1 -1
- package/dist/internal/sql.d.ts +2 -0
- package/dist/internal/sql.d.ts.map +1 -0
- package/dist/internal/sql.js +13 -0
- package/dist/internal/sql.js.map +1 -0
- package/dist/internal/trie.js +42 -13
- package/dist/internal/trie.js.map +1 -1
- package/dist/internal/ulid.js +41 -0
- package/dist/internal/ulid.js.map +1 -1
- package/dist/internal/uuid.js +52 -8
- package/dist/internal/uuid.js.map +1 -1
- package/dist/internal/version.js +1 -1
- package/dist/observability/Otlp.d.ts +15 -4
- package/dist/observability/Otlp.d.ts.map +1 -1
- package/dist/observability/Otlp.js +10 -0
- package/dist/observability/Otlp.js.map +1 -1
- package/dist/observability/OtlpProxy.d.ts +154 -0
- package/dist/observability/OtlpProxy.d.ts.map +1 -0
- package/dist/observability/OtlpProxy.js +235 -0
- package/dist/observability/OtlpProxy.js.map +1 -0
- package/dist/observability/OtlpResource.d.ts +7 -0
- package/dist/observability/OtlpResource.d.ts.map +1 -1
- package/dist/observability/OtlpResource.js +11 -1
- package/dist/observability/OtlpResource.js.map +1 -1
- package/dist/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/observability/OtlpTracer.js +4 -0
- package/dist/observability/OtlpTracer.js.map +1 -1
- package/dist/observability/index.d.ts +5 -0
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +5 -0
- package/dist/observability/index.js.map +1 -1
- package/dist/persistence/CircuitBreaker.d.ts +897 -0
- package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
- package/dist/persistence/CircuitBreaker.js +1165 -0
- package/dist/persistence/CircuitBreaker.js.map +1 -0
- package/dist/persistence/KeyValueStore.d.ts +47 -2
- package/dist/persistence/KeyValueStore.d.ts.map +1 -1
- package/dist/persistence/KeyValueStore.js +129 -18
- package/dist/persistence/KeyValueStore.js.map +1 -1
- package/dist/persistence/PersistedQueue.d.ts +9 -0
- package/dist/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/persistence/PersistedQueue.js +94 -52
- package/dist/persistence/PersistedQueue.js.map +1 -1
- package/dist/persistence/Persistence.d.ts +10 -4
- package/dist/persistence/Persistence.d.ts.map +1 -1
- package/dist/persistence/Persistence.js +18 -11
- package/dist/persistence/Persistence.js.map +1 -1
- package/dist/persistence/Redis.d.ts +78 -2
- package/dist/persistence/Redis.d.ts.map +1 -1
- package/dist/persistence/Redis.js +62 -7
- package/dist/persistence/Redis.js.map +1 -1
- package/dist/persistence/index.d.ts +5 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +5 -0
- package/dist/persistence/index.js.map +1 -1
- package/dist/process/ChildProcess.d.ts +237 -71
- package/dist/process/ChildProcess.d.ts.map +1 -1
- package/dist/process/ChildProcess.js +56 -158
- package/dist/process/ChildProcess.js.map +1 -1
- package/dist/process/ChildProcessSpawner.d.ts +35 -0
- package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/process/ChildProcessSpawner.js +5 -2
- package/dist/process/ChildProcessSpawner.js.map +1 -1
- package/dist/process/CommandLine.d.ts +294 -0
- package/dist/process/CommandLine.d.ts.map +1 -0
- package/dist/process/CommandLine.js +481 -0
- package/dist/process/CommandLine.js.map +1 -0
- package/dist/process/index.d.ts +5 -0
- package/dist/process/index.d.ts.map +1 -1
- package/dist/process/index.js +5 -0
- package/dist/process/index.js.map +1 -1
- package/dist/reactivity/AsyncResult.d.ts +1 -1
- package/dist/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/reactivity/Atom.d.ts +2 -1
- package/dist/reactivity/Atom.d.ts.map +1 -1
- package/dist/reactivity/Atom.js +3 -4
- package/dist/reactivity/Atom.js.map +1 -1
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +16 -1
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +59 -24
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcMessage.d.ts +10 -1
- package/dist/rpc/RpcMessage.d.ts.map +1 -1
- package/dist/rpc/RpcMessage.js +1 -0
- package/dist/rpc/RpcMessage.js.map +1 -1
- package/dist/rpc/RpcSerialization.d.ts +14 -0
- package/dist/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/rpc/RpcSerialization.js +26 -8
- package/dist/rpc/RpcSerialization.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts +31 -0
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +139 -56
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/rpc/RpcTest.d.ts +1 -0
- package/dist/rpc/RpcTest.d.ts.map +1 -1
- package/dist/rpc/RpcTest.js +1 -0
- package/dist/rpc/RpcTest.js.map +1 -1
- package/dist/schema/Model.d.ts +14 -0
- package/dist/schema/Model.d.ts.map +1 -1
- package/dist/schema/Model.js +18 -3
- package/dist/schema/Model.js.map +1 -1
- package/dist/sql/Migrator.d.ts +2 -20
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +13 -55
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/MigratorFileSystem.d.ts +21 -0
- package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
- package/dist/sql/MigratorFileSystem.js +57 -0
- package/dist/sql/MigratorFileSystem.js.map +1 -0
- package/dist/sql/SqlClient.d.ts +9 -4
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +13 -10
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/SqlResolver.d.ts +4 -0
- package/dist/sql/SqlResolver.d.ts.map +1 -1
- package/dist/sql/SqlResolver.js +18 -4
- package/dist/sql/SqlResolver.js.map +1 -1
- package/dist/sql/Statement.d.ts +27 -6
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +21 -15
- package/dist/sql/Statement.js.map +1 -1
- package/dist/sql/index.js +1 -1
- package/dist/testing/index.d.ts +0 -5
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +0 -5
- package/dist/testing/index.js.map +1 -1
- package/dist/workflow/DurableDeferred.d.ts.map +1 -1
- package/dist/workflow/DurableDeferred.js +21 -2
- package/dist/workflow/DurableDeferred.js.map +1 -1
- package/dist/workflow/internal/crypto.js +9 -8
- package/dist/workflow/internal/crypto.js.map +1 -1
- package/package.json +3 -1
- package/src/Arbitrary.ts +10 -2
- package/src/BigDecimal.ts +3 -0
- package/src/Channel.ts +64 -29
- package/src/Config.ts +7 -1
- package/src/Context.ts +34 -10
- package/src/Cron.ts +178 -29
- package/src/Data.ts +60 -265
- package/src/Duration.ts +140 -0
- package/src/Effect.ts +915 -86
- package/src/Equal.ts +8 -1
- package/src/Exit.ts +3 -3
- package/src/FileSystem.ts +65 -4
- package/src/Formatter.ts +28 -13
- package/src/Glob.ts +205 -0
- package/src/Hash.ts +4 -1
- package/src/JsonPatch.ts +4 -0
- package/src/JsonSchema.ts +12 -40
- package/src/Match.ts +127 -0
- package/src/Metric.ts +3 -3
- package/src/MutableList.ts +7 -5
- package/src/MutableRef.ts +8 -1
- package/src/PartitionedSemaphore.ts +24 -13
- package/src/Pool.ts +182 -52
- package/src/PubSub.ts +5 -6
- package/src/Random.ts +3 -3
- package/src/RcMap.ts +5 -1
- package/src/Ref.ts +8 -0
- package/src/Schedule.ts +27 -4
- package/src/Schema.ts +1237 -87
- package/src/SchemaAST.ts +20 -20
- package/src/SchemaGetter.ts +27 -11
- package/src/SchemaParser.ts +51 -18
- package/src/SchemaRepresentation.ts +50 -34
- package/src/SchemaTransformation.ts +17 -5
- package/src/ScopedCache.ts +5 -9
- package/src/Semaphore.ts +208 -40
- package/src/Sink.ts +15 -2
- package/src/Stream.ts +48 -22
- package/src/String.ts +3 -0
- package/src/Terminal.ts +19 -1
- package/src/Tracer.ts +15 -1
- package/src/ai/AiError.ts +56 -80
- package/src/ai/Decision.ts +257 -6
- package/src/ai/DecisionModel.ts +171 -28
- package/src/ai/LanguageModel.ts +9 -0
- package/src/ai/McpServer.ts +1283 -299
- package/src/ai/McpTest.ts +380 -0
- package/src/ai/Prompt.ts +65 -0
- package/src/ai/Response.ts +36 -31
- package/src/ai/Tool.ts +65 -10
- package/src/ai/Toolkit.ts +4 -1
- package/src/ai/index.ts +6 -0
- package/src/ai/internal/mcpCore.ts +78 -44
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +4 -7
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +4 -7
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +4 -7
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +4 -7
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +15 -10
- package/src/ai/internal/mcpProtocol.ts +29 -0
- package/src/ai/internal/mcpRuntime.ts +9 -5
- package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
- package/src/cli/Argument.ts +21 -0
- package/src/cli/CliError.ts +90 -3
- package/src/cli/CliOutput.ts +300 -55
- package/src/cli/Command.ts +76 -41
- package/src/cli/Completions.ts +51 -0
- package/src/cli/Flag.ts +122 -0
- package/src/cli/GlobalFlag.ts +6 -7
- package/src/cli/HelpDoc.ts +18 -1
- package/src/cli/Param.ts +35 -6
- package/src/cli/Primitive.ts +16 -1
- package/src/cli/Prompt.ts +1 -0
- package/src/cli/TerminalCapabilities.ts +6 -3
- package/src/cli/internal/completions/bash.ts +79 -29
- package/src/cli/internal/help.ts +21 -9
- package/src/cluster/ClusterWorkflowEngine.ts +46 -16
- package/src/cluster/MessageStorage.ts +19 -14
- package/src/cluster/Sharding.ts +176 -47
- package/src/cluster/ShardingConfig.ts +43 -0
- package/src/cluster/SingleRunner.ts +3 -3
- package/src/cluster/Snowflake.ts +3 -7
- package/src/cluster/SqlMessageStorage.ts +49 -17
- package/src/cluster/SqlRunnerStorage.ts +143 -70
- package/src/cluster/internal/entityManager.ts +75 -22
- package/src/crypto/Aead.ts +517 -0
- package/src/crypto/Cipher.ts +326 -0
- package/src/crypto/CryptoError.ts +242 -0
- package/src/crypto/Digest.ts +167 -0
- package/src/crypto/Kdf.ts +315 -0
- package/src/crypto/KeyAgreement.ts +489 -0
- package/src/crypto/KeyFormat.ts +712 -0
- package/src/crypto/KeyWrap.ts +639 -0
- package/src/crypto/Mac.ts +386 -0
- package/src/crypto/SecureRandom.ts +459 -0
- package/src/crypto/Signature.ts +673 -0
- package/src/crypto/WebCrypto.ts +64 -0
- package/src/crypto/index.ts +78 -0
- package/src/crypto/internal/asymmetric.ts +329 -0
- package/src/crypto/internal/chacha.ts +1088 -0
- package/src/crypto/internal/der.ts +110 -0
- package/src/crypto/internal/digest.ts +16 -0
- package/src/crypto/internal/key.ts +235 -0
- package/src/crypto/internal/md5.ts +170 -0
- package/src/crypto/internal/webCrypto.ts +150 -0
- package/src/devtools/DevToolsClient.ts +2 -0
- package/src/encoding/Base64.ts +38 -0
- package/src/encoding/Base64Url.ts +5 -2
- package/src/encoding/Csv.ts +1298 -0
- package/src/encoding/Hex.ts +3 -2
- package/src/encoding/SchemaBinary.ts +40 -4
- package/src/encoding/Sse.ts +4 -3
- package/src/encoding/Toml.ts +117 -35
- package/src/encoding/Yaml.ts +61 -18
- package/src/encoding/index.ts +6 -0
- package/src/eventlog/EventJournal.ts +4 -3
- package/src/eventlog/EventLog.ts +340 -15
- package/src/eventlog/EventLogEncryption.ts +118 -110
- package/src/eventlog/EventLogMessage.ts +273 -1
- package/src/eventlog/EventLogRemote.ts +367 -23
- package/src/eventlog/EventLogServer.ts +23 -8
- package/src/eventlog/EventLogServerEncrypted.ts +1130 -67
- package/src/eventlog/EventLogSessionAuth.ts +56 -70
- package/src/eventlog/EventRow.ts +12 -3
- package/src/eventlog/SqlEventJournal.ts +68 -45
- package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
- package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
- package/src/eventlog/internal/batches.ts +30 -0
- package/src/eventlog/internal/compaction.ts +64 -0
- package/src/eventlog/internal/conflicts.ts +0 -4
- package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
- package/src/eventlog/internal/remoteCompaction.ts +92 -0
- package/src/http/Cookies.ts +291 -12
- package/src/http/FetchHttpClient.ts +88 -16
- package/src/http/HttpClient.ts +636 -29
- package/src/http/HttpClientError.ts +35 -1
- package/src/http/HttpClientRequest.ts +21 -10
- package/src/http/HttpClientResponse.ts +3 -2
- package/src/http/HttpMethod.ts +10 -2
- package/src/http/HttpMiddleware.ts +15 -18
- package/src/http/HttpRouter.ts +2 -1
- package/src/http/HttpServerError.ts +2 -2
- package/src/http/HttpServerRequest.ts +101 -30
- package/src/http/HttpServerResponse.ts +3 -2
- package/src/http/HttpStaticServer.ts +51 -22
- package/src/http/HttpTraceContext.ts +7 -4
- package/src/http/MultipartParser/internal/contentType.ts +3 -3
- package/src/http/ProblemDetails.ts +149 -0
- package/src/http/UrlParams.ts +6 -1
- package/src/http/index.ts +6 -0
- package/src/http/internal/compression.ts +4 -5
- package/src/http/internal/decompression.ts +10 -4
- package/src/http/internal/httpBody.ts +10 -2
- package/src/http/internal/urlParams.ts +37 -0
- package/src/http-api/HttpApi.ts +3 -6
- package/src/http-api/HttpApiBuilder.ts +61 -19
- package/src/http-api/HttpApiClient.ts +284 -72
- package/src/http-api/HttpApiEndpoint.ts +135 -35
- package/src/http-api/HttpApiError.ts +250 -0
- package/src/http-api/HttpApiMiddleware.ts +95 -1
- package/src/http-api/HttpApiSchema.ts +236 -52
- package/src/http-api/HttpApiTest.ts +3 -2
- package/src/http-api/OpenApi.ts +20 -17
- package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
- package/src/index.ts +6 -6
- package/src/internal/arbitrary/runner.ts +133 -36
- package/src/internal/core.ts +2 -0
- package/src/internal/effect.ts +58 -34
- package/src/internal/equal.ts +17 -0
- package/src/internal/glob.ts +736 -0
- package/src/internal/jsonSchema.ts +27 -0
- package/src/internal/matcher.ts +18 -1
- package/src/internal/persistence.ts +11 -0
- package/src/internal/rcRef.ts +4 -1
- package/src/internal/schema/compilerRegistry.ts +6 -1
- package/src/internal/schema/content.ts +18 -0
- package/src/internal/schema/fromJsonSchemaDocument.ts +228 -190
- package/src/internal/schema/fromRepresentation.ts +2 -1
- package/src/internal/schema/standardSchema.ts +2 -2
- package/src/internal/schema/toCodeDocument.ts +11 -7
- package/src/internal/schema/toCodec.ts +26 -22
- package/src/internal/schema/toJsonSchemaDocument.ts +189 -167
- package/src/internal/schema/toRepresentation.ts +122 -140
- package/src/internal/sql.ts +14 -0
- package/src/internal/trie.ts +43 -14
- package/src/internal/ulid.ts +44 -0
- package/src/internal/uuid.ts +57 -16
- package/src/internal/version.ts +1 -1
- package/src/observability/Otlp.ts +21 -4
- package/src/observability/OtlpProxy.ts +314 -0
- package/src/observability/OtlpResource.ts +9 -1
- package/src/observability/OtlpTracer.ts +4 -0
- package/src/observability/index.ts +6 -0
- package/src/persistence/CircuitBreaker.ts +1678 -0
- package/src/persistence/KeyValueStore.ts +219 -22
- package/src/persistence/PersistedQueue.ts +128 -59
- package/src/persistence/Persistence.ts +20 -13
- package/src/persistence/Redis.ts +129 -8
- package/src/persistence/index.ts +6 -0
- package/src/process/ChildProcess.ts +285 -264
- package/src/process/ChildProcessSpawner.ts +46 -2
- package/src/process/CommandLine.ts +630 -0
- package/src/process/index.ts +6 -0
- package/src/reactivity/AsyncResult.ts +1 -1
- package/src/reactivity/Atom.ts +5 -5
- package/src/reactivity/AtomRegistry.ts +1 -1
- package/src/rpc/RpcClient.ts +75 -36
- package/src/rpc/RpcMessage.ts +10 -1
- package/src/rpc/RpcSerialization.ts +35 -9
- package/src/rpc/RpcServer.ts +176 -63
- package/src/rpc/RpcTest.ts +3 -0
- package/src/schema/Model.ts +26 -3
- package/src/sql/Migrator.ts +15 -69
- package/src/sql/MigratorFileSystem.ts +71 -0
- package/src/sql/SqlClient.ts +13 -20
- package/src/sql/SqlResolver.ts +23 -9
- package/src/sql/Statement.ts +38 -9
- package/src/sql/index.ts +1 -1
- package/src/testing/index.ts +0 -6
- package/src/workflow/DurableDeferred.ts +23 -6
- package/src/workflow/internal/crypto.ts +15 -11
- package/dist/Crypto.d.ts +0 -244
- package/dist/Crypto.d.ts.map +0 -1
- package/dist/Crypto.js +0 -139
- package/dist/Crypto.js.map +0 -1
- package/dist/testing/TestCrypto.d.ts +0 -73
- package/dist/testing/TestCrypto.d.ts.map +0 -1
- package/dist/testing/TestCrypto.js +0 -87
- package/dist/testing/TestCrypto.js.map +0 -1
- package/src/Crypto.ts +0 -347
- package/src/testing/TestCrypto.ts +0 -94
|
@@ -14,21 +14,25 @@
|
|
|
14
14
|
*/
|
|
15
15
|
/** @effect-diagnostics floatingEffect:skip-file */
|
|
16
16
|
/** @effect-diagnostics classSelfMismatch:off */
|
|
17
|
+
import * as Cause from "../Cause.ts"
|
|
17
18
|
import * as Context from "../Context.ts"
|
|
18
19
|
import * as Effect from "../Effect.ts"
|
|
20
|
+
import * as ErrorReporter from "../ErrorReporter.ts"
|
|
19
21
|
import type * as HttpClientError from "../http/HttpClientError.ts"
|
|
20
22
|
import type * as HttpClientRequest from "../http/HttpClientRequest.ts"
|
|
21
23
|
import type * as HttpClientResponse from "../http/HttpClientResponse.ts"
|
|
22
24
|
import type * as HttpRouter from "../http/HttpRouter.ts"
|
|
25
|
+
import * as HttpServerRespondable from "../http/HttpServerRespondable.ts"
|
|
23
26
|
import type { HttpServerResponse } from "../http/HttpServerResponse.ts"
|
|
24
27
|
import { getStackTraceLimit, setStackTraceLimit } from "../internal/stackTraceLimit.ts"
|
|
25
28
|
import * as Layer from "../Layer.ts"
|
|
26
29
|
import { hasProperty } from "../Predicate.ts"
|
|
27
30
|
import type * as Schema from "../Schema.ts"
|
|
31
|
+
import * as SchemaIssue from "../SchemaIssue.ts"
|
|
28
32
|
import { Scope } from "../Scope.ts"
|
|
29
33
|
import type { unhandled } from "../Types.ts"
|
|
30
34
|
import type * as HttpApiEndpoint from "./HttpApiEndpoint.ts"
|
|
31
|
-
import { HttpApiSchemaError } from "./HttpApiError.ts"
|
|
35
|
+
import { BadRequestProblem, HttpApiSchemaError, InternalServerErrorProblem } from "./HttpApiError.ts"
|
|
32
36
|
import type * as HttpApiGroup from "./HttpApiGroup.ts"
|
|
33
37
|
import type * as HttpApiSecurity from "./HttpApiSecurity.ts"
|
|
34
38
|
|
|
@@ -513,6 +517,96 @@ export const layerSchemaErrorTransform = <Id, E extends ErrorConstraint, Require
|
|
|
513
517
|
)
|
|
514
518
|
)
|
|
515
519
|
|
|
520
|
+
/**
|
|
521
|
+
* Middleware that renders request decoding and response encoding failures as
|
|
522
|
+
* RFC 9457 problems.
|
|
523
|
+
*
|
|
524
|
+
* **Details**
|
|
525
|
+
*
|
|
526
|
+
* It declares `HttpApiError.BadRequestProblem` at 400 and
|
|
527
|
+
* `HttpApiError.InternalServerErrorProblem` at 500, so the OpenAPI document and
|
|
528
|
+
* generated clients of an API using it know both responses. Provide it with
|
|
529
|
+
* {@link layerProblemDetails}.
|
|
530
|
+
*
|
|
531
|
+
* **Example** (Opting in to problem details)
|
|
532
|
+
*
|
|
533
|
+
* ```ts
|
|
534
|
+
* import { Layer, Schema } from "effect"
|
|
535
|
+
* import { HttpApi, HttpApiBuilder, HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware } from "effect/http-api"
|
|
536
|
+
*
|
|
537
|
+
* const Users = HttpApiGroup.make("users").add(
|
|
538
|
+
* HttpApiEndpoint.get("list", "/users", { query: { page: Schema.Number } })
|
|
539
|
+
* )
|
|
540
|
+
* const Api = HttpApi.make("api").add(Users).middleware(HttpApiMiddleware.ProblemDetails)
|
|
541
|
+
*
|
|
542
|
+
* // A request whose query fails decoding now responds with 400 and
|
|
543
|
+
* // { "type": "about:blank", "title": "Bad Request", "status": 400, "detail": "Request validation failed" }
|
|
544
|
+
* const ServerLive = HttpApiBuilder.layer(Api).pipe(
|
|
545
|
+
* Layer.provide(HttpApiMiddleware.layerProblemDetails())
|
|
546
|
+
* )
|
|
547
|
+
* ```
|
|
548
|
+
*
|
|
549
|
+
* @stability unstable
|
|
550
|
+
* @category services
|
|
551
|
+
* @since 4.0.6
|
|
552
|
+
*/
|
|
553
|
+
export class ProblemDetails extends Service<ProblemDetails>()("effect/http-api/HttpApiMiddleware/ProblemDetails", {
|
|
554
|
+
error: [BadRequestProblem, InternalServerErrorProblem]
|
|
555
|
+
}) {}
|
|
556
|
+
|
|
557
|
+
const formatIssues = SchemaIssue.makeFormatterStandardSchemaV1()
|
|
558
|
+
|
|
559
|
+
const toPathSegment = (segment: PropertyKey | { readonly key: PropertyKey }): string | number => {
|
|
560
|
+
const key = typeof segment === "object" ? segment.key : segment
|
|
561
|
+
return typeof key === "number" ? key : String(key)
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
const toProblemIssues = (error: HttpApiSchemaError) => {
|
|
565
|
+
const slot = error.kind.toLowerCase()
|
|
566
|
+
return formatIssues(error.cause.issue).issues.map((issue) => ({
|
|
567
|
+
path: [slot, ...(issue.path ?? []).map(toPathSegment)],
|
|
568
|
+
message: issue.message
|
|
569
|
+
}))
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
/**
|
|
573
|
+
* Provides the {@link ProblemDetails} middleware.
|
|
574
|
+
*
|
|
575
|
+
* **Details**
|
|
576
|
+
*
|
|
577
|
+
* A request decoding failure becomes a `400` problem with a generic `detail`
|
|
578
|
+
* and no information about the request or the schema. With
|
|
579
|
+
* `includeDetails: true` the problem also carries `errors`, one entry per
|
|
580
|
+
* issue with the path of the offending value prefixed by its request slot and
|
|
581
|
+
* the issue message. A response encoding failure is reported to the configured
|
|
582
|
+
* error reporters, as it is without the middleware, and becomes a `500`
|
|
583
|
+
* problem with no detail.
|
|
584
|
+
*
|
|
585
|
+
* @stability unstable
|
|
586
|
+
* @category layers
|
|
587
|
+
* @since 4.0.6
|
|
588
|
+
*/
|
|
589
|
+
export const layerProblemDetails = (options?: {
|
|
590
|
+
readonly includeDetails?: boolean | undefined
|
|
591
|
+
}): Layer.Layer<ProblemDetails> => {
|
|
592
|
+
const includeDetails = options?.includeDetails === true
|
|
593
|
+
return layerSchemaErrorTransform(ProblemDetails, (error) => {
|
|
594
|
+
if (error.kind === "Body" || error.kind === "ResponseHeaders") {
|
|
595
|
+
return Effect.andThen(
|
|
596
|
+
ErrorReporter.report(Cause.fail(error)),
|
|
597
|
+
HttpServerRespondable.toResponse(new InternalServerErrorProblem())
|
|
598
|
+
)
|
|
599
|
+
}
|
|
600
|
+
return Effect.fail(
|
|
601
|
+
new BadRequestProblem(
|
|
602
|
+
includeDetails ? { ...requestValidationFailed, errors: toProblemIssues(error) } : requestValidationFailed
|
|
603
|
+
)
|
|
604
|
+
)
|
|
605
|
+
})
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
const requestValidationFailed = { detail: "Request validation failed" }
|
|
609
|
+
|
|
516
610
|
/**
|
|
517
611
|
* Provides a client-side middleware implementation for a middleware that is required by generated clients.
|
|
518
612
|
*
|
|
@@ -10,18 +10,21 @@
|
|
|
10
10
|
* @stability unstable
|
|
11
11
|
* @since 4.0.0
|
|
12
12
|
*/
|
|
13
|
+
import * as Arr from "../Array.ts"
|
|
13
14
|
import * as ByteSize from "../ByteSize.ts"
|
|
14
15
|
import * as Sse from "../encoding/Sse.ts"
|
|
15
16
|
import { constVoid, type LazyArg } from "../Function.ts"
|
|
16
17
|
import { hasBody, type HttpMethod } from "../http/HttpMethod.ts"
|
|
17
18
|
import * as HttpStatus from "../http/HttpStatus.ts"
|
|
18
19
|
import type * as Multipart_ from "../http/Multipart.ts"
|
|
20
|
+
import * as ProblemDetails from "../http/ProblemDetails.ts"
|
|
19
21
|
import * as Predicate from "../Predicate.ts"
|
|
20
22
|
import * as Schema from "../Schema.ts"
|
|
21
23
|
import * as SchemaAST from "../SchemaAST.ts"
|
|
22
24
|
import * as SchemaTransformation from "../SchemaTransformation.ts"
|
|
23
25
|
import * as Socket from "../socket/Socket.ts"
|
|
24
26
|
import * as Stream from "../Stream.ts"
|
|
27
|
+
import * as MediaType from "./internal/mediaType.ts"
|
|
25
28
|
|
|
26
29
|
declare module "../Schema.ts" {
|
|
27
30
|
namespace Annotations {
|
|
@@ -122,13 +125,15 @@ export type StatusLiteral = HttpStatus.Literal
|
|
|
122
125
|
*
|
|
123
126
|
* **Details**
|
|
124
127
|
*
|
|
125
|
-
*
|
|
126
|
-
* schema
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* status
|
|
131
|
-
*
|
|
128
|
+
* Stores the status with `.annotateKey({ httpApiStatus: code })` unless the
|
|
129
|
+
* schema or any of its checks already has an ordinary `httpApiStatus`
|
|
130
|
+
* annotation, including an explicit `undefined`. In that case, uses
|
|
131
|
+
* `.annotate({ httpApiStatus: code })` instead.
|
|
132
|
+
*
|
|
133
|
+
* Ordinary status annotations take precedence over key annotations. Checks
|
|
134
|
+
* without a status annotation preserve the existing status. You can pass
|
|
135
|
+
* either a numeric code (for example, `201`) or a common literal name
|
|
136
|
+
* (for example, `"Created"`).
|
|
132
137
|
*
|
|
133
138
|
* @stability unstable
|
|
134
139
|
* @category schemas
|
|
@@ -149,9 +154,9 @@ export function status(code: StatusLiteral): {
|
|
|
149
154
|
export function status(code: number | StatusLiteral) {
|
|
150
155
|
const statusCode = typeof code === "string" ? HttpStatus.fromLiteral(code) : code
|
|
151
156
|
return <S extends Schema.Top>(self: S): S["Rebuild"] =>
|
|
152
|
-
self.ast
|
|
153
|
-
? self.
|
|
154
|
-
: self.
|
|
157
|
+
findHttpApiStatusAnnotation(self.ast) === undefined
|
|
158
|
+
? self.annotateKey({ httpApiStatus: statusCode })
|
|
159
|
+
: self.annotate({ httpApiStatus: statusCode })
|
|
155
160
|
}
|
|
156
161
|
|
|
157
162
|
/**
|
|
@@ -260,6 +265,85 @@ export function asNoContent<S extends Schema.Constraint>(options: {
|
|
|
260
265
|
}
|
|
261
266
|
}
|
|
262
267
|
|
|
268
|
+
/**
|
|
269
|
+
* Schema type returned by `asProblem`, encoding as a problem details body
|
|
270
|
+
* while decoding to the original schema type.
|
|
271
|
+
*
|
|
272
|
+
* @stability unstable
|
|
273
|
+
* @category schemas
|
|
274
|
+
* @since 4.0.6
|
|
275
|
+
*/
|
|
276
|
+
export interface asProblem<S extends Schema.Constraint> extends
|
|
277
|
+
Schema.decodeTo<
|
|
278
|
+
Schema.toType<S>,
|
|
279
|
+
Schema.Struct<{
|
|
280
|
+
readonly type: Schema.tag<string>
|
|
281
|
+
readonly status: Schema.middlewareDecoding<Schema.withDecodingDefaultKey<Schema.tag<number>>, never>
|
|
282
|
+
readonly title: Schema.middlewareDecoding<Schema.withDecodingDefaultKey<Schema.tag<string>>, never>
|
|
283
|
+
}>
|
|
284
|
+
>
|
|
285
|
+
{}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Renders an error class as an RFC 9457 problem.
|
|
289
|
+
*
|
|
290
|
+
* **Details**
|
|
291
|
+
*
|
|
292
|
+
* The server encodes the error as an `application/problem+json` body carrying
|
|
293
|
+
* `type`, `title` and the status of the class. Generated clients decode a body
|
|
294
|
+
* with the same `type` back into an instance by calling `decode`, which
|
|
295
|
+
* defaults to constructing the class without arguments; a body with a
|
|
296
|
+
* different `type` is rejected.
|
|
297
|
+
*
|
|
298
|
+
* **Example** (A built-in error as a problem)
|
|
299
|
+
*
|
|
300
|
+
* ```ts
|
|
301
|
+
* import { HttpApiEndpoint, HttpApiError, HttpApiSchema } from "effect/http-api"
|
|
302
|
+
*
|
|
303
|
+
* const user = HttpApiEndpoint.get("user", "/user", {
|
|
304
|
+
* error: HttpApiError.NotFound.pipe(HttpApiSchema.asProblem({ title: "Not Found" }))
|
|
305
|
+
* })
|
|
306
|
+
* // A NotFound failure responds with 404 and
|
|
307
|
+
* // { "type": "about:blank", "title": "Not Found", "status": 404 }
|
|
308
|
+
* ```
|
|
309
|
+
*
|
|
310
|
+
* @see {@link asNoContent} for the empty-body equivalent.
|
|
311
|
+
*
|
|
312
|
+
* @stability unstable
|
|
313
|
+
* @category encoding
|
|
314
|
+
* @since 4.0.6
|
|
315
|
+
*/
|
|
316
|
+
export function asProblem<S extends Schema.Constraint & (new() => S["Type"])>(options: {
|
|
317
|
+
/**
|
|
318
|
+
* The problem type URI. Defaults to `about:blank`.
|
|
319
|
+
*/
|
|
320
|
+
readonly type?: string | undefined
|
|
321
|
+
readonly title: string
|
|
322
|
+
readonly decode?: LazyArg<S["Type"]> | undefined
|
|
323
|
+
}) {
|
|
324
|
+
return (self: S): asProblem<S> => {
|
|
325
|
+
const status = getStatusError(self.ast)
|
|
326
|
+
const type = options.type ?? ProblemDetails.blankType
|
|
327
|
+
const body = { type, status, title: options.title }
|
|
328
|
+
const decode = options.decode ?? (() => new self())
|
|
329
|
+
const problem = Schema.Struct({
|
|
330
|
+
type: Schema.tag(type),
|
|
331
|
+
status: ProblemDetails.fixedMember(status),
|
|
332
|
+
title: ProblemDetails.fixedMember(options.title)
|
|
333
|
+
})
|
|
334
|
+
return problem.pipe(
|
|
335
|
+
Schema.decodeTo(
|
|
336
|
+
Schema.toType(self),
|
|
337
|
+
SchemaTransformation.transform({
|
|
338
|
+
decode,
|
|
339
|
+
encode: () => body
|
|
340
|
+
})
|
|
341
|
+
),
|
|
342
|
+
asJson({ contentType: ProblemDetails.contentType })
|
|
343
|
+
)
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
263
347
|
type StreamMode = "sse" | "uint8array" | "ndjson"
|
|
264
348
|
|
|
265
349
|
/**
|
|
@@ -321,6 +405,7 @@ export interface StreamSse<
|
|
|
321
405
|
readonly mode: "sse"
|
|
322
406
|
readonly sseMode: StreamSseMode
|
|
323
407
|
readonly contentType: string
|
|
408
|
+
readonly contentTypes: Arr.NonEmptyReadonlyArray<string>
|
|
324
409
|
readonly events: Events
|
|
325
410
|
readonly error: Error
|
|
326
411
|
readonly "~Value"?: Value | undefined
|
|
@@ -379,6 +464,7 @@ export interface StreamUint8Array extends
|
|
|
379
464
|
readonly _tag: "StreamUint8Array"
|
|
380
465
|
readonly mode: "uint8array"
|
|
381
466
|
readonly contentType: string
|
|
467
|
+
readonly contentTypes: Arr.NonEmptyReadonlyArray<string>
|
|
382
468
|
readonly maxBytes: ByteSize.ByteSize | undefined
|
|
383
469
|
}
|
|
384
470
|
|
|
@@ -430,6 +516,7 @@ export interface StreamNdjson<S extends Schema.Constraint> extends
|
|
|
430
516
|
readonly _tag: "StreamNdjson"
|
|
431
517
|
readonly mode: "ndjson"
|
|
432
518
|
readonly contentType: string
|
|
519
|
+
readonly contentTypes: Arr.NonEmptyReadonlyArray<string>
|
|
433
520
|
readonly schema: S
|
|
434
521
|
readonly maxBytes: ByteSize.ByteSize | undefined
|
|
435
522
|
readonly maxElementBytes: ByteSize.ByteSize
|
|
@@ -523,7 +610,7 @@ export const StreamSse: {
|
|
|
523
610
|
_tag: "StreamSse",
|
|
524
611
|
mode: "sse",
|
|
525
612
|
sseMode: options.events === undefined ? "data" : "events",
|
|
526
|
-
|
|
613
|
+
...streamContentTypes(options.contentType, "sse"),
|
|
527
614
|
events,
|
|
528
615
|
error: options.error ?? Schema.Never
|
|
529
616
|
})
|
|
@@ -534,22 +621,24 @@ export const StreamSse: {
|
|
|
534
621
|
*
|
|
535
622
|
* **Details**
|
|
536
623
|
*
|
|
537
|
-
* `contentType` defaults to `application/octet-stream`.
|
|
538
|
-
*
|
|
624
|
+
* `contentType` defaults to `application/octet-stream`. Pass a list when the
|
|
625
|
+
* same stream is sent under several media types. The first entry is the
|
|
626
|
+
* default response type, and payloads are accepted under every entry.
|
|
627
|
+
* `maxBytes` only applies to request payloads and has no default.
|
|
539
628
|
*
|
|
540
629
|
* @stability unstable
|
|
541
630
|
* @category constructors
|
|
542
631
|
* @since 4.0.0
|
|
543
632
|
*/
|
|
544
633
|
export const StreamUint8Array = (options?: {
|
|
545
|
-
readonly contentType?: string | undefined
|
|
634
|
+
readonly contentType?: string | ReadonlyArray<string> | undefined
|
|
546
635
|
readonly maxBytes?: ByteSize.Input | undefined
|
|
547
636
|
}): StreamUint8Array =>
|
|
548
637
|
Schema.make<StreamUint8Array>(streamSchema.ast, {
|
|
549
638
|
[StreamSchemaTypeId]: StreamSchemaTypeId,
|
|
550
639
|
_tag: "StreamUint8Array",
|
|
551
640
|
mode: "uint8array",
|
|
552
|
-
|
|
641
|
+
...streamContentTypes(options?.contentType, "uint8array"),
|
|
553
642
|
maxBytes: options?.maxBytes === undefined ? undefined : ByteSize.fromInputUnsafe(options.maxBytes)
|
|
554
643
|
})
|
|
555
644
|
|
|
@@ -559,7 +648,8 @@ export const StreamUint8Array = (options?: {
|
|
|
559
648
|
* **Details**
|
|
560
649
|
*
|
|
561
650
|
* `contentType` defaults to `application/x-ndjson` and `maxElementBytes` to 1
|
|
562
|
-
* MiB. `maxBytes` has no default.
|
|
651
|
+
* MiB. `maxBytes` has no default. Pass a list of content types to accept
|
|
652
|
+
* aliases such as `application/jsonl`. The first entry is the default.
|
|
563
653
|
*
|
|
564
654
|
* **Example** (Declaring an NDJSON request payload)
|
|
565
655
|
*
|
|
@@ -587,7 +677,7 @@ export const StreamUint8Array = (options?: {
|
|
|
587
677
|
*/
|
|
588
678
|
export const StreamNdjson = <S extends Schema.Constraint>(options: {
|
|
589
679
|
readonly schema: S
|
|
590
|
-
readonly contentType?: string | undefined
|
|
680
|
+
readonly contentType?: string | ReadonlyArray<string> | undefined
|
|
591
681
|
readonly maxBytes?: ByteSize.Input | undefined
|
|
592
682
|
readonly maxElementBytes?: ByteSize.Input | undefined
|
|
593
683
|
}): StreamNdjson<S> =>
|
|
@@ -595,7 +685,7 @@ export const StreamNdjson = <S extends Schema.Constraint>(options: {
|
|
|
595
685
|
[StreamSchemaTypeId]: StreamSchemaTypeId,
|
|
596
686
|
_tag: "StreamNdjson",
|
|
597
687
|
mode: "ndjson",
|
|
598
|
-
|
|
688
|
+
...streamContentTypes(options.contentType, "ndjson"),
|
|
599
689
|
schema: options.schema,
|
|
600
690
|
maxBytes: options.maxBytes === undefined ? undefined : ByteSize.fromInputUnsafe(options.maxBytes),
|
|
601
691
|
maxElementBytes: options.maxElementBytes === undefined
|
|
@@ -637,24 +727,27 @@ const UpgradeTypeId = "~effect/http-api/HttpApiSchema/Upgrade"
|
|
|
637
727
|
*
|
|
638
728
|
* Created with {@link Upgrade}. The response is `101 Switching Protocols`, and
|
|
639
729
|
* the connection then carries raw bytes in both directions as a `Socket`.
|
|
730
|
+
* `Headers` is the schema of the custom `101` headers, or `never` when the
|
|
731
|
+
* upgrade declares none.
|
|
640
732
|
*
|
|
641
733
|
* @stability unstable
|
|
642
734
|
* @category models
|
|
643
735
|
* @since 4.0.6
|
|
644
736
|
*/
|
|
645
|
-
export interface Upgrade extends
|
|
737
|
+
export interface Upgrade<Headers extends Schema.Top = Schema.Top> extends
|
|
646
738
|
Schema.Bottom<
|
|
647
739
|
Socket.Socket,
|
|
648
740
|
Socket.Socket,
|
|
649
741
|
never,
|
|
650
742
|
never,
|
|
651
743
|
SchemaAST.Declaration,
|
|
652
|
-
Upgrade
|
|
744
|
+
Upgrade<Headers>
|
|
653
745
|
>
|
|
654
746
|
{
|
|
655
|
-
readonly "Rebuild": Upgrade
|
|
747
|
+
readonly "Rebuild": Upgrade<Headers>
|
|
656
748
|
readonly [UpgradeTypeId]: typeof UpgradeTypeId
|
|
657
749
|
readonly protocol: string
|
|
750
|
+
readonly headers: Headers | undefined
|
|
658
751
|
}
|
|
659
752
|
|
|
660
753
|
const upgradeSchema = Schema.declare(Socket.isSocket).pipe(status(101))
|
|
@@ -665,33 +758,59 @@ const upgradeSchema = Schema.declare(Socket.isSocket).pipe(status(101))
|
|
|
665
758
|
*
|
|
666
759
|
* **When to use**
|
|
667
760
|
*
|
|
668
|
-
* Use
|
|
669
|
-
*
|
|
670
|
-
*
|
|
671
|
-
* connect with `Socket.makeWebSocket` instead.
|
|
761
|
+
* Use when an endpoint hands over its connection as a raw byte stream after
|
|
762
|
+
* `101 Switching Protocols`. For WebSocket, upgrade the request with
|
|
763
|
+
* `HttpServerRequest.upgrade` and connect with `Socket.makeWebSocket` instead.
|
|
672
764
|
*
|
|
673
765
|
* **Details**
|
|
674
766
|
*
|
|
675
|
-
* The handler receives
|
|
676
|
-
* sent when the handler acquires the socket's reader,
|
|
677
|
-
* fail with a declared error before then. Requests
|
|
678
|
-
* `protocol` get `426 Upgrade Required`.
|
|
767
|
+
* The handler receives an `upgrade` function that returns the connection.
|
|
768
|
+
* The `101` response is sent when the handler acquires the socket's reader,
|
|
769
|
+
* so a handler can still fail with a declared error before then. Requests
|
|
770
|
+
* that do not ask for `protocol` get `426 Upgrade Required`.
|
|
679
771
|
*
|
|
680
|
-
*
|
|
681
|
-
*
|
|
682
|
-
* the
|
|
772
|
+
* `headers` declares custom `101` response headers, encoded like
|
|
773
|
+
* `WithHeaders` headers. The handler passes them to `upgrade`, so they can
|
|
774
|
+
* depend on the decoded request. `Connection`, `Upgrade`, `Content-Length`
|
|
775
|
+
* and `Transfer-Encoding` cannot be set.
|
|
683
776
|
*
|
|
684
|
-
* The endpoint
|
|
777
|
+
* The endpoint may declare a buffered payload, which is decoded before the
|
|
778
|
+
* handler runs. Streaming payloads are rejected.
|
|
685
779
|
*
|
|
686
|
-
*
|
|
780
|
+
* The endpoint may also declare buffered or no-content successes at statuses
|
|
781
|
+
* other than `101`, for a server that declines the upgrade (RFC 9110 §7.8).
|
|
782
|
+
* The handler then either calls `upgrade` and returns nothing, or returns one
|
|
783
|
+
* of those successes without calling it. An endpoint declares at most one
|
|
784
|
+
* upgrade, and streaming successes cannot be combined with it.
|
|
785
|
+
*
|
|
786
|
+
* The client sends `Connection: Upgrade` and `Upgrade: protocol`, and returns
|
|
787
|
+
* the response headers with the connection, decoded with `headers` when
|
|
788
|
+
* declared. Ordinary success responses are decoded as usual, and
|
|
789
|
+
* `HttpApiClient.isUpgraded` tells the two apart. Other responses are decoded
|
|
790
|
+
* as the endpoint's errors.
|
|
791
|
+
*
|
|
792
|
+
* **Example** (Declaring an exec start endpoint)
|
|
687
793
|
*
|
|
688
794
|
* ```ts
|
|
689
795
|
* import { Schema } from "effect"
|
|
690
796
|
* import { HttpApiEndpoint, HttpApiSchema } from "effect/http-api"
|
|
691
797
|
*
|
|
692
|
-
* const
|
|
798
|
+
* const start = HttpApiEndpoint.post("start", "/exec/:id/start", {
|
|
693
799
|
* params: { id: Schema.String },
|
|
694
|
-
*
|
|
800
|
+
* payload: Schema.Struct({ Detach: Schema.Boolean, Tty: Schema.Boolean }),
|
|
801
|
+
* success: [
|
|
802
|
+
* HttpApiSchema.Upgrade({
|
|
803
|
+
* protocol: "tcp",
|
|
804
|
+
* headers: {
|
|
805
|
+
* "content-type": Schema.Literals([
|
|
806
|
+
* "application/vnd.docker.raw-stream",
|
|
807
|
+
* "application/vnd.docker.multiplexed-stream"
|
|
808
|
+
* ])
|
|
809
|
+
* }
|
|
810
|
+
* }),
|
|
811
|
+
* // a detached exec answers with an empty 200 instead
|
|
812
|
+
* HttpApiSchema.Empty(200)
|
|
813
|
+
* ]
|
|
695
814
|
* })
|
|
696
815
|
* ```
|
|
697
816
|
*
|
|
@@ -699,23 +818,72 @@ const upgradeSchema = Schema.declare(Socket.isSocket).pipe(status(101))
|
|
|
699
818
|
* @category constructors
|
|
700
819
|
* @since 4.0.6
|
|
701
820
|
*/
|
|
702
|
-
export
|
|
821
|
+
export function Upgrade(options: { readonly protocol: string }): Upgrade<never>
|
|
822
|
+
/**
|
|
823
|
+
* @stability unstable
|
|
824
|
+
*/
|
|
825
|
+
export function Upgrade<H extends Schema.Struct.Fields>(options: {
|
|
826
|
+
readonly protocol: string
|
|
827
|
+
readonly headers: H
|
|
828
|
+
}): Upgrade<Schema.Struct<H>>
|
|
829
|
+
/**
|
|
830
|
+
* @stability unstable
|
|
831
|
+
*/
|
|
832
|
+
export function Upgrade<H extends Schema.Top>(options: {
|
|
833
|
+
readonly protocol: string
|
|
834
|
+
readonly headers: H
|
|
835
|
+
}): Upgrade<H>
|
|
836
|
+
/**
|
|
837
|
+
* @stability unstable
|
|
838
|
+
*/
|
|
839
|
+
export function Upgrade(options: {
|
|
703
840
|
readonly protocol: string
|
|
704
|
-
|
|
841
|
+
readonly headers?: Schema.Top | Schema.Struct.Fields | undefined
|
|
842
|
+
}): Upgrade {
|
|
705
843
|
if (options.protocol.toLowerCase() === "websocket") {
|
|
706
844
|
throw new Error("Upgrade does not support WebSocket")
|
|
707
845
|
}
|
|
708
|
-
|
|
846
|
+
const headers = options.headers === undefined || Schema.isSchema(options.headers)
|
|
847
|
+
? options.headers
|
|
848
|
+
: Schema.Struct(options.headers)
|
|
849
|
+
return rebuildUpgrade(options.protocol, headers)
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
/**
|
|
853
|
+
* @internal
|
|
854
|
+
*/
|
|
855
|
+
export const rebuildUpgrade = (protocol: string, headers: Schema.Top | undefined): Upgrade =>
|
|
856
|
+
Schema.make<Upgrade>(upgradeSchema.ast, {
|
|
709
857
|
[UpgradeTypeId]: UpgradeTypeId,
|
|
710
|
-
protocol
|
|
858
|
+
protocol,
|
|
859
|
+
headers
|
|
711
860
|
})
|
|
712
|
-
}
|
|
713
861
|
|
|
714
862
|
/**
|
|
715
863
|
* @internal
|
|
716
864
|
*/
|
|
717
865
|
export const isUpgrade = (u: unknown): u is Upgrade => Schema.isSchema(u) && Predicate.hasProperty(u, UpgradeTypeId)
|
|
718
866
|
|
|
867
|
+
function streamContentTypes(
|
|
868
|
+
contentType: string | ReadonlyArray<string> | undefined,
|
|
869
|
+
mode: StreamMode
|
|
870
|
+
): { readonly contentType: string; readonly contentTypes: Arr.NonEmptyReadonlyArray<string> } {
|
|
871
|
+
if (contentType === undefined) contentType = defaultStreamContentType(mode)
|
|
872
|
+
if (typeof contentType === "string") return { contentType, contentTypes: [contentType] }
|
|
873
|
+
if (!Arr.isReadonlyArrayNonEmpty(contentType)) {
|
|
874
|
+
throw new Error("Stream schemas require at least one content type")
|
|
875
|
+
}
|
|
876
|
+
const seen = new Set<string>()
|
|
877
|
+
for (const entry of contentType) {
|
|
878
|
+
const normalized = MediaType.normalize(entry)
|
|
879
|
+
if (seen.has(normalized)) {
|
|
880
|
+
throw new Error(`Duplicate stream content type: ${entry}`)
|
|
881
|
+
}
|
|
882
|
+
seen.add(normalized)
|
|
883
|
+
}
|
|
884
|
+
return { contentType: contentType[0], contentTypes: contentType }
|
|
885
|
+
}
|
|
886
|
+
|
|
719
887
|
function defaultStreamContentType(mode: StreamMode): string {
|
|
720
888
|
switch (mode) {
|
|
721
889
|
case "sse":
|
|
@@ -779,8 +947,8 @@ export type WithHeadersValueTypeId = typeof WithHeadersValueTypeId
|
|
|
779
947
|
* `StreamSse` and `StreamUint8Array`; error responses remain non-streaming.
|
|
780
948
|
* Nesting `WithHeaders` is rejected at construction.
|
|
781
949
|
* - `headers` is any schema; endpoint construction applies
|
|
782
|
-
*
|
|
783
|
-
*
|
|
950
|
+
* a StringTree codec unless codecs are disabled. Optional headers that encode
|
|
951
|
+
* to `undefined` are omitted from the response.
|
|
784
952
|
* - Status and response-encoding annotations are resolved from the wrapper
|
|
785
953
|
* first, falling through to the inner schema.
|
|
786
954
|
* - A header-carrying response cannot share its status and content type with
|
|
@@ -1224,6 +1392,12 @@ export function asJson(options?: {
|
|
|
1224
1392
|
*
|
|
1225
1393
|
* The schema's encoded side must be a record of strings.
|
|
1226
1394
|
*
|
|
1395
|
+
* **Gotchas**
|
|
1396
|
+
*
|
|
1397
|
+
* Fields are flat on the server. A field that encodes to a nested object is
|
|
1398
|
+
* sent as bracket keys that the server does not read back; use an explicit
|
|
1399
|
+
* codec such as `Schema.fromJsonString(...)` for structured values.
|
|
1400
|
+
*
|
|
1227
1401
|
* @stability unstable
|
|
1228
1402
|
* @category encoding
|
|
1229
1403
|
* @since 4.0.0
|
|
@@ -1299,18 +1473,28 @@ const resolveHttpApiEncoding = SchemaAST.resolveAt<Encoding>("~httpApiEncoding")
|
|
|
1299
1473
|
*/
|
|
1300
1474
|
export const getWithHeadersAnnotation = SchemaAST.resolveAt<WithHeadersAnnotation>("~httpApiWithHeaders")
|
|
1301
1475
|
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1476
|
+
function findHttpApiStatusAnnotation(
|
|
1477
|
+
ast: SchemaAST.AST | SchemaAST.FilterGroup<any>
|
|
1478
|
+
): Schema.Annotations.Annotations | undefined {
|
|
1479
|
+
if (ast.checks) {
|
|
1480
|
+
for (let i = ast.checks.length - 1; i >= 0; i--) {
|
|
1481
|
+
const check = ast.checks[i]
|
|
1482
|
+
if (check.annotations && "httpApiStatus" in check.annotations) return check.annotations
|
|
1483
|
+
if (check._tag === "FilterGroup") {
|
|
1484
|
+
const annotations = findHttpApiStatusAnnotation(check)
|
|
1485
|
+
if (annotations !== undefined) return annotations
|
|
1486
|
+
}
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1489
|
+
const annotations = ast.annotations
|
|
1490
|
+
return annotations && "httpApiStatus" in annotations ? annotations : undefined
|
|
1307
1491
|
}
|
|
1308
1492
|
|
|
1309
|
-
// An `httpApiStatus` annotation, even `undefined`, overrides the key context set by
|
|
1310
|
-
// `status`, which a later check drops, matching annotations
|
|
1311
1493
|
function resolveHttpApiStatus(ast: SchemaAST.AST): number | undefined {
|
|
1312
|
-
|
|
1313
|
-
|
|
1494
|
+
const annotations = findHttpApiStatusAnnotation(ast)
|
|
1495
|
+
// An explicit undefined clears the status instead of falling back to key context.
|
|
1496
|
+
if (annotations !== undefined) return annotations.httpApiStatus as number | undefined
|
|
1497
|
+
return ast.context?.annotations?.httpApiStatus
|
|
1314
1498
|
}
|
|
1315
1499
|
|
|
1316
1500
|
const defaultJsonEncoding: Encoding = {
|
|
@@ -25,7 +25,7 @@ import * as Layer from "../Layer.ts"
|
|
|
25
25
|
import type { Path } from "../Path.ts"
|
|
26
26
|
import * as Scope from "../Scope.ts"
|
|
27
27
|
import type * as HttpApi from "./HttpApi.ts"
|
|
28
|
-
import type { HandlerRuntime } from "./HttpApiBuilder.ts"
|
|
28
|
+
import type { GroupService, HandlerRuntime } from "./HttpApiBuilder.ts"
|
|
29
29
|
import * as HttpApiBuilder from "./HttpApiBuilder.ts"
|
|
30
30
|
import * as HttpApiClient from "./HttpApiClient.ts"
|
|
31
31
|
import type * as HttpApiEndpoint from "./HttpApiEndpoint.ts"
|
|
@@ -98,7 +98,8 @@ export const groups = Effect.fnUntraced(function*<
|
|
|
98
98
|
handlers.set(endpointIdentifier, handler)
|
|
99
99
|
routes.push(HttpApiBuilder.handlerToRoute(api, group as any, handler, context))
|
|
100
100
|
}
|
|
101
|
-
|
|
101
|
+
const service: GroupService = { handlers, routes }
|
|
102
|
+
context = Context.add(context, group as any, service)
|
|
102
103
|
}
|
|
103
104
|
|
|
104
105
|
const layer: Layer.Layer<
|